From 38b8cdaac83766a18011d8e5eeaa88ff5a976869 Mon Sep 17 00:00:00 2001 From: mohamed-elmaghfiri Date: Wed, 5 Mar 2025 23:03:11 +0000 Subject: [PATCH 01/41] Initial commit --- README.md | 93 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..0d2c87c --- /dev/null +++ b/README.md @@ -0,0 +1,93 @@ +# onlinestore + + + +## Getting started + +To make it easy for you to get started with GitLab, here's a list of recommended next steps. + +Already a pro? Just edit this README.md and make it your own. Want to make it easy? [Use the template at the bottom](#editing-this-readme)! + +## Add your files + +- [ ] [Create](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#create-a-file) or [upload](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#upload-a-file) files +- [ ] [Add files using the command line](https://docs.gitlab.com/ee/gitlab-basics/add-file.html#add-a-file-using-the-command-line) or push an existing Git repository with the following command: + +``` +cd existing_repo +git remote add origin https://gitlab.com/team_online/onlinestore.git +git branch -M main +git push -uf origin main +``` + +## Integrate with your tools + +- [ ] [Set up project integrations](https://gitlab.com/team_online/onlinestore/-/settings/integrations) + +## Collaborate with your team + +- [ ] [Invite team members and collaborators](https://docs.gitlab.com/ee/user/project/members/) +- [ ] [Create a new merge request](https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html) +- [ ] [Automatically close issues from merge requests](https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#closing-issues-automatically) +- [ ] [Enable merge request approvals](https://docs.gitlab.com/ee/user/project/merge_requests/approvals/) +- [ ] [Set auto-merge](https://docs.gitlab.com/ee/user/project/merge_requests/merge_when_pipeline_succeeds.html) + +## Test and Deploy + +Use the built-in continuous integration in GitLab. + +- [ ] [Get started with GitLab CI/CD](https://docs.gitlab.com/ee/ci/quick_start/) +- [ ] [Analyze your code for known vulnerabilities with Static Application Security Testing (SAST)](https://docs.gitlab.com/ee/user/application_security/sast/) +- [ ] [Deploy to Kubernetes, Amazon EC2, or Amazon ECS using Auto Deploy](https://docs.gitlab.com/ee/topics/autodevops/requirements.html) +- [ ] [Use pull-based deployments for improved Kubernetes management](https://docs.gitlab.com/ee/user/clusters/agent/) +- [ ] [Set up protected environments](https://docs.gitlab.com/ee/ci/environments/protected_environments.html) + +*** + +# Editing this README + +When you're ready to make this README your own, just edit this file and use the handy template below (or feel free to structure it however you want - this is just a starting point!). Thanks to [makeareadme.com](https://www.makeareadme.com/) for this template. + +## Suggestions for a good README + +Every project is different, so consider which of these sections apply to yours. The sections used in the template are suggestions for most open source projects. Also keep in mind that while a README can be too long and detailed, too long is better than too short. If you think your README is too long, consider utilizing another form of documentation rather than cutting out information. + +## Name +Choose a self-explaining name for your project. + +## Description +Let people know what your project can do specifically. Provide context and add a link to any reference visitors might be unfamiliar with. A list of Features or a Background subsection can also be added here. If there are alternatives to your project, this is a good place to list differentiating factors. + +## Badges +On some READMEs, you may see small images that convey metadata, such as whether or not all the tests are passing for the project. You can use Shields to add some to your README. Many services also have instructions for adding a badge. + +## Visuals +Depending on what you are making, it can be a good idea to include screenshots or even a video (you'll frequently see GIFs rather than actual videos). Tools like ttygif can help, but check out Asciinema for a more sophisticated method. + +## Installation +Within a particular ecosystem, there may be a common way of installing things, such as using Yarn, NuGet, or Homebrew. However, consider the possibility that whoever is reading your README is a novice and would like more guidance. Listing specific steps helps remove ambiguity and gets people to using your project as quickly as possible. If it only runs in a specific context like a particular programming language version or operating system or has dependencies that have to be installed manually, also add a Requirements subsection. + +## Usage +Use examples liberally, and show the expected output if you can. It's helpful to have inline the smallest example of usage that you can demonstrate, while providing links to more sophisticated examples if they are too long to reasonably include in the README. + +## Support +Tell people where they can go to for help. It can be any combination of an issue tracker, a chat room, an email address, etc. + +## Roadmap +If you have ideas for releases in the future, it is a good idea to list them in the README. + +## Contributing +State if you are open to contributions and what your requirements are for accepting them. + +For people who want to make changes to your project, it's helpful to have some documentation on how to get started. Perhaps there is a script that they should run or some environment variables that they need to set. Make these steps explicit. These instructions could also be useful to your future self. + +You can also document commands to lint the code or run tests. These steps help to ensure high code quality and reduce the likelihood that the changes inadvertently break something. Having instructions for running tests is especially helpful if it requires external setup, such as starting a Selenium server for testing in a browser. + +## Authors and acknowledgment +Show your appreciation to those who have contributed to the project. + +## License +For open source projects, say how it is licensed. + +## Project status +If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers. From b69519b5392591044e982b494f0ae55d29e49606 Mon Sep 17 00:00:00 2001 From: mohamed-elmaghfiri Date: Fri, 7 Mar 2025 15:11:06 +0000 Subject: [PATCH 02/41] Set up project --- .editorconfig | 18 + .env.example | 52 + .gitattributes | 10 + .gitignore | 15 + .styleci.yml | 13 + README.md | 115 +- app/Console/Kernel.php | 32 + app/Exceptions/Handler.php | 41 + .../Controllers/Admin/AdminHomeController.php | 16 + .../Admin/AdminProductController.php | 79 + .../Auth/ConfirmPasswordController.php | 40 + .../Auth/ForgotPasswordController.php | 22 + app/Http/Controllers/Auth/LoginController.php | 40 + .../Controllers/Auth/RegisterController.php | 74 + .../Auth/ResetPasswordController.php | 30 + .../Auth/VerificationController.php | 42 + app/Http/Controllers/CartController.php | 87 + app/Http/Controllers/Controller.php | 13 + app/Http/Controllers/HomeController.php | 25 + app/Http/Controllers/MyAccountController.php | 19 + app/Http/Controllers/ProductController.php | 29 + app/Http/Kernel.php | 68 + app/Http/Middleware/AdminAuthMiddleware.php | 26 + app/Http/Middleware/Authenticate.php | 21 + app/Http/Middleware/EncryptCookies.php | 17 + .../PreventRequestsDuringMaintenance.php | 17 + .../Middleware/RedirectIfAuthenticated.php | 32 + app/Http/Middleware/TrimStrings.php | 19 + app/Http/Middleware/TrustHosts.php | 20 + app/Http/Middleware/TrustProxies.php | 28 + app/Http/Middleware/VerifyCsrfToken.php | 17 + app/Models/Item.php | 133 + app/Models/Order.php | 109 + app/Models/Product.php | 126 + app/Models/User.php | 156 + app/Providers/AppServiceProvider.php | 28 + app/Providers/AuthServiceProvider.php | 30 + app/Providers/BroadcastServiceProvider.php | 21 + app/Providers/EventServiceProvider.php | 32 + app/Providers/RouteServiceProvider.php | 63 + artisan | 53 + bootstrap/app.php | 55 + bootstrap/cache/.gitignore | 2 + composer.json | 64 + composer.lock | 7921 +++++++++++++++++ config/app.php | 197 + config/auth.php | 111 + config/broadcasting.php | 67 + config/cache.php | 110 + config/cors.php | 34 + config/database.php | 147 + config/filesystems.php | 73 + config/hashing.php | 52 + config/logging.php | 119 + config/mail.php | 117 + config/queue.php | 93 + config/sanctum.php | 65 + config/services.php | 33 + config/session.php | 201 + config/view.php | 36 + database/.gitignore | 1 + database/factories/UserFactory.php | 42 + .../2014_10_12_000000_create_users_table.php | 36 + ...12_100000_create_password_resets_table.php | 32 + ..._08_19_000000_create_failed_jobs_table.php | 36 + ...01_create_personal_access_tokens_table.php | 36 + ...022_02_11_153916_create_products_table.php | 35 + .../2022_02_12_140820_alter_users_table.php | 34 + .../2022_02_12_152713_create_orders_table.php | 34 + .../2022_02_12_152850_create_items_table.php | 37 + database/seeders/DatabaseSeeder.php | 19 + lang/en.json | 7 + lang/en/auth.php | 20 + lang/en/pagination.php | 19 + lang/en/passwords.php | 22 + lang/en/validation.php | 163 + package.json | 22 + phpcs.xml | 10 + phpunit.xml | 31 + public/.htaccess | 21 + public/css/admin.css | 33 + public/css/app.css | 20 + public/favicon.ico | 0 public/img/game.png | Bin 0 -> 25896 bytes public/img/safe.png | Bin 0 -> 19240 bytes public/img/submarine.png | Bin 0 -> 24330 bytes public/img/undraw_profile.svg | 38 + public/index.php | 55 + public/robots.txt | 2 + resources/css/app.css | 0 resources/js/app.js | 1 + resources/js/bootstrap.js | 32 + resources/sass/_variables.scss | 7 + resources/sass/app.scss | 8 + resources/views/admin/home/index.blade.php | 12 + resources/views/admin/product/edit.blade.php | 61 + resources/views/admin/product/index.blade.php | 98 + resources/views/auth/login.blade.php | 73 + .../views/auth/passwords/confirm.blade.php | 49 + .../views/auth/passwords/email.blade.php | 47 + .../views/auth/passwords/reset.blade.php | 65 + resources/views/auth/register.blade.php | 77 + resources/views/auth/verify.blade.php | 28 + resources/views/cart/index.blade.php | 45 + resources/views/cart/purchase.blade.php | 15 + resources/views/home.blade.php | 23 + resources/views/home/about.blade.php | 15 + resources/views/home/index.blade.php | 15 + resources/views/layouts/admin.blade.php | 60 + resources/views/layouts/app.blade.php | 68 + resources/views/myaccount/orders.blade.php | 44 + resources/views/product/index.blade.php | 18 + resources/views/product/show.blade.php | 36 + resources/views/welcome.blade.php | 7 + routes/api.php | 19 + routes/channels.php | 18 + routes/console.php | 19 + routes/web.php | 39 + storage/app/.gitignore | 3 + storage/app/public/.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 + tests/CreatesApplication.php | 22 + tests/Feature/ExampleTest.php | 21 + tests/TestCase.php | 10 + tests/Unit/ExampleTest.php | 18 + webpack.mix.js | 16 + 132 files changed, 13171 insertions(+), 72 deletions(-) create mode 100644 .editorconfig create mode 100644 .env.example create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 .styleci.yml create mode 100644 app/Console/Kernel.php create mode 100644 app/Exceptions/Handler.php create mode 100644 app/Http/Controllers/Admin/AdminHomeController.php create mode 100644 app/Http/Controllers/Admin/AdminProductController.php create mode 100644 app/Http/Controllers/Auth/ConfirmPasswordController.php create mode 100644 app/Http/Controllers/Auth/ForgotPasswordController.php create mode 100644 app/Http/Controllers/Auth/LoginController.php create mode 100644 app/Http/Controllers/Auth/RegisterController.php create mode 100644 app/Http/Controllers/Auth/ResetPasswordController.php create mode 100644 app/Http/Controllers/Auth/VerificationController.php create mode 100644 app/Http/Controllers/CartController.php create mode 100644 app/Http/Controllers/Controller.php create mode 100644 app/Http/Controllers/HomeController.php create mode 100644 app/Http/Controllers/MyAccountController.php create mode 100644 app/Http/Controllers/ProductController.php create mode 100644 app/Http/Kernel.php create mode 100644 app/Http/Middleware/AdminAuthMiddleware.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/VerifyCsrfToken.php create mode 100644 app/Models/Item.php create mode 100644 app/Models/Order.php create mode 100644 app/Models/Product.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 artisan create mode 100644 bootstrap/app.php create mode 100644 bootstrap/cache/.gitignore create mode 100644 composer.json create mode 100644 composer.lock create mode 100644 config/app.php create mode 100644 config/auth.php create mode 100644 config/broadcasting.php create mode 100644 config/cache.php create mode 100644 config/cors.php create mode 100644 config/database.php create mode 100644 config/filesystems.php create mode 100644 config/hashing.php create mode 100644 config/logging.php create mode 100644 config/mail.php create mode 100644 config/queue.php create mode 100644 config/sanctum.php create mode 100644 config/services.php create mode 100644 config/session.php create mode 100644 config/view.php create mode 100644 database/.gitignore create mode 100644 database/factories/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_resets_table.php create mode 100644 database/migrations/2019_08_19_000000_create_failed_jobs_table.php create mode 100644 database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php create mode 100644 database/migrations/2022_02_11_153916_create_products_table.php create mode 100644 database/migrations/2022_02_12_140820_alter_users_table.php create mode 100644 database/migrations/2022_02_12_152713_create_orders_table.php create mode 100644 database/migrations/2022_02_12_152850_create_items_table.php create mode 100644 database/seeders/DatabaseSeeder.php create mode 100644 lang/en.json create mode 100644 lang/en/auth.php create mode 100644 lang/en/pagination.php create mode 100644 lang/en/passwords.php create mode 100644 lang/en/validation.php create mode 100644 package.json create mode 100644 phpcs.xml create mode 100644 phpunit.xml create mode 100644 public/.htaccess create mode 100644 public/css/admin.css create mode 100644 public/css/app.css create mode 100644 public/favicon.ico create mode 100644 public/img/game.png create mode 100644 public/img/safe.png create mode 100644 public/img/submarine.png create mode 100644 public/img/undraw_profile.svg create mode 100644 public/index.php create mode 100644 public/robots.txt create mode 100644 resources/css/app.css create mode 100644 resources/js/app.js create mode 100644 resources/js/bootstrap.js create mode 100644 resources/sass/_variables.scss create mode 100644 resources/sass/app.scss create mode 100644 resources/views/admin/home/index.blade.php create mode 100644 resources/views/admin/product/edit.blade.php create mode 100644 resources/views/admin/product/index.blade.php create mode 100644 resources/views/auth/login.blade.php create mode 100644 resources/views/auth/passwords/confirm.blade.php create mode 100644 resources/views/auth/passwords/email.blade.php create mode 100644 resources/views/auth/passwords/reset.blade.php create mode 100644 resources/views/auth/register.blade.php create mode 100644 resources/views/auth/verify.blade.php create mode 100644 resources/views/cart/index.blade.php create mode 100644 resources/views/cart/purchase.blade.php create mode 100644 resources/views/home.blade.php create mode 100644 resources/views/home/about.blade.php create mode 100644 resources/views/home/index.blade.php create mode 100644 resources/views/layouts/admin.blade.php create mode 100644 resources/views/layouts/app.blade.php create mode 100644 resources/views/myaccount/orders.blade.php create mode 100644 resources/views/product/index.blade.php create mode 100644 resources/views/product/show.blade.php create mode 100644 resources/views/welcome.blade.php create mode 100644 routes/api.php create mode 100644 routes/channels.php create mode 100644 routes/console.php create mode 100644 routes/web.php create mode 100644 storage/app/.gitignore create mode 100644 storage/app/public/.gitignore create mode 100644 storage/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 tests/CreatesApplication.php create mode 100644 tests/Feature/ExampleTest.php create mode 100644 tests/TestCase.php create mode 100644 tests/Unit/ExampleTest.php create mode 100644 webpack.mix.js diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..1671c9b --- /dev/null +++ b/.editorconfig @@ -0,0 +1,18 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +insert_final_newline = true +indent_style = space +indent_size = 4 +trim_trailing_whitespace = true + +[*.md] +trim_trailing_whitespace = false + +[*.{yml,yaml}] +indent_size = 2 + +[docker-compose.yml] +indent_size = 4 diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..8510237 --- /dev/null +++ b/.env.example @@ -0,0 +1,52 @@ +APP_NAME=Laravel +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=laravel +DB_USERNAME=root +DB_PASSWORD= + +BROADCAST_DRIVER=log +CACHE_DRIVER=file +FILESYSTEM_DISK=local +QUEUE_CONNECTION=sync +SESSION_DRIVER=file +SESSION_LIFETIME=120 + +MEMCACHED_HOST=127.0.0.1 + +REDIS_HOST=127.0.0.1 +REDIS_PASSWORD=null +REDIS_PORT=6379 + +MAIL_MAILER=smtp +MAIL_HOST=mailhog +MAIL_PORT=1025 +MAIL_USERNAME=null +MAIL_PASSWORD=null +MAIL_ENCRYPTION=null +MAIL_FROM_ADDRESS=null +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_APP_CLUSTER=mt1 + +MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" +MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..510d996 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,10 @@ +* text=auto + +*.blade.php diff=html +*.css diff=css +*.html diff=html +*.md diff=markdown +*.php diff=php + +/.github export-ignore +CHANGELOG.md export-ignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..eb003b0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,15 @@ +/node_modules +/public/hot +/public/storage +/storage/*.key +/vendor +.env +.env.backup +.phpunit.result.cache +docker-compose.override.yml +Homestead.json +Homestead.yaml +npm-debug.log +yarn-error.log +/.idea +/.vscode diff --git a/.styleci.yml b/.styleci.yml new file mode 100644 index 0000000..679a631 --- /dev/null +++ b/.styleci.yml @@ -0,0 +1,13 @@ +php: + preset: laravel + version: 8 + disabled: + - no_unused_imports + finder: + not-name: + - index.php +js: + finder: + not-name: + - webpack.mix.js +css: true diff --git a/README.md b/README.md index 0d2c87c..f171eca 100644 --- a/README.md +++ b/README.md @@ -1,93 +1,64 @@ -# onlinestore +

+

+Build Status +Total Downloads +Latest Stable Version +License +

+## About Laravel -## Getting started +Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as: -To make it easy for you to get started with GitLab, here's a list of recommended next steps. +- [Simple, fast routing engine](https://laravel.com/docs/routing). +- [Powerful dependency injection container](https://laravel.com/docs/container). +- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage. +- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent). +- Database agnostic [schema migrations](https://laravel.com/docs/migrations). +- [Robust background job processing](https://laravel.com/docs/queues). +- [Real-time event broadcasting](https://laravel.com/docs/broadcasting). -Already a pro? Just edit this README.md and make it your own. Want to make it easy? [Use the template at the bottom](#editing-this-readme)! +Laravel is accessible, powerful, and provides tools required for large, robust applications. -## Add your files +## Learning Laravel -- [ ] [Create](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#create-a-file) or [upload](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#upload-a-file) files -- [ ] [Add files using the command line](https://docs.gitlab.com/ee/gitlab-basics/add-file.html#add-a-file-using-the-command-line) or push an existing Git repository with the following command: +Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework. -``` -cd existing_repo -git remote add origin https://gitlab.com/team_online/onlinestore.git -git branch -M main -git push -uf origin main -``` +If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 2000 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library. -## Integrate with your tools +## Laravel Sponsors -- [ ] [Set up project integrations](https://gitlab.com/team_online/onlinestore/-/settings/integrations) +We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell). -## Collaborate with your team +### Premium Partners -- [ ] [Invite team members and collaborators](https://docs.gitlab.com/ee/user/project/members/) -- [ ] [Create a new merge request](https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html) -- [ ] [Automatically close issues from merge requests](https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#closing-issues-automatically) -- [ ] [Enable merge request approvals](https://docs.gitlab.com/ee/user/project/merge_requests/approvals/) -- [ ] [Set auto-merge](https://docs.gitlab.com/ee/user/project/merge_requests/merge_when_pipeline_succeeds.html) +- **[Vehikl](https://vehikl.com/)** +- **[Tighten Co.](https://tighten.co)** +- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** +- **[64 Robots](https://64robots.com)** +- **[Cubet Techno Labs](https://cubettech.com)** +- **[Cyber-Duck](https://cyber-duck.co.uk)** +- **[Many](https://www.many.co.uk)** +- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)** +- **[DevSquad](https://devsquad.com)** +- **[Curotec](https://www.curotec.com/services/technologies/laravel/)** +- **[OP.GG](https://op.gg)** +- **[WebReinvent](https://webreinvent.com/?utm_source=laravel&utm_medium=github&utm_campaign=patreon-sponsors)** +- **[Lendio](https://lendio.com)** -## Test and Deploy - -Use the built-in continuous integration in GitLab. - -- [ ] [Get started with GitLab CI/CD](https://docs.gitlab.com/ee/ci/quick_start/) -- [ ] [Analyze your code for known vulnerabilities with Static Application Security Testing (SAST)](https://docs.gitlab.com/ee/user/application_security/sast/) -- [ ] [Deploy to Kubernetes, Amazon EC2, or Amazon ECS using Auto Deploy](https://docs.gitlab.com/ee/topics/autodevops/requirements.html) -- [ ] [Use pull-based deployments for improved Kubernetes management](https://docs.gitlab.com/ee/user/clusters/agent/) -- [ ] [Set up protected environments](https://docs.gitlab.com/ee/ci/environments/protected_environments.html) - -*** - -# Editing this README - -When you're ready to make this README your own, just edit this file and use the handy template below (or feel free to structure it however you want - this is just a starting point!). Thanks to [makeareadme.com](https://www.makeareadme.com/) for this template. - -## Suggestions for a good README - -Every project is different, so consider which of these sections apply to yours. The sections used in the template are suggestions for most open source projects. Also keep in mind that while a README can be too long and detailed, too long is better than too short. If you think your README is too long, consider utilizing another form of documentation rather than cutting out information. - -## Name -Choose a self-explaining name for your project. - -## Description -Let people know what your project can do specifically. Provide context and add a link to any reference visitors might be unfamiliar with. A list of Features or a Background subsection can also be added here. If there are alternatives to your project, this is a good place to list differentiating factors. - -## Badges -On some READMEs, you may see small images that convey metadata, such as whether or not all the tests are passing for the project. You can use Shields to add some to your README. Many services also have instructions for adding a badge. - -## Visuals -Depending on what you are making, it can be a good idea to include screenshots or even a video (you'll frequently see GIFs rather than actual videos). Tools like ttygif can help, but check out Asciinema for a more sophisticated method. - -## Installation -Within a particular ecosystem, there may be a common way of installing things, such as using Yarn, NuGet, or Homebrew. However, consider the possibility that whoever is reading your README is a novice and would like more guidance. Listing specific steps helps remove ambiguity and gets people to using your project as quickly as possible. If it only runs in a specific context like a particular programming language version or operating system or has dependencies that have to be installed manually, also add a Requirements subsection. - -## Usage -Use examples liberally, and show the expected output if you can. It's helpful to have inline the smallest example of usage that you can demonstrate, while providing links to more sophisticated examples if they are too long to reasonably include in the README. - -## Support -Tell people where they can go to for help. It can be any combination of an issue tracker, a chat room, an email address, etc. +## Contributing -## Roadmap -If you have ideas for releases in the future, it is a good idea to list them in the README. +Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions). -## Contributing -State if you are open to contributions and what your requirements are for accepting them. +## Code of Conduct -For people who want to make changes to your project, it's helpful to have some documentation on how to get started. Perhaps there is a script that they should run or some environment variables that they need to set. Make these steps explicit. These instructions could also be useful to your future self. +In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). -You can also document commands to lint the code or run tests. These steps help to ensure high code quality and reduce the likelihood that the changes inadvertently break something. Having instructions for running tests is especially helpful if it requires external setup, such as starting a Selenium server for testing in a browser. +## Security Vulnerabilities -## Authors and acknowledgment -Show your appreciation to those who have contributed to the project. +If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed. ## License -For open source projects, say how it is licensed. -## Project status -If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers. +The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php new file mode 100644 index 0000000..d8bc1d2 --- /dev/null +++ b/app/Console/Kernel.php @@ -0,0 +1,32 @@ +command('inspire')->hourly(); + } + + /** + * Register the commands for the application. + * + * @return void + */ + protected function commands() + { + $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..8e7fbd1 --- /dev/null +++ b/app/Exceptions/Handler.php @@ -0,0 +1,41 @@ +> + */ + protected $dontReport = [ + // + ]; + + /** + * A list of the inputs that are never flashed for validation exceptions. + * + * @var array + */ + protected $dontFlash = [ + 'current_password', + 'password', + 'password_confirmation', + ]; + + /** + * Register the exception handling callbacks for the application. + * + * @return void + */ + public function register() + { + $this->reportable(function (Throwable $e) { + // + }); + } +} diff --git a/app/Http/Controllers/Admin/AdminHomeController.php b/app/Http/Controllers/Admin/AdminHomeController.php new file mode 100644 index 0000000..cd78cb3 --- /dev/null +++ b/app/Http/Controllers/Admin/AdminHomeController.php @@ -0,0 +1,16 @@ +with("viewData", $viewData); + } +} diff --git a/app/Http/Controllers/Admin/AdminProductController.php b/app/Http/Controllers/Admin/AdminProductController.php new file mode 100644 index 0000000..d1c6c52 --- /dev/null +++ b/app/Http/Controllers/Admin/AdminProductController.php @@ -0,0 +1,79 @@ +with("viewData", $viewData); + } + + public function store(Request $request) + { + Product::validate($request); + + $newProduct = new Product(); + $newProduct->setName($request->input('name')); + $newProduct->setDescription($request->input('description')); + $newProduct->setPrice($request->input('price')); + $newProduct->setImage("game.png"); + $newProduct->save(); + + if ($request->hasFile('image')) { + $imageName = $newProduct->getId().".".$request->file('image')->extension(); + Storage::disk('public')->put( + $imageName, + file_get_contents($request->file('image')->getRealPath()) + ); + $newProduct->setImage($imageName); + $newProduct->save(); + } + + return back(); + } + + public function delete($id) + { + Product::destroy($id); + return back(); + } + + public function edit($id) + { + $viewData = []; + $viewData["title"] = "Admin Page - Edit Product - Online Store"; + $viewData["product"] = Product::findOrFail($id); + return view('admin.product.edit')->with("viewData", $viewData); + } + + public function update(Request $request, $id) + { + Product::validate($request); + + $product = Product::findOrFail($id); + $product->setName($request->input('name')); + $product->setDescription($request->input('description')); + $product->setPrice($request->input('price')); + + if ($request->hasFile('image')) { + $imageName = $product->getId().".".$request->file('image')->extension(); + Storage::disk('public')->put( + $imageName, + file_get_contents($request->file('image')->getRealPath()) + ); + $product->setImage($imageName); + } + + $product->save(); + return redirect()->route('admin.product.index'); + } +} diff --git a/app/Http/Controllers/Auth/ConfirmPasswordController.php b/app/Http/Controllers/Auth/ConfirmPasswordController.php new file mode 100644 index 0000000..138c1f0 --- /dev/null +++ b/app/Http/Controllers/Auth/ConfirmPasswordController.php @@ -0,0 +1,40 @@ +middleware('auth'); + } +} diff --git a/app/Http/Controllers/Auth/ForgotPasswordController.php b/app/Http/Controllers/Auth/ForgotPasswordController.php new file mode 100644 index 0000000..465c39c --- /dev/null +++ b/app/Http/Controllers/Auth/ForgotPasswordController.php @@ -0,0 +1,22 @@ +middleware('guest')->except('logout'); + } +} diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php new file mode 100644 index 0000000..87e3a82 --- /dev/null +++ b/app/Http/Controllers/Auth/RegisterController.php @@ -0,0 +1,74 @@ +middleware('guest'); + } + + /** + * Get a validator for an incoming registration request. + * + * @param array $data + * @return \Illuminate\Contracts\Validation\Validator + */ + protected function validator(array $data) + { + return Validator::make($data, [ + 'name' => ['required', 'string', 'max:255'], + 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], + 'password' => ['required', 'string', 'min:8', 'confirmed'], + ]); + } + + /** + * Create a new user instance after a valid registration. + * + * @param array $data + * @return \App\Models\User + */ + protected function create(array $data) + { + return User::create([ + 'name' => $data['name'], + 'email' => $data['email'], + 'password' => Hash::make($data['password']), + 'balance' => 5000, + ]); + } +} diff --git a/app/Http/Controllers/Auth/ResetPasswordController.php b/app/Http/Controllers/Auth/ResetPasswordController.php new file mode 100644 index 0000000..b1726a3 --- /dev/null +++ b/app/Http/Controllers/Auth/ResetPasswordController.php @@ -0,0 +1,30 @@ +middleware('auth'); + $this->middleware('signed')->only('verify'); + $this->middleware('throttle:6,1')->only('verify', 'resend'); + } +} diff --git a/app/Http/Controllers/CartController.php b/app/Http/Controllers/CartController.php new file mode 100644 index 0000000..9dcfaba --- /dev/null +++ b/app/Http/Controllers/CartController.php @@ -0,0 +1,87 @@ +session()->get("products"); + if ($productsInSession) { + $productsInCart = Product::findMany(array_keys($productsInSession)); + $total = Product::sumPricesByQuantities($productsInCart, $productsInSession); + } + + $viewData = []; + $viewData["title"] = "Cart - Online Store"; + $viewData["subtitle"] = "Shopping Cart"; + $viewData["total"] = $total; + $viewData["products"] = $productsInCart; + return view('cart.index')->with("viewData", $viewData); + } + + public function add(Request $request, $id) + { + $products = $request->session()->get("products"); + $products[$id] = $request->input('quantity'); + $request->session()->put('products', $products); + + return redirect()->route('cart.index'); + } + + public function delete(Request $request) + { + $request->session()->forget('products'); + return back(); + } + + public function purchase(Request $request) + { + $productsInSession = $request->session()->get("products"); + if ($productsInSession) { + $userId = Auth::user()->getId(); + $order = new Order(); + $order->setUserId($userId); + $order->setTotal(0); + $order->save(); + + $total = 0; + $productsInCart = Product::findMany(array_keys($productsInSession)); + foreach ($productsInCart as $product) { + $quantity = $productsInSession[$product->getId()]; + $item = new Item(); + $item->setQuantity($quantity); + $item->setPrice($product->getPrice()); + $item->setProductId($product->getId()); + $item->setOrderId($order->getId()); + $item->save(); + $total = $total + ($product->getPrice()*$quantity); + } + $order->setTotal($total); + $order->save(); + + $newBalance = Auth::user()->getBalance() - $total; + Auth::user()->setBalance($newBalance); + Auth::user()->save(); + + $request->session()->forget('products'); + + $viewData = []; + $viewData["title"] = "Purchase - Online Store"; + $viewData["subtitle"] = "Purchase Status"; + $viewData["order"] = $order; + return view('cart.purchase')->with("viewData", $viewData); + } else { + return redirect()->route('cart.index'); + } + } +} diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php new file mode 100644 index 0000000..a0a2a8a --- /dev/null +++ b/app/Http/Controllers/Controller.php @@ -0,0 +1,13 @@ +with("viewData", $viewData); + } + + public function about() + { + $viewData = []; + $viewData["title"] = "About us - Online Store"; + $viewData["subtitle"] = "About us"; + $viewData["description"] = "This is an about page ..."; + $viewData["author"] = "Developed by: Your Name"; + return view('home.about')->with("viewData", $viewData); + } +} diff --git a/app/Http/Controllers/MyAccountController.php b/app/Http/Controllers/MyAccountController.php new file mode 100644 index 0000000..11e9e50 --- /dev/null +++ b/app/Http/Controllers/MyAccountController.php @@ -0,0 +1,19 @@ +where('user_id', Auth::user()->getId())->get(); + return view('myaccount.orders')->with("viewData", $viewData); + } +} diff --git a/app/Http/Controllers/ProductController.php b/app/Http/Controllers/ProductController.php new file mode 100644 index 0000000..d27a3a3 --- /dev/null +++ b/app/Http/Controllers/ProductController.php @@ -0,0 +1,29 @@ +with("viewData", $viewData); + } + + public function show($id) + { + $viewData = []; + $product = Product::findOrFail($id); + $viewData["title"] = $product->getName()." - Online Store"; + $viewData["subtitle"] = $product->getName()." - Product information"; + $viewData["product"] = $product; + return view('product.show')->with("viewData", $viewData); + } +} diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php new file mode 100644 index 0000000..c10d1c5 --- /dev/null +++ b/app/Http/Kernel.php @@ -0,0 +1,68 @@ + + */ + protected $middleware = [ + // \App\Http\Middleware\TrustHosts::class, + \App\Http\Middleware\TrustProxies::class, + \Fruitcake\Cors\HandleCors::class, + \App\Http\Middleware\PreventRequestsDuringMaintenance::class, + \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, + \App\Http\Middleware\TrimStrings::class, + \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, + ]; + + /** + * The application's route middleware groups. + * + * @var array> + */ + protected $middlewareGroups = [ + 'web' => [ + \App\Http\Middleware\EncryptCookies::class, + \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, + \Illuminate\Session\Middleware\StartSession::class, + // \Illuminate\Session\Middleware\AuthenticateSession::class, + \Illuminate\View\Middleware\ShareErrorsFromSession::class, + \App\Http\Middleware\VerifyCsrfToken::class, + \Illuminate\Routing\Middleware\SubstituteBindings::class, + ], + + 'api' => [ + // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, + 'throttle:api', + \Illuminate\Routing\Middleware\SubstituteBindings::class, + ], + ]; + + /** + * The application's route middleware. + * + * These middleware may be assigned to groups or used individually. + * + * @var array + */ + protected $routeMiddleware = [ + 'auth' => \App\Http\Middleware\Authenticate::class, + 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::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, + 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, + 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, + 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, + 'admin' => \App\Http\Middleware\AdminAuthMiddleware::class, + ]; +} diff --git a/app/Http/Middleware/AdminAuthMiddleware.php b/app/Http/Middleware/AdminAuthMiddleware.php new file mode 100644 index 0000000..6e5306b --- /dev/null +++ b/app/Http/Middleware/AdminAuthMiddleware.php @@ -0,0 +1,26 @@ +getRole() == 'admin') { + return $next($request); + } else { + return redirect()->route('home.index'); + } + } +} diff --git a/app/Http/Middleware/Authenticate.php b/app/Http/Middleware/Authenticate.php new file mode 100644 index 0000000..704089a --- /dev/null +++ b/app/Http/Middleware/Authenticate.php @@ -0,0 +1,21 @@ +expectsJson()) { + return 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..a2813a0 --- /dev/null +++ b/app/Http/Middleware/RedirectIfAuthenticated.php @@ -0,0 +1,32 @@ +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..7186414 --- /dev/null +++ b/app/Http/Middleware/TrustHosts.php @@ -0,0 +1,20 @@ + + */ + public function hosts() + { + 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/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/Item.php b/app/Models/Item.php new file mode 100644 index 0000000..8d19619 --- /dev/null +++ b/app/Models/Item.php @@ -0,0 +1,133 @@ +attributes['id'] - int - contains the item primary key (id) + * $this->attributes['quantity'] - int - contains the item quantity + * $this->attributes['price'] - int - contains the item price + * $this->attributes['order_id'] - int - contains the referenced order id + * $this->attributes['product_id'] - int - contains the referenced product id + * $this->attributes['created_at'] - timestamp - contains the item creation date + * $this->attributes['updated_at'] - timestamp - contains the item update date + * $this->order - Order - contains the associated Order + * $this->product - Product - contains the associated Product + */ + + public static function validate($request) + { + $request->validate([ + "price" => "required|numeric|gt:0", + "quantity" => "required|numeric|gt:0", + "product_id" => "required|exists:products,id", + "order_id" => "required|exists:orders,id", + ]); + } + + public function getId() + { + return $this->attributes['id']; + } + + public function setId($id) + { + $this->attributes['id'] = $id; + } + + public function getQuantity() + { + return $this->attributes['quantity']; + } + + public function setQuantity($quantity) + { + $this->attributes['quantity'] = $quantity; + } + + public function getPrice() + { + return $this->attributes['price']; + } + + public function setPrice($price) + { + $this->attributes['price'] = $price; + } + + public function getOrderId() + { + return $this->attributes['order_id']; + } + + public function setOrderId($orderId) + { + $this->attributes['order_id'] = $orderId; + } + + public function getProductId() + { + return $this->attributes['product_id']; + } + + public function setProductId($productId) + { + $this->attributes['product_id'] = $productId; + } + + public function getCreatedAt() + { + return $this->attributes['created_at']; + } + + public function setCreatedAt($createdAt) + { + $this->attributes['created_at'] = $createdAt; + } + + public function getUpdatedAt() + { + return $this->attributes['updated_at']; + } + + public function setUpdatedAt($updatedAt) + { + $this->attributes['updated_at'] = $updatedAt; + } + + public function order() + { + return $this->belongsTo(Order::class); + } + + public function getOrder() + { + return $this->order; + } + + public function setOrder($order) + { + $this->order = $order; + } + + public function product() + { + return $this->belongsTo(Product::class); + } + + public function getProduct() + { + return $this->product; + } + + public function setProduct($product) + { + $this->product = $product; + } +} diff --git a/app/Models/Order.php b/app/Models/Order.php new file mode 100644 index 0000000..28ce6ad --- /dev/null +++ b/app/Models/Order.php @@ -0,0 +1,109 @@ +attributes['id'] - int - contains the order primary key (id) + * $this->attributes['total'] - string - contains the order name + * $this->attributes['user_id'] - int - contains the referenced user id + * $this->attributes['created_at'] - timestamp - contains the order creation date + * $this->attributes['updated_at'] - timestamp - contains the order update date + * $this->user - User - contains the associated User + * $this->items - Item[] - contains the associated items + */ + + public static function validate($request) + { + $request->validate([ + "total" => "required|numeric", + "user_id" => "required|exists:users,id", + ]); + } + + public function getId() + { + return $this->attributes['id']; + } + + public function setId($id) + { + $this->attributes['id'] = $id; + } + + public function getTotal() + { + return $this->attributes['total']; + } + + public function setTotal($total) + { + $this->attributes['total'] = $total; + } + + public function getUserId() + { + return $this->attributes['user_id']; + } + + public function setUserId($userId) + { + $this->attributes['user_id'] = $userId; + } + + public function getCreatedAt() + { + return $this->attributes['created_at']; + } + + public function setCreatedAt($createdAt) + { + $this->attributes['created_at'] = $createdAt; + } + + public function getUpdatedAt() + { + return $this->attributes['updated_at']; + } + + public function setUpdatedAt($updatedAt) + { + $this->attributes['updated_at'] = $updatedAt; + } + + public function user() + { + return $this->belongsTo(User::class); + } + + public function getUser() + { + return $this->user; + } + + public function setUser($user) + { + $this->user = $user; + } + + public function items() + { + return $this->hasMany(Item::class); + } + + public function getItems() + { + return $this->items; + } + + public function setItems($items) + { + $this->items = $items; + } +} diff --git a/app/Models/Product.php b/app/Models/Product.php new file mode 100644 index 0000000..fb8585a --- /dev/null +++ b/app/Models/Product.php @@ -0,0 +1,126 @@ +attributes['id'] - int - contains the product primary key (id) + * $this->attributes['name'] - string - contains the product name + * $this->attributes['description'] - string - contains the product description + * $this->attributes['image'] - string - contains the product image + * $this->attributes['price'] - int - contains the product price + * $this->attributes['created_at'] - timestamp - contains the product creation date + * $this->attributes['updated_at'] - timestamp - contains the product update date + * $this->items - Item[] - contains the associated items + */ + + public static function validate($request) + { + $request->validate([ + "name" => "required|max:255", + "description" => "required", + "price" => "required|numeric|gt:0", + 'image' => 'image', + ]); + } + + public static function sumPricesByQuantities($products, $productsInSession) + { + $total = 0; + foreach ($products as $product) { + $total = $total + ($product->getPrice()*$productsInSession[$product->getId()]); + } + + return $total; + } + + public function getId() + { + return $this->attributes['id']; + } + + public function setId($id) + { + $this->attributes['id'] = $id; + } + + public function getName() + { + return $this->attributes['name']; + } + + public function setName($name) + { + $this->attributes['name'] = $name; + } + + public function getDescription() + { + return $this->attributes['description']; + } + + public function setDescription($description) + { + $this->attributes['description'] = $description; + } + + public function getImage() + { + return $this->attributes['image']; + } + + public function setImage($image) + { + $this->attributes['image'] = $image; + } + + public function getPrice() + { + return $this->attributes['price']; + } + + public function setPrice($price) + { + $this->attributes['price'] = $price; + } + + public function getCreatedAt() + { + return $this->attributes['created_at']; + } + + public function setCreatedAt($createdAt) + { + $this->attributes['created_at'] = $createdAt; + } + + public function getUpdatedAt() + { + return $this->attributes['updated_at']; + } + + public function setUpdatedAt($updatedAt) + { + $this->attributes['updated_at'] = $updatedAt; + } + + public function items() + { + return $this->hasMany(Item::class); + } + + public function getItems() + { + return $this->items; + } + + public function setItems($items) + { + $this->items = $items; + } +} diff --git a/app/Models/User.php b/app/Models/User.php new file mode 100644 index 0000000..89aa45f --- /dev/null +++ b/app/Models/User.php @@ -0,0 +1,156 @@ +attributes['id'] - int - contains the user primary key (id) + * $this->attributes['name'] - string - contains the user name + * $this->attributes['email'] - string - contains the user email + * $this->attributes['email_verified_at'] - timestamp - contains the user email verification date + * $this->attributes['password'] - string - contains the user password + * $this->attributes['remember_token'] - string - contains the user password + * $this->attributes['role'] - string - contains the user role (client or admin) + * $this->attributes['balance'] - int - contains the user balance + * $this->attributes['created_at'] - timestamp - contains the user creation date + * $this->attributes['updated_at'] - timestamp - contains the user update date + * $this->orders - Order[] - contains the associated orders + */ + + /** + * The attributes that are mass assignable. + * + * @var array + */ + protected $fillable = [ + 'name', + 'email', + 'password', + 'balance', + ]; + + /** + * 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', + ]; + + public function getId() + { + return $this->attributes['id']; + } + + public function setId($id) + { + $this->attributes['id'] = $id; + } + + public function getName() + { + return $this->attributes['name']; + } + + public function setName($name) + { + $this->attributes['name'] = $name; + } + + public function getEmail() + { + return $this->attributes['email']; + } + + public function setEmail($email) + { + $this->attributes['email'] = $email; + } + + public function getPassword() + { + return $this->attributes['password']; + } + + public function setPassword($password) + { + $this->attributes['password'] = $password; + } + + public function getRole() + { + return $this->attributes['role']; + } + + public function setRole($role) + { + $this->attributes['role'] = $role; + } + + public function getBalance() + { + return $this->attributes['balance']; + } + + public function setBalance($balance) + { + $this->attributes['balance'] = $balance; + } + + public function getCreatedAt() + { + return $this->attributes['created_at']; + } + + public function setCreatedAt($createdAt) + { + $this->attributes['created_at'] = $createdAt; + } + + public function getUpdatedAt() + { + return $this->attributes['updated_at']; + } + + public function setUpdatedAt($updatedAt) + { + $this->attributes['updated_at'] = $updatedAt; + } + + public function orders() + { + return $this->hasMany(Order::class); + } + + public function getOrders() + { + return $this->orders; + } + + public function setOrders($orders) + { + $this->orders = $orders; + } +} diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php new file mode 100644 index 0000000..ee8ca5b --- /dev/null +++ b/app/Providers/AppServiceProvider.php @@ -0,0 +1,28 @@ + + */ + protected $policies = [ + // 'App\Models\Model' => 'App\Policies\ModelPolicy', + ]; + + /** + * Register any authentication / authorization services. + * + * @return void + */ + public function boot() + { + $this->registerPolicies(); + + // + } +} diff --git a/app/Providers/BroadcastServiceProvider.php b/app/Providers/BroadcastServiceProvider.php new file mode 100644 index 0000000..395c518 --- /dev/null +++ b/app/Providers/BroadcastServiceProvider.php @@ -0,0 +1,21 @@ +> + */ + protected $listen = [ + Registered::class => [ + SendEmailVerificationNotification::class, + ], + ]; + + /** + * Register any events for your application. + * + * @return void + */ + public function boot() + { + // + } +} diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php new file mode 100644 index 0000000..fb766eb --- /dev/null +++ b/app/Providers/RouteServiceProvider.php @@ -0,0 +1,63 @@ +configureRateLimiting(); + + $this->routes(function () { + Route::prefix('api') + ->middleware('api') + ->namespace($this->namespace) + ->group(base_path('routes/api.php')); + + Route::middleware('web') + ->namespace($this->namespace) + ->group(base_path('routes/web.php')); + }); + } + + /** + * Configure the rate limiters for the application. + * + * @return void + */ + protected function configureRateLimiting() + { + RateLimiter::for('api', function (Request $request) { + return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); + }); + } +} diff --git a/artisan b/artisan new file mode 100644 index 0000000..67a3329 --- /dev/null +++ b/artisan @@ -0,0 +1,53 @@ +#!/usr/bin/env php +make(Illuminate\Contracts\Console\Kernel::class); + +$status = $kernel->handle( + $input = new Symfony\Component\Console\Input\ArgvInput, + new Symfony\Component\Console\Output\ConsoleOutput +); + +/* +|-------------------------------------------------------------------------- +| Shutdown The Application +|-------------------------------------------------------------------------- +| +| Once Artisan has finished running, we will fire off the shutdown events +| so that any final work may be done by the application before we shut +| down the process. This is the last thing to happen to the request. +| +*/ + +$kernel->terminate($input, $status); + +exit($status); diff --git a/bootstrap/app.php b/bootstrap/app.php new file mode 100644 index 0000000..037e17d --- /dev/null +++ b/bootstrap/app.php @@ -0,0 +1,55 @@ +singleton( + Illuminate\Contracts\Http\Kernel::class, + App\Http\Kernel::class +); + +$app->singleton( + Illuminate\Contracts\Console\Kernel::class, + App\Console\Kernel::class +); + +$app->singleton( + Illuminate\Contracts\Debug\ExceptionHandler::class, + App\Exceptions\Handler::class +); + +/* +|-------------------------------------------------------------------------- +| Return The Application +|-------------------------------------------------------------------------- +| +| This script returns the application instance. The instance is given to +| the calling script so we can separate the building of the instances +| from the actual running of the application and sending responses. +| +*/ + +return $app; diff --git a/bootstrap/cache/.gitignore b/bootstrap/cache/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/bootstrap/cache/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..a9459b5 --- /dev/null +++ b/composer.json @@ -0,0 +1,64 @@ +{ + "name": "laravel/laravel", + "type": "project", + "description": "The Laravel Framework.", + "keywords": ["framework", "laravel"], + "license": "MIT", + "require": { + "php": "^8.0", + "fruitcake/laravel-cors": "^2.0.5", + "guzzlehttp/guzzle": "^7.2", + "laravel/framework": "^9.0", + "laravel/sanctum": "^2.14", + "laravel/tinker": "^2.7", + "laravel/ui": "^3.4" + }, + "require-dev": { + "fakerphp/faker": "^1.9.1", + "laravel/sail": "^1.0.1", + "mockery/mockery": "^1.4.4", + "nunomaduro/collision": "^6.1", + "phpunit/phpunit": "^9.5.10", + "spatie/laravel-ignition": "^1.0", + "squizlabs/php_codesniffer": "^3.6" + }, + "autoload": { + "psr-4": { + "App\\": "app/", + "Database\\Factories\\": "database/factories/", + "Database\\Seeders\\": "database/seeders/" + } + }, + "autoload-dev": { + "psr-4": { + "Tests\\": "tests/" + } + }, + "scripts": { + "post-autoload-dump": [ + "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", + "@php artisan package:discover --ansi" + ], + "post-update-cmd": [ + "@php artisan vendor:publish --tag=laravel-assets --ansi --force" + ], + "post-root-package-install": [ + "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" + ], + "post-create-project-cmd": [ + "@php artisan key:generate --ansi" + ] + }, + "extra": { + "laravel": { + "dont-discover": [] + } + }, + "config": { + "optimize-autoloader": true, + "preferred-install": "dist", + "sort-packages": true + }, + "minimum-stability": "dev", + "prefer-stable": true +} diff --git a/composer.lock b/composer.lock new file mode 100644 index 0000000..78c86f1 --- /dev/null +++ b/composer.lock @@ -0,0 +1,7921 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "d299b51f0f07ec600b4949240f4664af", + "packages": [ + { + "name": "asm89/stack-cors", + "version": "v2.1.1", + "source": { + "type": "git", + "url": "https://github.com/asm89/stack-cors.git", + "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", + "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", + "shasum": "" + }, + "require": { + "php": "^7.2|^8.0", + "symfony/http-foundation": "^4|^5|^6", + "symfony/http-kernel": "^4|^5|^6" + }, + "require-dev": { + "phpunit/phpunit": "^7|^9", + "squizlabs/php_codesniffer": "^3.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" + } + }, + "autoload": { + "psr-4": { + "Asm89\\Stack\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Alexander", + "email": "iam.asm89@gmail.com" + } + ], + "description": "Cross-origin resource sharing library and stack middleware", + "homepage": "https://github.com/asm89/stack-cors", + "keywords": [ + "cors", + "stack" + ], + "support": { + "issues": "https://github.com/asm89/stack-cors/issues", + "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" + }, + "time": "2022-01-18T09:12:03+00:00" + }, + { + "name": "brick/math", + "version": "0.9.3", + "source": { + "type": "git", + "url": "https://github.com/brick/math.git", + "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", + "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", + "shasum": "" + }, + "require": { + "ext-json": "*", + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.2", + "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", + "vimeo/psalm": "4.9.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Brick\\Math\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Arbitrary-precision arithmetic library", + "keywords": [ + "Arbitrary-precision", + "BigInteger", + "BigRational", + "arithmetic", + "bigdecimal", + "bignum", + "brick", + "math" + ], + "support": { + "issues": "https://github.com/brick/math/issues", + "source": "https://github.com/brick/math/tree/0.9.3" + }, + "funding": [ + { + "url": "https://github.com/BenMorel", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/brick/math", + "type": "tidelift" + } + ], + "time": "2021-08-15T20:50:18+00:00" + }, + { + "name": "dflydev/dot-access-data", + "version": "v3.0.1", + "source": { + "type": "git", + "url": "https://github.com/dflydev/dflydev-dot-access-data.git", + "reference": "0992cc19268b259a39e86f296da5f0677841f42c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c", + "reference": "0992cc19268b259a39e86f296da5f0677841f42c", + "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": "^3.14" + }, + "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.1" + }, + "time": "2021-08-13T13:06:58+00:00" + }, + { + "name": "doctrine/inflector", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/doctrine/inflector.git", + "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", + "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^8.2", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpstan/phpstan-strict-rules": "^0.12", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", + "vimeo/psalm": "^4.10" + }, + "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.4" + }, + "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": "2021-10-22T20:16:43+00:00" + }, + { + "name": "doctrine/lexer", + "version": "1.2.2", + "source": { + "type": "git", + "url": "https://github.com/doctrine/lexer.git", + "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", + "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^9.0", + "phpstan/phpstan": "1.3", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "vimeo/psalm": "^4.11" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" + } + }, + "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/1.2.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%2Flexer", + "type": "tidelift" + } + ], + "time": "2022-01-12T08:27:12+00:00" + }, + { + "name": "dragonmantank/cron-expression", + "version": "v3.3.1", + "source": { + "type": "git", + "url": "https://github.com/dragonmantank/cron-expression.git", + "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", + "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", + "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.1" + }, + "funding": [ + { + "url": "https://github.com/dragonmantank", + "type": "github" + } + ], + "time": "2022-01-18T15:43:28+00:00" + }, + { + "name": "egulias/email-validator", + "version": "3.1.2", + "source": { + "type": "git", + "url": "https://github.com/egulias/EmailValidator.git", + "reference": "ee0db30118f661fb166bcffbf5d82032df484697" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ee0db30118f661fb166bcffbf5d82032df484697", + "reference": "ee0db30118f661fb166bcffbf5d82032df484697", + "shasum": "" + }, + "require": { + "doctrine/lexer": "^1.2", + "php": ">=7.2", + "symfony/polyfill-intl-idn": "^1.15" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.2", + "phpunit/phpunit": "^8.5.8|^9.3.3", + "vimeo/psalm": "^4" + }, + "suggest": { + "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.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/3.1.2" + }, + "funding": [ + { + "url": "https://github.com/egulias", + "type": "github" + } + ], + "time": "2021-10-11T09:18:27+00:00" + }, + { + "name": "fruitcake/laravel-cors", + "version": "v2.0.5", + "source": { + "type": "git", + "url": "https://github.com/fruitcake/laravel-cors.git", + "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/3a066e5cac32e2d1cdaacd6b961692778f37b5fc", + "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc", + "shasum": "" + }, + "require": { + "asm89/stack-cors": "^2.0.1", + "illuminate/contracts": "^6|^7|^8|^9", + "illuminate/support": "^6|^7|^8|^9", + "php": ">=7.2", + "symfony/http-foundation": "^4|^5|^6", + "symfony/http-kernel": "^4.3.4|^5|^6" + }, + "require-dev": { + "laravel/framework": "^6|^7.24|^8", + "orchestra/testbench-dusk": "^4|^5|^6|^7", + "phpunit/phpunit": "^6|^7|^8|^9", + "squizlabs/php_codesniffer": "^3.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + }, + "laravel": { + "providers": [ + "Fruitcake\\Cors\\CorsServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Fruitcake\\Cors\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fruitcake", + "homepage": "https://fruitcake.nl" + }, + { + "name": "Barry vd. Heuvel", + "email": "barryvdh@gmail.com" + } + ], + "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", + "keywords": [ + "api", + "cors", + "crossdomain", + "laravel" + ], + "support": { + "issues": "https://github.com/fruitcake/laravel-cors/issues", + "source": "https://github.com/fruitcake/laravel-cors/tree/v2.0.5" + }, + "funding": [ + { + "url": "https://fruitcake.nl", + "type": "custom" + }, + { + "url": "https://github.com/barryvdh", + "type": "github" + } + ], + "time": "2022-01-03T14:53:04+00:00" + }, + { + "name": "graham-campbell/result-type", + "version": "v1.0.4", + "source": { + "type": "git", + "url": "https://github.com/GrahamCampbell/Result-Type.git", + "reference": "0690bde05318336c7221785f2a932467f98b64ca" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/0690bde05318336c7221785f2a932467f98b64ca", + "reference": "0690bde05318336c7221785f2a932467f98b64ca", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0", + "phpoption/phpoption": "^1.8" + }, + "require-dev": { + "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" + }, + "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.0.4" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", + "type": "tidelift" + } + ], + "time": "2021-11-21T21:41:47+00:00" + }, + { + "name": "guzzlehttp/guzzle", + "version": "7.4.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ee0a041b1760e6a53d2a39c8c34115adc2af2c79", + "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79", + "shasum": "" + }, + "require": { + "ext-json": "*", + "guzzlehttp/promises": "^1.5", + "guzzlehttp/psr7": "^1.8.3 || ^2.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.4.1", + "ext-curl": "*", + "php-http/client-integration-tests": "^3.0", + "phpunit/phpunit": "^8.5.5 || ^9.3.5", + "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": { + "branch-alias": { + "dev-master": "7.4-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "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.4.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": "2021-12-06T18:43:05+00:00" + }, + { + "name": "guzzlehttp/promises", + "version": "1.5.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", + "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", + "shasum": "" + }, + "require": { + "php": ">=5.5" + }, + "require-dev": { + "symfony/phpunit-bridge": "^4.4 || ^5.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.5-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "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/1.5.1" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", + "type": "tidelift" + } + ], + "time": "2021-10-22T20:56:57+00:00" + }, + { + "name": "guzzlehttp/psr7", + "version": "2.1.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/089edd38f5b8abba6cb01567c2a8aaa47cec4c72", + "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.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.4.1", + "http-interop/http-factory-tests": "^0.9", + "phpunit/phpunit": "^8.5.8 || ^9.3.10" + }, + "suggest": { + "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" + } + }, + "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.1.0" + }, + "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": "2021-10-06T17:43:30+00:00" + }, + { + "name": "laravel/framework", + "version": "v9.0.1", + "source": { + "type": "git", + "url": "https://github.com/laravel/framework.git", + "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/framework/zipball/afeb58d019b203ecb1a1c4063a66a029ea6bea63", + "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63", + "shasum": "" + }, + "require": { + "doctrine/inflector": "^2.0", + "dragonmantank/cron-expression": "^3.1", + "egulias/email-validator": "^3.1", + "ext-mbstring": "*", + "ext-openssl": "*", + "laravel/serializable-closure": "^1.0", + "league/commonmark": "^2.2", + "league/flysystem": "^3.0", + "monolog/monolog": "^2.0", + "nesbot/carbon": "^2.53.1", + "php": "^8.0.2", + "psr/container": "^1.1.1|^2.0.1", + "psr/log": "^1.0|^2.0|^3.0", + "psr/simple-cache": "^1.0|^2.0|^3.0", + "ramsey/uuid": "^4.2.2", + "symfony/console": "^6.0", + "symfony/error-handler": "^6.0", + "symfony/finder": "^6.0", + "symfony/http-foundation": "^6.0", + "symfony/http-kernel": "^6.0", + "symfony/mailer": "^6.0", + "symfony/mime": "^6.0", + "symfony/process": "^6.0", + "symfony/routing": "^6.0", + "symfony/var-dumper": "^6.0", + "tijsverkoyen/css-to-inline-styles": "^2.2.2", + "vlucas/phpdotenv": "^5.4.1", + "voku/portable-ascii": "^2.0" + }, + "conflict": { + "tightenco/collect": "<5.5.33" + }, + "provide": { + "psr/container-implementation": "1.1|2.0", + "psr/simple-cache-implementation": "1.0|2.0|3.0" + }, + "replace": { + "illuminate/auth": "self.version", + "illuminate/broadcasting": "self.version", + "illuminate/bus": "self.version", + "illuminate/cache": "self.version", + "illuminate/collections": "self.version", + "illuminate/conditionable": "self.version", + "illuminate/config": "self.version", + "illuminate/console": "self.version", + "illuminate/container": "self.version", + "illuminate/contracts": "self.version", + "illuminate/cookie": "self.version", + "illuminate/database": "self.version", + "illuminate/encryption": "self.version", + "illuminate/events": "self.version", + "illuminate/filesystem": "self.version", + "illuminate/hashing": "self.version", + "illuminate/http": "self.version", + "illuminate/log": "self.version", + "illuminate/macroable": "self.version", + "illuminate/mail": "self.version", + "illuminate/notifications": "self.version", + "illuminate/pagination": "self.version", + "illuminate/pipeline": "self.version", + "illuminate/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": { + "aws/aws-sdk-php": "^3.198.1", + "doctrine/dbal": "^2.13.3|^3.1.4", + "fakerphp/faker": "^1.9.2", + "guzzlehttp/guzzle": "^7.2", + "league/flysystem-aws-s3-v3": "^3.0", + "league/flysystem-ftp": "^3.0", + "league/flysystem-sftp-v3": "^3.0", + "mockery/mockery": "^1.4.4", + "orchestra/testbench-core": "^7.0", + "pda/pheanstalk": "^4.0", + "phpstan/phpstan": "^1.0", + "phpunit/phpunit": "^9.5.8", + "predis/predis": "^1.1.9", + "symfony/amazon-mailer": "^6.0", + "symfony/cache": "^6.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.198.1).", + "brianium/paratest": "Required to run tests in parallel (^6.0).", + "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", + "ext-bcmath": "Required to use the multiple_of validation rule.", + "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.", + "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.2).", + "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-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", + "mockery/mockery": "Required to use mocking (^1.4.4).", + "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).", + "predis/predis": "Required to use the predis connector (^1.1.9).", + "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.0).", + "symfony/filesystem": "Required to enable support for relative symbolic links (^6.0).", + "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.0).", + "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.0).", + "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.0).", + "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.x-dev" + } + }, + "autoload": { + "files": [ + "src/Illuminate/Collections/helpers.php", + "src/Illuminate/Events/functions.php", + "src/Illuminate/Foundation/helpers.php", + "src/Illuminate/Support/helpers.php" + ], + "psr-4": { + "Illuminate\\": "src/Illuminate/", + "Illuminate\\Support\\": [ + "src/Illuminate/Macroable/", + "src/Illuminate/Collections/", + "src/Illuminate/Conditionable/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "The Laravel Framework.", + "homepage": "https://laravel.com", + "keywords": [ + "framework", + "laravel" + ], + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2022-02-09T15:00:05+00:00" + }, + { + "name": "laravel/sanctum", + "version": "v2.14.0", + "source": { + "type": "git", + "url": "https://github.com/laravel/sanctum.git", + "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/sanctum/zipball/0647a87140c7522e75826cffcadb3ad6e01f71e9", + "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9", + "shasum": "" + }, + "require": { + "ext-json": "*", + "illuminate/contracts": "^6.9|^7.0|^8.0|^9.0", + "illuminate/database": "^6.9|^7.0|^8.0|^9.0", + "illuminate/support": "^6.9|^7.0|^8.0|^9.0", + "php": "^7.2|^8.0" + }, + "require-dev": { + "mockery/mockery": "^1.0", + "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0", + "phpunit/phpunit": "^8.0|^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.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": "2022-01-12T15:07:43+00:00" + }, + { + "name": "laravel/serializable-closure", + "version": "v1.1.0", + "source": { + "type": "git", + "url": "https://github.com/laravel/serializable-closure.git", + "reference": "65c9faf50d567b65d81764a44526545689e3fe63" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/65c9faf50d567b65d81764a44526545689e3fe63", + "reference": "65c9faf50d567b65d81764a44526545689e3fe63", + "shasum": "" + }, + "require": { + "php": "^7.3|^8.0" + }, + "require-dev": { + "pestphp/pest": "^1.18", + "phpstan/phpstan": "^0.12.98", + "symfony/var-dumper": "^5.3" + }, + "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": "2022-02-01T16:29:39+00:00" + }, + { + "name": "laravel/tinker", + "version": "v2.7.0", + "source": { + "type": "git", + "url": "https://github.com/laravel/tinker.git", + "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/tinker/zipball/5f2f9815b7631b9f586a3de7933c25f9327d4073", + "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073", + "shasum": "" + }, + "require": { + "illuminate/console": "^6.0|^7.0|^8.0|^9.0", + "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0", + "illuminate/support": "^6.0|^7.0|^8.0|^9.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", + "phpunit/phpunit": "^8.5.8|^9.3.3" + }, + "suggest": { + "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.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.7.0" + }, + "time": "2022-01-10T08:52:49+00:00" + }, + { + "name": "laravel/ui", + "version": "v3.4.3", + "source": { + "type": "git", + "url": "https://github.com/laravel/ui.git", + "reference": "64a0f43492c00780b2261c56cd7007a4f370d95b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/ui/zipball/64a0f43492c00780b2261c56cd7007a4f370d95b", + "reference": "64a0f43492c00780b2261c56cd7007a4f370d95b", + "shasum": "" + }, + "require": { + "illuminate/console": "^8.42|^9.0", + "illuminate/filesystem": "^8.42|^9.0", + "illuminate/support": "^8.82|^9.0", + "illuminate/validation": "^8.42|^9.0", + "php": "^7.3|^8.0" + }, + "require-dev": { + "orchestra/testbench": "^6.23|^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + }, + "laravel": { + "providers": [ + "Laravel\\Ui\\UiServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Laravel\\Ui\\": "src/", + "Illuminate\\Foundation\\Auth\\": "auth-backend/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Laravel UI utilities and presets.", + "keywords": [ + "laravel", + "ui" + ], + "support": { + "source": "https://github.com/laravel/ui/tree/v3.4.3" + }, + "time": "2022-02-08T14:19:32+00:00" + }, + { + "name": "league/commonmark", + "version": "2.2.1", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/commonmark.git", + "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", + "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", + "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.15" + }, + "require-dev": { + "cebe/markdown": "^1.0", + "commonmark/cmark": "0.30.0", + "commonmark/commonmark.js": "0.30.0", + "composer/package-versions-deprecated": "^1.8", + "erusev/parsedown": "^1.0", + "ext-json": "*", + "github/gfm": "0.29.0", + "michelf/php-markdown": "^1.4", + "phpstan/phpstan": "^0.12.88 || ^1.0.0", + "phpunit/phpunit": "^9.5.5", + "scrutinizer/ocular": "^1.8.1", + "symfony/finder": "^5.3", + "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", + "unleashedtech/php-coding-standard": "^3.1", + "vimeo/psalm": "^4.7.3" + }, + "suggest": { + "symfony/yaml": "v2.3+ required if using the Front Matter extension" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.3-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": "2022-01-25T14:37:33+00:00" + }, + { + "name": "league/config", + "version": "v1.1.1", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/config.git", + "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/config/zipball/a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", + "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", + "shasum": "" + }, + "require": { + "dflydev/dot-access-data": "^3.0.1", + "nette/schema": "^1.2", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^0.12.90", + "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": "2021-08-14T12:15:32+00:00" + }, + { + "name": "league/flysystem", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem.git", + "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9f8b4260031bfef5497477da53dd57b2aaff0e06", + "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06", + "shasum": "" + }, + "require": { + "ext-json": "*", + "league/mime-type-detection": "^1.0.0", + "php": "^8.0.2" + }, + "conflict": { + "guzzlehttp/guzzle": "<7.0", + "guzzlehttp/ringphp": "<1.1.1", + "symfony/http-client": "<5.2" + }, + "require-dev": { + "async-aws/s3": "^1.5", + "async-aws/simple-s3": "^1.0", + "aws/aws-sdk-php": "^3.198.1", + "composer/semver": "^3.0", + "ext-fileinfo": "*", + "ext-ftp": "*", + "ext-zip": "*", + "friendsofphp/php-cs-fixer": "^3.5", + "google/cloud-storage": "^1.23", + "phpseclib/phpseclib": "^2.0", + "phpstan/phpstan": "^0.12.26", + "phpunit/phpunit": "^9.5.11", + "sabre/dav": "^4.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.0.3" + }, + "funding": [ + { + "url": "https://offset.earth/frankdejonge", + "type": "custom" + }, + { + "url": "https://github.com/frankdejonge", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/flysystem", + "type": "tidelift" + } + ], + "time": "2022-01-31T19:41:04+00:00" + }, + { + "name": "league/mime-type-detection", + "version": "1.9.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/mime-type-detection.git", + "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/aa70e813a6ad3d1558fc927863d47309b4c23e69", + "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.2", + "phpstan/phpstan": "^0.12.68", + "phpunit/phpunit": "^8.5.8 || ^9.3" + }, + "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.9.0" + }, + "funding": [ + { + "url": "https://github.com/frankdejonge", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/flysystem", + "type": "tidelift" + } + ], + "time": "2021-11-21T11:48:40+00:00" + }, + { + "name": "monolog/monolog", + "version": "2.3.5", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "fd4380d6fc37626e2f799f29d91195040137eba9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd4380d6fc37626e2f799f29d91195040137eba9", + "reference": "fd4380d6fc37626e2f799f29d91195040137eba9", + "shasum": "" + }, + "require": { + "php": ">=7.2", + "psr/log": "^1.0.1 || ^2.0 || ^3.0" + }, + "provide": { + "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^2.4.9 || ^3.0", + "doctrine/couchdb": "~1.0@dev", + "elasticsearch/elasticsearch": "^7", + "graylog2/gelf-php": "^1.4.2", + "mongodb/mongodb": "^1.8", + "php-amqplib/php-amqplib": "~2.4 || ^3", + "php-console/php-console": "^3.1.3", + "phpspec/prophecy": "^1.6.1", + "phpstan/phpstan": "^0.12.91", + "phpunit/phpunit": "^8.5", + "predis/predis": "^1.1", + "rollbar/rollbar": "^1.3", + "ruflin/elastica": ">=0.90@dev", + "swiftmailer/swiftmailer": "^5.3|^6.0" + }, + "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", + "php-console/php-console": "Allow sending log messages to Google Chrome", + "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": "2.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/2.3.5" + }, + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", + "type": "tidelift" + } + ], + "time": "2021-10-01T21:08:31+00:00" + }, + { + "name": "nesbot/carbon", + "version": "2.56.0", + "source": { + "type": "git", + "url": "https://github.com/briannesbitt/Carbon.git", + "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/626ec8cbb724cd3c3400c3ed8f730545b744e3f4", + "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4", + "shasum": "" + }, + "require": { + "ext-json": "*", + "php": "^7.1.8 || ^8.0", + "symfony/polyfill-mbstring": "^1.0", + "symfony/polyfill-php80": "^1.16", + "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" + }, + "require-dev": { + "doctrine/dbal": "^2.0 || ^3.0", + "doctrine/orm": "^2.7", + "friendsofphp/php-cs-fixer": "^3.0", + "kylekatarnls/multi-tester": "^2.0", + "phpmd/phpmd": "^2.9", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^0.12.54 || ^1.0", + "phpunit/phpunit": "^7.5.20 || ^8.5.14", + "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://opencollective.com/Carbon", + "type": "open_collective" + }, + { + "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", + "type": "tidelift" + } + ], + "time": "2022-01-21T17:08:38+00:00" + }, + { + "name": "nette/schema", + "version": "v1.2.2", + "source": { + "type": "git", + "url": "https://github.com/nette/schema.git", + "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/schema/zipball/9a39cef03a5b34c7de64f551538cbba05c2be5df", + "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df", + "shasum": "" + }, + "require": { + "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", + "php": ">=7.1 <8.2" + }, + "require-dev": { + "nette/tester": "^2.3 || ^2.4", + "phpstan/phpstan-nette": "^0.12", + "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.2" + }, + "time": "2021-10-15T11:40:02+00:00" + }, + { + "name": "nette/utils", + "version": "v3.2.7", + "source": { + "type": "git", + "url": "https://github.com/nette/utils.git", + "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/utils/zipball/0af4e3de4df9f1543534beab255ccf459e7a2c99", + "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99", + "shasum": "" + }, + "require": { + "php": ">=7.2 <8.2" + }, + "conflict": { + "nette/di": "<3.0.6" + }, + "require-dev": { + "nette/tester": "~2.0", + "phpstan/phpstan": "^1.0", + "tracy/tracy": "^2.3" + }, + "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()", + "ext-xml": "to use Strings::length() etc. when mbstring is not available" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.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 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/v3.2.7" + }, + "time": "2022-01-24T11:29:14+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v4.13.2", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "210577fe3cf7badcc5814d99455df46564f3c077" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", + "reference": "210577fe3cf7badcc5814d99455df46564f3c077", + "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.13.2" + }, + "time": "2021-11-30T19:35:32+00:00" + }, + { + "name": "phpoption/phpoption", + "version": "1.8.1", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/php-option.git", + "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", + "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.4.1", + "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.8-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.8.1" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", + "type": "tidelift" + } + ], + "time": "2021-12-04T23:24:31+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.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-client.git", + "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", + "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0", + "psr/http-message": "^1.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": "http://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/tree/master" + }, + "time": "2020-06-29T06:28:15+00:00" + }, + { + "name": "psr/http-factory", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-factory.git", + "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", + "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", + "shasum": "" + }, + "require": { + "php": ">=7.0.0", + "psr/http-message": "^1.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": "http://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/master" + }, + "time": "2019-04-30T12:38:16+00:00" + }, + { + "name": "psr/http-message", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "shasum": "" + }, + "require": { + "php": ">=5.3.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": "http://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/master" + }, + "time": "2016-08-06T14:39: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.1", + "source": { + "type": "git", + "url": "https://github.com/bobthecow/psysh.git", + "reference": "570292577277f06f590635381a7f761a6cf4f026" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/570292577277f06f590635381a7f761a6cf4f026", + "reference": "570292577277f06f590635381a7f761a6cf4f026", + "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" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.2", + "hoa/console": "3.17.05.02" + }, + "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.", + "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." + }, + "bin": [ + "bin/psysh" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "0.11.x-dev" + } + }, + "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.1" + }, + "time": "2022-01-03T13:58:38+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": "1.2.2", + "source": { + "type": "git", + "url": "https://github.com/ramsey/collection.git", + "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", + "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", + "shasum": "" + }, + "require": { + "php": "^7.3 || ^8", + "symfony/polyfill-php81": "^1.23" + }, + "require-dev": { + "captainhook/captainhook": "^5.3", + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", + "ergebnis/composer-normalize": "^2.6", + "fakerphp/faker": "^1.5", + "hamcrest/hamcrest-php": "^2", + "jangregor/phpstan-prophecy": "^0.8", + "mockery/mockery": "^1.3", + "phpspec/prophecy-phpunit": "^2.0", + "phpstan/extension-installer": "^1", + "phpstan/phpstan": "^0.12.32", + "phpstan/phpstan-mockery": "^0.12.5", + "phpstan/phpstan-phpunit": "^0.12.11", + "phpunit/phpunit": "^8.5 || ^9", + "psy/psysh": "^0.10.4", + "slevomat/coding-standard": "^6.3", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^4.4" + }, + "type": "library", + "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/1.2.2" + }, + "funding": [ + { + "url": "https://github.com/ramsey", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", + "type": "tidelift" + } + ], + "time": "2021-10-10T03:01:02+00:00" + }, + { + "name": "ramsey/uuid", + "version": "4.2.3", + "source": { + "type": "git", + "url": "https://github.com/ramsey/uuid.git", + "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", + "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", + "shasum": "" + }, + "require": { + "brick/math": "^0.8 || ^0.9", + "ext-json": "*", + "php": "^7.2 || ^8.0", + "ramsey/collection": "^1.0", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-php80": "^1.14" + }, + "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", + "moontoast/math": "^1.1", + "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.0", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-mockery": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpunit/phpunit": "^8.5 || ^9", + "slevomat/coding-standard": "^7.0", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^4.9" + }, + "suggest": { + "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", + "ext-ctype": "Enables faster processing of character classification using ctype functions.", + "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": { + "branch-alias": { + "dev-main": "4.x-dev" + }, + "captainhook": { + "force-install": true + } + }, + "autoload": { + "psr-4": { + "Ramsey\\Uuid\\": "src/" + }, + "files": [ + "src/functions.php" + ] + }, + "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.2.3" + }, + "funding": [ + { + "url": "https://github.com/ramsey", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", + "type": "tidelift" + } + ], + "time": "2021-09-25T23:10:38+00:00" + }, + { + "name": "symfony/console", + "version": "v6.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "22e8efd019c3270c4f79376234a3f8752cd25490" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/22e8efd019c3270c4f79376234a3f8752cd25490", + "reference": "22e8efd019c3270c4f79376234a3f8752cd25490", + "shasum": "" + }, + "require": { + "php": ">=8.0.2", + "symfony/polyfill-mbstring": "~1.0", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/string": "^5.4|^6.0" + }, + "conflict": { + "symfony/dependency-injection": "<5.4", + "symfony/dotenv": "<5.4", + "symfony/event-dispatcher": "<5.4", + "symfony/lock": "<5.4", + "symfony/process": "<5.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/event-dispatcher": "^5.4|^6.0", + "symfony/lock": "^5.4|^6.0", + "symfony/process": "^5.4|^6.0", + "symfony/var-dumper": "^5.4|^6.0" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" + }, + "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.0.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-26T17:23:29+00:00" + }, + { + "name": "symfony/css-selector", + "version": "v6.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/css-selector.git", + "reference": "1955d595c12c111629cc814d3f2a2ff13580508a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/1955d595c12c111629cc814d3f2a2ff13580508a", + "reference": "1955d595c12c111629cc814d3f2a2ff13580508a", + "shasum": "" + }, + "require": { + "php": ">=8.0.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/v6.0.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:55:41+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "v3.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", + "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", + "shasum": "" + }, + "require": { + "php": ">=8.0.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.0-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.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": "2021-11-01T23:48:49+00:00" + }, + { + "name": "symfony/error-handler", + "version": "v6.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/error-handler.git", + "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/20343b3bad7ebafa38138ddcb97290a24722b57b", + "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b", + "shasum": "" + }, + "require": { + "php": ">=8.0.2", + "psr/log": "^1|^2|^3", + "symfony/var-dumper": "^5.4|^6.0" + }, + "require-dev": { + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/http-kernel": "^5.4|^6.0", + "symfony/serializer": "^5.4|^6.0" + }, + "bin": [ + "Resources/bin/patch-type-declarations" + ], + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\ErrorHandler\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools to manage errors and ease debugging PHP code", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/error-handler/tree/v6.0.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:55:41+00:00" + }, + { + "name": "symfony/event-dispatcher", + "version": "v6.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6472ea2dd415e925b90ca82be64b8bc6157f3934", + "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934", + "shasum": "" + }, + "require": { + "php": ">=8.0.2", + "symfony/event-dispatcher-contracts": "^2|^3" + }, + "conflict": { + "symfony/dependency-injection": "<5.4" + }, + "provide": { + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "2.0|3.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/error-handler": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/http-foundation": "^5.4|^6.0", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/stopwatch": "^5.4|^6.0" + }, + "suggest": { + "symfony/dependency-injection": "", + "symfony/http-kernel": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:55:41+00:00" + }, + { + "name": "symfony/event-dispatcher-contracts", + "version": "v3.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "aa5422287b75594b90ee9cd807caf8f0df491385" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/aa5422287b75594b90ee9cd807caf8f0df491385", + "reference": "aa5422287b75594b90ee9cd807caf8f0df491385", + "shasum": "" + }, + "require": { + "php": ">=8.0.2", + "psr/event-dispatcher": "^1" + }, + "suggest": { + "symfony/event-dispatcher-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.0-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.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": "2021-07-15T12:33:35+00:00" + }, + { + "name": "symfony/finder", + "version": "v6.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/8661b74dbabc23223f38c9b99d3f8ade71170430", + "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430", + "shasum": "" + }, + "require": { + "php": ">=8.0.2" + }, + "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.0.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-26T17:23:29+00:00" + }, + { + "name": "symfony/http-foundation", + "version": "v6.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-foundation.git", + "reference": "ad157299ced81a637fade1efcadd688d6deba5c1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ad157299ced81a637fade1efcadd688d6deba5c1", + "reference": "ad157299ced81a637fade1efcadd688d6deba5c1", + "shasum": "" + }, + "require": { + "php": ">=8.0.2", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-mbstring": "~1.1" + }, + "require-dev": { + "predis/predis": "~1.0", + "symfony/cache": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/mime": "^5.4|^6.0" + }, + "suggest": { + "symfony/mime": "To use the file extension guesser" + }, + "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.0.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:55:41+00:00" + }, + { + "name": "symfony/http-kernel", + "version": "v6.0.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-kernel.git", + "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", + "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", + "shasum": "" + }, + "require": { + "php": ">=8.0.2", + "psr/log": "^1|^2|^3", + "symfony/error-handler": "^5.4|^6.0", + "symfony/event-dispatcher": "^5.4|^6.0", + "symfony/http-foundation": "^5.4|^6.0", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "symfony/browser-kit": "<5.4", + "symfony/cache": "<5.4", + "symfony/config": "<5.4", + "symfony/console": "<5.4", + "symfony/dependency-injection": "<5.4", + "symfony/doctrine-bridge": "<5.4", + "symfony/form": "<5.4", + "symfony/http-client": "<5.4", + "symfony/mailer": "<5.4", + "symfony/messenger": "<5.4", + "symfony/translation": "<5.4", + "symfony/twig-bridge": "<5.4", + "symfony/validator": "<5.4", + "twig/twig": "<2.13" + }, + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" + }, + "require-dev": { + "psr/cache": "^1.0|^2.0|^3.0", + "symfony/browser-kit": "^5.4|^6.0", + "symfony/config": "^5.4|^6.0", + "symfony/console": "^5.4|^6.0", + "symfony/css-selector": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/dom-crawler": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/finder": "^5.4|^6.0", + "symfony/http-client-contracts": "^1.1|^2|^3", + "symfony/process": "^5.4|^6.0", + "symfony/routing": "^5.4|^6.0", + "symfony/stopwatch": "^5.4|^6.0", + "symfony/translation": "^5.4|^6.0", + "symfony/translation-contracts": "^1.1|^2|^3", + "twig/twig": "^2.13|^3.0.4" + }, + "suggest": { + "symfony/browser-kit": "", + "symfony/config": "", + "symfony/console": "", + "symfony/dependency-injection": "" + }, + "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.0.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-29T18:12:46+00:00" + }, + { + "name": "symfony/mailer", + "version": "v6.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/mailer.git", + "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mailer/zipball/d958befe7dbee9d2b2157ef6dfa9b103efa94f82", + "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82", + "shasum": "" + }, + "require": { + "egulias/email-validator": "^2.1.10|^3", + "php": ">=8.0.2", + "psr/event-dispatcher": "^1", + "psr/log": "^1|^2|^3", + "symfony/event-dispatcher": "^5.4|^6.0", + "symfony/mime": "^5.4|^6.0", + "symfony/service-contracts": "^1.1|^2|^3" + }, + "conflict": { + "symfony/http-kernel": "<5.4" + }, + "require-dev": { + "symfony/http-client-contracts": "^1.1|^2|^3", + "symfony/messenger": "^5.4|^6.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.0.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:55:41+00:00" + }, + { + "name": "symfony/mime", + "version": "v6.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/mime.git", + "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mime/zipball/2cd9601efd040e56f43360daa68f3c6b0534923a", + "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a", + "shasum": "" + }, + "require": { + "php": ">=8.0.2", + "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" + }, + "require-dev": { + "egulias/email-validator": "^2.1.10|^3.1", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/property-access": "^5.4|^6.0", + "symfony/property-info": "^5.4|^6.0", + "symfony/serializer": "^5.4|^6.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.0.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:55:41+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.24.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "30885182c981ab175d4d034db0f6f469898070ab" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", + "reference": "30885182c981ab175d4d034db0f6f469898070ab", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "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.24.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": "2021-10-20T20:35:02+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.24.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", + "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-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.24.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": "2021-11-23T21:10:46+00:00" + }, + { + "name": "symfony/polyfill-intl-idn", + "version": "v1.24.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-idn.git", + "reference": "749045c69efb97c70d25d7463abba812e91f3a44" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", + "reference": "749045c69efb97c70d25d7463abba812e91f3a44", + "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.23-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.24.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": "2021-09-14T14:02:44+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.24.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-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.24.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": "2021-02-19T12:13:01+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.24.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + }, + "files": [ + "bootstrap.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": "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.24.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": "2021-11-30T18:21:41+00:00" + }, + { + "name": "symfony/polyfill-php72", + "version": "v1.24.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php72.git", + "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", + "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-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.24.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": "2021-05-27T09:17:38+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.24.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9", + "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-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.24.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": "2021-09-13T13:58:33+00:00" + }, + { + "name": "symfony/polyfill-php81", + "version": "v1.24.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php81.git", + "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", + "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-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.24.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": "2021-09-13T13:58:11+00:00" + }, + { + "name": "symfony/process", + "version": "v6.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "298ed357274c1868c20a0061df256a1250a6c4af" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/298ed357274c1868c20a0061df256a1250a6c4af", + "reference": "298ed357274c1868c20a0061df256a1250a6c4af", + "shasum": "" + }, + "require": { + "php": ">=8.0.2" + }, + "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.0.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-26T17:23:29+00:00" + }, + { + "name": "symfony/routing", + "version": "v6.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/routing.git", + "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/routing/zipball/b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", + "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", + "shasum": "" + }, + "require": { + "php": ">=8.0.2" + }, + "conflict": { + "doctrine/annotations": "<1.12", + "symfony/config": "<5.4", + "symfony/dependency-injection": "<5.4", + "symfony/yaml": "<5.4" + }, + "require-dev": { + "doctrine/annotations": "^1.12", + "psr/log": "^1|^2|^3", + "symfony/config": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/http-foundation": "^5.4|^6.0", + "symfony/yaml": "^5.4|^6.0" + }, + "suggest": { + "symfony/config": "For using the all-in-one router or any loader", + "symfony/expression-language": "For using expression matching", + "symfony/http-foundation": "For using a Symfony Request object", + "symfony/yaml": "For using the YAML loader" + }, + "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.0.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:55:41+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v3.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/36715ebf9fb9db73db0cb24263c79077c6fe8603", + "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603", + "shasum": "" + }, + "require": { + "php": ">=8.0.2", + "psr/container": "^2.0" + }, + "conflict": { + "ext-psr": "<1.1|>=2" + }, + "suggest": { + "symfony/service-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.0-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + } + }, + "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.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": "2021-11-04T17:53:12+00:00" + }, + { + "name": "symfony/string", + "version": "v6.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/522144f0c4c004c80d56fa47e40e17028e2eefc2", + "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2", + "shasum": "" + }, + "require": { + "php": ">=8.0.2", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/translation-contracts": "<2.0" + }, + "require-dev": { + "symfony/error-handler": "^5.4|^6.0", + "symfony/http-client": "^5.4|^6.0", + "symfony/translation-contracts": "^2.0|^3.0", + "symfony/var-exporter": "^5.4|^6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "files": [ + "Resources/functions.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 an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "support": { + "source": "https://github.com/symfony/string/tree/v6.0.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:55:41+00:00" + }, + { + "name": "symfony/translation", + "version": "v6.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/71bb15335798f8c4da110911bcf2d2fead7a430d", + "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d", + "shasum": "" + }, + "require": { + "php": ">=8.0.2", + "symfony/polyfill-mbstring": "~1.0", + "symfony/translation-contracts": "^2.3|^3.0" + }, + "conflict": { + "symfony/config": "<5.4", + "symfony/console": "<5.4", + "symfony/dependency-injection": "<5.4", + "symfony/http-kernel": "<5.4", + "symfony/twig-bundle": "<5.4", + "symfony/yaml": "<5.4" + }, + "provide": { + "symfony/translation-implementation": "2.3|3.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^5.4|^6.0", + "symfony/console": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/finder": "^5.4|^6.0", + "symfony/http-client-contracts": "^1.1|^2.0|^3.0", + "symfony/http-kernel": "^5.4|^6.0", + "symfony/intl": "^5.4|^6.0", + "symfony/polyfill-intl-icu": "^1.21", + "symfony/service-contracts": "^1.1.2|^2|^3", + "symfony/yaml": "^5.4|^6.0" + }, + "suggest": { + "psr/log-implementation": "To use logging capability in translator", + "symfony/config": "", + "symfony/yaml": "" + }, + "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.0.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-07T00:29:03+00:00" + }, + { + "name": "symfony/translation-contracts", + "version": "v3.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation-contracts.git", + "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", + "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", + "shasum": "" + }, + "require": { + "php": ">=8.0.2" + }, + "suggest": { + "symfony/translation-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.0-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Translation\\": "" + } + }, + "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.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": "2021-09-07T12:43:40+00:00" + }, + { + "name": "symfony/var-dumper", + "version": "v6.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-dumper.git", + "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7b701676fc64f9ef11f9b4870f16b48f66be4834", + "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834", + "shasum": "" + }, + "require": { + "php": ">=8.0.2", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "phpunit/phpunit": "<5.4.3", + "symfony/console": "<5.4" + }, + "require-dev": { + "ext-iconv": "*", + "symfony/console": "^5.4|^6.0", + "symfony/process": "^5.4|^6.0", + "symfony/uid": "^5.4|^6.0", + "twig/twig": "^2.13|^3.0.4" + }, + "suggest": { + "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", + "ext-intl": "To show region name in time zone dump", + "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" + }, + "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.0.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-17T16:30:44+00:00" + }, + { + "name": "tijsverkoyen/css-to-inline-styles", + "version": "2.2.4", + "source": { + "type": "git", + "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", + "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", + "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "php": "^5.5 || ^7.0 || ^8.0", + "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "TijsVerkoyen\\CssToInlineStyles\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Tijs Verkoyen", + "email": "css_to_inline_styles@verkoyen.eu", + "role": "Developer" + } + ], + "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", + "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", + "support": { + "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", + "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" + }, + "time": "2021-12-08T09:12:39+00:00" + }, + { + "name": "vlucas/phpdotenv", + "version": "v5.4.1", + "source": { + "type": "git", + "url": "https://github.com/vlucas/phpdotenv.git", + "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", + "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", + "shasum": "" + }, + "require": { + "ext-pcre": "*", + "graham-campbell/result-type": "^1.0.2", + "php": "^7.1.3 || ^8.0", + "phpoption/phpoption": "^1.8", + "symfony/polyfill-ctype": "^1.23", + "symfony/polyfill-mbstring": "^1.23.1", + "symfony/polyfill-php80": "^1.23.1" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.4.1", + "ext-filter": "*", + "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" + }, + "suggest": { + "ext-filter": "Required to use the boolean validator." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.4-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.4.1" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", + "type": "tidelift" + } + ], + "time": "2021-12-12T23:22:04+00:00" + }, + { + "name": "voku/portable-ascii", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/voku/portable-ascii.git", + "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/voku/portable-ascii/zipball/9bd89e83cecdf8c37b64909454249eaed98b2c89", + "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89", + "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.0" + }, + "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-01-24T18:59:03+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.10.0", + "source": { + "type": "git", + "url": "https://github.com/webmozarts/assert.git", + "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", + "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0", + "symfony/polyfill-ctype": "^1.8" + }, + "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.10.0" + }, + "time": "2021-03-09T10:59:23+00:00" + } + ], + "packages-dev": [ + { + "name": "doctrine/instantiator", + "version": "1.4.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", + "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^8.0", + "ext-pdo": "*", + "ext-phar": "*", + "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "https://ocramius.github.io/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://www.doctrine-project.org/projects/instantiator.html", + "keywords": [ + "constructor", + "instantiate" + ], + "support": { + "issues": "https://github.com/doctrine/instantiator/issues", + "source": "https://github.com/doctrine/instantiator/tree/1.4.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%2Finstantiator", + "type": "tidelift" + } + ], + "time": "2020-11-10T18:47:58+00:00" + }, + { + "name": "facade/ignition-contracts", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/facade/ignition-contracts.git", + "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", + "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", + "shasum": "" + }, + "require": { + "php": "^7.3|^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^v2.15.8", + "phpunit/phpunit": "^9.3.11", + "vimeo/psalm": "^3.17.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "Facade\\IgnitionContracts\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "homepage": "https://flareapp.io", + "role": "Developer" + } + ], + "description": "Solution contracts for Ignition", + "homepage": "https://github.com/facade/ignition-contracts", + "keywords": [ + "contracts", + "flare", + "ignition" + ], + "support": { + "issues": "https://github.com/facade/ignition-contracts/issues", + "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" + }, + "time": "2020-10-16T08:27:54+00:00" + }, + { + "name": "fakerphp/faker", + "version": "v1.19.0", + "source": { + "type": "git", + "url": "https://github.com/FakerPHP/Faker.git", + "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75", + "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^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": "*", + "symfony/phpunit-bridge": "^4.4 || ^5.2" + }, + "suggest": { + "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", + "ext-curl": "Required by Faker\\Provider\\Image to download images.", + "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", + "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", + "ext-mbstring": "Required for multibyte Unicode string functionality." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "v1.19-dev" + } + }, + "autoload": { + "psr-4": { + "Faker\\": "src/Faker/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "François Zaninotto" + } + ], + "description": "Faker is a PHP library that generates fake data for you.", + "keywords": [ + "data", + "faker", + "fixtures" + ], + "support": { + "issues": "https://github.com/FakerPHP/Faker/issues", + "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0" + }, + "time": "2022-02-02T17:38:57+00:00" + }, + { + "name": "filp/whoops", + "version": "2.14.5", + "source": { + "type": "git", + "url": "https://github.com/filp/whoops.git", + "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", + "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", + "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.14.5" + }, + "funding": [ + { + "url": "https://github.com/denis-sokolov", + "type": "github" + } + ], + "time": "2022-01-07T12:00:00+00:00" + }, + { + "name": "hamcrest/hamcrest-php", + "version": "v2.0.1", + "source": { + "type": "git", + "url": "https://github.com/hamcrest/hamcrest-php.git", + "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", + "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", + "shasum": "" + }, + "require": { + "php": "^5.3|^7.0|^8.0" + }, + "replace": { + "cordoval/hamcrest-php": "*", + "davedevelopment/hamcrest-php": "*", + "kodova/hamcrest-php": "*" + }, + "require-dev": { + "phpunit/php-file-iterator": "^1.4 || ^2.0", + "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" + } + }, + "autoload": { + "classmap": [ + "hamcrest" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "This is the PHP port of Hamcrest Matchers", + "keywords": [ + "test" + ], + "support": { + "issues": "https://github.com/hamcrest/hamcrest-php/issues", + "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" + }, + "time": "2020-07-09T08:09:16+00:00" + }, + { + "name": "laravel/sail", + "version": "v1.13.2", + "source": { + "type": "git", + "url": "https://github.com/laravel/sail.git", + "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/sail/zipball/ede5e861549be2c3a8b789cdb34203a5aef5b92a", + "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a", + "shasum": "" + }, + "require": { + "illuminate/console": "^8.0|^9.0", + "illuminate/contracts": "^8.0|^9.0", + "illuminate/support": "^8.0|^9.0", + "php": "^7.3|^8.0" + }, + "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": "2022-02-08T14:14:12+00:00" + }, + { + "name": "mockery/mockery", + "version": "1.5.0", + "source": { + "type": "git", + "url": "https://github.com/mockery/mockery.git", + "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", + "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", + "shasum": "" + }, + "require": { + "hamcrest/hamcrest-php": "^2.0.1", + "lib-pcre": ">=7.0", + "php": "^7.3 || ^8.0" + }, + "conflict": { + "phpunit/phpunit": "<8.0" + }, + "require-dev": { + "phpunit/phpunit": "^8.5 || ^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4.x-dev" + } + }, + "autoload": { + "psr-0": { + "Mockery": "library/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Pádraic Brady", + "email": "padraic.brady@gmail.com", + "homepage": "http://blog.astrumfutura.com" + }, + { + "name": "Dave Marshall", + "email": "dave.marshall@atstsolutions.co.uk", + "homepage": "http://davedevelopment.co.uk" + } + ], + "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": { + "issues": "https://github.com/mockery/mockery/issues", + "source": "https://github.com/mockery/mockery/tree/1.5.0" + }, + "time": "2022-01-20T13:18:17+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.10.2", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", + "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "replace": { + "myclabs/deep-copy": "self.version" + }, + "require-dev": { + "doctrine/collections": "^1.0", + "doctrine/common": "^2.6", + "phpunit/phpunit": "^7.1" + }, + "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.10.2" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2020-11-13T09:40:50+00:00" + }, + { + "name": "nunomaduro/collision", + "version": "v6.1.0", + "source": { + "type": "git", + "url": "https://github.com/nunomaduro/collision.git", + "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", + "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", + "shasum": "" + }, + "require": { + "facade/ignition-contracts": "^1.0.2", + "filp/whoops": "^2.14.5", + "php": "^8.0.0", + "symfony/console": "^6.0.2" + }, + "require-dev": { + "brianium/paratest": "^6.4.1", + "laravel/framework": "^9.0", + "nunomaduro/larastan": "^1.0.2", + "nunomaduro/mock-final-classes": "^1.1.0", + "orchestra/testbench": "^7.0.0", + "phpunit/phpunit": "^9.5.11" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-develop": "6.x-dev" + }, + "laravel": { + "providers": [ + "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" + ] + } + }, + "autoload": { + "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": "2022-01-18T17:49:08+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.1.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "15a90844ad40f127afd244c0cad228de2a80052a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/15a90844ad40f127afd244c0cad228de2a80052a", + "reference": "15a90844ad40f127afd244c0cad228de2a80052a", + "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.1.1" + }, + "time": "2022-02-07T21:56:48+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.6.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706", + "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.0" + }, + "require-dev": { + "ext-tokenizer": "*", + "psalm/phar": "^4.8" + }, + "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.6.0" + }, + "time": "2022-01-04T19:58:01+00:00" + }, + { + "name": "phpspec/prophecy", + "version": "v1.15.0", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", + "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.2", + "php": "^7.2 || ~8.0, <8.2", + "phpdocumentor/reflection-docblock": "^5.2", + "sebastian/comparator": "^3.0 || ^4.0", + "sebastian/recursion-context": "^3.0 || ^4.0" + }, + "require-dev": { + "phpspec/phpspec": "^6.0 || ^7.0", + "phpunit/phpunit": "^8.0 || ^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Prophecy\\": "src/Prophecy" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" + } + ], + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", + "keywords": [ + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" + ], + "support": { + "issues": "https://github.com/phpspec/prophecy/issues", + "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" + }, + "time": "2021-12-08T12:19:24+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "9.2.10", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d5850aaf931743067f4bfc1ae4cbd06468400687", + "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-xmlwriter": "*", + "nikic/php-parser": "^4.13.0", + "php": ">=7.3", + "phpunit/php-file-iterator": "^3.0.3", + "phpunit/php-text-template": "^2.0.2", + "sebastian/code-unit-reverse-lookup": "^2.0.2", + "sebastian/complexity": "^2.0", + "sebastian/environment": "^5.1.2", + "sebastian/lines-of-code": "^1.0.3", + "sebastian/version": "^3.0.1", + "theseer/tokenizer": "^1.2.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-pcov": "*", + "ext-xdebug": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.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 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", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.10" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-12-05T09:12:13+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "3.0.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "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": "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", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-12-02T12:48:52+00:00" + }, + { + "name": "phpunit/php-invoker", + "version": "3.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "ext-pcntl": "*", + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-pcntl": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "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/3.1.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:58:55+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "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": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T05:33:50+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "5.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.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/5.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:16:10+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "9.5.13", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "597cb647654ede35e43b137926dfdfef0fb11743" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/597cb647654ede35e43b137926dfdfef0fb11743", + "reference": "597cb647654ede35e43b137926dfdfef0fb11743", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.3.1", + "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": ">=7.3", + "phpspec/prophecy": "^1.12.1", + "phpunit/php-code-coverage": "^9.2.7", + "phpunit/php-file-iterator": "^3.0.5", + "phpunit/php-invoker": "^3.1.1", + "phpunit/php-text-template": "^2.0.3", + "phpunit/php-timer": "^5.0.2", + "sebastian/cli-parser": "^1.0.1", + "sebastian/code-unit": "^1.0.6", + "sebastian/comparator": "^4.0.5", + "sebastian/diff": "^4.0.3", + "sebastian/environment": "^5.1.3", + "sebastian/exporter": "^4.0.3", + "sebastian/global-state": "^5.0.1", + "sebastian/object-enumerator": "^4.0.3", + "sebastian/resource-operations": "^3.0.3", + "sebastian/type": "^2.3.4", + "sebastian/version": "^3.0.2" + }, + "require-dev": { + "ext-pdo": "*", + "phpspec/prophecy-phpunit": "^2.0.1" + }, + "suggest": { + "ext-soap": "*", + "ext-xdebug": "*" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.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", + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.13" + }, + "funding": [ + { + "url": "https://phpunit.de/sponsors.html", + "type": "custom" + }, + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2022-01-24T07:33:35+00:00" + }, + { + "name": "sebastian/cli-parser", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.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/1.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:08:49+00:00" + }, + { + "name": "sebastian/code-unit", + "version": "1.0.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.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/1.0.8" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:08:54+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.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/2.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:30:19+00:00" + }, + { + "name": "sebastian/comparator", + "version": "4.0.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "55f4261989e546dc112258c7a75935a81a7ce382" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", + "reference": "55f4261989e546dc112258c7a75935a81a7ce382", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/diff": "^4.0", + "sebastian/exporter": "^4.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.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", + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T15:49:45+00:00" + }, + { + "name": "sebastian/complexity", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.7", + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "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 calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", + "support": { + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T15:52:27+00:00" + }, + { + "name": "sebastian/diff", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3", + "symfony/process": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/diff/issues", + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:10:38+00:00" + }, + { + "name": "sebastian/environment", + "version": "5.1.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "388b6ced16caa751030f6a69e588299fa09200ac" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", + "reference": "388b6ced16caa751030f6a69e588299fa09200ac", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-posix": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.1-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": "http://www.github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/environment/issues", + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:52:38+00:00" + }, + { + "name": "sebastian/exporter", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", + "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.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": "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", + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-11-11T14:18:36+00:00" + }, + { + "name": "sebastian/global-state", + "version": "5.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", + "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "ext-dom": "*", + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-uopz": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "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": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-06-11T13:31:12+00:00" + }, + { + "name": "sebastian/lines-of-code", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.6", + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.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", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-28T06:42:11+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.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/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:12:34+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.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/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:14:26+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", + "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.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": "http://www.github.com/sebastianbergmann/recursion-context", + "support": { + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:17:30+00:00" + }, + { + "name": "sebastian/resource-operations", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "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": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "support": { + "issues": "https://github.com/sebastianbergmann/resource-operations/issues", + "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:45:17+00:00" + }, + { + "name": "sebastian/type", + "version": "2.3.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", + "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.3-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/2.3.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-06-15T12:49:02+00:00" + }, + { + "name": "sebastian/version", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "c6c1022351a901512170118436c764e473f6de8c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", + "reference": "c6c1022351a901512170118436c764e473f6de8c", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "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": "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/3.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:39:44+00:00" + }, + { + "name": "spatie/backtrace", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/spatie/backtrace.git", + "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/backtrace/zipball/4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", + "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", + "shasum": "" + }, + "require": { + "php": "^7.3|^8.0" + }, + "require-dev": { + "ext-json": "*", + "phpunit/phpunit": "^9.3", + "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": { + "issues": "https://github.com/spatie/backtrace/issues", + "source": "https://github.com/spatie/backtrace/tree/1.2.1" + }, + "funding": [ + { + "url": "https://github.com/sponsors/spatie", + "type": "github" + }, + { + "url": "https://spatie.be/open-source/support-us", + "type": "other" + } + ], + "time": "2021-11-09T10:57:15+00:00" + }, + { + "name": "spatie/flare-client-php", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/spatie/flare-client-php.git", + "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", + "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", + "shasum": "" + }, + "require": { + "illuminate/pipeline": "^8.0|^9.0", + "php": "^8.0", + "spatie/backtrace": "^1.2", + "symfony/http-foundation": "^5.0|^6.0", + "symfony/mime": "^5.2|^6.0", + "symfony/process": "^5.2|^6.0", + "symfony/var-dumper": "^5.2|^6.0" + }, + "require-dev": { + "dms/phpunit-arraysubset-asserts": "^0.3.0", + "pestphp/pest": "^1.20", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.0", + "spatie/phpunit-snapshot-assertions": "^4.0" + }, + "type": "library", + "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.0.1" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2022-02-04T15:21:00+00:00" + }, + { + "name": "spatie/ignition", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/spatie/ignition.git", + "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/ignition/zipball/d2d5ba823af3004268556e87dfc94449e4159f5a", + "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-mbstring": "*", + "monolog/monolog": "^2.0", + "php": "^8.0", + "spatie/flare-client-php": "^1.0", + "symfony/console": "^5.4|^6.0", + "symfony/var-dumper": "^5.4|^6.0" + }, + "require-dev": { + "mockery/mockery": "^1.4", + "pestphp/pest": "^1.20", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.0", + "spatie/ray": "^1.32", + "symfony/process": "^5.4|^6.0" + }, + "type": "library", + "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": "2022-01-19T12:57:41+00:00" + }, + { + "name": "spatie/laravel-ignition", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/spatie/laravel-ignition.git", + "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/68250225a9f83b086462c2af1b1139dfde48fbd2", + "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "ext-json": "*", + "ext-mbstring": "*", + "illuminate/support": "^8.77|^9.0", + "monolog/monolog": "^2.3", + "php": "^8.0", + "spatie/flare-client-php": "^1.0.1", + "spatie/ignition": "^1.0", + "symfony/console": "^5.0|^6.0", + "symfony/var-dumper": "^5.0|^6.0" + }, + "require-dev": { + "filp/whoops": "^2.14", + "livewire/livewire": "^2.8|dev-develop", + "mockery/mockery": "^1.4", + "nunomaduro/larastan": "^1.0", + "orchestra/testbench": "^6.23|^7.0", + "pestphp/pest": "^1.20", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.0", + "spatie/laravel-ray": "^1.27" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Spatie\\LaravelIgnition\\IgnitionServiceProvider" + ], + "aliases": { + "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" + } + } + }, + "autoload": { + "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": "2022-02-04T15:25:56+00:00" + }, + { + "name": "squizlabs/php_codesniffer", + "version": "3.6.2", + "source": { + "type": "git", + "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", + "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", + "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", + "shasum": "" + }, + "require": { + "ext-simplexml": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.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": "lead" + } + ], + "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", + "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", + "keywords": [ + "phpcs", + "standards" + ], + "support": { + "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", + "source": "https://github.com/squizlabs/PHP_CodeSniffer", + "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" + }, + "time": "2021-12-12T21:44:58+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + } + ], + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "support": { + "issues": "https://github.com/theseer/tokenizer/issues", + "source": "https://github.com/theseer/tokenizer/tree/1.2.1" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2021-07-28T10:34:58+00:00" + } + ], + "aliases": [], + "minimum-stability": "dev", + "stability-flags": [], + "prefer-stable": true, + "prefer-lowest": false, + "platform": { + "php": "^8.0" + }, + "platform-dev": [], + "plugin-api-version": "2.1.0" +} diff --git a/config/app.php b/config/app.php new file mode 100644 index 0000000..1941d7c --- /dev/null +++ b/config/app.php @@ -0,0 +1,197 @@ + env('APP_NAME', 'Laravel'), + + /* + |-------------------------------------------------------------------------- + | Application Environment + |-------------------------------------------------------------------------- + | + | This value determines the "environment" your application is currently + | running in. This may determine how you prefer to configure various + | services the application utilizes. Set this in your ".env" file. + | + */ + + 'env' => env('APP_ENV', 'production'), + + /* + |-------------------------------------------------------------------------- + | Application Debug Mode + |-------------------------------------------------------------------------- + | + | When your application is in debug mode, detailed error messages with + | stack traces will be shown on every error that occurs within your + | application. If disabled, a simple generic error page is shown. + | + */ + + 'debug' => (bool) env('APP_DEBUG', false), + + /* + |-------------------------------------------------------------------------- + | Application URL + |-------------------------------------------------------------------------- + | + | This URL is used by the console to properly generate URLs when using + | the Artisan command line tool. You should set this to the root of + | your application so that it is used when running Artisan tasks. + | + */ + + 'url' => env('APP_URL', 'http://localhost'), + + 'asset_url' => env('ASSET_URL', null), + + /* + |-------------------------------------------------------------------------- + | 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', + + /* + |-------------------------------------------------------------------------- + | 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' => [ + + /* + * Laravel Framework Service Providers... + */ + Illuminate\Auth\AuthServiceProvider::class, + Illuminate\Broadcasting\BroadcastServiceProvider::class, + Illuminate\Bus\BusServiceProvider::class, + Illuminate\Cache\CacheServiceProvider::class, + Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, + Illuminate\Cookie\CookieServiceProvider::class, + Illuminate\Database\DatabaseServiceProvider::class, + Illuminate\Encryption\EncryptionServiceProvider::class, + Illuminate\Filesystem\FilesystemServiceProvider::class, + Illuminate\Foundation\Providers\FoundationServiceProvider::class, + Illuminate\Hashing\HashServiceProvider::class, + Illuminate\Mail\MailServiceProvider::class, + Illuminate\Notifications\NotificationServiceProvider::class, + Illuminate\Pagination\PaginationServiceProvider::class, + Illuminate\Pipeline\PipelineServiceProvider::class, + Illuminate\Queue\QueueServiceProvider::class, + Illuminate\Redis\RedisServiceProvider::class, + Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, + Illuminate\Session\SessionServiceProvider::class, + Illuminate\Translation\TranslationServiceProvider::class, + Illuminate\Validation\ValidationServiceProvider::class, + Illuminate\View\ViewServiceProvider::class, + + /* + * 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, + + ], + + /* + |-------------------------------------------------------------------------- + | 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([ + // ... + ])->toArray(), + +]; diff --git a/config/auth.php b/config/auth.php new file mode 100644 index 0000000..d8c6cee --- /dev/null +++ b/config/auth.php @@ -0,0 +1,111 @@ + [ + '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 expire 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. + | + */ + + 'passwords' => [ + 'users' => [ + 'provider' => 'users', + 'table' => 'password_resets', + '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..67fcbbd --- /dev/null +++ b/config/broadcasting.php @@ -0,0 +1,67 @@ + 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'), + 'useTLS' => true, + ], + '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..8736c7a --- /dev/null +++ b/config/cache.php @@ -0,0 +1,110 @@ + 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'), + ], + + '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 a RAM based store such as APC or Memcached, there might + | be other applications utilizing the same cache. So, we'll specify a + | value to get prefixed to all our keys so we can 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..0faebae --- /dev/null +++ b/config/database.php @@ -0,0 +1,147 @@ + env('DB_CONNECTION', 'mysql'), + + /* + |-------------------------------------------------------------------------- + | Database Connections + |-------------------------------------------------------------------------- + | + | Here are each of the database connections setup for your application. + | Of course, examples of configuring each database platform that is + | supported by Laravel is shown below to make development simple. + | + | + | All database work in Laravel is done through the PHP PDO facilities + | so make sure you have the driver for your particular database of + | choice installed on your machine before you begin development. + | + */ + + 'connections' => [ + + 'sqlite' => [ + 'driver' => 'sqlite', + 'url' => env('DATABASE_URL'), + 'database' => env('DB_DATABASE', database_path('database.sqlite')), + 'prefix' => '', + 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), + ], + + 'mysql' => [ + 'driver' => 'mysql', + 'url' => env('DATABASE_URL'), + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '3306'), + 'database' => env('DB_DATABASE', 'forge'), + 'username' => env('DB_USERNAME', 'forge'), + 'password' => env('DB_PASSWORD', ''), + 'unix_socket' => env('DB_SOCKET', ''), + 'charset' => 'utf8mb4', + 'collation' => 'utf8mb4_unicode_ci', + 'prefix' => '', + 'prefix_indexes' => true, + 'strict' => true, + 'engine' => null, + 'options' => extension_loaded('pdo_mysql') ? array_filter([ + PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), + ]) : [], + ], + + 'pgsql' => [ + 'driver' => 'pgsql', + 'url' => env('DATABASE_URL'), + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '5432'), + 'database' => env('DB_DATABASE', 'forge'), + 'username' => env('DB_USERNAME', 'forge'), + 'password' => env('DB_PASSWORD', ''), + 'charset' => 'utf8', + 'prefix' => '', + 'prefix_indexes' => true, + 'search_path' => 'public', + 'sslmode' => 'prefer', + ], + + 'sqlsrv' => [ + 'driver' => 'sqlsrv', + 'url' => env('DATABASE_URL'), + 'host' => env('DB_HOST', 'localhost'), + 'port' => env('DB_PORT', '1433'), + 'database' => env('DB_DATABASE', 'forge'), + 'username' => env('DB_USERNAME', 'forge'), + 'password' => env('DB_PASSWORD', ''), + 'charset' => 'utf8', + 'prefix' => '', + 'prefix_indexes' => true, + ], + + ], + + /* + |-------------------------------------------------------------------------- + | 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'), + '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'), + '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..cf5abce --- /dev/null +++ b/config/filesystems.php @@ -0,0 +1,73 @@ + 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 setup for each driver as an example of the required options. + | + | Supported Drivers: "local", "ftp", "sftp", "s3" + | + */ + + 'disks' => [ + + 'local' => [ + 'driver' => 'local', + 'root' => storage_path('app'), + ], + + 'public' => [ + 'driver' => 'local', + 'root' => storage_path('app/public'), + 'url' => env('APP_URL').'/storage', + 'visibility' => 'public', + ], + + '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), + ], + + ], + + /* + |-------------------------------------------------------------------------- + | 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/logging.php b/config/logging.php new file mode 100644 index 0000000..fefe088 --- /dev/null +++ b/config/logging.php @@ -0,0 +1,119 @@ + 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' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), + + /* + |-------------------------------------------------------------------------- + | 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'), + ], + + 'daily' => [ + 'driver' => 'daily', + 'path' => storage_path('logs/laravel.log'), + 'level' => env('LOG_LEVEL', 'debug'), + 'days' => 14, + ], + + 'slack' => [ + 'driver' => 'slack', + 'url' => env('LOG_SLACK_WEBHOOK_URL'), + 'username' => 'Laravel Log', + 'emoji' => ':boom:', + 'level' => env('LOG_LEVEL', 'critical'), + ], + + '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'), + ], + ], + + 'stderr' => [ + 'driver' => 'monolog', + 'level' => env('LOG_LEVEL', 'debug'), + 'handler' => StreamHandler::class, + 'formatter' => env('LOG_STDERR_FORMATTER'), + 'with' => [ + 'stream' => 'php://stderr', + ], + ], + + 'syslog' => [ + 'driver' => 'syslog', + 'level' => env('LOG_LEVEL', 'debug'), + ], + + 'errorlog' => [ + 'driver' => 'errorlog', + 'level' => env('LOG_LEVEL', 'debug'), + ], + + '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..87b6fe3 --- /dev/null +++ b/config/mail.php @@ -0,0 +1,117 @@ + 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", + | "postmark", "log", "array", "failover" + | + */ + + 'mailers' => [ + 'smtp' => [ + 'transport' => 'smtp', + '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, + ], + + 'ses' => [ + 'transport' => 'ses', + ], + + 'mailgun' => [ + 'transport' => 'mailgun', + ], + + 'postmark' => [ + 'transport' => 'postmark', + ], + + 'sendmail' => [ + 'transport' => 'sendmail', + 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -t -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..25ea5a8 --- /dev/null +++ b/config/queue.php @@ -0,0 +1,93 @@ + 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, + ], + + ], + + /* + |-------------------------------------------------------------------------- + | 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..9281c92 --- /dev/null +++ b/config/sanctum.php @@ -0,0 +1,65 @@ + explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( + '%s%s', + 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', + env('APP_URL') ? ','.parse_url(env('APP_URL'), PHP_URL_HOST) : '' + ))), + + /* + |-------------------------------------------------------------------------- + | 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..2a1d616 --- /dev/null +++ b/config/services.php @@ -0,0 +1,33 @@ + [ + 'domain' => env('MAILGUN_DOMAIN'), + 'secret' => env('MAILGUN_SECRET'), + 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), + ], + + '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..22b8a18 --- /dev/null +++ b/config/view.php @@ -0,0 +1,36 @@ + [ + resource_path('views'), + ], + + /* + |-------------------------------------------------------------------------- + | Compiled View Path + |-------------------------------------------------------------------------- + | + | This option determines where all the compiled Blade templates will be + | stored for your application. Typically, this is within the storage + | directory. However, as usual, you are free to change this value. + | + */ + + 'compiled' => env( + 'VIEW_COMPILED_PATH', + realpath(storage_path('framework/views')) + ), + +]; diff --git a/database/.gitignore b/database/.gitignore new file mode 100644 index 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..d6ca926 --- /dev/null +++ b/database/factories/UserFactory.php @@ -0,0 +1,42 @@ + + */ +class UserFactory extends Factory +{ + /** + * Define the model's default state. + * + * @return array + */ + public function definition() + { + return [ + 'name' => $this->faker->name(), + 'email' => $this->faker->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. + * + * @return \Illuminate\Database\Eloquent\Factories\Factory + */ + public function unverified() + { + return $this->state(function (array $attributes) { + return [ + '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..cf6b776 --- /dev/null +++ b/database/migrations/2014_10_12_000000_create_users_table.php @@ -0,0 +1,36 @@ +id(); + $table->string('name'); + $table->string('email')->unique(); + $table->timestamp('email_verified_at')->nullable(); + $table->string('password'); + $table->rememberToken(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('users'); + } +}; diff --git a/database/migrations/2014_10_12_100000_create_password_resets_table.php b/database/migrations/2014_10_12_100000_create_password_resets_table.php new file mode 100644 index 0000000..0ee0a36 --- /dev/null +++ b/database/migrations/2014_10_12_100000_create_password_resets_table.php @@ -0,0 +1,32 @@ +string('email')->index(); + $table->string('token'); + $table->timestamp('created_at')->nullable(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('password_resets'); + } +} 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..1719198 --- /dev/null +++ b/database/migrations/2019_08_19_000000_create_failed_jobs_table.php @@ -0,0 +1,36 @@ +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. + * + * @return void + */ + public function down() + { + 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..fd235f8 --- /dev/null +++ b/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php @@ -0,0 +1,36 @@ +id(); + $table->morphs('tokenable'); + $table->string('name'); + $table->string('token', 64)->unique(); + $table->text('abilities')->nullable(); + $table->timestamp('last_used_at')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('personal_access_tokens'); + } +}; diff --git a/database/migrations/2022_02_11_153916_create_products_table.php b/database/migrations/2022_02_11_153916_create_products_table.php new file mode 100644 index 0000000..2eecdc2 --- /dev/null +++ b/database/migrations/2022_02_11_153916_create_products_table.php @@ -0,0 +1,35 @@ +id(); + $table->string('name'); + $table->text('description'); + $table->string('image'); + $table->integer('price'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('products'); + } +}; diff --git a/database/migrations/2022_02_12_140820_alter_users_table.php b/database/migrations/2022_02_12_140820_alter_users_table.php new file mode 100644 index 0000000..5bfcf7e --- /dev/null +++ b/database/migrations/2022_02_12_140820_alter_users_table.php @@ -0,0 +1,34 @@ +string('role')->default('client'); + $table->integer('balance'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('users', function (Blueprint $table) { + $table->dropColumn(['role']); + $table->dropColumn(['balance']); + }); + } +}; diff --git a/database/migrations/2022_02_12_152713_create_orders_table.php b/database/migrations/2022_02_12_152713_create_orders_table.php new file mode 100644 index 0000000..fc05fda --- /dev/null +++ b/database/migrations/2022_02_12_152713_create_orders_table.php @@ -0,0 +1,34 @@ +id(); + $table->integer('total'); + $table->unsignedBigInteger('user_id'); + $table->foreign('user_id')->references('id')->on('users'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('orders'); + } +}; diff --git a/database/migrations/2022_02_12_152850_create_items_table.php b/database/migrations/2022_02_12_152850_create_items_table.php new file mode 100644 index 0000000..d7dfac5 --- /dev/null +++ b/database/migrations/2022_02_12_152850_create_items_table.php @@ -0,0 +1,37 @@ +id(); + $table->integer('quantity'); + $table->integer('price'); + $table->unsignedBigInteger('order_id'); + $table->foreign('order_id')->references('id')->on('orders'); + $table->unsignedBigInteger('product_id'); + $table->foreign('product_id')->references('id')->on('products'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('items'); + } +}; diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php new file mode 100644 index 0000000..71f673f --- /dev/null +++ b/database/seeders/DatabaseSeeder.php @@ -0,0 +1,19 @@ +create(); + } +} diff --git a/lang/en.json b/lang/en.json new file mode 100644 index 0000000..577680d --- /dev/null +++ b/lang/en.json @@ -0,0 +1,7 @@ +{ + "The :attribute must contain at least one letter.": "The :attribute must contain at least one letter.", + "The :attribute must contain at least one number.": "The :attribute must contain at least one number.", + "The :attribute must contain at least one symbol.": "The :attribute must contain at least one symbol.", + "The :attribute must contain at least one uppercase and one lowercase letter.": "The :attribute must contain at least one uppercase and one lowercase letter.", + "The given :attribute has appeared in a data leak. Please choose a different :attribute.": "The given :attribute has appeared in a data leak. Please choose a different :attribute." +} diff --git a/lang/en/auth.php b/lang/en/auth.php new file mode 100644 index 0000000..6598e2c --- /dev/null +++ b/lang/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/lang/en/pagination.php b/lang/en/pagination.php new file mode 100644 index 0000000..d481411 --- /dev/null +++ b/lang/en/pagination.php @@ -0,0 +1,19 @@ + '« Previous', + 'next' => 'Next »', + +]; diff --git a/lang/en/passwords.php b/lang/en/passwords.php new file mode 100644 index 0000000..2345a56 --- /dev/null +++ b/lang/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/lang/en/validation.php b/lang/en/validation.php new file mode 100644 index 0000000..783003c --- /dev/null +++ b/lang/en/validation.php @@ -0,0 +1,163 @@ + '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' => [ + 'numeric' => 'The :attribute must be between :min and :max.', + 'file' => 'The :attribute must be between :min and :max kilobytes.', + 'string' => 'The :attribute must be between :min and :max characters.', + 'array' => 'The :attribute must have between :min and :max items.', + ], + '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' => [ + 'numeric' => 'The :attribute must be greater than :value.', + 'file' => 'The :attribute must be greater than :value kilobytes.', + 'string' => 'The :attribute must be greater than :value characters.', + 'array' => 'The :attribute must have more than :value items.', + ], + 'gte' => [ + 'numeric' => 'The :attribute must be greater than or equal to :value.', + 'file' => 'The :attribute must be greater than or equal to :value kilobytes.', + 'string' => 'The :attribute must be greater than or equal to :value characters.', + 'array' => 'The :attribute must have :value items or more.', + ], + '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' => [ + 'numeric' => 'The :attribute must be less than :value.', + 'file' => 'The :attribute must be less than :value kilobytes.', + 'string' => 'The :attribute must be less than :value characters.', + 'array' => 'The :attribute must have less than :value items.', + ], + 'lte' => [ + 'numeric' => 'The :attribute must be less than or equal to :value.', + 'file' => 'The :attribute must be less than or equal to :value kilobytes.', + 'string' => 'The :attribute must be less than or equal to :value characters.', + 'array' => 'The :attribute must not have more than :value items.', + ], + 'mac_address' => 'The :attribute must be a valid MAC address.', + 'max' => [ + 'numeric' => 'The :attribute must not be greater than :max.', + 'file' => 'The :attribute must not be greater than :max kilobytes.', + 'string' => 'The :attribute must not be greater than :max characters.', + 'array' => 'The :attribute must not have more than :max items.', + ], + 'mimes' => 'The :attribute must be a file of type: :values.', + 'mimetypes' => 'The :attribute must be a file of type: :values.', + 'min' => [ + 'numeric' => 'The :attribute must be at least :min.', + 'file' => 'The :attribute must be at least :min kilobytes.', + 'string' => 'The :attribute must be at least :min characters.', + 'array' => 'The :attribute must have at least :min items.', + ], + '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.', + 'password' => 'The password is incorrect.', + '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' => [ + 'numeric' => 'The :attribute must be :size.', + 'file' => 'The :attribute must be :size kilobytes.', + 'string' => 'The :attribute must be :size characters.', + 'array' => 'The :attribute must contain :size items.', + ], + '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/package.json b/package.json new file mode 100644 index 0000000..7b71681 --- /dev/null +++ b/package.json @@ -0,0 +1,22 @@ +{ + "private": true, + "scripts": { + "dev": "npm run development", + "development": "mix", + "watch": "mix watch", + "watch-poll": "mix watch -- --watch-options-poll=1000", + "hot": "mix watch --hot", + "prod": "npm run production", + "production": "mix --production" + }, + "devDependencies": { + "@popperjs/core": "^2.10.2", + "axios": "^0.25", + "bootstrap": "^5.1.3", + "laravel-mix": "^6.0.6", + "lodash": "^4.17.19", + "postcss": "^8.1.14", + "sass": "^1.32.11", + "sass-loader": "^11.0.1" + } +} diff --git a/phpcs.xml b/phpcs.xml new file mode 100644 index 0000000..a1cf2b6 --- /dev/null +++ b/phpcs.xml @@ -0,0 +1,10 @@ + + + The coding standard for the Online Store project + + app/ + config/ + database/ + routes/ + */migrations/* + diff --git a/phpunit.xml b/phpunit.xml new file mode 100644 index 0000000..2ac86a1 --- /dev/null +++ b/phpunit.xml @@ -0,0 +1,31 @@ + + + + + ./tests/Unit + + + ./tests/Feature + + + + + ./app + + + + + + + + + + + + + + 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/css/admin.css b/public/css/admin.css new file mode 100644 index 0000000..d9495a1 --- /dev/null +++ b/public/css/admin.css @@ -0,0 +1,33 @@ +.copyright { + background-color: #1a252f; +} + +.fixed { + -ms-flex: 0 0 250px; + flex: 0 0 250px; +} + +.content-grey { + background-color: #f8f9fc; +} + +hr { + margin-top: 0.8em; + margin-bottom: 0.8em; +} + +.img-profile { + height: 2rem; + width: 2rem; +} + +.profile-font { + color: #858796 !important; + font-size: 80%; + font-weight: 400; +} + +.card-header { + background-color: #f8f9fc; + border-bottom: 1px solid #e3e6f0; +} diff --git a/public/css/app.css b/public/css/app.css new file mode 100644 index 0000000..cabac36 --- /dev/null +++ b/public/css/app.css @@ -0,0 +1,20 @@ +.bg-secondary { + background-color: #2c3e50 !important; +} + +.copyright { + background-color: #1a252f; +} + +.bg-primary { + background-color: #1abc9c !important; +} + +nav{ + font-weight: 700; +} + +.img-card{ + height: 18vw; + object-fit: cover; +} diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000..e69de29 diff --git a/public/img/game.png b/public/img/game.png new file mode 100644 index 0000000000000000000000000000000000000000..85420e8bbc16098bf26b4ee63bde0e91a19d1f2a GIT binary patch literal 25896 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 cz>% literal 0 HcmV?d00001 diff --git a/public/img/safe.png b/public/img/safe.png new file mode 100644 index 0000000000000000000000000000000000000000..445942c707af53210931f9f4f99f6d3cb69e5d89 GIT binary patch literal 19240 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
w==XB0?3|p=#`o%NsudE(E-U#KS3Snw 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 o>ir+C;RN10sIS0&a;p + + + + + + + + + + + + + + + + + + diff --git a/public/index.php b/public/index.php new file mode 100644 index 0000000..1d69f3a --- /dev/null +++ b/public/index.php @@ -0,0 +1,55 @@ +make(Kernel::class); + +$response = $kernel->handle( + $request = Request::capture() +)->send(); + +$kernel->terminate($request, $response); diff --git a/public/robots.txt b/public/robots.txt new file mode 100644 index 0000000..eb05362 --- /dev/null +++ b/public/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Disallow: diff --git a/resources/css/app.css b/resources/css/app.css new file mode 100644 index 0000000..e69de29 diff --git a/resources/js/app.js b/resources/js/app.js new file mode 100644 index 0000000..40c55f6 --- /dev/null +++ b/resources/js/app.js @@ -0,0 +1 @@ +require('./bootstrap'); diff --git a/resources/js/bootstrap.js b/resources/js/bootstrap.js new file mode 100644 index 0000000..dcdc4df --- /dev/null +++ b/resources/js/bootstrap.js @@ -0,0 +1,32 @@ +window._ = require('lodash'); + +try { + require('bootstrap'); +} catch (e) {} + +/** + * 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 = require('axios'); + +window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; + +/** + * 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'; + +// window.Pusher = require('pusher-js'); + +// window.Echo = new Echo({ +// broadcaster: 'pusher', +// key: process.env.MIX_PUSHER_APP_KEY, +// cluster: process.env.MIX_PUSHER_APP_CLUSTER, +// forceTLS: true +// }); diff --git a/resources/sass/_variables.scss b/resources/sass/_variables.scss new file mode 100644 index 0000000..172daaa --- /dev/null +++ b/resources/sass/_variables.scss @@ -0,0 +1,7 @@ +// Body +$body-bg: #f8fafc; + +// Typography +$font-family-sans-serif: 'Nunito', sans-serif; +$font-size-base: 0.9rem; +$line-height-base: 1.6; diff --git a/resources/sass/app.scss b/resources/sass/app.scss new file mode 100644 index 0000000..3193ffa --- /dev/null +++ b/resources/sass/app.scss @@ -0,0 +1,8 @@ +// Fonts +@import url('https://fonts.googleapis.com/css?family=Nunito'); + +// Variables +@import 'variables'; + +// Bootstrap +@import '~bootstrap/scss/bootstrap'; diff --git a/resources/views/admin/home/index.blade.php b/resources/views/admin/home/index.blade.php new file mode 100644 index 0000000..a2b4868 --- /dev/null +++ b/resources/views/admin/home/index.blade.php @@ -0,0 +1,12 @@ +@extends('layouts.admin') +@section('title', $viewData["title"]) +@section('content') +
+
+ Admin Panel - Home Page +
+
+ Welcome to the Admin Panel, use the sidebar to navigate between the different options. +
+
+@endsection diff --git a/resources/views/admin/product/edit.blade.php b/resources/views/admin/product/edit.blade.php new file mode 100644 index 0000000..b8e03d8 --- /dev/null +++ b/resources/views/admin/product/edit.blade.php @@ -0,0 +1,61 @@ +@extends('layouts.admin') +@section('title', $viewData["title"]) +@section('content') +
+
+ Edit Product +
+
+ @if($errors->any()) +
    + @foreach($errors->all() as $error) +
  • - {{ $error }}
  • + @endforeach +
+ @endif + +
+ @csrf + @method('PUT') +
+
+
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+
+
+
+
+ +
+ +
+
+
+
+   +
+
+
+ + +
+ +
+
+
+@endsection diff --git a/resources/views/admin/product/index.blade.php b/resources/views/admin/product/index.blade.php new file mode 100644 index 0000000..19fbe4b --- /dev/null +++ b/resources/views/admin/product/index.blade.php @@ -0,0 +1,98 @@ +@extends('layouts.admin') +@section('title', $viewData["title"]) +@section('content') +
+
+ Create Products +
+
+ @if($errors->any()) +
    + @foreach($errors->all() as $error) +
  • - {{ $error }}
  • + @endforeach +
+ @endif + +
+ @csrf +
+
+
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+
+
+
+
+ +
+ +
+
+
+
+   +
+
+
+ + +
+ +
+
+
+ +
+
+ Manage Products +
+
+ + + + + + + + + + + @foreach ($viewData["products"] as $product) + + + + + + + @endforeach + +
IDNameEditDelete
{{ $product->getId() }}{{ $product->getName() }} + + + + +
+ @csrf + @method('DELETE') + +
+
+
+
+@endsection diff --git a/resources/views/auth/login.blade.php b/resources/views/auth/login.blade.php new file mode 100644 index 0000000..c7e5ea0 --- /dev/null +++ b/resources/views/auth/login.blade.php @@ -0,0 +1,73 @@ +@extends('layouts.app') + +@section('content') +
+@endsection diff --git a/resources/views/auth/passwords/confirm.blade.php b/resources/views/auth/passwords/confirm.blade.php new file mode 100644 index 0000000..f8c8e61 --- /dev/null +++ b/resources/views/auth/passwords/confirm.blade.php @@ -0,0 +1,49 @@ +@extends('layouts.app') + +@section('content') + +@endsection diff --git a/resources/views/auth/passwords/email.blade.php b/resources/views/auth/passwords/email.blade.php new file mode 100644 index 0000000..d1ac783 --- /dev/null +++ b/resources/views/auth/passwords/email.blade.php @@ -0,0 +1,47 @@ +@extends('layouts.app') + +@section('content') +
+
+
+
+
{{ __('Reset Password') }}
+ +
+ @if (session('status')) + + @endif + +
+ @csrf + +
+ + +
+ + + @error('email') + + {{ $message }} + + @enderror +
+
+ +
+
+ +
+
+
+
+
+
+
+
+@endsection diff --git a/resources/views/auth/passwords/reset.blade.php b/resources/views/auth/passwords/reset.blade.php new file mode 100644 index 0000000..dccf6c6 --- /dev/null +++ b/resources/views/auth/passwords/reset.blade.php @@ -0,0 +1,65 @@ +@extends('layouts.app') + +@section('content') +
+
+
+
+
{{ __('Reset Password') }}
+ +
+
+ @csrf + + + +
+ + +
+ + + @error('email') + + {{ $message }} + + @enderror +
+
+ +
+ + +
+ + + @error('password') + + {{ $message }} + + @enderror +
+
+ +
+ + +
+ +
+
+ +
+
+ +
+
+
+
+
+
+
+
+@endsection diff --git a/resources/views/auth/register.blade.php b/resources/views/auth/register.blade.php new file mode 100644 index 0000000..e001a0b --- /dev/null +++ b/resources/views/auth/register.blade.php @@ -0,0 +1,77 @@ +@extends('layouts.app') + +@section('content') +
+
+
+
+
{{ __('Register') }}
+ +
+
+ @csrf + +
+ + +
+ + + @error('name') + + {{ $message }} + + @enderror +
+
+ +
+ + +
+ + + @error('email') + + {{ $message }} + + @enderror +
+
+ +
+ + +
+ + + @error('password') + + {{ $message }} + + @enderror +
+
+ +
+ + +
+ +
+
+ +
+
+ +
+
+
+
+
+
+
+
+@endsection diff --git a/resources/views/auth/verify.blade.php b/resources/views/auth/verify.blade.php new file mode 100644 index 0000000..9f8c1bc --- /dev/null +++ b/resources/views/auth/verify.blade.php @@ -0,0 +1,28 @@ +@extends('layouts.app') + +@section('content') +
+
+
+
+
{{ __('Verify Your Email Address') }}
+ +
+ @if (session('resent')) + + @endif + + {{ __('Before proceeding, please check your email for a verification link.') }} + {{ __('If you did not receive the email') }}, +
+ @csrf + . +
+
+
+
+
+
+@endsection diff --git a/resources/views/cart/index.blade.php b/resources/views/cart/index.blade.php new file mode 100644 index 0000000..d9e2cd5 --- /dev/null +++ b/resources/views/cart/index.blade.php @@ -0,0 +1,45 @@ +@extends('layouts.app') +@section('title', $viewData["title"]) +@section('subtitle', $viewData["subtitle"]) +@section('content') +
+@endsection diff --git a/resources/views/cart/purchase.blade.php b/resources/views/cart/purchase.blade.php new file mode 100644 index 0000000..83b04d3 --- /dev/null +++ b/resources/views/cart/purchase.blade.php @@ -0,0 +1,15 @@ +@extends('layouts.app') +@section('title', $viewData["title"]) +@section('subtitle', $viewData["subtitle"]) +@section('content') +
+
+ Purchase Completed +
+
+ +
+
+@endsection diff --git a/resources/views/home.blade.php b/resources/views/home.blade.php new file mode 100644 index 0000000..1f34466 --- /dev/null +++ b/resources/views/home.blade.php @@ -0,0 +1,23 @@ +@extends('layouts.app') + +@section('content') +
+
+
+
+
{{ __('Dashboard') }}
+ +
+ @if (session('status')) + + @endif + + {{ __('You are logged in!') }} +
+
+
+
+
+@endsection diff --git a/resources/views/home/about.blade.php b/resources/views/home/about.blade.php new file mode 100644 index 0000000..f79abf3 --- /dev/null +++ b/resources/views/home/about.blade.php @@ -0,0 +1,15 @@ +@extends('layouts.app') +@section('title', $viewData["title"]) +@section('subtitle', $viewData["subtitle"]) +@section('content') +
+
+
+

{{ $viewData["description"] }}

+
+
+

{{ $viewData["author"] }}

+
+
+
+@endsection diff --git a/resources/views/home/index.blade.php b/resources/views/home/index.blade.php new file mode 100644 index 0000000..1affb20 --- /dev/null +++ b/resources/views/home/index.blade.php @@ -0,0 +1,15 @@ +@extends('layouts.app') +@section('title', $viewData["title"]) +@section('content') +
+
+ +
+
+ +
+
+ +
+
+@endsection diff --git a/resources/views/layouts/admin.blade.php b/resources/views/layouts/admin.blade.php new file mode 100644 index 0000000..4aff3f8 --- /dev/null +++ b/resources/views/layouts/admin.blade.php @@ -0,0 +1,60 @@ + + + + + + + + + + @yield('title', 'Admin - Online Store') + + + +
+ + + +
+ + +
+ @yield('content') +
+
+
+ + + + + + + + + diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php new file mode 100644 index 0000000..f4e1381 --- /dev/null +++ b/resources/views/layouts/app.blade.php @@ -0,0 +1,68 @@ + + + + + + + + @yield('title', 'Online Store') + + + + + +
+
+

@yield('subtitle', 'A Laravel Online Store')

+
+
+ + +
+ @yield('content') +
+ + + + + + + diff --git a/resources/views/myaccount/orders.blade.php b/resources/views/myaccount/orders.blade.php new file mode 100644 index 0000000..b94b4c2 --- /dev/null +++ b/resources/views/myaccount/orders.blade.php @@ -0,0 +1,44 @@ +@extends('layouts.app') +@section('title', $viewData["title"]) +@section('subtitle', $viewData["subtitle"]) +@section('content') +@forelse ($viewData["orders"] as $order) +
+
+ Order #{{ $order->getId() }} +
+
+ Date: {{ $order->getCreatedAt() }}
+ Total: ${{ $order->getTotal() }}
+ + + + + + + + + + + @foreach ($order->getItems() as $item) + + + + + + + @endforeach + +
Item IDProduct NamePriceQuantity
{{ $item->getId() }} + + {{ $item->getProduct()->getName() }} + + ${{ $item->getPrice() }}{{ $item->getQuantity() }}
+
+
+@empty + +@endforelse +@endsection diff --git a/resources/views/product/index.blade.php b/resources/views/product/index.blade.php new file mode 100644 index 0000000..64c3e18 --- /dev/null +++ b/resources/views/product/index.blade.php @@ -0,0 +1,18 @@ +@extends('layouts.app') +@section('title', $viewData["title"]) +@section('subtitle', $viewData["subtitle"]) +@section('content') +
+ @foreach ($viewData["products"] as $product) + + @endforeach +
+@endsection diff --git a/resources/views/product/show.blade.php b/resources/views/product/show.blade.php new file mode 100644 index 0000000..801ea09 --- /dev/null +++ b/resources/views/product/show.blade.php @@ -0,0 +1,36 @@ +@extends('layouts.app') +@section('title', $viewData["title"]) +@section('subtitle', $viewData["subtitle"]) +@section('content') +
+
+
+ getImage()) }}" class="img-fluid rounded-start"> +
+
+
+
+ {{ $viewData["product"]->getName() }} (${{ $viewData["product"]->getPrice() }}) +
+

{{ $viewData["product"]->getDescription() }}

+

+

+
+ @csrf +
+
+
Quantity
+ +
+
+
+ +
+
+
+

+
+
+
+
+@endsection diff --git a/resources/views/welcome.blade.php b/resources/views/welcome.blade.php new file mode 100644 index 0000000..c587c72 --- /dev/null +++ b/resources/views/welcome.blade.php @@ -0,0 +1,7 @@ +@extends('layouts.app') +@section('title', 'Home Page - Online Store') +@section('content') +
+ Welcome to the application +
+@endsection \ No newline at end of file diff --git a/routes/api.php b/routes/api.php new file mode 100644 index 0000000..eb6fa48 --- /dev/null +++ b/routes/api.php @@ -0,0 +1,19 @@ +get('/user', function (Request $request) { + return $request->user(); +}); 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..e05f4c9 --- /dev/null +++ b/routes/console.php @@ -0,0 +1,19 @@ +comment(Inspiring::quote()); +})->purpose('Display an inspiring quote'); diff --git a/routes/web.php b/routes/web.php new file mode 100644 index 0000000..5252f46 --- /dev/null +++ b/routes/web.php @@ -0,0 +1,39 @@ +name("home.index"); +Route::get('/about', 'App\Http\Controllers\HomeController@about')->name("home.about"); +Route::get('/products', 'App\Http\Controllers\ProductController@index')->name("product.index"); +Route::get('/products/{id}', 'App\Http\Controllers\ProductController@show')->name("product.show"); + +Route::get('/cart', 'App\Http\Controllers\CartController@index')->name("cart.index"); +Route::get('/cart/delete', 'App\Http\Controllers\CartController@delete')->name("cart.delete"); +Route::post('/cart/add/{id}', 'App\Http\Controllers\CartController@add')->name("cart.add"); + +Route::middleware('auth')->group(function () { + Route::get('/cart/purchase', 'App\Http\Controllers\CartController@purchase')->name("cart.purchase"); + Route::get('/my-account/orders', 'App\Http\Controllers\MyAccountController@orders')->name("myaccount.orders"); +}); + +Route::middleware('admin')->group(function () { + Route::get('/admin', 'App\Http\Controllers\Admin\AdminHomeController@index')->name("admin.home.index"); + Route::get('/admin/products', 'App\Http\Controllers\Admin\AdminProductController@index')->name("admin.product.index"); + Route::post('/admin/products/store', 'App\Http\Controllers\Admin\AdminProductController@store')->name("admin.product.store"); + Route::delete('/admin/products/{id}/delete', 'App\Http\Controllers\Admin\AdminProductController@delete')->name("admin.product.delete"); + Route::get('/admin/products/{id}/edit', 'App\Http\Controllers\Admin\AdminProductController@edit')->name("admin.product.edit"); + Route::put('/admin/products/{id}/update', 'App\Http\Controllers\Admin\AdminProductController@update')->name("admin.product.update"); +}); + +Auth::routes(); 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/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/tests/CreatesApplication.php b/tests/CreatesApplication.php new file mode 100644 index 0000000..547152f --- /dev/null +++ b/tests/CreatesApplication.php @@ -0,0 +1,22 @@ +make(Kernel::class)->bootstrap(); + + return $app; + } +} diff --git a/tests/Feature/ExampleTest.php b/tests/Feature/ExampleTest.php new file mode 100644 index 0000000..78ccc21 --- /dev/null +++ b/tests/Feature/ExampleTest.php @@ -0,0 +1,21 @@ +get('/'); + + $response->assertStatus(200); + } +} 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 @@ +assertTrue(true); + } +} diff --git a/webpack.mix.js b/webpack.mix.js new file mode 100644 index 0000000..1a2a958 --- /dev/null +++ b/webpack.mix.js @@ -0,0 +1,16 @@ +const mix = require('laravel-mix'); + +/* + |-------------------------------------------------------------------------- + | Mix Asset Management + |-------------------------------------------------------------------------- + | + | Mix provides a clean, fluent API for defining some Webpack build steps + | for your Laravel application. By default, we are compiling the Sass + | file for the application as well as bundling up all the JS files. + | + */ + +mix.js('resources/js/app.js', 'public/js') + .sass('resources/sass/app.scss', 'public/css') + .sourceMaps(); From 18671530a997fa61f6a52695125a99e15d912998 Mon Sep 17 00:00:00 2001 From: boulganafatimaezzahra Date: Mon, 17 Mar 2025 21:39:18 +0000 Subject: [PATCH 03/41] initial commit --- composer.lock | 3549 +++++++++++++++++++++++++++---------------------- 1 file changed, 1964 insertions(+), 1585 deletions(-) diff --git a/composer.lock b/composer.lock index 78c86f1..d0e9137 100644 --- a/composer.lock +++ b/composer.lock @@ -8,31 +8,31 @@ "packages": [ { "name": "asm89/stack-cors", - "version": "v2.1.1", + "version": "v2.2.0", "source": { "type": "git", "url": "https://github.com/asm89/stack-cors.git", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a" + "reference": "50f57105bad3d97a43ec4a485eb57daf347eafea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", + "url": "https://api.github.com/repos/asm89/stack-cors/zipball/50f57105bad3d97a43ec4a485eb57daf347eafea", + "reference": "50f57105bad3d97a43ec4a485eb57daf347eafea", "shasum": "" }, "require": { - "php": "^7.2|^8.0", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4|^5|^6" + "php": "^7.3|^8.0", + "symfony/http-foundation": "^5.3|^6|^7", + "symfony/http-kernel": "^5.3|^6|^7" }, "require-dev": { - "phpunit/phpunit": "^7|^9", + "phpunit/phpunit": "^9", "squizlabs/php_codesniffer": "^3.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.1-dev" + "dev-master": "2.2-dev" } }, "autoload": { @@ -58,32 +58,31 @@ ], "support": { "issues": "https://github.com/asm89/stack-cors/issues", - "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" + "source": "https://github.com/asm89/stack-cors/tree/v2.2.0" }, - "time": "2022-01-18T09:12:03+00:00" + "time": "2023-11-14T13:51:46+00:00" }, { "name": "brick/math", - "version": "0.9.3", + "version": "0.11.0", "source": { "type": "git", "url": "https://github.com/brick/math.git", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" + "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", + "url": "https://api.github.com/repos/brick/math/zipball/0ad82ce168c82ba30d1c01ec86116ab52f589478", + "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478", "shasum": "" }, "require": { - "ext-json": "*", - "php": "^7.1 || ^8.0" + "php": "^8.0" }, "require-dev": { "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", - "vimeo/psalm": "4.9.2" + "phpunit/phpunit": "^9.0", + "vimeo/psalm": "5.0.0" }, "type": "library", "autoload": { @@ -108,32 +107,97 @@ ], "support": { "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.9.3" + "source": "https://github.com/brick/math/tree/0.11.0" }, "funding": [ { "url": "https://github.com/BenMorel", "type": "github" + } + ], + "time": "2023-01-15T23:15:59+00:00" + }, + { + "name": "carbonphp/carbon-doctrine-types", + "version": "3.2.0", + "source": { + "type": "git", + "url": "https://github.com/CarbonPHP/carbon-doctrine-types.git", + "reference": "18ba5ddfec8976260ead6e866180bd5d2f71aa1d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/18ba5ddfec8976260ead6e866180bd5d2f71aa1d", + "reference": "18ba5ddfec8976260ead6e866180bd5d2f71aa1d", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "conflict": { + "doctrine/dbal": "<4.0.0 || >=5.0.0" + }, + "require-dev": { + "doctrine/dbal": "^4.0.0", + "nesbot/carbon": "^2.71.0 || ^3.0.0", + "phpunit/phpunit": "^10.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Carbon\\Doctrine\\": "src/Carbon/Doctrine/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "KyleKatarn", + "email": "kylekatarnls@gmail.com" + } + ], + "description": "Types to use Carbon in Doctrine", + "keywords": [ + "carbon", + "date", + "datetime", + "doctrine", + "time" + ], + "support": { + "issues": "https://github.com/CarbonPHP/carbon-doctrine-types/issues", + "source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/3.2.0" + }, + "funding": [ + { + "url": "https://github.com/kylekatarnls", + "type": "github" + }, + { + "url": "https://opencollective.com/Carbon", + "type": "open_collective" }, { - "url": "https://tidelift.com/funding/github/packagist/brick/math", + "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", "type": "tidelift" } ], - "time": "2021-08-15T20:50:18+00:00" + "time": "2024-02-09T16:56:22+00:00" }, { "name": "dflydev/dot-access-data", - "version": "v3.0.1", + "version": "v3.0.3", "source": { "type": "git", "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c" + "reference": "a23a2bf4f31d3518f3ecb38660c95715dfead60f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c", + "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/a23a2bf4f31d3518f3ecb38660c95715dfead60f", + "reference": "a23a2bf4f31d3518f3ecb38660c95715dfead60f", "shasum": "" }, "require": { @@ -144,7 +208,7 @@ "phpunit/phpunit": "^7.5 || ^8.5 || ^9.3", "scrutinizer/ocular": "1.6.0", "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^3.14" + "vimeo/psalm": "^4.0.0" }, "type": "library", "extra": { @@ -193,34 +257,34 @@ ], "support": { "issues": "https://github.com/dflydev/dflydev-dot-access-data/issues", - "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.1" + "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.3" }, - "time": "2021-08-13T13:06:58+00:00" + "time": "2024-07-08T12:26:09+00:00" }, { "name": "doctrine/inflector", - "version": "2.0.4", + "version": "2.0.10", "source": { "type": "git", "url": "https://github.com/doctrine/inflector.git", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" + "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/5817d0659c5b50c9b950feb9af7b9668e2c436bc", + "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc", "shasum": "" }, "require": { "php": "^7.2 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^8.2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "vimeo/psalm": "^4.10" + "doctrine/coding-standard": "^11.0", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.1", + "phpstan/phpstan-strict-rules": "^1.3", + "phpunit/phpunit": "^8.5 || ^9.5", + "vimeo/psalm": "^4.25 || ^5.4" }, "type": "library", "autoload": { @@ -270,7 +334,7 @@ ], "support": { "issues": "https://github.com/doctrine/inflector/issues", - "source": "https://github.com/doctrine/inflector/tree/2.0.4" + "source": "https://github.com/doctrine/inflector/tree/2.0.10" }, "funding": [ { @@ -286,35 +350,36 @@ "type": "tidelift" } ], - "time": "2021-10-22T20:16:43+00:00" + "time": "2024-02-18T20:23:39+00:00" }, { "name": "doctrine/lexer", - "version": "1.2.2", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c" + "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd", + "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" + "php": "^8.1" }, "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" + "doctrine/coding-standard": "^12", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^10.5", + "psalm/plugin-phpunit": "^0.18.3", + "vimeo/psalm": "^5.21" }, "type": "library", "autoload": { "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" + "Doctrine\\Common\\Lexer\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -346,7 +411,7 @@ ], "support": { "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/1.2.2" + "source": "https://github.com/doctrine/lexer/tree/3.0.1" }, "funding": [ { @@ -362,20 +427,20 @@ "type": "tidelift" } ], - "time": "2022-01-12T08:27:12+00:00" + "time": "2024-02-05T11:56:58+00:00" }, { "name": "dragonmantank/cron-expression", - "version": "v3.3.1", + "version": "v3.4.0", "source": { "type": "git", "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" + "reference": "8c784d071debd117328803d86b2097615b457500" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/8c784d071debd117328803d86b2097615b457500", + "reference": "8c784d071debd117328803d86b2097615b457500", "shasum": "" }, "require": { @@ -388,10 +453,14 @@ "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", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, "autoload": { "psr-4": { "Cron\\": "src/Cron/" @@ -415,7 +484,7 @@ ], "support": { "issues": "https://github.com/dragonmantank/cron-expression/issues", - "source": "https://github.com/dragonmantank/cron-expression/tree/v3.3.1" + "source": "https://github.com/dragonmantank/cron-expression/tree/v3.4.0" }, "funding": [ { @@ -423,31 +492,30 @@ "type": "github" } ], - "time": "2022-01-18T15:43:28+00:00" + "time": "2024-10-09T13:47:03+00:00" }, { "name": "egulias/email-validator", - "version": "3.1.2", + "version": "4.0.3", "source": { "type": "git", "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697" + "reference": "b115554301161fa21467629f1e1391c1936de517" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ee0db30118f661fb166bcffbf5d82032df484697", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/b115554301161fa21467629f1e1391c1936de517", + "reference": "b115554301161fa21467629f1e1391c1936de517", "shasum": "" }, "require": { - "doctrine/lexer": "^1.2", - "php": ">=7.2", - "symfony/polyfill-intl-idn": "^1.15" + "doctrine/lexer": "^2.0 || ^3.0", + "php": ">=8.1", + "symfony/polyfill-intl-idn": "^1.26" }, "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^8.5.8|^9.3.3", - "vimeo/psalm": "^4" + "phpunit/phpunit": "^10.2", + "vimeo/psalm": "^5.12" }, "suggest": { "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" @@ -455,7 +523,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0.x-dev" + "dev-master": "4.0.x-dev" } }, "autoload": { @@ -483,7 +551,7 @@ ], "support": { "issues": "https://github.com/egulias/EmailValidator/issues", - "source": "https://github.com/egulias/EmailValidator/tree/3.1.2" + "source": "https://github.com/egulias/EmailValidator/tree/4.0.3" }, "funding": [ { @@ -491,29 +559,27 @@ "type": "github" } ], - "time": "2021-10-11T09:18:27+00:00" + "time": "2024-12-27T00:36:43+00:00" }, { "name": "fruitcake/laravel-cors", - "version": "v2.0.5", + "version": "v2.2.0", "source": { "type": "git", "url": "https://github.com/fruitcake/laravel-cors.git", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc" + "reference": "783a74f5e3431d7b9805be8afb60fd0a8f743534" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc", + "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/783a74f5e3431d7b9805be8afb60fd0a8f743534", + "reference": "783a74f5e3431d7b9805be8afb60fd0a8f743534", "shasum": "" }, "require": { "asm89/stack-cors": "^2.0.1", "illuminate/contracts": "^6|^7|^8|^9", "illuminate/support": "^6|^7|^8|^9", - "php": ">=7.2", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4.3.4|^5|^6" + "php": ">=7.2" }, "require-dev": { "laravel/framework": "^6|^7.24|^8", @@ -524,7 +590,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "2.1-dev" }, "laravel": { "providers": [ @@ -560,7 +626,79 @@ ], "support": { "issues": "https://github.com/fruitcake/laravel-cors/issues", - "source": "https://github.com/fruitcake/laravel-cors/tree/v2.0.5" + "source": "https://github.com/fruitcake/laravel-cors/tree/v2.2.0" + }, + "funding": [ + { + "url": "https://fruitcake.nl", + "type": "custom" + }, + { + "url": "https://github.com/barryvdh", + "type": "github" + } + ], + "abandoned": true, + "time": "2022-02-23T14:25:13+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": [ { @@ -572,28 +710,28 @@ "type": "github" } ], - "time": "2022-01-03T14:53:04+00:00" + "time": "2023-10-12T05:21:21+00:00" }, { "name": "graham-campbell/result-type", - "version": "v1.0.4", + "version": "v1.1.3", "source": { "type": "git", "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "0690bde05318336c7221785f2a932467f98b64ca" + "reference": "3ba905c11371512af9d9bdd27d99b782216b6945" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/0690bde05318336c7221785f2a932467f98b64ca", - "reference": "0690bde05318336c7221785f2a932467f98b64ca", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/3ba905c11371512af9d9bdd27d99b782216b6945", + "reference": "3ba905c11371512af9d9bdd27d99b782216b6945", "shasum": "" }, "require": { - "php": "^7.0 || ^8.0", - "phpoption/phpoption": "^1.8" + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9.3" }, "require-dev": { - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" + "phpunit/phpunit": "^8.5.39 || ^9.6.20 || ^10.5.28" }, "type": "library", "autoload": { @@ -622,7 +760,7 @@ ], "support": { "issues": "https://github.com/GrahamCampbell/Result-Type/issues", - "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.0.4" + "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.3" }, "funding": [ { @@ -634,26 +772,26 @@ "type": "tidelift" } ], - "time": "2021-11-21T21:41:47+00:00" + "time": "2024-07-20T21:45:45+00:00" }, { "name": "guzzlehttp/guzzle", - "version": "7.4.1", + "version": "7.9.2", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79" + "reference": "d281ed313b989f213357e3be1a179f02196ac99b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/d281ed313b989f213357e3be1a179f02196ac99b", + "reference": "d281ed313b989f213357e3be1a179f02196ac99b", "shasum": "" }, "require": { "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.8.3 || ^2.1", + "guzzlehttp/promises": "^1.5.3 || ^2.0.3", + "guzzlehttp/psr7": "^2.7.0", "php": "^7.2.5 || ^8.0", "psr/http-client": "^1.0", "symfony/deprecation-contracts": "^2.2 || ^3.0" @@ -662,10 +800,11 @@ "psr/http-client-implementation": "1.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", + "bamarni/composer-bin-plugin": "^1.8.2", "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.5 || ^9.3.5", + "guzzle/client-integration-tests": "3.0.2", + "php-http/message-factory": "^1.1", + "phpunit/phpunit": "^8.5.39 || ^9.6.20", "psr/log": "^1.1 || ^2.0 || ^3.0" }, "suggest": { @@ -675,17 +814,18 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "7.4-dev" + "bamarni-bin": { + "bin-links": true, + "forward-command": false } }, "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, "files": [ "src/functions_include.php" - ] + ], + "psr-4": { + "GuzzleHttp\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -742,7 +882,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.4.1" + "source": "https://github.com/guzzle/guzzle/tree/7.9.2" }, "funding": [ { @@ -758,41 +898,40 @@ "type": "tidelift" } ], - "time": "2021-12-06T18:43:05+00:00" + "time": "2024-07-24T11:22:20+00:00" }, { "name": "guzzlehttp/promises", - "version": "1.5.1", + "version": "2.0.4", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" + "reference": "f9c436286ab2892c7db7be8c8da4ef61ccf7b455" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", + "url": "https://api.github.com/repos/guzzle/promises/zipball/f9c436286ab2892c7db7be8c8da4ef61ccf7b455", + "reference": "f9c436286ab2892c7db7be8c8da4ef61ccf7b455", "shasum": "" }, "require": { - "php": ">=5.5" + "php": "^7.2.5 || ^8.0" }, "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.39 || ^9.6.20" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "1.5-dev" + "bamarni-bin": { + "bin-links": true, + "forward-command": false } }, "autoload": { "psr-4": { "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -826,7 +965,7 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/1.5.1" + "source": "https://github.com/guzzle/promises/tree/2.0.4" }, "funding": [ { @@ -842,26 +981,26 @@ "type": "tidelift" } ], - "time": "2021-10-22T20:56:57+00:00" + "time": "2024-10-17T10:06:22+00:00" }, { "name": "guzzlehttp/psr7", - "version": "2.1.0", + "version": "2.7.0", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72" + "reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/a70f5c95fb43bc83f07c9c948baa0dc1829bf201", + "reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201", "shasum": "" }, "require": { "php": "^7.2.5 || ^8.0", "psr/http-factory": "^1.0", - "psr/http-message": "^1.0", + "psr/http-message": "^1.1 || ^2.0", "ralouphie/getallheaders": "^3.0" }, "provide": { @@ -869,17 +1008,18 @@ "psr/http-message-implementation": "1.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.8 || ^9.3.10" + "bamarni/composer-bin-plugin": "^1.8.2", + "http-interop/http-factory-tests": "0.9.0", + "phpunit/phpunit": "^8.5.39 || ^9.6.20" }, "suggest": { "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "2.1-dev" + "bamarni-bin": { + "bin-links": true, + "forward-command": false } }, "autoload": { @@ -941,7 +1081,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.1.0" + "source": "https://github.com/guzzle/psr7/tree/2.7.0" }, "funding": [ { @@ -957,39 +1097,134 @@ "type": "tidelift" } ], - "time": "2021-10-06T17:43:30+00:00" + "time": "2024-07-18T11:15:46+00:00" + }, + { + "name": "guzzlehttp/uri-template", + "version": "v1.0.4", + "source": { + "type": "git", + "url": "https://github.com/guzzle/uri-template.git", + "reference": "30e286560c137526eccd4ce21b2de477ab0676d2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/uri-template/zipball/30e286560c137526eccd4ce21b2de477ab0676d2", + "reference": "30e286560c137526eccd4ce21b2de477ab0676d2", + "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.4" + }, + "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": "2025-02-03T10:55:03+00:00" }, { "name": "laravel/framework", - "version": "v9.0.1", + "version": "v9.52.20", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63" + "reference": "2bb6835af73fcf0d1d0bfb84af71cef236cb8609" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63", + "url": "https://api.github.com/repos/laravel/framework/zipball/2bb6835af73fcf0d1d0bfb84af71cef236cb8609", + "reference": "2bb6835af73fcf0d1d0bfb84af71cef236cb8609", "shasum": "" }, "require": { - "doctrine/inflector": "^2.0", - "dragonmantank/cron-expression": "^3.1", - "egulias/email-validator": "^3.1", + "brick/math": "^0.9.3|^0.10.2|^0.11", + "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": "*", - "laravel/serializable-closure": "^1.0", - "league/commonmark": "^2.2", - "league/flysystem": "^3.0", + "ext-session": "*", + "ext-tokenizer": "*", + "fruitcake/php-cors": "^1.2", + "guzzlehttp/uri-template": "^1.0", + "laravel/serializable-closure": "^1.2.2", + "league/commonmark": "^2.2.1", + "league/flysystem": "^3.8.0", "monolog/monolog": "^2.0", - "nesbot/carbon": "^2.53.1", + "nesbot/carbon": "^2.62.1", + "nunomaduro/termwind": "^1.13", "php": "^8.0.2", "psr/container": "^1.1.1|^2.0.1", "psr/log": "^1.0|^2.0|^3.0", "psr/simple-cache": "^1.0|^2.0|^3.0", - "ramsey/uuid": "^4.2.2", - "symfony/console": "^6.0", + "ramsey/uuid": "^4.7", + "symfony/console": "^6.0.9", "symfony/error-handler": "^6.0", "symfony/finder": "^6.0", "symfony/http-foundation": "^6.0", @@ -998,8 +1233,9 @@ "symfony/mime": "^6.0", "symfony/process": "^6.0", "symfony/routing": "^6.0", + "symfony/uid": "^6.0", "symfony/var-dumper": "^6.0", - "tijsverkoyen/css-to-inline-styles": "^2.2.2", + "tijsverkoyen/css-to-inline-styles": "^2.2.5", "vlucas/phpdotenv": "^5.4.1", "voku/portable-ascii": "^2.0" }, @@ -1045,46 +1281,55 @@ "illuminate/view": "self.version" }, "require-dev": { - "aws/aws-sdk-php": "^3.198.1", + "ably/ably-php": "^1.0", + "aws/aws-sdk-php": "^3.235.5", "doctrine/dbal": "^2.13.3|^3.1.4", - "fakerphp/faker": "^1.9.2", - "guzzlehttp/guzzle": "^7.2", + "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.4.4", - "orchestra/testbench-core": "^7.0", + "mockery/mockery": "^1.5.1", + "orchestra/testbench-core": "^7.24", "pda/pheanstalk": "^4.0", - "phpstan/phpstan": "^1.0", + "phpstan/phpdoc-parser": "^1.15", + "phpstan/phpstan": "^1.4.7", "phpunit/phpunit": "^9.5.8", - "predis/predis": "^1.1.9", - "symfony/amazon-mailer": "^6.0", - "symfony/cache": "^6.0" + "predis/predis": "^1.1.9|^2.0.2", + "symfony/cache": "^6.0", + "symfony/http-client": "^6.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.198.1).", + "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 (^2.13.3|^3.1.4).", - "ext-bcmath": "Required to use the multiple_of validation rule.", + "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.", + "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.2).", + "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.4.4).", + "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).", - "predis/predis": "Required to use the predis connector (^1.1.9).", + "predis/predis": "Required to use the predis connector (^1.1.9|^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.0).", @@ -1136,24 +1381,25 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2022-02-09T15:00:05+00:00" + "time": "2025-01-31T10:09:38+00:00" }, { "name": "laravel/sanctum", - "version": "v2.14.0", + "version": "v2.15.1", "source": { "type": "git", "url": "https://github.com/laravel/sanctum.git", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9" + "reference": "31fbe6f85aee080c4dc2f9b03dc6dd5d0ee72473" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/0647a87140c7522e75826cffcadb3ad6e01f71e9", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9", + "url": "https://api.github.com/repos/laravel/sanctum/zipball/31fbe6f85aee080c4dc2f9b03dc6dd5d0ee72473", + "reference": "31fbe6f85aee080c4dc2f9b03dc6dd5d0ee72473", "shasum": "" }, "require": { "ext-json": "*", + "illuminate/console": "^6.9|^7.0|^8.0|^9.0", "illuminate/contracts": "^6.9|^7.0|^8.0|^9.0", "illuminate/database": "^6.9|^7.0|^8.0|^9.0", "illuminate/support": "^6.9|^7.0|^8.0|^9.0", @@ -1166,13 +1412,13 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - }, "laravel": { "providers": [ "Laravel\\Sanctum\\SanctumServiceProvider" ] + }, + "branch-alias": { + "dev-master": "2.x-dev" } }, "autoload": { @@ -1200,29 +1446,31 @@ "issues": "https://github.com/laravel/sanctum/issues", "source": "https://github.com/laravel/sanctum" }, - "time": "2022-01-12T15:07:43+00:00" + "time": "2022-04-08T13:39:49+00:00" }, { "name": "laravel/serializable-closure", - "version": "v1.1.0", + "version": "v1.3.7", "source": { "type": "git", "url": "https://github.com/laravel/serializable-closure.git", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63" + "reference": "4f48ade902b94323ca3be7646db16209ec76be3d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/65c9faf50d567b65d81764a44526545689e3fe63", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/4f48ade902b94323ca3be7646db16209ec76be3d", + "reference": "4f48ade902b94323ca3be7646db16209ec76be3d", "shasum": "" }, "require": { "php": "^7.3|^8.0" }, "require-dev": { - "pestphp/pest": "^1.18", - "phpstan/phpstan": "^0.12.98", - "symfony/var-dumper": "^5.3" + "illuminate/support": "^8.0|^9.0|^10.0|^11.0", + "nesbot/carbon": "^2.61|^3.0", + "pestphp/pest": "^1.21.3", + "phpstan/phpstan": "^1.8.2", + "symfony/var-dumper": "^5.4.11|^6.2.0|^7.0.0" }, "type": "library", "extra": { @@ -1259,42 +1507,40 @@ "issues": "https://github.com/laravel/serializable-closure/issues", "source": "https://github.com/laravel/serializable-closure" }, - "time": "2022-02-01T16:29:39+00:00" + "time": "2024-11-14T18:34:49+00:00" }, { "name": "laravel/tinker", - "version": "v2.7.0", + "version": "v2.10.1", "source": { "type": "git", "url": "https://github.com/laravel/tinker.git", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073" + "reference": "22177cc71807d38f2810c6204d8f7183d88a57d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/5f2f9815b7631b9f586a3de7933c25f9327d4073", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073", + "url": "https://api.github.com/repos/laravel/tinker/zipball/22177cc71807d38f2810c6204d8f7183d88a57d3", + "reference": "22177cc71807d38f2810c6204d8f7183d88a57d3", "shasum": "" }, "require": { - "illuminate/console": "^6.0|^7.0|^8.0|^9.0", - "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.0", + "illuminate/console": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", + "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", + "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", "php": "^7.2.5|^8.0", - "psy/psysh": "^0.10.4|^0.11.1", - "symfony/var-dumper": "^4.3.4|^5.0|^6.0" + "psy/psysh": "^0.11.1|^0.12.0", + "symfony/var-dumper": "^4.3.4|^5.0|^6.0|^7.0" }, "require-dev": { "mockery/mockery": "~1.3.3|^1.4.2", - "phpunit/phpunit": "^8.5.8|^9.3.3" + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^8.5.8|^9.3.3|^10.0" }, "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.0)." + "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0)." }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - }, "laravel": { "providers": [ "Laravel\\Tinker\\TinkerServiceProvider" @@ -1325,22 +1571,22 @@ ], "support": { "issues": "https://github.com/laravel/tinker/issues", - "source": "https://github.com/laravel/tinker/tree/v2.7.0" + "source": "https://github.com/laravel/tinker/tree/v2.10.1" }, - "time": "2022-01-10T08:52:49+00:00" + "time": "2025-01-27T14:24:01+00:00" }, { "name": "laravel/ui", - "version": "v3.4.3", + "version": "v3.4.6", "source": { "type": "git", "url": "https://github.com/laravel/ui.git", - "reference": "64a0f43492c00780b2261c56cd7007a4f370d95b" + "reference": "65ec5c03f7fee2c8ecae785795b829a15be48c2c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/ui/zipball/64a0f43492c00780b2261c56cd7007a4f370d95b", - "reference": "64a0f43492c00780b2261c56cd7007a4f370d95b", + "url": "https://api.github.com/repos/laravel/ui/zipball/65ec5c03f7fee2c8ecae785795b829a15be48c2c", + "reference": "65ec5c03f7fee2c8ecae785795b829a15be48c2c", "shasum": "" }, "require": { @@ -1355,13 +1601,13 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - }, "laravel": { "providers": [ "Laravel\\Ui\\UiServiceProvider" ] + }, + "branch-alias": { + "dev-master": "3.x-dev" } }, "autoload": { @@ -1386,22 +1632,22 @@ "ui" ], "support": { - "source": "https://github.com/laravel/ui/tree/v3.4.3" + "source": "https://github.com/laravel/ui/tree/v3.4.6" }, - "time": "2022-02-08T14:19:32+00:00" + "time": "2022-05-20T13:38:08+00:00" }, { "name": "league/commonmark", - "version": "2.2.1", + "version": "2.6.1", "source": { "type": "git", "url": "https://github.com/thephpleague/commonmark.git", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a" + "reference": "d990688c91cedfb69753ffc2512727ec646df2ad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/d990688c91cedfb69753ffc2512727ec646df2ad", + "reference": "d990688c91cedfb69753ffc2512727ec646df2ad", "shasum": "" }, "require": { @@ -1410,24 +1656,27 @@ "php": "^7.4 || ^8.0", "psr/event-dispatcher": "^1.0", "symfony/deprecation-contracts": "^2.1 || ^3.0", - "symfony/polyfill-php80": "^1.15" + "symfony/polyfill-php80": "^1.16" }, "require-dev": { "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.0", - "commonmark/commonmark.js": "0.30.0", + "commonmark/cmark": "0.31.1", + "commonmark/commonmark.js": "0.31.1", "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", - "phpstan/phpstan": "^0.12.88 || ^1.0.0", - "phpunit/phpunit": "^9.5.5", + "michelf/php-markdown": "^1.4 || ^2.0", + "nyholm/psr7": "^1.5", + "phpstan/phpstan": "^1.8.2", + "phpunit/phpunit": "^9.5.21 || ^10.5.9 || ^11.0.0", "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", - "unleashedtech/php-coding-standard": "^3.1", - "vimeo/psalm": "^4.7.3" + "symfony/finder": "^5.3 | ^6.0 | ^7.0", + "symfony/process": "^5.4 | ^6.0 | ^7.0", + "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0 | ^7.0", + "unleashedtech/php-coding-standard": "^3.1.1", + "vimeo/psalm": "^4.24.0 || ^5.0.0" }, "suggest": { "symfony/yaml": "v2.3+ required if using the Front Matter extension" @@ -1435,7 +1684,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.3-dev" + "dev-main": "2.7-dev" } }, "autoload": { @@ -1492,20 +1741,20 @@ "type": "tidelift" } ], - "time": "2022-01-25T14:37:33+00:00" + "time": "2024-12-29T14:10:59+00:00" }, { "name": "league/config", - "version": "v1.1.1", + "version": "v1.2.0", "source": { "type": "git", "url": "https://github.com/thephpleague/config.git", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e" + "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/config/zipball/a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", + "url": "https://api.github.com/repos/thephpleague/config/zipball/754b3604fb2984c71f4af4a9cbe7b57f346ec1f3", + "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3", "shasum": "" }, "require": { @@ -1514,7 +1763,7 @@ "php": "^7.4 || ^8.0" }, "require-dev": { - "phpstan/phpstan": "^0.12.90", + "phpstan/phpstan": "^1.8.2", "phpunit/phpunit": "^9.5.5", "scrutinizer/ocular": "^1.8.1", "unleashedtech/php-coding-standard": "^3.1", @@ -1574,46 +1823,54 @@ "type": "github" } ], - "time": "2021-08-14T12:15:32+00:00" + "time": "2022-12-11T20:36:23+00:00" }, { "name": "league/flysystem", - "version": "3.0.3", + "version": "3.29.1", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06" + "reference": "edc1bb7c86fab0776c3287dbd19b5fa278347319" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9f8b4260031bfef5497477da53dd57b2aaff0e06", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/edc1bb7c86fab0776c3287dbd19b5fa278347319", + "reference": "edc1bb7c86fab0776c3287dbd19b5fa278347319", "shasum": "" }, "require": { - "ext-json": "*", + "league/flysystem-local": "^3.0.0", "league/mime-type-detection": "^1.0.0", "php": "^8.0.2" }, "conflict": { + "async-aws/core": "<1.19.0", + "async-aws/s3": "<1.14.0", + "aws/aws-sdk-php": "3.209.31 || 3.210.0", "guzzlehttp/guzzle": "<7.0", "guzzlehttp/ringphp": "<1.1.1", + "phpseclib/phpseclib": "3.0.15", "symfony/http-client": "<5.2" }, "require-dev": { - "async-aws/s3": "^1.5", - "async-aws/simple-s3": "^1.0", - "aws/aws-sdk-php": "^3.198.1", + "async-aws/s3": "^1.5 || ^2.0", + "async-aws/simple-s3": "^1.1 || ^2.0", + "aws/aws-sdk-php": "^3.295.10", "composer/semver": "^3.0", "ext-fileinfo": "*", "ext-ftp": "*", + "ext-mongodb": "^1.3", "ext-zip": "*", "friendsofphp/php-cs-fixer": "^3.5", "google/cloud-storage": "^1.23", - "phpseclib/phpseclib": "^2.0", - "phpstan/phpstan": "^0.12.26", - "phpunit/phpunit": "^9.5.11", - "sabre/dav": "^4.1" + "guzzlehttp/psr7": "^2.6", + "microsoft/azure-storage-blob": "^1.1", + "mongodb/mongodb": "^1.2", + "phpseclib/phpseclib": "^3.0.36", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^9.5.11|^10.0", + "sabre/dav": "^4.6.0" }, "type": "library", "autoload": { @@ -1647,51 +1904,34 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem/issues", - "source": "https://github.com/thephpleague/flysystem/tree/3.0.3" + "source": "https://github.com/thephpleague/flysystem/tree/3.29.1" }, - "funding": [ - { - "url": "https://offset.earth/frankdejonge", - "type": "custom" - }, - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2022-01-31T19:41:04+00:00" + "time": "2024-10-08T08:58:34+00:00" }, { - "name": "league/mime-type-detection", - "version": "1.9.0", + "name": "league/flysystem-local", + "version": "3.29.0", "source": { "type": "git", - "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69" + "url": "https://github.com/thephpleague/flysystem-local.git", + "reference": "e0e8d52ce4b2ed154148453d321e97c8e931bd27" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/aa70e813a6ad3d1558fc927863d47309b4c23e69", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69", + "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/e0e8d52ce4b2ed154148453d321e97c8e931bd27", + "reference": "e0e8d52ce4b2ed154148453d321e97c8e931bd27", "shasum": "" }, "require": { "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.2", - "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" + "league/flysystem": "^3.0.0", + "league/mime-type-detection": "^1.0.0", + "php": "^8.0.2" }, "type": "library", "autoload": { "psr-4": { - "League\\MimeTypeDetection\\": "src" + "League\\Flysystem\\Local\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -1704,10 +1944,62 @@ "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.9.0" + "description": "Local filesystem adapter for Flysystem.", + "keywords": [ + "Flysystem", + "file", + "files", + "filesystem", + "local" + ], + "support": { + "source": "https://github.com/thephpleague/flysystem-local/tree/3.29.0" + }, + "time": "2024-08-09T21:24:39+00:00" + }, + { + "name": "league/mime-type-detection", + "version": "1.16.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/mime-type-detection.git", + "reference": "2d6702ff215bf922936ccc1ad31007edc76451b9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/2d6702ff215bf922936ccc1ad31007edc76451b9", + "reference": "2d6702ff215bf922936ccc1ad31007edc76451b9", + "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.16.0" }, "funding": [ { @@ -1719,20 +2011,20 @@ "type": "tidelift" } ], - "time": "2021-11-21T11:48:40+00:00" + "time": "2024-09-21T08:32:55+00:00" }, { "name": "monolog/monolog", - "version": "2.3.5", + "version": "2.10.0", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9" + "reference": "5cf826f2991858b54d5c3809bee745560a1042a7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd4380d6fc37626e2f799f29d91195040137eba9", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/5cf826f2991858b54d5c3809bee745560a1042a7", + "reference": "5cf826f2991858b54d5c3809bee745560a1042a7", "shasum": "" }, "require": { @@ -1745,18 +2037,22 @@ "require-dev": { "aws/aws-sdk-php": "^2.4.9 || ^3.0", "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7", - "graylog2/gelf-php": "^1.4.2", + "elasticsearch/elasticsearch": "^7 || ^8", + "ext-json": "*", + "graylog2/gelf-php": "^1.4.2 || ^2@dev", + "guzzlehttp/guzzle": "^7.4", + "guzzlehttp/psr7": "^2.2", "mongodb/mongodb": "^1.8", "php-amqplib/php-amqplib": "~2.4 || ^3", - "php-console/php-console": "^3.1.3", - "phpspec/prophecy": "^1.6.1", - "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5", - "predis/predis": "^1.1", - "rollbar/rollbar": "^1.3", - "ruflin/elastica": ">=0.90@dev", - "swiftmailer/swiftmailer": "^5.3|^6.0" + "phpspec/prophecy": "^1.15", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^8.5.38 || ^9.6.19", + "predis/predis": "^1.1 || ^2.0", + "rollbar/rollbar": "^1.3 || ^2 || ^3", + "ruflin/elastica": "^7", + "swiftmailer/swiftmailer": "^5.3|^6.0", + "symfony/mailer": "^5.4 || ^6", + "symfony/mime": "^5.4 || ^6" }, "suggest": { "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", @@ -1771,7 +2067,6 @@ "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", - "php-console/php-console": "Allow sending log messages to Google Chrome", "rollbar/rollbar": "Allow sending log messages to Rollbar", "ruflin/elastica": "Allow sending log messages to an Elastic Search server" }, @@ -1806,7 +2101,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/2.3.5" + "source": "https://github.com/Seldaek/monolog/tree/2.10.0" }, "funding": [ { @@ -1818,38 +2113,45 @@ "type": "tidelift" } ], - "time": "2021-10-01T21:08:31+00:00" + "time": "2024-11-12T12:43:37+00:00" }, { "name": "nesbot/carbon", - "version": "2.56.0", + "version": "2.73.0", "source": { "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4" + "url": "https://github.com/CarbonPHP/carbon.git", + "reference": "9228ce90e1035ff2f0db84b40ec2e023ed802075" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4", + "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/9228ce90e1035ff2f0db84b40ec2e023ed802075", + "reference": "9228ce90e1035ff2f0db84b40ec2e023ed802075", "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.0", - "doctrine/orm": "^2.7", + "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": "<6", "phpmd/phpmd": "^2.9", "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.54 || ^1.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.14", + "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": [ @@ -1857,10 +2159,6 @@ ], "type": "library", "extra": { - "branch-alias": { - "dev-3.x": "3.x-dev", - "dev-master": "2.x-dev" - }, "laravel": { "providers": [ "Carbon\\Laravel\\ServiceProvider" @@ -1870,6 +2168,10 @@ "includes": [ "extension.neon" ] + }, + "branch-alias": { + "dev-2.x": "2.x-dev", + "dev-master": "3.x-dev" } }, "autoload": { @@ -1906,43 +2208,47 @@ }, "funding": [ { - "url": "https://opencollective.com/Carbon", - "type": "open_collective" + "url": "https://github.com/sponsors/kylekatarnls", + "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", + "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": "2022-01-21T17:08:38+00:00" + "time": "2025-01-08T20:10:23+00:00" }, { "name": "nette/schema", - "version": "v1.2.2", + "version": "v1.3.2", "source": { "type": "git", "url": "https://github.com/nette/schema.git", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df" + "reference": "da801d52f0354f70a638673c4a0f04e16529431d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/9a39cef03a5b34c7de64f551538cbba05c2be5df", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df", + "url": "https://api.github.com/repos/nette/schema/zipball/da801d52f0354f70a638673c4a0f04e16529431d", + "reference": "da801d52f0354f70a638673c4a0f04e16529431d", "shasum": "" }, "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": ">=7.1 <8.2" + "nette/utils": "^4.0", + "php": "8.1 - 8.4" }, "require-dev": { - "nette/tester": "^2.3 || ^2.4", - "phpstan/phpstan-nette": "^0.12", - "tracy/tracy": "^2.7" + "nette/tester": "^2.5.2", + "phpstan/phpstan-nette": "^1.0", + "tracy/tracy": "^2.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2-dev" + "dev-master": "1.3-dev" } }, "autoload": { @@ -1974,34 +2280,36 @@ ], "support": { "issues": "https://github.com/nette/schema/issues", - "source": "https://github.com/nette/schema/tree/v1.2.2" + "source": "https://github.com/nette/schema/tree/v1.3.2" }, - "time": "2021-10-15T11:40:02+00:00" + "time": "2024-10-06T23:10:23+00:00" }, { "name": "nette/utils", - "version": "v3.2.7", + "version": "v4.0.5", "source": { "type": "git", "url": "https://github.com/nette/utils.git", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99" + "reference": "736c567e257dbe0fcf6ce81b4d6dbe05c6899f96" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/0af4e3de4df9f1543534beab255ccf459e7a2c99", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99", + "url": "https://api.github.com/repos/nette/utils/zipball/736c567e257dbe0fcf6ce81b4d6dbe05c6899f96", + "reference": "736c567e257dbe0fcf6ce81b4d6dbe05c6899f96", "shasum": "" }, "require": { - "php": ">=7.2 <8.2" + "php": "8.0 - 8.4" }, "conflict": { - "nette/di": "<3.0.6" + "nette/finder": "<3", + "nette/schema": "<1.2.2" }, "require-dev": { - "nette/tester": "~2.0", + "jetbrains/phpstorm-attributes": "dev-master", + "nette/tester": "^2.5", "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.3" + "tracy/tracy": "^2.9" }, "suggest": { "ext-gd": "to use Image", @@ -2009,13 +2317,12 @@ "ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()", "ext-json": "to use Nette\\Utils\\Json", "ext-mbstring": "to use Strings::lower() etc...", - "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" + "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.2-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -2059,31 +2366,33 @@ ], "support": { "issues": "https://github.com/nette/utils/issues", - "source": "https://github.com/nette/utils/tree/v3.2.7" + "source": "https://github.com/nette/utils/tree/v4.0.5" }, - "time": "2022-01-24T11:29:14+00:00" + "time": "2024-08-07T15:39:19+00:00" }, { "name": "nikic/php-parser", - "version": "v4.13.2", + "version": "v5.4.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" + "reference": "447a020a1f875a434d62f2a401f53b82a396e494" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/447a020a1f875a434d62f2a401f53b82a396e494", + "reference": "447a020a1f875a434d62f2a401f53b82a396e494", "shasum": "" }, "require": { + "ext-ctype": "*", + "ext-json": "*", "ext-tokenizer": "*", - "php": ">=7.0" + "php": ">=7.4" }, "require-dev": { "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + "phpunit/phpunit": "^9.0" }, "bin": [ "bin/php-parse" @@ -2091,7 +2400,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.9-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -2115,35 +2424,124 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.13.2" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.4.0" + }, + "time": "2024-12-30T11:07:19+00:00" + }, + { + "name": "nunomaduro/termwind", + "version": "v1.17.0", + "source": { + "type": "git", + "url": "https://github.com/nunomaduro/termwind.git", + "reference": "5369ef84d8142c1d87e4ec278711d4ece3cbf301" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/5369ef84d8142c1d87e4ec278711d4ece3cbf301", + "reference": "5369ef84d8142c1d87e4ec278711d4ece3cbf301", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": "^8.1", + "symfony/console": "^6.4.15" + }, + "require-dev": { + "illuminate/console": "^10.48.24", + "illuminate/support": "^10.48.24", + "laravel/pint": "^1.18.2", + "pestphp/pest": "^2.36.0", + "pestphp/pest-plugin-mock": "2.0.0", + "phpstan/phpstan": "^1.12.11", + "phpstan/phpstan-strict-rules": "^1.6.1", + "symfony/var-dumper": "^6.4.15", + "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.17.0" }, - "time": "2021-11-30T19:35:32+00:00" + "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": "2024-11-21T10:36:35+00:00" }, { "name": "phpoption/phpoption", - "version": "1.8.1", + "version": "1.9.3", "source": { "type": "git", "url": "https://github.com/schmittjoh/php-option.git", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15" + "reference": "e3fac8b24f56113f7cb96af14958c0dd16330f54" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/e3fac8b24f56113f7cb96af14958c0dd16330f54", + "reference": "e3fac8b24f56113f7cb96af14958c0dd16330f54", "shasum": "" }, "require": { - "php": "^7.0 || ^8.0" + "php": "^7.2.5 || ^8.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.39 || ^9.6.20 || ^10.5.28" }, "type": "library", "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + }, "branch-alias": { - "dev-master": "1.8-dev" + "dev-master": "1.9-dev" } }, "autoload": { @@ -2176,7 +2574,7 @@ ], "support": { "issues": "https://github.com/schmittjoh/php-option/issues", - "source": "https://github.com/schmittjoh/php-option/tree/1.8.1" + "source": "https://github.com/schmittjoh/php-option/tree/1.9.3" }, "funding": [ { @@ -2188,7 +2586,55 @@ "type": "tidelift" } ], - "time": "2021-12-04T23:24:31+00:00" + "time": "2024-07-20T21:41:07+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", @@ -2295,21 +2741,21 @@ }, { "name": "psr/http-client", - "version": "1.0.1", + "version": "1.0.3", "source": { "type": "git", "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", + "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90", "shasum": "" }, "require": { "php": "^7.0 || ^8.0", - "psr/http-message": "^1.0" + "psr/http-message": "^1.0 || ^2.0" }, "type": "library", "extra": { @@ -2329,7 +2775,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interface for HTTP clients", @@ -2341,27 +2787,27 @@ "psr-18" ], "support": { - "source": "https://github.com/php-fig/http-client/tree/master" + "source": "https://github.com/php-fig/http-client" }, - "time": "2020-06-29T06:28:15+00:00" + "time": "2023-09-23T14:17:50+00:00" }, { "name": "psr/http-factory", - "version": "1.0.1", + "version": "1.1.0", "source": { "type": "git", "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a", + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a", "shasum": "" }, "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.0" + "php": ">=7.1", + "psr/http-message": "^1.0 || ^2.0" }, "type": "library", "extra": { @@ -2381,10 +2827,10 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], - "description": "Common interfaces for PSR-7 HTTP message factories", + "description": "PSR-17: Common interfaces for PSR-7 HTTP message factories", "keywords": [ "factory", "http", @@ -2396,31 +2842,31 @@ "response" ], "support": { - "source": "https://github.com/php-fig/http-factory/tree/master" + "source": "https://github.com/php-fig/http-factory" }, - "time": "2019-04-30T12:38:16+00:00" + "time": "2024-04-15T12:06:14+00:00" }, { "name": "psr/http-message", - "version": "1.0.1", + "version": "2.0", "source": { "type": "git", "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": "^7.2 || ^8.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -2435,7 +2881,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interface for HTTP messages", @@ -2449,22 +2895,22 @@ "response" ], "support": { - "source": "https://github.com/php-fig/http-message/tree/master" + "source": "https://github.com/php-fig/http-message/tree/2.0" }, - "time": "2016-08-06T14:39:51+00:00" + "time": "2023-04-04T09:54:51+00:00" }, { "name": "psr/log", - "version": "3.0.0", + "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", - "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001" + "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001", - "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001", + "url": "https://api.github.com/repos/php-fig/log/zipball/f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", + "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", "shasum": "" }, "require": { @@ -2499,9 +2945,9 @@ "psr-3" ], "support": { - "source": "https://github.com/php-fig/log/tree/3.0.0" + "source": "https://github.com/php-fig/log/tree/3.0.2" }, - "time": "2021-07-14T16:46:02+00:00" + "time": "2024-09-11T13:17:53+00:00" }, { "name": "psr/simple-cache", @@ -2556,44 +3002,48 @@ }, { "name": "psy/psysh", - "version": "v0.11.1", + "version": "v0.12.7", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "570292577277f06f590635381a7f761a6cf4f026" + "reference": "d73fa3c74918ef4522bb8a3bf9cab39161c4b57c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/570292577277f06f590635381a7f761a6cf4f026", - "reference": "570292577277f06f590635381a7f761a6cf4f026", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/d73fa3c74918ef4522bb8a3bf9cab39161c4b57c", + "reference": "d73fa3c74918ef4522bb8a3bf9cab39161c4b57c", "shasum": "" }, "require": { "ext-json": "*", "ext-tokenizer": "*", - "nikic/php-parser": "^4.0 || ^3.1", - "php": "^8.0 || ^7.0.8", - "symfony/console": "^6.0 || ^5.0 || ^4.0 || ^3.4", - "symfony/var-dumper": "^6.0 || ^5.0 || ^4.0 || ^3.4" + "nikic/php-parser": "^5.0 || ^4.0", + "php": "^8.0 || ^7.4", + "symfony/console": "^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4", + "symfony/var-dumper": "^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4" + }, + "conflict": { + "symfony/console": "4.4.37 || 5.3.14 || 5.3.15 || 5.4.3 || 5.4.4 || 6.0.3 || 6.0.4" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "3.17.05.02" + "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.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." + "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well." }, "bin": [ "bin/psysh" ], "type": "library", "extra": { + "bamarni-bin": { + "bin-links": false, + "forward-command": false + }, "branch-alias": { - "dev-main": "0.11.x-dev" + "dev-main": "0.12.x-dev" } }, "autoload": { @@ -2625,9 +3075,9 @@ ], "support": { "issues": "https://github.com/bobthecow/psysh/issues", - "source": "https://github.com/bobthecow/psysh/tree/v0.11.1" + "source": "https://github.com/bobthecow/psysh/tree/v0.12.7" }, - "time": "2022-01-03T13:58:38+00:00" + "time": "2024-12-10T01:58:33+00:00" }, { "name": "ralouphie/getallheaders", @@ -2675,42 +3125,49 @@ }, { "name": "ramsey/collection", - "version": "1.2.2", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/ramsey/collection.git", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" + "reference": "3c5990b8a5e0b79cd1cf11c2dc1229e58e93f109" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", + "url": "https://api.github.com/repos/ramsey/collection/zipball/3c5990b8a5e0b79cd1cf11c2dc1229e58e93f109", + "reference": "3c5990b8a5e0b79cd1cf11c2dc1229e58e93f109", "shasum": "" }, "require": { - "php": "^7.3 || ^8", - "symfony/polyfill-php81": "^1.23" + "php": "^8.1" }, "require-dev": { - "captainhook/captainhook": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "ergebnis/composer-normalize": "^2.6", - "fakerphp/faker": "^1.5", - "hamcrest/hamcrest-php": "^2", - "jangregor/phpstan-prophecy": "^0.8", - "mockery/mockery": "^1.3", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1", - "phpstan/phpstan": "^0.12.32", - "phpstan/phpstan-mockery": "^0.12.5", - "phpstan/phpstan-phpunit": "^0.12.11", - "phpunit/phpunit": "^8.5 || ^9", - "psy/psysh": "^0.10.4", - "slevomat/coding-standard": "^6.3", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.4" + "captainhook/plugin-composer": "^5.3", + "ergebnis/composer-normalize": "^2.45", + "fakerphp/faker": "^1.24", + "hamcrest/hamcrest-php": "^2.0", + "jangregor/phpstan-prophecy": "^2.1", + "mockery/mockery": "^1.6", + "php-parallel-lint/php-console-highlighter": "^1.0", + "php-parallel-lint/php-parallel-lint": "^1.4", + "phpspec/prophecy-phpunit": "^2.3", + "phpstan/extension-installer": "^1.4", + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-mockery": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^10.5", + "ramsey/coding-standard": "^2.3", + "ramsey/conventional-commits": "^1.6", + "roave/security-advisories": "dev-latest" }, "type": "library", + "extra": { + "captainhook": { + "force-install": true + }, + "ramsey/conventional-commits": { + "configFile": "conventional-commits.json" + } + }, "autoload": { "psr-4": { "Ramsey\\Collection\\": "src/" @@ -2738,41 +3195,29 @@ ], "support": { "issues": "https://github.com/ramsey/collection/issues", - "source": "https://github.com/ramsey/collection/tree/1.2.2" + "source": "https://github.com/ramsey/collection/tree/2.1.0" }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "time": "2021-10-10T03:01:02+00:00" + "time": "2025-03-02T04:48:29+00:00" }, { "name": "ramsey/uuid", - "version": "4.2.3", + "version": "4.7.6", "source": { "type": "git", "url": "https://github.com/ramsey/uuid.git", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" + "reference": "91039bc1faa45ba123c4328958e620d382ec7088" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/91039bc1faa45ba123c4328958e620d382ec7088", + "reference": "91039bc1faa45ba123c4328958e620d382ec7088", "shasum": "" }, "require": { - "brick/math": "^0.8 || ^0.9", + "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11 || ^0.12", "ext-json": "*", - "php": "^7.2 || ^8.0", - "ramsey/collection": "^1.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php80": "^1.14" + "php": "^8.0", + "ramsey/collection": "^1.2 || ^2.0" }, "replace": { "rhumsaa/uuid": "self.version" @@ -2784,24 +3229,23 @@ "doctrine/annotations": "^1.8", "ergebnis/composer-normalize": "^2.15", "mockery/mockery": "^1.3", - "moontoast/math": "^1.1", "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.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-mockery": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-mockery": "^1.1", + "phpstan/phpstan-phpunit": "^1.1", "phpunit/phpunit": "^8.5 || ^9", - "slevomat/coding-standard": "^7.0", + "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-ctype": "Enables faster processing of character classification using ctype functions.", "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", @@ -2809,20 +3253,17 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "4.x-dev" - }, "captainhook": { "force-install": true } }, "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - }, "files": [ "src/functions.php" - ] + ], + "psr-4": { + "Ramsey\\Uuid\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2836,7 +3277,7 @@ ], "support": { "issues": "https://github.com/ramsey/uuid/issues", - "source": "https://github.com/ramsey/uuid/tree/4.2.3" + "source": "https://github.com/ramsey/uuid/tree/4.7.6" }, "funding": [ { @@ -2848,27 +3289,28 @@ "type": "tidelift" } ], - "time": "2021-09-25T23:10:38+00:00" + "time": "2024-04-27T21:32:50+00:00" }, { "name": "symfony/console", - "version": "v6.0.3", + "version": "v6.4.17", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490" + "reference": "799445db3f15768ecc382ac5699e6da0520a0a04" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/22e8efd019c3270c4f79376234a3f8752cd25490", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490", + "url": "https://api.github.com/repos/symfony/console/zipball/799445db3f15768ecc382ac5699e6da0520a0a04", + "reference": "799445db3f15768ecc382ac5699e6da0520a0a04", "shasum": "" }, "require": { - "php": ">=8.0.2", + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.4|^6.0" + "symfony/service-contracts": "^2.5|^3", + "symfony/string": "^5.4|^6.0|^7.0" }, "conflict": { "symfony/dependency-injection": "<5.4", @@ -2882,18 +3324,16 @@ }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" + "symfony/config": "^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": { @@ -2922,12 +3362,12 @@ "homepage": "https://symfony.com", "keywords": [ "cli", - "command line", + "command-line", "console", "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.0.3" + "source": "https://github.com/symfony/console/tree/v6.4.17" }, "funding": [ { @@ -2943,24 +3383,24 @@ "type": "tidelift" } ], - "time": "2022-01-26T17:23:29+00:00" + "time": "2024-12-07T12:07:30+00:00" }, { "name": "symfony/css-selector", - "version": "v6.0.3", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a" + "reference": "601a5ce9aaad7bf10797e3663faefce9e26c24e2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/1955d595c12c111629cc814d3f2a2ff13580508a", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/601a5ce9aaad7bf10797e3663faefce9e26c24e2", + "reference": "601a5ce9aaad7bf10797e3663faefce9e26c24e2", "shasum": "" }, "require": { - "php": ">=8.0.2" + "php": ">=8.2" }, "type": "library", "autoload": { @@ -2992,7 +3432,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v6.0.3" + "source": "https://github.com/symfony/css-selector/tree/v7.2.0" }, "funding": [ { @@ -3008,33 +3448,33 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:55:41+00:00" + "time": "2024-09-25T14:21:43+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v3.0.0", + "version": "v3.5.1", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced" + "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", + "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", "shasum": "" }, "require": { - "php": ">=8.0.2" + "php": ">=8.1" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.5-dev" } }, "autoload": { @@ -3059,7 +3499,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.0.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.1" }, "funding": [ { @@ -3075,31 +3515,35 @@ "type": "tidelift" } ], - "time": "2021-11-01T23:48:49+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/error-handler", - "version": "v6.0.3", + "version": "v6.4.19", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b" + "reference": "3d4e55cd2b8f1979a65eba9ab749d6466c316f71" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/20343b3bad7ebafa38138ddcb97290a24722b57b", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/3d4e55cd2b8f1979a65eba9ab749d6466c316f71", + "reference": "3d4e55cd2b8f1979a65eba9ab749d6466c316f71", "shasum": "" }, "require": { - "php": ">=8.0.2", + "php": ">=8.1", "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" + "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.1|^3", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/serializer": "^5.4|^6.0|^7.0" }, "bin": [ "Resources/bin/patch-type-declarations" @@ -3130,7 +3574,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.0.3" + "source": "https://github.com/symfony/error-handler/tree/v6.4.19" }, "funding": [ { @@ -3146,28 +3590,29 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:55:41+00:00" + "time": "2025-02-02T20:16:33+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v6.0.3", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934" + "reference": "910c5db85a5356d0fea57680defec4e99eb9c8c1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6472ea2dd415e925b90ca82be64b8bc6157f3934", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/910c5db85a5356d0fea57680defec4e99eb9c8c1", + "reference": "910c5db85a5356d0fea57680defec4e99eb9c8c1", "shasum": "" }, "require": { - "php": ">=8.0.2", - "symfony/event-dispatcher-contracts": "^2|^3" + "php": ">=8.2", + "symfony/event-dispatcher-contracts": "^2.5|^3" }, "conflict": { - "symfony/dependency-injection": "<5.4" + "symfony/dependency-injection": "<6.4", + "symfony/service-contracts": "<2.5" }, "provide": { "psr/event-dispatcher-implementation": "1.0", @@ -3175,17 +3620,13 @@ }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^5.4|^6.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/error-handler": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/stopwatch": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -3213,7 +3654,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.3" + "source": "https://github.com/symfony/event-dispatcher/tree/v7.2.0" }, "funding": [ { @@ -3229,37 +3670,34 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:55:41+00:00" + "time": "2024-09-25T14:21:43+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.0.0", + "version": "v3.5.1", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385" + "reference": "7642f5e970b672283b7823222ae8ef8bbc160b9f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/aa5422287b75594b90ee9cd807caf8f0df491385", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/7642f5e970b672283b7823222ae8ef8bbc160b9f", + "reference": "7642f5e970b672283b7823222ae8ef8bbc160b9f", "shasum": "" }, "require": { - "php": ">=8.0.2", + "php": ">=8.1", "psr/event-dispatcher": "^1" }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.5-dev" } }, "autoload": { @@ -3292,7 +3730,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.0.0" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.5.1" }, "funding": [ { @@ -3308,24 +3746,27 @@ "type": "tidelift" } ], - "time": "2021-07-15T12:33:35+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/finder", - "version": "v6.0.3", + "version": "v6.4.17", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430" + "reference": "1d0e8266248c5d9ab6a87e3789e6dc482af3c9c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/8661b74dbabc23223f38c9b99d3f8ade71170430", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430", + "url": "https://api.github.com/repos/symfony/finder/zipball/1d0e8266248c5d9ab6a87e3789e6dc482af3c9c7", + "reference": "1d0e8266248c5d9ab6a87e3789e6dc482af3c9c7", "shasum": "" }, "require": { - "php": ">=8.0.2" + "php": ">=8.1" + }, + "require-dev": { + "symfony/filesystem": "^6.0|^7.0" }, "type": "library", "autoload": { @@ -3353,7 +3794,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v6.0.3" + "source": "https://github.com/symfony/finder/tree/v6.4.17" }, "funding": [ { @@ -3369,35 +3810,40 @@ "type": "tidelift" } ], - "time": "2022-01-26T17:23:29+00:00" + "time": "2024-12-29T13:51:37+00:00" }, { "name": "symfony/http-foundation", - "version": "v6.0.3", + "version": "v6.4.18", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1" + "reference": "d0492d6217e5ab48f51fca76f64cf8e78919d0db" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ad157299ced81a637fade1efcadd688d6deba5c1", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/d0492d6217e5ab48f51fca76f64cf8e78919d0db", + "reference": "d0492d6217e5ab48f51fca76f64cf8e78919d0db", "shasum": "" }, "require": { - "php": ">=8.0.2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.1", + "symfony/polyfill-php83": "^1.27" }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/cache": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0" + "conflict": { + "symfony/cache": "<6.4.12|>=7.0,<7.1.5" }, - "suggest": { - "symfony/mime": "To use the file extension guesser" + "require-dev": { + "doctrine/dbal": "^2.13.1|^3|^4", + "predis/predis": "^1.1|^2.0", + "symfony/cache": "^6.4.12|^7.1.5", + "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": { @@ -3425,7 +3871,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.0.3" + "source": "https://github.com/symfony/http-foundation/tree/v6.4.18" }, "funding": [ { @@ -3441,44 +3887,48 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:55:41+00:00" + "time": "2025-01-09T15:48:56+00:00" }, { "name": "symfony/http-kernel", - "version": "v6.0.4", + "version": "v6.4.19", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b" + "reference": "88f2c9f7feff86bb7b9105c5151bc2c1404cd64c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/88f2c9f7feff86bb7b9105c5151bc2c1404cd64c", + "reference": "88f2c9f7feff86bb7b9105c5151bc2c1404cd64c", "shasum": "" }, "require": { - "php": ">=8.0.2", + "php": ">=8.1", "psr/log": "^1|^2|^3", - "symfony/error-handler": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", + "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": "<5.4", + "symfony/config": "<6.1", "symfony/console": "<5.4", - "symfony/dependency-injection": "<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": "<5.4", + "symfony/validator": "<6.4", + "symfony/var-dumper": "<6.3", "twig/twig": "<2.13" }, "provide": { @@ -3486,28 +3936,29 @@ }, "require-dev": { "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/process": "^5.4|^6.0", - "symfony/routing": "^5.4|^6.0", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", + "symfony/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.4.4|^7.0.4", + "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-dumper": "^5.4|^6.4|^7.0", + "symfony/var-exporter": "^6.2|^7.0", "twig/twig": "^2.13|^3.0.4" }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, "type": "library", "autoload": { "psr-4": { @@ -3534,7 +3985,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v6.0.4" + "source": "https://github.com/symfony/http-kernel/tree/v6.4.19" }, "funding": [ { @@ -3550,37 +4001,43 @@ "type": "tidelift" } ], - "time": "2022-01-29T18:12:46+00:00" + "time": "2025-02-26T10:51:37+00:00" }, { "name": "symfony/mailer", - "version": "v6.0.3", + "version": "v6.4.18", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82" + "reference": "e93a6ae2767d7f7578c2b7961d9d8e27580b2b11" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82", + "url": "https://api.github.com/repos/symfony/mailer/zipball/e93a6ae2767d7f7578c2b7961d9d8e27580b2b11", + "reference": "e93a6ae2767d7f7578c2b7961d9d8e27580b2b11", "shasum": "" }, "require": { - "egulias/email-validator": "^2.1.10|^3", - "php": ">=8.0.2", + "egulias/email-validator": "^2.1.10|^3|^4", + "php": ">=8.1", "psr/event-dispatcher": "^1", "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0", - "symfony/service-contracts": "^1.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-kernel": "<5.4" + "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/http-client-contracts": "^1.1|^2|^3", - "symfony/messenger": "^5.4|^6.0" + "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": { @@ -3608,7 +4065,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v6.0.3" + "source": "https://github.com/symfony/mailer/tree/v6.4.18" }, "funding": [ { @@ -3624,24 +4081,25 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:55:41+00:00" + "time": "2025-01-24T15:27:15+00:00" }, { "name": "symfony/mime", - "version": "v6.0.3", + "version": "v6.4.19", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a" + "reference": "ac537b6c55ccc2c749f3c979edfa9ec14aaed4f3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/2cd9601efd040e56f43360daa68f3c6b0534923a", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a", + "url": "https://api.github.com/repos/symfony/mime/zipball/ac537b6c55ccc2c749f3c979edfa9ec14aaed4f3", + "reference": "ac537b6c55ccc2c749f3c979edfa9ec14aaed4f3", "shasum": "" }, "require": { - "php": ">=8.0.2", + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-intl-idn": "^1.10", "symfony/polyfill-mbstring": "^1.0" }, @@ -3649,15 +4107,18 @@ "egulias/email-validator": "~3.0.0", "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", - "symfony/mailer": "<5.4" + "symfony/mailer": "<5.4", + "symfony/serializer": "<6.4.3|>7.0,<7.0.3" }, "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", + "egulias/email-validator": "^2.1.10|^3.1|^4", + "league/html-to-markdown": "^5.0", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.4|^7.0", + "symfony/property-access": "^5.4|^6.0|^7.0", + "symfony/property-info": "^5.4|^6.0|^7.0", + "symfony/serializer": "^6.4.3|^7.0.3" }, "type": "library", "autoload": { @@ -3689,7 +4150,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v6.0.3" + "source": "https://github.com/symfony/mime/tree/v6.4.19" }, "funding": [ { @@ -3705,24 +4166,24 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:55:41+00:00" + "time": "2025-02-17T21:23:52+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.24.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638", + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "provide": { "ext-ctype": "*" @@ -3732,21 +4193,18 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3771,7 +4229,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.24.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.31.0" }, "funding": [ { @@ -3787,36 +4245,33 @@ "type": "tidelift" } ], - "time": "2021-10-20T20:35:02+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.24.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" + "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", + "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "suggest": { "ext-intl": "For best performance" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -3852,7 +4307,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.24.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.31.0" }, "funding": [ { @@ -3868,38 +4323,34 @@ "type": "tidelift" } ], - "time": "2021-11-23T21:10:46+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.24.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44" + "reference": "c36586dcf89a12315939e00ec9b4474adcb1d773" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/c36586dcf89a12315939e00ec9b4474adcb1d773", + "reference": "c36586dcf89a12315939e00ec9b4474adcb1d773", "shasum": "" }, "require": { - "php": ">=7.1", - "symfony/polyfill-intl-normalizer": "^1.10", - "symfony/polyfill-php72": "^1.10" + "php": ">=7.2", + "symfony/polyfill-intl-normalizer": "^1.10" }, "suggest": { "ext-intl": "For best performance" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -3939,7 +4390,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.24.0" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.31.0" }, "funding": [ { @@ -3955,36 +4406,33 @@ "type": "tidelift" } ], - "time": "2021-09-14T14:02:44+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.24.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" + "reference": "3833d7255cc303546435cb650316bff708a1c75c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c", + "reference": "3833d7255cc303546435cb650316bff708a1c75c", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "suggest": { "ext-intl": "For best performance" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -4023,7 +4471,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.24.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.31.0" }, "funding": [ { @@ -4039,24 +4487,24 @@ "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.24.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" + "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/85181ba99b2345b0ef10ce42ecac37612d9fd341", + "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "provide": { "ext-mbstring": "*" @@ -4066,21 +4514,18 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4106,7 +4551,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.24.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.31.0" }, "funding": [ { @@ -4122,33 +4567,30 @@ "type": "tidelift" } ], - "time": "2021-11-30T18:21:41+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { - "name": "symfony/polyfill-php72", - "version": "v1.24.0", + "name": "symfony/polyfill-php80", + "version": "v1.31.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", + "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -4156,14 +4598,21 @@ "bootstrap.php" ], "psr-4": { - "Symfony\\Polyfill\\Php72\\": "" - } + "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" @@ -4173,7 +4622,7 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ "compatibility", @@ -4182,7 +4631,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php72/tree/v1.24.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.31.0" }, "funding": [ { @@ -4198,33 +4647,30 @@ "type": "tidelift" } ], - "time": "2021-05-27T09:17:38+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { - "name": "symfony/polyfill-php80", - "version": "v1.24.0", + "name": "symfony/polyfill-php83", + "version": "v1.31.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9" + "url": "https://github.com/symfony/polyfill-php83.git", + "reference": "2fb86d65e2d424369ad2905e83b236a8805ba491" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/2fb86d65e2d424369ad2905e83b236a8805ba491", + "reference": "2fb86d65e2d424369ad2905e83b236a8805ba491", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -4232,7 +4678,7 @@ "bootstrap.php" ], "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" + "Symfony\\Polyfill\\Php83\\": "" }, "classmap": [ "Resources/stubs" @@ -4243,10 +4689,6 @@ "MIT" ], "authors": [ - { - "name": "Ion Bazan", - "email": "ion.bazan@gmail.com" - }, { "name": "Nicolas Grekas", "email": "p@tchwork.com" @@ -4256,7 +4698,7 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ "compatibility", @@ -4265,7 +4707,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.24.0" + "source": "https://github.com/symfony/polyfill-php83/tree/v1.31.0" }, "funding": [ { @@ -4281,33 +4723,36 @@ "type": "tidelift" } ], - "time": "2021-09-13T13:58:33+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { - "name": "symfony/polyfill-php81", - "version": "v1.24.0", + "name": "symfony/polyfill-uuid", + "version": "v1.31.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" + "url": "https://github.com/symfony/polyfill-uuid.git", + "reference": "21533be36c24be3f4b1669c4725c7d1d2bab4ae2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", + "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/21533be36c24be3f4b1669c4725c7d1d2bab4ae2", + "reference": "21533be36c24be3f4b1669c4725c7d1d2bab4ae2", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" + }, + "provide": { + "ext-uuid": "*" + }, + "suggest": { + "ext-uuid": "For best performance" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -4315,11 +4760,8 @@ "bootstrap.php" ], "psr-4": { - "Symfony\\Polyfill\\Php81\\": "" - }, - "classmap": [ - "Resources/stubs" - ] + "Symfony\\Polyfill\\Uuid\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4327,24 +4769,24 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Grégoire Pineau", + "email": "lyrixx@lyrixx.info" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", + "description": "Symfony polyfill for uuid functions", "homepage": "https://symfony.com", "keywords": [ "compatibility", "polyfill", "portable", - "shim" + "uuid" ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.24.0" + "source": "https://github.com/symfony/polyfill-uuid/tree/v1.31.0" }, "funding": [ { @@ -4360,24 +4802,24 @@ "type": "tidelift" } ], - "time": "2021-09-13T13:58:11+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/process", - "version": "v6.0.3", + "version": "v6.4.19", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af" + "reference": "7a1c12e87b08ec9c97abdd188c9b3f5a40e37fc3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/298ed357274c1868c20a0061df256a1250a6c4af", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af", + "url": "https://api.github.com/repos/symfony/process/zipball/7a1c12e87b08ec9c97abdd188c9b3f5a40e37fc3", + "reference": "7a1c12e87b08ec9c97abdd188c9b3f5a40e37fc3", "shasum": "" }, "require": { - "php": ">=8.0.2" + "php": ">=8.1" }, "type": "library", "autoload": { @@ -4405,7 +4847,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v6.0.3" + "source": "https://github.com/symfony/process/tree/v6.4.19" }, "funding": [ { @@ -4421,45 +4863,40 @@ "type": "tidelift" } ], - "time": "2022-01-26T17:23:29+00:00" + "time": "2025-02-04T13:35:48+00:00" }, { "name": "symfony/routing", - "version": "v6.0.3", + "version": "v6.4.18", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099" + "reference": "e9bfc94953019089acdfb9be51c1b9142c4afa68" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", + "url": "https://api.github.com/repos/symfony/routing/zipball/e9bfc94953019089acdfb9be51c1b9142c4afa68", + "reference": "e9bfc94953019089acdfb9be51c1b9142c4afa68", "shasum": "" }, "require": { - "php": ">=8.0.2" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3" }, "conflict": { "doctrine/annotations": "<1.12", - "symfony/config": "<5.4", + "symfony/config": "<6.2", "symfony/dependency-injection": "<5.4", "symfony/yaml": "<5.4" }, "require-dev": { - "doctrine/annotations": "^1.12", + "doctrine/annotations": "^1.12|^2", "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" + "symfony/config": "^6.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": { @@ -4493,7 +4930,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v6.0.3" + "source": "https://github.com/symfony/routing/tree/v6.4.18" }, "funding": [ { @@ -4509,46 +4946,47 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:55:41+00:00" + "time": "2025-01-09T08:51:02+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.0.0", + "version": "v3.5.1", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603" + "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/36715ebf9fb9db73db0cb24263c79077c6fe8603", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/e53260aabf78fb3d63f8d79d69ece59f80d5eda0", + "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0", "shasum": "" }, "require": { - "php": ">=8.0.2", - "psr/container": "^2.0" + "php": ">=8.1", + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.5|^3" }, "conflict": { "ext-psr": "<1.1|>=2" }, - "suggest": { - "symfony/service-implementation": "" - }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.5-dev" } }, "autoload": { "psr-4": { "Symfony\\Contracts\\Service\\": "" - } + }, + "exclude-from-classmap": [ + "/Test/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4575,7 +5013,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.0.0" + "source": "https://github.com/symfony/service-contracts/tree/v3.5.1" }, "funding": [ { @@ -4591,46 +5029,48 @@ "type": "tidelift" } ], - "time": "2021-11-04T17:53:12+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/string", - "version": "v6.0.3", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2" + "reference": "446e0d146f991dde3e73f45f2c97a9faad773c82" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/522144f0c4c004c80d56fa47e40e17028e2eefc2", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2", + "url": "https://api.github.com/repos/symfony/string/zipball/446e0d146f991dde3e73f45f2c97a9faad773c82", + "reference": "446e0d146f991dde3e73f45f2c97a9faad773c82", "shasum": "" }, "require": { - "php": ">=8.0.2", + "php": ">=8.2", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-intl-grapheme": "~1.0", "symfony/polyfill-intl-normalizer": "~1.0", "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "symfony/translation-contracts": "<2.0" + "symfony/translation-contracts": "<2.5" }, "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/translation-contracts": "^2.0|^3.0", - "symfony/var-exporter": "^5.4|^6.0" + "symfony/emoji": "^7.1", + "symfony/error-handler": "^6.4|^7.0", + "symfony/http-client": "^6.4|^7.0", + "symfony/intl": "^6.4|^7.0", + "symfony/translation-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^6.4|^7.0" }, "type": "library", "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, "files": [ "Resources/functions.php" ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, "exclude-from-classmap": [ "/Tests/" ] @@ -4660,7 +5100,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.0.3" + "source": "https://github.com/symfony/string/tree/v7.2.0" }, "funding": [ { @@ -4676,32 +5116,35 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:55:41+00:00" + "time": "2024-11-13T13:31:26+00:00" }, { "name": "symfony/translation", - "version": "v6.0.3", + "version": "v6.4.19", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d" + "reference": "3b9bf9f33997c064885a7bfc126c14b9daa0e00e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/71bb15335798f8c4da110911bcf2d2fead7a430d", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d", + "url": "https://api.github.com/repos/symfony/translation/zipball/3b9bf9f33997c064885a7bfc126c14b9daa0e00e", + "reference": "3b9bf9f33997c064885a7bfc126c14b9daa0e00e", "shasum": "" }, "require": { - "php": ">=8.0.2", + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.3|^3.0" + "symfony/translation-contracts": "^2.5|^3.0" }, "conflict": { "symfony/config": "<5.4", "symfony/console": "<5.4", "symfony/dependency-injection": "<5.4", + "symfony/http-client-contracts": "<2.5", "symfony/http-kernel": "<5.4", + "symfony/service-contracts": "<2.5", "symfony/twig-bundle": "<5.4", "symfony/yaml": "<5.4" }, @@ -4709,22 +5152,19 @@ "symfony/translation-implementation": "2.3|3.0" }, "require-dev": { + "nikic/php-parser": "^4.18|^5.0", "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", + "symfony/config": "^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/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" + "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": { @@ -4755,7 +5195,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v6.0.3" + "source": "https://github.com/symfony/translation/tree/v6.4.19" }, "funding": [ { @@ -4771,42 +5211,42 @@ "type": "tidelift" } ], - "time": "2022-01-07T00:29:03+00:00" + "time": "2025-02-13T10:18:43+00:00" }, { "name": "symfony/translation-contracts", - "version": "v3.0.0", + "version": "v3.5.1", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77" + "reference": "4667ff3bd513750603a09c8dedbea942487fb07c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/4667ff3bd513750603a09c8dedbea942487fb07c", + "reference": "4667ff3bd513750603a09c8dedbea942487fb07c", "shasum": "" }, "require": { - "php": ">=8.0.2" - }, - "suggest": { - "symfony/translation-implementation": "" + "php": ">=8.1" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.5-dev" } }, "autoload": { "psr-4": { "Symfony\\Contracts\\Translation\\": "" - } + }, + "exclude-from-classmap": [ + "/Test/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4833,7 +5273,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.0.0" + "source": "https://github.com/symfony/translation-contracts/tree/v3.5.1" }, "funding": [ { @@ -4849,42 +5289,113 @@ "type": "tidelift" } ], - "time": "2021-09-07T12:43:40+00:00" + "time": "2024-09-25T14:20:29+00:00" + }, + { + "name": "symfony/uid", + "version": "v6.4.13", + "source": { + "type": "git", + "url": "https://github.com/symfony/uid.git", + "reference": "18eb207f0436a993fffbdd811b5b8fa35fa5e007" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/uid/zipball/18eb207f0436a993fffbdd811b5b8fa35fa5e007", + "reference": "18eb207f0436a993fffbdd811b5b8fa35fa5e007", + "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.13" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-25T14:18:03+00:00" }, { "name": "symfony/var-dumper", - "version": "v6.0.3", + "version": "v6.4.18", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834" + "reference": "4ad10cf8b020e77ba665305bb7804389884b4837" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7b701676fc64f9ef11f9b4870f16b48f66be4834", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/4ad10cf8b020e77ba665305bb7804389884b4837", + "reference": "4ad10cf8b020e77ba665305bb7804389884b4837", "shasum": "" }, "require": { - "php": ">=8.0.2", + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "phpunit/phpunit": "<5.4.3", "symfony/console": "<5.4" }, "require-dev": { "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", + "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" }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, "bin": [ "Resources/bin/var-dump-server" ], @@ -4921,7 +5432,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.0.3" + "source": "https://github.com/symfony/var-dumper/tree/v6.4.18" }, "funding": [ { @@ -4937,35 +5448,37 @@ "type": "tidelift" } ], - "time": "2022-01-17T16:30:44+00:00" + "time": "2025-01-17T11:26:11+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.4", + "version": "v2.3.0", "source": { "type": "git", "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" + "reference": "0d72ac1c00084279c1816675284073c5a337c20d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", + "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/0d72ac1c00084279c1816675284073c5a337c20d", + "reference": "0d72ac1c00084279c1816675284073c5a337c20d", "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" + "php": "^7.4 || ^8.0", + "symfony/css-selector": "^5.4 || ^6.0 || ^7.0" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" + "phpstan/phpstan": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^8.5.21 || ^9.5.10" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.2.x-dev" + "dev-master": "2.x-dev" } }, "autoload": { @@ -4988,45 +5501,49 @@ "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", "support": { "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" + "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/v2.3.0" }, - "time": "2021-12-08T09:12:39+00:00" + "time": "2024-12-21T16:25:41+00:00" }, { "name": "vlucas/phpdotenv", - "version": "v5.4.1", + "version": "v5.6.1", "source": { "type": "git", "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" + "reference": "a59a13791077fe3d44f90e7133eb68e7d22eaff2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/a59a13791077fe3d44f90e7133eb68e7d22eaff2", + "reference": "a59a13791077fe3d44f90e7133eb68e7d22eaff2", "shasum": "" }, "require": { "ext-pcre": "*", - "graham-campbell/result-type": "^1.0.2", - "php": "^7.1.3 || ^8.0", - "phpoption/phpoption": "^1.8", - "symfony/polyfill-ctype": "^1.23", - "symfony/polyfill-mbstring": "^1.23.1", - "symfony/polyfill-php80": "^1.23.1" + "graham-campbell/result-type": "^1.1.3", + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9.3", + "symfony/polyfill-ctype": "^1.24", + "symfony/polyfill-mbstring": "^1.24", + "symfony/polyfill-php80": "^1.24" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", + "bamarni/composer-bin-plugin": "^1.8.2", "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" + "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" }, "suggest": { "ext-filter": "Required to use the boolean validator." }, "type": "library", "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + }, "branch-alias": { - "dev-master": "5.4-dev" + "dev-master": "5.6-dev" } }, "autoload": { @@ -5058,7 +5575,7 @@ ], "support": { "issues": "https://github.com/vlucas/phpdotenv/issues", - "source": "https://github.com/vlucas/phpdotenv/tree/v5.4.1" + "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.1" }, "funding": [ { @@ -5070,20 +5587,20 @@ "type": "tidelift" } ], - "time": "2021-12-12T23:22:04+00:00" + "time": "2024-07-20T21:52:34+00:00" }, { "name": "voku/portable-ascii", - "version": "2.0.0", + "version": "2.0.3", "source": { "type": "git", "url": "https://github.com/voku/portable-ascii.git", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89" + "reference": "b1d923f88091c6bf09699efcd7c8a1b1bfd7351d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/9bd89e83cecdf8c37b64909454249eaed98b2c89", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89", + "url": "https://api.github.com/repos/voku/portable-ascii/zipball/b1d923f88091c6bf09699efcd7c8a1b1bfd7351d", + "reference": "b1d923f88091c6bf09699efcd7c8a1b1bfd7351d", "shasum": "" }, "require": { @@ -5108,7 +5625,7 @@ "authors": [ { "name": "Lars Moelleken", - "homepage": "http://www.moelleken.org/" + "homepage": "https://www.moelleken.org/" } ], "description": "Portable ASCII library - performance optimized (ascii) string functions for php.", @@ -5120,7 +5637,7 @@ ], "support": { "issues": "https://github.com/voku/portable-ascii/issues", - "source": "https://github.com/voku/portable-ascii/tree/2.0.0" + "source": "https://github.com/voku/portable-ascii/tree/2.0.3" }, "funding": [ { @@ -5144,25 +5661,25 @@ "type": "tidelift" } ], - "time": "2022-01-24T18:59:03+00:00" + "time": "2024-11-21T01:49:47+00:00" }, { "name": "webmozart/assert", - "version": "1.10.0", + "version": "1.11.0", "source": { "type": "git", "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" + "ext-ctype": "*", + "php": "^7.2 || ^8.0" }, "conflict": { "phpstan/phpstan": "<0.12.20", @@ -5200,37 +5717,38 @@ ], "support": { "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/1.10.0" + "source": "https://github.com/webmozarts/assert/tree/1.11.0" }, - "time": "2021-03-09T10:59:23+00:00" + "time": "2022-06-03T18:03:27+00:00" } ], "packages-dev": [ { "name": "doctrine/instantiator", - "version": "1.4.0", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" + "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", + "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" + "php": "^8.1" }, "require-dev": { - "doctrine/coding-standard": "^8.0", + "doctrine/coding-standard": "^11", "ext-pdo": "*", "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + "phpbench/phpbench": "^1.2", + "phpstan/phpstan": "^1.9.4", + "phpstan/phpstan-phpunit": "^1.3", + "phpunit/phpunit": "^9.5.27", + "vimeo/psalm": "^5.4" }, "type": "library", "autoload": { @@ -5257,7 +5775,7 @@ ], "support": { "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.0" + "source": "https://github.com/doctrine/instantiator/tree/2.0.0" }, "funding": [ { @@ -5273,77 +5791,24 @@ "type": "tidelift" } ], - "time": "2020-11-10T18:47:58+00:00" - }, - { - "name": "facade/ignition-contracts", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/facade/ignition-contracts.git", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^v2.15.8", - "phpunit/phpunit": "^9.3.11", - "vimeo/psalm": "^3.17.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Facade\\IgnitionContracts\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://flareapp.io", - "role": "Developer" - } - ], - "description": "Solution contracts for Ignition", - "homepage": "https://github.com/facade/ignition-contracts", - "keywords": [ - "contracts", - "flare", - "ignition" - ], - "support": { - "issues": "https://github.com/facade/ignition-contracts/issues", - "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" - }, - "time": "2020-10-16T08:27:54+00:00" + "time": "2022-12-30T00:23:10+00:00" }, { "name": "fakerphp/faker", - "version": "v1.19.0", + "version": "v1.24.1", "source": { "type": "git", "url": "https://github.com/FakerPHP/Faker.git", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75" + "reference": "e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75", + "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5", + "reference": "e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0", + "php": "^7.4 || ^8.0", "psr/container": "^1.0 || ^2.0", "symfony/deprecation-contracts": "^2.2 || ^3.0" }, @@ -5354,7 +5819,8 @@ "bamarni/composer-bin-plugin": "^1.4.1", "doctrine/persistence": "^1.3 || ^2.0", "ext-intl": "*", - "symfony/phpunit-bridge": "^4.4 || ^5.2" + "phpunit/phpunit": "^9.5.26", + "symfony/phpunit-bridge": "^5.4.16" }, "suggest": { "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", @@ -5364,11 +5830,6 @@ "ext-mbstring": "Required for multibyte Unicode string functionality." }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.19-dev" - } - }, "autoload": { "psr-4": { "Faker\\": "src/Faker/" @@ -5391,32 +5852,32 @@ ], "support": { "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0" + "source": "https://github.com/FakerPHP/Faker/tree/v1.24.1" }, - "time": "2022-02-02T17:38:57+00:00" + "time": "2024-11-21T13:46:39+00:00" }, { "name": "filp/whoops", - "version": "2.14.5", + "version": "2.17.0", "source": { "type": "git", "url": "https://github.com/filp/whoops.git", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" + "reference": "075bc0c26631110584175de6523ab3f1652eb28e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", + "url": "https://api.github.com/repos/filp/whoops/zipball/075bc0c26631110584175de6523ab3f1652eb28e", + "reference": "075bc0c26631110584175de6523ab3f1652eb28e", "shasum": "" }, "require": { - "php": "^5.5.9 || ^7.0 || ^8.0", + "php": "^7.1 || ^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" + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^7.5.20 || ^8.5.8 || ^9.3.3", + "symfony/var-dumper": "^4.0 || ^5.0" }, "suggest": { "symfony/var-dumper": "Pretty print complex values better with var-dumper available", @@ -5456,7 +5917,7 @@ ], "support": { "issues": "https://github.com/filp/whoops/issues", - "source": "https://github.com/filp/whoops/tree/2.14.5" + "source": "https://github.com/filp/whoops/tree/2.17.0" }, "funding": [ { @@ -5464,7 +5925,7 @@ "type": "github" } ], - "time": "2022-01-07T12:00:00+00:00" + "time": "2025-01-25T12:00:00+00:00" }, { "name": "hamcrest/hamcrest-php", @@ -5519,32 +5980,35 @@ }, { "name": "laravel/sail", - "version": "v1.13.2", + "version": "v1.41.0", "source": { "type": "git", "url": "https://github.com/laravel/sail.git", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a" + "reference": "fe1a4ada0abb5e4bd99eb4e4b0d87906c00cdeec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a", + "url": "https://api.github.com/repos/laravel/sail/zipball/fe1a4ada0abb5e4bd99eb4e4b0d87906c00cdeec", + "reference": "fe1a4ada0abb5e4bd99eb4e4b0d87906c00cdeec", "shasum": "" }, "require": { - "illuminate/console": "^8.0|^9.0", - "illuminate/contracts": "^8.0|^9.0", - "illuminate/support": "^8.0|^9.0", - "php": "^7.3|^8.0" + "illuminate/console": "^9.52.16|^10.0|^11.0|^12.0", + "illuminate/contracts": "^9.52.16|^10.0|^11.0|^12.0", + "illuminate/support": "^9.52.16|^10.0|^11.0|^12.0", + "php": "^8.0", + "symfony/console": "^6.0|^7.0", + "symfony/yaml": "^6.0|^7.0" + }, + "require-dev": { + "orchestra/testbench": "^7.0|^8.0|^9.0|^10.0", + "phpstan/phpstan": "^1.10" }, "bin": [ "bin/sail" ], "type": "library", "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - }, "laravel": { "providers": [ "Laravel\\Sail\\SailServiceProvider" @@ -5575,42 +6039,42 @@ "issues": "https://github.com/laravel/sail/issues", "source": "https://github.com/laravel/sail" }, - "time": "2022-02-08T14:14:12+00:00" + "time": "2025-01-24T15:45:36+00:00" }, { "name": "mockery/mockery", - "version": "1.5.0", + "version": "1.6.12", "source": { "type": "git", "url": "https://github.com/mockery/mockery.git", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" + "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", + "url": "https://api.github.com/repos/mockery/mockery/zipball/1f4efdd7d3beafe9807b08156dfcb176d18f1699", + "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699", "shasum": "" }, "require": { "hamcrest/hamcrest-php": "^2.0.1", "lib-pcre": ">=7.0", - "php": "^7.3 || ^8.0" + "php": ">=7.3" }, "conflict": { "phpunit/phpunit": "<8.0" }, "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3" + "phpunit/phpunit": "^8.5 || ^9.6.17", + "symplify/easy-coding-standard": "^12.1.14" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, "autoload": { - "psr-0": { - "Mockery": "library/" + "files": [ + "library/helpers.php", + "library/Mockery.php" + ], + "psr-4": { + "Mockery\\": "library/Mockery" } }, "notification-url": "https://packagist.org/downloads/", @@ -5621,12 +6085,20 @@ { "name": "Pádraic Brady", "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" + "homepage": "https://github.com/padraic", + "role": "Author" }, { "name": "Dave Marshall", "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" + "homepage": "https://davedevelopment.co.uk", + "role": "Developer" + }, + { + "name": "Nathanael Esayeas", + "email": "nathanael.esayeas@protonmail.com", + "homepage": "https://github.com/ghostwriter", + "role": "Lead Developer" } ], "description": "Mockery is a simple yet flexible PHP mock object framework", @@ -5644,35 +6116,40 @@ "testing" ], "support": { + "docs": "https://docs.mockery.io/", "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.5.0" + "rss": "https://github.com/mockery/mockery/releases.atom", + "security": "https://github.com/mockery/mockery/security/advisories", + "source": "https://github.com/mockery/mockery" }, - "time": "2022-01-20T13:18:17+00:00" + "time": "2024-05-16T03:13:13+00:00" }, { "name": "myclabs/deep-copy", - "version": "1.10.2", + "version": "1.13.0", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" + "reference": "024473a478be9df5fdaca2c793f2232fe788e414" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/024473a478be9df5fdaca2c793f2232fe788e414", + "reference": "024473a478be9df5fdaca2c793f2232fe788e414", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, - "replace": { - "myclabs/deep-copy": "self.version" + "conflict": { + "doctrine/collections": "<1.6.8", + "doctrine/common": "<2.13.3 || >=3 <3.2.2" }, "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" + "doctrine/collections": "^1.6.8", + "doctrine/common": "^2.13.3 || ^3.2.2", + "phpspec/prophecy": "^1.10", + "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" }, "type": "library", "autoload": { @@ -5693,305 +6170,63 @@ "copy", "duplicate", "object", - "object graph" - ], - "support": { - "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2020-11-13T09:40:50+00:00" - }, - { - "name": "nunomaduro/collision", - "version": "v6.1.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/collision.git", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "shasum": "" - }, - "require": { - "facade/ignition-contracts": "^1.0.2", - "filp/whoops": "^2.14.5", - "php": "^8.0.0", - "symfony/console": "^6.0.2" - }, - "require-dev": { - "brianium/paratest": "^6.4.1", - "laravel/framework": "^9.0", - "nunomaduro/larastan": "^1.0.2", - "nunomaduro/mock-final-classes": "^1.1.0", - "orchestra/testbench": "^7.0.0", - "phpunit/phpunit": "^9.5.11" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "6.x-dev" - }, - "laravel": { - "providers": [ - "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" - ] - } - }, - "autoload": { - "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": "2022-01-18T17:49:08+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.1.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/15a90844ad40f127afd244c0cad228de2a80052a", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a", - "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.1.1" - }, - "time": "2022-02-07T21:56:48+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" + "object graph" ], "support": { - "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", - "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" + "issues": "https://github.com/myclabs/DeepCopy/issues", + "source": "https://github.com/myclabs/DeepCopy/tree/1.13.0" }, - "time": "2020-06-27T09:03:43+00:00" + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2025-02-12T12:17:51+00:00" }, { - "name": "phpdocumentor/reflection-docblock", - "version": "5.3.0", + "name": "nunomaduro/collision", + "version": "v6.4.0", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" + "url": "https://github.com/nunomaduro/collision.git", + "reference": "f05978827b9343cba381ca05b8c7deee346b6015" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/f05978827b9343cba381ca05b8c7deee346b6015", + "reference": "f05978827b9343cba381ca05b8c7deee346b6015", "shasum": "" }, "require": { - "ext-filter": "*", - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.2", - "phpdocumentor/type-resolver": "^1.3", - "webmozart/assert": "^1.9.1" + "filp/whoops": "^2.14.5", + "php": "^8.0.0", + "symfony/console": "^6.0.2" }, "require-dev": { - "mockery/mockery": "~1.3.2", - "psalm/phar": "^4.8" + "brianium/paratest": "^6.4.1", + "laravel/framework": "^9.26.1", + "laravel/pint": "^1.1.1", + "nunomaduro/larastan": "^1.0.3", + "nunomaduro/mock-final-classes": "^1.1.0", + "orchestra/testbench": "^7.7", + "phpunit/phpunit": "^9.5.23", + "spatie/ignition": "^1.4.1" }, "type": "library", "extra": { + "laravel": { + "providers": [ + "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" + ] + }, "branch-alias": { - "dev-master": "5.x-dev" + "dev-develop": "6.x-dev" } }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": "src" + "NunoMaduro\\Collision\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -6000,178 +6235,201 @@ ], "authors": [ { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - }, - { - "name": "Jaap van Otterdijk", - "email": "account@ijaap.nl" + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" } ], - "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "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/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" + "issues": "https://github.com/nunomaduro/collision/issues", + "source": "https://github.com/nunomaduro/collision" }, - "time": "2021-10-19T17:43:47+00:00" + "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-01-03T12:54:54+00:00" }, { - "name": "phpdocumentor/type-resolver", - "version": "1.6.0", + "name": "phar-io/manifest", + "version": "2.0.4", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706" + "url": "https://github.com/phar-io/manifest.git", + "reference": "54750ef60c58e43759730615a392c31c80e23176" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176", + "reference": "54750ef60c58e43759730615a392c31c80e23176", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" + "ext-dom": "*", + "ext-libxml": "*", + "ext-phar": "*", + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "php": "^7.2 || ^8.0" }, "type": "library", "extra": { "branch-alias": { - "dev-1.x": "1.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" + "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": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", "support": { - "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.0" + "issues": "https://github.com/phar-io/manifest/issues", + "source": "https://github.com/phar-io/manifest/tree/2.0.4" }, - "time": "2022-01-04T19:58:01+00:00" + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2024-03-03T12:33:53+00:00" }, { - "name": "phpspec/prophecy", - "version": "v1.15.0", + "name": "phar-io/version", + "version": "3.2.1", "source": { "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" + "url": "https://github.com/phar-io/version.git", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", + "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" + "php": "^7.2 || ^8.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" }, { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" } ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], + "description": "Library for handling version information and constraints", "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" + "issues": "https://github.com/phar-io/version/issues", + "source": "https://github.com/phar-io/version/tree/3.2.1" }, - "time": "2021-12-08T12:19:24+00:00" + "time": "2022-02-21T01:04:05+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "9.2.10", + "version": "9.2.32", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687" + "reference": "85402a822d1ecf1db1096959413d35e1c37cf1a5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d5850aaf931743067f4bfc1ae4cbd06468400687", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/85402a822d1ecf1db1096959413d35e1c37cf1a5", + "reference": "85402a822d1ecf1db1096959413d35e1c37cf1a5", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", + "nikic/php-parser": "^4.19.1 || ^5.1.0", "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" + "phpunit/php-file-iterator": "^3.0.6", + "phpunit/php-text-template": "^2.0.4", + "sebastian/code-unit-reverse-lookup": "^2.0.3", + "sebastian/complexity": "^2.0.3", + "sebastian/environment": "^5.1.5", + "sebastian/lines-of-code": "^1.0.4", + "sebastian/version": "^3.0.2", + "theseer/tokenizer": "^1.2.3" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^9.6" }, "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" + "ext-pcov": "PHP extension that provides line coverage", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "9.2-dev" + "dev-main": "9.2.x-dev" } }, "autoload": { @@ -6199,7 +6457,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.10" + "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.32" }, "funding": [ { @@ -6207,7 +6466,7 @@ "type": "github" } ], - "time": "2021-12-05T09:12:13+00:00" + "time": "2024-08-22T04:23:01+00:00" }, { "name": "phpunit/php-file-iterator", @@ -6452,55 +6711,50 @@ }, { "name": "phpunit/phpunit", - "version": "9.5.13", + "version": "9.6.22", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743" + "reference": "f80235cb4d3caa59ae09be3adf1ded27521d1a9c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/597cb647654ede35e43b137926dfdfef0fb11743", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/f80235cb4d3caa59ae09be3adf1ded27521d1a9c", + "reference": "f80235cb4d3caa59ae09be3adf1ded27521d1a9c", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.3.1", + "doctrine/instantiator": "^1.5.0 || ^2", "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", + "myclabs/deep-copy": "^1.12.1", + "phar-io/manifest": "^2.0.4", + "phar-io/version": "^3.2.1", "php": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.7", - "phpunit/php-file-iterator": "^3.0.5", + "phpunit/php-code-coverage": "^9.2.32", + "phpunit/php-file-iterator": "^3.0.6", "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", + "phpunit/php-text-template": "^2.0.4", + "phpunit/php-timer": "^5.0.3", + "sebastian/cli-parser": "^1.0.2", + "sebastian/code-unit": "^1.0.8", + "sebastian/comparator": "^4.0.8", + "sebastian/diff": "^4.0.6", + "sebastian/environment": "^5.1.5", + "sebastian/exporter": "^4.0.6", + "sebastian/global-state": "^5.0.7", + "sebastian/object-enumerator": "^4.0.4", + "sebastian/resource-operations": "^3.0.4", + "sebastian/type": "^3.2.1", "sebastian/version": "^3.0.2" }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" + "ext-soap": "To be able to generate mocks based on WSDL files", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" }, "bin": [ "phpunit" @@ -6508,7 +6762,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "9.5-dev" + "dev-master": "9.6-dev" } }, "autoload": { @@ -6539,7 +6793,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.13" + "security": "https://github.com/sebastianbergmann/phpunit/security/policy", + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.22" }, "funding": [ { @@ -6549,22 +6804,26 @@ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", + "type": "tidelift" } ], - "time": "2022-01-24T07:33:35+00:00" + "time": "2024-12-05T13:48:26+00:00" }, { "name": "sebastian/cli-parser", - "version": "1.0.1", + "version": "1.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" + "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/2b56bea83a09de3ac06bb18b92f068e60cc6f50b", + "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b", "shasum": "" }, "require": { @@ -6599,7 +6858,7 @@ "homepage": "https://github.com/sebastianbergmann/cli-parser", "support": { "issues": "https://github.com/sebastianbergmann/cli-parser/issues", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" + "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.2" }, "funding": [ { @@ -6607,7 +6866,7 @@ "type": "github" } ], - "time": "2020-09-28T06:08:49+00:00" + "time": "2024-03-02T06:27:43+00:00" }, { "name": "sebastian/code-unit", @@ -6722,16 +6981,16 @@ }, { "name": "sebastian/comparator", - "version": "4.0.6", + "version": "4.0.8", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" + "reference": "fa0f136dd2334583309d32b62544682ee972b51a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a", + "reference": "fa0f136dd2334583309d32b62544682ee972b51a", "shasum": "" }, "require": { @@ -6784,7 +7043,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8" }, "funding": [ { @@ -6792,24 +7051,24 @@ "type": "github" } ], - "time": "2020-10-26T15:49:45+00:00" + "time": "2022-09-14T12:41:17+00:00" }, { "name": "sebastian/complexity", - "version": "2.0.2", + "version": "2.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" + "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/25f207c40d62b8b7aa32f5ab026c53561964053a", + "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a", "shasum": "" }, "require": { - "nikic/php-parser": "^4.7", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=7.3" }, "require-dev": { @@ -6841,7 +7100,7 @@ "homepage": "https://github.com/sebastianbergmann/complexity", "support": { "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" + "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.3" }, "funding": [ { @@ -6849,20 +7108,20 @@ "type": "github" } ], - "time": "2020-10-26T15:52:27+00:00" + "time": "2023-12-22T06:19:30+00:00" }, { "name": "sebastian/diff", - "version": "4.0.4", + "version": "4.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" + "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/ba01945089c3a293b01ba9badc29ad55b106b0bc", + "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc", "shasum": "" }, "require": { @@ -6907,7 +7166,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.6" }, "funding": [ { @@ -6915,20 +7174,20 @@ "type": "github" } ], - "time": "2020-10-26T13:10:38+00:00" + "time": "2024-03-02T06:30:58+00:00" }, { "name": "sebastian/environment", - "version": "5.1.3", + "version": "5.1.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" + "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", + "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", "shasum": "" }, "require": { @@ -6970,7 +7229,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.5" }, "funding": [ { @@ -6978,20 +7237,20 @@ "type": "github" } ], - "time": "2020-09-28T05:52:38+00:00" + "time": "2023-02-03T06:03:51+00:00" }, { "name": "sebastian/exporter", - "version": "4.0.4", + "version": "4.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" + "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/78c00df8f170e02473b682df15bfcdacc3d32d72", + "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72", "shasum": "" }, "require": { @@ -7047,7 +7306,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.6" }, "funding": [ { @@ -7055,20 +7314,20 @@ "type": "github" } ], - "time": "2021-11-11T14:18:36+00:00" + "time": "2024-03-02T06:33:00+00:00" }, { "name": "sebastian/global-state", - "version": "5.0.3", + "version": "5.0.7", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" + "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9", + "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9", "shasum": "" }, "require": { @@ -7111,7 +7370,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.7" }, "funding": [ { @@ -7119,24 +7378,24 @@ "type": "github" } ], - "time": "2021-06-11T13:31:12+00:00" + "time": "2024-03-02T06:35:11+00:00" }, { "name": "sebastian/lines-of-code", - "version": "1.0.3", + "version": "1.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" + "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/e1e4a170560925c26d424b6a03aed157e7dcc5c5", + "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5", "shasum": "" }, "require": { - "nikic/php-parser": "^4.6", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=7.3" }, "require-dev": { @@ -7168,7 +7427,7 @@ "homepage": "https://github.com/sebastianbergmann/lines-of-code", "support": { "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.4" }, "funding": [ { @@ -7176,7 +7435,7 @@ "type": "github" } ], - "time": "2020-11-28T06:42:11+00:00" + "time": "2023-12-22T06:20:34+00:00" }, { "name": "sebastian/object-enumerator", @@ -7292,16 +7551,16 @@ }, { "name": "sebastian/recursion-context", - "version": "4.0.4", + "version": "4.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" + "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", + "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", "shasum": "" }, "require": { @@ -7340,10 +7599,10 @@ } ], "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "homepage": "https://github.com/sebastianbergmann/recursion-context", "support": { "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" + "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.5" }, "funding": [ { @@ -7351,20 +7610,20 @@ "type": "github" } ], - "time": "2020-10-26T13:17:30+00:00" + "time": "2023-02-03T06:07:39+00:00" }, { "name": "sebastian/resource-operations", - "version": "3.0.3", + "version": "3.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" + "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/05d5692a7993ecccd56a03e40cd7e5b09b1d404e", + "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e", "shasum": "" }, "require": { @@ -7376,7 +7635,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-main": "3.0-dev" } }, "autoload": { @@ -7397,8 +7656,7 @@ "description": "Provides a list of PHP built-in functions that operate on resources", "homepage": "https://www.github.com/sebastianbergmann/resource-operations", "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" + "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.4" }, "funding": [ { @@ -7406,32 +7664,32 @@ "type": "github" } ], - "time": "2020-09-28T06:45:17+00:00" + "time": "2024-03-14T16:00:52+00:00" }, { "name": "sebastian/type", - "version": "2.3.4", + "version": "3.2.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" + "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", + "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", "shasum": "" }, "require": { "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^9.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.3-dev" + "dev-master": "3.2-dev" } }, "autoload": { @@ -7454,7 +7712,7 @@ "homepage": "https://github.com/sebastianbergmann/type", "support": { "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/2.3.4" + "source": "https://github.com/sebastianbergmann/type/tree/3.2.1" }, "funding": [ { @@ -7462,7 +7720,7 @@ "type": "github" } ], - "time": "2021-06-15T12:49:02+00:00" + "time": "2023-02-03T06:13:03+00:00" }, { "name": "sebastian/version", @@ -7519,25 +7777,27 @@ }, { "name": "spatie/backtrace", - "version": "1.2.1", + "version": "1.7.1", "source": { "type": "git", "url": "https://github.com/spatie/backtrace.git", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b" + "reference": "0f2477c520e3729de58e061b8192f161c99f770b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", + "url": "https://api.github.com/repos/spatie/backtrace/zipball/0f2477c520e3729de58e061b8192f161c99f770b", + "reference": "0f2477c520e3729de58e061b8192f161c99f770b", "shasum": "" }, "require": { - "php": "^7.3|^8.0" + "php": "^7.3 || ^8.0" }, "require-dev": { "ext-json": "*", - "phpunit/phpunit": "^9.3", - "symfony/var-dumper": "^5.1" + "laravel/serializable-closure": "^1.3 || ^2.0", + "phpunit/phpunit": "^9.3 || ^11.4.3", + "spatie/phpunit-snapshot-assertions": "^4.2 || ^5.1.6", + "symfony/var-dumper": "^5.1 || ^6.0 || ^7.0" }, "type": "library", "autoload": { @@ -7564,8 +7824,7 @@ "spatie" ], "support": { - "issues": "https://github.com/spatie/backtrace/issues", - "source": "https://github.com/spatie/backtrace/tree/1.2.1" + "source": "https://github.com/spatie/backtrace/tree/1.7.1" }, "funding": [ { @@ -7577,40 +7836,45 @@ "type": "other" } ], - "time": "2021-11-09T10:57:15+00:00" + "time": "2024-12-02T13:28:15+00:00" }, { "name": "spatie/flare-client-php", - "version": "1.0.1", + "version": "1.10.1", "source": { "type": "git", "url": "https://github.com/spatie/flare-client-php.git", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a" + "reference": "bf1716eb98bd689451b071548ae9e70738dce62f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", + "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/bf1716eb98bd689451b071548ae9e70738dce62f", + "reference": "bf1716eb98bd689451b071548ae9e70738dce62f", "shasum": "" }, "require": { - "illuminate/pipeline": "^8.0|^9.0", + "illuminate/pipeline": "^8.0|^9.0|^10.0|^11.0|^12.0", "php": "^8.0", - "spatie/backtrace": "^1.2", - "symfony/http-foundation": "^5.0|^6.0", - "symfony/mime": "^5.2|^6.0", - "symfony/process": "^5.2|^6.0", - "symfony/var-dumper": "^5.2|^6.0" + "spatie/backtrace": "^1.6.1", + "symfony/http-foundation": "^5.2|^6.0|^7.0", + "symfony/mime": "^5.2|^6.0|^7.0", + "symfony/process": "^5.2|^6.0|^7.0", + "symfony/var-dumper": "^5.2|^6.0|^7.0" }, "require-dev": { - "dms/phpunit-arraysubset-asserts": "^0.3.0", - "pestphp/pest": "^1.20", + "dms/phpunit-arraysubset-asserts": "^0.5.0", + "pestphp/pest": "^1.20|^2.0", "phpstan/extension-installer": "^1.1", "phpstan/phpstan-deprecation-rules": "^1.0", "phpstan/phpstan-phpunit": "^1.0", - "spatie/phpunit-snapshot-assertions": "^4.0" + "spatie/pest-plugin-snapshots": "^1.0|^2.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.3.x-dev" + } + }, "autoload": { "files": [ "src/helpers.php" @@ -7633,7 +7897,7 @@ ], "support": { "issues": "https://github.com/spatie/flare-client-php/issues", - "source": "https://github.com/spatie/flare-client-php/tree/1.0.1" + "source": "https://github.com/spatie/flare-client-php/tree/1.10.1" }, "funding": [ { @@ -7641,41 +7905,53 @@ "type": "github" } ], - "time": "2022-02-04T15:21:00+00:00" + "time": "2025-02-14T13:42:06+00:00" }, { "name": "spatie/ignition", - "version": "1.0.2", + "version": "1.14.2", "source": { "type": "git", "url": "https://github.com/spatie/ignition.git", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a" + "reference": "5e11c11f675bb5251f061491a493e04a1a571532" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/d2d5ba823af3004268556e87dfc94449e4159f5a", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a", + "url": "https://api.github.com/repos/spatie/ignition/zipball/5e11c11f675bb5251f061491a493e04a1a571532", + "reference": "5e11c11f675bb5251f061491a493e04a1a571532", "shasum": "" }, "require": { "ext-json": "*", "ext-mbstring": "*", - "monolog/monolog": "^2.0", "php": "^8.0", - "spatie/flare-client-php": "^1.0", - "symfony/console": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" + "spatie/backtrace": "^1.5.3", + "spatie/flare-client-php": "^1.4.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0" }, "require-dev": { + "illuminate/cache": "^9.52|^10.0|^11.0", "mockery/mockery": "^1.4", - "pestphp/pest": "^1.20", + "pestphp/pest": "^1.20|^2.0", "phpstan/extension-installer": "^1.1", "phpstan/phpstan-deprecation-rules": "^1.0", "phpstan/phpstan-phpunit": "^1.0", - "spatie/ray": "^1.32", - "symfony/process": "^5.4|^6.0" + "psr/simple-cache-implementation": "*", + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "vlucas/phpdotenv": "^5.5" + }, + "suggest": { + "openai-php/client": "Require get solutions from OpenAI", + "simple-cache-implementation": "To cache solutions from OpenAI" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.5.x-dev" + } + }, "autoload": { "psr-4": { "Spatie\\Ignition\\": "src" @@ -7712,31 +7988,31 @@ "type": "github" } ], - "time": "2022-01-19T12:57:41+00:00" + "time": "2024-05-29T08:10:20+00:00" }, { "name": "spatie/laravel-ignition", - "version": "1.0.3", + "version": "1.7.0", "source": { "type": "git", "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2" + "reference": "b6d5c33cf0b8260d6540572af2d9bcf9182fe5fb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/68250225a9f83b086462c2af1b1139dfde48fbd2", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2", + "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/b6d5c33cf0b8260d6540572af2d9bcf9182fe5fb", + "reference": "b6d5c33cf0b8260d6540572af2d9bcf9182fe5fb", "shasum": "" }, "require": { "ext-curl": "*", "ext-json": "*", "ext-mbstring": "*", - "illuminate/support": "^8.77|^9.0", + "illuminate/support": "^8.77|^9.27", "monolog/monolog": "^2.3", "php": "^8.0", "spatie/flare-client-php": "^1.0.1", - "spatie/ignition": "^1.0", + "spatie/ignition": "<= 1.14.2", "symfony/console": "^5.0|^6.0", "symfony/var-dumper": "^5.0|^6.0" }, @@ -7755,15 +8031,18 @@ "type": "library", "extra": { "laravel": { - "providers": [ - "Spatie\\LaravelIgnition\\IgnitionServiceProvider" - ], "aliases": { "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" - } + }, + "providers": [ + "Spatie\\LaravelIgnition\\IgnitionServiceProvider" + ] } }, "autoload": { + "files": [ + "src/helpers.php" + ], "psr-4": { "Spatie\\LaravelIgnition\\": "src" } @@ -7799,20 +8078,20 @@ "type": "github" } ], - "time": "2022-02-04T15:25:56+00:00" + "time": "2024-06-13T07:21:06+00:00" }, { "name": "squizlabs/php_codesniffer", - "version": "3.6.2", + "version": "3.11.3", "source": { "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" + "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", + "reference": "ba05f990e79cbe69b9f35c8c1ac8dca7eecc3a10" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", + "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/ba05f990e79cbe69b9f35c8c1ac8dca7eecc3a10", + "reference": "ba05f990e79cbe69b9f35c8c1ac8dca7eecc3a10", "shasum": "" }, "require": { @@ -7822,11 +8101,11 @@ "php": ">=5.4.0" }, "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4" }, "bin": [ - "bin/phpcs", - "bin/phpcbf" + "bin/phpcbf", + "bin/phpcs" ], "type": "library", "extra": { @@ -7841,34 +8120,134 @@ "authors": [ { "name": "Greg Sherwood", - "role": "lead" + "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/squizlabs/PHP_CodeSniffer", + "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer", "keywords": [ "phpcs", - "standards" + "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" + }, + { + "url": "https://thanks.dev/phpcsstandards", + "type": "thanks_dev" + } + ], + "time": "2025-01-23T17:04:15+00:00" + }, + { + "name": "symfony/yaml", + "version": "v7.2.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "ac238f173df0c9c1120f862d0f599e17535a87ec" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/ac238f173df0c9c1120f862d0f599e17535a87ec", + "reference": "ac238f173df0c9c1120f862d0f599e17535a87ec", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3.0", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "symfony/console": "<6.4" + }, + "require-dev": { + "symfony/console": "^6.4|^7.0" + }, + "bin": [ + "Resources/bin/yaml-lint" + ], + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } ], + "description": "Loads and dumps YAML files", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" + "source": "https://github.com/symfony/yaml/tree/v7.2.3" }, - "time": "2021-12-12T21:44:58+00:00" + "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": "2025-01-07T12:55:42+00:00" }, { "name": "theseer/tokenizer", - "version": "1.2.1", + "version": "1.2.3", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", "shasum": "" }, "require": { @@ -7897,7 +8276,7 @@ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", "support": { "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" + "source": "https://github.com/theseer/tokenizer/tree/1.2.3" }, "funding": [ { @@ -7905,7 +8284,7 @@ "type": "github" } ], - "time": "2021-07-28T10:34:58+00:00" + "time": "2024-03-03T12:36:25+00:00" } ], "aliases": [], @@ -7917,5 +8296,5 @@ "php": "^8.0" }, "platform-dev": [], - "plugin-api-version": "2.1.0" + "plugin-api-version": "2.6.0" } From f5485328a983b10fb7ee8d32575cefa506c6adef Mon Sep 17 00:00:00 2001 From: boulganafatimaezzahra Date: Wed, 19 Mar 2025 12:29:12 +0000 Subject: [PATCH 04/41] update laravel ... --- composer.json | 16 +- composer.lock | 1681 ++++++++++++++++++++++++++++--------------------- 2 files changed, 971 insertions(+), 726 deletions(-) diff --git a/composer.json b/composer.json index a9459b5..3e79d31 100644 --- a/composer.json +++ b/composer.json @@ -5,21 +5,21 @@ "keywords": ["framework", "laravel"], "license": "MIT", "require": { - "php": "^8.0", - "fruitcake/laravel-cors": "^2.0.5", + "php": "^8.2", "guzzlehttp/guzzle": "^7.2", - "laravel/framework": "^9.0", - "laravel/sanctum": "^2.14", + "laravel-zero/foundation": "^11.5", + "laravel/framework": "^11.31", + "laravel/sanctum": "^4.0", "laravel/tinker": "^2.7", - "laravel/ui": "^3.4" + "laravel/ui": "^4.0", + "spatie/laravel-permission": "^6.16" }, "require-dev": { "fakerphp/faker": "^1.9.1", "laravel/sail": "^1.0.1", "mockery/mockery": "^1.4.4", - "nunomaduro/collision": "^6.1", "phpunit/phpunit": "^9.5.10", - "spatie/laravel-ignition": "^1.0", + "spatie/laravel-ignition": "^2.0", "squizlabs/php_codesniffer": "^3.6" }, "autoload": { @@ -61,4 +61,4 @@ }, "minimum-stability": "dev", "prefer-stable": true -} +} \ No newline at end of file diff --git a/composer.lock b/composer.lock index d0e9137..c9dd133 100644 --- a/composer.lock +++ b/composer.lock @@ -4,85 +4,29 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "d299b51f0f07ec600b4949240f4664af", + "content-hash": "70a914a6b0ca677e112de8abf4335fbb", "packages": [ - { - "name": "asm89/stack-cors", - "version": "v2.2.0", - "source": { - "type": "git", - "url": "https://github.com/asm89/stack-cors.git", - "reference": "50f57105bad3d97a43ec4a485eb57daf347eafea" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/asm89/stack-cors/zipball/50f57105bad3d97a43ec4a485eb57daf347eafea", - "reference": "50f57105bad3d97a43ec4a485eb57daf347eafea", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0", - "symfony/http-foundation": "^5.3|^6|^7", - "symfony/http-kernel": "^5.3|^6|^7" - }, - "require-dev": { - "phpunit/phpunit": "^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2-dev" - } - }, - "autoload": { - "psr-4": { - "Asm89\\Stack\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alexander", - "email": "iam.asm89@gmail.com" - } - ], - "description": "Cross-origin resource sharing library and stack middleware", - "homepage": "https://github.com/asm89/stack-cors", - "keywords": [ - "cors", - "stack" - ], - "support": { - "issues": "https://github.com/asm89/stack-cors/issues", - "source": "https://github.com/asm89/stack-cors/tree/v2.2.0" - }, - "time": "2023-11-14T13:51:46+00:00" - }, { "name": "brick/math", - "version": "0.11.0", + "version": "0.12.3", "source": { "type": "git", "url": "https://github.com/brick/math.git", - "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478" + "reference": "866551da34e9a618e64a819ee1e01c20d8a588ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/0ad82ce168c82ba30d1c01ec86116ab52f589478", - "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478", + "url": "https://api.github.com/repos/brick/math/zipball/866551da34e9a618e64a819ee1e01c20d8a588ba", + "reference": "866551da34e9a618e64a819ee1e01c20d8a588ba", "shasum": "" }, "require": { - "php": "^8.0" + "php": "^8.1" }, "require-dev": { "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^9.0", - "vimeo/psalm": "5.0.0" + "phpunit/phpunit": "^10.1", + "vimeo/psalm": "6.8.8" }, "type": "library", "autoload": { @@ -102,12 +46,17 @@ "arithmetic", "bigdecimal", "bignum", + "bignumber", "brick", - "math" + "decimal", + "integer", + "math", + "mathematics", + "rational" ], "support": { "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.11.0" + "source": "https://github.com/brick/math/tree/0.12.3" }, "funding": [ { @@ -115,7 +64,7 @@ "type": "github" } ], - "time": "2023-01-15T23:15:59+00:00" + "time": "2025-02-28T13:11:00+00:00" }, { "name": "carbonphp/carbon-doctrine-types", @@ -561,86 +510,6 @@ ], "time": "2024-12-27T00:36:43+00:00" }, - { - "name": "fruitcake/laravel-cors", - "version": "v2.2.0", - "source": { - "type": "git", - "url": "https://github.com/fruitcake/laravel-cors.git", - "reference": "783a74f5e3431d7b9805be8afb60fd0a8f743534" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/783a74f5e3431d7b9805be8afb60fd0a8f743534", - "reference": "783a74f5e3431d7b9805be8afb60fd0a8f743534", - "shasum": "" - }, - "require": { - "asm89/stack-cors": "^2.0.1", - "illuminate/contracts": "^6|^7|^8|^9", - "illuminate/support": "^6|^7|^8|^9", - "php": ">=7.2" - }, - "require-dev": { - "laravel/framework": "^6|^7.24|^8", - "orchestra/testbench-dusk": "^4|^5|^6|^7", - "phpunit/phpunit": "^6|^7|^8|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - }, - "laravel": { - "providers": [ - "Fruitcake\\Cors\\CorsServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Fruitcake\\Cors\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fruitcake", - "homepage": "https://fruitcake.nl" - }, - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", - "keywords": [ - "api", - "cors", - "crossdomain", - "laravel" - ], - "support": { - "issues": "https://github.com/fruitcake/laravel-cors/issues", - "source": "https://github.com/fruitcake/laravel-cors/tree/v2.2.0" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "abandoned": true, - "time": "2022-02-23T14:25:13+00:00" - }, { "name": "fruitcake/php-cors", "version": "v1.3.0", @@ -1185,24 +1054,80 @@ ], "time": "2025-02-03T10:55:03+00:00" }, + { + "name": "laravel-zero/foundation", + "version": "v11.5.0", + "source": { + "type": "git", + "url": "https://github.com/laravel-zero/foundation.git", + "reference": "9d566a50d1399656e837a3b9354745149265e32e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel-zero/foundation/zipball/9d566a50d1399656e837a3b9354745149265e32e", + "reference": "9d566a50d1399656e837a3b9354745149265e32e", + "shasum": "" + }, + "require": { + "php": "^8.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "11.x-dev" + } + }, + "autoload": { + "files": [ + "src/Illuminate/Foundation/helpers.php" + ], + "psr-4": { + "Illuminate\\": "src/Illuminate/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "This is a mirror from illuminate/foundation.", + "keywords": [ + "framework", + "laravel" + ], + "support": { + "source": "https://github.com/laravel-zero/foundation/tree/v11.5.0" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + } + ], + "time": "2024-04-24T16:56:18+00:00" + }, { "name": "laravel/framework", - "version": "v9.52.20", + "version": "v11.44.2", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "2bb6835af73fcf0d1d0bfb84af71cef236cb8609" + "reference": "f85216c82cbd38b66d67ebd20ea762cb3751a4b4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/2bb6835af73fcf0d1d0bfb84af71cef236cb8609", - "reference": "2bb6835af73fcf0d1d0bfb84af71cef236cb8609", + "url": "https://api.github.com/repos/laravel/framework/zipball/f85216c82cbd38b66d67ebd20ea762cb3751a4b4", + "reference": "f85216c82cbd38b66d67ebd20ea762cb3751a4b4", "shasum": "" }, "require": { - "brick/math": "^0.9.3|^0.10.2|^0.11", + "brick/math": "^0.9.3|^0.10.2|^0.11|^0.12", + "composer-runtime-api": "^2.2", "doctrine/inflector": "^2.0.5", - "dragonmantank/cron-expression": "^3.3.2", + "dragonmantank/cron-expression": "^3.4", "egulias/email-validator": "^3.2.1|^4.0", "ext-ctype": "*", "ext-filter": "*", @@ -1211,39 +1136,45 @@ "ext-openssl": "*", "ext-session": "*", "ext-tokenizer": "*", - "fruitcake/php-cors": "^1.2", + "fruitcake/php-cors": "^1.3", + "guzzlehttp/guzzle": "^7.8.2", "guzzlehttp/uri-template": "^1.0", - "laravel/serializable-closure": "^1.2.2", - "league/commonmark": "^2.2.1", - "league/flysystem": "^3.8.0", - "monolog/monolog": "^2.0", - "nesbot/carbon": "^2.62.1", - "nunomaduro/termwind": "^1.13", - "php": "^8.0.2", + "laravel/prompts": "^0.1.18|^0.2.0|^0.3.0", + "laravel/serializable-closure": "^1.3|^2.0", + "league/commonmark": "^2.6", + "league/flysystem": "^3.25.1", + "league/flysystem-local": "^3.25.1", + "league/uri": "^7.5.1", + "monolog/monolog": "^3.0", + "nesbot/carbon": "^2.72.6|^3.8.4", + "nunomaduro/termwind": "^2.0", + "php": "^8.2", "psr/container": "^1.1.1|^2.0.1", "psr/log": "^1.0|^2.0|^3.0", "psr/simple-cache": "^1.0|^2.0|^3.0", "ramsey/uuid": "^4.7", - "symfony/console": "^6.0.9", - "symfony/error-handler": "^6.0", - "symfony/finder": "^6.0", - "symfony/http-foundation": "^6.0", - "symfony/http-kernel": "^6.0", - "symfony/mailer": "^6.0", - "symfony/mime": "^6.0", - "symfony/process": "^6.0", - "symfony/routing": "^6.0", - "symfony/uid": "^6.0", - "symfony/var-dumper": "^6.0", + "symfony/console": "^7.0.3", + "symfony/error-handler": "^7.0.3", + "symfony/finder": "^7.0.3", + "symfony/http-foundation": "^7.2.0", + "symfony/http-kernel": "^7.0.3", + "symfony/mailer": "^7.0.3", + "symfony/mime": "^7.0.3", + "symfony/polyfill-php83": "^1.31", + "symfony/process": "^7.0.3", + "symfony/routing": "^7.0.3", + "symfony/uid": "^7.0.3", + "symfony/var-dumper": "^7.0.3", "tijsverkoyen/css-to-inline-styles": "^2.2.5", - "vlucas/phpdotenv": "^5.4.1", - "voku/portable-ascii": "^2.0" + "vlucas/phpdotenv": "^5.6.1", + "voku/portable-ascii": "^2.0.2" }, "conflict": { "tightenco/collect": "<5.5.33" }, "provide": { "psr/container-implementation": "1.1|2.0", + "psr/log-implementation": "1.0|2.0|3.0", "psr/simple-cache-implementation": "1.0|2.0|3.0" }, "replace": { @@ -1252,6 +1183,7 @@ "illuminate/bus": "self.version", "illuminate/cache": "self.version", "illuminate/collections": "self.version", + "illuminate/concurrency": "self.version", "illuminate/conditionable": "self.version", "illuminate/config": "self.version", "illuminate/console": "self.version", @@ -1270,6 +1202,7 @@ "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", @@ -1278,35 +1211,39 @@ "illuminate/testing": "self.version", "illuminate/translation": "self.version", "illuminate/validation": "self.version", - "illuminate/view": "self.version" + "illuminate/view": "self.version", + "spatie/once": "*" }, "require-dev": { "ably/ably-php": "^1.0", - "aws/aws-sdk-php": "^3.235.5", - "doctrine/dbal": "^2.13.3|^3.1.4", + "aws/aws-sdk-php": "^3.322.9", "ext-gmp": "*", - "fakerphp/faker": "^1.21", - "guzzlehttp/guzzle": "^7.5", - "league/flysystem-aws-s3-v3": "^3.0", - "league/flysystem-ftp": "^3.0", - "league/flysystem-path-prefixing": "^3.3", - "league/flysystem-read-only": "^3.3", - "league/flysystem-sftp-v3": "^3.0", - "mockery/mockery": "^1.5.1", - "orchestra/testbench-core": "^7.24", - "pda/pheanstalk": "^4.0", - "phpstan/phpdoc-parser": "^1.15", - "phpstan/phpstan": "^1.4.7", - "phpunit/phpunit": "^9.5.8", - "predis/predis": "^1.1.9|^2.0.2", - "symfony/cache": "^6.0", - "symfony/http-client": "^6.0" + "fakerphp/faker": "^1.24", + "guzzlehttp/promises": "^2.0.3", + "guzzlehttp/psr7": "^2.4", + "laravel/pint": "^1.18", + "league/flysystem-aws-s3-v3": "^3.25.1", + "league/flysystem-ftp": "^3.25.1", + "league/flysystem-path-prefixing": "^3.25.1", + "league/flysystem-read-only": "^3.25.1", + "league/flysystem-sftp-v3": "^3.25.1", + "mockery/mockery": "^1.6.10", + "orchestra/testbench-core": "^9.11.2", + "pda/pheanstalk": "^5.0.6", + "php-http/discovery": "^1.15", + "phpstan/phpstan": "^2.0", + "phpunit/phpunit": "^10.5.35|^11.3.6|^12.0.1", + "predis/predis": "^2.3", + "resend/resend-php": "^0.10.0", + "symfony/cache": "^7.0.3", + "symfony/http-client": "^7.0.3", + "symfony/psr-http-message-bridge": "^7.0.3", + "symfony/translation": "^7.0.3" }, "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 (^2.13.3|^3.1.4).", + "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage, and SES mail driver (^3.322.9).", + "brianium/paratest": "Required to run tests in parallel (^7.0|^8.0).", "ext-apcu": "Required to use the APC cache driver.", "ext-fileinfo": "Required to use the Filesystem class.", "ext-ftp": "Required to use the Flysystem FTP driver.", @@ -1315,41 +1252,45 @@ "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).", + "ext-redis": "Required to use the Redis cache and queue drivers (^4.0|^5.0|^6.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).", - "predis/predis": "Required to use the predis connector (^1.1.9|^2.0.2).", + "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^3.25.1).", + "league/flysystem-ftp": "Required to use the Flysystem FTP driver (^3.25.1).", + "league/flysystem-path-prefixing": "Required to use the scoped driver (^3.25.1).", + "league/flysystem-read-only": "Required to use read-only disks (^3.25.1)", + "league/flysystem-sftp-v3": "Required to use the Flysystem SFTP driver (^3.25.1).", + "mockery/mockery": "Required to use mocking (^1.6).", + "pda/pheanstalk": "Required to use the beanstalk queue driver (^5.0).", + "php-http/discovery": "Required to use PSR-7 bridging features (^1.15).", + "phpunit/phpunit": "Required to use assertions and run tests (^10.5.35|^11.3.6|^12.0.1).", + "predis/predis": "Required to use the predis connector (^2.3).", "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.0).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^6.0).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.0).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.0).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.0).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." + "resend/resend-php": "Required to enable support for the Resend mail transport (^0.10.0).", + "symfony/cache": "Required to PSR-6 cache bridge (^7.0).", + "symfony/filesystem": "Required to enable support for relative symbolic links (^7.0).", + "symfony/http-client": "Required to enable support for the Symfony API mail transports (^7.0).", + "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^7.0).", + "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^7.0).", + "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^7.0)." }, "type": "library", "extra": { "branch-alias": { - "dev-master": "9.x-dev" + "dev-master": "11.x-dev" } }, "autoload": { "files": [ + "src/Illuminate/Collections/functions.php", "src/Illuminate/Collections/helpers.php", "src/Illuminate/Events/functions.php", + "src/Illuminate/Filesystem/functions.php", "src/Illuminate/Foundation/helpers.php", + "src/Illuminate/Log/functions.php", + "src/Illuminate/Support/functions.php", "src/Illuminate/Support/helpers.php" ], "psr-4": { @@ -1381,34 +1322,95 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2025-01-31T10:09:38+00:00" + "time": "2025-03-12T14:34:30+00:00" + }, + { + "name": "laravel/prompts", + "version": "v0.3.5", + "source": { + "type": "git", + "url": "https://github.com/laravel/prompts.git", + "reference": "57b8f7efe40333cdb925700891c7d7465325d3b1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/prompts/zipball/57b8f7efe40333cdb925700891c7d7465325d3b1", + "reference": "57b8f7efe40333cdb925700891c7d7465325d3b1", + "shasum": "" + }, + "require": { + "composer-runtime-api": "^2.2", + "ext-mbstring": "*", + "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": { + "illuminate/collections": "^10.0|^11.0|^12.0", + "mockery/mockery": "^1.5", + "pestphp/pest": "^2.3|^3.4", + "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.3.x-dev" + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Laravel\\Prompts\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Add beautiful and user-friendly forms to your command-line applications.", + "support": { + "issues": "https://github.com/laravel/prompts/issues", + "source": "https://github.com/laravel/prompts/tree/v0.3.5" + }, + "time": "2025-02-11T13:34:40+00:00" }, { "name": "laravel/sanctum", - "version": "v2.15.1", + "version": "v4.0.8", "source": { "type": "git", "url": "https://github.com/laravel/sanctum.git", - "reference": "31fbe6f85aee080c4dc2f9b03dc6dd5d0ee72473" + "reference": "ec1dd9ddb2ab370f79dfe724a101856e0963f43c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/31fbe6f85aee080c4dc2f9b03dc6dd5d0ee72473", - "reference": "31fbe6f85aee080c4dc2f9b03dc6dd5d0ee72473", + "url": "https://api.github.com/repos/laravel/sanctum/zipball/ec1dd9ddb2ab370f79dfe724a101856e0963f43c", + "reference": "ec1dd9ddb2ab370f79dfe724a101856e0963f43c", "shasum": "" }, "require": { "ext-json": "*", - "illuminate/console": "^6.9|^7.0|^8.0|^9.0", - "illuminate/contracts": "^6.9|^7.0|^8.0|^9.0", - "illuminate/database": "^6.9|^7.0|^8.0|^9.0", - "illuminate/support": "^6.9|^7.0|^8.0|^9.0", - "php": "^7.2|^8.0" + "illuminate/console": "^11.0|^12.0", + "illuminate/contracts": "^11.0|^12.0", + "illuminate/database": "^11.0|^12.0", + "illuminate/support": "^11.0|^12.0", + "php": "^8.2", + "symfony/console": "^7.0" }, "require-dev": { - "mockery/mockery": "^1.0", - "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0", - "phpunit/phpunit": "^8.0|^9.3" + "mockery/mockery": "^1.6", + "orchestra/testbench": "^9.0|^10.0", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^11.3" }, "type": "library", "extra": { @@ -1416,9 +1418,6 @@ "providers": [ "Laravel\\Sanctum\\SanctumServiceProvider" ] - }, - "branch-alias": { - "dev-master": "2.x-dev" } }, "autoload": { @@ -1446,36 +1445,36 @@ "issues": "https://github.com/laravel/sanctum/issues", "source": "https://github.com/laravel/sanctum" }, - "time": "2022-04-08T13:39:49+00:00" + "time": "2025-01-26T19:34:36+00:00" }, { "name": "laravel/serializable-closure", - "version": "v1.3.7", + "version": "v2.0.3", "source": { "type": "git", "url": "https://github.com/laravel/serializable-closure.git", - "reference": "4f48ade902b94323ca3be7646db16209ec76be3d" + "reference": "f379c13663245f7aa4512a7869f62eb14095f23f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/4f48ade902b94323ca3be7646db16209ec76be3d", - "reference": "4f48ade902b94323ca3be7646db16209ec76be3d", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/f379c13663245f7aa4512a7869f62eb14095f23f", + "reference": "f379c13663245f7aa4512a7869f62eb14095f23f", "shasum": "" }, "require": { - "php": "^7.3|^8.0" + "php": "^8.1" }, "require-dev": { - "illuminate/support": "^8.0|^9.0|^10.0|^11.0", - "nesbot/carbon": "^2.61|^3.0", - "pestphp/pest": "^1.21.3", - "phpstan/phpstan": "^1.8.2", - "symfony/var-dumper": "^5.4.11|^6.2.0|^7.0.0" + "illuminate/support": "^10.0|^11.0|^12.0", + "nesbot/carbon": "^2.67|^3.0", + "pestphp/pest": "^2.36|^3.0", + "phpstan/phpstan": "^2.0", + "symfony/var-dumper": "^6.2.0|^7.0.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "2.x-dev" } }, "autoload": { @@ -1507,7 +1506,7 @@ "issues": "https://github.com/laravel/serializable-closure/issues", "source": "https://github.com/laravel/serializable-closure" }, - "time": "2024-11-14T18:34:49+00:00" + "time": "2025-02-11T15:03:05+00:00" }, { "name": "laravel/tinker", @@ -1577,27 +1576,29 @@ }, { "name": "laravel/ui", - "version": "v3.4.6", + "version": "v4.6.1", "source": { "type": "git", "url": "https://github.com/laravel/ui.git", - "reference": "65ec5c03f7fee2c8ecae785795b829a15be48c2c" + "reference": "7d6ffa38d79f19c9b3e70a751a9af845e8f41d88" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/ui/zipball/65ec5c03f7fee2c8ecae785795b829a15be48c2c", - "reference": "65ec5c03f7fee2c8ecae785795b829a15be48c2c", + "url": "https://api.github.com/repos/laravel/ui/zipball/7d6ffa38d79f19c9b3e70a751a9af845e8f41d88", + "reference": "7d6ffa38d79f19c9b3e70a751a9af845e8f41d88", "shasum": "" }, "require": { - "illuminate/console": "^8.42|^9.0", - "illuminate/filesystem": "^8.42|^9.0", - "illuminate/support": "^8.82|^9.0", - "illuminate/validation": "^8.42|^9.0", - "php": "^7.3|^8.0" + "illuminate/console": "^9.21|^10.0|^11.0|^12.0", + "illuminate/filesystem": "^9.21|^10.0|^11.0|^12.0", + "illuminate/support": "^9.21|^10.0|^11.0|^12.0", + "illuminate/validation": "^9.21|^10.0|^11.0|^12.0", + "php": "^8.0", + "symfony/console": "^6.0|^7.0" }, "require-dev": { - "orchestra/testbench": "^6.23|^7.0" + "orchestra/testbench": "^7.35|^8.15|^9.0|^10.0", + "phpunit/phpunit": "^9.3|^10.4|^11.5" }, "type": "library", "extra": { @@ -1607,7 +1608,7 @@ ] }, "branch-alias": { - "dev-master": "3.x-dev" + "dev-master": "4.x-dev" } }, "autoload": { @@ -1632,9 +1633,9 @@ "ui" ], "support": { - "source": "https://github.com/laravel/ui/tree/v3.4.6" + "source": "https://github.com/laravel/ui/tree/v4.6.1" }, - "time": "2022-05-20T13:38:08+00:00" + "time": "2025-01-28T15:15:29+00:00" }, { "name": "league/commonmark", @@ -2013,44 +2014,219 @@ ], "time": "2024-09-21T08:32:55+00:00" }, + { + "name": "league/uri", + "version": "7.5.1", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/uri.git", + "reference": "81fb5145d2644324614cc532b28efd0215bda430" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/uri/zipball/81fb5145d2644324614cc532b28efd0215bda430", + "reference": "81fb5145d2644324614cc532b28efd0215bda430", + "shasum": "" + }, + "require": { + "league/uri-interfaces": "^7.5", + "php": "^8.1" + }, + "conflict": { + "league/uri-schemes": "^1.0" + }, + "suggest": { + "ext-bcmath": "to improve IPV4 host parsing", + "ext-fileinfo": "to create Data URI from file contennts", + "ext-gmp": "to improve IPV4 host parsing", + "ext-intl": "to handle IDN host with the best performance", + "jeremykendall/php-domain-parser": "to resolve Public Suffix and Top Level Domain", + "league/uri-components": "Needed to easily manipulate URI objects components", + "php-64bit": "to improve IPV4 host parsing", + "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.x-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Uri\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://nyamsprod.com" + } + ], + "description": "URI manipulation library", + "homepage": "https://uri.thephpleague.com", + "keywords": [ + "data-uri", + "file-uri", + "ftp", + "hostname", + "http", + "https", + "middleware", + "parse_str", + "parse_url", + "psr-7", + "query-string", + "querystring", + "rfc3986", + "rfc3987", + "rfc6570", + "uri", + "uri-template", + "url", + "ws" + ], + "support": { + "docs": "https://uri.thephpleague.com", + "forum": "https://thephpleague.slack.com", + "issues": "https://github.com/thephpleague/uri-src/issues", + "source": "https://github.com/thephpleague/uri/tree/7.5.1" + }, + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2024-12-08T08:40:02+00:00" + }, + { + "name": "league/uri-interfaces", + "version": "7.5.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/uri-interfaces.git", + "reference": "08cfc6c4f3d811584fb09c37e2849e6a7f9b0742" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/08cfc6c4f3d811584fb09c37e2849e6a7f9b0742", + "reference": "08cfc6c4f3d811584fb09c37e2849e6a7f9b0742", + "shasum": "" + }, + "require": { + "ext-filter": "*", + "php": "^8.1", + "psr/http-factory": "^1", + "psr/http-message": "^1.1 || ^2.0" + }, + "suggest": { + "ext-bcmath": "to improve IPV4 host parsing", + "ext-gmp": "to improve IPV4 host parsing", + "ext-intl": "to handle IDN host with the best performance", + "php-64bit": "to improve IPV4 host parsing", + "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.x-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Uri\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://nyamsprod.com" + } + ], + "description": "Common interfaces and classes for URI representation and interaction", + "homepage": "https://uri.thephpleague.com", + "keywords": [ + "data-uri", + "file-uri", + "ftp", + "hostname", + "http", + "https", + "parse_str", + "parse_url", + "psr-7", + "query-string", + "querystring", + "rfc3986", + "rfc3987", + "rfc6570", + "uri", + "url", + "ws" + ], + "support": { + "docs": "https://uri.thephpleague.com", + "forum": "https://thephpleague.slack.com", + "issues": "https://github.com/thephpleague/uri-src/issues", + "source": "https://github.com/thephpleague/uri-interfaces/tree/7.5.0" + }, + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2024-12-08T08:18:47+00:00" + }, { "name": "monolog/monolog", - "version": "2.10.0", + "version": "3.8.1", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "5cf826f2991858b54d5c3809bee745560a1042a7" + "reference": "aef6ee73a77a66e404dd6540934a9ef1b3c855b4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/5cf826f2991858b54d5c3809bee745560a1042a7", - "reference": "5cf826f2991858b54d5c3809bee745560a1042a7", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/aef6ee73a77a66e404dd6540934a9ef1b3c855b4", + "reference": "aef6ee73a77a66e404dd6540934a9ef1b3c855b4", "shasum": "" }, "require": { - "php": ">=7.2", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" + "php": ">=8.1", + "psr/log": "^2.0 || ^3.0" }, "provide": { - "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" + "psr/log-implementation": "3.0.0" }, "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", + "aws/aws-sdk-php": "^3.0", "doctrine/couchdb": "~1.0@dev", "elasticsearch/elasticsearch": "^7 || ^8", "ext-json": "*", - "graylog2/gelf-php": "^1.4.2 || ^2@dev", - "guzzlehttp/guzzle": "^7.4", + "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", - "phpspec/prophecy": "^1.15", - "phpstan/phpstan": "^1.10", - "phpunit/phpunit": "^8.5.38 || ^9.6.19", - "predis/predis": "^1.1 || ^2.0", - "rollbar/rollbar": "^1.3 || ^2 || ^3", - "ruflin/elastica": "^7", - "swiftmailer/swiftmailer": "^5.3|^6.0", + "php-console/php-console": "^3.1.8", + "phpstan/phpstan": "^2", + "phpstan/phpstan-deprecation-rules": "^2", + "phpstan/phpstan-strict-rules": "^2", + "phpunit/phpunit": "^10.5.17 || ^11.0.7", + "predis/predis": "^1.1 || ^2", + "rollbar/rollbar": "^4.0", + "ruflin/elastica": "^7 || ^8", "symfony/mailer": "^5.4 || ^6", "symfony/mime": "^5.4 || ^6" }, @@ -2073,7 +2249,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.x-dev" + "dev-main": "3.x-dev" } }, "autoload": { @@ -2101,7 +2277,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/2.10.0" + "source": "https://github.com/Seldaek/monolog/tree/3.8.1" }, "funding": [ { @@ -2113,46 +2289,45 @@ "type": "tidelift" } ], - "time": "2024-11-12T12:43:37+00:00" + "time": "2024-12-05T17:15:07+00:00" }, { "name": "nesbot/carbon", - "version": "2.73.0", + "version": "3.8.6", "source": { "type": "git", "url": "https://github.com/CarbonPHP/carbon.git", - "reference": "9228ce90e1035ff2f0db84b40ec2e023ed802075" + "reference": "ff2f20cf83bd4d503720632ce8a426dc747bf7fd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/9228ce90e1035ff2f0db84b40ec2e023ed802075", - "reference": "9228ce90e1035ff2f0db84b40ec2e023ed802075", + "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/ff2f20cf83bd4d503720632ce8a426dc747bf7fd", + "reference": "ff2f20cf83bd4d503720632ce8a426dc747bf7fd", "shasum": "" }, "require": { - "carbonphp/carbon-doctrine-types": "*", + "carbonphp/carbon-doctrine-types": "<100.0", "ext-json": "*", - "php": "^7.1.8 || ^8.0", + "php": "^8.1", "psr/clock": "^1.0", + "symfony/clock": "^6.3 || ^7.0", "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" + "symfony/translation": "^4.4.18 || ^5.2.1|| ^6.0 || ^7.0" }, "provide": { "psr/clock-implementation": "1.0" }, "require-dev": { - "doctrine/dbal": "^2.0 || ^3.1.4 || ^4.0", - "doctrine/orm": "^2.7 || ^3.0", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "ondrejmirtes/better-reflection": "<6", - "phpmd/phpmd": "^2.9", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.99 || ^1.7.14", - "phpunit/php-file-iterator": "^2.0.5 || ^3.0.6", - "phpunit/phpunit": "^7.5.20 || ^8.5.26 || ^9.5.20", - "squizlabs/php_codesniffer": "^3.4" + "doctrine/dbal": "^3.6.3 || ^4.0", + "doctrine/orm": "^2.15.2 || ^3.0", + "friendsofphp/php-cs-fixer": "^3.57.2", + "kylekatarnls/multi-tester": "^2.5.3", + "ondrejmirtes/better-reflection": "^6.25.0.4", + "phpmd/phpmd": "^2.15.0", + "phpstan/extension-installer": "^1.3.1", + "phpstan/phpstan": "^1.11.2", + "phpunit/phpunit": "^10.5.20", + "squizlabs/php_codesniffer": "^3.9.0" }, "bin": [ "bin/carbon" @@ -2203,8 +2378,8 @@ ], "support": { "docs": "https://carbon.nesbot.com/docs", - "issues": "https://github.com/briannesbitt/Carbon/issues", - "source": "https://github.com/briannesbitt/Carbon" + "issues": "https://github.com/CarbonPHP/carbon/issues", + "source": "https://github.com/CarbonPHP/carbon" }, "funding": [ { @@ -2220,7 +2395,7 @@ "type": "tidelift" } ], - "time": "2025-01-08T20:10:23+00:00" + "time": "2025-02-20T17:33:38+00:00" }, { "name": "nette/schema", @@ -2430,32 +2605,31 @@ }, { "name": "nunomaduro/termwind", - "version": "v1.17.0", + "version": "v2.3.0", "source": { "type": "git", "url": "https://github.com/nunomaduro/termwind.git", - "reference": "5369ef84d8142c1d87e4ec278711d4ece3cbf301" + "reference": "52915afe6a1044e8b9cee1bcff836fb63acf9cda" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/5369ef84d8142c1d87e4ec278711d4ece3cbf301", - "reference": "5369ef84d8142c1d87e4ec278711d4ece3cbf301", + "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/52915afe6a1044e8b9cee1bcff836fb63acf9cda", + "reference": "52915afe6a1044e8b9cee1bcff836fb63acf9cda", "shasum": "" }, "require": { "ext-mbstring": "*", - "php": "^8.1", - "symfony/console": "^6.4.15" + "php": "^8.2", + "symfony/console": "^7.1.8" }, "require-dev": { - "illuminate/console": "^10.48.24", - "illuminate/support": "^10.48.24", + "illuminate/console": "^11.33.2", "laravel/pint": "^1.18.2", + "mockery/mockery": "^1.6.12", "pestphp/pest": "^2.36.0", - "pestphp/pest-plugin-mock": "2.0.0", "phpstan/phpstan": "^1.12.11", "phpstan/phpstan-strict-rules": "^1.6.1", - "symfony/var-dumper": "^6.4.15", + "symfony/var-dumper": "^7.1.8", "thecodingmachine/phpstan-strict-rules": "^1.0.0" }, "type": "library", @@ -2464,6 +2638,9 @@ "providers": [ "Termwind\\Laravel\\TermwindServiceProvider" ] + }, + "branch-alias": { + "dev-2.x": "2.x-dev" } }, "autoload": { @@ -2495,7 +2672,7 @@ ], "support": { "issues": "https://github.com/nunomaduro/termwind/issues", - "source": "https://github.com/nunomaduro/termwind/tree/v1.17.0" + "source": "https://github.com/nunomaduro/termwind/tree/v2.3.0" }, "funding": [ { @@ -2511,7 +2688,7 @@ "type": "github" } ], - "time": "2024-11-21T10:36:35+00:00" + "time": "2024-11-21T10:39:51+00:00" }, { "name": "phpoption/phpoption", @@ -3002,16 +3179,16 @@ }, { "name": "psy/psysh", - "version": "v0.12.7", + "version": "v0.12.8", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "d73fa3c74918ef4522bb8a3bf9cab39161c4b57c" + "reference": "85057ceedee50c49d4f6ecaff73ee96adb3b3625" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/d73fa3c74918ef4522bb8a3bf9cab39161c4b57c", - "reference": "d73fa3c74918ef4522bb8a3bf9cab39161c4b57c", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/85057ceedee50c49d4f6ecaff73ee96adb3b3625", + "reference": "85057ceedee50c49d4f6ecaff73ee96adb3b3625", "shasum": "" }, "require": { @@ -3075,9 +3252,9 @@ ], "support": { "issues": "https://github.com/bobthecow/psysh/issues", - "source": "https://github.com/bobthecow/psysh/tree/v0.12.7" + "source": "https://github.com/bobthecow/psysh/tree/v0.12.8" }, - "time": "2024-12-10T01:58:33+00:00" + "time": "2025-03-16T03:05:19+00:00" }, { "name": "ralouphie/getallheaders", @@ -3264,76 +3441,232 @@ "psr-4": { "Ramsey\\Uuid\\": "src/" } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" + }, + "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.6" + }, + "funding": [ + { + "url": "https://github.com/ramsey", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", + "type": "tidelift" + } + ], + "time": "2024-04-27T21:32:50+00:00" + }, + { + "name": "spatie/laravel-permission", + "version": "6.16.0", + "source": { + "type": "git", + "url": "https://github.com/spatie/laravel-permission.git", + "reference": "4fa03c06509e037a4d42c131d0f181e3e4bbd483" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/laravel-permission/zipball/4fa03c06509e037a4d42c131d0f181e3e4bbd483", + "reference": "4fa03c06509e037a4d42c131d0f181e3e4bbd483", + "shasum": "" + }, + "require": { + "illuminate/auth": "^8.12|^9.0|^10.0|^11.0|^12.0", + "illuminate/container": "^8.12|^9.0|^10.0|^11.0|^12.0", + "illuminate/contracts": "^8.12|^9.0|^10.0|^11.0|^12.0", + "illuminate/database": "^8.12|^9.0|^10.0|^11.0|^12.0", + "php": "^8.0" + }, + "require-dev": { + "laravel/passport": "^11.0|^12.0", + "laravel/pint": "^1.0", + "orchestra/testbench": "^6.23|^7.0|^8.0|^9.0|^10.0", + "phpunit/phpunit": "^9.4|^10.1|^11.5" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Spatie\\Permission\\PermissionServiceProvider" + ] + }, + "branch-alias": { + "dev-main": "6.x-dev", + "dev-master": "6.x-dev" + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Spatie\\Permission\\": "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": "Permission handling for Laravel 8.0 and up", + "homepage": "https://github.com/spatie/laravel-permission", + "keywords": [ + "acl", + "laravel", + "permission", + "permissions", + "rbac", + "roles", + "security", + "spatie" + ], + "support": { + "issues": "https://github.com/spatie/laravel-permission/issues", + "source": "https://github.com/spatie/laravel-permission/tree/6.16.0" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2025-02-28T20:29:57+00:00" + }, + { + "name": "symfony/clock", + "version": "v7.2.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/clock.git", + "reference": "b81435fbd6648ea425d1ee96a2d8e68f4ceacd24" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/clock/zipball/b81435fbd6648ea425d1ee96a2d8e68f4ceacd24", + "reference": "b81435fbd6648ea425d1ee96a2d8e68f4ceacd24", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/clock": "^1.0", + "symfony/polyfill-php83": "^1.28" + }, + "provide": { + "psr/clock-implementation": "1.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/now.php" + ], + "psr-4": { + "Symfony\\Component\\Clock\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } ], - "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", + "description": "Decouples applications from the system clock", + "homepage": "https://symfony.com", "keywords": [ - "guid", - "identifier", - "uuid" + "clock", + "psr20", + "time" ], "support": { - "issues": "https://github.com/ramsey/uuid/issues", - "source": "https://github.com/ramsey/uuid/tree/4.7.6" + "source": "https://github.com/symfony/clock/tree/v7.2.0" }, "funding": [ { - "url": "https://github.com/ramsey", + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-27T21:32:50+00:00" + "time": "2024-09-25T14:21:43+00:00" }, { "name": "symfony/console", - "version": "v6.4.17", + "version": "v7.2.1", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "799445db3f15768ecc382ac5699e6da0520a0a04" + "reference": "fefcc18c0f5d0efe3ab3152f15857298868dc2c3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/799445db3f15768ecc382ac5699e6da0520a0a04", - "reference": "799445db3f15768ecc382ac5699e6da0520a0a04", + "url": "https://api.github.com/repos/symfony/console/zipball/fefcc18c0f5d0efe3ab3152f15857298868dc2c3", + "reference": "fefcc18c0f5d0efe3ab3152f15857298868dc2c3", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", + "php": ">=8.2", "symfony/polyfill-mbstring": "~1.0", "symfony/service-contracts": "^2.5|^3", - "symfony/string": "^5.4|^6.0|^7.0" + "symfony/string": "^6.4|^7.0" }, "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" + "symfony/dependency-injection": "<6.4", + "symfony/dotenv": "<6.4", + "symfony/event-dispatcher": "<6.4", + "symfony/lock": "<6.4", + "symfony/process": "<6.4" }, "provide": { "psr/log-implementation": "1.0|2.0|3.0" }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0|^7.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/event-dispatcher": "^6.4|^7.0", "symfony/http-foundation": "^6.4|^7.0", "symfony/http-kernel": "^6.4|^7.0", - "symfony/lock": "^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" + "symfony/lock": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/stopwatch": "^6.4|^7.0", + "symfony/var-dumper": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -3367,7 +3700,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.4.17" + "source": "https://github.com/symfony/console/tree/v7.2.1" }, "funding": [ { @@ -3383,7 +3716,7 @@ "type": "tidelift" } ], - "time": "2024-12-07T12:07:30+00:00" + "time": "2024-12-11T03:49:26+00:00" }, { "name": "symfony/css-selector", @@ -3519,22 +3852,22 @@ }, { "name": "symfony/error-handler", - "version": "v6.4.19", + "version": "v7.2.4", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "3d4e55cd2b8f1979a65eba9ab749d6466c316f71" + "reference": "aabf79938aa795350c07ce6464dd1985607d95d5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/3d4e55cd2b8f1979a65eba9ab749d6466c316f71", - "reference": "3d4e55cd2b8f1979a65eba9ab749d6466c316f71", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/aabf79938aa795350c07ce6464dd1985607d95d5", + "reference": "aabf79938aa795350c07ce6464dd1985607d95d5", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0|^7.0" + "symfony/var-dumper": "^6.4|^7.0" }, "conflict": { "symfony/deprecation-contracts": "<2.5", @@ -3543,7 +3876,7 @@ "require-dev": { "symfony/deprecation-contracts": "^2.5|^3", "symfony/http-kernel": "^6.4|^7.0", - "symfony/serializer": "^5.4|^6.0|^7.0" + "symfony/serializer": "^6.4|^7.0" }, "bin": [ "Resources/bin/patch-type-declarations" @@ -3574,7 +3907,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.4.19" + "source": "https://github.com/symfony/error-handler/tree/v7.2.4" }, "funding": [ { @@ -3590,7 +3923,7 @@ "type": "tidelift" } ], - "time": "2025-02-02T20:16:33+00:00" + "time": "2025-02-02T20:27:07+00:00" }, { "name": "symfony/event-dispatcher", @@ -3750,23 +4083,23 @@ }, { "name": "symfony/finder", - "version": "v6.4.17", + "version": "v7.2.2", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "1d0e8266248c5d9ab6a87e3789e6dc482af3c9c7" + "reference": "87a71856f2f56e4100373e92529eed3171695cfb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/1d0e8266248c5d9ab6a87e3789e6dc482af3c9c7", - "reference": "1d0e8266248c5d9ab6a87e3789e6dc482af3c9c7", + "url": "https://api.github.com/repos/symfony/finder/zipball/87a71856f2f56e4100373e92529eed3171695cfb", + "reference": "87a71856f2f56e4100373e92529eed3171695cfb", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "require-dev": { - "symfony/filesystem": "^6.0|^7.0" + "symfony/filesystem": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -3794,7 +4127,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v6.4.17" + "source": "https://github.com/symfony/finder/tree/v7.2.2" }, "funding": [ { @@ -3810,40 +4143,41 @@ "type": "tidelift" } ], - "time": "2024-12-29T13:51:37+00:00" + "time": "2024-12-30T19:00:17+00:00" }, { "name": "symfony/http-foundation", - "version": "v6.4.18", + "version": "v7.2.3", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "d0492d6217e5ab48f51fca76f64cf8e78919d0db" + "reference": "ee1b504b8926198be89d05e5b6fc4c3810c090f0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/d0492d6217e5ab48f51fca76f64cf8e78919d0db", - "reference": "d0492d6217e5ab48f51fca76f64cf8e78919d0db", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ee1b504b8926198be89d05e5b6fc4c3810c090f0", + "reference": "ee1b504b8926198be89d05e5b6fc4c3810c090f0", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3.0", "symfony/polyfill-mbstring": "~1.1", "symfony/polyfill-php83": "^1.27" }, "conflict": { + "doctrine/dbal": "<3.6", "symfony/cache": "<6.4.12|>=7.0,<7.1.5" }, "require-dev": { - "doctrine/dbal": "^2.13.1|^3|^4", + "doctrine/dbal": "^3.6|^4", "predis/predis": "^1.1|^2.0", "symfony/cache": "^6.4.12|^7.1.5", - "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" + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/mime": "^6.4|^7.0", + "symfony/rate-limiter": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -3871,7 +4205,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.4.18" + "source": "https://github.com/symfony/http-foundation/tree/v7.2.3" }, "funding": [ { @@ -3887,77 +4221,77 @@ "type": "tidelift" } ], - "time": "2025-01-09T15:48:56+00:00" + "time": "2025-01-17T10:56:55+00:00" }, { "name": "symfony/http-kernel", - "version": "v6.4.19", + "version": "v7.2.4", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "88f2c9f7feff86bb7b9105c5151bc2c1404cd64c" + "reference": "9f1103734c5789798fefb90e91de4586039003ed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/88f2c9f7feff86bb7b9105c5151bc2c1404cd64c", - "reference": "88f2c9f7feff86bb7b9105c5151bc2c1404cd64c", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9f1103734c5789798fefb90e91de4586039003ed", + "reference": "9f1103734c5789798fefb90e91de4586039003ed", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "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/event-dispatcher": "^6.4|^7.0", "symfony/http-foundation": "^6.4|^7.0", "symfony/polyfill-ctype": "^1.8" }, "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<6.1", - "symfony/console": "<5.4", + "symfony/browser-kit": "<6.4", + "symfony/cache": "<6.4", + "symfony/config": "<6.4", + "symfony/console": "<6.4", "symfony/dependency-injection": "<6.4", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", + "symfony/doctrine-bridge": "<6.4", + "symfony/form": "<6.4", + "symfony/http-client": "<6.4", "symfony/http-client-contracts": "<2.5", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", + "symfony/mailer": "<6.4", + "symfony/messenger": "<6.4", + "symfony/translation": "<6.4", "symfony/translation-contracts": "<2.5", - "symfony/twig-bridge": "<5.4", + "symfony/twig-bridge": "<6.4", "symfony/validator": "<6.4", - "symfony/var-dumper": "<6.3", - "twig/twig": "<2.13" + "symfony/var-dumper": "<6.4", + "twig/twig": "<3.12" }, "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/browser-kit": "^6.4|^7.0", + "symfony/clock": "^6.4|^7.0", + "symfony/config": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0", + "symfony/css-selector": "^6.4|^7.0", "symfony/dependency-injection": "^6.4|^7.0", - "symfony/dom-crawler": "^5.4|^6.0|^7.0", - "symfony/expression-language": "^5.4|^6.0|^7.0", - "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/dom-crawler": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/finder": "^6.4|^7.0", "symfony/http-client-contracts": "^2.5|^3", - "symfony/process": "^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.4.4|^7.0.4", - "symfony/stopwatch": "^5.4|^6.0|^7.0", - "symfony/translation": "^5.4|^6.0|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/property-access": "^7.1", + "symfony/routing": "^6.4|^7.0", + "symfony/serializer": "^7.1", + "symfony/stopwatch": "^6.4|^7.0", + "symfony/translation": "^6.4|^7.0", "symfony/translation-contracts": "^2.5|^3", - "symfony/uid": "^5.4|^6.0|^7.0", + "symfony/uid": "^6.4|^7.0", "symfony/validator": "^6.4|^7.0", - "symfony/var-dumper": "^5.4|^6.4|^7.0", - "symfony/var-exporter": "^6.2|^7.0", - "twig/twig": "^2.13|^3.0.4" + "symfony/var-dumper": "^6.4|^7.0", + "symfony/var-exporter": "^6.4|^7.0", + "twig/twig": "^3.12" }, "type": "library", "autoload": { @@ -3985,7 +4319,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v6.4.19" + "source": "https://github.com/symfony/http-kernel/tree/v7.2.4" }, "funding": [ { @@ -4001,43 +4335,43 @@ "type": "tidelift" } ], - "time": "2025-02-26T10:51:37+00:00" + "time": "2025-02-26T11:01:22+00:00" }, { "name": "symfony/mailer", - "version": "v6.4.18", + "version": "v7.2.3", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "e93a6ae2767d7f7578c2b7961d9d8e27580b2b11" + "reference": "f3871b182c44997cf039f3b462af4a48fb85f9d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/e93a6ae2767d7f7578c2b7961d9d8e27580b2b11", - "reference": "e93a6ae2767d7f7578c2b7961d9d8e27580b2b11", + "url": "https://api.github.com/repos/symfony/mailer/zipball/f3871b182c44997cf039f3b462af4a48fb85f9d3", + "reference": "f3871b182c44997cf039f3b462af4a48fb85f9d3", "shasum": "" }, "require": { "egulias/email-validator": "^2.1.10|^3|^4", - "php": ">=8.1", + "php": ">=8.2", "psr/event-dispatcher": "^1", "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0|^7.0", - "symfony/mime": "^6.2|^7.0", + "symfony/event-dispatcher": "^6.4|^7.0", + "symfony/mime": "^7.2", "symfony/service-contracts": "^2.5|^3" }, "conflict": { "symfony/http-client-contracts": "<2.5", - "symfony/http-kernel": "<5.4", - "symfony/messenger": "<6.2", - "symfony/mime": "<6.2", - "symfony/twig-bridge": "<6.2.1" + "symfony/http-kernel": "<6.4", + "symfony/messenger": "<6.4", + "symfony/mime": "<6.4", + "symfony/twig-bridge": "<6.4" }, "require-dev": { - "symfony/console": "^5.4|^6.0|^7.0", - "symfony/http-client": "^5.4|^6.0|^7.0", - "symfony/messenger": "^6.2|^7.0", - "symfony/twig-bridge": "^6.2|^7.0" + "symfony/console": "^6.4|^7.0", + "symfony/http-client": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0", + "symfony/twig-bridge": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -4065,7 +4399,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v6.4.18" + "source": "https://github.com/symfony/mailer/tree/v7.2.3" }, "funding": [ { @@ -4081,25 +4415,24 @@ "type": "tidelift" } ], - "time": "2025-01-24T15:27:15+00:00" + "time": "2025-01-27T11:08:17+00:00" }, { "name": "symfony/mime", - "version": "v6.4.19", + "version": "v7.2.4", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "ac537b6c55ccc2c749f3c979edfa9ec14aaed4f3" + "reference": "87ca22046b78c3feaff04b337f33b38510fd686b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/ac537b6c55ccc2c749f3c979edfa9ec14aaed4f3", - "reference": "ac537b6c55ccc2c749f3c979edfa9ec14aaed4f3", + "url": "https://api.github.com/repos/symfony/mime/zipball/87ca22046b78c3feaff04b337f33b38510fd686b", + "reference": "87ca22046b78c3feaff04b337f33b38510fd686b", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", + "php": ">=8.2", "symfony/polyfill-intl-idn": "^1.10", "symfony/polyfill-mbstring": "^1.0" }, @@ -4107,17 +4440,17 @@ "egulias/email-validator": "~3.0.0", "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", - "symfony/mailer": "<5.4", + "symfony/mailer": "<6.4", "symfony/serializer": "<6.4.3|>7.0,<7.0.3" }, "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/process": "^5.4|^6.4|^7.0", - "symfony/property-access": "^5.4|^6.0|^7.0", - "symfony/property-info": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/property-access": "^6.4|^7.0", + "symfony/property-info": "^6.4|^7.0", "symfony/serializer": "^6.4.3|^7.0.3" }, "type": "library", @@ -4150,7 +4483,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v6.4.19" + "source": "https://github.com/symfony/mime/tree/v7.2.4" }, "funding": [ { @@ -4166,7 +4499,7 @@ "type": "tidelift" } ], - "time": "2025-02-17T21:23:52+00:00" + "time": "2025-02-19T08:51:20+00:00" }, { "name": "symfony/polyfill-ctype", @@ -4806,20 +5139,20 @@ }, { "name": "symfony/process", - "version": "v6.4.19", + "version": "v7.2.4", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "7a1c12e87b08ec9c97abdd188c9b3f5a40e37fc3" + "reference": "d8f411ff3c7ddc4ae9166fb388d1190a2df5b5cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/7a1c12e87b08ec9c97abdd188c9b3f5a40e37fc3", - "reference": "7a1c12e87b08ec9c97abdd188c9b3f5a40e37fc3", + "url": "https://api.github.com/repos/symfony/process/zipball/d8f411ff3c7ddc4ae9166fb388d1190a2df5b5cf", + "reference": "d8f411ff3c7ddc4ae9166fb388d1190a2df5b5cf", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "type": "library", "autoload": { @@ -4847,7 +5180,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v6.4.19" + "source": "https://github.com/symfony/process/tree/v7.2.4" }, "funding": [ { @@ -4863,40 +5196,38 @@ "type": "tidelift" } ], - "time": "2025-02-04T13:35:48+00:00" + "time": "2025-02-05T08:33:46+00:00" }, { "name": "symfony/routing", - "version": "v6.4.18", + "version": "v7.2.3", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "e9bfc94953019089acdfb9be51c1b9142c4afa68" + "reference": "ee9a67edc6baa33e5fae662f94f91fd262930996" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/e9bfc94953019089acdfb9be51c1b9142c4afa68", - "reference": "e9bfc94953019089acdfb9be51c1b9142c4afa68", + "url": "https://api.github.com/repos/symfony/routing/zipball/ee9a67edc6baa33e5fae662f94f91fd262930996", + "reference": "ee9a67edc6baa33e5fae662f94f91fd262930996", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3" }, "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<6.2", - "symfony/dependency-injection": "<5.4", - "symfony/yaml": "<5.4" + "symfony/config": "<6.4", + "symfony/dependency-injection": "<6.4", + "symfony/yaml": "<6.4" }, "require-dev": { - "doctrine/annotations": "^1.12|^2", "psr/log": "^1|^2|^3", - "symfony/config": "^6.2|^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" + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/yaml": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -4930,7 +5261,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v6.4.18" + "source": "https://github.com/symfony/routing/tree/v7.2.3" }, "funding": [ { @@ -4946,7 +5277,7 @@ "type": "tidelift" } ], - "time": "2025-01-09T08:51:02+00:00" + "time": "2025-01-17T10:56:55+00:00" }, { "name": "symfony/service-contracts", @@ -5120,33 +5451,33 @@ }, { "name": "symfony/translation", - "version": "v6.4.19", + "version": "v7.2.4", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "3b9bf9f33997c064885a7bfc126c14b9daa0e00e" + "reference": "283856e6981286cc0d800b53bd5703e8e363f05a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/3b9bf9f33997c064885a7bfc126c14b9daa0e00e", - "reference": "3b9bf9f33997c064885a7bfc126c14b9daa0e00e", + "url": "https://api.github.com/repos/symfony/translation/zipball/283856e6981286cc0d800b53bd5703e8e363f05a", + "reference": "283856e6981286cc0d800b53bd5703e8e363f05a", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "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/config": "<6.4", + "symfony/console": "<6.4", + "symfony/dependency-injection": "<6.4", "symfony/http-client-contracts": "<2.5", - "symfony/http-kernel": "<5.4", + "symfony/http-kernel": "<6.4", "symfony/service-contracts": "<2.5", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" + "symfony/twig-bundle": "<6.4", + "symfony/yaml": "<6.4" }, "provide": { "symfony/translation-implementation": "2.3|3.0" @@ -5154,17 +5485,17 @@ "require-dev": { "nikic/php-parser": "^4.18|^5.0", "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/config": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/finder": "^6.4|^7.0", "symfony/http-client-contracts": "^2.5|^3.0", - "symfony/http-kernel": "^5.4|^6.0|^7.0", - "symfony/intl": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/intl": "^6.4|^7.0", "symfony/polyfill-intl-icu": "^1.21", - "symfony/routing": "^5.4|^6.0|^7.0", + "symfony/routing": "^6.4|^7.0", "symfony/service-contracts": "^2.5|^3", - "symfony/yaml": "^5.4|^6.0|^7.0" + "symfony/yaml": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -5195,7 +5526,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v6.4.19" + "source": "https://github.com/symfony/translation/tree/v7.2.4" }, "funding": [ { @@ -5211,7 +5542,7 @@ "type": "tidelift" } ], - "time": "2025-02-13T10:18:43+00:00" + "time": "2025-02-13T10:27:23+00:00" }, { "name": "symfony/translation-contracts", @@ -5293,24 +5624,24 @@ }, { "name": "symfony/uid", - "version": "v6.4.13", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/uid.git", - "reference": "18eb207f0436a993fffbdd811b5b8fa35fa5e007" + "reference": "2d294d0c48df244c71c105a169d0190bfb080426" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/uid/zipball/18eb207f0436a993fffbdd811b5b8fa35fa5e007", - "reference": "18eb207f0436a993fffbdd811b5b8fa35fa5e007", + "url": "https://api.github.com/repos/symfony/uid/zipball/2d294d0c48df244c71c105a169d0190bfb080426", + "reference": "2d294d0c48df244c71c105a169d0190bfb080426", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/polyfill-uuid": "^1.15" }, "require-dev": { - "symfony/console": "^5.4|^6.0|^7.0" + "symfony/console": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -5347,7 +5678,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/uid/tree/v6.4.13" + "source": "https://github.com/symfony/uid/tree/v7.2.0" }, "funding": [ { @@ -5363,38 +5694,36 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:18:03+00:00" + "time": "2024-09-25T14:21:43+00:00" }, { "name": "symfony/var-dumper", - "version": "v6.4.18", + "version": "v7.2.3", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "4ad10cf8b020e77ba665305bb7804389884b4837" + "reference": "82b478c69745d8878eb60f9a049a4d584996f73a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/4ad10cf8b020e77ba665305bb7804389884b4837", - "reference": "4ad10cf8b020e77ba665305bb7804389884b4837", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/82b478c69745d8878eb60f9a049a4d584996f73a", + "reference": "82b478c69745d8878eb60f9a049a4d584996f73a", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", + "php": ">=8.2", "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "symfony/console": "<5.4" + "symfony/console": "<6.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" + "symfony/console": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/uid": "^6.4|^7.0", + "twig/twig": "^3.12" }, "bin": [ "Resources/bin/var-dump-server" @@ -5432,7 +5761,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.4.18" + "source": "https://github.com/symfony/var-dumper/tree/v7.2.3" }, "funding": [ { @@ -5448,7 +5777,7 @@ "type": "tidelift" } ], - "time": "2025-01-17T11:26:11+00:00" + "time": "2025-01-17T11:39:41+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", @@ -5856,77 +6185,6 @@ }, "time": "2024-11-21T13:46:39+00:00" }, - { - "name": "filp/whoops", - "version": "2.17.0", - "source": { - "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "075bc0c26631110584175de6523ab3f1652eb28e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/075bc0c26631110584175de6523ab3f1652eb28e", - "reference": "075bc0c26631110584175de6523ab3f1652eb28e", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.8 || ^9.3.3", - "symfony/var-dumper": "^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.17.0" - }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "time": "2025-01-25T12:00:00+00:00" - }, { "name": "hamcrest/hamcrest-php", "version": "v2.0.1", @@ -6184,94 +6442,6 @@ ], "time": "2025-02-12T12:17:51+00:00" }, - { - "name": "nunomaduro/collision", - "version": "v6.4.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/collision.git", - "reference": "f05978827b9343cba381ca05b8c7deee346b6015" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/f05978827b9343cba381ca05b8c7deee346b6015", - "reference": "f05978827b9343cba381ca05b8c7deee346b6015", - "shasum": "" - }, - "require": { - "filp/whoops": "^2.14.5", - "php": "^8.0.0", - "symfony/console": "^6.0.2" - }, - "require-dev": { - "brianium/paratest": "^6.4.1", - "laravel/framework": "^9.26.1", - "laravel/pint": "^1.1.1", - "nunomaduro/larastan": "^1.0.3", - "nunomaduro/mock-final-classes": "^1.1.0", - "orchestra/testbench": "^7.7", - "phpunit/phpunit": "^9.5.23", - "spatie/ignition": "^1.4.1" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" - ] - }, - "branch-alias": { - "dev-develop": "6.x-dev" - } - }, - "autoload": { - "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-01-03T12:54:54+00:00" - }, { "name": "phar-io/manifest", "version": "2.0.4", @@ -7838,6 +8008,80 @@ ], "time": "2024-12-02T13:28:15+00:00" }, + { + "name": "spatie/error-solutions", + "version": "1.1.3", + "source": { + "type": "git", + "url": "https://github.com/spatie/error-solutions.git", + "reference": "e495d7178ca524f2dd0fe6a1d99a1e608e1c9936" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/error-solutions/zipball/e495d7178ca524f2dd0fe6a1d99a1e608e1c9936", + "reference": "e495d7178ca524f2dd0fe6a1d99a1e608e1c9936", + "shasum": "" + }, + "require": { + "php": "^8.0" + }, + "require-dev": { + "illuminate/broadcasting": "^10.0|^11.0|^12.0", + "illuminate/cache": "^10.0|^11.0|^12.0", + "illuminate/support": "^10.0|^11.0|^12.0", + "livewire/livewire": "^2.11|^3.5.20", + "openai-php/client": "^0.10.1", + "orchestra/testbench": "8.22.3|^9.0|^10.0", + "pestphp/pest": "^2.20|^3.0", + "phpstan/phpstan": "^2.1", + "psr/simple-cache": "^3.0", + "psr/simple-cache-implementation": "^3.0", + "spatie/ray": "^1.28", + "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", + "autoload": { + "psr-4": { + "Spatie\\Ignition\\": "legacy/ignition", + "Spatie\\ErrorSolutions\\": "src", + "Spatie\\LaravelIgnition\\": "legacy/laravel-ignition" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ruben Van Assche", + "email": "ruben@spatie.be", + "role": "Developer" + } + ], + "description": "This is my package error-solutions", + "homepage": "https://github.com/spatie/error-solutions", + "keywords": [ + "error-solutions", + "spatie" + ], + "support": { + "issues": "https://github.com/spatie/error-solutions/issues", + "source": "https://github.com/spatie/error-solutions/tree/1.1.3" + }, + "funding": [ + { + "url": "https://github.com/Spatie", + "type": "github" + } + ], + "time": "2025-02-14T12:29:50+00:00" + }, { "name": "spatie/flare-client-php", "version": "1.10.1", @@ -7909,29 +8153,29 @@ }, { "name": "spatie/ignition", - "version": "1.14.2", + "version": "1.15.1", "source": { "type": "git", "url": "https://github.com/spatie/ignition.git", - "reference": "5e11c11f675bb5251f061491a493e04a1a571532" + "reference": "31f314153020aee5af3537e507fef892ffbf8c85" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/5e11c11f675bb5251f061491a493e04a1a571532", - "reference": "5e11c11f675bb5251f061491a493e04a1a571532", + "url": "https://api.github.com/repos/spatie/ignition/zipball/31f314153020aee5af3537e507fef892ffbf8c85", + "reference": "31f314153020aee5af3537e507fef892ffbf8c85", "shasum": "" }, "require": { "ext-json": "*", "ext-mbstring": "*", "php": "^8.0", - "spatie/backtrace": "^1.5.3", - "spatie/flare-client-php": "^1.4.0", + "spatie/error-solutions": "^1.0", + "spatie/flare-client-php": "^1.7", "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", + "illuminate/cache": "^9.52|^10.0|^11.0|^12.0", "mockery/mockery": "^1.4", "pestphp/pest": "^1.20|^2.0", "phpstan/extension-installer": "^1.1", @@ -7988,45 +8232,46 @@ "type": "github" } ], - "time": "2024-05-29T08:10:20+00:00" + "time": "2025-02-21T14:31:39+00:00" }, { "name": "spatie/laravel-ignition", - "version": "1.7.0", + "version": "2.9.1", "source": { "type": "git", "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "b6d5c33cf0b8260d6540572af2d9bcf9182fe5fb" + "reference": "1baee07216d6748ebd3a65ba97381b051838707a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/b6d5c33cf0b8260d6540572af2d9bcf9182fe5fb", - "reference": "b6d5c33cf0b8260d6540572af2d9bcf9182fe5fb", + "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/1baee07216d6748ebd3a65ba97381b051838707a", + "reference": "1baee07216d6748ebd3a65ba97381b051838707a", "shasum": "" }, "require": { "ext-curl": "*", "ext-json": "*", "ext-mbstring": "*", - "illuminate/support": "^8.77|^9.27", - "monolog/monolog": "^2.3", - "php": "^8.0", - "spatie/flare-client-php": "^1.0.1", - "spatie/ignition": "<= 1.14.2", - "symfony/console": "^5.0|^6.0", - "symfony/var-dumper": "^5.0|^6.0" + "illuminate/support": "^10.0|^11.0|^12.0", + "php": "^8.1", + "spatie/ignition": "^1.15", + "symfony/console": "^6.2.3|^7.0", + "symfony/var-dumper": "^6.2.3|^7.0" }, "require-dev": { - "filp/whoops": "^2.14", - "livewire/livewire": "^2.8|dev-develop", - "mockery/mockery": "^1.4", - "nunomaduro/larastan": "^1.0", - "orchestra/testbench": "^6.23|^7.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/laravel-ray": "^1.27" + "livewire/livewire": "^2.11|^3.3.5", + "mockery/mockery": "^1.5.1", + "openai-php/client": "^0.8.1|^0.10", + "orchestra/testbench": "8.22.3|^9.0|^10.0", + "pestphp/pest": "^2.34|^3.7", + "phpstan/extension-installer": "^1.3.1", + "phpstan/phpstan-deprecation-rules": "^1.1.1|^2.0", + "phpstan/phpstan-phpunit": "^1.3.16|^2.0", + "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": { @@ -8078,20 +8323,20 @@ "type": "github" } ], - "time": "2024-06-13T07:21:06+00:00" + "time": "2025-02-20T13:13:55+00:00" }, { "name": "squizlabs/php_codesniffer", - "version": "3.11.3", + "version": "3.12.0", "source": { "type": "git", "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", - "reference": "ba05f990e79cbe69b9f35c8c1ac8dca7eecc3a10" + "reference": "2d1b63db139c3c6ea0c927698e5160f8b3b8d630" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/ba05f990e79cbe69b9f35c8c1ac8dca7eecc3a10", - "reference": "ba05f990e79cbe69b9f35c8c1ac8dca7eecc3a10", + "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/2d1b63db139c3c6ea0c927698e5160f8b3b8d630", + "reference": "2d1b63db139c3c6ea0c927698e5160f8b3b8d630", "shasum": "" }, "require": { @@ -8158,11 +8403,11 @@ "type": "open_collective" }, { - "url": "https://thanks.dev/phpcsstandards", + "url": "https://thanks.dev/u/gh/phpcsstandards", "type": "thanks_dev" } ], - "time": "2025-01-23T17:04:15+00:00" + "time": "2025-03-18T05:04:51+00:00" }, { "name": "symfony/yaml", @@ -8289,12 +8534,12 @@ ], "aliases": [], "minimum-stability": "dev", - "stability-flags": [], + "stability-flags": {}, "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": "^8.0" + "php": "^8.2" }, - "platform-dev": [], + "platform-dev": {}, "plugin-api-version": "2.6.0" } From f686f5044dcbc4730aa08a005691517fa070c70a Mon Sep 17 00:00:00 2001 From: boulganafatimaezzahra Date: Wed, 19 Mar 2025 16:11:33 +0000 Subject: [PATCH 05/41] =?UTF-8?q?Ajout=20de=20la=20gestion=20des=20cat?= =?UTF-8?q?=C3=A9gories=20de=20produits=20et=20filtrage?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.example | 2 +- app/Http/Controllers/CategorieController.php | 77 +++++++++++++++++++ app/Http/Controllers/ProductController.php | 25 +++++- app/Http/Kernel.php | 3 +- app/Models/Categorie.php | 18 +++++ app/Models/Product.php | 17 +++- config/database.php | 4 +- database/factories/CategorieFactory.php | 24 ++++++ database/factories/ProductFactory.php | 28 +++++++ ...5_03_19_124108_create_categories_table.php | 29 +++++++ ..._column_id_categorie_to_products_table.php | 29 +++++++ database/seeders/CategorieSeeder.php | 18 +++++ database/seeders/DatabaseSeeder.php | 4 + database/seeders/ProductSeeder.php | 18 +++++ resources/views/product/index.blade.php | 31 ++++++-- resources/views/product/show.blade.php | 36 ++++----- routes/api.php | 1 + routes/web.php | 4 + 18 files changed, 334 insertions(+), 34 deletions(-) create mode 100644 app/Http/Controllers/CategorieController.php create mode 100644 app/Models/Categorie.php create mode 100644 database/factories/CategorieFactory.php create mode 100644 database/factories/ProductFactory.php create mode 100644 database/migrations/2025_03_19_124108_create_categories_table.php create mode 100644 database/migrations/2025_03_19_124629_add_column_id_categorie_to_products_table.php create mode 100644 database/seeders/CategorieSeeder.php create mode 100644 database/seeders/ProductSeeder.php diff --git a/.env.example b/.env.example index 8510237..fa60352 100644 --- a/.env.example +++ b/.env.example @@ -11,7 +11,7 @@ LOG_LEVEL=debug DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 -DB_DATABASE=laravel +DB_DATABASE=onlineStore DB_USERNAME=root DB_PASSWORD= diff --git a/app/Http/Controllers/CategorieController.php b/app/Http/Controllers/CategorieController.php new file mode 100644 index 0000000..35860f9 --- /dev/null +++ b/app/Http/Controllers/CategorieController.php @@ -0,0 +1,77 @@ +validate([ + "name" => "required|string|max:255", + "description" => "string", + ]); + Categorie::create($request->only(['name', 'description'])); + + return redirect()->route("categorie.index"); +} + + + + /** + * Show the form for editing the specified resource. + */ + public function edit(string $id) + { + $categorie=Categorie::findOrFail($id); + return view("categorie.edit",compact("categorie")); + } + + /** + * Update the specified resource in storage. + */ + public function update(Request $request, string $id) + { + $request->validate([ + "name"=>"required|string|max:255", + "descpription"=>"string", + ]); + $categorie=Categorie::findOrFail($id); + $categorie->update($request->all()); + return redirect()->route("categorie.index"); + } + + /** + * Remove the specified resource from storage. + */ + public function destroy(string $id) + { + $categorie=Categorie::findOrFail($id); + $categorie->delete(); + return redirect()->route("categorie.index"); + } +} diff --git a/app/Http/Controllers/ProductController.php b/app/Http/Controllers/ProductController.php index d27a3a3..3fd214e 100644 --- a/app/Http/Controllers/ProductController.php +++ b/app/Http/Controllers/ProductController.php @@ -2,21 +2,40 @@ namespace App\Http\Controllers; +use App\Models\Categorie; use App\Models\Product; use Illuminate\Http\Request; class ProductController extends Controller { - public function index() + public function index(Request $request) { $viewData = []; $viewData["title"] = "Products - Online Store"; - $viewData["subtitle"] = "List of products"; - $viewData["products"] = Product::all(); + $viewData["subtitle"] = "List of products"; + + // Initialisation de la requête pour récupérer les produits + $query = Product::query(); + + // Vérifier si un ID de catégorie est présent dans la requête + if ($request->has('category_id') && $request->category_id != '') { + // Filtrer les produits par la catégorie sélectionnée + $query->where('categorie_id', $request->category_id); + } + + // Exécuter la requête pour obtenir les produits filtrés + $viewData["products"] = $query->get(); + + // Récupérer toutes les catégories + $viewData["categories"] = Categorie::all(); + + // Retourner la vue avec les produits filtrés et les catégories return view('product.index')->with("viewData", $viewData); } + + public function show($id) { $viewData = []; diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index c10d1c5..e37b10e 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -16,7 +16,7 @@ class Kernel extends HttpKernel protected $middleware = [ // \App\Http\Middleware\TrustHosts::class, \App\Http\Middleware\TrustProxies::class, - \Fruitcake\Cors\HandleCors::class, + \Illuminate\Http\Middleware\HandleCors::class, \App\Http\Middleware\PreventRequestsDuringMaintenance::class, \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, \App\Http\Middleware\TrimStrings::class, @@ -54,6 +54,7 @@ class Kernel extends HttpKernel * @var array */ protected $routeMiddleware = [ + 'auth' => \App\Http\Middleware\Authenticate::class, 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class, diff --git a/app/Models/Categorie.php b/app/Models/Categorie.php new file mode 100644 index 0000000..eecabda --- /dev/null +++ b/app/Models/Categorie.php @@ -0,0 +1,18 @@ +hasMany(Product::class, "categorie_id"); + } +} diff --git a/app/Models/Product.php b/app/Models/Product.php index fb8585a..4538986 100644 --- a/app/Models/Product.php +++ b/app/Models/Product.php @@ -2,8 +2,9 @@ namespace App\Models; -use Illuminate\Database\Eloquent\Model; use App\Models\Item; +use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Factories\HasFactory; class Product extends Model { @@ -18,6 +19,8 @@ class Product extends Model * $this->attributes['updated_at'] - timestamp - contains the product update date * $this->items - Item[] - contains the associated items */ + use HasFactory; + protected $fillable = ['name', 'description', 'image', 'price', 'categorie_id']; public static function validate($request) { @@ -26,6 +29,7 @@ public static function validate($request) "description" => "required", "price" => "required|numeric|gt:0", 'image' => 'image', + "categorie_id"=>"reduired|exists:categories,id" ]); } @@ -123,4 +127,15 @@ public function setItems($items) { $this->items = $items; } + + public function getCategoryieId(){ + return $this->attributes["categorie_id"]; + } + public function SetCategorieId($categorieId){ + return $this->attributes["categorie_id"]=$categorieId; + } + public function categorie() + { + return $this->belongsTo(Categorie::class, 'categorie_id'); + } } diff --git a/config/database.php b/config/database.php index 0faebae..9576378 100644 --- a/config/database.php +++ b/config/database.php @@ -48,8 +48,8 @@ 'url' => env('DATABASE_URL'), 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', '3306'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), + 'database' => env('DB_DATABASE', 'onlineStore'), + 'username' => env('DB_USERNAME', 'root'), 'password' => env('DB_PASSWORD', ''), 'unix_socket' => env('DB_SOCKET', ''), 'charset' => 'utf8mb4', diff --git a/database/factories/CategorieFactory.php b/database/factories/CategorieFactory.php new file mode 100644 index 0000000..0045649 --- /dev/null +++ b/database/factories/CategorieFactory.php @@ -0,0 +1,24 @@ + + */ +class CategorieFactory extends Factory +{ + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + 'name' => $this->faker->word, + 'description' => $this->faker->sentence, + ]; + } +} diff --git a/database/factories/ProductFactory.php b/database/factories/ProductFactory.php new file mode 100644 index 0000000..ca6bced --- /dev/null +++ b/database/factories/ProductFactory.php @@ -0,0 +1,28 @@ + + */ +class ProductFactory extends Factory +{ + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + 'name' => $this->faker->word, + 'description' => $this->faker->sentence, + 'image' => $this->faker->imageUrl(), + 'price' => $this->faker->randomFloat(2, 10, 1000), + 'categorie_id' => Categorie::factory(), // Creates a category for each product + ]; + } +} diff --git a/database/migrations/2025_03_19_124108_create_categories_table.php b/database/migrations/2025_03_19_124108_create_categories_table.php new file mode 100644 index 0000000..aa9d348 --- /dev/null +++ b/database/migrations/2025_03_19_124108_create_categories_table.php @@ -0,0 +1,29 @@ +id(); + $table->string("name"); + $table->string("description")->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('categories'); + } +}; diff --git a/database/migrations/2025_03_19_124629_add_column_id_categorie_to_products_table.php b/database/migrations/2025_03_19_124629_add_column_id_categorie_to_products_table.php new file mode 100644 index 0000000..29622f1 --- /dev/null +++ b/database/migrations/2025_03_19_124629_add_column_id_categorie_to_products_table.php @@ -0,0 +1,29 @@ +foreignId("categorie_id")->constrained()->cascadeOnDelete(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('products', function (Blueprint $table) { + $table->dropForeign(['categorie_id']); + $table->dropColumn("categorie_id"); + }); + } +}; diff --git a/database/seeders/CategorieSeeder.php b/database/seeders/CategorieSeeder.php new file mode 100644 index 0000000..d742809 --- /dev/null +++ b/database/seeders/CategorieSeeder.php @@ -0,0 +1,18 @@ +create(); + } +} diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 71f673f..9eab230 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -15,5 +15,9 @@ class DatabaseSeeder extends Seeder public function run() { // \App\Models\User::factory(10)->create(); + $this->call([ + CategorieSeeder::class, + ProductSeeder::class, + ]); } } diff --git a/database/seeders/ProductSeeder.php b/database/seeders/ProductSeeder.php new file mode 100644 index 0000000..429af75 --- /dev/null +++ b/database/seeders/ProductSeeder.php @@ -0,0 +1,18 @@ +create(); + } +} diff --git a/resources/views/product/index.blade.php b/resources/views/product/index.blade.php index 64c3e18..56dd349 100644 --- a/resources/views/product/index.blade.php +++ b/resources/views/product/index.blade.php @@ -1,18 +1,35 @@ @extends('layouts.app') + @section('title', $viewData["title"]) @section('subtitle', $viewData["subtitle"]) + @section('content') +
+
+ +
+
+
@foreach ($viewData["products"] as $product) -
- @endsection diff --git a/resources/views/product/show.blade.php b/resources/views/product/show.blade.php index 801ea09..5d68771 100644 --- a/resources/views/product/show.blade.php +++ b/resources/views/product/show.blade.php @@ -1,34 +1,32 @@ @extends('layouts.app') + @section('title', $viewData["title"]) @section('subtitle', $viewData["subtitle"]) + @section('content')
- getImage()) }}" class="img-fluid rounded-start"> + {{ $viewData['product']->name }}
- {{ $viewData["product"]->getName() }} (${{ $viewData["product"]->getPrice() }}) + {{ $viewData['product']->name }} (${{ $viewData['product']->price }})
-

{{ $viewData["product"]->getDescription() }}

-

-

-
- @csrf -
-
-
Quantity
- -
-
-
- -
-
-
-

+

{{ $viewData['product']->description }}

+ +
+ +
diff --git a/routes/api.php b/routes/api.php index eb6fa48..abadb76 100644 --- a/routes/api.php +++ b/routes/api.php @@ -17,3 +17,4 @@ Route::middleware('auth:sanctum')->get('/user', function (Request $request) { return $request->user(); }); + diff --git a/routes/web.php b/routes/web.php index 5252f46..af1cb3d 100644 --- a/routes/web.php +++ b/routes/web.php @@ -1,6 +1,7 @@ Date: Wed, 19 Mar 2025 23:03:40 +0000 Subject: [PATCH 06/41] L'ajout au table produit un champ quantity_store --- database/migrations/2022_02_11_153916_create_products_table.php | 1 + 1 file changed, 1 insertion(+) diff --git a/database/migrations/2022_02_11_153916_create_products_table.php b/database/migrations/2022_02_11_153916_create_products_table.php index 2eecdc2..e0a4542 100644 --- a/database/migrations/2022_02_11_153916_create_products_table.php +++ b/database/migrations/2022_02_11_153916_create_products_table.php @@ -19,6 +19,7 @@ public function up() $table->text('description'); $table->string('image'); $table->integer('price'); + $table->integer('quantity_store') $table->timestamps(); }); } From e2c4375d854507b03091c8319929c85ed7c1a156 Mon Sep 17 00:00:00 2001 From: Imane Date: Wed, 19 Mar 2025 23:39:09 +0000 Subject: [PATCH 07/41] Add champ quantity_store --- database/migrations/2022_02_11_153916_create_products_table.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/database/migrations/2022_02_11_153916_create_products_table.php b/database/migrations/2022_02_11_153916_create_products_table.php index e0a4542..a67a3a1 100644 --- a/database/migrations/2022_02_11_153916_create_products_table.php +++ b/database/migrations/2022_02_11_153916_create_products_table.php @@ -19,7 +19,7 @@ public function up() $table->text('description'); $table->string('image'); $table->integer('price'); - $table->integer('quantity_store') + $table->integer('quantity_store'); $table->timestamps(); }); } From eafdccf823dab0c9d1abcb97f23ccec8b594854e Mon Sep 17 00:00:00 2001 From: Imane Date: Thu, 20 Mar 2025 06:51:07 +0000 Subject: [PATCH 08/41] Update views of product --- app/Models/Product.php | 14 +++++++++++++- resources/views/product/index.blade.php | 4 ++++ resources/views/product/show.blade.php | 3 +++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/app/Models/Product.php b/app/Models/Product.php index 4538986..4058873 100644 --- a/app/Models/Product.php +++ b/app/Models/Product.php @@ -20,7 +20,7 @@ class Product extends Model * $this->items - Item[] - contains the associated items */ use HasFactory; - protected $fillable = ['name', 'description', 'image', 'price', 'categorie_id']; + protected $fillable = ['name', 'description', 'image', 'price', 'categorie_id', 'quantity_store']; public static function validate($request) { @@ -29,6 +29,7 @@ public static function validate($request) "description" => "required", "price" => "required|numeric|gt:0", 'image' => 'image', + "quantity_store"=>"required|numeric|gt:0", "categorie_id"=>"reduired|exists:categories,id" ]); } @@ -93,6 +94,7 @@ public function setPrice($price) $this->attributes['price'] = $price; } + public function getCreatedAt() { return $this->attributes['created_at']; @@ -138,4 +140,14 @@ public function categorie() { return $this->belongsTo(Categorie::class, 'categorie_id'); } + + public function getQuantityStore() + { + return $this->attributes['quantity_store']; + } + + public function setQuantityStore($quantity_store) + { + $this->attributes['quantity_store'] = $quantity_store; + } } diff --git a/resources/views/product/index.blade.php b/resources/views/product/index.blade.php index 56dd349..73e4057 100644 --- a/resources/views/product/index.blade.php +++ b/resources/views/product/index.blade.php @@ -14,6 +14,7 @@ {{ $category->name }} @endforeach +
@@ -27,6 +28,9 @@ {{ $product->getName() }} +

+ Quantity in stock : {{ $product->getQuantityStore() }} +

diff --git a/resources/views/product/show.blade.php b/resources/views/product/show.blade.php index 5d68771..6ef6518 100644 --- a/resources/views/product/show.blade.php +++ b/resources/views/product/show.blade.php @@ -15,6 +15,8 @@ {{ $viewData['product']->name }} (${{ $viewData['product']->price }})

{{ $viewData['product']->description }}

+

Quantity in stock : {{ $viewData['product']->getQuantityStore() }}

+
+
From 96520d457d1a8efc4fcfe3d5295fb6ad85e654e5 Mon Sep 17 00:00:00 2001 From: Imane Date: Thu, 20 Mar 2025 07:31:25 +0000 Subject: [PATCH 09/41] Verify quantity in stock before add a product in cart --- app/Http/Controllers/CartController.php | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/app/Http/Controllers/CartController.php b/app/Http/Controllers/CartController.php index 9dcfaba..9909dad 100644 --- a/app/Http/Controllers/CartController.php +++ b/app/Http/Controllers/CartController.php @@ -31,6 +31,17 @@ public function index(Request $request) public function add(Request $request, $id) { + $product=Product::findOrFail($id); + if(!$product){ + return redirect()->route('cart.index')->with('error', "Product not exist"); + } + // récuperer quantity requested + $quantityRequested =$request->input('quantity'); + //verify if quantity requested exists in stock + if ($quantityRequested > $product->getQuantityStore()) { + return redirect()->route('product.show',['id'=>$id])->with('error','Quantity requested is superior than the quantity in stock'); + } + $products = $request->session()->get("products"); $products[$id] = $request->input('quantity'); $request->session()->put('products', $products); From 36c2c54cab25afcbd09af323e5fe50db187daccf Mon Sep 17 00:00:00 2001 From: boulganafatimaezzahra Date: Thu, 20 Mar 2025 11:25:47 +0000 Subject: [PATCH 10/41] ajouter table fournisseur --- Chapter03/onlineStore/.editorconfig | 18 - Chapter03/onlineStore/.env.example | 52 - Chapter03/onlineStore/.gitattributes | 10 - Chapter03/onlineStore/.gitignore | 15 - Chapter03/onlineStore/.styleci.yml | 13 - Chapter03/onlineStore/README.md | 64 - Chapter03/onlineStore/app/Console/Kernel.php | 32 - .../onlineStore/app/Exceptions/Handler.php | 41 - .../app/Http/Controllers/Controller.php | 13 - Chapter03/onlineStore/app/Http/Kernel.php | 67 - .../app/Http/Middleware/Authenticate.php | 21 - .../app/Http/Middleware/EncryptCookies.php | 17 - .../PreventRequestsDuringMaintenance.php | 17 - .../Middleware/RedirectIfAuthenticated.php | 32 - .../app/Http/Middleware/TrimStrings.php | 19 - .../app/Http/Middleware/TrustHosts.php | 20 - .../app/Http/Middleware/TrustProxies.php | 28 - .../app/Http/Middleware/VerifyCsrfToken.php | 17 - Chapter03/onlineStore/app/Models/User.php | 44 - .../app/Providers/AppServiceProvider.php | 28 - .../app/Providers/AuthServiceProvider.php | 30 - .../Providers/BroadcastServiceProvider.php | 21 - .../app/Providers/EventServiceProvider.php | 32 - .../app/Providers/RouteServiceProvider.php | 63 - Chapter03/onlineStore/artisan | 53 - Chapter03/onlineStore/bootstrap/app.php | 55 - .../onlineStore/bootstrap/cache/.gitignore | 2 - Chapter03/onlineStore/composer.json | 62 - Chapter03/onlineStore/composer.lock | 7804 ---------------- Chapter03/onlineStore/config/app.php | 197 - Chapter03/onlineStore/config/auth.php | 111 - Chapter03/onlineStore/config/broadcasting.php | 67 - Chapter03/onlineStore/config/cache.php | 110 - Chapter03/onlineStore/config/cors.php | 34 - Chapter03/onlineStore/config/database.php | 147 - Chapter03/onlineStore/config/filesystems.php | 73 - Chapter03/onlineStore/config/hashing.php | 52 - Chapter03/onlineStore/config/logging.php | 119 - Chapter03/onlineStore/config/mail.php | 117 - Chapter03/onlineStore/config/queue.php | 93 - Chapter03/onlineStore/config/sanctum.php | 65 - Chapter03/onlineStore/config/services.php | 33 - Chapter03/onlineStore/config/session.php | 201 - Chapter03/onlineStore/config/view.php | 36 - Chapter03/onlineStore/database/.gitignore | 1 - .../database/factories/UserFactory.php | 42 - .../2014_10_12_000000_create_users_table.php | 36 - ...12_100000_create_password_resets_table.php | 32 - ..._08_19_000000_create_failed_jobs_table.php | 36 - ...01_create_personal_access_tokens_table.php | 36 - .../database/seeders/DatabaseSeeder.php | 19 - Chapter03/onlineStore/lang/en.json | 7 - Chapter03/onlineStore/lang/en/auth.php | 20 - Chapter03/onlineStore/lang/en/pagination.php | 19 - Chapter03/onlineStore/lang/en/passwords.php | 22 - Chapter03/onlineStore/lang/en/validation.php | 163 - Chapter03/onlineStore/package.json | 18 - Chapter03/onlineStore/phpunit.xml | 31 - Chapter03/onlineStore/public/.htaccess | 21 - Chapter03/onlineStore/public/favicon.ico | 0 Chapter03/onlineStore/public/index.php | 55 - Chapter03/onlineStore/public/robots.txt | 2 - Chapter03/onlineStore/resources/css/app.css | 0 Chapter03/onlineStore/resources/js/app.js | 1 - .../onlineStore/resources/js/bootstrap.js | 28 - .../resources/views/welcome.blade.php | 132 - Chapter03/onlineStore/routes/api.php | 19 - Chapter03/onlineStore/routes/channels.php | 18 - Chapter03/onlineStore/routes/console.php | 19 - Chapter03/onlineStore/routes/web.php | 18 - Chapter03/onlineStore/storage/app/.gitignore | 3 - .../onlineStore/storage/app/public/.gitignore | 2 - .../onlineStore/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 - Chapter03/onlineStore/storage/logs/.gitignore | 2 - .../onlineStore/tests/CreatesApplication.php | 22 - .../onlineStore/tests/Feature/ExampleTest.php | 21 - Chapter03/onlineStore/tests/TestCase.php | 10 - .../onlineStore/tests/Unit/ExampleTest.php | 18 - Chapter03/onlineStore/webpack.mix.js | 17 - Chapter05/onlineStore/.editorconfig | 18 - Chapter05/onlineStore/.env.example | 52 - Chapter05/onlineStore/.gitattributes | 10 - Chapter05/onlineStore/.gitignore | 15 - Chapter05/onlineStore/.styleci.yml | 13 - Chapter05/onlineStore/README.md | 64 - Chapter05/onlineStore/app/Console/Kernel.php | 32 - .../onlineStore/app/Exceptions/Handler.php | 41 - .../app/Http/Controllers/Controller.php | 13 - Chapter05/onlineStore/app/Http/Kernel.php | 67 - .../app/Http/Middleware/Authenticate.php | 21 - .../app/Http/Middleware/EncryptCookies.php | 17 - .../PreventRequestsDuringMaintenance.php | 17 - .../Middleware/RedirectIfAuthenticated.php | 32 - .../app/Http/Middleware/TrimStrings.php | 19 - .../app/Http/Middleware/TrustHosts.php | 20 - .../app/Http/Middleware/TrustProxies.php | 28 - .../app/Http/Middleware/VerifyCsrfToken.php | 17 - Chapter05/onlineStore/app/Models/User.php | 44 - .../app/Providers/AppServiceProvider.php | 28 - .../app/Providers/AuthServiceProvider.php | 30 - .../Providers/BroadcastServiceProvider.php | 21 - .../app/Providers/EventServiceProvider.php | 32 - .../app/Providers/RouteServiceProvider.php | 63 - Chapter05/onlineStore/artisan | 53 - Chapter05/onlineStore/bootstrap/app.php | 55 - .../onlineStore/bootstrap/cache/.gitignore | 2 - Chapter05/onlineStore/composer.json | 62 - Chapter05/onlineStore/composer.lock | 7804 ---------------- Chapter05/onlineStore/config/app.php | 197 - Chapter05/onlineStore/config/auth.php | 111 - Chapter05/onlineStore/config/broadcasting.php | 67 - Chapter05/onlineStore/config/cache.php | 110 - Chapter05/onlineStore/config/cors.php | 34 - Chapter05/onlineStore/config/database.php | 147 - Chapter05/onlineStore/config/filesystems.php | 73 - Chapter05/onlineStore/config/hashing.php | 52 - Chapter05/onlineStore/config/logging.php | 119 - Chapter05/onlineStore/config/mail.php | 117 - Chapter05/onlineStore/config/queue.php | 93 - Chapter05/onlineStore/config/sanctum.php | 65 - Chapter05/onlineStore/config/services.php | 33 - Chapter05/onlineStore/config/session.php | 201 - Chapter05/onlineStore/config/view.php | 36 - Chapter05/onlineStore/database/.gitignore | 1 - .../database/factories/UserFactory.php | 42 - .../2014_10_12_000000_create_users_table.php | 36 - ...12_100000_create_password_resets_table.php | 32 - ..._08_19_000000_create_failed_jobs_table.php | 36 - ...01_create_personal_access_tokens_table.php | 36 - .../database/seeders/DatabaseSeeder.php | 19 - Chapter05/onlineStore/lang/en.json | 7 - Chapter05/onlineStore/lang/en/auth.php | 20 - Chapter05/onlineStore/lang/en/pagination.php | 19 - Chapter05/onlineStore/lang/en/passwords.php | 22 - Chapter05/onlineStore/lang/en/validation.php | 163 - Chapter05/onlineStore/package.json | 18 - Chapter05/onlineStore/phpunit.xml | 31 - Chapter05/onlineStore/public/.htaccess | 21 - Chapter05/onlineStore/public/css/app.css | 20 - Chapter05/onlineStore/public/favicon.ico | 0 Chapter05/onlineStore/public/index.php | 55 - Chapter05/onlineStore/public/robots.txt | 2 - Chapter05/onlineStore/resources/css/app.css | 0 Chapter05/onlineStore/resources/js/app.js | 1 - .../onlineStore/resources/js/bootstrap.js | 28 - .../resources/views/layouts/app.blade.php | 54 - .../resources/views/welcome.blade.php | 7 - Chapter05/onlineStore/routes/api.php | 19 - Chapter05/onlineStore/routes/channels.php | 18 - Chapter05/onlineStore/routes/console.php | 19 - Chapter05/onlineStore/routes/web.php | 18 - Chapter05/onlineStore/storage/app/.gitignore | 3 - .../onlineStore/storage/app/public/.gitignore | 2 - .../onlineStore/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 - Chapter05/onlineStore/storage/logs/.gitignore | 2 - .../onlineStore/tests/CreatesApplication.php | 22 - .../onlineStore/tests/Feature/ExampleTest.php | 21 - Chapter05/onlineStore/tests/TestCase.php | 10 - .../onlineStore/tests/Unit/ExampleTest.php | 18 - Chapter05/onlineStore/webpack.mix.js | 17 - Chapter06/onlineStore/.editorconfig | 18 - Chapter06/onlineStore/.env.example | 52 - Chapter06/onlineStore/.gitattributes | 10 - Chapter06/onlineStore/.gitignore | 15 - Chapter06/onlineStore/.styleci.yml | 13 - Chapter06/onlineStore/README.md | 64 - Chapter06/onlineStore/app/Console/Kernel.php | 32 - .../onlineStore/app/Exceptions/Handler.php | 41 - .../app/Http/Controllers/Controller.php | 13 - .../app/Http/Controllers/HomeController.php | 27 - Chapter06/onlineStore/app/Http/Kernel.php | 67 - .../app/Http/Middleware/Authenticate.php | 21 - .../app/Http/Middleware/EncryptCookies.php | 17 - .../PreventRequestsDuringMaintenance.php | 17 - .../Middleware/RedirectIfAuthenticated.php | 32 - .../app/Http/Middleware/TrimStrings.php | 19 - .../app/Http/Middleware/TrustHosts.php | 20 - .../app/Http/Middleware/TrustProxies.php | 28 - .../app/Http/Middleware/VerifyCsrfToken.php | 17 - Chapter06/onlineStore/app/Models/User.php | 44 - .../app/Providers/AppServiceProvider.php | 28 - .../app/Providers/AuthServiceProvider.php | 30 - .../Providers/BroadcastServiceProvider.php | 21 - .../app/Providers/EventServiceProvider.php | 32 - .../app/Providers/RouteServiceProvider.php | 63 - Chapter06/onlineStore/artisan | 53 - Chapter06/onlineStore/bootstrap/app.php | 55 - .../onlineStore/bootstrap/cache/.gitignore | 2 - Chapter06/onlineStore/composer.json | 62 - Chapter06/onlineStore/composer.lock | 7804 ---------------- Chapter06/onlineStore/config/app.php | 197 - Chapter06/onlineStore/config/auth.php | 111 - Chapter06/onlineStore/config/broadcasting.php | 67 - Chapter06/onlineStore/config/cache.php | 110 - Chapter06/onlineStore/config/cors.php | 34 - Chapter06/onlineStore/config/database.php | 147 - Chapter06/onlineStore/config/filesystems.php | 73 - Chapter06/onlineStore/config/hashing.php | 52 - Chapter06/onlineStore/config/logging.php | 119 - Chapter06/onlineStore/config/mail.php | 117 - Chapter06/onlineStore/config/queue.php | 93 - Chapter06/onlineStore/config/sanctum.php | 65 - Chapter06/onlineStore/config/services.php | 33 - Chapter06/onlineStore/config/session.php | 201 - Chapter06/onlineStore/config/view.php | 36 - Chapter06/onlineStore/database/.gitignore | 1 - .../database/factories/UserFactory.php | 42 - .../2014_10_12_000000_create_users_table.php | 36 - ...12_100000_create_password_resets_table.php | 32 - ..._08_19_000000_create_failed_jobs_table.php | 36 - ...01_create_personal_access_tokens_table.php | 36 - .../database/seeders/DatabaseSeeder.php | 19 - Chapter06/onlineStore/lang/en.json | 7 - Chapter06/onlineStore/lang/en/auth.php | 20 - Chapter06/onlineStore/lang/en/pagination.php | 19 - Chapter06/onlineStore/lang/en/passwords.php | 22 - Chapter06/onlineStore/lang/en/validation.php | 163 - Chapter06/onlineStore/package.json | 18 - Chapter06/onlineStore/phpunit.xml | 31 - Chapter06/onlineStore/public/.htaccess | 21 - Chapter06/onlineStore/public/css/app.css | 20 - Chapter06/onlineStore/public/favicon.ico | 0 Chapter06/onlineStore/public/img/game.png | Bin 25896 -> 0 bytes Chapter06/onlineStore/public/img/safe.png | Bin 19240 -> 0 bytes .../onlineStore/public/img/submarine.png | Bin 24330 -> 0 bytes Chapter06/onlineStore/public/index.php | 55 - Chapter06/onlineStore/public/robots.txt | 2 - Chapter06/onlineStore/resources/css/app.css | 0 Chapter06/onlineStore/resources/js/app.js | 1 - .../onlineStore/resources/js/bootstrap.js | 28 - .../resources/views/home/about.blade.php | 15 - .../resources/views/home/index.blade.php | 15 - .../resources/views/layouts/app.blade.php | 54 - .../resources/views/welcome.blade.php | 7 - Chapter06/onlineStore/routes/api.php | 19 - Chapter06/onlineStore/routes/channels.php | 18 - Chapter06/onlineStore/routes/console.php | 19 - Chapter06/onlineStore/routes/web.php | 21 - Chapter06/onlineStore/storage/app/.gitignore | 3 - .../onlineStore/storage/app/public/.gitignore | 2 - .../onlineStore/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 - Chapter06/onlineStore/storage/logs/.gitignore | 2 - .../onlineStore/tests/CreatesApplication.php | 22 - .../onlineStore/tests/Feature/ExampleTest.php | 21 - Chapter06/onlineStore/tests/TestCase.php | 10 - .../onlineStore/tests/Unit/ExampleTest.php | 18 - Chapter06/onlineStore/webpack.mix.js | 17 - Chapter07/onlineStore/.editorconfig | 18 - Chapter07/onlineStore/.env.example | 52 - Chapter07/onlineStore/.gitattributes | 10 - Chapter07/onlineStore/.gitignore | 15 - Chapter07/onlineStore/.styleci.yml | 13 - Chapter07/onlineStore/README.md | 64 - Chapter07/onlineStore/app/Console/Kernel.php | 32 - .../onlineStore/app/Exceptions/Handler.php | 41 - .../app/Http/Controllers/Controller.php | 13 - .../app/Http/Controllers/HomeController.php | 25 - Chapter07/onlineStore/app/Http/Kernel.php | 67 - .../app/Http/Middleware/Authenticate.php | 21 - .../app/Http/Middleware/EncryptCookies.php | 17 - .../PreventRequestsDuringMaintenance.php | 17 - .../Middleware/RedirectIfAuthenticated.php | 32 - .../app/Http/Middleware/TrimStrings.php | 19 - .../app/Http/Middleware/TrustHosts.php | 20 - .../app/Http/Middleware/TrustProxies.php | 28 - .../app/Http/Middleware/VerifyCsrfToken.php | 17 - Chapter07/onlineStore/app/Models/User.php | 44 - .../app/Providers/AppServiceProvider.php | 28 - .../app/Providers/AuthServiceProvider.php | 30 - .../Providers/BroadcastServiceProvider.php | 21 - .../app/Providers/EventServiceProvider.php | 32 - .../app/Providers/RouteServiceProvider.php | 63 - Chapter07/onlineStore/artisan | 53 - Chapter07/onlineStore/bootstrap/app.php | 55 - .../onlineStore/bootstrap/cache/.gitignore | 2 - Chapter07/onlineStore/composer.json | 62 - Chapter07/onlineStore/composer.lock | 7804 ---------------- Chapter07/onlineStore/config/app.php | 197 - Chapter07/onlineStore/config/auth.php | 111 - Chapter07/onlineStore/config/broadcasting.php | 67 - Chapter07/onlineStore/config/cache.php | 110 - Chapter07/onlineStore/config/cors.php | 34 - Chapter07/onlineStore/config/database.php | 147 - Chapter07/onlineStore/config/filesystems.php | 73 - Chapter07/onlineStore/config/hashing.php | 52 - Chapter07/onlineStore/config/logging.php | 119 - Chapter07/onlineStore/config/mail.php | 117 - Chapter07/onlineStore/config/queue.php | 93 - Chapter07/onlineStore/config/sanctum.php | 65 - Chapter07/onlineStore/config/services.php | 33 - Chapter07/onlineStore/config/session.php | 201 - Chapter07/onlineStore/config/view.php | 36 - Chapter07/onlineStore/database/.gitignore | 1 - .../database/factories/UserFactory.php | 42 - .../2014_10_12_000000_create_users_table.php | 36 - ...12_100000_create_password_resets_table.php | 32 - ..._08_19_000000_create_failed_jobs_table.php | 36 - ...01_create_personal_access_tokens_table.php | 36 - .../database/seeders/DatabaseSeeder.php | 19 - Chapter07/onlineStore/lang/en.json | 7 - Chapter07/onlineStore/lang/en/auth.php | 20 - Chapter07/onlineStore/lang/en/pagination.php | 19 - Chapter07/onlineStore/lang/en/passwords.php | 22 - Chapter07/onlineStore/lang/en/validation.php | 163 - Chapter07/onlineStore/package.json | 18 - Chapter07/onlineStore/phpunit.xml | 31 - Chapter07/onlineStore/public/.htaccess | 21 - Chapter07/onlineStore/public/css/app.css | 20 - Chapter07/onlineStore/public/favicon.ico | 0 Chapter07/onlineStore/public/img/game.png | Bin 25896 -> 0 bytes Chapter07/onlineStore/public/img/safe.png | Bin 19240 -> 0 bytes .../onlineStore/public/img/submarine.png | Bin 24330 -> 0 bytes Chapter07/onlineStore/public/index.php | 55 - Chapter07/onlineStore/public/robots.txt | 2 - Chapter07/onlineStore/resources/css/app.css | 0 Chapter07/onlineStore/resources/js/app.js | 1 - .../onlineStore/resources/js/bootstrap.js | 28 - .../resources/views/home/about.blade.php | 15 - .../resources/views/home/index.blade.php | 15 - .../resources/views/layouts/app.blade.php | 54 - .../resources/views/welcome.blade.php | 7 - Chapter07/onlineStore/routes/api.php | 19 - Chapter07/onlineStore/routes/channels.php | 18 - Chapter07/onlineStore/routes/console.php | 19 - Chapter07/onlineStore/routes/web.php | 17 - Chapter07/onlineStore/storage/app/.gitignore | 3 - .../onlineStore/storage/app/public/.gitignore | 2 - .../onlineStore/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 - Chapter07/onlineStore/storage/logs/.gitignore | 2 - .../onlineStore/tests/CreatesApplication.php | 22 - .../onlineStore/tests/Feature/ExampleTest.php | 21 - Chapter07/onlineStore/tests/TestCase.php | 10 - .../onlineStore/tests/Unit/ExampleTest.php | 18 - Chapter07/onlineStore/webpack.mix.js | 17 - Chapter08/onlineStore/.editorconfig | 18 - Chapter08/onlineStore/.env.example | 52 - Chapter08/onlineStore/.gitattributes | 10 - Chapter08/onlineStore/.gitignore | 15 - Chapter08/onlineStore/.styleci.yml | 13 - Chapter08/onlineStore/README.md | 64 - Chapter08/onlineStore/app/Console/Kernel.php | 32 - .../onlineStore/app/Exceptions/Handler.php | 41 - .../app/Http/Controllers/Controller.php | 13 - .../app/Http/Controllers/HomeController.php | 25 - Chapter08/onlineStore/app/Http/Kernel.php | 67 - .../app/Http/Middleware/Authenticate.php | 21 - .../app/Http/Middleware/EncryptCookies.php | 17 - .../PreventRequestsDuringMaintenance.php | 17 - .../Middleware/RedirectIfAuthenticated.php | 32 - .../app/Http/Middleware/TrimStrings.php | 19 - .../app/Http/Middleware/TrustHosts.php | 20 - .../app/Http/Middleware/TrustProxies.php | 28 - .../app/Http/Middleware/VerifyCsrfToken.php | 17 - Chapter08/onlineStore/app/Models/User.php | 44 - .../app/Providers/AppServiceProvider.php | 28 - .../app/Providers/AuthServiceProvider.php | 30 - .../Providers/BroadcastServiceProvider.php | 21 - .../app/Providers/EventServiceProvider.php | 32 - .../app/Providers/RouteServiceProvider.php | 63 - Chapter08/onlineStore/artisan | 53 - Chapter08/onlineStore/bootstrap/app.php | 55 - .../onlineStore/bootstrap/cache/.gitignore | 2 - Chapter08/onlineStore/composer.json | 63 - Chapter08/onlineStore/composer.lock | 7860 ---------------- Chapter08/onlineStore/config/app.php | 197 - Chapter08/onlineStore/config/auth.php | 111 - Chapter08/onlineStore/config/broadcasting.php | 67 - Chapter08/onlineStore/config/cache.php | 110 - Chapter08/onlineStore/config/cors.php | 34 - Chapter08/onlineStore/config/database.php | 147 - Chapter08/onlineStore/config/filesystems.php | 73 - Chapter08/onlineStore/config/hashing.php | 52 - Chapter08/onlineStore/config/logging.php | 119 - Chapter08/onlineStore/config/mail.php | 117 - Chapter08/onlineStore/config/queue.php | 93 - Chapter08/onlineStore/config/sanctum.php | 65 - Chapter08/onlineStore/config/services.php | 33 - Chapter08/onlineStore/config/session.php | 201 - Chapter08/onlineStore/config/view.php | 36 - Chapter08/onlineStore/database/.gitignore | 1 - .../database/factories/UserFactory.php | 42 - .../2014_10_12_000000_create_users_table.php | 36 - ...12_100000_create_password_resets_table.php | 32 - ..._08_19_000000_create_failed_jobs_table.php | 36 - ...01_create_personal_access_tokens_table.php | 36 - .../database/seeders/DatabaseSeeder.php | 19 - Chapter08/onlineStore/lang/en.json | 7 - Chapter08/onlineStore/lang/en/auth.php | 20 - Chapter08/onlineStore/lang/en/pagination.php | 19 - Chapter08/onlineStore/lang/en/passwords.php | 22 - Chapter08/onlineStore/lang/en/validation.php | 163 - Chapter08/onlineStore/package.json | 18 - Chapter08/onlineStore/phpcs.xml | 10 - Chapter08/onlineStore/phpunit.xml | 31 - Chapter08/onlineStore/public/.htaccess | 21 - Chapter08/onlineStore/public/css/app.css | 20 - Chapter08/onlineStore/public/favicon.ico | 0 Chapter08/onlineStore/public/img/game.png | Bin 25896 -> 0 bytes Chapter08/onlineStore/public/img/safe.png | Bin 19240 -> 0 bytes .../onlineStore/public/img/submarine.png | Bin 24330 -> 0 bytes Chapter08/onlineStore/public/index.php | 55 - Chapter08/onlineStore/public/robots.txt | 2 - Chapter08/onlineStore/resources/css/app.css | 0 Chapter08/onlineStore/resources/js/app.js | 1 - .../onlineStore/resources/js/bootstrap.js | 28 - .../resources/views/home/about.blade.php | 15 - .../resources/views/home/index.blade.php | 15 - .../resources/views/layouts/app.blade.php | 54 - .../resources/views/welcome.blade.php | 7 - Chapter08/onlineStore/routes/api.php | 19 - Chapter08/onlineStore/routes/channels.php | 18 - Chapter08/onlineStore/routes/console.php | 19 - Chapter08/onlineStore/routes/web.php | 17 - Chapter08/onlineStore/storage/app/.gitignore | 3 - .../onlineStore/storage/app/public/.gitignore | 2 - .../onlineStore/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 - Chapter08/onlineStore/storage/logs/.gitignore | 2 - .../onlineStore/tests/CreatesApplication.php | 22 - .../onlineStore/tests/Feature/ExampleTest.php | 21 - Chapter08/onlineStore/tests/TestCase.php | 10 - .../onlineStore/tests/Unit/ExampleTest.php | 18 - Chapter08/onlineStore/webpack.mix.js | 17 - Chapter09/onlineStore/.editorconfig | 18 - Chapter09/onlineStore/.env.example | 52 - Chapter09/onlineStore/.gitattributes | 10 - Chapter09/onlineStore/.gitignore | 15 - Chapter09/onlineStore/.styleci.yml | 13 - Chapter09/onlineStore/README.md | 64 - Chapter09/onlineStore/app/Console/Kernel.php | 32 - .../onlineStore/app/Exceptions/Handler.php | 41 - .../app/Http/Controllers/Controller.php | 13 - .../app/Http/Controllers/HomeController.php | 25 - .../Http/Controllers/ProductController.php | 34 - Chapter09/onlineStore/app/Http/Kernel.php | 67 - .../app/Http/Middleware/Authenticate.php | 21 - .../app/Http/Middleware/EncryptCookies.php | 17 - .../PreventRequestsDuringMaintenance.php | 17 - .../Middleware/RedirectIfAuthenticated.php | 32 - .../app/Http/Middleware/TrimStrings.php | 19 - .../app/Http/Middleware/TrustHosts.php | 20 - .../app/Http/Middleware/TrustProxies.php | 28 - .../app/Http/Middleware/VerifyCsrfToken.php | 17 - Chapter09/onlineStore/app/Models/User.php | 44 - .../app/Providers/AppServiceProvider.php | 28 - .../app/Providers/AuthServiceProvider.php | 30 - .../Providers/BroadcastServiceProvider.php | 21 - .../app/Providers/EventServiceProvider.php | 32 - .../app/Providers/RouteServiceProvider.php | 63 - Chapter09/onlineStore/artisan | 53 - Chapter09/onlineStore/bootstrap/app.php | 55 - .../onlineStore/bootstrap/cache/.gitignore | 2 - Chapter09/onlineStore/composer.json | 63 - Chapter09/onlineStore/composer.lock | 7860 ---------------- Chapter09/onlineStore/config/app.php | 197 - Chapter09/onlineStore/config/auth.php | 111 - Chapter09/onlineStore/config/broadcasting.php | 67 - Chapter09/onlineStore/config/cache.php | 110 - Chapter09/onlineStore/config/cors.php | 34 - Chapter09/onlineStore/config/database.php | 147 - Chapter09/onlineStore/config/filesystems.php | 73 - Chapter09/onlineStore/config/hashing.php | 52 - Chapter09/onlineStore/config/logging.php | 119 - Chapter09/onlineStore/config/mail.php | 117 - Chapter09/onlineStore/config/queue.php | 93 - Chapter09/onlineStore/config/sanctum.php | 65 - Chapter09/onlineStore/config/services.php | 33 - Chapter09/onlineStore/config/session.php | 201 - Chapter09/onlineStore/config/view.php | 36 - Chapter09/onlineStore/database/.gitignore | 1 - .../database/factories/UserFactory.php | 42 - .../2014_10_12_000000_create_users_table.php | 36 - ...12_100000_create_password_resets_table.php | 32 - ..._08_19_000000_create_failed_jobs_table.php | 36 - ...01_create_personal_access_tokens_table.php | 36 - .../database/seeders/DatabaseSeeder.php | 19 - Chapter09/onlineStore/lang/en.json | 7 - Chapter09/onlineStore/lang/en/auth.php | 20 - Chapter09/onlineStore/lang/en/pagination.php | 19 - Chapter09/onlineStore/lang/en/passwords.php | 22 - Chapter09/onlineStore/lang/en/validation.php | 163 - Chapter09/onlineStore/package.json | 18 - Chapter09/onlineStore/phpcs.xml | 10 - Chapter09/onlineStore/phpunit.xml | 31 - Chapter09/onlineStore/public/.htaccess | 21 - Chapter09/onlineStore/public/css/app.css | 20 - Chapter09/onlineStore/public/favicon.ico | 0 Chapter09/onlineStore/public/img/game.png | Bin 25896 -> 0 bytes Chapter09/onlineStore/public/img/safe.png | Bin 19240 -> 0 bytes .../onlineStore/public/img/submarine.png | Bin 24330 -> 0 bytes Chapter09/onlineStore/public/index.php | 55 - Chapter09/onlineStore/public/robots.txt | 2 - Chapter09/onlineStore/resources/css/app.css | 0 Chapter09/onlineStore/resources/js/app.js | 1 - .../onlineStore/resources/js/bootstrap.js | 28 - .../resources/views/home/about.blade.php | 15 - .../resources/views/home/index.blade.php | 15 - .../resources/views/layouts/app.blade.php | 55 - .../resources/views/product/index.blade.php | 18 - .../resources/views/product/show.blade.php | 21 - .../resources/views/welcome.blade.php | 7 - Chapter09/onlineStore/routes/api.php | 19 - Chapter09/onlineStore/routes/channels.php | 18 - Chapter09/onlineStore/routes/console.php | 19 - Chapter09/onlineStore/routes/web.php | 19 - Chapter09/onlineStore/storage/app/.gitignore | 3 - .../onlineStore/storage/app/public/.gitignore | 2 - .../onlineStore/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 - Chapter09/onlineStore/storage/logs/.gitignore | 2 - .../onlineStore/tests/CreatesApplication.php | 22 - .../onlineStore/tests/Feature/ExampleTest.php | 21 - Chapter09/onlineStore/tests/TestCase.php | 10 - .../onlineStore/tests/Unit/ExampleTest.php | 18 - Chapter09/onlineStore/webpack.mix.js | 17 - Chapter11/onlineStore/.editorconfig | 18 - Chapter11/onlineStore/.env.example | 52 - Chapter11/onlineStore/.gitattributes | 10 - Chapter11/onlineStore/.gitignore | 15 - Chapter11/onlineStore/.styleci.yml | 13 - .../onlineStore/CHAPTER-11-SQL-QUERY.txt | 4 - Chapter11/onlineStore/README.md | 8 - Chapter11/onlineStore/app/Console/Kernel.php | 32 - .../onlineStore/app/Exceptions/Handler.php | 41 - .../app/Http/Controllers/Controller.php | 13 - .../app/Http/Controllers/HomeController.php | 25 - .../Http/Controllers/ProductController.php | 34 - Chapter11/onlineStore/app/Http/Kernel.php | 67 - .../app/Http/Middleware/Authenticate.php | 21 - .../app/Http/Middleware/EncryptCookies.php | 17 - .../PreventRequestsDuringMaintenance.php | 17 - .../Middleware/RedirectIfAuthenticated.php | 32 - .../app/Http/Middleware/TrimStrings.php | 19 - .../app/Http/Middleware/TrustHosts.php | 20 - .../app/Http/Middleware/TrustProxies.php | 28 - .../app/Http/Middleware/VerifyCsrfToken.php | 17 - Chapter11/onlineStore/app/Models/User.php | 44 - .../app/Providers/AppServiceProvider.php | 28 - .../app/Providers/AuthServiceProvider.php | 30 - .../Providers/BroadcastServiceProvider.php | 21 - .../app/Providers/EventServiceProvider.php | 32 - .../app/Providers/RouteServiceProvider.php | 63 - Chapter11/onlineStore/artisan | 53 - Chapter11/onlineStore/bootstrap/app.php | 55 - .../onlineStore/bootstrap/cache/.gitignore | 2 - Chapter11/onlineStore/composer.json | 63 - Chapter11/onlineStore/composer.lock | 7860 ---------------- Chapter11/onlineStore/config/app.php | 197 - Chapter11/onlineStore/config/auth.php | 111 - Chapter11/onlineStore/config/broadcasting.php | 67 - Chapter11/onlineStore/config/cache.php | 110 - Chapter11/onlineStore/config/cors.php | 34 - Chapter11/onlineStore/config/database.php | 147 - Chapter11/onlineStore/config/filesystems.php | 73 - Chapter11/onlineStore/config/hashing.php | 52 - Chapter11/onlineStore/config/logging.php | 119 - Chapter11/onlineStore/config/mail.php | 117 - Chapter11/onlineStore/config/queue.php | 93 - Chapter11/onlineStore/config/sanctum.php | 65 - Chapter11/onlineStore/config/services.php | 33 - Chapter11/onlineStore/config/session.php | 201 - Chapter11/onlineStore/config/view.php | 36 - Chapter11/onlineStore/database/.gitignore | 1 - .../database/factories/UserFactory.php | 42 - .../2014_10_12_000000_create_users_table.php | 36 - ...12_100000_create_password_resets_table.php | 32 - ..._08_19_000000_create_failed_jobs_table.php | 36 - ...01_create_personal_access_tokens_table.php | 36 - ...022_02_11_153916_create_products_table.php | 35 - .../database/seeders/DatabaseSeeder.php | 19 - Chapter11/onlineStore/lang/en.json | 7 - Chapter11/onlineStore/lang/en/auth.php | 20 - Chapter11/onlineStore/lang/en/pagination.php | 19 - Chapter11/onlineStore/lang/en/passwords.php | 22 - Chapter11/onlineStore/lang/en/validation.php | 163 - Chapter11/onlineStore/package.json | 18 - Chapter11/onlineStore/phpcs.xml | 10 - Chapter11/onlineStore/phpunit.xml | 31 - Chapter11/onlineStore/public/.htaccess | 21 - Chapter11/onlineStore/public/css/app.css | 20 - Chapter11/onlineStore/public/favicon.ico | 0 Chapter11/onlineStore/public/img/game.png | Bin 25896 -> 0 bytes Chapter11/onlineStore/public/img/safe.png | Bin 19240 -> 0 bytes .../onlineStore/public/img/submarine.png | Bin 24330 -> 0 bytes Chapter11/onlineStore/public/index.php | 55 - Chapter11/onlineStore/public/robots.txt | 2 - Chapter11/onlineStore/resources/css/app.css | 0 Chapter11/onlineStore/resources/js/app.js | 1 - .../onlineStore/resources/js/bootstrap.js | 28 - .../resources/views/home/about.blade.php | 15 - .../resources/views/home/index.blade.php | 15 - .../resources/views/layouts/app.blade.php | 55 - .../resources/views/product/index.blade.php | 18 - .../resources/views/product/show.blade.php | 21 - .../resources/views/welcome.blade.php | 7 - Chapter11/onlineStore/routes/api.php | 19 - Chapter11/onlineStore/routes/channels.php | 18 - Chapter11/onlineStore/routes/console.php | 19 - Chapter11/onlineStore/routes/web.php | 19 - Chapter11/onlineStore/storage/app/.gitignore | 3 - .../onlineStore/storage/app/public/.gitignore | 2 - .../onlineStore/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 - Chapter11/onlineStore/storage/logs/.gitignore | 2 - .../onlineStore/tests/CreatesApplication.php | 22 - .../onlineStore/tests/Feature/ExampleTest.php | 21 - Chapter11/onlineStore/tests/TestCase.php | 10 - .../onlineStore/tests/Unit/ExampleTest.php | 18 - Chapter11/onlineStore/webpack.mix.js | 17 - Chapter12/onlineStore/.editorconfig | 18 - Chapter12/onlineStore/.env.example | 52 - Chapter12/onlineStore/.gitattributes | 10 - Chapter12/onlineStore/.gitignore | 15 - Chapter12/onlineStore/.styleci.yml | 13 - Chapter12/onlineStore/README.md | 64 - Chapter12/onlineStore/app/Console/Kernel.php | 32 - .../onlineStore/app/Exceptions/Handler.php | 41 - .../app/Http/Controllers/Controller.php | 13 - .../app/Http/Controllers/HomeController.php | 25 - .../Http/Controllers/ProductController.php | 34 - Chapter12/onlineStore/app/Http/Kernel.php | 67 - .../app/Http/Middleware/Authenticate.php | 21 - .../app/Http/Middleware/EncryptCookies.php | 17 - .../PreventRequestsDuringMaintenance.php | 17 - .../Middleware/RedirectIfAuthenticated.php | 32 - .../app/Http/Middleware/TrimStrings.php | 19 - .../app/Http/Middleware/TrustHosts.php | 20 - .../app/Http/Middleware/TrustProxies.php | 28 - .../app/Http/Middleware/VerifyCsrfToken.php | 17 - Chapter12/onlineStore/app/Models/Product.php | 11 - Chapter12/onlineStore/app/Models/User.php | 44 - .../app/Providers/AppServiceProvider.php | 28 - .../app/Providers/AuthServiceProvider.php | 30 - .../Providers/BroadcastServiceProvider.php | 21 - .../app/Providers/EventServiceProvider.php | 32 - .../app/Providers/RouteServiceProvider.php | 63 - Chapter12/onlineStore/artisan | 53 - Chapter12/onlineStore/bootstrap/app.php | 55 - .../onlineStore/bootstrap/cache/.gitignore | 2 - Chapter12/onlineStore/composer.json | 63 - Chapter12/onlineStore/composer.lock | 7860 ---------------- Chapter12/onlineStore/config/app.php | 197 - Chapter12/onlineStore/config/auth.php | 111 - Chapter12/onlineStore/config/broadcasting.php | 67 - Chapter12/onlineStore/config/cache.php | 110 - Chapter12/onlineStore/config/cors.php | 34 - Chapter12/onlineStore/config/database.php | 147 - Chapter12/onlineStore/config/filesystems.php | 73 - Chapter12/onlineStore/config/hashing.php | 52 - Chapter12/onlineStore/config/logging.php | 119 - Chapter12/onlineStore/config/mail.php | 117 - Chapter12/onlineStore/config/queue.php | 93 - Chapter12/onlineStore/config/sanctum.php | 65 - Chapter12/onlineStore/config/services.php | 33 - Chapter12/onlineStore/config/session.php | 201 - Chapter12/onlineStore/config/view.php | 36 - Chapter12/onlineStore/database/.gitignore | 1 - .../database/factories/UserFactory.php | 42 - .../2014_10_12_000000_create_users_table.php | 36 - ...12_100000_create_password_resets_table.php | 32 - ..._08_19_000000_create_failed_jobs_table.php | 36 - ...01_create_personal_access_tokens_table.php | 36 - ...022_02_11_153916_create_products_table.php | 35 - .../database/seeders/DatabaseSeeder.php | 19 - Chapter12/onlineStore/lang/en.json | 7 - Chapter12/onlineStore/lang/en/auth.php | 20 - Chapter12/onlineStore/lang/en/pagination.php | 19 - Chapter12/onlineStore/lang/en/passwords.php | 22 - Chapter12/onlineStore/lang/en/validation.php | 163 - Chapter12/onlineStore/package.json | 18 - Chapter12/onlineStore/phpcs.xml | 10 - Chapter12/onlineStore/phpunit.xml | 31 - Chapter12/onlineStore/public/.htaccess | 21 - Chapter12/onlineStore/public/css/app.css | 20 - Chapter12/onlineStore/public/favicon.ico | 0 Chapter12/onlineStore/public/img/game.png | Bin 25896 -> 0 bytes Chapter12/onlineStore/public/img/safe.png | Bin 19240 -> 0 bytes .../onlineStore/public/img/submarine.png | Bin 24330 -> 0 bytes Chapter12/onlineStore/public/index.php | 55 - Chapter12/onlineStore/public/robots.txt | 2 - Chapter12/onlineStore/resources/css/app.css | 0 Chapter12/onlineStore/resources/js/app.js | 1 - .../onlineStore/resources/js/bootstrap.js | 28 - .../resources/views/home/about.blade.php | 15 - .../resources/views/home/index.blade.php | 15 - .../resources/views/layouts/app.blade.php | 55 - .../resources/views/product/index.blade.php | 18 - .../resources/views/product/show.blade.php | 21 - .../resources/views/welcome.blade.php | 7 - Chapter12/onlineStore/routes/api.php | 19 - Chapter12/onlineStore/routes/channels.php | 18 - Chapter12/onlineStore/routes/console.php | 19 - Chapter12/onlineStore/routes/web.php | 19 - Chapter12/onlineStore/storage/app/.gitignore | 3 - .../onlineStore/storage/app/public/.gitignore | 2 - .../onlineStore/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 - Chapter12/onlineStore/storage/logs/.gitignore | 2 - .../onlineStore/tests/CreatesApplication.php | 22 - .../onlineStore/tests/Feature/ExampleTest.php | 21 - Chapter12/onlineStore/tests/TestCase.php | 10 - .../onlineStore/tests/Unit/ExampleTest.php | 18 - Chapter12/onlineStore/webpack.mix.js | 17 - Chapter13/onlineStore/.editorconfig | 18 - Chapter13/onlineStore/.env.example | 52 - Chapter13/onlineStore/.gitattributes | 10 - Chapter13/onlineStore/.gitignore | 15 - Chapter13/onlineStore/.styleci.yml | 13 - Chapter13/onlineStore/README.md | 64 - Chapter13/onlineStore/app/Console/Kernel.php | 32 - .../onlineStore/app/Exceptions/Handler.php | 41 - .../app/Http/Controllers/Controller.php | 13 - .../app/Http/Controllers/HomeController.php | 25 - .../Http/Controllers/ProductController.php | 29 - Chapter13/onlineStore/app/Http/Kernel.php | 67 - .../app/Http/Middleware/Authenticate.php | 21 - .../app/Http/Middleware/EncryptCookies.php | 17 - .../PreventRequestsDuringMaintenance.php | 17 - .../Middleware/RedirectIfAuthenticated.php | 32 - .../app/Http/Middleware/TrimStrings.php | 19 - .../app/Http/Middleware/TrustHosts.php | 20 - .../app/Http/Middleware/TrustProxies.php | 28 - .../app/Http/Middleware/VerifyCsrfToken.php | 17 - Chapter13/onlineStore/app/Models/Product.php | 11 - Chapter13/onlineStore/app/Models/User.php | 44 - .../app/Providers/AppServiceProvider.php | 28 - .../app/Providers/AuthServiceProvider.php | 30 - .../Providers/BroadcastServiceProvider.php | 21 - .../app/Providers/EventServiceProvider.php | 32 - .../app/Providers/RouteServiceProvider.php | 63 - Chapter13/onlineStore/artisan | 53 - Chapter13/onlineStore/bootstrap/app.php | 55 - .../onlineStore/bootstrap/cache/.gitignore | 2 - Chapter13/onlineStore/composer.json | 63 - Chapter13/onlineStore/composer.lock | 7860 ---------------- Chapter13/onlineStore/config/app.php | 197 - Chapter13/onlineStore/config/auth.php | 111 - Chapter13/onlineStore/config/broadcasting.php | 67 - Chapter13/onlineStore/config/cache.php | 110 - Chapter13/onlineStore/config/cors.php | 34 - Chapter13/onlineStore/config/database.php | 147 - Chapter13/onlineStore/config/filesystems.php | 73 - Chapter13/onlineStore/config/hashing.php | 52 - Chapter13/onlineStore/config/logging.php | 119 - Chapter13/onlineStore/config/mail.php | 117 - Chapter13/onlineStore/config/queue.php | 93 - Chapter13/onlineStore/config/sanctum.php | 65 - Chapter13/onlineStore/config/services.php | 33 - Chapter13/onlineStore/config/session.php | 201 - Chapter13/onlineStore/config/view.php | 36 - Chapter13/onlineStore/database/.gitignore | 1 - .../database/factories/UserFactory.php | 42 - .../2014_10_12_000000_create_users_table.php | 36 - ...12_100000_create_password_resets_table.php | 32 - ..._08_19_000000_create_failed_jobs_table.php | 36 - ...01_create_personal_access_tokens_table.php | 36 - ...022_02_11_153916_create_products_table.php | 35 - .../database/seeders/DatabaseSeeder.php | 19 - Chapter13/onlineStore/lang/en.json | 7 - Chapter13/onlineStore/lang/en/auth.php | 20 - Chapter13/onlineStore/lang/en/pagination.php | 19 - Chapter13/onlineStore/lang/en/passwords.php | 22 - Chapter13/onlineStore/lang/en/validation.php | 163 - Chapter13/onlineStore/package.json | 18 - Chapter13/onlineStore/phpcs.xml | 10 - Chapter13/onlineStore/phpunit.xml | 31 - Chapter13/onlineStore/public/.htaccess | 21 - Chapter13/onlineStore/public/css/app.css | 20 - Chapter13/onlineStore/public/favicon.ico | 0 Chapter13/onlineStore/public/img/game.png | Bin 25896 -> 0 bytes Chapter13/onlineStore/public/img/safe.png | Bin 19240 -> 0 bytes .../onlineStore/public/img/submarine.png | Bin 24330 -> 0 bytes Chapter13/onlineStore/public/index.php | 55 - Chapter13/onlineStore/public/robots.txt | 2 - Chapter13/onlineStore/resources/css/app.css | 0 Chapter13/onlineStore/resources/js/app.js | 1 - .../onlineStore/resources/js/bootstrap.js | 28 - .../resources/views/home/about.blade.php | 15 - .../resources/views/home/index.blade.php | 15 - .../resources/views/layouts/app.blade.php | 55 - .../resources/views/product/index.blade.php | 18 - .../resources/views/product/show.blade.php | 21 - .../resources/views/welcome.blade.php | 7 - Chapter13/onlineStore/routes/api.php | 19 - Chapter13/onlineStore/routes/channels.php | 18 - Chapter13/onlineStore/routes/console.php | 19 - Chapter13/onlineStore/routes/web.php | 19 - Chapter13/onlineStore/storage/app/.gitignore | 3 - .../onlineStore/storage/app/public/.gitignore | 2 - .../onlineStore/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 - Chapter13/onlineStore/storage/logs/.gitignore | 2 - .../onlineStore/tests/CreatesApplication.php | 22 - .../onlineStore/tests/Feature/ExampleTest.php | 21 - Chapter13/onlineStore/tests/TestCase.php | 10 - .../onlineStore/tests/Unit/ExampleTest.php | 18 - Chapter13/onlineStore/webpack.mix.js | 17 - Chapter14/onlineStore/.editorconfig | 18 - Chapter14/onlineStore/.env.example | 52 - Chapter14/onlineStore/.gitattributes | 10 - Chapter14/onlineStore/.gitignore | 15 - Chapter14/onlineStore/.styleci.yml | 13 - Chapter14/onlineStore/README.md | 64 - Chapter14/onlineStore/app/Console/Kernel.php | 32 - .../onlineStore/app/Exceptions/Handler.php | 41 - .../app/Http/Controllers/Controller.php | 13 - .../app/Http/Controllers/HomeController.php | 25 - .../Http/Controllers/ProductController.php | 29 - Chapter14/onlineStore/app/Http/Kernel.php | 67 - .../app/Http/Middleware/Authenticate.php | 21 - .../app/Http/Middleware/EncryptCookies.php | 17 - .../PreventRequestsDuringMaintenance.php | 17 - .../Middleware/RedirectIfAuthenticated.php | 32 - .../app/Http/Middleware/TrimStrings.php | 19 - .../app/Http/Middleware/TrustHosts.php | 20 - .../app/Http/Middleware/TrustProxies.php | 28 - .../app/Http/Middleware/VerifyCsrfToken.php | 17 - Chapter14/onlineStore/app/Models/Product.php | 89 - Chapter14/onlineStore/app/Models/User.php | 44 - .../app/Providers/AppServiceProvider.php | 28 - .../app/Providers/AuthServiceProvider.php | 30 - .../Providers/BroadcastServiceProvider.php | 21 - .../app/Providers/EventServiceProvider.php | 32 - .../app/Providers/RouteServiceProvider.php | 63 - Chapter14/onlineStore/artisan | 53 - Chapter14/onlineStore/bootstrap/app.php | 55 - .../onlineStore/bootstrap/cache/.gitignore | 2 - Chapter14/onlineStore/composer.json | 63 - Chapter14/onlineStore/composer.lock | 7860 ---------------- Chapter14/onlineStore/config/app.php | 197 - Chapter14/onlineStore/config/auth.php | 111 - Chapter14/onlineStore/config/broadcasting.php | 67 - Chapter14/onlineStore/config/cache.php | 110 - Chapter14/onlineStore/config/cors.php | 34 - Chapter14/onlineStore/config/database.php | 147 - Chapter14/onlineStore/config/filesystems.php | 73 - Chapter14/onlineStore/config/hashing.php | 52 - Chapter14/onlineStore/config/logging.php | 119 - Chapter14/onlineStore/config/mail.php | 117 - Chapter14/onlineStore/config/queue.php | 93 - Chapter14/onlineStore/config/sanctum.php | 65 - Chapter14/onlineStore/config/services.php | 33 - Chapter14/onlineStore/config/session.php | 201 - Chapter14/onlineStore/config/view.php | 36 - Chapter14/onlineStore/database/.gitignore | 1 - .../database/factories/UserFactory.php | 42 - .../2014_10_12_000000_create_users_table.php | 36 - ...12_100000_create_password_resets_table.php | 32 - ..._08_19_000000_create_failed_jobs_table.php | 36 - ...01_create_personal_access_tokens_table.php | 36 - ...022_02_11_153916_create_products_table.php | 35 - .../database/seeders/DatabaseSeeder.php | 19 - Chapter14/onlineStore/lang/en.json | 7 - Chapter14/onlineStore/lang/en/auth.php | 20 - Chapter14/onlineStore/lang/en/pagination.php | 19 - Chapter14/onlineStore/lang/en/passwords.php | 22 - Chapter14/onlineStore/lang/en/validation.php | 163 - Chapter14/onlineStore/package.json | 18 - Chapter14/onlineStore/phpcs.xml | 10 - Chapter14/onlineStore/phpunit.xml | 31 - Chapter14/onlineStore/public/.htaccess | 21 - Chapter14/onlineStore/public/css/app.css | 20 - Chapter14/onlineStore/public/favicon.ico | 0 Chapter14/onlineStore/public/img/game.png | Bin 25896 -> 0 bytes Chapter14/onlineStore/public/img/safe.png | Bin 19240 -> 0 bytes .../onlineStore/public/img/submarine.png | Bin 24330 -> 0 bytes Chapter14/onlineStore/public/index.php | 55 - Chapter14/onlineStore/public/robots.txt | 2 - Chapter14/onlineStore/resources/css/app.css | 0 Chapter14/onlineStore/resources/js/app.js | 1 - .../onlineStore/resources/js/bootstrap.js | 28 - .../resources/views/home/about.blade.php | 15 - .../resources/views/home/index.blade.php | 15 - .../resources/views/layouts/app.blade.php | 55 - .../resources/views/product/index.blade.php | 18 - .../resources/views/product/show.blade.php | 21 - .../resources/views/welcome.blade.php | 7 - Chapter14/onlineStore/routes/api.php | 19 - Chapter14/onlineStore/routes/channels.php | 18 - Chapter14/onlineStore/routes/console.php | 19 - Chapter14/onlineStore/routes/web.php | 19 - Chapter14/onlineStore/storage/app/.gitignore | 3 - .../onlineStore/storage/app/public/.gitignore | 2 - .../onlineStore/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 - Chapter14/onlineStore/storage/logs/.gitignore | 2 - .../onlineStore/tests/CreatesApplication.php | 22 - .../onlineStore/tests/Feature/ExampleTest.php | 21 - Chapter14/onlineStore/tests/TestCase.php | 10 - .../onlineStore/tests/Unit/ExampleTest.php | 18 - Chapter14/onlineStore/webpack.mix.js | 17 - Chapter15/onlineStore/.editorconfig | 18 - Chapter15/onlineStore/.env.example | 52 - Chapter15/onlineStore/.gitattributes | 10 - Chapter15/onlineStore/.gitignore | 15 - Chapter15/onlineStore/.styleci.yml | 13 - Chapter15/onlineStore/README.md | 64 - Chapter15/onlineStore/app/Console/Kernel.php | 32 - .../onlineStore/app/Exceptions/Handler.php | 41 - .../Controllers/Admin/AdminHomeController.php | 16 - .../app/Http/Controllers/Controller.php | 13 - .../app/Http/Controllers/HomeController.php | 25 - .../Http/Controllers/ProductController.php | 29 - Chapter15/onlineStore/app/Http/Kernel.php | 67 - .../app/Http/Middleware/Authenticate.php | 21 - .../app/Http/Middleware/EncryptCookies.php | 17 - .../PreventRequestsDuringMaintenance.php | 17 - .../Middleware/RedirectIfAuthenticated.php | 32 - .../app/Http/Middleware/TrimStrings.php | 19 - .../app/Http/Middleware/TrustHosts.php | 20 - .../app/Http/Middleware/TrustProxies.php | 28 - .../app/Http/Middleware/VerifyCsrfToken.php | 17 - Chapter15/onlineStore/app/Models/Product.php | 89 - Chapter15/onlineStore/app/Models/User.php | 44 - .../app/Providers/AppServiceProvider.php | 28 - .../app/Providers/AuthServiceProvider.php | 30 - .../Providers/BroadcastServiceProvider.php | 21 - .../app/Providers/EventServiceProvider.php | 32 - .../app/Providers/RouteServiceProvider.php | 63 - Chapter15/onlineStore/artisan | 53 - Chapter15/onlineStore/bootstrap/app.php | 55 - .../onlineStore/bootstrap/cache/.gitignore | 2 - Chapter15/onlineStore/composer.json | 63 - Chapter15/onlineStore/composer.lock | 7860 ---------------- Chapter15/onlineStore/config/app.php | 197 - Chapter15/onlineStore/config/auth.php | 111 - Chapter15/onlineStore/config/broadcasting.php | 67 - Chapter15/onlineStore/config/cache.php | 110 - Chapter15/onlineStore/config/cors.php | 34 - Chapter15/onlineStore/config/database.php | 147 - Chapter15/onlineStore/config/filesystems.php | 73 - Chapter15/onlineStore/config/hashing.php | 52 - Chapter15/onlineStore/config/logging.php | 119 - Chapter15/onlineStore/config/mail.php | 117 - Chapter15/onlineStore/config/queue.php | 93 - Chapter15/onlineStore/config/sanctum.php | 65 - Chapter15/onlineStore/config/services.php | 33 - Chapter15/onlineStore/config/session.php | 201 - Chapter15/onlineStore/config/view.php | 36 - Chapter15/onlineStore/database/.gitignore | 1 - .../database/factories/UserFactory.php | 42 - .../2014_10_12_000000_create_users_table.php | 36 - ...12_100000_create_password_resets_table.php | 32 - ..._08_19_000000_create_failed_jobs_table.php | 36 - ...01_create_personal_access_tokens_table.php | 36 - ...022_02_11_153916_create_products_table.php | 35 - .../database/seeders/DatabaseSeeder.php | 19 - Chapter15/onlineStore/lang/en.json | 7 - Chapter15/onlineStore/lang/en/auth.php | 20 - Chapter15/onlineStore/lang/en/pagination.php | 19 - Chapter15/onlineStore/lang/en/passwords.php | 22 - Chapter15/onlineStore/lang/en/validation.php | 163 - Chapter15/onlineStore/package.json | 18 - Chapter15/onlineStore/phpcs.xml | 10 - Chapter15/onlineStore/phpunit.xml | 31 - Chapter15/onlineStore/public/.htaccess | 21 - Chapter15/onlineStore/public/css/admin.css | 33 - Chapter15/onlineStore/public/css/app.css | 20 - Chapter15/onlineStore/public/favicon.ico | 0 Chapter15/onlineStore/public/img/game.png | Bin 25896 -> 0 bytes Chapter15/onlineStore/public/img/safe.png | Bin 19240 -> 0 bytes .../onlineStore/public/img/submarine.png | Bin 24330 -> 0 bytes .../onlineStore/public/img/undraw_profile.svg | 38 - Chapter15/onlineStore/public/index.php | 55 - Chapter15/onlineStore/public/robots.txt | 2 - Chapter15/onlineStore/resources/css/app.css | 0 Chapter15/onlineStore/resources/js/app.js | 1 - .../onlineStore/resources/js/bootstrap.js | 28 - .../views/admin/home/index.blade.php | 12 - .../resources/views/home/about.blade.php | 15 - .../resources/views/home/index.blade.php | 15 - .../resources/views/layouts/admin.blade.php | 59 - .../resources/views/layouts/app.blade.php | 55 - .../resources/views/product/index.blade.php | 18 - .../resources/views/product/show.blade.php | 21 - .../resources/views/welcome.blade.php | 7 - Chapter15/onlineStore/routes/api.php | 19 - Chapter15/onlineStore/routes/channels.php | 18 - Chapter15/onlineStore/routes/console.php | 19 - Chapter15/onlineStore/routes/web.php | 20 - Chapter15/onlineStore/storage/app/.gitignore | 3 - .../onlineStore/storage/app/public/.gitignore | 2 - .../onlineStore/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 - Chapter15/onlineStore/storage/logs/.gitignore | 2 - .../onlineStore/tests/CreatesApplication.php | 22 - .../onlineStore/tests/Feature/ExampleTest.php | 21 - Chapter15/onlineStore/tests/TestCase.php | 10 - .../onlineStore/tests/Unit/ExampleTest.php | 18 - Chapter15/onlineStore/webpack.mix.js | 17 - Chapter16/onlineStore/.editorconfig | 18 - Chapter16/onlineStore/.env.example | 52 - Chapter16/onlineStore/.gitattributes | 10 - Chapter16/onlineStore/.gitignore | 15 - Chapter16/onlineStore/.styleci.yml | 13 - Chapter16/onlineStore/README.md | 64 - Chapter16/onlineStore/app/Console/Kernel.php | 32 - .../onlineStore/app/Exceptions/Handler.php | 41 - .../Controllers/Admin/AdminHomeController.php | 16 - .../Admin/AdminProductController.php | 18 - .../app/Http/Controllers/Controller.php | 13 - .../app/Http/Controllers/HomeController.php | 25 - .../Http/Controllers/ProductController.php | 29 - Chapter16/onlineStore/app/Http/Kernel.php | 67 - .../app/Http/Middleware/Authenticate.php | 21 - .../app/Http/Middleware/EncryptCookies.php | 17 - .../PreventRequestsDuringMaintenance.php | 17 - .../Middleware/RedirectIfAuthenticated.php | 32 - .../app/Http/Middleware/TrimStrings.php | 19 - .../app/Http/Middleware/TrustHosts.php | 20 - .../app/Http/Middleware/TrustProxies.php | 28 - .../app/Http/Middleware/VerifyCsrfToken.php | 17 - Chapter16/onlineStore/app/Models/Product.php | 89 - Chapter16/onlineStore/app/Models/User.php | 44 - .../app/Providers/AppServiceProvider.php | 28 - .../app/Providers/AuthServiceProvider.php | 30 - .../Providers/BroadcastServiceProvider.php | 21 - .../app/Providers/EventServiceProvider.php | 32 - .../app/Providers/RouteServiceProvider.php | 63 - Chapter16/onlineStore/artisan | 53 - Chapter16/onlineStore/bootstrap/app.php | 55 - .../onlineStore/bootstrap/cache/.gitignore | 2 - Chapter16/onlineStore/composer.json | 63 - Chapter16/onlineStore/composer.lock | 7860 ---------------- Chapter16/onlineStore/config/app.php | 197 - Chapter16/onlineStore/config/auth.php | 111 - Chapter16/onlineStore/config/broadcasting.php | 67 - Chapter16/onlineStore/config/cache.php | 110 - Chapter16/onlineStore/config/cors.php | 34 - Chapter16/onlineStore/config/database.php | 147 - Chapter16/onlineStore/config/filesystems.php | 73 - Chapter16/onlineStore/config/hashing.php | 52 - Chapter16/onlineStore/config/logging.php | 119 - Chapter16/onlineStore/config/mail.php | 117 - Chapter16/onlineStore/config/queue.php | 93 - Chapter16/onlineStore/config/sanctum.php | 65 - Chapter16/onlineStore/config/services.php | 33 - Chapter16/onlineStore/config/session.php | 201 - Chapter16/onlineStore/config/view.php | 36 - Chapter16/onlineStore/database/.gitignore | 1 - .../database/factories/UserFactory.php | 42 - .../2014_10_12_000000_create_users_table.php | 36 - ...12_100000_create_password_resets_table.php | 32 - ..._08_19_000000_create_failed_jobs_table.php | 36 - ...01_create_personal_access_tokens_table.php | 36 - ...022_02_11_153916_create_products_table.php | 35 - .../database/seeders/DatabaseSeeder.php | 19 - Chapter16/onlineStore/lang/en.json | 7 - Chapter16/onlineStore/lang/en/auth.php | 20 - Chapter16/onlineStore/lang/en/pagination.php | 19 - Chapter16/onlineStore/lang/en/passwords.php | 22 - Chapter16/onlineStore/lang/en/validation.php | 163 - Chapter16/onlineStore/package.json | 18 - Chapter16/onlineStore/phpcs.xml | 10 - Chapter16/onlineStore/phpunit.xml | 31 - Chapter16/onlineStore/public/.htaccess | 21 - Chapter16/onlineStore/public/css/admin.css | 33 - Chapter16/onlineStore/public/css/app.css | 20 - Chapter16/onlineStore/public/favicon.ico | 0 Chapter16/onlineStore/public/img/game.png | Bin 25896 -> 0 bytes Chapter16/onlineStore/public/img/safe.png | Bin 19240 -> 0 bytes .../onlineStore/public/img/submarine.png | Bin 24330 -> 0 bytes .../onlineStore/public/img/undraw_profile.svg | 38 - Chapter16/onlineStore/public/index.php | 55 - Chapter16/onlineStore/public/robots.txt | 2 - Chapter16/onlineStore/resources/css/app.css | 0 Chapter16/onlineStore/resources/js/app.js | 1 - .../onlineStore/resources/js/bootstrap.js | 28 - .../views/admin/home/index.blade.php | 12 - .../views/admin/product/index.blade.php | 31 - .../resources/views/home/about.blade.php | 15 - .../resources/views/home/index.blade.php | 15 - .../resources/views/layouts/admin.blade.php | 59 - .../resources/views/layouts/app.blade.php | 55 - .../resources/views/product/index.blade.php | 18 - .../resources/views/product/show.blade.php | 21 - .../resources/views/welcome.blade.php | 7 - Chapter16/onlineStore/routes/api.php | 19 - Chapter16/onlineStore/routes/channels.php | 18 - Chapter16/onlineStore/routes/console.php | 19 - Chapter16/onlineStore/routes/web.php | 21 - Chapter16/onlineStore/storage/app/.gitignore | 3 - .../onlineStore/storage/app/public/.gitignore | 2 - .../onlineStore/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 - Chapter16/onlineStore/storage/logs/.gitignore | 2 - .../onlineStore/tests/CreatesApplication.php | 22 - .../onlineStore/tests/Feature/ExampleTest.php | 21 - Chapter16/onlineStore/tests/TestCase.php | 10 - .../onlineStore/tests/Unit/ExampleTest.php | 18 - Chapter16/onlineStore/webpack.mix.js | 17 - Chapter17-Advanced/onlineStore/.editorconfig | 18 - Chapter17-Advanced/onlineStore/.env.example | 52 - Chapter17-Advanced/onlineStore/.gitattributes | 10 - Chapter17-Advanced/onlineStore/.gitignore | 15 - Chapter17-Advanced/onlineStore/.styleci.yml | 13 - Chapter17-Advanced/onlineStore/README.md | 64 - .../onlineStore/app/Console/Kernel.php | 32 - .../onlineStore/app/Exceptions/Handler.php | 41 - .../Controllers/Admin/AdminHomeController.php | 16 - .../Admin/AdminProductController.php | 34 - .../app/Http/Controllers/Controller.php | 13 - .../app/Http/Controllers/HomeController.php | 25 - .../Http/Controllers/ProductController.php | 29 - .../onlineStore/app/Http/Kernel.php | 67 - .../app/Http/Middleware/Authenticate.php | 21 - .../app/Http/Middleware/EncryptCookies.php | 17 - .../PreventRequestsDuringMaintenance.php | 17 - .../Middleware/RedirectIfAuthenticated.php | 32 - .../app/Http/Middleware/TrimStrings.php | 19 - .../app/Http/Middleware/TrustHosts.php | 20 - .../app/Http/Middleware/TrustProxies.php | 28 - .../app/Http/Middleware/VerifyCsrfToken.php | 17 - .../onlineStore/app/Models/Product.php | 99 - .../onlineStore/app/Models/User.php | 44 - .../app/Providers/AppServiceProvider.php | 28 - .../app/Providers/AuthServiceProvider.php | 30 - .../Providers/BroadcastServiceProvider.php | 21 - .../app/Providers/EventServiceProvider.php | 32 - .../app/Providers/RouteServiceProvider.php | 63 - .../app/Traits/HasClassicSetter.php | 31 - Chapter17-Advanced/onlineStore/artisan | 53 - .../onlineStore/bootstrap/app.php | 55 - .../onlineStore/bootstrap/cache/.gitignore | 2 - Chapter17-Advanced/onlineStore/composer.json | 63 - Chapter17-Advanced/onlineStore/composer.lock | 7860 ---------------- Chapter17-Advanced/onlineStore/config/app.php | 197 - .../onlineStore/config/auth.php | 111 - .../onlineStore/config/broadcasting.php | 67 - .../onlineStore/config/cache.php | 110 - .../onlineStore/config/cors.php | 34 - .../onlineStore/config/database.php | 147 - .../onlineStore/config/filesystems.php | 73 - .../onlineStore/config/hashing.php | 52 - .../onlineStore/config/logging.php | 119 - .../onlineStore/config/mail.php | 117 - .../onlineStore/config/queue.php | 93 - .../onlineStore/config/sanctum.php | 65 - .../onlineStore/config/services.php | 33 - .../onlineStore/config/session.php | 201 - .../onlineStore/config/view.php | 36 - .../onlineStore/database/.gitignore | 1 - .../database/factories/UserFactory.php | 42 - .../2014_10_12_000000_create_users_table.php | 36 - ...12_100000_create_password_resets_table.php | 32 - ..._08_19_000000_create_failed_jobs_table.php | 36 - ...01_create_personal_access_tokens_table.php | 36 - ...022_02_11_153916_create_products_table.php | 35 - .../database/seeders/DatabaseSeeder.php | 19 - Chapter17-Advanced/onlineStore/lang/en.json | 7 - .../onlineStore/lang/en/auth.php | 20 - .../onlineStore/lang/en/pagination.php | 19 - .../onlineStore/lang/en/passwords.php | 22 - .../onlineStore/lang/en/validation.php | 163 - Chapter17-Advanced/onlineStore/package.json | 18 - Chapter17-Advanced/onlineStore/phpcs.xml | 10 - Chapter17-Advanced/onlineStore/phpunit.xml | 31 - .../onlineStore/public/.htaccess | 21 - .../onlineStore/public/css/admin.css | 33 - .../onlineStore/public/css/app.css | 20 - .../onlineStore/public/favicon.ico | 0 .../onlineStore/public/img/game.png | Bin 25896 -> 0 bytes .../onlineStore/public/img/safe.png | Bin 19240 -> 0 bytes .../onlineStore/public/img/submarine.png | Bin 24330 -> 0 bytes .../onlineStore/public/img/undraw_profile.svg | 38 - .../onlineStore/public/index.php | 55 - .../onlineStore/public/robots.txt | 2 - .../onlineStore/resources/css/app.css | 0 .../onlineStore/resources/js/app.js | 1 - .../onlineStore/resources/js/bootstrap.js | 28 - .../views/admin/home/index.blade.php | 12 - .../views/admin/product/index.blade.php | 73 - .../resources/views/home/about.blade.php | 15 - .../resources/views/home/index.blade.php | 15 - .../resources/views/layouts/admin.blade.php | 59 - .../resources/views/layouts/app.blade.php | 55 - .../resources/views/product/index.blade.php | 18 - .../resources/views/product/show.blade.php | 21 - .../resources/views/welcome.blade.php | 7 - Chapter17-Advanced/onlineStore/routes/api.php | 19 - .../onlineStore/routes/channels.php | 18 - .../onlineStore/routes/console.php | 19 - Chapter17-Advanced/onlineStore/routes/web.php | 22 - .../onlineStore/storage/app/.gitignore | 3 - .../onlineStore/storage/app/public/.gitignore | 2 - .../onlineStore/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 - .../onlineStore/storage/logs/.gitignore | 2 - .../onlineStore/tests/CreatesApplication.php | 22 - .../onlineStore/tests/Feature/ExampleTest.php | 21 - .../onlineStore/tests/TestCase.php | 10 - .../onlineStore/tests/Unit/ExampleTest.php | 18 - Chapter17-Advanced/onlineStore/webpack.mix.js | 17 - Chapter17/onlineStore/.editorconfig | 18 - Chapter17/onlineStore/.env.example | 52 - Chapter17/onlineStore/.gitattributes | 10 - Chapter17/onlineStore/.gitignore | 15 - Chapter17/onlineStore/.styleci.yml | 13 - Chapter17/onlineStore/README.md | 64 - Chapter17/onlineStore/app/Console/Kernel.php | 32 - .../onlineStore/app/Exceptions/Handler.php | 41 - .../Controllers/Admin/AdminHomeController.php | 16 - .../Admin/AdminProductController.php | 37 - .../app/Http/Controllers/Controller.php | 13 - .../app/Http/Controllers/HomeController.php | 25 - .../Http/Controllers/ProductController.php | 29 - Chapter17/onlineStore/app/Http/Kernel.php | 67 - .../app/Http/Middleware/Authenticate.php | 21 - .../app/Http/Middleware/EncryptCookies.php | 17 - .../PreventRequestsDuringMaintenance.php | 17 - .../Middleware/RedirectIfAuthenticated.php | 32 - .../app/Http/Middleware/TrimStrings.php | 19 - .../app/Http/Middleware/TrustHosts.php | 20 - .../app/Http/Middleware/TrustProxies.php | 28 - .../app/Http/Middleware/VerifyCsrfToken.php | 17 - Chapter17/onlineStore/app/Models/Product.php | 89 - Chapter17/onlineStore/app/Models/User.php | 44 - .../app/Providers/AppServiceProvider.php | 28 - .../app/Providers/AuthServiceProvider.php | 30 - .../Providers/BroadcastServiceProvider.php | 21 - .../app/Providers/EventServiceProvider.php | 32 - .../app/Providers/RouteServiceProvider.php | 63 - Chapter17/onlineStore/artisan | 53 - Chapter17/onlineStore/bootstrap/app.php | 55 - .../onlineStore/bootstrap/cache/.gitignore | 2 - Chapter17/onlineStore/composer.json | 63 - Chapter17/onlineStore/composer.lock | 7860 ---------------- Chapter17/onlineStore/config/app.php | 197 - Chapter17/onlineStore/config/auth.php | 111 - Chapter17/onlineStore/config/broadcasting.php | 67 - Chapter17/onlineStore/config/cache.php | 110 - Chapter17/onlineStore/config/cors.php | 34 - Chapter17/onlineStore/config/database.php | 147 - Chapter17/onlineStore/config/filesystems.php | 73 - Chapter17/onlineStore/config/hashing.php | 52 - Chapter17/onlineStore/config/logging.php | 119 - Chapter17/onlineStore/config/mail.php | 117 - Chapter17/onlineStore/config/queue.php | 93 - Chapter17/onlineStore/config/sanctum.php | 65 - Chapter17/onlineStore/config/services.php | 33 - Chapter17/onlineStore/config/session.php | 201 - Chapter17/onlineStore/config/view.php | 36 - Chapter17/onlineStore/database/.gitignore | 1 - .../database/factories/UserFactory.php | 42 - .../2014_10_12_000000_create_users_table.php | 36 - ...12_100000_create_password_resets_table.php | 32 - ..._08_19_000000_create_failed_jobs_table.php | 36 - ...01_create_personal_access_tokens_table.php | 36 - ...022_02_11_153916_create_products_table.php | 35 - .../database/seeders/DatabaseSeeder.php | 19 - Chapter17/onlineStore/lang/en.json | 7 - Chapter17/onlineStore/lang/en/auth.php | 20 - Chapter17/onlineStore/lang/en/pagination.php | 19 - Chapter17/onlineStore/lang/en/passwords.php | 22 - Chapter17/onlineStore/lang/en/validation.php | 163 - Chapter17/onlineStore/package.json | 18 - Chapter17/onlineStore/phpcs.xml | 10 - Chapter17/onlineStore/phpunit.xml | 31 - Chapter17/onlineStore/public/.htaccess | 21 - Chapter17/onlineStore/public/css/admin.css | 33 - Chapter17/onlineStore/public/css/app.css | 20 - Chapter17/onlineStore/public/favicon.ico | 0 Chapter17/onlineStore/public/img/game.png | Bin 25896 -> 0 bytes Chapter17/onlineStore/public/img/safe.png | Bin 19240 -> 0 bytes .../onlineStore/public/img/submarine.png | Bin 24330 -> 0 bytes .../onlineStore/public/img/undraw_profile.svg | 38 - Chapter17/onlineStore/public/index.php | 55 - Chapter17/onlineStore/public/robots.txt | 2 - Chapter17/onlineStore/resources/css/app.css | 0 Chapter17/onlineStore/resources/js/app.js | 1 - .../onlineStore/resources/js/bootstrap.js | 28 - .../views/admin/home/index.blade.php | 12 - .../views/admin/product/index.blade.php | 73 - .../resources/views/home/about.blade.php | 15 - .../resources/views/home/index.blade.php | 15 - .../resources/views/layouts/admin.blade.php | 59 - .../resources/views/layouts/app.blade.php | 55 - .../resources/views/product/index.blade.php | 18 - .../resources/views/product/show.blade.php | 21 - .../resources/views/welcome.blade.php | 7 - Chapter17/onlineStore/routes/api.php | 19 - Chapter17/onlineStore/routes/channels.php | 18 - Chapter17/onlineStore/routes/console.php | 19 - Chapter17/onlineStore/routes/web.php | 22 - Chapter17/onlineStore/storage/app/.gitignore | 3 - .../onlineStore/storage/app/public/.gitignore | 2 - .../onlineStore/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 - Chapter17/onlineStore/storage/logs/.gitignore | 2 - .../onlineStore/tests/CreatesApplication.php | 22 - .../onlineStore/tests/Feature/ExampleTest.php | 21 - Chapter17/onlineStore/tests/TestCase.php | 10 - .../onlineStore/tests/Unit/ExampleTest.php | 18 - Chapter17/onlineStore/webpack.mix.js | 17 - Chapter18/onlineStore/.editorconfig | 18 - Chapter18/onlineStore/.env.example | 52 - Chapter18/onlineStore/.gitattributes | 10 - Chapter18/onlineStore/.gitignore | 15 - Chapter18/onlineStore/.styleci.yml | 13 - Chapter18/onlineStore/README.md | 64 - Chapter18/onlineStore/app/Console/Kernel.php | 32 - .../onlineStore/app/Exceptions/Handler.php | 41 - .../Controllers/Admin/AdminHomeController.php | 16 - .../Admin/AdminProductController.php | 48 - .../app/Http/Controllers/Controller.php | 13 - .../app/Http/Controllers/HomeController.php | 25 - .../Http/Controllers/ProductController.php | 29 - Chapter18/onlineStore/app/Http/Kernel.php | 67 - .../app/Http/Middleware/Authenticate.php | 21 - .../app/Http/Middleware/EncryptCookies.php | 17 - .../PreventRequestsDuringMaintenance.php | 17 - .../Middleware/RedirectIfAuthenticated.php | 32 - .../app/Http/Middleware/TrimStrings.php | 19 - .../app/Http/Middleware/TrustHosts.php | 20 - .../app/Http/Middleware/TrustProxies.php | 28 - .../app/Http/Middleware/VerifyCsrfToken.php | 17 - Chapter18/onlineStore/app/Models/Product.php | 89 - Chapter18/onlineStore/app/Models/User.php | 44 - .../app/Providers/AppServiceProvider.php | 28 - .../app/Providers/AuthServiceProvider.php | 30 - .../Providers/BroadcastServiceProvider.php | 21 - .../app/Providers/EventServiceProvider.php | 32 - .../app/Providers/RouteServiceProvider.php | 63 - Chapter18/onlineStore/artisan | 53 - Chapter18/onlineStore/bootstrap/app.php | 55 - .../onlineStore/bootstrap/cache/.gitignore | 2 - Chapter18/onlineStore/composer.json | 63 - Chapter18/onlineStore/composer.lock | 7860 ---------------- Chapter18/onlineStore/config/app.php | 197 - Chapter18/onlineStore/config/auth.php | 111 - Chapter18/onlineStore/config/broadcasting.php | 67 - Chapter18/onlineStore/config/cache.php | 110 - Chapter18/onlineStore/config/cors.php | 34 - Chapter18/onlineStore/config/database.php | 147 - Chapter18/onlineStore/config/filesystems.php | 73 - Chapter18/onlineStore/config/hashing.php | 52 - Chapter18/onlineStore/config/logging.php | 119 - Chapter18/onlineStore/config/mail.php | 117 - Chapter18/onlineStore/config/queue.php | 93 - Chapter18/onlineStore/config/sanctum.php | 65 - Chapter18/onlineStore/config/services.php | 33 - Chapter18/onlineStore/config/session.php | 201 - Chapter18/onlineStore/config/view.php | 36 - Chapter18/onlineStore/database/.gitignore | 1 - .../database/factories/UserFactory.php | 42 - .../2014_10_12_000000_create_users_table.php | 36 - ...12_100000_create_password_resets_table.php | 32 - ..._08_19_000000_create_failed_jobs_table.php | 36 - ...01_create_personal_access_tokens_table.php | 36 - ...022_02_11_153916_create_products_table.php | 35 - .../database/seeders/DatabaseSeeder.php | 19 - Chapter18/onlineStore/lang/en.json | 7 - Chapter18/onlineStore/lang/en/auth.php | 20 - Chapter18/onlineStore/lang/en/pagination.php | 19 - Chapter18/onlineStore/lang/en/passwords.php | 22 - Chapter18/onlineStore/lang/en/validation.php | 163 - Chapter18/onlineStore/package.json | 18 - Chapter18/onlineStore/phpcs.xml | 10 - Chapter18/onlineStore/phpunit.xml | 31 - Chapter18/onlineStore/public/.htaccess | 21 - Chapter18/onlineStore/public/css/admin.css | 33 - Chapter18/onlineStore/public/css/app.css | 20 - Chapter18/onlineStore/public/favicon.ico | 0 Chapter18/onlineStore/public/img/game.png | Bin 25896 -> 0 bytes Chapter18/onlineStore/public/img/safe.png | Bin 19240 -> 0 bytes .../onlineStore/public/img/submarine.png | Bin 24330 -> 0 bytes .../onlineStore/public/img/undraw_profile.svg | 38 - Chapter18/onlineStore/public/index.php | 55 - Chapter18/onlineStore/public/robots.txt | 2 - Chapter18/onlineStore/resources/css/app.css | 0 Chapter18/onlineStore/resources/js/app.js | 1 - .../onlineStore/resources/js/bootstrap.js | 28 - .../views/admin/home/index.blade.php | 12 - .../views/admin/product/index.blade.php | 86 - .../resources/views/home/about.blade.php | 15 - .../resources/views/home/index.blade.php | 15 - .../resources/views/layouts/admin.blade.php | 59 - .../resources/views/layouts/app.blade.php | 55 - .../resources/views/product/index.blade.php | 18 - .../resources/views/product/show.blade.php | 21 - .../resources/views/welcome.blade.php | 7 - Chapter18/onlineStore/routes/api.php | 19 - Chapter18/onlineStore/routes/channels.php | 18 - Chapter18/onlineStore/routes/console.php | 19 - Chapter18/onlineStore/routes/web.php | 22 - Chapter18/onlineStore/storage/app/.gitignore | 3 - .../onlineStore/storage/app/public/.gitignore | 2 - .../onlineStore/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 - Chapter18/onlineStore/storage/logs/.gitignore | 2 - .../onlineStore/tests/CreatesApplication.php | 22 - .../onlineStore/tests/Feature/ExampleTest.php | 21 - Chapter18/onlineStore/tests/TestCase.php | 10 - .../onlineStore/tests/Unit/ExampleTest.php | 18 - Chapter18/onlineStore/webpack.mix.js | 17 - Chapter19/onlineStore/.editorconfig | 18 - Chapter19/onlineStore/.env.example | 52 - Chapter19/onlineStore/.gitattributes | 10 - Chapter19/onlineStore/.gitignore | 15 - Chapter19/onlineStore/.styleci.yml | 13 - Chapter19/onlineStore/README.md | 64 - Chapter19/onlineStore/app/Console/Kernel.php | 32 - .../onlineStore/app/Exceptions/Handler.php | 41 - .../Controllers/Admin/AdminHomeController.php | 16 - .../Admin/AdminProductController.php | 89 - .../app/Http/Controllers/Controller.php | 13 - .../app/Http/Controllers/HomeController.php | 25 - .../Http/Controllers/ProductController.php | 29 - Chapter19/onlineStore/app/Http/Kernel.php | 67 - .../app/Http/Middleware/Authenticate.php | 21 - .../app/Http/Middleware/EncryptCookies.php | 17 - .../PreventRequestsDuringMaintenance.php | 17 - .../Middleware/RedirectIfAuthenticated.php | 32 - .../app/Http/Middleware/TrimStrings.php | 19 - .../app/Http/Middleware/TrustHosts.php | 20 - .../app/Http/Middleware/TrustProxies.php | 28 - .../app/Http/Middleware/VerifyCsrfToken.php | 17 - Chapter19/onlineStore/app/Models/Product.php | 89 - Chapter19/onlineStore/app/Models/User.php | 44 - .../app/Providers/AppServiceProvider.php | 28 - .../app/Providers/AuthServiceProvider.php | 30 - .../Providers/BroadcastServiceProvider.php | 21 - .../app/Providers/EventServiceProvider.php | 32 - .../app/Providers/RouteServiceProvider.php | 63 - Chapter19/onlineStore/artisan | 53 - Chapter19/onlineStore/bootstrap/app.php | 55 - .../onlineStore/bootstrap/cache/.gitignore | 2 - Chapter19/onlineStore/composer.json | 63 - Chapter19/onlineStore/composer.lock | 7860 ---------------- Chapter19/onlineStore/config/app.php | 197 - Chapter19/onlineStore/config/auth.php | 111 - Chapter19/onlineStore/config/broadcasting.php | 67 - Chapter19/onlineStore/config/cache.php | 110 - Chapter19/onlineStore/config/cors.php | 34 - Chapter19/onlineStore/config/database.php | 147 - Chapter19/onlineStore/config/filesystems.php | 73 - Chapter19/onlineStore/config/hashing.php | 52 - Chapter19/onlineStore/config/logging.php | 119 - Chapter19/onlineStore/config/mail.php | 117 - Chapter19/onlineStore/config/queue.php | 93 - Chapter19/onlineStore/config/sanctum.php | 65 - Chapter19/onlineStore/config/services.php | 33 - Chapter19/onlineStore/config/session.php | 201 - Chapter19/onlineStore/config/view.php | 36 - Chapter19/onlineStore/database/.gitignore | 1 - .../database/factories/UserFactory.php | 42 - .../2014_10_12_000000_create_users_table.php | 36 - ...12_100000_create_password_resets_table.php | 32 - ..._08_19_000000_create_failed_jobs_table.php | 36 - ...01_create_personal_access_tokens_table.php | 36 - ...022_02_11_153916_create_products_table.php | 35 - .../database/seeders/DatabaseSeeder.php | 19 - Chapter19/onlineStore/lang/en.json | 7 - Chapter19/onlineStore/lang/en/auth.php | 20 - Chapter19/onlineStore/lang/en/pagination.php | 19 - Chapter19/onlineStore/lang/en/passwords.php | 22 - Chapter19/onlineStore/lang/en/validation.php | 163 - Chapter19/onlineStore/package.json | 18 - Chapter19/onlineStore/phpcs.xml | 10 - Chapter19/onlineStore/phpunit.xml | 31 - Chapter19/onlineStore/public/.htaccess | 21 - Chapter19/onlineStore/public/css/admin.css | 33 - Chapter19/onlineStore/public/css/app.css | 20 - Chapter19/onlineStore/public/favicon.ico | 0 Chapter19/onlineStore/public/img/game.png | Bin 25896 -> 0 bytes Chapter19/onlineStore/public/img/safe.png | Bin 19240 -> 0 bytes .../onlineStore/public/img/submarine.png | Bin 24330 -> 0 bytes .../onlineStore/public/img/undraw_profile.svg | 38 - Chapter19/onlineStore/public/index.php | 55 - Chapter19/onlineStore/public/robots.txt | 2 - Chapter19/onlineStore/resources/css/app.css | 0 Chapter19/onlineStore/resources/js/app.js | 1 - .../onlineStore/resources/js/bootstrap.js | 28 - .../views/admin/home/index.blade.php | 12 - .../views/admin/product/edit.blade.php | 61 - .../views/admin/product/index.blade.php | 98 - .../resources/views/home/about.blade.php | 15 - .../resources/views/home/index.blade.php | 15 - .../resources/views/layouts/admin.blade.php | 60 - .../resources/views/layouts/app.blade.php | 55 - .../resources/views/product/index.blade.php | 18 - .../resources/views/product/show.blade.php | 21 - .../resources/views/welcome.blade.php | 7 - Chapter19/onlineStore/routes/api.php | 19 - Chapter19/onlineStore/routes/channels.php | 18 - Chapter19/onlineStore/routes/console.php | 19 - Chapter19/onlineStore/routes/web.php | 25 - Chapter19/onlineStore/storage/app/.gitignore | 3 - .../onlineStore/storage/app/public/.gitignore | 2 - .../onlineStore/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 - Chapter19/onlineStore/storage/logs/.gitignore | 2 - .../onlineStore/tests/CreatesApplication.php | 22 - .../onlineStore/tests/Feature/ExampleTest.php | 21 - Chapter19/onlineStore/tests/TestCase.php | 10 - .../onlineStore/tests/Unit/ExampleTest.php | 18 - Chapter19/onlineStore/webpack.mix.js | 17 - Chapter20/onlineStore/.editorconfig | 18 - Chapter20/onlineStore/.env.example | 52 - Chapter20/onlineStore/.gitattributes | 10 - Chapter20/onlineStore/.gitignore | 15 - Chapter20/onlineStore/.styleci.yml | 13 - Chapter20/onlineStore/README.md | 64 - Chapter20/onlineStore/app/Console/Kernel.php | 32 - .../onlineStore/app/Exceptions/Handler.php | 41 - .../Controllers/Admin/AdminHomeController.php | 16 - .../Admin/AdminProductController.php | 79 - .../app/Http/Controllers/Controller.php | 13 - .../app/Http/Controllers/HomeController.php | 25 - .../Http/Controllers/ProductController.php | 29 - Chapter20/onlineStore/app/Http/Kernel.php | 67 - .../app/Http/Middleware/Authenticate.php | 21 - .../app/Http/Middleware/EncryptCookies.php | 17 - .../PreventRequestsDuringMaintenance.php | 17 - .../Middleware/RedirectIfAuthenticated.php | 32 - .../app/Http/Middleware/TrimStrings.php | 19 - .../app/Http/Middleware/TrustHosts.php | 20 - .../app/Http/Middleware/TrustProxies.php | 28 - .../app/Http/Middleware/VerifyCsrfToken.php | 17 - Chapter20/onlineStore/app/Models/Product.php | 99 - Chapter20/onlineStore/app/Models/User.php | 44 - .../app/Providers/AppServiceProvider.php | 28 - .../app/Providers/AuthServiceProvider.php | 30 - .../Providers/BroadcastServiceProvider.php | 21 - .../app/Providers/EventServiceProvider.php | 32 - .../app/Providers/RouteServiceProvider.php | 63 - Chapter20/onlineStore/artisan | 53 - Chapter20/onlineStore/bootstrap/app.php | 55 - .../onlineStore/bootstrap/cache/.gitignore | 2 - Chapter20/onlineStore/composer.json | 63 - Chapter20/onlineStore/composer.lock | 7860 ---------------- Chapter20/onlineStore/config/app.php | 197 - Chapter20/onlineStore/config/auth.php | 111 - Chapter20/onlineStore/config/broadcasting.php | 67 - Chapter20/onlineStore/config/cache.php | 110 - Chapter20/onlineStore/config/cors.php | 34 - Chapter20/onlineStore/config/database.php | 147 - Chapter20/onlineStore/config/filesystems.php | 73 - Chapter20/onlineStore/config/hashing.php | 52 - Chapter20/onlineStore/config/logging.php | 119 - Chapter20/onlineStore/config/mail.php | 117 - Chapter20/onlineStore/config/queue.php | 93 - Chapter20/onlineStore/config/sanctum.php | 65 - Chapter20/onlineStore/config/services.php | 33 - Chapter20/onlineStore/config/session.php | 201 - Chapter20/onlineStore/config/view.php | 36 - Chapter20/onlineStore/database/.gitignore | 1 - .../database/factories/UserFactory.php | 42 - .../2014_10_12_000000_create_users_table.php | 36 - ...12_100000_create_password_resets_table.php | 32 - ..._08_19_000000_create_failed_jobs_table.php | 36 - ...01_create_personal_access_tokens_table.php | 36 - ...022_02_11_153916_create_products_table.php | 35 - .../database/seeders/DatabaseSeeder.php | 19 - Chapter20/onlineStore/lang/en.json | 7 - Chapter20/onlineStore/lang/en/auth.php | 20 - Chapter20/onlineStore/lang/en/pagination.php | 19 - Chapter20/onlineStore/lang/en/passwords.php | 22 - Chapter20/onlineStore/lang/en/validation.php | 163 - Chapter20/onlineStore/package.json | 18 - Chapter20/onlineStore/phpcs.xml | 10 - Chapter20/onlineStore/phpunit.xml | 31 - Chapter20/onlineStore/public/.htaccess | 21 - Chapter20/onlineStore/public/css/admin.css | 33 - Chapter20/onlineStore/public/css/app.css | 20 - Chapter20/onlineStore/public/favicon.ico | 0 Chapter20/onlineStore/public/img/game.png | Bin 25896 -> 0 bytes Chapter20/onlineStore/public/img/safe.png | Bin 19240 -> 0 bytes .../onlineStore/public/img/submarine.png | Bin 24330 -> 0 bytes .../onlineStore/public/img/undraw_profile.svg | 38 - Chapter20/onlineStore/public/index.php | 55 - Chapter20/onlineStore/public/robots.txt | 2 - Chapter20/onlineStore/resources/css/app.css | 0 Chapter20/onlineStore/resources/js/app.js | 1 - .../onlineStore/resources/js/bootstrap.js | 28 - .../views/admin/home/index.blade.php | 12 - .../views/admin/product/edit.blade.php | 61 - .../views/admin/product/index.blade.php | 98 - .../resources/views/home/about.blade.php | 15 - .../resources/views/home/index.blade.php | 15 - .../resources/views/layouts/admin.blade.php | 60 - .../resources/views/layouts/app.blade.php | 55 - .../resources/views/product/index.blade.php | 18 - .../resources/views/product/show.blade.php | 21 - .../resources/views/welcome.blade.php | 7 - Chapter20/onlineStore/routes/api.php | 19 - Chapter20/onlineStore/routes/channels.php | 18 - Chapter20/onlineStore/routes/console.php | 19 - Chapter20/onlineStore/routes/web.php | 25 - Chapter20/onlineStore/storage/app/.gitignore | 3 - .../onlineStore/storage/app/public/.gitignore | 2 - .../onlineStore/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 - Chapter20/onlineStore/storage/logs/.gitignore | 2 - .../onlineStore/tests/CreatesApplication.php | 22 - .../onlineStore/tests/Feature/ExampleTest.php | 21 - Chapter20/onlineStore/tests/TestCase.php | 10 - .../onlineStore/tests/Unit/ExampleTest.php | 18 - Chapter20/onlineStore/webpack.mix.js | 17 - Chapter21/onlineStore/.editorconfig | 18 - Chapter21/onlineStore/.env.example | 52 - Chapter21/onlineStore/.gitattributes | 10 - Chapter21/onlineStore/.gitignore | 15 - Chapter21/onlineStore/.styleci.yml | 13 - Chapter21/onlineStore/README.md | 64 - Chapter21/onlineStore/app/Console/Kernel.php | 32 - .../onlineStore/app/Exceptions/Handler.php | 41 - .../Controllers/Admin/AdminHomeController.php | 16 - .../Admin/AdminProductController.php | 79 - .../Auth/ConfirmPasswordController.php | 40 - .../Auth/ForgotPasswordController.php | 22 - .../Http/Controllers/Auth/LoginController.php | 40 - .../Controllers/Auth/RegisterController.php | 73 - .../Auth/ResetPasswordController.php | 30 - .../Auth/VerificationController.php | 42 - .../app/Http/Controllers/Controller.php | 13 - .../app/Http/Controllers/HomeController.php | 25 - .../Http/Controllers/ProductController.php | 29 - Chapter21/onlineStore/app/Http/Kernel.php | 67 - .../app/Http/Middleware/Authenticate.php | 21 - .../app/Http/Middleware/EncryptCookies.php | 17 - .../PreventRequestsDuringMaintenance.php | 17 - .../Middleware/RedirectIfAuthenticated.php | 32 - .../app/Http/Middleware/TrimStrings.php | 19 - .../app/Http/Middleware/TrustHosts.php | 20 - .../app/Http/Middleware/TrustProxies.php | 28 - .../app/Http/Middleware/VerifyCsrfToken.php | 17 - Chapter21/onlineStore/app/Models/Product.php | 99 - Chapter21/onlineStore/app/Models/User.php | 44 - .../app/Providers/AppServiceProvider.php | 28 - .../app/Providers/AuthServiceProvider.php | 30 - .../Providers/BroadcastServiceProvider.php | 21 - .../app/Providers/EventServiceProvider.php | 32 - .../app/Providers/RouteServiceProvider.php | 63 - Chapter21/onlineStore/artisan | 53 - Chapter21/onlineStore/bootstrap/app.php | 55 - .../onlineStore/bootstrap/cache/.gitignore | 2 - Chapter21/onlineStore/composer.json | 64 - Chapter21/onlineStore/composer.lock | 7921 ----------------- Chapter21/onlineStore/config/app.php | 197 - Chapter21/onlineStore/config/auth.php | 111 - Chapter21/onlineStore/config/broadcasting.php | 67 - Chapter21/onlineStore/config/cache.php | 110 - Chapter21/onlineStore/config/cors.php | 34 - Chapter21/onlineStore/config/database.php | 147 - Chapter21/onlineStore/config/filesystems.php | 73 - Chapter21/onlineStore/config/hashing.php | 52 - Chapter21/onlineStore/config/logging.php | 119 - Chapter21/onlineStore/config/mail.php | 117 - Chapter21/onlineStore/config/queue.php | 93 - Chapter21/onlineStore/config/sanctum.php | 65 - Chapter21/onlineStore/config/services.php | 33 - Chapter21/onlineStore/config/session.php | 201 - Chapter21/onlineStore/config/view.php | 36 - Chapter21/onlineStore/database/.gitignore | 1 - .../database/factories/UserFactory.php | 42 - .../2014_10_12_000000_create_users_table.php | 36 - ...12_100000_create_password_resets_table.php | 32 - ..._08_19_000000_create_failed_jobs_table.php | 36 - ...01_create_personal_access_tokens_table.php | 36 - ...022_02_11_153916_create_products_table.php | 35 - .../database/seeders/DatabaseSeeder.php | 19 - Chapter21/onlineStore/lang/en.json | 7 - Chapter21/onlineStore/lang/en/auth.php | 20 - Chapter21/onlineStore/lang/en/pagination.php | 19 - Chapter21/onlineStore/lang/en/passwords.php | 22 - Chapter21/onlineStore/lang/en/validation.php | 163 - Chapter21/onlineStore/package.json | 22 - Chapter21/onlineStore/phpcs.xml | 10 - Chapter21/onlineStore/phpunit.xml | 31 - Chapter21/onlineStore/public/.htaccess | 21 - Chapter21/onlineStore/public/css/admin.css | 33 - Chapter21/onlineStore/public/css/app.css | 20 - Chapter21/onlineStore/public/favicon.ico | 0 Chapter21/onlineStore/public/img/game.png | Bin 25896 -> 0 bytes Chapter21/onlineStore/public/img/safe.png | Bin 19240 -> 0 bytes .../onlineStore/public/img/submarine.png | Bin 24330 -> 0 bytes .../onlineStore/public/img/undraw_profile.svg | 38 - Chapter21/onlineStore/public/index.php | 55 - Chapter21/onlineStore/public/robots.txt | 2 - Chapter21/onlineStore/resources/css/app.css | 0 Chapter21/onlineStore/resources/js/app.js | 1 - .../onlineStore/resources/js/bootstrap.js | 32 - .../resources/sass/_variables.scss | 7 - Chapter21/onlineStore/resources/sass/app.scss | 8 - .../views/admin/home/index.blade.php | 12 - .../views/admin/product/edit.blade.php | 61 - .../views/admin/product/index.blade.php | 98 - .../resources/views/auth/login.blade.php | 73 - .../views/auth/passwords/confirm.blade.php | 49 - .../views/auth/passwords/email.blade.php | 47 - .../views/auth/passwords/reset.blade.php | 65 - .../resources/views/auth/register.blade.php | 77 - .../resources/views/auth/verify.blade.php | 28 - .../resources/views/home.blade.php | 23 - .../resources/views/home/about.blade.php | 15 - .../resources/views/home/index.blade.php | 15 - .../resources/views/layouts/admin.blade.php | 60 - .../resources/views/layouts/app.blade.php | 66 - .../resources/views/product/index.blade.php | 18 - .../resources/views/product/show.blade.php | 21 - .../resources/views/welcome.blade.php | 7 - Chapter21/onlineStore/routes/api.php | 19 - Chapter21/onlineStore/routes/channels.php | 18 - Chapter21/onlineStore/routes/console.php | 19 - Chapter21/onlineStore/routes/web.php | 27 - Chapter21/onlineStore/storage/app/.gitignore | 3 - .../onlineStore/storage/app/public/.gitignore | 2 - .../onlineStore/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 - Chapter21/onlineStore/storage/logs/.gitignore | 2 - .../onlineStore/tests/CreatesApplication.php | 22 - .../onlineStore/tests/Feature/ExampleTest.php | 21 - Chapter21/onlineStore/tests/TestCase.php | 10 - .../onlineStore/tests/Unit/ExampleTest.php | 18 - Chapter21/onlineStore/webpack.mix.js | 16 - Chapter22/onlineStore/.editorconfig | 18 - Chapter22/onlineStore/.env.example | 52 - Chapter22/onlineStore/.gitattributes | 10 - Chapter22/onlineStore/.gitignore | 15 - Chapter22/onlineStore/.styleci.yml | 13 - Chapter22/onlineStore/README.md | 64 - Chapter22/onlineStore/app/Console/Kernel.php | 32 - .../onlineStore/app/Exceptions/Handler.php | 41 - .../Controllers/Admin/AdminHomeController.php | 16 - .../Admin/AdminProductController.php | 79 - .../Auth/ConfirmPasswordController.php | 40 - .../Auth/ForgotPasswordController.php | 22 - .../Http/Controllers/Auth/LoginController.php | 40 - .../Controllers/Auth/RegisterController.php | 74 - .../Auth/ResetPasswordController.php | 30 - .../Auth/VerificationController.php | 42 - .../app/Http/Controllers/Controller.php | 13 - .../app/Http/Controllers/HomeController.php | 25 - .../Http/Controllers/ProductController.php | 29 - Chapter22/onlineStore/app/Http/Kernel.php | 67 - .../app/Http/Middleware/Authenticate.php | 21 - .../app/Http/Middleware/EncryptCookies.php | 17 - .../PreventRequestsDuringMaintenance.php | 17 - .../Middleware/RedirectIfAuthenticated.php | 32 - .../app/Http/Middleware/TrimStrings.php | 19 - .../app/Http/Middleware/TrustHosts.php | 20 - .../app/Http/Middleware/TrustProxies.php | 28 - .../app/Http/Middleware/VerifyCsrfToken.php | 17 - Chapter22/onlineStore/app/Models/Product.php | 99 - Chapter22/onlineStore/app/Models/User.php | 139 - .../app/Providers/AppServiceProvider.php | 28 - .../app/Providers/AuthServiceProvider.php | 30 - .../Providers/BroadcastServiceProvider.php | 21 - .../app/Providers/EventServiceProvider.php | 32 - .../app/Providers/RouteServiceProvider.php | 63 - Chapter22/onlineStore/artisan | 53 - Chapter22/onlineStore/bootstrap/app.php | 55 - .../onlineStore/bootstrap/cache/.gitignore | 2 - Chapter22/onlineStore/composer.json | 64 - Chapter22/onlineStore/composer.lock | 7921 ----------------- Chapter22/onlineStore/config/app.php | 197 - Chapter22/onlineStore/config/auth.php | 111 - Chapter22/onlineStore/config/broadcasting.php | 67 - Chapter22/onlineStore/config/cache.php | 110 - Chapter22/onlineStore/config/cors.php | 34 - Chapter22/onlineStore/config/database.php | 147 - Chapter22/onlineStore/config/filesystems.php | 73 - Chapter22/onlineStore/config/hashing.php | 52 - Chapter22/onlineStore/config/logging.php | 119 - Chapter22/onlineStore/config/mail.php | 117 - Chapter22/onlineStore/config/queue.php | 93 - Chapter22/onlineStore/config/sanctum.php | 65 - Chapter22/onlineStore/config/services.php | 33 - Chapter22/onlineStore/config/session.php | 201 - Chapter22/onlineStore/config/view.php | 36 - Chapter22/onlineStore/database/.gitignore | 1 - .../database/factories/UserFactory.php | 42 - .../2014_10_12_000000_create_users_table.php | 36 - ...12_100000_create_password_resets_table.php | 32 - ..._08_19_000000_create_failed_jobs_table.php | 36 - ...01_create_personal_access_tokens_table.php | 36 - ...022_02_11_153916_create_products_table.php | 35 - .../2022_02_12_140820_alter_users_table.php | 34 - .../database/seeders/DatabaseSeeder.php | 19 - Chapter22/onlineStore/lang/en.json | 7 - Chapter22/onlineStore/lang/en/auth.php | 20 - Chapter22/onlineStore/lang/en/pagination.php | 19 - Chapter22/onlineStore/lang/en/passwords.php | 22 - Chapter22/onlineStore/lang/en/validation.php | 163 - Chapter22/onlineStore/package.json | 22 - Chapter22/onlineStore/phpcs.xml | 10 - Chapter22/onlineStore/phpunit.xml | 31 - Chapter22/onlineStore/public/.htaccess | 21 - Chapter22/onlineStore/public/css/admin.css | 33 - Chapter22/onlineStore/public/css/app.css | 20 - Chapter22/onlineStore/public/favicon.ico | 0 Chapter22/onlineStore/public/img/game.png | Bin 25896 -> 0 bytes Chapter22/onlineStore/public/img/safe.png | Bin 19240 -> 0 bytes .../onlineStore/public/img/submarine.png | Bin 24330 -> 0 bytes .../onlineStore/public/img/undraw_profile.svg | 38 - Chapter22/onlineStore/public/index.php | 55 - Chapter22/onlineStore/public/robots.txt | 2 - Chapter22/onlineStore/resources/css/app.css | 0 Chapter22/onlineStore/resources/js/app.js | 1 - .../onlineStore/resources/js/bootstrap.js | 32 - .../resources/sass/_variables.scss | 7 - Chapter22/onlineStore/resources/sass/app.scss | 8 - .../views/admin/home/index.blade.php | 12 - .../views/admin/product/edit.blade.php | 61 - .../views/admin/product/index.blade.php | 98 - .../resources/views/auth/login.blade.php | 73 - .../views/auth/passwords/confirm.blade.php | 49 - .../views/auth/passwords/email.blade.php | 47 - .../views/auth/passwords/reset.blade.php | 65 - .../resources/views/auth/register.blade.php | 77 - .../resources/views/auth/verify.blade.php | 28 - .../resources/views/home.blade.php | 23 - .../resources/views/home/about.blade.php | 15 - .../resources/views/home/index.blade.php | 15 - .../resources/views/layouts/admin.blade.php | 60 - .../resources/views/layouts/app.blade.php | 66 - .../resources/views/product/index.blade.php | 18 - .../resources/views/product/show.blade.php | 21 - .../resources/views/welcome.blade.php | 7 - Chapter22/onlineStore/routes/api.php | 19 - Chapter22/onlineStore/routes/channels.php | 18 - Chapter22/onlineStore/routes/console.php | 19 - Chapter22/onlineStore/routes/web.php | 27 - Chapter22/onlineStore/storage/app/.gitignore | 3 - .../onlineStore/storage/app/public/.gitignore | 2 - .../onlineStore/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 - Chapter22/onlineStore/storage/logs/.gitignore | 2 - .../onlineStore/tests/CreatesApplication.php | 22 - .../onlineStore/tests/Feature/ExampleTest.php | 21 - Chapter22/onlineStore/tests/TestCase.php | 10 - .../onlineStore/tests/Unit/ExampleTest.php | 18 - Chapter22/onlineStore/webpack.mix.js | 16 - Chapter23/onlineStore/.editorconfig | 18 - Chapter23/onlineStore/.env.example | 52 - Chapter23/onlineStore/.gitattributes | 10 - Chapter23/onlineStore/.gitignore | 15 - Chapter23/onlineStore/.styleci.yml | 13 - Chapter23/onlineStore/README.md | 64 - Chapter23/onlineStore/app/Console/Kernel.php | 32 - .../onlineStore/app/Exceptions/Handler.php | 41 - .../Controllers/Admin/AdminHomeController.php | 16 - .../Admin/AdminProductController.php | 79 - .../Auth/ConfirmPasswordController.php | 40 - .../Auth/ForgotPasswordController.php | 22 - .../Http/Controllers/Auth/LoginController.php | 40 - .../Controllers/Auth/RegisterController.php | 74 - .../Auth/ResetPasswordController.php | 30 - .../Auth/VerificationController.php | 42 - .../app/Http/Controllers/Controller.php | 13 - .../app/Http/Controllers/HomeController.php | 25 - .../Http/Controllers/ProductController.php | 29 - Chapter23/onlineStore/app/Http/Kernel.php | 68 - .../Http/Middleware/AdminAuthMiddleware.php | 26 - .../app/Http/Middleware/Authenticate.php | 21 - .../app/Http/Middleware/EncryptCookies.php | 17 - .../PreventRequestsDuringMaintenance.php | 17 - .../Middleware/RedirectIfAuthenticated.php | 32 - .../app/Http/Middleware/TrimStrings.php | 19 - .../app/Http/Middleware/TrustHosts.php | 20 - .../app/Http/Middleware/TrustProxies.php | 28 - .../app/Http/Middleware/VerifyCsrfToken.php | 17 - Chapter23/onlineStore/app/Models/Product.php | 99 - Chapter23/onlineStore/app/Models/User.php | 139 - .../app/Providers/AppServiceProvider.php | 28 - .../app/Providers/AuthServiceProvider.php | 30 - .../Providers/BroadcastServiceProvider.php | 21 - .../app/Providers/EventServiceProvider.php | 32 - .../app/Providers/RouteServiceProvider.php | 63 - Chapter23/onlineStore/artisan | 53 - Chapter23/onlineStore/bootstrap/app.php | 55 - .../onlineStore/bootstrap/cache/.gitignore | 2 - Chapter23/onlineStore/composer.json | 64 - Chapter23/onlineStore/composer.lock | 7921 ----------------- Chapter23/onlineStore/config/app.php | 197 - Chapter23/onlineStore/config/auth.php | 111 - Chapter23/onlineStore/config/broadcasting.php | 67 - Chapter23/onlineStore/config/cache.php | 110 - Chapter23/onlineStore/config/cors.php | 34 - Chapter23/onlineStore/config/database.php | 147 - Chapter23/onlineStore/config/filesystems.php | 73 - Chapter23/onlineStore/config/hashing.php | 52 - Chapter23/onlineStore/config/logging.php | 119 - Chapter23/onlineStore/config/mail.php | 117 - Chapter23/onlineStore/config/queue.php | 93 - Chapter23/onlineStore/config/sanctum.php | 65 - Chapter23/onlineStore/config/services.php | 33 - Chapter23/onlineStore/config/session.php | 201 - Chapter23/onlineStore/config/view.php | 36 - Chapter23/onlineStore/database/.gitignore | 1 - .../database/factories/UserFactory.php | 42 - .../2014_10_12_000000_create_users_table.php | 36 - ...12_100000_create_password_resets_table.php | 32 - ..._08_19_000000_create_failed_jobs_table.php | 36 - ...01_create_personal_access_tokens_table.php | 36 - ...022_02_11_153916_create_products_table.php | 35 - .../2022_02_12_140820_alter_users_table.php | 34 - .../database/seeders/DatabaseSeeder.php | 19 - Chapter23/onlineStore/lang/en.json | 7 - Chapter23/onlineStore/lang/en/auth.php | 20 - Chapter23/onlineStore/lang/en/pagination.php | 19 - Chapter23/onlineStore/lang/en/passwords.php | 22 - Chapter23/onlineStore/lang/en/validation.php | 163 - Chapter23/onlineStore/package.json | 22 - Chapter23/onlineStore/phpcs.xml | 10 - Chapter23/onlineStore/phpunit.xml | 31 - Chapter23/onlineStore/public/.htaccess | 21 - Chapter23/onlineStore/public/css/admin.css | 33 - Chapter23/onlineStore/public/css/app.css | 20 - Chapter23/onlineStore/public/favicon.ico | 0 Chapter23/onlineStore/public/img/game.png | Bin 25896 -> 0 bytes Chapter23/onlineStore/public/img/safe.png | Bin 19240 -> 0 bytes .../onlineStore/public/img/submarine.png | Bin 24330 -> 0 bytes .../onlineStore/public/img/undraw_profile.svg | 38 - Chapter23/onlineStore/public/index.php | 55 - Chapter23/onlineStore/public/robots.txt | 2 - Chapter23/onlineStore/resources/css/app.css | 0 Chapter23/onlineStore/resources/js/app.js | 1 - .../onlineStore/resources/js/bootstrap.js | 32 - .../resources/sass/_variables.scss | 7 - Chapter23/onlineStore/resources/sass/app.scss | 8 - .../views/admin/home/index.blade.php | 12 - .../views/admin/product/edit.blade.php | 61 - .../views/admin/product/index.blade.php | 98 - .../resources/views/auth/login.blade.php | 73 - .../views/auth/passwords/confirm.blade.php | 49 - .../views/auth/passwords/email.blade.php | 47 - .../views/auth/passwords/reset.blade.php | 65 - .../resources/views/auth/register.blade.php | 77 - .../resources/views/auth/verify.blade.php | 28 - .../resources/views/home.blade.php | 23 - .../resources/views/home/about.blade.php | 15 - .../resources/views/home/index.blade.php | 15 - .../resources/views/layouts/admin.blade.php | 60 - .../resources/views/layouts/app.blade.php | 66 - .../resources/views/product/index.blade.php | 18 - .../resources/views/product/show.blade.php | 21 - .../resources/views/welcome.blade.php | 7 - Chapter23/onlineStore/routes/api.php | 19 - Chapter23/onlineStore/routes/channels.php | 18 - Chapter23/onlineStore/routes/console.php | 19 - Chapter23/onlineStore/routes/web.php | 30 - Chapter23/onlineStore/storage/app/.gitignore | 3 - .../onlineStore/storage/app/public/.gitignore | 2 - .../onlineStore/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 - Chapter23/onlineStore/storage/logs/.gitignore | 2 - .../onlineStore/tests/CreatesApplication.php | 22 - .../onlineStore/tests/Feature/ExampleTest.php | 21 - Chapter23/onlineStore/tests/TestCase.php | 10 - .../onlineStore/tests/Unit/ExampleTest.php | 18 - Chapter23/onlineStore/webpack.mix.js | 16 - Chapter25/onlineStore/.editorconfig | 18 - Chapter25/onlineStore/.env.example | 52 - Chapter25/onlineStore/.gitattributes | 10 - Chapter25/onlineStore/.gitignore | 15 - Chapter25/onlineStore/.styleci.yml | 13 - Chapter25/onlineStore/README.md | 64 - Chapter25/onlineStore/app/Console/Kernel.php | 32 - .../onlineStore/app/Exceptions/Handler.php | 41 - .../Controllers/Admin/AdminHomeController.php | 16 - .../Admin/AdminProductController.php | 79 - .../Auth/ConfirmPasswordController.php | 40 - .../Auth/ForgotPasswordController.php | 22 - .../Http/Controllers/Auth/LoginController.php | 40 - .../Controllers/Auth/RegisterController.php | 74 - .../Auth/ResetPasswordController.php | 30 - .../Auth/VerificationController.php | 42 - .../app/Http/Controllers/CartController.php | 43 - .../app/Http/Controllers/Controller.php | 13 - .../app/Http/Controllers/HomeController.php | 25 - .../Http/Controllers/ProductController.php | 29 - Chapter25/onlineStore/app/Http/Kernel.php | 68 - .../Http/Middleware/AdminAuthMiddleware.php | 26 - .../app/Http/Middleware/Authenticate.php | 21 - .../app/Http/Middleware/EncryptCookies.php | 17 - .../PreventRequestsDuringMaintenance.php | 17 - .../Middleware/RedirectIfAuthenticated.php | 32 - .../app/Http/Middleware/TrimStrings.php | 19 - .../app/Http/Middleware/TrustHosts.php | 20 - .../app/Http/Middleware/TrustProxies.php | 28 - .../app/Http/Middleware/VerifyCsrfToken.php | 17 - Chapter25/onlineStore/app/Models/Product.php | 109 - Chapter25/onlineStore/app/Models/User.php | 139 - .../app/Providers/AppServiceProvider.php | 28 - .../app/Providers/AuthServiceProvider.php | 30 - .../Providers/BroadcastServiceProvider.php | 21 - .../app/Providers/EventServiceProvider.php | 32 - .../app/Providers/RouteServiceProvider.php | 63 - Chapter25/onlineStore/artisan | 53 - Chapter25/onlineStore/bootstrap/app.php | 55 - .../onlineStore/bootstrap/cache/.gitignore | 2 - Chapter25/onlineStore/composer.json | 64 - Chapter25/onlineStore/composer.lock | 7921 ----------------- Chapter25/onlineStore/config/app.php | 197 - Chapter25/onlineStore/config/auth.php | 111 - Chapter25/onlineStore/config/broadcasting.php | 67 - Chapter25/onlineStore/config/cache.php | 110 - Chapter25/onlineStore/config/cors.php | 34 - Chapter25/onlineStore/config/database.php | 147 - Chapter25/onlineStore/config/filesystems.php | 73 - Chapter25/onlineStore/config/hashing.php | 52 - Chapter25/onlineStore/config/logging.php | 119 - Chapter25/onlineStore/config/mail.php | 117 - Chapter25/onlineStore/config/queue.php | 93 - Chapter25/onlineStore/config/sanctum.php | 65 - Chapter25/onlineStore/config/services.php | 33 - Chapter25/onlineStore/config/session.php | 201 - Chapter25/onlineStore/config/view.php | 36 - Chapter25/onlineStore/database/.gitignore | 1 - .../database/factories/UserFactory.php | 42 - .../2014_10_12_000000_create_users_table.php | 36 - ...12_100000_create_password_resets_table.php | 32 - ..._08_19_000000_create_failed_jobs_table.php | 36 - ...01_create_personal_access_tokens_table.php | 36 - ...022_02_11_153916_create_products_table.php | 35 - .../2022_02_12_140820_alter_users_table.php | 34 - .../database/seeders/DatabaseSeeder.php | 19 - Chapter25/onlineStore/lang/en.json | 7 - Chapter25/onlineStore/lang/en/auth.php | 20 - Chapter25/onlineStore/lang/en/pagination.php | 19 - Chapter25/onlineStore/lang/en/passwords.php | 22 - Chapter25/onlineStore/lang/en/validation.php | 163 - Chapter25/onlineStore/package.json | 22 - Chapter25/onlineStore/phpcs.xml | 10 - Chapter25/onlineStore/phpunit.xml | 31 - Chapter25/onlineStore/public/.htaccess | 21 - Chapter25/onlineStore/public/css/admin.css | 33 - Chapter25/onlineStore/public/css/app.css | 20 - Chapter25/onlineStore/public/favicon.ico | 0 Chapter25/onlineStore/public/img/game.png | Bin 25896 -> 0 bytes Chapter25/onlineStore/public/img/safe.png | Bin 19240 -> 0 bytes .../onlineStore/public/img/submarine.png | Bin 24330 -> 0 bytes .../onlineStore/public/img/undraw_profile.svg | 38 - Chapter25/onlineStore/public/index.php | 55 - Chapter25/onlineStore/public/robots.txt | 2 - Chapter25/onlineStore/resources/css/app.css | 0 Chapter25/onlineStore/resources/js/app.js | 1 - .../onlineStore/resources/js/bootstrap.js | 32 - .../resources/sass/_variables.scss | 7 - Chapter25/onlineStore/resources/sass/app.scss | 8 - .../views/admin/home/index.blade.php | 12 - .../views/admin/product/edit.blade.php | 61 - .../views/admin/product/index.blade.php | 98 - .../resources/views/auth/login.blade.php | 73 - .../views/auth/passwords/confirm.blade.php | 49 - .../views/auth/passwords/email.blade.php | 47 - .../views/auth/passwords/reset.blade.php | 65 - .../resources/views/auth/register.blade.php | 77 - .../resources/views/auth/verify.blade.php | 28 - .../resources/views/cart/index.blade.php | 43 - .../resources/views/home.blade.php | 23 - .../resources/views/home/about.blade.php | 15 - .../resources/views/home/index.blade.php | 15 - .../resources/views/layouts/admin.blade.php | 60 - .../resources/views/layouts/app.blade.php | 67 - .../resources/views/product/index.blade.php | 18 - .../resources/views/product/show.blade.php | 36 - .../resources/views/welcome.blade.php | 7 - Chapter25/onlineStore/routes/api.php | 19 - Chapter25/onlineStore/routes/channels.php | 18 - Chapter25/onlineStore/routes/console.php | 19 - Chapter25/onlineStore/routes/web.php | 34 - Chapter25/onlineStore/storage/app/.gitignore | 3 - .../onlineStore/storage/app/public/.gitignore | 2 - .../onlineStore/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 - Chapter25/onlineStore/storage/logs/.gitignore | 2 - .../onlineStore/tests/CreatesApplication.php | 22 - .../onlineStore/tests/Feature/ExampleTest.php | 21 - Chapter25/onlineStore/tests/TestCase.php | 10 - .../onlineStore/tests/Unit/ExampleTest.php | 18 - Chapter25/onlineStore/webpack.mix.js | 16 - Chapter26/onlineStore/.editorconfig | 18 - Chapter26/onlineStore/.env.example | 52 - Chapter26/onlineStore/.gitattributes | 10 - Chapter26/onlineStore/.gitignore | 15 - Chapter26/onlineStore/.styleci.yml | 13 - Chapter26/onlineStore/README.md | 64 - Chapter26/onlineStore/app/Console/Kernel.php | 32 - .../onlineStore/app/Exceptions/Handler.php | 41 - .../Controllers/Admin/AdminHomeController.php | 16 - .../Admin/AdminProductController.php | 79 - .../Auth/ConfirmPasswordController.php | 40 - .../Auth/ForgotPasswordController.php | 22 - .../Http/Controllers/Auth/LoginController.php | 40 - .../Controllers/Auth/RegisterController.php | 74 - .../Auth/ResetPasswordController.php | 30 - .../Auth/VerificationController.php | 42 - .../app/Http/Controllers/CartController.php | 43 - .../app/Http/Controllers/Controller.php | 13 - .../app/Http/Controllers/HomeController.php | 25 - .../Http/Controllers/ProductController.php | 29 - Chapter26/onlineStore/app/Http/Kernel.php | 68 - .../Http/Middleware/AdminAuthMiddleware.php | 26 - .../app/Http/Middleware/Authenticate.php | 21 - .../app/Http/Middleware/EncryptCookies.php | 17 - .../PreventRequestsDuringMaintenance.php | 17 - .../Middleware/RedirectIfAuthenticated.php | 32 - .../app/Http/Middleware/TrimStrings.php | 19 - .../app/Http/Middleware/TrustHosts.php | 20 - .../app/Http/Middleware/TrustProxies.php | 28 - .../app/Http/Middleware/VerifyCsrfToken.php | 17 - Chapter26/onlineStore/app/Models/Item.php | 133 - Chapter26/onlineStore/app/Models/Order.php | 109 - Chapter26/onlineStore/app/Models/Product.php | 126 - Chapter26/onlineStore/app/Models/User.php | 156 - .../app/Providers/AppServiceProvider.php | 28 - .../app/Providers/AuthServiceProvider.php | 30 - .../Providers/BroadcastServiceProvider.php | 21 - .../app/Providers/EventServiceProvider.php | 32 - .../app/Providers/RouteServiceProvider.php | 63 - Chapter26/onlineStore/artisan | 53 - Chapter26/onlineStore/bootstrap/app.php | 55 - .../onlineStore/bootstrap/cache/.gitignore | 2 - Chapter26/onlineStore/composer.json | 64 - Chapter26/onlineStore/composer.lock | 7921 ----------------- Chapter26/onlineStore/config/app.php | 197 - Chapter26/onlineStore/config/auth.php | 111 - Chapter26/onlineStore/config/broadcasting.php | 67 - Chapter26/onlineStore/config/cache.php | 110 - Chapter26/onlineStore/config/cors.php | 34 - Chapter26/onlineStore/config/database.php | 147 - Chapter26/onlineStore/config/filesystems.php | 73 - Chapter26/onlineStore/config/hashing.php | 52 - Chapter26/onlineStore/config/logging.php | 119 - Chapter26/onlineStore/config/mail.php | 117 - Chapter26/onlineStore/config/queue.php | 93 - Chapter26/onlineStore/config/sanctum.php | 65 - Chapter26/onlineStore/config/services.php | 33 - Chapter26/onlineStore/config/session.php | 201 - Chapter26/onlineStore/config/view.php | 36 - Chapter26/onlineStore/database/.gitignore | 1 - .../database/factories/UserFactory.php | 42 - .../2014_10_12_000000_create_users_table.php | 36 - ...12_100000_create_password_resets_table.php | 32 - ..._08_19_000000_create_failed_jobs_table.php | 36 - ...01_create_personal_access_tokens_table.php | 36 - ...022_02_11_153916_create_products_table.php | 35 - .../2022_02_12_140820_alter_users_table.php | 34 - .../2022_02_12_152713_create_orders_table.php | 34 - .../2022_02_12_152850_create_items_table.php | 37 - .../database/seeders/DatabaseSeeder.php | 19 - Chapter26/onlineStore/lang/en.json | 7 - Chapter26/onlineStore/lang/en/auth.php | 20 - Chapter26/onlineStore/lang/en/pagination.php | 19 - Chapter26/onlineStore/lang/en/passwords.php | 22 - Chapter26/onlineStore/lang/en/validation.php | 163 - Chapter26/onlineStore/package.json | 22 - Chapter26/onlineStore/phpcs.xml | 10 - Chapter26/onlineStore/phpunit.xml | 31 - Chapter26/onlineStore/public/.htaccess | 21 - Chapter26/onlineStore/public/css/admin.css | 33 - Chapter26/onlineStore/public/css/app.css | 20 - Chapter26/onlineStore/public/favicon.ico | 0 Chapter26/onlineStore/public/img/game.png | Bin 25896 -> 0 bytes Chapter26/onlineStore/public/img/safe.png | Bin 19240 -> 0 bytes .../onlineStore/public/img/submarine.png | Bin 24330 -> 0 bytes .../onlineStore/public/img/undraw_profile.svg | 38 - Chapter26/onlineStore/public/index.php | 55 - Chapter26/onlineStore/public/robots.txt | 2 - Chapter26/onlineStore/resources/css/app.css | 0 Chapter26/onlineStore/resources/js/app.js | 1 - .../onlineStore/resources/js/bootstrap.js | 32 - .../resources/sass/_variables.scss | 7 - Chapter26/onlineStore/resources/sass/app.scss | 8 - .../views/admin/home/index.blade.php | 12 - .../views/admin/product/edit.blade.php | 61 - .../views/admin/product/index.blade.php | 98 - .../resources/views/auth/login.blade.php | 73 - .../views/auth/passwords/confirm.blade.php | 49 - .../views/auth/passwords/email.blade.php | 47 - .../views/auth/passwords/reset.blade.php | 65 - .../resources/views/auth/register.blade.php | 77 - .../resources/views/auth/verify.blade.php | 28 - .../resources/views/cart/index.blade.php | 43 - .../resources/views/home.blade.php | 23 - .../resources/views/home/about.blade.php | 15 - .../resources/views/home/index.blade.php | 15 - .../resources/views/layouts/admin.blade.php | 60 - .../resources/views/layouts/app.blade.php | 67 - .../resources/views/product/index.blade.php | 18 - .../resources/views/product/show.blade.php | 36 - .../resources/views/welcome.blade.php | 7 - Chapter26/onlineStore/routes/api.php | 19 - Chapter26/onlineStore/routes/channels.php | 18 - Chapter26/onlineStore/routes/console.php | 19 - Chapter26/onlineStore/routes/web.php | 34 - Chapter26/onlineStore/storage/app/.gitignore | 3 - .../onlineStore/storage/app/public/.gitignore | 2 - .../onlineStore/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 - Chapter26/onlineStore/storage/logs/.gitignore | 2 - .../onlineStore/tests/CreatesApplication.php | 22 - .../onlineStore/tests/Feature/ExampleTest.php | 21 - Chapter26/onlineStore/tests/TestCase.php | 10 - .../onlineStore/tests/Unit/ExampleTest.php | 18 - Chapter26/onlineStore/webpack.mix.js | 16 - Chapter27/onlineStore/.editorconfig | 18 - Chapter27/onlineStore/.env.example | 52 - Chapter27/onlineStore/.gitattributes | 10 - Chapter27/onlineStore/.gitignore | 15 - Chapter27/onlineStore/.styleci.yml | 13 - Chapter27/onlineStore/README.md | 64 - Chapter27/onlineStore/app/Console/Kernel.php | 32 - .../onlineStore/app/Exceptions/Handler.php | 41 - .../Controllers/Admin/AdminHomeController.php | 16 - .../Admin/AdminProductController.php | 79 - .../Auth/ConfirmPasswordController.php | 40 - .../Auth/ForgotPasswordController.php | 22 - .../Http/Controllers/Auth/LoginController.php | 40 - .../Controllers/Auth/RegisterController.php | 74 - .../Auth/ResetPasswordController.php | 30 - .../Auth/VerificationController.php | 42 - .../app/Http/Controllers/CartController.php | 87 - .../app/Http/Controllers/Controller.php | 13 - .../app/Http/Controllers/HomeController.php | 25 - .../Http/Controllers/ProductController.php | 29 - Chapter27/onlineStore/app/Http/Kernel.php | 68 - .../Http/Middleware/AdminAuthMiddleware.php | 26 - .../app/Http/Middleware/Authenticate.php | 21 - .../app/Http/Middleware/EncryptCookies.php | 17 - .../PreventRequestsDuringMaintenance.php | 17 - .../Middleware/RedirectIfAuthenticated.php | 32 - .../app/Http/Middleware/TrimStrings.php | 19 - .../app/Http/Middleware/TrustHosts.php | 20 - .../app/Http/Middleware/TrustProxies.php | 28 - .../app/Http/Middleware/VerifyCsrfToken.php | 17 - Chapter27/onlineStore/app/Models/Item.php | 133 - Chapter27/onlineStore/app/Models/Order.php | 109 - Chapter27/onlineStore/app/Models/Product.php | 126 - Chapter27/onlineStore/app/Models/User.php | 156 - .../app/Providers/AppServiceProvider.php | 28 - .../app/Providers/AuthServiceProvider.php | 30 - .../Providers/BroadcastServiceProvider.php | 21 - .../app/Providers/EventServiceProvider.php | 32 - .../app/Providers/RouteServiceProvider.php | 63 - Chapter27/onlineStore/artisan | 53 - Chapter27/onlineStore/bootstrap/app.php | 55 - .../onlineStore/bootstrap/cache/.gitignore | 2 - Chapter27/onlineStore/composer.json | 64 - Chapter27/onlineStore/composer.lock | 7921 ----------------- Chapter27/onlineStore/config/app.php | 197 - Chapter27/onlineStore/config/auth.php | 111 - Chapter27/onlineStore/config/broadcasting.php | 67 - Chapter27/onlineStore/config/cache.php | 110 - Chapter27/onlineStore/config/cors.php | 34 - Chapter27/onlineStore/config/database.php | 147 - Chapter27/onlineStore/config/filesystems.php | 73 - Chapter27/onlineStore/config/hashing.php | 52 - Chapter27/onlineStore/config/logging.php | 119 - Chapter27/onlineStore/config/mail.php | 117 - Chapter27/onlineStore/config/queue.php | 93 - Chapter27/onlineStore/config/sanctum.php | 65 - Chapter27/onlineStore/config/services.php | 33 - Chapter27/onlineStore/config/session.php | 201 - Chapter27/onlineStore/config/view.php | 36 - Chapter27/onlineStore/database/.gitignore | 1 - .../database/factories/UserFactory.php | 42 - .../2014_10_12_000000_create_users_table.php | 36 - ...12_100000_create_password_resets_table.php | 32 - ..._08_19_000000_create_failed_jobs_table.php | 36 - ...01_create_personal_access_tokens_table.php | 36 - ...022_02_11_153916_create_products_table.php | 35 - .../2022_02_12_140820_alter_users_table.php | 34 - .../2022_02_12_152713_create_orders_table.php | 34 - .../2022_02_12_152850_create_items_table.php | 37 - .../database/seeders/DatabaseSeeder.php | 19 - Chapter27/onlineStore/lang/en.json | 7 - Chapter27/onlineStore/lang/en/auth.php | 20 - Chapter27/onlineStore/lang/en/pagination.php | 19 - Chapter27/onlineStore/lang/en/passwords.php | 22 - Chapter27/onlineStore/lang/en/validation.php | 163 - Chapter27/onlineStore/package.json | 22 - Chapter27/onlineStore/phpcs.xml | 10 - Chapter27/onlineStore/phpunit.xml | 31 - Chapter27/onlineStore/public/.htaccess | 21 - Chapter27/onlineStore/public/css/admin.css | 33 - Chapter27/onlineStore/public/css/app.css | 20 - Chapter27/onlineStore/public/favicon.ico | 0 Chapter27/onlineStore/public/img/game.png | Bin 25896 -> 0 bytes Chapter27/onlineStore/public/img/safe.png | Bin 19240 -> 0 bytes .../onlineStore/public/img/submarine.png | Bin 24330 -> 0 bytes .../onlineStore/public/img/undraw_profile.svg | 38 - Chapter27/onlineStore/public/index.php | 55 - Chapter27/onlineStore/public/robots.txt | 2 - Chapter27/onlineStore/resources/css/app.css | 0 Chapter27/onlineStore/resources/js/app.js | 1 - .../onlineStore/resources/js/bootstrap.js | 32 - .../resources/sass/_variables.scss | 7 - Chapter27/onlineStore/resources/sass/app.scss | 8 - .../views/admin/home/index.blade.php | 12 - .../views/admin/product/edit.blade.php | 61 - .../views/admin/product/index.blade.php | 98 - .../resources/views/auth/login.blade.php | 73 - .../views/auth/passwords/confirm.blade.php | 49 - .../views/auth/passwords/email.blade.php | 47 - .../views/auth/passwords/reset.blade.php | 65 - .../resources/views/auth/register.blade.php | 77 - .../resources/views/auth/verify.blade.php | 28 - .../resources/views/cart/index.blade.php | 45 - .../resources/views/cart/purchase.blade.php | 15 - .../resources/views/home.blade.php | 23 - .../resources/views/home/about.blade.php | 15 - .../resources/views/home/index.blade.php | 15 - .../resources/views/layouts/admin.blade.php | 60 - .../resources/views/layouts/app.blade.php | 67 - .../resources/views/product/index.blade.php | 18 - .../resources/views/product/show.blade.php | 36 - .../resources/views/welcome.blade.php | 7 - Chapter27/onlineStore/routes/api.php | 19 - Chapter27/onlineStore/routes/channels.php | 18 - Chapter27/onlineStore/routes/console.php | 19 - Chapter27/onlineStore/routes/web.php | 38 - Chapter27/onlineStore/storage/app/.gitignore | 3 - .../onlineStore/storage/app/public/.gitignore | 2 - .../onlineStore/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 - Chapter27/onlineStore/storage/logs/.gitignore | 2 - .../onlineStore/tests/CreatesApplication.php | 22 - .../onlineStore/tests/Feature/ExampleTest.php | 21 - Chapter27/onlineStore/tests/TestCase.php | 10 - .../onlineStore/tests/Unit/ExampleTest.php | 18 - Chapter27/onlineStore/webpack.mix.js | 16 - Chapter28/onlineStore/.editorconfig | 18 - Chapter28/onlineStore/.env.example | 52 - Chapter28/onlineStore/.gitattributes | 10 - Chapter28/onlineStore/.gitignore | 15 - Chapter28/onlineStore/.styleci.yml | 13 - Chapter28/onlineStore/README.md | 64 - Chapter28/onlineStore/app/Console/Kernel.php | 32 - .../onlineStore/app/Exceptions/Handler.php | 41 - .../Controllers/Admin/AdminHomeController.php | 16 - .../Admin/AdminProductController.php | 79 - .../Auth/ConfirmPasswordController.php | 40 - .../Auth/ForgotPasswordController.php | 22 - .../Http/Controllers/Auth/LoginController.php | 40 - .../Controllers/Auth/RegisterController.php | 74 - .../Auth/ResetPasswordController.php | 30 - .../Auth/VerificationController.php | 42 - .../app/Http/Controllers/CartController.php | 87 - .../app/Http/Controllers/Controller.php | 13 - .../app/Http/Controllers/HomeController.php | 25 - .../Http/Controllers/MyAccountController.php | 19 - .../Http/Controllers/ProductController.php | 29 - Chapter28/onlineStore/app/Http/Kernel.php | 68 - .../Http/Middleware/AdminAuthMiddleware.php | 26 - .../app/Http/Middleware/Authenticate.php | 21 - .../app/Http/Middleware/EncryptCookies.php | 17 - .../PreventRequestsDuringMaintenance.php | 17 - .../Middleware/RedirectIfAuthenticated.php | 32 - .../app/Http/Middleware/TrimStrings.php | 19 - .../app/Http/Middleware/TrustHosts.php | 20 - .../app/Http/Middleware/TrustProxies.php | 28 - .../app/Http/Middleware/VerifyCsrfToken.php | 17 - Chapter28/onlineStore/app/Models/Item.php | 133 - Chapter28/onlineStore/app/Models/Order.php | 109 - Chapter28/onlineStore/app/Models/Product.php | 126 - Chapter28/onlineStore/app/Models/User.php | 156 - .../app/Providers/AppServiceProvider.php | 28 - .../app/Providers/AuthServiceProvider.php | 30 - .../Providers/BroadcastServiceProvider.php | 21 - .../app/Providers/EventServiceProvider.php | 32 - .../app/Providers/RouteServiceProvider.php | 63 - Chapter28/onlineStore/artisan | 53 - Chapter28/onlineStore/bootstrap/app.php | 55 - .../onlineStore/bootstrap/cache/.gitignore | 2 - Chapter28/onlineStore/composer.json | 64 - Chapter28/onlineStore/composer.lock | 7921 ----------------- Chapter28/onlineStore/config/app.php | 197 - Chapter28/onlineStore/config/auth.php | 111 - Chapter28/onlineStore/config/broadcasting.php | 67 - Chapter28/onlineStore/config/cache.php | 110 - Chapter28/onlineStore/config/cors.php | 34 - Chapter28/onlineStore/config/database.php | 147 - Chapter28/onlineStore/config/filesystems.php | 73 - Chapter28/onlineStore/config/hashing.php | 52 - Chapter28/onlineStore/config/logging.php | 119 - Chapter28/onlineStore/config/mail.php | 117 - Chapter28/onlineStore/config/queue.php | 93 - Chapter28/onlineStore/config/sanctum.php | 65 - Chapter28/onlineStore/config/services.php | 33 - Chapter28/onlineStore/config/session.php | 201 - Chapter28/onlineStore/config/view.php | 36 - Chapter28/onlineStore/database/.gitignore | 1 - .../database/factories/UserFactory.php | 42 - .../2014_10_12_000000_create_users_table.php | 36 - ...12_100000_create_password_resets_table.php | 32 - ..._08_19_000000_create_failed_jobs_table.php | 36 - ...01_create_personal_access_tokens_table.php | 36 - ...022_02_11_153916_create_products_table.php | 35 - .../2022_02_12_140820_alter_users_table.php | 34 - .../2022_02_12_152713_create_orders_table.php | 34 - .../2022_02_12_152850_create_items_table.php | 37 - .../database/seeders/DatabaseSeeder.php | 19 - Chapter28/onlineStore/lang/en.json | 7 - Chapter28/onlineStore/lang/en/auth.php | 20 - Chapter28/onlineStore/lang/en/pagination.php | 19 - Chapter28/onlineStore/lang/en/passwords.php | 22 - Chapter28/onlineStore/lang/en/validation.php | 163 - Chapter28/onlineStore/package.json | 22 - Chapter28/onlineStore/phpcs.xml | 10 - Chapter28/onlineStore/phpunit.xml | 31 - Chapter28/onlineStore/public/.htaccess | 21 - Chapter28/onlineStore/public/css/admin.css | 33 - Chapter28/onlineStore/public/css/app.css | 20 - Chapter28/onlineStore/public/favicon.ico | 0 Chapter28/onlineStore/public/img/game.png | Bin 25896 -> 0 bytes Chapter28/onlineStore/public/img/safe.png | Bin 19240 -> 0 bytes .../onlineStore/public/img/submarine.png | Bin 24330 -> 0 bytes .../onlineStore/public/img/undraw_profile.svg | 38 - Chapter28/onlineStore/public/index.php | 55 - Chapter28/onlineStore/public/robots.txt | 2 - Chapter28/onlineStore/resources/css/app.css | 0 Chapter28/onlineStore/resources/js/app.js | 1 - .../onlineStore/resources/js/bootstrap.js | 32 - .../resources/sass/_variables.scss | 7 - Chapter28/onlineStore/resources/sass/app.scss | 8 - .../views/admin/home/index.blade.php | 12 - .../views/admin/product/edit.blade.php | 61 - .../views/admin/product/index.blade.php | 98 - .../resources/views/auth/login.blade.php | 73 - .../views/auth/passwords/confirm.blade.php | 49 - .../views/auth/passwords/email.blade.php | 47 - .../views/auth/passwords/reset.blade.php | 65 - .../resources/views/auth/register.blade.php | 77 - .../resources/views/auth/verify.blade.php | 28 - .../resources/views/cart/index.blade.php | 45 - .../resources/views/cart/purchase.blade.php | 15 - .../resources/views/home.blade.php | 23 - .../resources/views/home/about.blade.php | 15 - .../resources/views/home/index.blade.php | 15 - .../resources/views/layouts/admin.blade.php | 60 - .../resources/views/layouts/app.blade.php | 68 - .../views/myaccount/orders.blade.php | 44 - .../resources/views/product/index.blade.php | 18 - .../resources/views/product/show.blade.php | 36 - .../resources/views/welcome.blade.php | 7 - Chapter28/onlineStore/routes/api.php | 19 - Chapter28/onlineStore/routes/channels.php | 18 - Chapter28/onlineStore/routes/console.php | 19 - Chapter28/onlineStore/routes/web.php | 39 - Chapter28/onlineStore/storage/app/.gitignore | 3 - .../onlineStore/storage/app/public/.gitignore | 2 - .../onlineStore/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 - Chapter28/onlineStore/storage/logs/.gitignore | 2 - .../onlineStore/tests/CreatesApplication.php | 22 - .../onlineStore/tests/Feature/ExampleTest.php | 21 - Chapter28/onlineStore/tests/TestCase.php | 10 - .../onlineStore/tests/Unit/ExampleTest.php | 18 - Chapter28/onlineStore/webpack.mix.js | 16 - app/Http/Controllers/ProductController.php | 11 - app/Models/Fournisseur.php | 10 + ...03_20_112006_create_fournisseurs_table.php | 33 + 2556 files changed, 43 insertions(+), 282523 deletions(-) delete mode 100644 Chapter03/onlineStore/.editorconfig delete mode 100644 Chapter03/onlineStore/.env.example delete mode 100644 Chapter03/onlineStore/.gitattributes delete mode 100644 Chapter03/onlineStore/.gitignore delete mode 100644 Chapter03/onlineStore/.styleci.yml delete mode 100644 Chapter03/onlineStore/README.md delete mode 100644 Chapter03/onlineStore/app/Console/Kernel.php delete mode 100644 Chapter03/onlineStore/app/Exceptions/Handler.php delete mode 100644 Chapter03/onlineStore/app/Http/Controllers/Controller.php delete mode 100644 Chapter03/onlineStore/app/Http/Kernel.php delete mode 100644 Chapter03/onlineStore/app/Http/Middleware/Authenticate.php delete mode 100644 Chapter03/onlineStore/app/Http/Middleware/EncryptCookies.php delete mode 100644 Chapter03/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php delete mode 100644 Chapter03/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php delete mode 100644 Chapter03/onlineStore/app/Http/Middleware/TrimStrings.php delete mode 100644 Chapter03/onlineStore/app/Http/Middleware/TrustHosts.php delete mode 100644 Chapter03/onlineStore/app/Http/Middleware/TrustProxies.php delete mode 100644 Chapter03/onlineStore/app/Http/Middleware/VerifyCsrfToken.php delete mode 100644 Chapter03/onlineStore/app/Models/User.php delete mode 100644 Chapter03/onlineStore/app/Providers/AppServiceProvider.php delete mode 100644 Chapter03/onlineStore/app/Providers/AuthServiceProvider.php delete mode 100644 Chapter03/onlineStore/app/Providers/BroadcastServiceProvider.php delete mode 100644 Chapter03/onlineStore/app/Providers/EventServiceProvider.php delete mode 100644 Chapter03/onlineStore/app/Providers/RouteServiceProvider.php delete mode 100644 Chapter03/onlineStore/artisan delete mode 100644 Chapter03/onlineStore/bootstrap/app.php delete mode 100644 Chapter03/onlineStore/bootstrap/cache/.gitignore delete mode 100644 Chapter03/onlineStore/composer.json delete mode 100644 Chapter03/onlineStore/composer.lock delete mode 100644 Chapter03/onlineStore/config/app.php delete mode 100644 Chapter03/onlineStore/config/auth.php delete mode 100644 Chapter03/onlineStore/config/broadcasting.php delete mode 100644 Chapter03/onlineStore/config/cache.php delete mode 100644 Chapter03/onlineStore/config/cors.php delete mode 100644 Chapter03/onlineStore/config/database.php delete mode 100644 Chapter03/onlineStore/config/filesystems.php delete mode 100644 Chapter03/onlineStore/config/hashing.php delete mode 100644 Chapter03/onlineStore/config/logging.php delete mode 100644 Chapter03/onlineStore/config/mail.php delete mode 100644 Chapter03/onlineStore/config/queue.php delete mode 100644 Chapter03/onlineStore/config/sanctum.php delete mode 100644 Chapter03/onlineStore/config/services.php delete mode 100644 Chapter03/onlineStore/config/session.php delete mode 100644 Chapter03/onlineStore/config/view.php delete mode 100644 Chapter03/onlineStore/database/.gitignore delete mode 100644 Chapter03/onlineStore/database/factories/UserFactory.php delete mode 100644 Chapter03/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php delete mode 100644 Chapter03/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php delete mode 100644 Chapter03/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php delete mode 100644 Chapter03/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php delete mode 100644 Chapter03/onlineStore/database/seeders/DatabaseSeeder.php delete mode 100644 Chapter03/onlineStore/lang/en.json delete mode 100644 Chapter03/onlineStore/lang/en/auth.php delete mode 100644 Chapter03/onlineStore/lang/en/pagination.php delete mode 100644 Chapter03/onlineStore/lang/en/passwords.php delete mode 100644 Chapter03/onlineStore/lang/en/validation.php delete mode 100644 Chapter03/onlineStore/package.json delete mode 100644 Chapter03/onlineStore/phpunit.xml delete mode 100644 Chapter03/onlineStore/public/.htaccess delete mode 100644 Chapter03/onlineStore/public/favicon.ico delete mode 100644 Chapter03/onlineStore/public/index.php delete mode 100644 Chapter03/onlineStore/public/robots.txt delete mode 100644 Chapter03/onlineStore/resources/css/app.css delete mode 100644 Chapter03/onlineStore/resources/js/app.js delete mode 100644 Chapter03/onlineStore/resources/js/bootstrap.js delete mode 100644 Chapter03/onlineStore/resources/views/welcome.blade.php delete mode 100644 Chapter03/onlineStore/routes/api.php delete mode 100644 Chapter03/onlineStore/routes/channels.php delete mode 100644 Chapter03/onlineStore/routes/console.php delete mode 100644 Chapter03/onlineStore/routes/web.php delete mode 100644 Chapter03/onlineStore/storage/app/.gitignore delete mode 100644 Chapter03/onlineStore/storage/app/public/.gitignore delete mode 100644 Chapter03/onlineStore/storage/framework/.gitignore delete mode 100644 Chapter03/onlineStore/storage/framework/cache/.gitignore delete mode 100644 Chapter03/onlineStore/storage/framework/cache/data/.gitignore delete mode 100644 Chapter03/onlineStore/storage/framework/sessions/.gitignore delete mode 100644 Chapter03/onlineStore/storage/framework/testing/.gitignore delete mode 100644 Chapter03/onlineStore/storage/framework/views/.gitignore delete mode 100644 Chapter03/onlineStore/storage/logs/.gitignore delete mode 100644 Chapter03/onlineStore/tests/CreatesApplication.php delete mode 100644 Chapter03/onlineStore/tests/Feature/ExampleTest.php delete mode 100644 Chapter03/onlineStore/tests/TestCase.php delete mode 100644 Chapter03/onlineStore/tests/Unit/ExampleTest.php delete mode 100644 Chapter03/onlineStore/webpack.mix.js delete mode 100644 Chapter05/onlineStore/.editorconfig delete mode 100644 Chapter05/onlineStore/.env.example delete mode 100644 Chapter05/onlineStore/.gitattributes delete mode 100644 Chapter05/onlineStore/.gitignore delete mode 100644 Chapter05/onlineStore/.styleci.yml delete mode 100644 Chapter05/onlineStore/README.md delete mode 100644 Chapter05/onlineStore/app/Console/Kernel.php delete mode 100644 Chapter05/onlineStore/app/Exceptions/Handler.php delete mode 100644 Chapter05/onlineStore/app/Http/Controllers/Controller.php delete mode 100644 Chapter05/onlineStore/app/Http/Kernel.php delete mode 100644 Chapter05/onlineStore/app/Http/Middleware/Authenticate.php delete mode 100644 Chapter05/onlineStore/app/Http/Middleware/EncryptCookies.php delete mode 100644 Chapter05/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php delete mode 100644 Chapter05/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php delete mode 100644 Chapter05/onlineStore/app/Http/Middleware/TrimStrings.php delete mode 100644 Chapter05/onlineStore/app/Http/Middleware/TrustHosts.php delete mode 100644 Chapter05/onlineStore/app/Http/Middleware/TrustProxies.php delete mode 100644 Chapter05/onlineStore/app/Http/Middleware/VerifyCsrfToken.php delete mode 100644 Chapter05/onlineStore/app/Models/User.php delete mode 100644 Chapter05/onlineStore/app/Providers/AppServiceProvider.php delete mode 100644 Chapter05/onlineStore/app/Providers/AuthServiceProvider.php delete mode 100644 Chapter05/onlineStore/app/Providers/BroadcastServiceProvider.php delete mode 100644 Chapter05/onlineStore/app/Providers/EventServiceProvider.php delete mode 100644 Chapter05/onlineStore/app/Providers/RouteServiceProvider.php delete mode 100644 Chapter05/onlineStore/artisan delete mode 100644 Chapter05/onlineStore/bootstrap/app.php delete mode 100644 Chapter05/onlineStore/bootstrap/cache/.gitignore delete mode 100644 Chapter05/onlineStore/composer.json delete mode 100644 Chapter05/onlineStore/composer.lock delete mode 100644 Chapter05/onlineStore/config/app.php delete mode 100644 Chapter05/onlineStore/config/auth.php delete mode 100644 Chapter05/onlineStore/config/broadcasting.php delete mode 100644 Chapter05/onlineStore/config/cache.php delete mode 100644 Chapter05/onlineStore/config/cors.php delete mode 100644 Chapter05/onlineStore/config/database.php delete mode 100644 Chapter05/onlineStore/config/filesystems.php delete mode 100644 Chapter05/onlineStore/config/hashing.php delete mode 100644 Chapter05/onlineStore/config/logging.php delete mode 100644 Chapter05/onlineStore/config/mail.php delete mode 100644 Chapter05/onlineStore/config/queue.php delete mode 100644 Chapter05/onlineStore/config/sanctum.php delete mode 100644 Chapter05/onlineStore/config/services.php delete mode 100644 Chapter05/onlineStore/config/session.php delete mode 100644 Chapter05/onlineStore/config/view.php delete mode 100644 Chapter05/onlineStore/database/.gitignore delete mode 100644 Chapter05/onlineStore/database/factories/UserFactory.php delete mode 100644 Chapter05/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php delete mode 100644 Chapter05/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php delete mode 100644 Chapter05/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php delete mode 100644 Chapter05/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php delete mode 100644 Chapter05/onlineStore/database/seeders/DatabaseSeeder.php delete mode 100644 Chapter05/onlineStore/lang/en.json delete mode 100644 Chapter05/onlineStore/lang/en/auth.php delete mode 100644 Chapter05/onlineStore/lang/en/pagination.php delete mode 100644 Chapter05/onlineStore/lang/en/passwords.php delete mode 100644 Chapter05/onlineStore/lang/en/validation.php delete mode 100644 Chapter05/onlineStore/package.json delete mode 100644 Chapter05/onlineStore/phpunit.xml delete mode 100644 Chapter05/onlineStore/public/.htaccess delete mode 100644 Chapter05/onlineStore/public/css/app.css delete mode 100644 Chapter05/onlineStore/public/favicon.ico delete mode 100644 Chapter05/onlineStore/public/index.php delete mode 100644 Chapter05/onlineStore/public/robots.txt delete mode 100644 Chapter05/onlineStore/resources/css/app.css delete mode 100644 Chapter05/onlineStore/resources/js/app.js delete mode 100644 Chapter05/onlineStore/resources/js/bootstrap.js delete mode 100644 Chapter05/onlineStore/resources/views/layouts/app.blade.php delete mode 100644 Chapter05/onlineStore/resources/views/welcome.blade.php delete mode 100644 Chapter05/onlineStore/routes/api.php delete mode 100644 Chapter05/onlineStore/routes/channels.php delete mode 100644 Chapter05/onlineStore/routes/console.php delete mode 100644 Chapter05/onlineStore/routes/web.php delete mode 100644 Chapter05/onlineStore/storage/app/.gitignore delete mode 100644 Chapter05/onlineStore/storage/app/public/.gitignore delete mode 100644 Chapter05/onlineStore/storage/framework/.gitignore delete mode 100644 Chapter05/onlineStore/storage/framework/cache/.gitignore delete mode 100644 Chapter05/onlineStore/storage/framework/cache/data/.gitignore delete mode 100644 Chapter05/onlineStore/storage/framework/sessions/.gitignore delete mode 100644 Chapter05/onlineStore/storage/framework/testing/.gitignore delete mode 100644 Chapter05/onlineStore/storage/framework/views/.gitignore delete mode 100644 Chapter05/onlineStore/storage/logs/.gitignore delete mode 100644 Chapter05/onlineStore/tests/CreatesApplication.php delete mode 100644 Chapter05/onlineStore/tests/Feature/ExampleTest.php delete mode 100644 Chapter05/onlineStore/tests/TestCase.php delete mode 100644 Chapter05/onlineStore/tests/Unit/ExampleTest.php delete mode 100644 Chapter05/onlineStore/webpack.mix.js delete mode 100644 Chapter06/onlineStore/.editorconfig delete mode 100644 Chapter06/onlineStore/.env.example delete mode 100644 Chapter06/onlineStore/.gitattributes delete mode 100644 Chapter06/onlineStore/.gitignore delete mode 100644 Chapter06/onlineStore/.styleci.yml delete mode 100644 Chapter06/onlineStore/README.md delete mode 100644 Chapter06/onlineStore/app/Console/Kernel.php delete mode 100644 Chapter06/onlineStore/app/Exceptions/Handler.php delete mode 100644 Chapter06/onlineStore/app/Http/Controllers/Controller.php delete mode 100644 Chapter06/onlineStore/app/Http/Controllers/HomeController.php delete mode 100644 Chapter06/onlineStore/app/Http/Kernel.php delete mode 100644 Chapter06/onlineStore/app/Http/Middleware/Authenticate.php delete mode 100644 Chapter06/onlineStore/app/Http/Middleware/EncryptCookies.php delete mode 100644 Chapter06/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php delete mode 100644 Chapter06/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php delete mode 100644 Chapter06/onlineStore/app/Http/Middleware/TrimStrings.php delete mode 100644 Chapter06/onlineStore/app/Http/Middleware/TrustHosts.php delete mode 100644 Chapter06/onlineStore/app/Http/Middleware/TrustProxies.php delete mode 100644 Chapter06/onlineStore/app/Http/Middleware/VerifyCsrfToken.php delete mode 100644 Chapter06/onlineStore/app/Models/User.php delete mode 100644 Chapter06/onlineStore/app/Providers/AppServiceProvider.php delete mode 100644 Chapter06/onlineStore/app/Providers/AuthServiceProvider.php delete mode 100644 Chapter06/onlineStore/app/Providers/BroadcastServiceProvider.php delete mode 100644 Chapter06/onlineStore/app/Providers/EventServiceProvider.php delete mode 100644 Chapter06/onlineStore/app/Providers/RouteServiceProvider.php delete mode 100644 Chapter06/onlineStore/artisan delete mode 100644 Chapter06/onlineStore/bootstrap/app.php delete mode 100644 Chapter06/onlineStore/bootstrap/cache/.gitignore delete mode 100644 Chapter06/onlineStore/composer.json delete mode 100644 Chapter06/onlineStore/composer.lock delete mode 100644 Chapter06/onlineStore/config/app.php delete mode 100644 Chapter06/onlineStore/config/auth.php delete mode 100644 Chapter06/onlineStore/config/broadcasting.php delete mode 100644 Chapter06/onlineStore/config/cache.php delete mode 100644 Chapter06/onlineStore/config/cors.php delete mode 100644 Chapter06/onlineStore/config/database.php delete mode 100644 Chapter06/onlineStore/config/filesystems.php delete mode 100644 Chapter06/onlineStore/config/hashing.php delete mode 100644 Chapter06/onlineStore/config/logging.php delete mode 100644 Chapter06/onlineStore/config/mail.php delete mode 100644 Chapter06/onlineStore/config/queue.php delete mode 100644 Chapter06/onlineStore/config/sanctum.php delete mode 100644 Chapter06/onlineStore/config/services.php delete mode 100644 Chapter06/onlineStore/config/session.php delete mode 100644 Chapter06/onlineStore/config/view.php delete mode 100644 Chapter06/onlineStore/database/.gitignore delete mode 100644 Chapter06/onlineStore/database/factories/UserFactory.php delete mode 100644 Chapter06/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php delete mode 100644 Chapter06/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php delete mode 100644 Chapter06/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php delete mode 100644 Chapter06/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php delete mode 100644 Chapter06/onlineStore/database/seeders/DatabaseSeeder.php delete mode 100644 Chapter06/onlineStore/lang/en.json delete mode 100644 Chapter06/onlineStore/lang/en/auth.php delete mode 100644 Chapter06/onlineStore/lang/en/pagination.php delete mode 100644 Chapter06/onlineStore/lang/en/passwords.php delete mode 100644 Chapter06/onlineStore/lang/en/validation.php delete mode 100644 Chapter06/onlineStore/package.json delete mode 100644 Chapter06/onlineStore/phpunit.xml delete mode 100644 Chapter06/onlineStore/public/.htaccess delete mode 100644 Chapter06/onlineStore/public/css/app.css delete mode 100644 Chapter06/onlineStore/public/favicon.ico delete mode 100644 Chapter06/onlineStore/public/img/game.png delete mode 100644 Chapter06/onlineStore/public/img/safe.png delete mode 100644 Chapter06/onlineStore/public/img/submarine.png delete mode 100644 Chapter06/onlineStore/public/index.php delete mode 100644 Chapter06/onlineStore/public/robots.txt delete mode 100644 Chapter06/onlineStore/resources/css/app.css delete mode 100644 Chapter06/onlineStore/resources/js/app.js delete mode 100644 Chapter06/onlineStore/resources/js/bootstrap.js delete mode 100644 Chapter06/onlineStore/resources/views/home/about.blade.php delete mode 100644 Chapter06/onlineStore/resources/views/home/index.blade.php delete mode 100644 Chapter06/onlineStore/resources/views/layouts/app.blade.php delete mode 100644 Chapter06/onlineStore/resources/views/welcome.blade.php delete mode 100644 Chapter06/onlineStore/routes/api.php delete mode 100644 Chapter06/onlineStore/routes/channels.php delete mode 100644 Chapter06/onlineStore/routes/console.php delete mode 100644 Chapter06/onlineStore/routes/web.php delete mode 100644 Chapter06/onlineStore/storage/app/.gitignore delete mode 100644 Chapter06/onlineStore/storage/app/public/.gitignore delete mode 100644 Chapter06/onlineStore/storage/framework/.gitignore delete mode 100644 Chapter06/onlineStore/storage/framework/cache/.gitignore delete mode 100644 Chapter06/onlineStore/storage/framework/cache/data/.gitignore delete mode 100644 Chapter06/onlineStore/storage/framework/sessions/.gitignore delete mode 100644 Chapter06/onlineStore/storage/framework/testing/.gitignore delete mode 100644 Chapter06/onlineStore/storage/framework/views/.gitignore delete mode 100644 Chapter06/onlineStore/storage/logs/.gitignore delete mode 100644 Chapter06/onlineStore/tests/CreatesApplication.php delete mode 100644 Chapter06/onlineStore/tests/Feature/ExampleTest.php delete mode 100644 Chapter06/onlineStore/tests/TestCase.php delete mode 100644 Chapter06/onlineStore/tests/Unit/ExampleTest.php delete mode 100644 Chapter06/onlineStore/webpack.mix.js delete mode 100644 Chapter07/onlineStore/.editorconfig delete mode 100644 Chapter07/onlineStore/.env.example delete mode 100644 Chapter07/onlineStore/.gitattributes delete mode 100644 Chapter07/onlineStore/.gitignore delete mode 100644 Chapter07/onlineStore/.styleci.yml delete mode 100644 Chapter07/onlineStore/README.md delete mode 100644 Chapter07/onlineStore/app/Console/Kernel.php delete mode 100644 Chapter07/onlineStore/app/Exceptions/Handler.php delete mode 100644 Chapter07/onlineStore/app/Http/Controllers/Controller.php delete mode 100644 Chapter07/onlineStore/app/Http/Controllers/HomeController.php delete mode 100644 Chapter07/onlineStore/app/Http/Kernel.php delete mode 100644 Chapter07/onlineStore/app/Http/Middleware/Authenticate.php delete mode 100644 Chapter07/onlineStore/app/Http/Middleware/EncryptCookies.php delete mode 100644 Chapter07/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php delete mode 100644 Chapter07/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php delete mode 100644 Chapter07/onlineStore/app/Http/Middleware/TrimStrings.php delete mode 100644 Chapter07/onlineStore/app/Http/Middleware/TrustHosts.php delete mode 100644 Chapter07/onlineStore/app/Http/Middleware/TrustProxies.php delete mode 100644 Chapter07/onlineStore/app/Http/Middleware/VerifyCsrfToken.php delete mode 100644 Chapter07/onlineStore/app/Models/User.php delete mode 100644 Chapter07/onlineStore/app/Providers/AppServiceProvider.php delete mode 100644 Chapter07/onlineStore/app/Providers/AuthServiceProvider.php delete mode 100644 Chapter07/onlineStore/app/Providers/BroadcastServiceProvider.php delete mode 100644 Chapter07/onlineStore/app/Providers/EventServiceProvider.php delete mode 100644 Chapter07/onlineStore/app/Providers/RouteServiceProvider.php delete mode 100644 Chapter07/onlineStore/artisan delete mode 100644 Chapter07/onlineStore/bootstrap/app.php delete mode 100644 Chapter07/onlineStore/bootstrap/cache/.gitignore delete mode 100644 Chapter07/onlineStore/composer.json delete mode 100644 Chapter07/onlineStore/composer.lock delete mode 100644 Chapter07/onlineStore/config/app.php delete mode 100644 Chapter07/onlineStore/config/auth.php delete mode 100644 Chapter07/onlineStore/config/broadcasting.php delete mode 100644 Chapter07/onlineStore/config/cache.php delete mode 100644 Chapter07/onlineStore/config/cors.php delete mode 100644 Chapter07/onlineStore/config/database.php delete mode 100644 Chapter07/onlineStore/config/filesystems.php delete mode 100644 Chapter07/onlineStore/config/hashing.php delete mode 100644 Chapter07/onlineStore/config/logging.php delete mode 100644 Chapter07/onlineStore/config/mail.php delete mode 100644 Chapter07/onlineStore/config/queue.php delete mode 100644 Chapter07/onlineStore/config/sanctum.php delete mode 100644 Chapter07/onlineStore/config/services.php delete mode 100644 Chapter07/onlineStore/config/session.php delete mode 100644 Chapter07/onlineStore/config/view.php delete mode 100644 Chapter07/onlineStore/database/.gitignore delete mode 100644 Chapter07/onlineStore/database/factories/UserFactory.php delete mode 100644 Chapter07/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php delete mode 100644 Chapter07/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php delete mode 100644 Chapter07/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php delete mode 100644 Chapter07/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php delete mode 100644 Chapter07/onlineStore/database/seeders/DatabaseSeeder.php delete mode 100644 Chapter07/onlineStore/lang/en.json delete mode 100644 Chapter07/onlineStore/lang/en/auth.php delete mode 100644 Chapter07/onlineStore/lang/en/pagination.php delete mode 100644 Chapter07/onlineStore/lang/en/passwords.php delete mode 100644 Chapter07/onlineStore/lang/en/validation.php delete mode 100644 Chapter07/onlineStore/package.json delete mode 100644 Chapter07/onlineStore/phpunit.xml delete mode 100644 Chapter07/onlineStore/public/.htaccess delete mode 100644 Chapter07/onlineStore/public/css/app.css delete mode 100644 Chapter07/onlineStore/public/favicon.ico delete mode 100644 Chapter07/onlineStore/public/img/game.png delete mode 100644 Chapter07/onlineStore/public/img/safe.png delete mode 100644 Chapter07/onlineStore/public/img/submarine.png delete mode 100644 Chapter07/onlineStore/public/index.php delete mode 100644 Chapter07/onlineStore/public/robots.txt delete mode 100644 Chapter07/onlineStore/resources/css/app.css delete mode 100644 Chapter07/onlineStore/resources/js/app.js delete mode 100644 Chapter07/onlineStore/resources/js/bootstrap.js delete mode 100644 Chapter07/onlineStore/resources/views/home/about.blade.php delete mode 100644 Chapter07/onlineStore/resources/views/home/index.blade.php delete mode 100644 Chapter07/onlineStore/resources/views/layouts/app.blade.php delete mode 100644 Chapter07/onlineStore/resources/views/welcome.blade.php delete mode 100644 Chapter07/onlineStore/routes/api.php delete mode 100644 Chapter07/onlineStore/routes/channels.php delete mode 100644 Chapter07/onlineStore/routes/console.php delete mode 100644 Chapter07/onlineStore/routes/web.php delete mode 100644 Chapter07/onlineStore/storage/app/.gitignore delete mode 100644 Chapter07/onlineStore/storage/app/public/.gitignore delete mode 100644 Chapter07/onlineStore/storage/framework/.gitignore delete mode 100644 Chapter07/onlineStore/storage/framework/cache/.gitignore delete mode 100644 Chapter07/onlineStore/storage/framework/cache/data/.gitignore delete mode 100644 Chapter07/onlineStore/storage/framework/sessions/.gitignore delete mode 100644 Chapter07/onlineStore/storage/framework/testing/.gitignore delete mode 100644 Chapter07/onlineStore/storage/framework/views/.gitignore delete mode 100644 Chapter07/onlineStore/storage/logs/.gitignore delete mode 100644 Chapter07/onlineStore/tests/CreatesApplication.php delete mode 100644 Chapter07/onlineStore/tests/Feature/ExampleTest.php delete mode 100644 Chapter07/onlineStore/tests/TestCase.php delete mode 100644 Chapter07/onlineStore/tests/Unit/ExampleTest.php delete mode 100644 Chapter07/onlineStore/webpack.mix.js delete mode 100644 Chapter08/onlineStore/.editorconfig delete mode 100644 Chapter08/onlineStore/.env.example delete mode 100644 Chapter08/onlineStore/.gitattributes delete mode 100644 Chapter08/onlineStore/.gitignore delete mode 100644 Chapter08/onlineStore/.styleci.yml delete mode 100644 Chapter08/onlineStore/README.md delete mode 100644 Chapter08/onlineStore/app/Console/Kernel.php delete mode 100644 Chapter08/onlineStore/app/Exceptions/Handler.php delete mode 100644 Chapter08/onlineStore/app/Http/Controllers/Controller.php delete mode 100644 Chapter08/onlineStore/app/Http/Controllers/HomeController.php delete mode 100644 Chapter08/onlineStore/app/Http/Kernel.php delete mode 100644 Chapter08/onlineStore/app/Http/Middleware/Authenticate.php delete mode 100644 Chapter08/onlineStore/app/Http/Middleware/EncryptCookies.php delete mode 100644 Chapter08/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php delete mode 100644 Chapter08/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php delete mode 100644 Chapter08/onlineStore/app/Http/Middleware/TrimStrings.php delete mode 100644 Chapter08/onlineStore/app/Http/Middleware/TrustHosts.php delete mode 100644 Chapter08/onlineStore/app/Http/Middleware/TrustProxies.php delete mode 100644 Chapter08/onlineStore/app/Http/Middleware/VerifyCsrfToken.php delete mode 100644 Chapter08/onlineStore/app/Models/User.php delete mode 100644 Chapter08/onlineStore/app/Providers/AppServiceProvider.php delete mode 100644 Chapter08/onlineStore/app/Providers/AuthServiceProvider.php delete mode 100644 Chapter08/onlineStore/app/Providers/BroadcastServiceProvider.php delete mode 100644 Chapter08/onlineStore/app/Providers/EventServiceProvider.php delete mode 100644 Chapter08/onlineStore/app/Providers/RouteServiceProvider.php delete mode 100644 Chapter08/onlineStore/artisan delete mode 100644 Chapter08/onlineStore/bootstrap/app.php delete mode 100644 Chapter08/onlineStore/bootstrap/cache/.gitignore delete mode 100644 Chapter08/onlineStore/composer.json delete mode 100644 Chapter08/onlineStore/composer.lock delete mode 100644 Chapter08/onlineStore/config/app.php delete mode 100644 Chapter08/onlineStore/config/auth.php delete mode 100644 Chapter08/onlineStore/config/broadcasting.php delete mode 100644 Chapter08/onlineStore/config/cache.php delete mode 100644 Chapter08/onlineStore/config/cors.php delete mode 100644 Chapter08/onlineStore/config/database.php delete mode 100644 Chapter08/onlineStore/config/filesystems.php delete mode 100644 Chapter08/onlineStore/config/hashing.php delete mode 100644 Chapter08/onlineStore/config/logging.php delete mode 100644 Chapter08/onlineStore/config/mail.php delete mode 100644 Chapter08/onlineStore/config/queue.php delete mode 100644 Chapter08/onlineStore/config/sanctum.php delete mode 100644 Chapter08/onlineStore/config/services.php delete mode 100644 Chapter08/onlineStore/config/session.php delete mode 100644 Chapter08/onlineStore/config/view.php delete mode 100644 Chapter08/onlineStore/database/.gitignore delete mode 100644 Chapter08/onlineStore/database/factories/UserFactory.php delete mode 100644 Chapter08/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php delete mode 100644 Chapter08/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php delete mode 100644 Chapter08/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php delete mode 100644 Chapter08/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php delete mode 100644 Chapter08/onlineStore/database/seeders/DatabaseSeeder.php delete mode 100644 Chapter08/onlineStore/lang/en.json delete mode 100644 Chapter08/onlineStore/lang/en/auth.php delete mode 100644 Chapter08/onlineStore/lang/en/pagination.php delete mode 100644 Chapter08/onlineStore/lang/en/passwords.php delete mode 100644 Chapter08/onlineStore/lang/en/validation.php delete mode 100644 Chapter08/onlineStore/package.json delete mode 100644 Chapter08/onlineStore/phpcs.xml delete mode 100644 Chapter08/onlineStore/phpunit.xml delete mode 100644 Chapter08/onlineStore/public/.htaccess delete mode 100644 Chapter08/onlineStore/public/css/app.css delete mode 100644 Chapter08/onlineStore/public/favicon.ico delete mode 100644 Chapter08/onlineStore/public/img/game.png delete mode 100644 Chapter08/onlineStore/public/img/safe.png delete mode 100644 Chapter08/onlineStore/public/img/submarine.png delete mode 100644 Chapter08/onlineStore/public/index.php delete mode 100644 Chapter08/onlineStore/public/robots.txt delete mode 100644 Chapter08/onlineStore/resources/css/app.css delete mode 100644 Chapter08/onlineStore/resources/js/app.js delete mode 100644 Chapter08/onlineStore/resources/js/bootstrap.js delete mode 100644 Chapter08/onlineStore/resources/views/home/about.blade.php delete mode 100644 Chapter08/onlineStore/resources/views/home/index.blade.php delete mode 100644 Chapter08/onlineStore/resources/views/layouts/app.blade.php delete mode 100644 Chapter08/onlineStore/resources/views/welcome.blade.php delete mode 100644 Chapter08/onlineStore/routes/api.php delete mode 100644 Chapter08/onlineStore/routes/channels.php delete mode 100644 Chapter08/onlineStore/routes/console.php delete mode 100644 Chapter08/onlineStore/routes/web.php delete mode 100644 Chapter08/onlineStore/storage/app/.gitignore delete mode 100644 Chapter08/onlineStore/storage/app/public/.gitignore delete mode 100644 Chapter08/onlineStore/storage/framework/.gitignore delete mode 100644 Chapter08/onlineStore/storage/framework/cache/.gitignore delete mode 100644 Chapter08/onlineStore/storage/framework/cache/data/.gitignore delete mode 100644 Chapter08/onlineStore/storage/framework/sessions/.gitignore delete mode 100644 Chapter08/onlineStore/storage/framework/testing/.gitignore delete mode 100644 Chapter08/onlineStore/storage/framework/views/.gitignore delete mode 100644 Chapter08/onlineStore/storage/logs/.gitignore delete mode 100644 Chapter08/onlineStore/tests/CreatesApplication.php delete mode 100644 Chapter08/onlineStore/tests/Feature/ExampleTest.php delete mode 100644 Chapter08/onlineStore/tests/TestCase.php delete mode 100644 Chapter08/onlineStore/tests/Unit/ExampleTest.php delete mode 100644 Chapter08/onlineStore/webpack.mix.js delete mode 100644 Chapter09/onlineStore/.editorconfig delete mode 100644 Chapter09/onlineStore/.env.example delete mode 100644 Chapter09/onlineStore/.gitattributes delete mode 100644 Chapter09/onlineStore/.gitignore delete mode 100644 Chapter09/onlineStore/.styleci.yml delete mode 100644 Chapter09/onlineStore/README.md delete mode 100644 Chapter09/onlineStore/app/Console/Kernel.php delete mode 100644 Chapter09/onlineStore/app/Exceptions/Handler.php delete mode 100644 Chapter09/onlineStore/app/Http/Controllers/Controller.php delete mode 100644 Chapter09/onlineStore/app/Http/Controllers/HomeController.php delete mode 100644 Chapter09/onlineStore/app/Http/Controllers/ProductController.php delete mode 100644 Chapter09/onlineStore/app/Http/Kernel.php delete mode 100644 Chapter09/onlineStore/app/Http/Middleware/Authenticate.php delete mode 100644 Chapter09/onlineStore/app/Http/Middleware/EncryptCookies.php delete mode 100644 Chapter09/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php delete mode 100644 Chapter09/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php delete mode 100644 Chapter09/onlineStore/app/Http/Middleware/TrimStrings.php delete mode 100644 Chapter09/onlineStore/app/Http/Middleware/TrustHosts.php delete mode 100644 Chapter09/onlineStore/app/Http/Middleware/TrustProxies.php delete mode 100644 Chapter09/onlineStore/app/Http/Middleware/VerifyCsrfToken.php delete mode 100644 Chapter09/onlineStore/app/Models/User.php delete mode 100644 Chapter09/onlineStore/app/Providers/AppServiceProvider.php delete mode 100644 Chapter09/onlineStore/app/Providers/AuthServiceProvider.php delete mode 100644 Chapter09/onlineStore/app/Providers/BroadcastServiceProvider.php delete mode 100644 Chapter09/onlineStore/app/Providers/EventServiceProvider.php delete mode 100644 Chapter09/onlineStore/app/Providers/RouteServiceProvider.php delete mode 100644 Chapter09/onlineStore/artisan delete mode 100644 Chapter09/onlineStore/bootstrap/app.php delete mode 100644 Chapter09/onlineStore/bootstrap/cache/.gitignore delete mode 100644 Chapter09/onlineStore/composer.json delete mode 100644 Chapter09/onlineStore/composer.lock delete mode 100644 Chapter09/onlineStore/config/app.php delete mode 100644 Chapter09/onlineStore/config/auth.php delete mode 100644 Chapter09/onlineStore/config/broadcasting.php delete mode 100644 Chapter09/onlineStore/config/cache.php delete mode 100644 Chapter09/onlineStore/config/cors.php delete mode 100644 Chapter09/onlineStore/config/database.php delete mode 100644 Chapter09/onlineStore/config/filesystems.php delete mode 100644 Chapter09/onlineStore/config/hashing.php delete mode 100644 Chapter09/onlineStore/config/logging.php delete mode 100644 Chapter09/onlineStore/config/mail.php delete mode 100644 Chapter09/onlineStore/config/queue.php delete mode 100644 Chapter09/onlineStore/config/sanctum.php delete mode 100644 Chapter09/onlineStore/config/services.php delete mode 100644 Chapter09/onlineStore/config/session.php delete mode 100644 Chapter09/onlineStore/config/view.php delete mode 100644 Chapter09/onlineStore/database/.gitignore delete mode 100644 Chapter09/onlineStore/database/factories/UserFactory.php delete mode 100644 Chapter09/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php delete mode 100644 Chapter09/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php delete mode 100644 Chapter09/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php delete mode 100644 Chapter09/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php delete mode 100644 Chapter09/onlineStore/database/seeders/DatabaseSeeder.php delete mode 100644 Chapter09/onlineStore/lang/en.json delete mode 100644 Chapter09/onlineStore/lang/en/auth.php delete mode 100644 Chapter09/onlineStore/lang/en/pagination.php delete mode 100644 Chapter09/onlineStore/lang/en/passwords.php delete mode 100644 Chapter09/onlineStore/lang/en/validation.php delete mode 100644 Chapter09/onlineStore/package.json delete mode 100644 Chapter09/onlineStore/phpcs.xml delete mode 100644 Chapter09/onlineStore/phpunit.xml delete mode 100644 Chapter09/onlineStore/public/.htaccess delete mode 100644 Chapter09/onlineStore/public/css/app.css delete mode 100644 Chapter09/onlineStore/public/favicon.ico delete mode 100644 Chapter09/onlineStore/public/img/game.png delete mode 100644 Chapter09/onlineStore/public/img/safe.png delete mode 100644 Chapter09/onlineStore/public/img/submarine.png delete mode 100644 Chapter09/onlineStore/public/index.php delete mode 100644 Chapter09/onlineStore/public/robots.txt delete mode 100644 Chapter09/onlineStore/resources/css/app.css delete mode 100644 Chapter09/onlineStore/resources/js/app.js delete mode 100644 Chapter09/onlineStore/resources/js/bootstrap.js delete mode 100644 Chapter09/onlineStore/resources/views/home/about.blade.php delete mode 100644 Chapter09/onlineStore/resources/views/home/index.blade.php delete mode 100644 Chapter09/onlineStore/resources/views/layouts/app.blade.php delete mode 100644 Chapter09/onlineStore/resources/views/product/index.blade.php delete mode 100644 Chapter09/onlineStore/resources/views/product/show.blade.php delete mode 100644 Chapter09/onlineStore/resources/views/welcome.blade.php delete mode 100644 Chapter09/onlineStore/routes/api.php delete mode 100644 Chapter09/onlineStore/routes/channels.php delete mode 100644 Chapter09/onlineStore/routes/console.php delete mode 100644 Chapter09/onlineStore/routes/web.php delete mode 100644 Chapter09/onlineStore/storage/app/.gitignore delete mode 100644 Chapter09/onlineStore/storage/app/public/.gitignore delete mode 100644 Chapter09/onlineStore/storage/framework/.gitignore delete mode 100644 Chapter09/onlineStore/storage/framework/cache/.gitignore delete mode 100644 Chapter09/onlineStore/storage/framework/cache/data/.gitignore delete mode 100644 Chapter09/onlineStore/storage/framework/sessions/.gitignore delete mode 100644 Chapter09/onlineStore/storage/framework/testing/.gitignore delete mode 100644 Chapter09/onlineStore/storage/framework/views/.gitignore delete mode 100644 Chapter09/onlineStore/storage/logs/.gitignore delete mode 100644 Chapter09/onlineStore/tests/CreatesApplication.php delete mode 100644 Chapter09/onlineStore/tests/Feature/ExampleTest.php delete mode 100644 Chapter09/onlineStore/tests/TestCase.php delete mode 100644 Chapter09/onlineStore/tests/Unit/ExampleTest.php delete mode 100644 Chapter09/onlineStore/webpack.mix.js delete mode 100644 Chapter11/onlineStore/.editorconfig delete mode 100644 Chapter11/onlineStore/.env.example delete mode 100644 Chapter11/onlineStore/.gitattributes delete mode 100644 Chapter11/onlineStore/.gitignore delete mode 100644 Chapter11/onlineStore/.styleci.yml delete mode 100644 Chapter11/onlineStore/CHAPTER-11-SQL-QUERY.txt delete mode 100644 Chapter11/onlineStore/README.md delete mode 100644 Chapter11/onlineStore/app/Console/Kernel.php delete mode 100644 Chapter11/onlineStore/app/Exceptions/Handler.php delete mode 100644 Chapter11/onlineStore/app/Http/Controllers/Controller.php delete mode 100644 Chapter11/onlineStore/app/Http/Controllers/HomeController.php delete mode 100644 Chapter11/onlineStore/app/Http/Controllers/ProductController.php delete mode 100644 Chapter11/onlineStore/app/Http/Kernel.php delete mode 100644 Chapter11/onlineStore/app/Http/Middleware/Authenticate.php delete mode 100644 Chapter11/onlineStore/app/Http/Middleware/EncryptCookies.php delete mode 100644 Chapter11/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php delete mode 100644 Chapter11/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php delete mode 100644 Chapter11/onlineStore/app/Http/Middleware/TrimStrings.php delete mode 100644 Chapter11/onlineStore/app/Http/Middleware/TrustHosts.php delete mode 100644 Chapter11/onlineStore/app/Http/Middleware/TrustProxies.php delete mode 100644 Chapter11/onlineStore/app/Http/Middleware/VerifyCsrfToken.php delete mode 100644 Chapter11/onlineStore/app/Models/User.php delete mode 100644 Chapter11/onlineStore/app/Providers/AppServiceProvider.php delete mode 100644 Chapter11/onlineStore/app/Providers/AuthServiceProvider.php delete mode 100644 Chapter11/onlineStore/app/Providers/BroadcastServiceProvider.php delete mode 100644 Chapter11/onlineStore/app/Providers/EventServiceProvider.php delete mode 100644 Chapter11/onlineStore/app/Providers/RouteServiceProvider.php delete mode 100644 Chapter11/onlineStore/artisan delete mode 100644 Chapter11/onlineStore/bootstrap/app.php delete mode 100644 Chapter11/onlineStore/bootstrap/cache/.gitignore delete mode 100644 Chapter11/onlineStore/composer.json delete mode 100644 Chapter11/onlineStore/composer.lock delete mode 100644 Chapter11/onlineStore/config/app.php delete mode 100644 Chapter11/onlineStore/config/auth.php delete mode 100644 Chapter11/onlineStore/config/broadcasting.php delete mode 100644 Chapter11/onlineStore/config/cache.php delete mode 100644 Chapter11/onlineStore/config/cors.php delete mode 100644 Chapter11/onlineStore/config/database.php delete mode 100644 Chapter11/onlineStore/config/filesystems.php delete mode 100644 Chapter11/onlineStore/config/hashing.php delete mode 100644 Chapter11/onlineStore/config/logging.php delete mode 100644 Chapter11/onlineStore/config/mail.php delete mode 100644 Chapter11/onlineStore/config/queue.php delete mode 100644 Chapter11/onlineStore/config/sanctum.php delete mode 100644 Chapter11/onlineStore/config/services.php delete mode 100644 Chapter11/onlineStore/config/session.php delete mode 100644 Chapter11/onlineStore/config/view.php delete mode 100644 Chapter11/onlineStore/database/.gitignore delete mode 100644 Chapter11/onlineStore/database/factories/UserFactory.php delete mode 100644 Chapter11/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php delete mode 100644 Chapter11/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php delete mode 100644 Chapter11/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php delete mode 100644 Chapter11/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php delete mode 100644 Chapter11/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php delete mode 100644 Chapter11/onlineStore/database/seeders/DatabaseSeeder.php delete mode 100644 Chapter11/onlineStore/lang/en.json delete mode 100644 Chapter11/onlineStore/lang/en/auth.php delete mode 100644 Chapter11/onlineStore/lang/en/pagination.php delete mode 100644 Chapter11/onlineStore/lang/en/passwords.php delete mode 100644 Chapter11/onlineStore/lang/en/validation.php delete mode 100644 Chapter11/onlineStore/package.json delete mode 100644 Chapter11/onlineStore/phpcs.xml delete mode 100644 Chapter11/onlineStore/phpunit.xml delete mode 100644 Chapter11/onlineStore/public/.htaccess delete mode 100644 Chapter11/onlineStore/public/css/app.css delete mode 100644 Chapter11/onlineStore/public/favicon.ico delete mode 100644 Chapter11/onlineStore/public/img/game.png delete mode 100644 Chapter11/onlineStore/public/img/safe.png delete mode 100644 Chapter11/onlineStore/public/img/submarine.png delete mode 100644 Chapter11/onlineStore/public/index.php delete mode 100644 Chapter11/onlineStore/public/robots.txt delete mode 100644 Chapter11/onlineStore/resources/css/app.css delete mode 100644 Chapter11/onlineStore/resources/js/app.js delete mode 100644 Chapter11/onlineStore/resources/js/bootstrap.js delete mode 100644 Chapter11/onlineStore/resources/views/home/about.blade.php delete mode 100644 Chapter11/onlineStore/resources/views/home/index.blade.php delete mode 100644 Chapter11/onlineStore/resources/views/layouts/app.blade.php delete mode 100644 Chapter11/onlineStore/resources/views/product/index.blade.php delete mode 100644 Chapter11/onlineStore/resources/views/product/show.blade.php delete mode 100644 Chapter11/onlineStore/resources/views/welcome.blade.php delete mode 100644 Chapter11/onlineStore/routes/api.php delete mode 100644 Chapter11/onlineStore/routes/channels.php delete mode 100644 Chapter11/onlineStore/routes/console.php delete mode 100644 Chapter11/onlineStore/routes/web.php delete mode 100644 Chapter11/onlineStore/storage/app/.gitignore delete mode 100644 Chapter11/onlineStore/storage/app/public/.gitignore delete mode 100644 Chapter11/onlineStore/storage/framework/.gitignore delete mode 100644 Chapter11/onlineStore/storage/framework/cache/.gitignore delete mode 100644 Chapter11/onlineStore/storage/framework/cache/data/.gitignore delete mode 100644 Chapter11/onlineStore/storage/framework/sessions/.gitignore delete mode 100644 Chapter11/onlineStore/storage/framework/testing/.gitignore delete mode 100644 Chapter11/onlineStore/storage/framework/views/.gitignore delete mode 100644 Chapter11/onlineStore/storage/logs/.gitignore delete mode 100644 Chapter11/onlineStore/tests/CreatesApplication.php delete mode 100644 Chapter11/onlineStore/tests/Feature/ExampleTest.php delete mode 100644 Chapter11/onlineStore/tests/TestCase.php delete mode 100644 Chapter11/onlineStore/tests/Unit/ExampleTest.php delete mode 100644 Chapter11/onlineStore/webpack.mix.js delete mode 100644 Chapter12/onlineStore/.editorconfig delete mode 100644 Chapter12/onlineStore/.env.example delete mode 100644 Chapter12/onlineStore/.gitattributes delete mode 100644 Chapter12/onlineStore/.gitignore delete mode 100644 Chapter12/onlineStore/.styleci.yml delete mode 100644 Chapter12/onlineStore/README.md delete mode 100644 Chapter12/onlineStore/app/Console/Kernel.php delete mode 100644 Chapter12/onlineStore/app/Exceptions/Handler.php delete mode 100644 Chapter12/onlineStore/app/Http/Controllers/Controller.php delete mode 100644 Chapter12/onlineStore/app/Http/Controllers/HomeController.php delete mode 100644 Chapter12/onlineStore/app/Http/Controllers/ProductController.php delete mode 100644 Chapter12/onlineStore/app/Http/Kernel.php delete mode 100644 Chapter12/onlineStore/app/Http/Middleware/Authenticate.php delete mode 100644 Chapter12/onlineStore/app/Http/Middleware/EncryptCookies.php delete mode 100644 Chapter12/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php delete mode 100644 Chapter12/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php delete mode 100644 Chapter12/onlineStore/app/Http/Middleware/TrimStrings.php delete mode 100644 Chapter12/onlineStore/app/Http/Middleware/TrustHosts.php delete mode 100644 Chapter12/onlineStore/app/Http/Middleware/TrustProxies.php delete mode 100644 Chapter12/onlineStore/app/Http/Middleware/VerifyCsrfToken.php delete mode 100644 Chapter12/onlineStore/app/Models/Product.php delete mode 100644 Chapter12/onlineStore/app/Models/User.php delete mode 100644 Chapter12/onlineStore/app/Providers/AppServiceProvider.php delete mode 100644 Chapter12/onlineStore/app/Providers/AuthServiceProvider.php delete mode 100644 Chapter12/onlineStore/app/Providers/BroadcastServiceProvider.php delete mode 100644 Chapter12/onlineStore/app/Providers/EventServiceProvider.php delete mode 100644 Chapter12/onlineStore/app/Providers/RouteServiceProvider.php delete mode 100644 Chapter12/onlineStore/artisan delete mode 100644 Chapter12/onlineStore/bootstrap/app.php delete mode 100644 Chapter12/onlineStore/bootstrap/cache/.gitignore delete mode 100644 Chapter12/onlineStore/composer.json delete mode 100644 Chapter12/onlineStore/composer.lock delete mode 100644 Chapter12/onlineStore/config/app.php delete mode 100644 Chapter12/onlineStore/config/auth.php delete mode 100644 Chapter12/onlineStore/config/broadcasting.php delete mode 100644 Chapter12/onlineStore/config/cache.php delete mode 100644 Chapter12/onlineStore/config/cors.php delete mode 100644 Chapter12/onlineStore/config/database.php delete mode 100644 Chapter12/onlineStore/config/filesystems.php delete mode 100644 Chapter12/onlineStore/config/hashing.php delete mode 100644 Chapter12/onlineStore/config/logging.php delete mode 100644 Chapter12/onlineStore/config/mail.php delete mode 100644 Chapter12/onlineStore/config/queue.php delete mode 100644 Chapter12/onlineStore/config/sanctum.php delete mode 100644 Chapter12/onlineStore/config/services.php delete mode 100644 Chapter12/onlineStore/config/session.php delete mode 100644 Chapter12/onlineStore/config/view.php delete mode 100644 Chapter12/onlineStore/database/.gitignore delete mode 100644 Chapter12/onlineStore/database/factories/UserFactory.php delete mode 100644 Chapter12/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php delete mode 100644 Chapter12/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php delete mode 100644 Chapter12/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php delete mode 100644 Chapter12/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php delete mode 100644 Chapter12/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php delete mode 100644 Chapter12/onlineStore/database/seeders/DatabaseSeeder.php delete mode 100644 Chapter12/onlineStore/lang/en.json delete mode 100644 Chapter12/onlineStore/lang/en/auth.php delete mode 100644 Chapter12/onlineStore/lang/en/pagination.php delete mode 100644 Chapter12/onlineStore/lang/en/passwords.php delete mode 100644 Chapter12/onlineStore/lang/en/validation.php delete mode 100644 Chapter12/onlineStore/package.json delete mode 100644 Chapter12/onlineStore/phpcs.xml delete mode 100644 Chapter12/onlineStore/phpunit.xml delete mode 100644 Chapter12/onlineStore/public/.htaccess delete mode 100644 Chapter12/onlineStore/public/css/app.css delete mode 100644 Chapter12/onlineStore/public/favicon.ico delete mode 100644 Chapter12/onlineStore/public/img/game.png delete mode 100644 Chapter12/onlineStore/public/img/safe.png delete mode 100644 Chapter12/onlineStore/public/img/submarine.png delete mode 100644 Chapter12/onlineStore/public/index.php delete mode 100644 Chapter12/onlineStore/public/robots.txt delete mode 100644 Chapter12/onlineStore/resources/css/app.css delete mode 100644 Chapter12/onlineStore/resources/js/app.js delete mode 100644 Chapter12/onlineStore/resources/js/bootstrap.js delete mode 100644 Chapter12/onlineStore/resources/views/home/about.blade.php delete mode 100644 Chapter12/onlineStore/resources/views/home/index.blade.php delete mode 100644 Chapter12/onlineStore/resources/views/layouts/app.blade.php delete mode 100644 Chapter12/onlineStore/resources/views/product/index.blade.php delete mode 100644 Chapter12/onlineStore/resources/views/product/show.blade.php delete mode 100644 Chapter12/onlineStore/resources/views/welcome.blade.php delete mode 100644 Chapter12/onlineStore/routes/api.php delete mode 100644 Chapter12/onlineStore/routes/channels.php delete mode 100644 Chapter12/onlineStore/routes/console.php delete mode 100644 Chapter12/onlineStore/routes/web.php delete mode 100644 Chapter12/onlineStore/storage/app/.gitignore delete mode 100644 Chapter12/onlineStore/storage/app/public/.gitignore delete mode 100644 Chapter12/onlineStore/storage/framework/.gitignore delete mode 100644 Chapter12/onlineStore/storage/framework/cache/.gitignore delete mode 100644 Chapter12/onlineStore/storage/framework/cache/data/.gitignore delete mode 100644 Chapter12/onlineStore/storage/framework/sessions/.gitignore delete mode 100644 Chapter12/onlineStore/storage/framework/testing/.gitignore delete mode 100644 Chapter12/onlineStore/storage/framework/views/.gitignore delete mode 100644 Chapter12/onlineStore/storage/logs/.gitignore delete mode 100644 Chapter12/onlineStore/tests/CreatesApplication.php delete mode 100644 Chapter12/onlineStore/tests/Feature/ExampleTest.php delete mode 100644 Chapter12/onlineStore/tests/TestCase.php delete mode 100644 Chapter12/onlineStore/tests/Unit/ExampleTest.php delete mode 100644 Chapter12/onlineStore/webpack.mix.js delete mode 100644 Chapter13/onlineStore/.editorconfig delete mode 100644 Chapter13/onlineStore/.env.example delete mode 100644 Chapter13/onlineStore/.gitattributes delete mode 100644 Chapter13/onlineStore/.gitignore delete mode 100644 Chapter13/onlineStore/.styleci.yml delete mode 100644 Chapter13/onlineStore/README.md delete mode 100644 Chapter13/onlineStore/app/Console/Kernel.php delete mode 100644 Chapter13/onlineStore/app/Exceptions/Handler.php delete mode 100644 Chapter13/onlineStore/app/Http/Controllers/Controller.php delete mode 100644 Chapter13/onlineStore/app/Http/Controllers/HomeController.php delete mode 100644 Chapter13/onlineStore/app/Http/Controllers/ProductController.php delete mode 100644 Chapter13/onlineStore/app/Http/Kernel.php delete mode 100644 Chapter13/onlineStore/app/Http/Middleware/Authenticate.php delete mode 100644 Chapter13/onlineStore/app/Http/Middleware/EncryptCookies.php delete mode 100644 Chapter13/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php delete mode 100644 Chapter13/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php delete mode 100644 Chapter13/onlineStore/app/Http/Middleware/TrimStrings.php delete mode 100644 Chapter13/onlineStore/app/Http/Middleware/TrustHosts.php delete mode 100644 Chapter13/onlineStore/app/Http/Middleware/TrustProxies.php delete mode 100644 Chapter13/onlineStore/app/Http/Middleware/VerifyCsrfToken.php delete mode 100644 Chapter13/onlineStore/app/Models/Product.php delete mode 100644 Chapter13/onlineStore/app/Models/User.php delete mode 100644 Chapter13/onlineStore/app/Providers/AppServiceProvider.php delete mode 100644 Chapter13/onlineStore/app/Providers/AuthServiceProvider.php delete mode 100644 Chapter13/onlineStore/app/Providers/BroadcastServiceProvider.php delete mode 100644 Chapter13/onlineStore/app/Providers/EventServiceProvider.php delete mode 100644 Chapter13/onlineStore/app/Providers/RouteServiceProvider.php delete mode 100644 Chapter13/onlineStore/artisan delete mode 100644 Chapter13/onlineStore/bootstrap/app.php delete mode 100644 Chapter13/onlineStore/bootstrap/cache/.gitignore delete mode 100644 Chapter13/onlineStore/composer.json delete mode 100644 Chapter13/onlineStore/composer.lock delete mode 100644 Chapter13/onlineStore/config/app.php delete mode 100644 Chapter13/onlineStore/config/auth.php delete mode 100644 Chapter13/onlineStore/config/broadcasting.php delete mode 100644 Chapter13/onlineStore/config/cache.php delete mode 100644 Chapter13/onlineStore/config/cors.php delete mode 100644 Chapter13/onlineStore/config/database.php delete mode 100644 Chapter13/onlineStore/config/filesystems.php delete mode 100644 Chapter13/onlineStore/config/hashing.php delete mode 100644 Chapter13/onlineStore/config/logging.php delete mode 100644 Chapter13/onlineStore/config/mail.php delete mode 100644 Chapter13/onlineStore/config/queue.php delete mode 100644 Chapter13/onlineStore/config/sanctum.php delete mode 100644 Chapter13/onlineStore/config/services.php delete mode 100644 Chapter13/onlineStore/config/session.php delete mode 100644 Chapter13/onlineStore/config/view.php delete mode 100644 Chapter13/onlineStore/database/.gitignore delete mode 100644 Chapter13/onlineStore/database/factories/UserFactory.php delete mode 100644 Chapter13/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php delete mode 100644 Chapter13/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php delete mode 100644 Chapter13/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php delete mode 100644 Chapter13/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php delete mode 100644 Chapter13/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php delete mode 100644 Chapter13/onlineStore/database/seeders/DatabaseSeeder.php delete mode 100644 Chapter13/onlineStore/lang/en.json delete mode 100644 Chapter13/onlineStore/lang/en/auth.php delete mode 100644 Chapter13/onlineStore/lang/en/pagination.php delete mode 100644 Chapter13/onlineStore/lang/en/passwords.php delete mode 100644 Chapter13/onlineStore/lang/en/validation.php delete mode 100644 Chapter13/onlineStore/package.json delete mode 100644 Chapter13/onlineStore/phpcs.xml delete mode 100644 Chapter13/onlineStore/phpunit.xml delete mode 100644 Chapter13/onlineStore/public/.htaccess delete mode 100644 Chapter13/onlineStore/public/css/app.css delete mode 100644 Chapter13/onlineStore/public/favicon.ico delete mode 100644 Chapter13/onlineStore/public/img/game.png delete mode 100644 Chapter13/onlineStore/public/img/safe.png delete mode 100644 Chapter13/onlineStore/public/img/submarine.png delete mode 100644 Chapter13/onlineStore/public/index.php delete mode 100644 Chapter13/onlineStore/public/robots.txt delete mode 100644 Chapter13/onlineStore/resources/css/app.css delete mode 100644 Chapter13/onlineStore/resources/js/app.js delete mode 100644 Chapter13/onlineStore/resources/js/bootstrap.js delete mode 100644 Chapter13/onlineStore/resources/views/home/about.blade.php delete mode 100644 Chapter13/onlineStore/resources/views/home/index.blade.php delete mode 100644 Chapter13/onlineStore/resources/views/layouts/app.blade.php delete mode 100644 Chapter13/onlineStore/resources/views/product/index.blade.php delete mode 100644 Chapter13/onlineStore/resources/views/product/show.blade.php delete mode 100644 Chapter13/onlineStore/resources/views/welcome.blade.php delete mode 100644 Chapter13/onlineStore/routes/api.php delete mode 100644 Chapter13/onlineStore/routes/channels.php delete mode 100644 Chapter13/onlineStore/routes/console.php delete mode 100644 Chapter13/onlineStore/routes/web.php delete mode 100644 Chapter13/onlineStore/storage/app/.gitignore delete mode 100644 Chapter13/onlineStore/storage/app/public/.gitignore delete mode 100644 Chapter13/onlineStore/storage/framework/.gitignore delete mode 100644 Chapter13/onlineStore/storage/framework/cache/.gitignore delete mode 100644 Chapter13/onlineStore/storage/framework/cache/data/.gitignore delete mode 100644 Chapter13/onlineStore/storage/framework/sessions/.gitignore delete mode 100644 Chapter13/onlineStore/storage/framework/testing/.gitignore delete mode 100644 Chapter13/onlineStore/storage/framework/views/.gitignore delete mode 100644 Chapter13/onlineStore/storage/logs/.gitignore delete mode 100644 Chapter13/onlineStore/tests/CreatesApplication.php delete mode 100644 Chapter13/onlineStore/tests/Feature/ExampleTest.php delete mode 100644 Chapter13/onlineStore/tests/TestCase.php delete mode 100644 Chapter13/onlineStore/tests/Unit/ExampleTest.php delete mode 100644 Chapter13/onlineStore/webpack.mix.js delete mode 100644 Chapter14/onlineStore/.editorconfig delete mode 100644 Chapter14/onlineStore/.env.example delete mode 100644 Chapter14/onlineStore/.gitattributes delete mode 100644 Chapter14/onlineStore/.gitignore delete mode 100644 Chapter14/onlineStore/.styleci.yml delete mode 100644 Chapter14/onlineStore/README.md delete mode 100644 Chapter14/onlineStore/app/Console/Kernel.php delete mode 100644 Chapter14/onlineStore/app/Exceptions/Handler.php delete mode 100644 Chapter14/onlineStore/app/Http/Controllers/Controller.php delete mode 100644 Chapter14/onlineStore/app/Http/Controllers/HomeController.php delete mode 100644 Chapter14/onlineStore/app/Http/Controllers/ProductController.php delete mode 100644 Chapter14/onlineStore/app/Http/Kernel.php delete mode 100644 Chapter14/onlineStore/app/Http/Middleware/Authenticate.php delete mode 100644 Chapter14/onlineStore/app/Http/Middleware/EncryptCookies.php delete mode 100644 Chapter14/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php delete mode 100644 Chapter14/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php delete mode 100644 Chapter14/onlineStore/app/Http/Middleware/TrimStrings.php delete mode 100644 Chapter14/onlineStore/app/Http/Middleware/TrustHosts.php delete mode 100644 Chapter14/onlineStore/app/Http/Middleware/TrustProxies.php delete mode 100644 Chapter14/onlineStore/app/Http/Middleware/VerifyCsrfToken.php delete mode 100644 Chapter14/onlineStore/app/Models/Product.php delete mode 100644 Chapter14/onlineStore/app/Models/User.php delete mode 100644 Chapter14/onlineStore/app/Providers/AppServiceProvider.php delete mode 100644 Chapter14/onlineStore/app/Providers/AuthServiceProvider.php delete mode 100644 Chapter14/onlineStore/app/Providers/BroadcastServiceProvider.php delete mode 100644 Chapter14/onlineStore/app/Providers/EventServiceProvider.php delete mode 100644 Chapter14/onlineStore/app/Providers/RouteServiceProvider.php delete mode 100644 Chapter14/onlineStore/artisan delete mode 100644 Chapter14/onlineStore/bootstrap/app.php delete mode 100644 Chapter14/onlineStore/bootstrap/cache/.gitignore delete mode 100644 Chapter14/onlineStore/composer.json delete mode 100644 Chapter14/onlineStore/composer.lock delete mode 100644 Chapter14/onlineStore/config/app.php delete mode 100644 Chapter14/onlineStore/config/auth.php delete mode 100644 Chapter14/onlineStore/config/broadcasting.php delete mode 100644 Chapter14/onlineStore/config/cache.php delete mode 100644 Chapter14/onlineStore/config/cors.php delete mode 100644 Chapter14/onlineStore/config/database.php delete mode 100644 Chapter14/onlineStore/config/filesystems.php delete mode 100644 Chapter14/onlineStore/config/hashing.php delete mode 100644 Chapter14/onlineStore/config/logging.php delete mode 100644 Chapter14/onlineStore/config/mail.php delete mode 100644 Chapter14/onlineStore/config/queue.php delete mode 100644 Chapter14/onlineStore/config/sanctum.php delete mode 100644 Chapter14/onlineStore/config/services.php delete mode 100644 Chapter14/onlineStore/config/session.php delete mode 100644 Chapter14/onlineStore/config/view.php delete mode 100644 Chapter14/onlineStore/database/.gitignore delete mode 100644 Chapter14/onlineStore/database/factories/UserFactory.php delete mode 100644 Chapter14/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php delete mode 100644 Chapter14/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php delete mode 100644 Chapter14/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php delete mode 100644 Chapter14/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php delete mode 100644 Chapter14/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php delete mode 100644 Chapter14/onlineStore/database/seeders/DatabaseSeeder.php delete mode 100644 Chapter14/onlineStore/lang/en.json delete mode 100644 Chapter14/onlineStore/lang/en/auth.php delete mode 100644 Chapter14/onlineStore/lang/en/pagination.php delete mode 100644 Chapter14/onlineStore/lang/en/passwords.php delete mode 100644 Chapter14/onlineStore/lang/en/validation.php delete mode 100644 Chapter14/onlineStore/package.json delete mode 100644 Chapter14/onlineStore/phpcs.xml delete mode 100644 Chapter14/onlineStore/phpunit.xml delete mode 100644 Chapter14/onlineStore/public/.htaccess delete mode 100644 Chapter14/onlineStore/public/css/app.css delete mode 100644 Chapter14/onlineStore/public/favicon.ico delete mode 100644 Chapter14/onlineStore/public/img/game.png delete mode 100644 Chapter14/onlineStore/public/img/safe.png delete mode 100644 Chapter14/onlineStore/public/img/submarine.png delete mode 100644 Chapter14/onlineStore/public/index.php delete mode 100644 Chapter14/onlineStore/public/robots.txt delete mode 100644 Chapter14/onlineStore/resources/css/app.css delete mode 100644 Chapter14/onlineStore/resources/js/app.js delete mode 100644 Chapter14/onlineStore/resources/js/bootstrap.js delete mode 100644 Chapter14/onlineStore/resources/views/home/about.blade.php delete mode 100644 Chapter14/onlineStore/resources/views/home/index.blade.php delete mode 100644 Chapter14/onlineStore/resources/views/layouts/app.blade.php delete mode 100644 Chapter14/onlineStore/resources/views/product/index.blade.php delete mode 100644 Chapter14/onlineStore/resources/views/product/show.blade.php delete mode 100644 Chapter14/onlineStore/resources/views/welcome.blade.php delete mode 100644 Chapter14/onlineStore/routes/api.php delete mode 100644 Chapter14/onlineStore/routes/channels.php delete mode 100644 Chapter14/onlineStore/routes/console.php delete mode 100644 Chapter14/onlineStore/routes/web.php delete mode 100644 Chapter14/onlineStore/storage/app/.gitignore delete mode 100644 Chapter14/onlineStore/storage/app/public/.gitignore delete mode 100644 Chapter14/onlineStore/storage/framework/.gitignore delete mode 100644 Chapter14/onlineStore/storage/framework/cache/.gitignore delete mode 100644 Chapter14/onlineStore/storage/framework/cache/data/.gitignore delete mode 100644 Chapter14/onlineStore/storage/framework/sessions/.gitignore delete mode 100644 Chapter14/onlineStore/storage/framework/testing/.gitignore delete mode 100644 Chapter14/onlineStore/storage/framework/views/.gitignore delete mode 100644 Chapter14/onlineStore/storage/logs/.gitignore delete mode 100644 Chapter14/onlineStore/tests/CreatesApplication.php delete mode 100644 Chapter14/onlineStore/tests/Feature/ExampleTest.php delete mode 100644 Chapter14/onlineStore/tests/TestCase.php delete mode 100644 Chapter14/onlineStore/tests/Unit/ExampleTest.php delete mode 100644 Chapter14/onlineStore/webpack.mix.js delete mode 100644 Chapter15/onlineStore/.editorconfig delete mode 100644 Chapter15/onlineStore/.env.example delete mode 100644 Chapter15/onlineStore/.gitattributes delete mode 100644 Chapter15/onlineStore/.gitignore delete mode 100644 Chapter15/onlineStore/.styleci.yml delete mode 100644 Chapter15/onlineStore/README.md delete mode 100644 Chapter15/onlineStore/app/Console/Kernel.php delete mode 100644 Chapter15/onlineStore/app/Exceptions/Handler.php delete mode 100644 Chapter15/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php delete mode 100644 Chapter15/onlineStore/app/Http/Controllers/Controller.php delete mode 100644 Chapter15/onlineStore/app/Http/Controllers/HomeController.php delete mode 100644 Chapter15/onlineStore/app/Http/Controllers/ProductController.php delete mode 100644 Chapter15/onlineStore/app/Http/Kernel.php delete mode 100644 Chapter15/onlineStore/app/Http/Middleware/Authenticate.php delete mode 100644 Chapter15/onlineStore/app/Http/Middleware/EncryptCookies.php delete mode 100644 Chapter15/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php delete mode 100644 Chapter15/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php delete mode 100644 Chapter15/onlineStore/app/Http/Middleware/TrimStrings.php delete mode 100644 Chapter15/onlineStore/app/Http/Middleware/TrustHosts.php delete mode 100644 Chapter15/onlineStore/app/Http/Middleware/TrustProxies.php delete mode 100644 Chapter15/onlineStore/app/Http/Middleware/VerifyCsrfToken.php delete mode 100644 Chapter15/onlineStore/app/Models/Product.php delete mode 100644 Chapter15/onlineStore/app/Models/User.php delete mode 100644 Chapter15/onlineStore/app/Providers/AppServiceProvider.php delete mode 100644 Chapter15/onlineStore/app/Providers/AuthServiceProvider.php delete mode 100644 Chapter15/onlineStore/app/Providers/BroadcastServiceProvider.php delete mode 100644 Chapter15/onlineStore/app/Providers/EventServiceProvider.php delete mode 100644 Chapter15/onlineStore/app/Providers/RouteServiceProvider.php delete mode 100644 Chapter15/onlineStore/artisan delete mode 100644 Chapter15/onlineStore/bootstrap/app.php delete mode 100644 Chapter15/onlineStore/bootstrap/cache/.gitignore delete mode 100644 Chapter15/onlineStore/composer.json delete mode 100644 Chapter15/onlineStore/composer.lock delete mode 100644 Chapter15/onlineStore/config/app.php delete mode 100644 Chapter15/onlineStore/config/auth.php delete mode 100644 Chapter15/onlineStore/config/broadcasting.php delete mode 100644 Chapter15/onlineStore/config/cache.php delete mode 100644 Chapter15/onlineStore/config/cors.php delete mode 100644 Chapter15/onlineStore/config/database.php delete mode 100644 Chapter15/onlineStore/config/filesystems.php delete mode 100644 Chapter15/onlineStore/config/hashing.php delete mode 100644 Chapter15/onlineStore/config/logging.php delete mode 100644 Chapter15/onlineStore/config/mail.php delete mode 100644 Chapter15/onlineStore/config/queue.php delete mode 100644 Chapter15/onlineStore/config/sanctum.php delete mode 100644 Chapter15/onlineStore/config/services.php delete mode 100644 Chapter15/onlineStore/config/session.php delete mode 100644 Chapter15/onlineStore/config/view.php delete mode 100644 Chapter15/onlineStore/database/.gitignore delete mode 100644 Chapter15/onlineStore/database/factories/UserFactory.php delete mode 100644 Chapter15/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php delete mode 100644 Chapter15/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php delete mode 100644 Chapter15/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php delete mode 100644 Chapter15/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php delete mode 100644 Chapter15/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php delete mode 100644 Chapter15/onlineStore/database/seeders/DatabaseSeeder.php delete mode 100644 Chapter15/onlineStore/lang/en.json delete mode 100644 Chapter15/onlineStore/lang/en/auth.php delete mode 100644 Chapter15/onlineStore/lang/en/pagination.php delete mode 100644 Chapter15/onlineStore/lang/en/passwords.php delete mode 100644 Chapter15/onlineStore/lang/en/validation.php delete mode 100644 Chapter15/onlineStore/package.json delete mode 100644 Chapter15/onlineStore/phpcs.xml delete mode 100644 Chapter15/onlineStore/phpunit.xml delete mode 100644 Chapter15/onlineStore/public/.htaccess delete mode 100644 Chapter15/onlineStore/public/css/admin.css delete mode 100644 Chapter15/onlineStore/public/css/app.css delete mode 100644 Chapter15/onlineStore/public/favicon.ico delete mode 100644 Chapter15/onlineStore/public/img/game.png delete mode 100644 Chapter15/onlineStore/public/img/safe.png delete mode 100644 Chapter15/onlineStore/public/img/submarine.png delete mode 100644 Chapter15/onlineStore/public/img/undraw_profile.svg delete mode 100644 Chapter15/onlineStore/public/index.php delete mode 100644 Chapter15/onlineStore/public/robots.txt delete mode 100644 Chapter15/onlineStore/resources/css/app.css delete mode 100644 Chapter15/onlineStore/resources/js/app.js delete mode 100644 Chapter15/onlineStore/resources/js/bootstrap.js delete mode 100644 Chapter15/onlineStore/resources/views/admin/home/index.blade.php delete mode 100644 Chapter15/onlineStore/resources/views/home/about.blade.php delete mode 100644 Chapter15/onlineStore/resources/views/home/index.blade.php delete mode 100644 Chapter15/onlineStore/resources/views/layouts/admin.blade.php delete mode 100644 Chapter15/onlineStore/resources/views/layouts/app.blade.php delete mode 100644 Chapter15/onlineStore/resources/views/product/index.blade.php delete mode 100644 Chapter15/onlineStore/resources/views/product/show.blade.php delete mode 100644 Chapter15/onlineStore/resources/views/welcome.blade.php delete mode 100644 Chapter15/onlineStore/routes/api.php delete mode 100644 Chapter15/onlineStore/routes/channels.php delete mode 100644 Chapter15/onlineStore/routes/console.php delete mode 100644 Chapter15/onlineStore/routes/web.php delete mode 100644 Chapter15/onlineStore/storage/app/.gitignore delete mode 100644 Chapter15/onlineStore/storage/app/public/.gitignore delete mode 100644 Chapter15/onlineStore/storage/framework/.gitignore delete mode 100644 Chapter15/onlineStore/storage/framework/cache/.gitignore delete mode 100644 Chapter15/onlineStore/storage/framework/cache/data/.gitignore delete mode 100644 Chapter15/onlineStore/storage/framework/sessions/.gitignore delete mode 100644 Chapter15/onlineStore/storage/framework/testing/.gitignore delete mode 100644 Chapter15/onlineStore/storage/framework/views/.gitignore delete mode 100644 Chapter15/onlineStore/storage/logs/.gitignore delete mode 100644 Chapter15/onlineStore/tests/CreatesApplication.php delete mode 100644 Chapter15/onlineStore/tests/Feature/ExampleTest.php delete mode 100644 Chapter15/onlineStore/tests/TestCase.php delete mode 100644 Chapter15/onlineStore/tests/Unit/ExampleTest.php delete mode 100644 Chapter15/onlineStore/webpack.mix.js delete mode 100644 Chapter16/onlineStore/.editorconfig delete mode 100644 Chapter16/onlineStore/.env.example delete mode 100644 Chapter16/onlineStore/.gitattributes delete mode 100644 Chapter16/onlineStore/.gitignore delete mode 100644 Chapter16/onlineStore/.styleci.yml delete mode 100644 Chapter16/onlineStore/README.md delete mode 100644 Chapter16/onlineStore/app/Console/Kernel.php delete mode 100644 Chapter16/onlineStore/app/Exceptions/Handler.php delete mode 100644 Chapter16/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php delete mode 100644 Chapter16/onlineStore/app/Http/Controllers/Admin/AdminProductController.php delete mode 100644 Chapter16/onlineStore/app/Http/Controllers/Controller.php delete mode 100644 Chapter16/onlineStore/app/Http/Controllers/HomeController.php delete mode 100644 Chapter16/onlineStore/app/Http/Controllers/ProductController.php delete mode 100644 Chapter16/onlineStore/app/Http/Kernel.php delete mode 100644 Chapter16/onlineStore/app/Http/Middleware/Authenticate.php delete mode 100644 Chapter16/onlineStore/app/Http/Middleware/EncryptCookies.php delete mode 100644 Chapter16/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php delete mode 100644 Chapter16/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php delete mode 100644 Chapter16/onlineStore/app/Http/Middleware/TrimStrings.php delete mode 100644 Chapter16/onlineStore/app/Http/Middleware/TrustHosts.php delete mode 100644 Chapter16/onlineStore/app/Http/Middleware/TrustProxies.php delete mode 100644 Chapter16/onlineStore/app/Http/Middleware/VerifyCsrfToken.php delete mode 100644 Chapter16/onlineStore/app/Models/Product.php delete mode 100644 Chapter16/onlineStore/app/Models/User.php delete mode 100644 Chapter16/onlineStore/app/Providers/AppServiceProvider.php delete mode 100644 Chapter16/onlineStore/app/Providers/AuthServiceProvider.php delete mode 100644 Chapter16/onlineStore/app/Providers/BroadcastServiceProvider.php delete mode 100644 Chapter16/onlineStore/app/Providers/EventServiceProvider.php delete mode 100644 Chapter16/onlineStore/app/Providers/RouteServiceProvider.php delete mode 100644 Chapter16/onlineStore/artisan delete mode 100644 Chapter16/onlineStore/bootstrap/app.php delete mode 100644 Chapter16/onlineStore/bootstrap/cache/.gitignore delete mode 100644 Chapter16/onlineStore/composer.json delete mode 100644 Chapter16/onlineStore/composer.lock delete mode 100644 Chapter16/onlineStore/config/app.php delete mode 100644 Chapter16/onlineStore/config/auth.php delete mode 100644 Chapter16/onlineStore/config/broadcasting.php delete mode 100644 Chapter16/onlineStore/config/cache.php delete mode 100644 Chapter16/onlineStore/config/cors.php delete mode 100644 Chapter16/onlineStore/config/database.php delete mode 100644 Chapter16/onlineStore/config/filesystems.php delete mode 100644 Chapter16/onlineStore/config/hashing.php delete mode 100644 Chapter16/onlineStore/config/logging.php delete mode 100644 Chapter16/onlineStore/config/mail.php delete mode 100644 Chapter16/onlineStore/config/queue.php delete mode 100644 Chapter16/onlineStore/config/sanctum.php delete mode 100644 Chapter16/onlineStore/config/services.php delete mode 100644 Chapter16/onlineStore/config/session.php delete mode 100644 Chapter16/onlineStore/config/view.php delete mode 100644 Chapter16/onlineStore/database/.gitignore delete mode 100644 Chapter16/onlineStore/database/factories/UserFactory.php delete mode 100644 Chapter16/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php delete mode 100644 Chapter16/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php delete mode 100644 Chapter16/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php delete mode 100644 Chapter16/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php delete mode 100644 Chapter16/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php delete mode 100644 Chapter16/onlineStore/database/seeders/DatabaseSeeder.php delete mode 100644 Chapter16/onlineStore/lang/en.json delete mode 100644 Chapter16/onlineStore/lang/en/auth.php delete mode 100644 Chapter16/onlineStore/lang/en/pagination.php delete mode 100644 Chapter16/onlineStore/lang/en/passwords.php delete mode 100644 Chapter16/onlineStore/lang/en/validation.php delete mode 100644 Chapter16/onlineStore/package.json delete mode 100644 Chapter16/onlineStore/phpcs.xml delete mode 100644 Chapter16/onlineStore/phpunit.xml delete mode 100644 Chapter16/onlineStore/public/.htaccess delete mode 100644 Chapter16/onlineStore/public/css/admin.css delete mode 100644 Chapter16/onlineStore/public/css/app.css delete mode 100644 Chapter16/onlineStore/public/favicon.ico delete mode 100644 Chapter16/onlineStore/public/img/game.png delete mode 100644 Chapter16/onlineStore/public/img/safe.png delete mode 100644 Chapter16/onlineStore/public/img/submarine.png delete mode 100644 Chapter16/onlineStore/public/img/undraw_profile.svg delete mode 100644 Chapter16/onlineStore/public/index.php delete mode 100644 Chapter16/onlineStore/public/robots.txt delete mode 100644 Chapter16/onlineStore/resources/css/app.css delete mode 100644 Chapter16/onlineStore/resources/js/app.js delete mode 100644 Chapter16/onlineStore/resources/js/bootstrap.js delete mode 100644 Chapter16/onlineStore/resources/views/admin/home/index.blade.php delete mode 100644 Chapter16/onlineStore/resources/views/admin/product/index.blade.php delete mode 100644 Chapter16/onlineStore/resources/views/home/about.blade.php delete mode 100644 Chapter16/onlineStore/resources/views/home/index.blade.php delete mode 100644 Chapter16/onlineStore/resources/views/layouts/admin.blade.php delete mode 100644 Chapter16/onlineStore/resources/views/layouts/app.blade.php delete mode 100644 Chapter16/onlineStore/resources/views/product/index.blade.php delete mode 100644 Chapter16/onlineStore/resources/views/product/show.blade.php delete mode 100644 Chapter16/onlineStore/resources/views/welcome.blade.php delete mode 100644 Chapter16/onlineStore/routes/api.php delete mode 100644 Chapter16/onlineStore/routes/channels.php delete mode 100644 Chapter16/onlineStore/routes/console.php delete mode 100644 Chapter16/onlineStore/routes/web.php delete mode 100644 Chapter16/onlineStore/storage/app/.gitignore delete mode 100644 Chapter16/onlineStore/storage/app/public/.gitignore delete mode 100644 Chapter16/onlineStore/storage/framework/.gitignore delete mode 100644 Chapter16/onlineStore/storage/framework/cache/.gitignore delete mode 100644 Chapter16/onlineStore/storage/framework/cache/data/.gitignore delete mode 100644 Chapter16/onlineStore/storage/framework/sessions/.gitignore delete mode 100644 Chapter16/onlineStore/storage/framework/testing/.gitignore delete mode 100644 Chapter16/onlineStore/storage/framework/views/.gitignore delete mode 100644 Chapter16/onlineStore/storage/logs/.gitignore delete mode 100644 Chapter16/onlineStore/tests/CreatesApplication.php delete mode 100644 Chapter16/onlineStore/tests/Feature/ExampleTest.php delete mode 100644 Chapter16/onlineStore/tests/TestCase.php delete mode 100644 Chapter16/onlineStore/tests/Unit/ExampleTest.php delete mode 100644 Chapter16/onlineStore/webpack.mix.js delete mode 100644 Chapter17-Advanced/onlineStore/.editorconfig delete mode 100644 Chapter17-Advanced/onlineStore/.env.example delete mode 100644 Chapter17-Advanced/onlineStore/.gitattributes delete mode 100644 Chapter17-Advanced/onlineStore/.gitignore delete mode 100644 Chapter17-Advanced/onlineStore/.styleci.yml delete mode 100644 Chapter17-Advanced/onlineStore/README.md delete mode 100644 Chapter17-Advanced/onlineStore/app/Console/Kernel.php delete mode 100644 Chapter17-Advanced/onlineStore/app/Exceptions/Handler.php delete mode 100644 Chapter17-Advanced/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php delete mode 100644 Chapter17-Advanced/onlineStore/app/Http/Controllers/Admin/AdminProductController.php delete mode 100644 Chapter17-Advanced/onlineStore/app/Http/Controllers/Controller.php delete mode 100644 Chapter17-Advanced/onlineStore/app/Http/Controllers/HomeController.php delete mode 100644 Chapter17-Advanced/onlineStore/app/Http/Controllers/ProductController.php delete mode 100644 Chapter17-Advanced/onlineStore/app/Http/Kernel.php delete mode 100644 Chapter17-Advanced/onlineStore/app/Http/Middleware/Authenticate.php delete mode 100644 Chapter17-Advanced/onlineStore/app/Http/Middleware/EncryptCookies.php delete mode 100644 Chapter17-Advanced/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php delete mode 100644 Chapter17-Advanced/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php delete mode 100644 Chapter17-Advanced/onlineStore/app/Http/Middleware/TrimStrings.php delete mode 100644 Chapter17-Advanced/onlineStore/app/Http/Middleware/TrustHosts.php delete mode 100644 Chapter17-Advanced/onlineStore/app/Http/Middleware/TrustProxies.php delete mode 100644 Chapter17-Advanced/onlineStore/app/Http/Middleware/VerifyCsrfToken.php delete mode 100644 Chapter17-Advanced/onlineStore/app/Models/Product.php delete mode 100644 Chapter17-Advanced/onlineStore/app/Models/User.php delete mode 100644 Chapter17-Advanced/onlineStore/app/Providers/AppServiceProvider.php delete mode 100644 Chapter17-Advanced/onlineStore/app/Providers/AuthServiceProvider.php delete mode 100644 Chapter17-Advanced/onlineStore/app/Providers/BroadcastServiceProvider.php delete mode 100644 Chapter17-Advanced/onlineStore/app/Providers/EventServiceProvider.php delete mode 100644 Chapter17-Advanced/onlineStore/app/Providers/RouteServiceProvider.php delete mode 100644 Chapter17-Advanced/onlineStore/app/Traits/HasClassicSetter.php delete mode 100644 Chapter17-Advanced/onlineStore/artisan delete mode 100644 Chapter17-Advanced/onlineStore/bootstrap/app.php delete mode 100644 Chapter17-Advanced/onlineStore/bootstrap/cache/.gitignore delete mode 100644 Chapter17-Advanced/onlineStore/composer.json delete mode 100644 Chapter17-Advanced/onlineStore/composer.lock delete mode 100644 Chapter17-Advanced/onlineStore/config/app.php delete mode 100644 Chapter17-Advanced/onlineStore/config/auth.php delete mode 100644 Chapter17-Advanced/onlineStore/config/broadcasting.php delete mode 100644 Chapter17-Advanced/onlineStore/config/cache.php delete mode 100644 Chapter17-Advanced/onlineStore/config/cors.php delete mode 100644 Chapter17-Advanced/onlineStore/config/database.php delete mode 100644 Chapter17-Advanced/onlineStore/config/filesystems.php delete mode 100644 Chapter17-Advanced/onlineStore/config/hashing.php delete mode 100644 Chapter17-Advanced/onlineStore/config/logging.php delete mode 100644 Chapter17-Advanced/onlineStore/config/mail.php delete mode 100644 Chapter17-Advanced/onlineStore/config/queue.php delete mode 100644 Chapter17-Advanced/onlineStore/config/sanctum.php delete mode 100644 Chapter17-Advanced/onlineStore/config/services.php delete mode 100644 Chapter17-Advanced/onlineStore/config/session.php delete mode 100644 Chapter17-Advanced/onlineStore/config/view.php delete mode 100644 Chapter17-Advanced/onlineStore/database/.gitignore delete mode 100644 Chapter17-Advanced/onlineStore/database/factories/UserFactory.php delete mode 100644 Chapter17-Advanced/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php delete mode 100644 Chapter17-Advanced/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php delete mode 100644 Chapter17-Advanced/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php delete mode 100644 Chapter17-Advanced/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php delete mode 100644 Chapter17-Advanced/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php delete mode 100644 Chapter17-Advanced/onlineStore/database/seeders/DatabaseSeeder.php delete mode 100644 Chapter17-Advanced/onlineStore/lang/en.json delete mode 100644 Chapter17-Advanced/onlineStore/lang/en/auth.php delete mode 100644 Chapter17-Advanced/onlineStore/lang/en/pagination.php delete mode 100644 Chapter17-Advanced/onlineStore/lang/en/passwords.php delete mode 100644 Chapter17-Advanced/onlineStore/lang/en/validation.php delete mode 100644 Chapter17-Advanced/onlineStore/package.json delete mode 100644 Chapter17-Advanced/onlineStore/phpcs.xml delete mode 100644 Chapter17-Advanced/onlineStore/phpunit.xml delete mode 100644 Chapter17-Advanced/onlineStore/public/.htaccess delete mode 100644 Chapter17-Advanced/onlineStore/public/css/admin.css delete mode 100644 Chapter17-Advanced/onlineStore/public/css/app.css delete mode 100644 Chapter17-Advanced/onlineStore/public/favicon.ico delete mode 100644 Chapter17-Advanced/onlineStore/public/img/game.png delete mode 100644 Chapter17-Advanced/onlineStore/public/img/safe.png delete mode 100644 Chapter17-Advanced/onlineStore/public/img/submarine.png delete mode 100644 Chapter17-Advanced/onlineStore/public/img/undraw_profile.svg delete mode 100644 Chapter17-Advanced/onlineStore/public/index.php delete mode 100644 Chapter17-Advanced/onlineStore/public/robots.txt delete mode 100644 Chapter17-Advanced/onlineStore/resources/css/app.css delete mode 100644 Chapter17-Advanced/onlineStore/resources/js/app.js delete mode 100644 Chapter17-Advanced/onlineStore/resources/js/bootstrap.js delete mode 100644 Chapter17-Advanced/onlineStore/resources/views/admin/home/index.blade.php delete mode 100644 Chapter17-Advanced/onlineStore/resources/views/admin/product/index.blade.php delete mode 100644 Chapter17-Advanced/onlineStore/resources/views/home/about.blade.php delete mode 100644 Chapter17-Advanced/onlineStore/resources/views/home/index.blade.php delete mode 100644 Chapter17-Advanced/onlineStore/resources/views/layouts/admin.blade.php delete mode 100644 Chapter17-Advanced/onlineStore/resources/views/layouts/app.blade.php delete mode 100644 Chapter17-Advanced/onlineStore/resources/views/product/index.blade.php delete mode 100644 Chapter17-Advanced/onlineStore/resources/views/product/show.blade.php delete mode 100644 Chapter17-Advanced/onlineStore/resources/views/welcome.blade.php delete mode 100644 Chapter17-Advanced/onlineStore/routes/api.php delete mode 100644 Chapter17-Advanced/onlineStore/routes/channels.php delete mode 100644 Chapter17-Advanced/onlineStore/routes/console.php delete mode 100644 Chapter17-Advanced/onlineStore/routes/web.php delete mode 100644 Chapter17-Advanced/onlineStore/storage/app/.gitignore delete mode 100644 Chapter17-Advanced/onlineStore/storage/app/public/.gitignore delete mode 100644 Chapter17-Advanced/onlineStore/storage/framework/.gitignore delete mode 100644 Chapter17-Advanced/onlineStore/storage/framework/cache/.gitignore delete mode 100644 Chapter17-Advanced/onlineStore/storage/framework/cache/data/.gitignore delete mode 100644 Chapter17-Advanced/onlineStore/storage/framework/sessions/.gitignore delete mode 100644 Chapter17-Advanced/onlineStore/storage/framework/testing/.gitignore delete mode 100644 Chapter17-Advanced/onlineStore/storage/framework/views/.gitignore delete mode 100644 Chapter17-Advanced/onlineStore/storage/logs/.gitignore delete mode 100644 Chapter17-Advanced/onlineStore/tests/CreatesApplication.php delete mode 100644 Chapter17-Advanced/onlineStore/tests/Feature/ExampleTest.php delete mode 100644 Chapter17-Advanced/onlineStore/tests/TestCase.php delete mode 100644 Chapter17-Advanced/onlineStore/tests/Unit/ExampleTest.php delete mode 100644 Chapter17-Advanced/onlineStore/webpack.mix.js delete mode 100644 Chapter17/onlineStore/.editorconfig delete mode 100644 Chapter17/onlineStore/.env.example delete mode 100644 Chapter17/onlineStore/.gitattributes delete mode 100644 Chapter17/onlineStore/.gitignore delete mode 100644 Chapter17/onlineStore/.styleci.yml delete mode 100644 Chapter17/onlineStore/README.md delete mode 100644 Chapter17/onlineStore/app/Console/Kernel.php delete mode 100644 Chapter17/onlineStore/app/Exceptions/Handler.php delete mode 100644 Chapter17/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php delete mode 100644 Chapter17/onlineStore/app/Http/Controllers/Admin/AdminProductController.php delete mode 100644 Chapter17/onlineStore/app/Http/Controllers/Controller.php delete mode 100644 Chapter17/onlineStore/app/Http/Controllers/HomeController.php delete mode 100644 Chapter17/onlineStore/app/Http/Controllers/ProductController.php delete mode 100644 Chapter17/onlineStore/app/Http/Kernel.php delete mode 100644 Chapter17/onlineStore/app/Http/Middleware/Authenticate.php delete mode 100644 Chapter17/onlineStore/app/Http/Middleware/EncryptCookies.php delete mode 100644 Chapter17/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php delete mode 100644 Chapter17/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php delete mode 100644 Chapter17/onlineStore/app/Http/Middleware/TrimStrings.php delete mode 100644 Chapter17/onlineStore/app/Http/Middleware/TrustHosts.php delete mode 100644 Chapter17/onlineStore/app/Http/Middleware/TrustProxies.php delete mode 100644 Chapter17/onlineStore/app/Http/Middleware/VerifyCsrfToken.php delete mode 100644 Chapter17/onlineStore/app/Models/Product.php delete mode 100644 Chapter17/onlineStore/app/Models/User.php delete mode 100644 Chapter17/onlineStore/app/Providers/AppServiceProvider.php delete mode 100644 Chapter17/onlineStore/app/Providers/AuthServiceProvider.php delete mode 100644 Chapter17/onlineStore/app/Providers/BroadcastServiceProvider.php delete mode 100644 Chapter17/onlineStore/app/Providers/EventServiceProvider.php delete mode 100644 Chapter17/onlineStore/app/Providers/RouteServiceProvider.php delete mode 100644 Chapter17/onlineStore/artisan delete mode 100644 Chapter17/onlineStore/bootstrap/app.php delete mode 100644 Chapter17/onlineStore/bootstrap/cache/.gitignore delete mode 100644 Chapter17/onlineStore/composer.json delete mode 100644 Chapter17/onlineStore/composer.lock delete mode 100644 Chapter17/onlineStore/config/app.php delete mode 100644 Chapter17/onlineStore/config/auth.php delete mode 100644 Chapter17/onlineStore/config/broadcasting.php delete mode 100644 Chapter17/onlineStore/config/cache.php delete mode 100644 Chapter17/onlineStore/config/cors.php delete mode 100644 Chapter17/onlineStore/config/database.php delete mode 100644 Chapter17/onlineStore/config/filesystems.php delete mode 100644 Chapter17/onlineStore/config/hashing.php delete mode 100644 Chapter17/onlineStore/config/logging.php delete mode 100644 Chapter17/onlineStore/config/mail.php delete mode 100644 Chapter17/onlineStore/config/queue.php delete mode 100644 Chapter17/onlineStore/config/sanctum.php delete mode 100644 Chapter17/onlineStore/config/services.php delete mode 100644 Chapter17/onlineStore/config/session.php delete mode 100644 Chapter17/onlineStore/config/view.php delete mode 100644 Chapter17/onlineStore/database/.gitignore delete mode 100644 Chapter17/onlineStore/database/factories/UserFactory.php delete mode 100644 Chapter17/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php delete mode 100644 Chapter17/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php delete mode 100644 Chapter17/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php delete mode 100644 Chapter17/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php delete mode 100644 Chapter17/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php delete mode 100644 Chapter17/onlineStore/database/seeders/DatabaseSeeder.php delete mode 100644 Chapter17/onlineStore/lang/en.json delete mode 100644 Chapter17/onlineStore/lang/en/auth.php delete mode 100644 Chapter17/onlineStore/lang/en/pagination.php delete mode 100644 Chapter17/onlineStore/lang/en/passwords.php delete mode 100644 Chapter17/onlineStore/lang/en/validation.php delete mode 100644 Chapter17/onlineStore/package.json delete mode 100644 Chapter17/onlineStore/phpcs.xml delete mode 100644 Chapter17/onlineStore/phpunit.xml delete mode 100644 Chapter17/onlineStore/public/.htaccess delete mode 100644 Chapter17/onlineStore/public/css/admin.css delete mode 100644 Chapter17/onlineStore/public/css/app.css delete mode 100644 Chapter17/onlineStore/public/favicon.ico delete mode 100644 Chapter17/onlineStore/public/img/game.png delete mode 100644 Chapter17/onlineStore/public/img/safe.png delete mode 100644 Chapter17/onlineStore/public/img/submarine.png delete mode 100644 Chapter17/onlineStore/public/img/undraw_profile.svg delete mode 100644 Chapter17/onlineStore/public/index.php delete mode 100644 Chapter17/onlineStore/public/robots.txt delete mode 100644 Chapter17/onlineStore/resources/css/app.css delete mode 100644 Chapter17/onlineStore/resources/js/app.js delete mode 100644 Chapter17/onlineStore/resources/js/bootstrap.js delete mode 100644 Chapter17/onlineStore/resources/views/admin/home/index.blade.php delete mode 100644 Chapter17/onlineStore/resources/views/admin/product/index.blade.php delete mode 100644 Chapter17/onlineStore/resources/views/home/about.blade.php delete mode 100644 Chapter17/onlineStore/resources/views/home/index.blade.php delete mode 100644 Chapter17/onlineStore/resources/views/layouts/admin.blade.php delete mode 100644 Chapter17/onlineStore/resources/views/layouts/app.blade.php delete mode 100644 Chapter17/onlineStore/resources/views/product/index.blade.php delete mode 100644 Chapter17/onlineStore/resources/views/product/show.blade.php delete mode 100644 Chapter17/onlineStore/resources/views/welcome.blade.php delete mode 100644 Chapter17/onlineStore/routes/api.php delete mode 100644 Chapter17/onlineStore/routes/channels.php delete mode 100644 Chapter17/onlineStore/routes/console.php delete mode 100644 Chapter17/onlineStore/routes/web.php delete mode 100644 Chapter17/onlineStore/storage/app/.gitignore delete mode 100644 Chapter17/onlineStore/storage/app/public/.gitignore delete mode 100644 Chapter17/onlineStore/storage/framework/.gitignore delete mode 100644 Chapter17/onlineStore/storage/framework/cache/.gitignore delete mode 100644 Chapter17/onlineStore/storage/framework/cache/data/.gitignore delete mode 100644 Chapter17/onlineStore/storage/framework/sessions/.gitignore delete mode 100644 Chapter17/onlineStore/storage/framework/testing/.gitignore delete mode 100644 Chapter17/onlineStore/storage/framework/views/.gitignore delete mode 100644 Chapter17/onlineStore/storage/logs/.gitignore delete mode 100644 Chapter17/onlineStore/tests/CreatesApplication.php delete mode 100644 Chapter17/onlineStore/tests/Feature/ExampleTest.php delete mode 100644 Chapter17/onlineStore/tests/TestCase.php delete mode 100644 Chapter17/onlineStore/tests/Unit/ExampleTest.php delete mode 100644 Chapter17/onlineStore/webpack.mix.js delete mode 100644 Chapter18/onlineStore/.editorconfig delete mode 100644 Chapter18/onlineStore/.env.example delete mode 100644 Chapter18/onlineStore/.gitattributes delete mode 100644 Chapter18/onlineStore/.gitignore delete mode 100644 Chapter18/onlineStore/.styleci.yml delete mode 100644 Chapter18/onlineStore/README.md delete mode 100644 Chapter18/onlineStore/app/Console/Kernel.php delete mode 100644 Chapter18/onlineStore/app/Exceptions/Handler.php delete mode 100644 Chapter18/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php delete mode 100644 Chapter18/onlineStore/app/Http/Controllers/Admin/AdminProductController.php delete mode 100644 Chapter18/onlineStore/app/Http/Controllers/Controller.php delete mode 100644 Chapter18/onlineStore/app/Http/Controllers/HomeController.php delete mode 100644 Chapter18/onlineStore/app/Http/Controllers/ProductController.php delete mode 100644 Chapter18/onlineStore/app/Http/Kernel.php delete mode 100644 Chapter18/onlineStore/app/Http/Middleware/Authenticate.php delete mode 100644 Chapter18/onlineStore/app/Http/Middleware/EncryptCookies.php delete mode 100644 Chapter18/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php delete mode 100644 Chapter18/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php delete mode 100644 Chapter18/onlineStore/app/Http/Middleware/TrimStrings.php delete mode 100644 Chapter18/onlineStore/app/Http/Middleware/TrustHosts.php delete mode 100644 Chapter18/onlineStore/app/Http/Middleware/TrustProxies.php delete mode 100644 Chapter18/onlineStore/app/Http/Middleware/VerifyCsrfToken.php delete mode 100644 Chapter18/onlineStore/app/Models/Product.php delete mode 100644 Chapter18/onlineStore/app/Models/User.php delete mode 100644 Chapter18/onlineStore/app/Providers/AppServiceProvider.php delete mode 100644 Chapter18/onlineStore/app/Providers/AuthServiceProvider.php delete mode 100644 Chapter18/onlineStore/app/Providers/BroadcastServiceProvider.php delete mode 100644 Chapter18/onlineStore/app/Providers/EventServiceProvider.php delete mode 100644 Chapter18/onlineStore/app/Providers/RouteServiceProvider.php delete mode 100644 Chapter18/onlineStore/artisan delete mode 100644 Chapter18/onlineStore/bootstrap/app.php delete mode 100644 Chapter18/onlineStore/bootstrap/cache/.gitignore delete mode 100644 Chapter18/onlineStore/composer.json delete mode 100644 Chapter18/onlineStore/composer.lock delete mode 100644 Chapter18/onlineStore/config/app.php delete mode 100644 Chapter18/onlineStore/config/auth.php delete mode 100644 Chapter18/onlineStore/config/broadcasting.php delete mode 100644 Chapter18/onlineStore/config/cache.php delete mode 100644 Chapter18/onlineStore/config/cors.php delete mode 100644 Chapter18/onlineStore/config/database.php delete mode 100644 Chapter18/onlineStore/config/filesystems.php delete mode 100644 Chapter18/onlineStore/config/hashing.php delete mode 100644 Chapter18/onlineStore/config/logging.php delete mode 100644 Chapter18/onlineStore/config/mail.php delete mode 100644 Chapter18/onlineStore/config/queue.php delete mode 100644 Chapter18/onlineStore/config/sanctum.php delete mode 100644 Chapter18/onlineStore/config/services.php delete mode 100644 Chapter18/onlineStore/config/session.php delete mode 100644 Chapter18/onlineStore/config/view.php delete mode 100644 Chapter18/onlineStore/database/.gitignore delete mode 100644 Chapter18/onlineStore/database/factories/UserFactory.php delete mode 100644 Chapter18/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php delete mode 100644 Chapter18/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php delete mode 100644 Chapter18/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php delete mode 100644 Chapter18/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php delete mode 100644 Chapter18/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php delete mode 100644 Chapter18/onlineStore/database/seeders/DatabaseSeeder.php delete mode 100644 Chapter18/onlineStore/lang/en.json delete mode 100644 Chapter18/onlineStore/lang/en/auth.php delete mode 100644 Chapter18/onlineStore/lang/en/pagination.php delete mode 100644 Chapter18/onlineStore/lang/en/passwords.php delete mode 100644 Chapter18/onlineStore/lang/en/validation.php delete mode 100644 Chapter18/onlineStore/package.json delete mode 100644 Chapter18/onlineStore/phpcs.xml delete mode 100644 Chapter18/onlineStore/phpunit.xml delete mode 100644 Chapter18/onlineStore/public/.htaccess delete mode 100644 Chapter18/onlineStore/public/css/admin.css delete mode 100644 Chapter18/onlineStore/public/css/app.css delete mode 100644 Chapter18/onlineStore/public/favicon.ico delete mode 100644 Chapter18/onlineStore/public/img/game.png delete mode 100644 Chapter18/onlineStore/public/img/safe.png delete mode 100644 Chapter18/onlineStore/public/img/submarine.png delete mode 100644 Chapter18/onlineStore/public/img/undraw_profile.svg delete mode 100644 Chapter18/onlineStore/public/index.php delete mode 100644 Chapter18/onlineStore/public/robots.txt delete mode 100644 Chapter18/onlineStore/resources/css/app.css delete mode 100644 Chapter18/onlineStore/resources/js/app.js delete mode 100644 Chapter18/onlineStore/resources/js/bootstrap.js delete mode 100644 Chapter18/onlineStore/resources/views/admin/home/index.blade.php delete mode 100644 Chapter18/onlineStore/resources/views/admin/product/index.blade.php delete mode 100644 Chapter18/onlineStore/resources/views/home/about.blade.php delete mode 100644 Chapter18/onlineStore/resources/views/home/index.blade.php delete mode 100644 Chapter18/onlineStore/resources/views/layouts/admin.blade.php delete mode 100644 Chapter18/onlineStore/resources/views/layouts/app.blade.php delete mode 100644 Chapter18/onlineStore/resources/views/product/index.blade.php delete mode 100644 Chapter18/onlineStore/resources/views/product/show.blade.php delete mode 100644 Chapter18/onlineStore/resources/views/welcome.blade.php delete mode 100644 Chapter18/onlineStore/routes/api.php delete mode 100644 Chapter18/onlineStore/routes/channels.php delete mode 100644 Chapter18/onlineStore/routes/console.php delete mode 100644 Chapter18/onlineStore/routes/web.php delete mode 100644 Chapter18/onlineStore/storage/app/.gitignore delete mode 100644 Chapter18/onlineStore/storage/app/public/.gitignore delete mode 100644 Chapter18/onlineStore/storage/framework/.gitignore delete mode 100644 Chapter18/onlineStore/storage/framework/cache/.gitignore delete mode 100644 Chapter18/onlineStore/storage/framework/cache/data/.gitignore delete mode 100644 Chapter18/onlineStore/storage/framework/sessions/.gitignore delete mode 100644 Chapter18/onlineStore/storage/framework/testing/.gitignore delete mode 100644 Chapter18/onlineStore/storage/framework/views/.gitignore delete mode 100644 Chapter18/onlineStore/storage/logs/.gitignore delete mode 100644 Chapter18/onlineStore/tests/CreatesApplication.php delete mode 100644 Chapter18/onlineStore/tests/Feature/ExampleTest.php delete mode 100644 Chapter18/onlineStore/tests/TestCase.php delete mode 100644 Chapter18/onlineStore/tests/Unit/ExampleTest.php delete mode 100644 Chapter18/onlineStore/webpack.mix.js delete mode 100644 Chapter19/onlineStore/.editorconfig delete mode 100644 Chapter19/onlineStore/.env.example delete mode 100644 Chapter19/onlineStore/.gitattributes delete mode 100644 Chapter19/onlineStore/.gitignore delete mode 100644 Chapter19/onlineStore/.styleci.yml delete mode 100644 Chapter19/onlineStore/README.md delete mode 100644 Chapter19/onlineStore/app/Console/Kernel.php delete mode 100644 Chapter19/onlineStore/app/Exceptions/Handler.php delete mode 100644 Chapter19/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php delete mode 100644 Chapter19/onlineStore/app/Http/Controllers/Admin/AdminProductController.php delete mode 100644 Chapter19/onlineStore/app/Http/Controllers/Controller.php delete mode 100644 Chapter19/onlineStore/app/Http/Controllers/HomeController.php delete mode 100644 Chapter19/onlineStore/app/Http/Controllers/ProductController.php delete mode 100644 Chapter19/onlineStore/app/Http/Kernel.php delete mode 100644 Chapter19/onlineStore/app/Http/Middleware/Authenticate.php delete mode 100644 Chapter19/onlineStore/app/Http/Middleware/EncryptCookies.php delete mode 100644 Chapter19/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php delete mode 100644 Chapter19/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php delete mode 100644 Chapter19/onlineStore/app/Http/Middleware/TrimStrings.php delete mode 100644 Chapter19/onlineStore/app/Http/Middleware/TrustHosts.php delete mode 100644 Chapter19/onlineStore/app/Http/Middleware/TrustProxies.php delete mode 100644 Chapter19/onlineStore/app/Http/Middleware/VerifyCsrfToken.php delete mode 100644 Chapter19/onlineStore/app/Models/Product.php delete mode 100644 Chapter19/onlineStore/app/Models/User.php delete mode 100644 Chapter19/onlineStore/app/Providers/AppServiceProvider.php delete mode 100644 Chapter19/onlineStore/app/Providers/AuthServiceProvider.php delete mode 100644 Chapter19/onlineStore/app/Providers/BroadcastServiceProvider.php delete mode 100644 Chapter19/onlineStore/app/Providers/EventServiceProvider.php delete mode 100644 Chapter19/onlineStore/app/Providers/RouteServiceProvider.php delete mode 100644 Chapter19/onlineStore/artisan delete mode 100644 Chapter19/onlineStore/bootstrap/app.php delete mode 100644 Chapter19/onlineStore/bootstrap/cache/.gitignore delete mode 100644 Chapter19/onlineStore/composer.json delete mode 100644 Chapter19/onlineStore/composer.lock delete mode 100644 Chapter19/onlineStore/config/app.php delete mode 100644 Chapter19/onlineStore/config/auth.php delete mode 100644 Chapter19/onlineStore/config/broadcasting.php delete mode 100644 Chapter19/onlineStore/config/cache.php delete mode 100644 Chapter19/onlineStore/config/cors.php delete mode 100644 Chapter19/onlineStore/config/database.php delete mode 100644 Chapter19/onlineStore/config/filesystems.php delete mode 100644 Chapter19/onlineStore/config/hashing.php delete mode 100644 Chapter19/onlineStore/config/logging.php delete mode 100644 Chapter19/onlineStore/config/mail.php delete mode 100644 Chapter19/onlineStore/config/queue.php delete mode 100644 Chapter19/onlineStore/config/sanctum.php delete mode 100644 Chapter19/onlineStore/config/services.php delete mode 100644 Chapter19/onlineStore/config/session.php delete mode 100644 Chapter19/onlineStore/config/view.php delete mode 100644 Chapter19/onlineStore/database/.gitignore delete mode 100644 Chapter19/onlineStore/database/factories/UserFactory.php delete mode 100644 Chapter19/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php delete mode 100644 Chapter19/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php delete mode 100644 Chapter19/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php delete mode 100644 Chapter19/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php delete mode 100644 Chapter19/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php delete mode 100644 Chapter19/onlineStore/database/seeders/DatabaseSeeder.php delete mode 100644 Chapter19/onlineStore/lang/en.json delete mode 100644 Chapter19/onlineStore/lang/en/auth.php delete mode 100644 Chapter19/onlineStore/lang/en/pagination.php delete mode 100644 Chapter19/onlineStore/lang/en/passwords.php delete mode 100644 Chapter19/onlineStore/lang/en/validation.php delete mode 100644 Chapter19/onlineStore/package.json delete mode 100644 Chapter19/onlineStore/phpcs.xml delete mode 100644 Chapter19/onlineStore/phpunit.xml delete mode 100644 Chapter19/onlineStore/public/.htaccess delete mode 100644 Chapter19/onlineStore/public/css/admin.css delete mode 100644 Chapter19/onlineStore/public/css/app.css delete mode 100644 Chapter19/onlineStore/public/favicon.ico delete mode 100644 Chapter19/onlineStore/public/img/game.png delete mode 100644 Chapter19/onlineStore/public/img/safe.png delete mode 100644 Chapter19/onlineStore/public/img/submarine.png delete mode 100644 Chapter19/onlineStore/public/img/undraw_profile.svg delete mode 100644 Chapter19/onlineStore/public/index.php delete mode 100644 Chapter19/onlineStore/public/robots.txt delete mode 100644 Chapter19/onlineStore/resources/css/app.css delete mode 100644 Chapter19/onlineStore/resources/js/app.js delete mode 100644 Chapter19/onlineStore/resources/js/bootstrap.js delete mode 100644 Chapter19/onlineStore/resources/views/admin/home/index.blade.php delete mode 100644 Chapter19/onlineStore/resources/views/admin/product/edit.blade.php delete mode 100644 Chapter19/onlineStore/resources/views/admin/product/index.blade.php delete mode 100644 Chapter19/onlineStore/resources/views/home/about.blade.php delete mode 100644 Chapter19/onlineStore/resources/views/home/index.blade.php delete mode 100644 Chapter19/onlineStore/resources/views/layouts/admin.blade.php delete mode 100644 Chapter19/onlineStore/resources/views/layouts/app.blade.php delete mode 100644 Chapter19/onlineStore/resources/views/product/index.blade.php delete mode 100644 Chapter19/onlineStore/resources/views/product/show.blade.php delete mode 100644 Chapter19/onlineStore/resources/views/welcome.blade.php delete mode 100644 Chapter19/onlineStore/routes/api.php delete mode 100644 Chapter19/onlineStore/routes/channels.php delete mode 100644 Chapter19/onlineStore/routes/console.php delete mode 100644 Chapter19/onlineStore/routes/web.php delete mode 100644 Chapter19/onlineStore/storage/app/.gitignore delete mode 100644 Chapter19/onlineStore/storage/app/public/.gitignore delete mode 100644 Chapter19/onlineStore/storage/framework/.gitignore delete mode 100644 Chapter19/onlineStore/storage/framework/cache/.gitignore delete mode 100644 Chapter19/onlineStore/storage/framework/cache/data/.gitignore delete mode 100644 Chapter19/onlineStore/storage/framework/sessions/.gitignore delete mode 100644 Chapter19/onlineStore/storage/framework/testing/.gitignore delete mode 100644 Chapter19/onlineStore/storage/framework/views/.gitignore delete mode 100644 Chapter19/onlineStore/storage/logs/.gitignore delete mode 100644 Chapter19/onlineStore/tests/CreatesApplication.php delete mode 100644 Chapter19/onlineStore/tests/Feature/ExampleTest.php delete mode 100644 Chapter19/onlineStore/tests/TestCase.php delete mode 100644 Chapter19/onlineStore/tests/Unit/ExampleTest.php delete mode 100644 Chapter19/onlineStore/webpack.mix.js delete mode 100644 Chapter20/onlineStore/.editorconfig delete mode 100644 Chapter20/onlineStore/.env.example delete mode 100644 Chapter20/onlineStore/.gitattributes delete mode 100644 Chapter20/onlineStore/.gitignore delete mode 100644 Chapter20/onlineStore/.styleci.yml delete mode 100644 Chapter20/onlineStore/README.md delete mode 100644 Chapter20/onlineStore/app/Console/Kernel.php delete mode 100644 Chapter20/onlineStore/app/Exceptions/Handler.php delete mode 100644 Chapter20/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php delete mode 100644 Chapter20/onlineStore/app/Http/Controllers/Admin/AdminProductController.php delete mode 100644 Chapter20/onlineStore/app/Http/Controllers/Controller.php delete mode 100644 Chapter20/onlineStore/app/Http/Controllers/HomeController.php delete mode 100644 Chapter20/onlineStore/app/Http/Controllers/ProductController.php delete mode 100644 Chapter20/onlineStore/app/Http/Kernel.php delete mode 100644 Chapter20/onlineStore/app/Http/Middleware/Authenticate.php delete mode 100644 Chapter20/onlineStore/app/Http/Middleware/EncryptCookies.php delete mode 100644 Chapter20/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php delete mode 100644 Chapter20/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php delete mode 100644 Chapter20/onlineStore/app/Http/Middleware/TrimStrings.php delete mode 100644 Chapter20/onlineStore/app/Http/Middleware/TrustHosts.php delete mode 100644 Chapter20/onlineStore/app/Http/Middleware/TrustProxies.php delete mode 100644 Chapter20/onlineStore/app/Http/Middleware/VerifyCsrfToken.php delete mode 100644 Chapter20/onlineStore/app/Models/Product.php delete mode 100644 Chapter20/onlineStore/app/Models/User.php delete mode 100644 Chapter20/onlineStore/app/Providers/AppServiceProvider.php delete mode 100644 Chapter20/onlineStore/app/Providers/AuthServiceProvider.php delete mode 100644 Chapter20/onlineStore/app/Providers/BroadcastServiceProvider.php delete mode 100644 Chapter20/onlineStore/app/Providers/EventServiceProvider.php delete mode 100644 Chapter20/onlineStore/app/Providers/RouteServiceProvider.php delete mode 100644 Chapter20/onlineStore/artisan delete mode 100644 Chapter20/onlineStore/bootstrap/app.php delete mode 100644 Chapter20/onlineStore/bootstrap/cache/.gitignore delete mode 100644 Chapter20/onlineStore/composer.json delete mode 100644 Chapter20/onlineStore/composer.lock delete mode 100644 Chapter20/onlineStore/config/app.php delete mode 100644 Chapter20/onlineStore/config/auth.php delete mode 100644 Chapter20/onlineStore/config/broadcasting.php delete mode 100644 Chapter20/onlineStore/config/cache.php delete mode 100644 Chapter20/onlineStore/config/cors.php delete mode 100644 Chapter20/onlineStore/config/database.php delete mode 100644 Chapter20/onlineStore/config/filesystems.php delete mode 100644 Chapter20/onlineStore/config/hashing.php delete mode 100644 Chapter20/onlineStore/config/logging.php delete mode 100644 Chapter20/onlineStore/config/mail.php delete mode 100644 Chapter20/onlineStore/config/queue.php delete mode 100644 Chapter20/onlineStore/config/sanctum.php delete mode 100644 Chapter20/onlineStore/config/services.php delete mode 100644 Chapter20/onlineStore/config/session.php delete mode 100644 Chapter20/onlineStore/config/view.php delete mode 100644 Chapter20/onlineStore/database/.gitignore delete mode 100644 Chapter20/onlineStore/database/factories/UserFactory.php delete mode 100644 Chapter20/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php delete mode 100644 Chapter20/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php delete mode 100644 Chapter20/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php delete mode 100644 Chapter20/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php delete mode 100644 Chapter20/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php delete mode 100644 Chapter20/onlineStore/database/seeders/DatabaseSeeder.php delete mode 100644 Chapter20/onlineStore/lang/en.json delete mode 100644 Chapter20/onlineStore/lang/en/auth.php delete mode 100644 Chapter20/onlineStore/lang/en/pagination.php delete mode 100644 Chapter20/onlineStore/lang/en/passwords.php delete mode 100644 Chapter20/onlineStore/lang/en/validation.php delete mode 100644 Chapter20/onlineStore/package.json delete mode 100644 Chapter20/onlineStore/phpcs.xml delete mode 100644 Chapter20/onlineStore/phpunit.xml delete mode 100644 Chapter20/onlineStore/public/.htaccess delete mode 100644 Chapter20/onlineStore/public/css/admin.css delete mode 100644 Chapter20/onlineStore/public/css/app.css delete mode 100644 Chapter20/onlineStore/public/favicon.ico delete mode 100644 Chapter20/onlineStore/public/img/game.png delete mode 100644 Chapter20/onlineStore/public/img/safe.png delete mode 100644 Chapter20/onlineStore/public/img/submarine.png delete mode 100644 Chapter20/onlineStore/public/img/undraw_profile.svg delete mode 100644 Chapter20/onlineStore/public/index.php delete mode 100644 Chapter20/onlineStore/public/robots.txt delete mode 100644 Chapter20/onlineStore/resources/css/app.css delete mode 100644 Chapter20/onlineStore/resources/js/app.js delete mode 100644 Chapter20/onlineStore/resources/js/bootstrap.js delete mode 100644 Chapter20/onlineStore/resources/views/admin/home/index.blade.php delete mode 100644 Chapter20/onlineStore/resources/views/admin/product/edit.blade.php delete mode 100644 Chapter20/onlineStore/resources/views/admin/product/index.blade.php delete mode 100644 Chapter20/onlineStore/resources/views/home/about.blade.php delete mode 100644 Chapter20/onlineStore/resources/views/home/index.blade.php delete mode 100644 Chapter20/onlineStore/resources/views/layouts/admin.blade.php delete mode 100644 Chapter20/onlineStore/resources/views/layouts/app.blade.php delete mode 100644 Chapter20/onlineStore/resources/views/product/index.blade.php delete mode 100644 Chapter20/onlineStore/resources/views/product/show.blade.php delete mode 100644 Chapter20/onlineStore/resources/views/welcome.blade.php delete mode 100644 Chapter20/onlineStore/routes/api.php delete mode 100644 Chapter20/onlineStore/routes/channels.php delete mode 100644 Chapter20/onlineStore/routes/console.php delete mode 100644 Chapter20/onlineStore/routes/web.php delete mode 100644 Chapter20/onlineStore/storage/app/.gitignore delete mode 100644 Chapter20/onlineStore/storage/app/public/.gitignore delete mode 100644 Chapter20/onlineStore/storage/framework/.gitignore delete mode 100644 Chapter20/onlineStore/storage/framework/cache/.gitignore delete mode 100644 Chapter20/onlineStore/storage/framework/cache/data/.gitignore delete mode 100644 Chapter20/onlineStore/storage/framework/sessions/.gitignore delete mode 100644 Chapter20/onlineStore/storage/framework/testing/.gitignore delete mode 100644 Chapter20/onlineStore/storage/framework/views/.gitignore delete mode 100644 Chapter20/onlineStore/storage/logs/.gitignore delete mode 100644 Chapter20/onlineStore/tests/CreatesApplication.php delete mode 100644 Chapter20/onlineStore/tests/Feature/ExampleTest.php delete mode 100644 Chapter20/onlineStore/tests/TestCase.php delete mode 100644 Chapter20/onlineStore/tests/Unit/ExampleTest.php delete mode 100644 Chapter20/onlineStore/webpack.mix.js delete mode 100644 Chapter21/onlineStore/.editorconfig delete mode 100644 Chapter21/onlineStore/.env.example delete mode 100644 Chapter21/onlineStore/.gitattributes delete mode 100644 Chapter21/onlineStore/.gitignore delete mode 100644 Chapter21/onlineStore/.styleci.yml delete mode 100644 Chapter21/onlineStore/README.md delete mode 100644 Chapter21/onlineStore/app/Console/Kernel.php delete mode 100644 Chapter21/onlineStore/app/Exceptions/Handler.php delete mode 100644 Chapter21/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php delete mode 100644 Chapter21/onlineStore/app/Http/Controllers/Admin/AdminProductController.php delete mode 100644 Chapter21/onlineStore/app/Http/Controllers/Auth/ConfirmPasswordController.php delete mode 100644 Chapter21/onlineStore/app/Http/Controllers/Auth/ForgotPasswordController.php delete mode 100644 Chapter21/onlineStore/app/Http/Controllers/Auth/LoginController.php delete mode 100644 Chapter21/onlineStore/app/Http/Controllers/Auth/RegisterController.php delete mode 100644 Chapter21/onlineStore/app/Http/Controllers/Auth/ResetPasswordController.php delete mode 100644 Chapter21/onlineStore/app/Http/Controllers/Auth/VerificationController.php delete mode 100644 Chapter21/onlineStore/app/Http/Controllers/Controller.php delete mode 100644 Chapter21/onlineStore/app/Http/Controllers/HomeController.php delete mode 100644 Chapter21/onlineStore/app/Http/Controllers/ProductController.php delete mode 100644 Chapter21/onlineStore/app/Http/Kernel.php delete mode 100644 Chapter21/onlineStore/app/Http/Middleware/Authenticate.php delete mode 100644 Chapter21/onlineStore/app/Http/Middleware/EncryptCookies.php delete mode 100644 Chapter21/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php delete mode 100644 Chapter21/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php delete mode 100644 Chapter21/onlineStore/app/Http/Middleware/TrimStrings.php delete mode 100644 Chapter21/onlineStore/app/Http/Middleware/TrustHosts.php delete mode 100644 Chapter21/onlineStore/app/Http/Middleware/TrustProxies.php delete mode 100644 Chapter21/onlineStore/app/Http/Middleware/VerifyCsrfToken.php delete mode 100644 Chapter21/onlineStore/app/Models/Product.php delete mode 100644 Chapter21/onlineStore/app/Models/User.php delete mode 100644 Chapter21/onlineStore/app/Providers/AppServiceProvider.php delete mode 100644 Chapter21/onlineStore/app/Providers/AuthServiceProvider.php delete mode 100644 Chapter21/onlineStore/app/Providers/BroadcastServiceProvider.php delete mode 100644 Chapter21/onlineStore/app/Providers/EventServiceProvider.php delete mode 100644 Chapter21/onlineStore/app/Providers/RouteServiceProvider.php delete mode 100644 Chapter21/onlineStore/artisan delete mode 100644 Chapter21/onlineStore/bootstrap/app.php delete mode 100644 Chapter21/onlineStore/bootstrap/cache/.gitignore delete mode 100644 Chapter21/onlineStore/composer.json delete mode 100644 Chapter21/onlineStore/composer.lock delete mode 100644 Chapter21/onlineStore/config/app.php delete mode 100644 Chapter21/onlineStore/config/auth.php delete mode 100644 Chapter21/onlineStore/config/broadcasting.php delete mode 100644 Chapter21/onlineStore/config/cache.php delete mode 100644 Chapter21/onlineStore/config/cors.php delete mode 100644 Chapter21/onlineStore/config/database.php delete mode 100644 Chapter21/onlineStore/config/filesystems.php delete mode 100644 Chapter21/onlineStore/config/hashing.php delete mode 100644 Chapter21/onlineStore/config/logging.php delete mode 100644 Chapter21/onlineStore/config/mail.php delete mode 100644 Chapter21/onlineStore/config/queue.php delete mode 100644 Chapter21/onlineStore/config/sanctum.php delete mode 100644 Chapter21/onlineStore/config/services.php delete mode 100644 Chapter21/onlineStore/config/session.php delete mode 100644 Chapter21/onlineStore/config/view.php delete mode 100644 Chapter21/onlineStore/database/.gitignore delete mode 100644 Chapter21/onlineStore/database/factories/UserFactory.php delete mode 100644 Chapter21/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php delete mode 100644 Chapter21/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php delete mode 100644 Chapter21/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php delete mode 100644 Chapter21/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php delete mode 100644 Chapter21/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php delete mode 100644 Chapter21/onlineStore/database/seeders/DatabaseSeeder.php delete mode 100644 Chapter21/onlineStore/lang/en.json delete mode 100644 Chapter21/onlineStore/lang/en/auth.php delete mode 100644 Chapter21/onlineStore/lang/en/pagination.php delete mode 100644 Chapter21/onlineStore/lang/en/passwords.php delete mode 100644 Chapter21/onlineStore/lang/en/validation.php delete mode 100644 Chapter21/onlineStore/package.json delete mode 100644 Chapter21/onlineStore/phpcs.xml delete mode 100644 Chapter21/onlineStore/phpunit.xml delete mode 100644 Chapter21/onlineStore/public/.htaccess delete mode 100644 Chapter21/onlineStore/public/css/admin.css delete mode 100644 Chapter21/onlineStore/public/css/app.css delete mode 100644 Chapter21/onlineStore/public/favicon.ico delete mode 100644 Chapter21/onlineStore/public/img/game.png delete mode 100644 Chapter21/onlineStore/public/img/safe.png delete mode 100644 Chapter21/onlineStore/public/img/submarine.png delete mode 100644 Chapter21/onlineStore/public/img/undraw_profile.svg delete mode 100644 Chapter21/onlineStore/public/index.php delete mode 100644 Chapter21/onlineStore/public/robots.txt delete mode 100644 Chapter21/onlineStore/resources/css/app.css delete mode 100644 Chapter21/onlineStore/resources/js/app.js delete mode 100644 Chapter21/onlineStore/resources/js/bootstrap.js delete mode 100644 Chapter21/onlineStore/resources/sass/_variables.scss delete mode 100644 Chapter21/onlineStore/resources/sass/app.scss delete mode 100644 Chapter21/onlineStore/resources/views/admin/home/index.blade.php delete mode 100644 Chapter21/onlineStore/resources/views/admin/product/edit.blade.php delete mode 100644 Chapter21/onlineStore/resources/views/admin/product/index.blade.php delete mode 100644 Chapter21/onlineStore/resources/views/auth/login.blade.php delete mode 100644 Chapter21/onlineStore/resources/views/auth/passwords/confirm.blade.php delete mode 100644 Chapter21/onlineStore/resources/views/auth/passwords/email.blade.php delete mode 100644 Chapter21/onlineStore/resources/views/auth/passwords/reset.blade.php delete mode 100644 Chapter21/onlineStore/resources/views/auth/register.blade.php delete mode 100644 Chapter21/onlineStore/resources/views/auth/verify.blade.php delete mode 100644 Chapter21/onlineStore/resources/views/home.blade.php delete mode 100644 Chapter21/onlineStore/resources/views/home/about.blade.php delete mode 100644 Chapter21/onlineStore/resources/views/home/index.blade.php delete mode 100644 Chapter21/onlineStore/resources/views/layouts/admin.blade.php delete mode 100644 Chapter21/onlineStore/resources/views/layouts/app.blade.php delete mode 100644 Chapter21/onlineStore/resources/views/product/index.blade.php delete mode 100644 Chapter21/onlineStore/resources/views/product/show.blade.php delete mode 100644 Chapter21/onlineStore/resources/views/welcome.blade.php delete mode 100644 Chapter21/onlineStore/routes/api.php delete mode 100644 Chapter21/onlineStore/routes/channels.php delete mode 100644 Chapter21/onlineStore/routes/console.php delete mode 100644 Chapter21/onlineStore/routes/web.php delete mode 100644 Chapter21/onlineStore/storage/app/.gitignore delete mode 100644 Chapter21/onlineStore/storage/app/public/.gitignore delete mode 100644 Chapter21/onlineStore/storage/framework/.gitignore delete mode 100644 Chapter21/onlineStore/storage/framework/cache/.gitignore delete mode 100644 Chapter21/onlineStore/storage/framework/cache/data/.gitignore delete mode 100644 Chapter21/onlineStore/storage/framework/sessions/.gitignore delete mode 100644 Chapter21/onlineStore/storage/framework/testing/.gitignore delete mode 100644 Chapter21/onlineStore/storage/framework/views/.gitignore delete mode 100644 Chapter21/onlineStore/storage/logs/.gitignore delete mode 100644 Chapter21/onlineStore/tests/CreatesApplication.php delete mode 100644 Chapter21/onlineStore/tests/Feature/ExampleTest.php delete mode 100644 Chapter21/onlineStore/tests/TestCase.php delete mode 100644 Chapter21/onlineStore/tests/Unit/ExampleTest.php delete mode 100644 Chapter21/onlineStore/webpack.mix.js delete mode 100644 Chapter22/onlineStore/.editorconfig delete mode 100644 Chapter22/onlineStore/.env.example delete mode 100644 Chapter22/onlineStore/.gitattributes delete mode 100644 Chapter22/onlineStore/.gitignore delete mode 100644 Chapter22/onlineStore/.styleci.yml delete mode 100644 Chapter22/onlineStore/README.md delete mode 100644 Chapter22/onlineStore/app/Console/Kernel.php delete mode 100644 Chapter22/onlineStore/app/Exceptions/Handler.php delete mode 100644 Chapter22/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php delete mode 100644 Chapter22/onlineStore/app/Http/Controllers/Admin/AdminProductController.php delete mode 100644 Chapter22/onlineStore/app/Http/Controllers/Auth/ConfirmPasswordController.php delete mode 100644 Chapter22/onlineStore/app/Http/Controllers/Auth/ForgotPasswordController.php delete mode 100644 Chapter22/onlineStore/app/Http/Controllers/Auth/LoginController.php delete mode 100644 Chapter22/onlineStore/app/Http/Controllers/Auth/RegisterController.php delete mode 100644 Chapter22/onlineStore/app/Http/Controllers/Auth/ResetPasswordController.php delete mode 100644 Chapter22/onlineStore/app/Http/Controllers/Auth/VerificationController.php delete mode 100644 Chapter22/onlineStore/app/Http/Controllers/Controller.php delete mode 100644 Chapter22/onlineStore/app/Http/Controllers/HomeController.php delete mode 100644 Chapter22/onlineStore/app/Http/Controllers/ProductController.php delete mode 100644 Chapter22/onlineStore/app/Http/Kernel.php delete mode 100644 Chapter22/onlineStore/app/Http/Middleware/Authenticate.php delete mode 100644 Chapter22/onlineStore/app/Http/Middleware/EncryptCookies.php delete mode 100644 Chapter22/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php delete mode 100644 Chapter22/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php delete mode 100644 Chapter22/onlineStore/app/Http/Middleware/TrimStrings.php delete mode 100644 Chapter22/onlineStore/app/Http/Middleware/TrustHosts.php delete mode 100644 Chapter22/onlineStore/app/Http/Middleware/TrustProxies.php delete mode 100644 Chapter22/onlineStore/app/Http/Middleware/VerifyCsrfToken.php delete mode 100644 Chapter22/onlineStore/app/Models/Product.php delete mode 100644 Chapter22/onlineStore/app/Models/User.php delete mode 100644 Chapter22/onlineStore/app/Providers/AppServiceProvider.php delete mode 100644 Chapter22/onlineStore/app/Providers/AuthServiceProvider.php delete mode 100644 Chapter22/onlineStore/app/Providers/BroadcastServiceProvider.php delete mode 100644 Chapter22/onlineStore/app/Providers/EventServiceProvider.php delete mode 100644 Chapter22/onlineStore/app/Providers/RouteServiceProvider.php delete mode 100644 Chapter22/onlineStore/artisan delete mode 100644 Chapter22/onlineStore/bootstrap/app.php delete mode 100644 Chapter22/onlineStore/bootstrap/cache/.gitignore delete mode 100644 Chapter22/onlineStore/composer.json delete mode 100644 Chapter22/onlineStore/composer.lock delete mode 100644 Chapter22/onlineStore/config/app.php delete mode 100644 Chapter22/onlineStore/config/auth.php delete mode 100644 Chapter22/onlineStore/config/broadcasting.php delete mode 100644 Chapter22/onlineStore/config/cache.php delete mode 100644 Chapter22/onlineStore/config/cors.php delete mode 100644 Chapter22/onlineStore/config/database.php delete mode 100644 Chapter22/onlineStore/config/filesystems.php delete mode 100644 Chapter22/onlineStore/config/hashing.php delete mode 100644 Chapter22/onlineStore/config/logging.php delete mode 100644 Chapter22/onlineStore/config/mail.php delete mode 100644 Chapter22/onlineStore/config/queue.php delete mode 100644 Chapter22/onlineStore/config/sanctum.php delete mode 100644 Chapter22/onlineStore/config/services.php delete mode 100644 Chapter22/onlineStore/config/session.php delete mode 100644 Chapter22/onlineStore/config/view.php delete mode 100644 Chapter22/onlineStore/database/.gitignore delete mode 100644 Chapter22/onlineStore/database/factories/UserFactory.php delete mode 100644 Chapter22/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php delete mode 100644 Chapter22/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php delete mode 100644 Chapter22/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php delete mode 100644 Chapter22/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php delete mode 100644 Chapter22/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php delete mode 100644 Chapter22/onlineStore/database/migrations/2022_02_12_140820_alter_users_table.php delete mode 100644 Chapter22/onlineStore/database/seeders/DatabaseSeeder.php delete mode 100644 Chapter22/onlineStore/lang/en.json delete mode 100644 Chapter22/onlineStore/lang/en/auth.php delete mode 100644 Chapter22/onlineStore/lang/en/pagination.php delete mode 100644 Chapter22/onlineStore/lang/en/passwords.php delete mode 100644 Chapter22/onlineStore/lang/en/validation.php delete mode 100644 Chapter22/onlineStore/package.json delete mode 100644 Chapter22/onlineStore/phpcs.xml delete mode 100644 Chapter22/onlineStore/phpunit.xml delete mode 100644 Chapter22/onlineStore/public/.htaccess delete mode 100644 Chapter22/onlineStore/public/css/admin.css delete mode 100644 Chapter22/onlineStore/public/css/app.css delete mode 100644 Chapter22/onlineStore/public/favicon.ico delete mode 100644 Chapter22/onlineStore/public/img/game.png delete mode 100644 Chapter22/onlineStore/public/img/safe.png delete mode 100644 Chapter22/onlineStore/public/img/submarine.png delete mode 100644 Chapter22/onlineStore/public/img/undraw_profile.svg delete mode 100644 Chapter22/onlineStore/public/index.php delete mode 100644 Chapter22/onlineStore/public/robots.txt delete mode 100644 Chapter22/onlineStore/resources/css/app.css delete mode 100644 Chapter22/onlineStore/resources/js/app.js delete mode 100644 Chapter22/onlineStore/resources/js/bootstrap.js delete mode 100644 Chapter22/onlineStore/resources/sass/_variables.scss delete mode 100644 Chapter22/onlineStore/resources/sass/app.scss delete mode 100644 Chapter22/onlineStore/resources/views/admin/home/index.blade.php delete mode 100644 Chapter22/onlineStore/resources/views/admin/product/edit.blade.php delete mode 100644 Chapter22/onlineStore/resources/views/admin/product/index.blade.php delete mode 100644 Chapter22/onlineStore/resources/views/auth/login.blade.php delete mode 100644 Chapter22/onlineStore/resources/views/auth/passwords/confirm.blade.php delete mode 100644 Chapter22/onlineStore/resources/views/auth/passwords/email.blade.php delete mode 100644 Chapter22/onlineStore/resources/views/auth/passwords/reset.blade.php delete mode 100644 Chapter22/onlineStore/resources/views/auth/register.blade.php delete mode 100644 Chapter22/onlineStore/resources/views/auth/verify.blade.php delete mode 100644 Chapter22/onlineStore/resources/views/home.blade.php delete mode 100644 Chapter22/onlineStore/resources/views/home/about.blade.php delete mode 100644 Chapter22/onlineStore/resources/views/home/index.blade.php delete mode 100644 Chapter22/onlineStore/resources/views/layouts/admin.blade.php delete mode 100644 Chapter22/onlineStore/resources/views/layouts/app.blade.php delete mode 100644 Chapter22/onlineStore/resources/views/product/index.blade.php delete mode 100644 Chapter22/onlineStore/resources/views/product/show.blade.php delete mode 100644 Chapter22/onlineStore/resources/views/welcome.blade.php delete mode 100644 Chapter22/onlineStore/routes/api.php delete mode 100644 Chapter22/onlineStore/routes/channels.php delete mode 100644 Chapter22/onlineStore/routes/console.php delete mode 100644 Chapter22/onlineStore/routes/web.php delete mode 100644 Chapter22/onlineStore/storage/app/.gitignore delete mode 100644 Chapter22/onlineStore/storage/app/public/.gitignore delete mode 100644 Chapter22/onlineStore/storage/framework/.gitignore delete mode 100644 Chapter22/onlineStore/storage/framework/cache/.gitignore delete mode 100644 Chapter22/onlineStore/storage/framework/cache/data/.gitignore delete mode 100644 Chapter22/onlineStore/storage/framework/sessions/.gitignore delete mode 100644 Chapter22/onlineStore/storage/framework/testing/.gitignore delete mode 100644 Chapter22/onlineStore/storage/framework/views/.gitignore delete mode 100644 Chapter22/onlineStore/storage/logs/.gitignore delete mode 100644 Chapter22/onlineStore/tests/CreatesApplication.php delete mode 100644 Chapter22/onlineStore/tests/Feature/ExampleTest.php delete mode 100644 Chapter22/onlineStore/tests/TestCase.php delete mode 100644 Chapter22/onlineStore/tests/Unit/ExampleTest.php delete mode 100644 Chapter22/onlineStore/webpack.mix.js delete mode 100644 Chapter23/onlineStore/.editorconfig delete mode 100644 Chapter23/onlineStore/.env.example delete mode 100644 Chapter23/onlineStore/.gitattributes delete mode 100644 Chapter23/onlineStore/.gitignore delete mode 100644 Chapter23/onlineStore/.styleci.yml delete mode 100644 Chapter23/onlineStore/README.md delete mode 100644 Chapter23/onlineStore/app/Console/Kernel.php delete mode 100644 Chapter23/onlineStore/app/Exceptions/Handler.php delete mode 100644 Chapter23/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php delete mode 100644 Chapter23/onlineStore/app/Http/Controllers/Admin/AdminProductController.php delete mode 100644 Chapter23/onlineStore/app/Http/Controllers/Auth/ConfirmPasswordController.php delete mode 100644 Chapter23/onlineStore/app/Http/Controllers/Auth/ForgotPasswordController.php delete mode 100644 Chapter23/onlineStore/app/Http/Controllers/Auth/LoginController.php delete mode 100644 Chapter23/onlineStore/app/Http/Controllers/Auth/RegisterController.php delete mode 100644 Chapter23/onlineStore/app/Http/Controllers/Auth/ResetPasswordController.php delete mode 100644 Chapter23/onlineStore/app/Http/Controllers/Auth/VerificationController.php delete mode 100644 Chapter23/onlineStore/app/Http/Controllers/Controller.php delete mode 100644 Chapter23/onlineStore/app/Http/Controllers/HomeController.php delete mode 100644 Chapter23/onlineStore/app/Http/Controllers/ProductController.php delete mode 100644 Chapter23/onlineStore/app/Http/Kernel.php delete mode 100644 Chapter23/onlineStore/app/Http/Middleware/AdminAuthMiddleware.php delete mode 100644 Chapter23/onlineStore/app/Http/Middleware/Authenticate.php delete mode 100644 Chapter23/onlineStore/app/Http/Middleware/EncryptCookies.php delete mode 100644 Chapter23/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php delete mode 100644 Chapter23/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php delete mode 100644 Chapter23/onlineStore/app/Http/Middleware/TrimStrings.php delete mode 100644 Chapter23/onlineStore/app/Http/Middleware/TrustHosts.php delete mode 100644 Chapter23/onlineStore/app/Http/Middleware/TrustProxies.php delete mode 100644 Chapter23/onlineStore/app/Http/Middleware/VerifyCsrfToken.php delete mode 100644 Chapter23/onlineStore/app/Models/Product.php delete mode 100644 Chapter23/onlineStore/app/Models/User.php delete mode 100644 Chapter23/onlineStore/app/Providers/AppServiceProvider.php delete mode 100644 Chapter23/onlineStore/app/Providers/AuthServiceProvider.php delete mode 100644 Chapter23/onlineStore/app/Providers/BroadcastServiceProvider.php delete mode 100644 Chapter23/onlineStore/app/Providers/EventServiceProvider.php delete mode 100644 Chapter23/onlineStore/app/Providers/RouteServiceProvider.php delete mode 100644 Chapter23/onlineStore/artisan delete mode 100644 Chapter23/onlineStore/bootstrap/app.php delete mode 100644 Chapter23/onlineStore/bootstrap/cache/.gitignore delete mode 100644 Chapter23/onlineStore/composer.json delete mode 100644 Chapter23/onlineStore/composer.lock delete mode 100644 Chapter23/onlineStore/config/app.php delete mode 100644 Chapter23/onlineStore/config/auth.php delete mode 100644 Chapter23/onlineStore/config/broadcasting.php delete mode 100644 Chapter23/onlineStore/config/cache.php delete mode 100644 Chapter23/onlineStore/config/cors.php delete mode 100644 Chapter23/onlineStore/config/database.php delete mode 100644 Chapter23/onlineStore/config/filesystems.php delete mode 100644 Chapter23/onlineStore/config/hashing.php delete mode 100644 Chapter23/onlineStore/config/logging.php delete mode 100644 Chapter23/onlineStore/config/mail.php delete mode 100644 Chapter23/onlineStore/config/queue.php delete mode 100644 Chapter23/onlineStore/config/sanctum.php delete mode 100644 Chapter23/onlineStore/config/services.php delete mode 100644 Chapter23/onlineStore/config/session.php delete mode 100644 Chapter23/onlineStore/config/view.php delete mode 100644 Chapter23/onlineStore/database/.gitignore delete mode 100644 Chapter23/onlineStore/database/factories/UserFactory.php delete mode 100644 Chapter23/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php delete mode 100644 Chapter23/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php delete mode 100644 Chapter23/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php delete mode 100644 Chapter23/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php delete mode 100644 Chapter23/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php delete mode 100644 Chapter23/onlineStore/database/migrations/2022_02_12_140820_alter_users_table.php delete mode 100644 Chapter23/onlineStore/database/seeders/DatabaseSeeder.php delete mode 100644 Chapter23/onlineStore/lang/en.json delete mode 100644 Chapter23/onlineStore/lang/en/auth.php delete mode 100644 Chapter23/onlineStore/lang/en/pagination.php delete mode 100644 Chapter23/onlineStore/lang/en/passwords.php delete mode 100644 Chapter23/onlineStore/lang/en/validation.php delete mode 100644 Chapter23/onlineStore/package.json delete mode 100644 Chapter23/onlineStore/phpcs.xml delete mode 100644 Chapter23/onlineStore/phpunit.xml delete mode 100644 Chapter23/onlineStore/public/.htaccess delete mode 100644 Chapter23/onlineStore/public/css/admin.css delete mode 100644 Chapter23/onlineStore/public/css/app.css delete mode 100644 Chapter23/onlineStore/public/favicon.ico delete mode 100644 Chapter23/onlineStore/public/img/game.png delete mode 100644 Chapter23/onlineStore/public/img/safe.png delete mode 100644 Chapter23/onlineStore/public/img/submarine.png delete mode 100644 Chapter23/onlineStore/public/img/undraw_profile.svg delete mode 100644 Chapter23/onlineStore/public/index.php delete mode 100644 Chapter23/onlineStore/public/robots.txt delete mode 100644 Chapter23/onlineStore/resources/css/app.css delete mode 100644 Chapter23/onlineStore/resources/js/app.js delete mode 100644 Chapter23/onlineStore/resources/js/bootstrap.js delete mode 100644 Chapter23/onlineStore/resources/sass/_variables.scss delete mode 100644 Chapter23/onlineStore/resources/sass/app.scss delete mode 100644 Chapter23/onlineStore/resources/views/admin/home/index.blade.php delete mode 100644 Chapter23/onlineStore/resources/views/admin/product/edit.blade.php delete mode 100644 Chapter23/onlineStore/resources/views/admin/product/index.blade.php delete mode 100644 Chapter23/onlineStore/resources/views/auth/login.blade.php delete mode 100644 Chapter23/onlineStore/resources/views/auth/passwords/confirm.blade.php delete mode 100644 Chapter23/onlineStore/resources/views/auth/passwords/email.blade.php delete mode 100644 Chapter23/onlineStore/resources/views/auth/passwords/reset.blade.php delete mode 100644 Chapter23/onlineStore/resources/views/auth/register.blade.php delete mode 100644 Chapter23/onlineStore/resources/views/auth/verify.blade.php delete mode 100644 Chapter23/onlineStore/resources/views/home.blade.php delete mode 100644 Chapter23/onlineStore/resources/views/home/about.blade.php delete mode 100644 Chapter23/onlineStore/resources/views/home/index.blade.php delete mode 100644 Chapter23/onlineStore/resources/views/layouts/admin.blade.php delete mode 100644 Chapter23/onlineStore/resources/views/layouts/app.blade.php delete mode 100644 Chapter23/onlineStore/resources/views/product/index.blade.php delete mode 100644 Chapter23/onlineStore/resources/views/product/show.blade.php delete mode 100644 Chapter23/onlineStore/resources/views/welcome.blade.php delete mode 100644 Chapter23/onlineStore/routes/api.php delete mode 100644 Chapter23/onlineStore/routes/channels.php delete mode 100644 Chapter23/onlineStore/routes/console.php delete mode 100644 Chapter23/onlineStore/routes/web.php delete mode 100644 Chapter23/onlineStore/storage/app/.gitignore delete mode 100644 Chapter23/onlineStore/storage/app/public/.gitignore delete mode 100644 Chapter23/onlineStore/storage/framework/.gitignore delete mode 100644 Chapter23/onlineStore/storage/framework/cache/.gitignore delete mode 100644 Chapter23/onlineStore/storage/framework/cache/data/.gitignore delete mode 100644 Chapter23/onlineStore/storage/framework/sessions/.gitignore delete mode 100644 Chapter23/onlineStore/storage/framework/testing/.gitignore delete mode 100644 Chapter23/onlineStore/storage/framework/views/.gitignore delete mode 100644 Chapter23/onlineStore/storage/logs/.gitignore delete mode 100644 Chapter23/onlineStore/tests/CreatesApplication.php delete mode 100644 Chapter23/onlineStore/tests/Feature/ExampleTest.php delete mode 100644 Chapter23/onlineStore/tests/TestCase.php delete mode 100644 Chapter23/onlineStore/tests/Unit/ExampleTest.php delete mode 100644 Chapter23/onlineStore/webpack.mix.js delete mode 100644 Chapter25/onlineStore/.editorconfig delete mode 100644 Chapter25/onlineStore/.env.example delete mode 100644 Chapter25/onlineStore/.gitattributes delete mode 100644 Chapter25/onlineStore/.gitignore delete mode 100644 Chapter25/onlineStore/.styleci.yml delete mode 100644 Chapter25/onlineStore/README.md delete mode 100644 Chapter25/onlineStore/app/Console/Kernel.php delete mode 100644 Chapter25/onlineStore/app/Exceptions/Handler.php delete mode 100644 Chapter25/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php delete mode 100644 Chapter25/onlineStore/app/Http/Controllers/Admin/AdminProductController.php delete mode 100644 Chapter25/onlineStore/app/Http/Controllers/Auth/ConfirmPasswordController.php delete mode 100644 Chapter25/onlineStore/app/Http/Controllers/Auth/ForgotPasswordController.php delete mode 100644 Chapter25/onlineStore/app/Http/Controllers/Auth/LoginController.php delete mode 100644 Chapter25/onlineStore/app/Http/Controllers/Auth/RegisterController.php delete mode 100644 Chapter25/onlineStore/app/Http/Controllers/Auth/ResetPasswordController.php delete mode 100644 Chapter25/onlineStore/app/Http/Controllers/Auth/VerificationController.php delete mode 100644 Chapter25/onlineStore/app/Http/Controllers/CartController.php delete mode 100644 Chapter25/onlineStore/app/Http/Controllers/Controller.php delete mode 100644 Chapter25/onlineStore/app/Http/Controllers/HomeController.php delete mode 100644 Chapter25/onlineStore/app/Http/Controllers/ProductController.php delete mode 100644 Chapter25/onlineStore/app/Http/Kernel.php delete mode 100644 Chapter25/onlineStore/app/Http/Middleware/AdminAuthMiddleware.php delete mode 100644 Chapter25/onlineStore/app/Http/Middleware/Authenticate.php delete mode 100644 Chapter25/onlineStore/app/Http/Middleware/EncryptCookies.php delete mode 100644 Chapter25/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php delete mode 100644 Chapter25/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php delete mode 100644 Chapter25/onlineStore/app/Http/Middleware/TrimStrings.php delete mode 100644 Chapter25/onlineStore/app/Http/Middleware/TrustHosts.php delete mode 100644 Chapter25/onlineStore/app/Http/Middleware/TrustProxies.php delete mode 100644 Chapter25/onlineStore/app/Http/Middleware/VerifyCsrfToken.php delete mode 100644 Chapter25/onlineStore/app/Models/Product.php delete mode 100644 Chapter25/onlineStore/app/Models/User.php delete mode 100644 Chapter25/onlineStore/app/Providers/AppServiceProvider.php delete mode 100644 Chapter25/onlineStore/app/Providers/AuthServiceProvider.php delete mode 100644 Chapter25/onlineStore/app/Providers/BroadcastServiceProvider.php delete mode 100644 Chapter25/onlineStore/app/Providers/EventServiceProvider.php delete mode 100644 Chapter25/onlineStore/app/Providers/RouteServiceProvider.php delete mode 100644 Chapter25/onlineStore/artisan delete mode 100644 Chapter25/onlineStore/bootstrap/app.php delete mode 100644 Chapter25/onlineStore/bootstrap/cache/.gitignore delete mode 100644 Chapter25/onlineStore/composer.json delete mode 100644 Chapter25/onlineStore/composer.lock delete mode 100644 Chapter25/onlineStore/config/app.php delete mode 100644 Chapter25/onlineStore/config/auth.php delete mode 100644 Chapter25/onlineStore/config/broadcasting.php delete mode 100644 Chapter25/onlineStore/config/cache.php delete mode 100644 Chapter25/onlineStore/config/cors.php delete mode 100644 Chapter25/onlineStore/config/database.php delete mode 100644 Chapter25/onlineStore/config/filesystems.php delete mode 100644 Chapter25/onlineStore/config/hashing.php delete mode 100644 Chapter25/onlineStore/config/logging.php delete mode 100644 Chapter25/onlineStore/config/mail.php delete mode 100644 Chapter25/onlineStore/config/queue.php delete mode 100644 Chapter25/onlineStore/config/sanctum.php delete mode 100644 Chapter25/onlineStore/config/services.php delete mode 100644 Chapter25/onlineStore/config/session.php delete mode 100644 Chapter25/onlineStore/config/view.php delete mode 100644 Chapter25/onlineStore/database/.gitignore delete mode 100644 Chapter25/onlineStore/database/factories/UserFactory.php delete mode 100644 Chapter25/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php delete mode 100644 Chapter25/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php delete mode 100644 Chapter25/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php delete mode 100644 Chapter25/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php delete mode 100644 Chapter25/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php delete mode 100644 Chapter25/onlineStore/database/migrations/2022_02_12_140820_alter_users_table.php delete mode 100644 Chapter25/onlineStore/database/seeders/DatabaseSeeder.php delete mode 100644 Chapter25/onlineStore/lang/en.json delete mode 100644 Chapter25/onlineStore/lang/en/auth.php delete mode 100644 Chapter25/onlineStore/lang/en/pagination.php delete mode 100644 Chapter25/onlineStore/lang/en/passwords.php delete mode 100644 Chapter25/onlineStore/lang/en/validation.php delete mode 100644 Chapter25/onlineStore/package.json delete mode 100644 Chapter25/onlineStore/phpcs.xml delete mode 100644 Chapter25/onlineStore/phpunit.xml delete mode 100644 Chapter25/onlineStore/public/.htaccess delete mode 100644 Chapter25/onlineStore/public/css/admin.css delete mode 100644 Chapter25/onlineStore/public/css/app.css delete mode 100644 Chapter25/onlineStore/public/favicon.ico delete mode 100644 Chapter25/onlineStore/public/img/game.png delete mode 100644 Chapter25/onlineStore/public/img/safe.png delete mode 100644 Chapter25/onlineStore/public/img/submarine.png delete mode 100644 Chapter25/onlineStore/public/img/undraw_profile.svg delete mode 100644 Chapter25/onlineStore/public/index.php delete mode 100644 Chapter25/onlineStore/public/robots.txt delete mode 100644 Chapter25/onlineStore/resources/css/app.css delete mode 100644 Chapter25/onlineStore/resources/js/app.js delete mode 100644 Chapter25/onlineStore/resources/js/bootstrap.js delete mode 100644 Chapter25/onlineStore/resources/sass/_variables.scss delete mode 100644 Chapter25/onlineStore/resources/sass/app.scss delete mode 100644 Chapter25/onlineStore/resources/views/admin/home/index.blade.php delete mode 100644 Chapter25/onlineStore/resources/views/admin/product/edit.blade.php delete mode 100644 Chapter25/onlineStore/resources/views/admin/product/index.blade.php delete mode 100644 Chapter25/onlineStore/resources/views/auth/login.blade.php delete mode 100644 Chapter25/onlineStore/resources/views/auth/passwords/confirm.blade.php delete mode 100644 Chapter25/onlineStore/resources/views/auth/passwords/email.blade.php delete mode 100644 Chapter25/onlineStore/resources/views/auth/passwords/reset.blade.php delete mode 100644 Chapter25/onlineStore/resources/views/auth/register.blade.php delete mode 100644 Chapter25/onlineStore/resources/views/auth/verify.blade.php delete mode 100644 Chapter25/onlineStore/resources/views/cart/index.blade.php delete mode 100644 Chapter25/onlineStore/resources/views/home.blade.php delete mode 100644 Chapter25/onlineStore/resources/views/home/about.blade.php delete mode 100644 Chapter25/onlineStore/resources/views/home/index.blade.php delete mode 100644 Chapter25/onlineStore/resources/views/layouts/admin.blade.php delete mode 100644 Chapter25/onlineStore/resources/views/layouts/app.blade.php delete mode 100644 Chapter25/onlineStore/resources/views/product/index.blade.php delete mode 100644 Chapter25/onlineStore/resources/views/product/show.blade.php delete mode 100644 Chapter25/onlineStore/resources/views/welcome.blade.php delete mode 100644 Chapter25/onlineStore/routes/api.php delete mode 100644 Chapter25/onlineStore/routes/channels.php delete mode 100644 Chapter25/onlineStore/routes/console.php delete mode 100644 Chapter25/onlineStore/routes/web.php delete mode 100644 Chapter25/onlineStore/storage/app/.gitignore delete mode 100644 Chapter25/onlineStore/storage/app/public/.gitignore delete mode 100644 Chapter25/onlineStore/storage/framework/.gitignore delete mode 100644 Chapter25/onlineStore/storage/framework/cache/.gitignore delete mode 100644 Chapter25/onlineStore/storage/framework/cache/data/.gitignore delete mode 100644 Chapter25/onlineStore/storage/framework/sessions/.gitignore delete mode 100644 Chapter25/onlineStore/storage/framework/testing/.gitignore delete mode 100644 Chapter25/onlineStore/storage/framework/views/.gitignore delete mode 100644 Chapter25/onlineStore/storage/logs/.gitignore delete mode 100644 Chapter25/onlineStore/tests/CreatesApplication.php delete mode 100644 Chapter25/onlineStore/tests/Feature/ExampleTest.php delete mode 100644 Chapter25/onlineStore/tests/TestCase.php delete mode 100644 Chapter25/onlineStore/tests/Unit/ExampleTest.php delete mode 100644 Chapter25/onlineStore/webpack.mix.js delete mode 100644 Chapter26/onlineStore/.editorconfig delete mode 100644 Chapter26/onlineStore/.env.example delete mode 100644 Chapter26/onlineStore/.gitattributes delete mode 100644 Chapter26/onlineStore/.gitignore delete mode 100644 Chapter26/onlineStore/.styleci.yml delete mode 100644 Chapter26/onlineStore/README.md delete mode 100644 Chapter26/onlineStore/app/Console/Kernel.php delete mode 100644 Chapter26/onlineStore/app/Exceptions/Handler.php delete mode 100644 Chapter26/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php delete mode 100644 Chapter26/onlineStore/app/Http/Controllers/Admin/AdminProductController.php delete mode 100644 Chapter26/onlineStore/app/Http/Controllers/Auth/ConfirmPasswordController.php delete mode 100644 Chapter26/onlineStore/app/Http/Controllers/Auth/ForgotPasswordController.php delete mode 100644 Chapter26/onlineStore/app/Http/Controllers/Auth/LoginController.php delete mode 100644 Chapter26/onlineStore/app/Http/Controllers/Auth/RegisterController.php delete mode 100644 Chapter26/onlineStore/app/Http/Controllers/Auth/ResetPasswordController.php delete mode 100644 Chapter26/onlineStore/app/Http/Controllers/Auth/VerificationController.php delete mode 100644 Chapter26/onlineStore/app/Http/Controllers/CartController.php delete mode 100644 Chapter26/onlineStore/app/Http/Controllers/Controller.php delete mode 100644 Chapter26/onlineStore/app/Http/Controllers/HomeController.php delete mode 100644 Chapter26/onlineStore/app/Http/Controllers/ProductController.php delete mode 100644 Chapter26/onlineStore/app/Http/Kernel.php delete mode 100644 Chapter26/onlineStore/app/Http/Middleware/AdminAuthMiddleware.php delete mode 100644 Chapter26/onlineStore/app/Http/Middleware/Authenticate.php delete mode 100644 Chapter26/onlineStore/app/Http/Middleware/EncryptCookies.php delete mode 100644 Chapter26/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php delete mode 100644 Chapter26/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php delete mode 100644 Chapter26/onlineStore/app/Http/Middleware/TrimStrings.php delete mode 100644 Chapter26/onlineStore/app/Http/Middleware/TrustHosts.php delete mode 100644 Chapter26/onlineStore/app/Http/Middleware/TrustProxies.php delete mode 100644 Chapter26/onlineStore/app/Http/Middleware/VerifyCsrfToken.php delete mode 100644 Chapter26/onlineStore/app/Models/Item.php delete mode 100644 Chapter26/onlineStore/app/Models/Order.php delete mode 100644 Chapter26/onlineStore/app/Models/Product.php delete mode 100644 Chapter26/onlineStore/app/Models/User.php delete mode 100644 Chapter26/onlineStore/app/Providers/AppServiceProvider.php delete mode 100644 Chapter26/onlineStore/app/Providers/AuthServiceProvider.php delete mode 100644 Chapter26/onlineStore/app/Providers/BroadcastServiceProvider.php delete mode 100644 Chapter26/onlineStore/app/Providers/EventServiceProvider.php delete mode 100644 Chapter26/onlineStore/app/Providers/RouteServiceProvider.php delete mode 100644 Chapter26/onlineStore/artisan delete mode 100644 Chapter26/onlineStore/bootstrap/app.php delete mode 100644 Chapter26/onlineStore/bootstrap/cache/.gitignore delete mode 100644 Chapter26/onlineStore/composer.json delete mode 100644 Chapter26/onlineStore/composer.lock delete mode 100644 Chapter26/onlineStore/config/app.php delete mode 100644 Chapter26/onlineStore/config/auth.php delete mode 100644 Chapter26/onlineStore/config/broadcasting.php delete mode 100644 Chapter26/onlineStore/config/cache.php delete mode 100644 Chapter26/onlineStore/config/cors.php delete mode 100644 Chapter26/onlineStore/config/database.php delete mode 100644 Chapter26/onlineStore/config/filesystems.php delete mode 100644 Chapter26/onlineStore/config/hashing.php delete mode 100644 Chapter26/onlineStore/config/logging.php delete mode 100644 Chapter26/onlineStore/config/mail.php delete mode 100644 Chapter26/onlineStore/config/queue.php delete mode 100644 Chapter26/onlineStore/config/sanctum.php delete mode 100644 Chapter26/onlineStore/config/services.php delete mode 100644 Chapter26/onlineStore/config/session.php delete mode 100644 Chapter26/onlineStore/config/view.php delete mode 100644 Chapter26/onlineStore/database/.gitignore delete mode 100644 Chapter26/onlineStore/database/factories/UserFactory.php delete mode 100644 Chapter26/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php delete mode 100644 Chapter26/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php delete mode 100644 Chapter26/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php delete mode 100644 Chapter26/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php delete mode 100644 Chapter26/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php delete mode 100644 Chapter26/onlineStore/database/migrations/2022_02_12_140820_alter_users_table.php delete mode 100644 Chapter26/onlineStore/database/migrations/2022_02_12_152713_create_orders_table.php delete mode 100644 Chapter26/onlineStore/database/migrations/2022_02_12_152850_create_items_table.php delete mode 100644 Chapter26/onlineStore/database/seeders/DatabaseSeeder.php delete mode 100644 Chapter26/onlineStore/lang/en.json delete mode 100644 Chapter26/onlineStore/lang/en/auth.php delete mode 100644 Chapter26/onlineStore/lang/en/pagination.php delete mode 100644 Chapter26/onlineStore/lang/en/passwords.php delete mode 100644 Chapter26/onlineStore/lang/en/validation.php delete mode 100644 Chapter26/onlineStore/package.json delete mode 100644 Chapter26/onlineStore/phpcs.xml delete mode 100644 Chapter26/onlineStore/phpunit.xml delete mode 100644 Chapter26/onlineStore/public/.htaccess delete mode 100644 Chapter26/onlineStore/public/css/admin.css delete mode 100644 Chapter26/onlineStore/public/css/app.css delete mode 100644 Chapter26/onlineStore/public/favicon.ico delete mode 100644 Chapter26/onlineStore/public/img/game.png delete mode 100644 Chapter26/onlineStore/public/img/safe.png delete mode 100644 Chapter26/onlineStore/public/img/submarine.png delete mode 100644 Chapter26/onlineStore/public/img/undraw_profile.svg delete mode 100644 Chapter26/onlineStore/public/index.php delete mode 100644 Chapter26/onlineStore/public/robots.txt delete mode 100644 Chapter26/onlineStore/resources/css/app.css delete mode 100644 Chapter26/onlineStore/resources/js/app.js delete mode 100644 Chapter26/onlineStore/resources/js/bootstrap.js delete mode 100644 Chapter26/onlineStore/resources/sass/_variables.scss delete mode 100644 Chapter26/onlineStore/resources/sass/app.scss delete mode 100644 Chapter26/onlineStore/resources/views/admin/home/index.blade.php delete mode 100644 Chapter26/onlineStore/resources/views/admin/product/edit.blade.php delete mode 100644 Chapter26/onlineStore/resources/views/admin/product/index.blade.php delete mode 100644 Chapter26/onlineStore/resources/views/auth/login.blade.php delete mode 100644 Chapter26/onlineStore/resources/views/auth/passwords/confirm.blade.php delete mode 100644 Chapter26/onlineStore/resources/views/auth/passwords/email.blade.php delete mode 100644 Chapter26/onlineStore/resources/views/auth/passwords/reset.blade.php delete mode 100644 Chapter26/onlineStore/resources/views/auth/register.blade.php delete mode 100644 Chapter26/onlineStore/resources/views/auth/verify.blade.php delete mode 100644 Chapter26/onlineStore/resources/views/cart/index.blade.php delete mode 100644 Chapter26/onlineStore/resources/views/home.blade.php delete mode 100644 Chapter26/onlineStore/resources/views/home/about.blade.php delete mode 100644 Chapter26/onlineStore/resources/views/home/index.blade.php delete mode 100644 Chapter26/onlineStore/resources/views/layouts/admin.blade.php delete mode 100644 Chapter26/onlineStore/resources/views/layouts/app.blade.php delete mode 100644 Chapter26/onlineStore/resources/views/product/index.blade.php delete mode 100644 Chapter26/onlineStore/resources/views/product/show.blade.php delete mode 100644 Chapter26/onlineStore/resources/views/welcome.blade.php delete mode 100644 Chapter26/onlineStore/routes/api.php delete mode 100644 Chapter26/onlineStore/routes/channels.php delete mode 100644 Chapter26/onlineStore/routes/console.php delete mode 100644 Chapter26/onlineStore/routes/web.php delete mode 100644 Chapter26/onlineStore/storage/app/.gitignore delete mode 100644 Chapter26/onlineStore/storage/app/public/.gitignore delete mode 100644 Chapter26/onlineStore/storage/framework/.gitignore delete mode 100644 Chapter26/onlineStore/storage/framework/cache/.gitignore delete mode 100644 Chapter26/onlineStore/storage/framework/cache/data/.gitignore delete mode 100644 Chapter26/onlineStore/storage/framework/sessions/.gitignore delete mode 100644 Chapter26/onlineStore/storage/framework/testing/.gitignore delete mode 100644 Chapter26/onlineStore/storage/framework/views/.gitignore delete mode 100644 Chapter26/onlineStore/storage/logs/.gitignore delete mode 100644 Chapter26/onlineStore/tests/CreatesApplication.php delete mode 100644 Chapter26/onlineStore/tests/Feature/ExampleTest.php delete mode 100644 Chapter26/onlineStore/tests/TestCase.php delete mode 100644 Chapter26/onlineStore/tests/Unit/ExampleTest.php delete mode 100644 Chapter26/onlineStore/webpack.mix.js delete mode 100644 Chapter27/onlineStore/.editorconfig delete mode 100644 Chapter27/onlineStore/.env.example delete mode 100644 Chapter27/onlineStore/.gitattributes delete mode 100644 Chapter27/onlineStore/.gitignore delete mode 100644 Chapter27/onlineStore/.styleci.yml delete mode 100644 Chapter27/onlineStore/README.md delete mode 100644 Chapter27/onlineStore/app/Console/Kernel.php delete mode 100644 Chapter27/onlineStore/app/Exceptions/Handler.php delete mode 100644 Chapter27/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php delete mode 100644 Chapter27/onlineStore/app/Http/Controllers/Admin/AdminProductController.php delete mode 100644 Chapter27/onlineStore/app/Http/Controllers/Auth/ConfirmPasswordController.php delete mode 100644 Chapter27/onlineStore/app/Http/Controllers/Auth/ForgotPasswordController.php delete mode 100644 Chapter27/onlineStore/app/Http/Controllers/Auth/LoginController.php delete mode 100644 Chapter27/onlineStore/app/Http/Controllers/Auth/RegisterController.php delete mode 100644 Chapter27/onlineStore/app/Http/Controllers/Auth/ResetPasswordController.php delete mode 100644 Chapter27/onlineStore/app/Http/Controllers/Auth/VerificationController.php delete mode 100644 Chapter27/onlineStore/app/Http/Controllers/CartController.php delete mode 100644 Chapter27/onlineStore/app/Http/Controllers/Controller.php delete mode 100644 Chapter27/onlineStore/app/Http/Controllers/HomeController.php delete mode 100644 Chapter27/onlineStore/app/Http/Controllers/ProductController.php delete mode 100644 Chapter27/onlineStore/app/Http/Kernel.php delete mode 100644 Chapter27/onlineStore/app/Http/Middleware/AdminAuthMiddleware.php delete mode 100644 Chapter27/onlineStore/app/Http/Middleware/Authenticate.php delete mode 100644 Chapter27/onlineStore/app/Http/Middleware/EncryptCookies.php delete mode 100644 Chapter27/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php delete mode 100644 Chapter27/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php delete mode 100644 Chapter27/onlineStore/app/Http/Middleware/TrimStrings.php delete mode 100644 Chapter27/onlineStore/app/Http/Middleware/TrustHosts.php delete mode 100644 Chapter27/onlineStore/app/Http/Middleware/TrustProxies.php delete mode 100644 Chapter27/onlineStore/app/Http/Middleware/VerifyCsrfToken.php delete mode 100644 Chapter27/onlineStore/app/Models/Item.php delete mode 100644 Chapter27/onlineStore/app/Models/Order.php delete mode 100644 Chapter27/onlineStore/app/Models/Product.php delete mode 100644 Chapter27/onlineStore/app/Models/User.php delete mode 100644 Chapter27/onlineStore/app/Providers/AppServiceProvider.php delete mode 100644 Chapter27/onlineStore/app/Providers/AuthServiceProvider.php delete mode 100644 Chapter27/onlineStore/app/Providers/BroadcastServiceProvider.php delete mode 100644 Chapter27/onlineStore/app/Providers/EventServiceProvider.php delete mode 100644 Chapter27/onlineStore/app/Providers/RouteServiceProvider.php delete mode 100644 Chapter27/onlineStore/artisan delete mode 100644 Chapter27/onlineStore/bootstrap/app.php delete mode 100644 Chapter27/onlineStore/bootstrap/cache/.gitignore delete mode 100644 Chapter27/onlineStore/composer.json delete mode 100644 Chapter27/onlineStore/composer.lock delete mode 100644 Chapter27/onlineStore/config/app.php delete mode 100644 Chapter27/onlineStore/config/auth.php delete mode 100644 Chapter27/onlineStore/config/broadcasting.php delete mode 100644 Chapter27/onlineStore/config/cache.php delete mode 100644 Chapter27/onlineStore/config/cors.php delete mode 100644 Chapter27/onlineStore/config/database.php delete mode 100644 Chapter27/onlineStore/config/filesystems.php delete mode 100644 Chapter27/onlineStore/config/hashing.php delete mode 100644 Chapter27/onlineStore/config/logging.php delete mode 100644 Chapter27/onlineStore/config/mail.php delete mode 100644 Chapter27/onlineStore/config/queue.php delete mode 100644 Chapter27/onlineStore/config/sanctum.php delete mode 100644 Chapter27/onlineStore/config/services.php delete mode 100644 Chapter27/onlineStore/config/session.php delete mode 100644 Chapter27/onlineStore/config/view.php delete mode 100644 Chapter27/onlineStore/database/.gitignore delete mode 100644 Chapter27/onlineStore/database/factories/UserFactory.php delete mode 100644 Chapter27/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php delete mode 100644 Chapter27/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php delete mode 100644 Chapter27/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php delete mode 100644 Chapter27/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php delete mode 100644 Chapter27/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php delete mode 100644 Chapter27/onlineStore/database/migrations/2022_02_12_140820_alter_users_table.php delete mode 100644 Chapter27/onlineStore/database/migrations/2022_02_12_152713_create_orders_table.php delete mode 100644 Chapter27/onlineStore/database/migrations/2022_02_12_152850_create_items_table.php delete mode 100644 Chapter27/onlineStore/database/seeders/DatabaseSeeder.php delete mode 100644 Chapter27/onlineStore/lang/en.json delete mode 100644 Chapter27/onlineStore/lang/en/auth.php delete mode 100644 Chapter27/onlineStore/lang/en/pagination.php delete mode 100644 Chapter27/onlineStore/lang/en/passwords.php delete mode 100644 Chapter27/onlineStore/lang/en/validation.php delete mode 100644 Chapter27/onlineStore/package.json delete mode 100644 Chapter27/onlineStore/phpcs.xml delete mode 100644 Chapter27/onlineStore/phpunit.xml delete mode 100644 Chapter27/onlineStore/public/.htaccess delete mode 100644 Chapter27/onlineStore/public/css/admin.css delete mode 100644 Chapter27/onlineStore/public/css/app.css delete mode 100644 Chapter27/onlineStore/public/favicon.ico delete mode 100644 Chapter27/onlineStore/public/img/game.png delete mode 100644 Chapter27/onlineStore/public/img/safe.png delete mode 100644 Chapter27/onlineStore/public/img/submarine.png delete mode 100644 Chapter27/onlineStore/public/img/undraw_profile.svg delete mode 100644 Chapter27/onlineStore/public/index.php delete mode 100644 Chapter27/onlineStore/public/robots.txt delete mode 100644 Chapter27/onlineStore/resources/css/app.css delete mode 100644 Chapter27/onlineStore/resources/js/app.js delete mode 100644 Chapter27/onlineStore/resources/js/bootstrap.js delete mode 100644 Chapter27/onlineStore/resources/sass/_variables.scss delete mode 100644 Chapter27/onlineStore/resources/sass/app.scss delete mode 100644 Chapter27/onlineStore/resources/views/admin/home/index.blade.php delete mode 100644 Chapter27/onlineStore/resources/views/admin/product/edit.blade.php delete mode 100644 Chapter27/onlineStore/resources/views/admin/product/index.blade.php delete mode 100644 Chapter27/onlineStore/resources/views/auth/login.blade.php delete mode 100644 Chapter27/onlineStore/resources/views/auth/passwords/confirm.blade.php delete mode 100644 Chapter27/onlineStore/resources/views/auth/passwords/email.blade.php delete mode 100644 Chapter27/onlineStore/resources/views/auth/passwords/reset.blade.php delete mode 100644 Chapter27/onlineStore/resources/views/auth/register.blade.php delete mode 100644 Chapter27/onlineStore/resources/views/auth/verify.blade.php delete mode 100644 Chapter27/onlineStore/resources/views/cart/index.blade.php delete mode 100644 Chapter27/onlineStore/resources/views/cart/purchase.blade.php delete mode 100644 Chapter27/onlineStore/resources/views/home.blade.php delete mode 100644 Chapter27/onlineStore/resources/views/home/about.blade.php delete mode 100644 Chapter27/onlineStore/resources/views/home/index.blade.php delete mode 100644 Chapter27/onlineStore/resources/views/layouts/admin.blade.php delete mode 100644 Chapter27/onlineStore/resources/views/layouts/app.blade.php delete mode 100644 Chapter27/onlineStore/resources/views/product/index.blade.php delete mode 100644 Chapter27/onlineStore/resources/views/product/show.blade.php delete mode 100644 Chapter27/onlineStore/resources/views/welcome.blade.php delete mode 100644 Chapter27/onlineStore/routes/api.php delete mode 100644 Chapter27/onlineStore/routes/channels.php delete mode 100644 Chapter27/onlineStore/routes/console.php delete mode 100644 Chapter27/onlineStore/routes/web.php delete mode 100644 Chapter27/onlineStore/storage/app/.gitignore delete mode 100644 Chapter27/onlineStore/storage/app/public/.gitignore delete mode 100644 Chapter27/onlineStore/storage/framework/.gitignore delete mode 100644 Chapter27/onlineStore/storage/framework/cache/.gitignore delete mode 100644 Chapter27/onlineStore/storage/framework/cache/data/.gitignore delete mode 100644 Chapter27/onlineStore/storage/framework/sessions/.gitignore delete mode 100644 Chapter27/onlineStore/storage/framework/testing/.gitignore delete mode 100644 Chapter27/onlineStore/storage/framework/views/.gitignore delete mode 100644 Chapter27/onlineStore/storage/logs/.gitignore delete mode 100644 Chapter27/onlineStore/tests/CreatesApplication.php delete mode 100644 Chapter27/onlineStore/tests/Feature/ExampleTest.php delete mode 100644 Chapter27/onlineStore/tests/TestCase.php delete mode 100644 Chapter27/onlineStore/tests/Unit/ExampleTest.php delete mode 100644 Chapter27/onlineStore/webpack.mix.js delete mode 100644 Chapter28/onlineStore/.editorconfig delete mode 100644 Chapter28/onlineStore/.env.example delete mode 100644 Chapter28/onlineStore/.gitattributes delete mode 100644 Chapter28/onlineStore/.gitignore delete mode 100644 Chapter28/onlineStore/.styleci.yml delete mode 100644 Chapter28/onlineStore/README.md delete mode 100644 Chapter28/onlineStore/app/Console/Kernel.php delete mode 100644 Chapter28/onlineStore/app/Exceptions/Handler.php delete mode 100644 Chapter28/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php delete mode 100644 Chapter28/onlineStore/app/Http/Controllers/Admin/AdminProductController.php delete mode 100644 Chapter28/onlineStore/app/Http/Controllers/Auth/ConfirmPasswordController.php delete mode 100644 Chapter28/onlineStore/app/Http/Controllers/Auth/ForgotPasswordController.php delete mode 100644 Chapter28/onlineStore/app/Http/Controllers/Auth/LoginController.php delete mode 100644 Chapter28/onlineStore/app/Http/Controllers/Auth/RegisterController.php delete mode 100644 Chapter28/onlineStore/app/Http/Controllers/Auth/ResetPasswordController.php delete mode 100644 Chapter28/onlineStore/app/Http/Controllers/Auth/VerificationController.php delete mode 100644 Chapter28/onlineStore/app/Http/Controllers/CartController.php delete mode 100644 Chapter28/onlineStore/app/Http/Controllers/Controller.php delete mode 100644 Chapter28/onlineStore/app/Http/Controllers/HomeController.php delete mode 100644 Chapter28/onlineStore/app/Http/Controllers/MyAccountController.php delete mode 100644 Chapter28/onlineStore/app/Http/Controllers/ProductController.php delete mode 100644 Chapter28/onlineStore/app/Http/Kernel.php delete mode 100644 Chapter28/onlineStore/app/Http/Middleware/AdminAuthMiddleware.php delete mode 100644 Chapter28/onlineStore/app/Http/Middleware/Authenticate.php delete mode 100644 Chapter28/onlineStore/app/Http/Middleware/EncryptCookies.php delete mode 100644 Chapter28/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php delete mode 100644 Chapter28/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php delete mode 100644 Chapter28/onlineStore/app/Http/Middleware/TrimStrings.php delete mode 100644 Chapter28/onlineStore/app/Http/Middleware/TrustHosts.php delete mode 100644 Chapter28/onlineStore/app/Http/Middleware/TrustProxies.php delete mode 100644 Chapter28/onlineStore/app/Http/Middleware/VerifyCsrfToken.php delete mode 100644 Chapter28/onlineStore/app/Models/Item.php delete mode 100644 Chapter28/onlineStore/app/Models/Order.php delete mode 100644 Chapter28/onlineStore/app/Models/Product.php delete mode 100644 Chapter28/onlineStore/app/Models/User.php delete mode 100644 Chapter28/onlineStore/app/Providers/AppServiceProvider.php delete mode 100644 Chapter28/onlineStore/app/Providers/AuthServiceProvider.php delete mode 100644 Chapter28/onlineStore/app/Providers/BroadcastServiceProvider.php delete mode 100644 Chapter28/onlineStore/app/Providers/EventServiceProvider.php delete mode 100644 Chapter28/onlineStore/app/Providers/RouteServiceProvider.php delete mode 100644 Chapter28/onlineStore/artisan delete mode 100644 Chapter28/onlineStore/bootstrap/app.php delete mode 100644 Chapter28/onlineStore/bootstrap/cache/.gitignore delete mode 100644 Chapter28/onlineStore/composer.json delete mode 100644 Chapter28/onlineStore/composer.lock delete mode 100644 Chapter28/onlineStore/config/app.php delete mode 100644 Chapter28/onlineStore/config/auth.php delete mode 100644 Chapter28/onlineStore/config/broadcasting.php delete mode 100644 Chapter28/onlineStore/config/cache.php delete mode 100644 Chapter28/onlineStore/config/cors.php delete mode 100644 Chapter28/onlineStore/config/database.php delete mode 100644 Chapter28/onlineStore/config/filesystems.php delete mode 100644 Chapter28/onlineStore/config/hashing.php delete mode 100644 Chapter28/onlineStore/config/logging.php delete mode 100644 Chapter28/onlineStore/config/mail.php delete mode 100644 Chapter28/onlineStore/config/queue.php delete mode 100644 Chapter28/onlineStore/config/sanctum.php delete mode 100644 Chapter28/onlineStore/config/services.php delete mode 100644 Chapter28/onlineStore/config/session.php delete mode 100644 Chapter28/onlineStore/config/view.php delete mode 100644 Chapter28/onlineStore/database/.gitignore delete mode 100644 Chapter28/onlineStore/database/factories/UserFactory.php delete mode 100644 Chapter28/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php delete mode 100644 Chapter28/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php delete mode 100644 Chapter28/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php delete mode 100644 Chapter28/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php delete mode 100644 Chapter28/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php delete mode 100644 Chapter28/onlineStore/database/migrations/2022_02_12_140820_alter_users_table.php delete mode 100644 Chapter28/onlineStore/database/migrations/2022_02_12_152713_create_orders_table.php delete mode 100644 Chapter28/onlineStore/database/migrations/2022_02_12_152850_create_items_table.php delete mode 100644 Chapter28/onlineStore/database/seeders/DatabaseSeeder.php delete mode 100644 Chapter28/onlineStore/lang/en.json delete mode 100644 Chapter28/onlineStore/lang/en/auth.php delete mode 100644 Chapter28/onlineStore/lang/en/pagination.php delete mode 100644 Chapter28/onlineStore/lang/en/passwords.php delete mode 100644 Chapter28/onlineStore/lang/en/validation.php delete mode 100644 Chapter28/onlineStore/package.json delete mode 100644 Chapter28/onlineStore/phpcs.xml delete mode 100644 Chapter28/onlineStore/phpunit.xml delete mode 100644 Chapter28/onlineStore/public/.htaccess delete mode 100644 Chapter28/onlineStore/public/css/admin.css delete mode 100644 Chapter28/onlineStore/public/css/app.css delete mode 100644 Chapter28/onlineStore/public/favicon.ico delete mode 100644 Chapter28/onlineStore/public/img/game.png delete mode 100644 Chapter28/onlineStore/public/img/safe.png delete mode 100644 Chapter28/onlineStore/public/img/submarine.png delete mode 100644 Chapter28/onlineStore/public/img/undraw_profile.svg delete mode 100644 Chapter28/onlineStore/public/index.php delete mode 100644 Chapter28/onlineStore/public/robots.txt delete mode 100644 Chapter28/onlineStore/resources/css/app.css delete mode 100644 Chapter28/onlineStore/resources/js/app.js delete mode 100644 Chapter28/onlineStore/resources/js/bootstrap.js delete mode 100644 Chapter28/onlineStore/resources/sass/_variables.scss delete mode 100644 Chapter28/onlineStore/resources/sass/app.scss delete mode 100644 Chapter28/onlineStore/resources/views/admin/home/index.blade.php delete mode 100644 Chapter28/onlineStore/resources/views/admin/product/edit.blade.php delete mode 100644 Chapter28/onlineStore/resources/views/admin/product/index.blade.php delete mode 100644 Chapter28/onlineStore/resources/views/auth/login.blade.php delete mode 100644 Chapter28/onlineStore/resources/views/auth/passwords/confirm.blade.php delete mode 100644 Chapter28/onlineStore/resources/views/auth/passwords/email.blade.php delete mode 100644 Chapter28/onlineStore/resources/views/auth/passwords/reset.blade.php delete mode 100644 Chapter28/onlineStore/resources/views/auth/register.blade.php delete mode 100644 Chapter28/onlineStore/resources/views/auth/verify.blade.php delete mode 100644 Chapter28/onlineStore/resources/views/cart/index.blade.php delete mode 100644 Chapter28/onlineStore/resources/views/cart/purchase.blade.php delete mode 100644 Chapter28/onlineStore/resources/views/home.blade.php delete mode 100644 Chapter28/onlineStore/resources/views/home/about.blade.php delete mode 100644 Chapter28/onlineStore/resources/views/home/index.blade.php delete mode 100644 Chapter28/onlineStore/resources/views/layouts/admin.blade.php delete mode 100644 Chapter28/onlineStore/resources/views/layouts/app.blade.php delete mode 100644 Chapter28/onlineStore/resources/views/myaccount/orders.blade.php delete mode 100644 Chapter28/onlineStore/resources/views/product/index.blade.php delete mode 100644 Chapter28/onlineStore/resources/views/product/show.blade.php delete mode 100644 Chapter28/onlineStore/resources/views/welcome.blade.php delete mode 100644 Chapter28/onlineStore/routes/api.php delete mode 100644 Chapter28/onlineStore/routes/channels.php delete mode 100644 Chapter28/onlineStore/routes/console.php delete mode 100644 Chapter28/onlineStore/routes/web.php delete mode 100644 Chapter28/onlineStore/storage/app/.gitignore delete mode 100644 Chapter28/onlineStore/storage/app/public/.gitignore delete mode 100644 Chapter28/onlineStore/storage/framework/.gitignore delete mode 100644 Chapter28/onlineStore/storage/framework/cache/.gitignore delete mode 100644 Chapter28/onlineStore/storage/framework/cache/data/.gitignore delete mode 100644 Chapter28/onlineStore/storage/framework/sessions/.gitignore delete mode 100644 Chapter28/onlineStore/storage/framework/testing/.gitignore delete mode 100644 Chapter28/onlineStore/storage/framework/views/.gitignore delete mode 100644 Chapter28/onlineStore/storage/logs/.gitignore delete mode 100644 Chapter28/onlineStore/tests/CreatesApplication.php delete mode 100644 Chapter28/onlineStore/tests/Feature/ExampleTest.php delete mode 100644 Chapter28/onlineStore/tests/TestCase.php delete mode 100644 Chapter28/onlineStore/tests/Unit/ExampleTest.php delete mode 100644 Chapter28/onlineStore/webpack.mix.js create mode 100644 app/Models/Fournisseur.php create mode 100644 database/migrations/2025_03_20_112006_create_fournisseurs_table.php diff --git a/Chapter03/onlineStore/.editorconfig b/Chapter03/onlineStore/.editorconfig deleted file mode 100644 index 1671c9b..0000000 --- a/Chapter03/onlineStore/.editorconfig +++ /dev/null @@ -1,18 +0,0 @@ -root = true - -[*] -charset = utf-8 -end_of_line = lf -insert_final_newline = true -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true - -[*.md] -trim_trailing_whitespace = false - -[*.{yml,yaml}] -indent_size = 2 - -[docker-compose.yml] -indent_size = 4 diff --git a/Chapter03/onlineStore/.env.example b/Chapter03/onlineStore/.env.example deleted file mode 100644 index 8510237..0000000 --- a/Chapter03/onlineStore/.env.example +++ /dev/null @@ -1,52 +0,0 @@ -APP_NAME=Laravel -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=laravel -DB_USERNAME=root -DB_PASSWORD= - -BROADCAST_DRIVER=log -CACHE_DRIVER=file -FILESYSTEM_DISK=local -QUEUE_CONNECTION=sync -SESSION_DRIVER=file -SESSION_LIFETIME=120 - -MEMCACHED_HOST=127.0.0.1 - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -MAIL_MAILER=smtp -MAIL_HOST=mailhog -MAIL_PORT=1025 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS=null -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_APP_CLUSTER=mt1 - -MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/Chapter03/onlineStore/.gitattributes b/Chapter03/onlineStore/.gitattributes deleted file mode 100644 index 510d996..0000000 --- a/Chapter03/onlineStore/.gitattributes +++ /dev/null @@ -1,10 +0,0 @@ -* text=auto - -*.blade.php diff=html -*.css diff=css -*.html diff=html -*.md diff=markdown -*.php diff=php - -/.github export-ignore -CHANGELOG.md export-ignore diff --git a/Chapter03/onlineStore/.gitignore b/Chapter03/onlineStore/.gitignore deleted file mode 100644 index eb003b0..0000000 --- a/Chapter03/onlineStore/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -/node_modules -/public/hot -/public/storage -/storage/*.key -/vendor -.env -.env.backup -.phpunit.result.cache -docker-compose.override.yml -Homestead.json -Homestead.yaml -npm-debug.log -yarn-error.log -/.idea -/.vscode diff --git a/Chapter03/onlineStore/.styleci.yml b/Chapter03/onlineStore/.styleci.yml deleted file mode 100644 index 679a631..0000000 --- a/Chapter03/onlineStore/.styleci.yml +++ /dev/null @@ -1,13 +0,0 @@ -php: - preset: laravel - version: 8 - disabled: - - no_unused_imports - finder: - not-name: - - index.php -js: - finder: - not-name: - - webpack.mix.js -css: true diff --git a/Chapter03/onlineStore/README.md b/Chapter03/onlineStore/README.md deleted file mode 100644 index f171eca..0000000 --- a/Chapter03/onlineStore/README.md +++ /dev/null @@ -1,64 +0,0 @@ -

- -

-Build Status -Total Downloads -Latest Stable Version -License -

- -## About Laravel - -Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as: - -- [Simple, fast routing engine](https://laravel.com/docs/routing). -- [Powerful dependency injection container](https://laravel.com/docs/container). -- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage. -- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent). -- Database agnostic [schema migrations](https://laravel.com/docs/migrations). -- [Robust background job processing](https://laravel.com/docs/queues). -- [Real-time event broadcasting](https://laravel.com/docs/broadcasting). - -Laravel is accessible, powerful, and provides tools required for large, robust applications. - -## Learning Laravel - -Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework. - -If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 2000 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library. - -## Laravel Sponsors - -We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell). - -### Premium Partners - -- **[Vehikl](https://vehikl.com/)** -- **[Tighten Co.](https://tighten.co)** -- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** -- **[64 Robots](https://64robots.com)** -- **[Cubet Techno Labs](https://cubettech.com)** -- **[Cyber-Duck](https://cyber-duck.co.uk)** -- **[Many](https://www.many.co.uk)** -- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)** -- **[DevSquad](https://devsquad.com)** -- **[Curotec](https://www.curotec.com/services/technologies/laravel/)** -- **[OP.GG](https://op.gg)** -- **[WebReinvent](https://webreinvent.com/?utm_source=laravel&utm_medium=github&utm_campaign=patreon-sponsors)** -- **[Lendio](https://lendio.com)** - -## Contributing - -Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions). - -## Code of Conduct - -In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). - -## Security Vulnerabilities - -If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed. - -## License - -The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). diff --git a/Chapter03/onlineStore/app/Console/Kernel.php b/Chapter03/onlineStore/app/Console/Kernel.php deleted file mode 100644 index d8bc1d2..0000000 --- a/Chapter03/onlineStore/app/Console/Kernel.php +++ /dev/null @@ -1,32 +0,0 @@ -command('inspire')->hourly(); - } - - /** - * Register the commands for the application. - * - * @return void - */ - protected function commands() - { - $this->load(__DIR__.'/Commands'); - - require base_path('routes/console.php'); - } -} diff --git a/Chapter03/onlineStore/app/Exceptions/Handler.php b/Chapter03/onlineStore/app/Exceptions/Handler.php deleted file mode 100644 index 8e7fbd1..0000000 --- a/Chapter03/onlineStore/app/Exceptions/Handler.php +++ /dev/null @@ -1,41 +0,0 @@ -> - */ - protected $dontReport = [ - // - ]; - - /** - * A list of the inputs that are never flashed for validation exceptions. - * - * @var array - */ - protected $dontFlash = [ - 'current_password', - 'password', - 'password_confirmation', - ]; - - /** - * Register the exception handling callbacks for the application. - * - * @return void - */ - public function register() - { - $this->reportable(function (Throwable $e) { - // - }); - } -} diff --git a/Chapter03/onlineStore/app/Http/Controllers/Controller.php b/Chapter03/onlineStore/app/Http/Controllers/Controller.php deleted file mode 100644 index a0a2a8a..0000000 --- a/Chapter03/onlineStore/app/Http/Controllers/Controller.php +++ /dev/null @@ -1,13 +0,0 @@ - - */ - protected $middleware = [ - // \App\Http\Middleware\TrustHosts::class, - \App\Http\Middleware\TrustProxies::class, - \Fruitcake\Cors\HandleCors::class, - \App\Http\Middleware\PreventRequestsDuringMaintenance::class, - \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, - \App\Http\Middleware\TrimStrings::class, - \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, - ]; - - /** - * The application's route middleware groups. - * - * @var array> - */ - protected $middlewareGroups = [ - 'web' => [ - \App\Http\Middleware\EncryptCookies::class, - \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, - \Illuminate\Session\Middleware\StartSession::class, - // \Illuminate\Session\Middleware\AuthenticateSession::class, - \Illuminate\View\Middleware\ShareErrorsFromSession::class, - \App\Http\Middleware\VerifyCsrfToken::class, - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - - 'api' => [ - // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, - 'throttle:api', - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - ]; - - /** - * The application's route middleware. - * - * These middleware may be assigned to groups or used individually. - * - * @var array - */ - protected $routeMiddleware = [ - 'auth' => \App\Http\Middleware\Authenticate::class, - 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::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, - 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, - 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, - 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, - ]; -} diff --git a/Chapter03/onlineStore/app/Http/Middleware/Authenticate.php b/Chapter03/onlineStore/app/Http/Middleware/Authenticate.php deleted file mode 100644 index 704089a..0000000 --- a/Chapter03/onlineStore/app/Http/Middleware/Authenticate.php +++ /dev/null @@ -1,21 +0,0 @@ -expectsJson()) { - return route('login'); - } - } -} diff --git a/Chapter03/onlineStore/app/Http/Middleware/EncryptCookies.php b/Chapter03/onlineStore/app/Http/Middleware/EncryptCookies.php deleted file mode 100644 index 867695b..0000000 --- a/Chapter03/onlineStore/app/Http/Middleware/EncryptCookies.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter03/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/Chapter03/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php deleted file mode 100644 index 74cbd9a..0000000 --- a/Chapter03/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter03/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php b/Chapter03/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php deleted file mode 100644 index a2813a0..0000000 --- a/Chapter03/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php +++ /dev/null @@ -1,32 +0,0 @@ -check()) { - return redirect(RouteServiceProvider::HOME); - } - } - - return $next($request); - } -} diff --git a/Chapter03/onlineStore/app/Http/Middleware/TrimStrings.php b/Chapter03/onlineStore/app/Http/Middleware/TrimStrings.php deleted file mode 100644 index 88cadca..0000000 --- a/Chapter03/onlineStore/app/Http/Middleware/TrimStrings.php +++ /dev/null @@ -1,19 +0,0 @@ - - */ - protected $except = [ - 'current_password', - 'password', - 'password_confirmation', - ]; -} diff --git a/Chapter03/onlineStore/app/Http/Middleware/TrustHosts.php b/Chapter03/onlineStore/app/Http/Middleware/TrustHosts.php deleted file mode 100644 index 7186414..0000000 --- a/Chapter03/onlineStore/app/Http/Middleware/TrustHosts.php +++ /dev/null @@ -1,20 +0,0 @@ - - */ - public function hosts() - { - return [ - $this->allSubdomainsOfApplicationUrl(), - ]; - } -} diff --git a/Chapter03/onlineStore/app/Http/Middleware/TrustProxies.php b/Chapter03/onlineStore/app/Http/Middleware/TrustProxies.php deleted file mode 100644 index 3391630..0000000 --- a/Chapter03/onlineStore/app/Http/Middleware/TrustProxies.php +++ /dev/null @@ -1,28 +0,0 @@ -|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/Chapter03/onlineStore/app/Http/Middleware/VerifyCsrfToken.php b/Chapter03/onlineStore/app/Http/Middleware/VerifyCsrfToken.php deleted file mode 100644 index 9e86521..0000000 --- a/Chapter03/onlineStore/app/Http/Middleware/VerifyCsrfToken.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter03/onlineStore/app/Models/User.php b/Chapter03/onlineStore/app/Models/User.php deleted file mode 100644 index 8996368..0000000 --- a/Chapter03/onlineStore/app/Models/User.php +++ /dev/null @@ -1,44 +0,0 @@ - - */ - 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', - ]; -} diff --git a/Chapter03/onlineStore/app/Providers/AppServiceProvider.php b/Chapter03/onlineStore/app/Providers/AppServiceProvider.php deleted file mode 100644 index ee8ca5b..0000000 --- a/Chapter03/onlineStore/app/Providers/AppServiceProvider.php +++ /dev/null @@ -1,28 +0,0 @@ - - */ - protected $policies = [ - // 'App\Models\Model' => 'App\Policies\ModelPolicy', - ]; - - /** - * Register any authentication / authorization services. - * - * @return void - */ - public function boot() - { - $this->registerPolicies(); - - // - } -} diff --git a/Chapter03/onlineStore/app/Providers/BroadcastServiceProvider.php b/Chapter03/onlineStore/app/Providers/BroadcastServiceProvider.php deleted file mode 100644 index 395c518..0000000 --- a/Chapter03/onlineStore/app/Providers/BroadcastServiceProvider.php +++ /dev/null @@ -1,21 +0,0 @@ -> - */ - protected $listen = [ - Registered::class => [ - SendEmailVerificationNotification::class, - ], - ]; - - /** - * Register any events for your application. - * - * @return void - */ - public function boot() - { - // - } -} diff --git a/Chapter03/onlineStore/app/Providers/RouteServiceProvider.php b/Chapter03/onlineStore/app/Providers/RouteServiceProvider.php deleted file mode 100644 index 7c17d1f..0000000 --- a/Chapter03/onlineStore/app/Providers/RouteServiceProvider.php +++ /dev/null @@ -1,63 +0,0 @@ -configureRateLimiting(); - - $this->routes(function () { - Route::prefix('api') - ->middleware('api') - ->namespace($this->namespace) - ->group(base_path('routes/api.php')); - - Route::middleware('web') - ->namespace($this->namespace) - ->group(base_path('routes/web.php')); - }); - } - - /** - * Configure the rate limiters for the application. - * - * @return void - */ - protected function configureRateLimiting() - { - RateLimiter::for('api', function (Request $request) { - return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); - }); - } -} diff --git a/Chapter03/onlineStore/artisan b/Chapter03/onlineStore/artisan deleted file mode 100644 index 67a3329..0000000 --- a/Chapter03/onlineStore/artisan +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env php -make(Illuminate\Contracts\Console\Kernel::class); - -$status = $kernel->handle( - $input = new Symfony\Component\Console\Input\ArgvInput, - new Symfony\Component\Console\Output\ConsoleOutput -); - -/* -|-------------------------------------------------------------------------- -| Shutdown The Application -|-------------------------------------------------------------------------- -| -| Once Artisan has finished running, we will fire off the shutdown events -| so that any final work may be done by the application before we shut -| down the process. This is the last thing to happen to the request. -| -*/ - -$kernel->terminate($input, $status); - -exit($status); diff --git a/Chapter03/onlineStore/bootstrap/app.php b/Chapter03/onlineStore/bootstrap/app.php deleted file mode 100644 index 037e17d..0000000 --- a/Chapter03/onlineStore/bootstrap/app.php +++ /dev/null @@ -1,55 +0,0 @@ -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/Chapter03/onlineStore/bootstrap/cache/.gitignore b/Chapter03/onlineStore/bootstrap/cache/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter03/onlineStore/bootstrap/cache/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter03/onlineStore/composer.json b/Chapter03/onlineStore/composer.json deleted file mode 100644 index 6913736..0000000 --- a/Chapter03/onlineStore/composer.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "name": "laravel/laravel", - "type": "project", - "description": "The Laravel Framework.", - "keywords": ["framework", "laravel"], - "license": "MIT", - "require": { - "php": "^8.0", - "fruitcake/laravel-cors": "^2.0.5", - "guzzlehttp/guzzle": "^7.2", - "laravel/framework": "^9.0", - "laravel/sanctum": "^2.14", - "laravel/tinker": "^2.7" - }, - "require-dev": { - "fakerphp/faker": "^1.9.1", - "laravel/sail": "^1.0.1", - "mockery/mockery": "^1.4.4", - "nunomaduro/collision": "^6.1", - "phpunit/phpunit": "^9.5.10", - "spatie/laravel-ignition": "^1.0" - }, - "autoload": { - "psr-4": { - "App\\": "app/", - "Database\\Factories\\": "database/factories/", - "Database\\Seeders\\": "database/seeders/" - } - }, - "autoload-dev": { - "psr-4": { - "Tests\\": "tests/" - } - }, - "scripts": { - "post-autoload-dump": [ - "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", - "@php artisan package:discover --ansi" - ], - "post-update-cmd": [ - "@php artisan vendor:publish --tag=laravel-assets --ansi --force" - ], - "post-root-package-install": [ - "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" - ], - "post-create-project-cmd": [ - "@php artisan key:generate --ansi" - ] - }, - "extra": { - "laravel": { - "dont-discover": [] - } - }, - "config": { - "optimize-autoloader": true, - "preferred-install": "dist", - "sort-packages": true - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/Chapter03/onlineStore/composer.lock b/Chapter03/onlineStore/composer.lock deleted file mode 100644 index 64d5967..0000000 --- a/Chapter03/onlineStore/composer.lock +++ /dev/null @@ -1,7804 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "65e85f9f959c0b087110331754d451cf", - "packages": [ - { - "name": "asm89/stack-cors", - "version": "v2.1.1", - "source": { - "type": "git", - "url": "https://github.com/asm89/stack-cors.git", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4|^5|^6" - }, - "require-dev": { - "phpunit/phpunit": "^7|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "psr-4": { - "Asm89\\Stack\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alexander", - "email": "iam.asm89@gmail.com" - } - ], - "description": "Cross-origin resource sharing library and stack middleware", - "homepage": "https://github.com/asm89/stack-cors", - "keywords": [ - "cors", - "stack" - ], - "support": { - "issues": "https://github.com/asm89/stack-cors/issues", - "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" - }, - "time": "2022-01-18T09:12:03+00:00" - }, - { - "name": "brick/math", - "version": "0.9.3", - "source": { - "type": "git", - "url": "https://github.com/brick/math.git", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", - "vimeo/psalm": "4.9.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Brick\\Math\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Arbitrary-precision arithmetic library", - "keywords": [ - "Arbitrary-precision", - "BigInteger", - "BigRational", - "arithmetic", - "bigdecimal", - "bignum", - "brick", - "math" - ], - "support": { - "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.9.3" - }, - "funding": [ - { - "url": "https://github.com/BenMorel", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/brick/math", - "type": "tidelift" - } - ], - "time": "2021-08-15T20:50:18+00:00" - }, - { - "name": "dflydev/dot-access-data", - "version": "v3.0.1", - "source": { - "type": "git", - "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c", - "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": "^3.14" - }, - "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.1" - }, - "time": "2021-08-13T13:06:58+00:00" - }, - { - "name": "doctrine/inflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "vimeo/psalm": "^4.10" - }, - "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.4" - }, - "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": "2021-10-22T20:16:43+00:00" - }, - { - "name": "doctrine/lexer", - "version": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" - } - }, - "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/1.2.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%2Flexer", - "type": "tidelift" - } - ], - "time": "2022-01-12T08:27:12+00:00" - }, - { - "name": "dragonmantank/cron-expression", - "version": "v3.3.1", - "source": { - "type": "git", - "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "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.1" - }, - "funding": [ - { - "url": "https://github.com/dragonmantank", - "type": "github" - } - ], - "time": "2022-01-18T15:43:28+00:00" - }, - { - "name": "egulias/email-validator", - "version": "3.1.2", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ee0db30118f661fb166bcffbf5d82032df484697", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^1.2", - "php": ">=7.2", - "symfony/polyfill-intl-idn": "^1.15" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^8.5.8|^9.3.3", - "vimeo/psalm": "^4" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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/3.1.2" - }, - "funding": [ - { - "url": "https://github.com/egulias", - "type": "github" - } - ], - "time": "2021-10-11T09:18:27+00:00" - }, - { - "name": "fruitcake/laravel-cors", - "version": "v2.0.5", - "source": { - "type": "git", - "url": "https://github.com/fruitcake/laravel-cors.git", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "shasum": "" - }, - "require": { - "asm89/stack-cors": "^2.0.1", - "illuminate/contracts": "^6|^7|^8|^9", - "illuminate/support": "^6|^7|^8|^9", - "php": ">=7.2", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4.3.4|^5|^6" - }, - "require-dev": { - "laravel/framework": "^6|^7.24|^8", - "orchestra/testbench-dusk": "^4|^5|^6|^7", - "phpunit/phpunit": "^6|^7|^8|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - }, - "laravel": { - "providers": [ - "Fruitcake\\Cors\\CorsServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Fruitcake\\Cors\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fruitcake", - "homepage": "https://fruitcake.nl" - }, - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", - "keywords": [ - "api", - "cors", - "crossdomain", - "laravel" - ], - "support": { - "issues": "https://github.com/fruitcake/laravel-cors/issues", - "source": "https://github.com/fruitcake/laravel-cors/tree/v2.0.5" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "time": "2022-01-03T14:53:04+00:00" - }, - { - "name": "graham-campbell/result-type", - "version": "v1.0.4", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "0690bde05318336c7221785f2a932467f98b64ca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/0690bde05318336c7221785f2a932467f98b64ca", - "reference": "0690bde05318336c7221785f2a932467f98b64ca", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "phpoption/phpoption": "^1.8" - }, - "require-dev": { - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", - "type": "tidelift" - } - ], - "time": "2021-11-21T21:41:47+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "7.4.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.8.3 || ^2.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.4.1", - "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.5 || ^9.3.5", - "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": { - "branch-alias": { - "dev-master": "7.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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.4.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": "2021-12-06T18:43:05+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "1.5.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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/1.5.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "time": "2021-10-22T20:56:57+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.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.4.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.8 || ^9.3.10" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "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.1.0" - }, - "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": "2021-10-06T17:43:30+00:00" - }, - { - "name": "laravel/framework", - "version": "v9.0.1", - "source": { - "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "shasum": "" - }, - "require": { - "doctrine/inflector": "^2.0", - "dragonmantank/cron-expression": "^3.1", - "egulias/email-validator": "^3.1", - "ext-mbstring": "*", - "ext-openssl": "*", - "laravel/serializable-closure": "^1.0", - "league/commonmark": "^2.2", - "league/flysystem": "^3.0", - "monolog/monolog": "^2.0", - "nesbot/carbon": "^2.53.1", - "php": "^8.0.2", - "psr/container": "^1.1.1|^2.0.1", - "psr/log": "^1.0|^2.0|^3.0", - "psr/simple-cache": "^1.0|^2.0|^3.0", - "ramsey/uuid": "^4.2.2", - "symfony/console": "^6.0", - "symfony/error-handler": "^6.0", - "symfony/finder": "^6.0", - "symfony/http-foundation": "^6.0", - "symfony/http-kernel": "^6.0", - "symfony/mailer": "^6.0", - "symfony/mime": "^6.0", - "symfony/process": "^6.0", - "symfony/routing": "^6.0", - "symfony/var-dumper": "^6.0", - "tijsverkoyen/css-to-inline-styles": "^2.2.2", - "vlucas/phpdotenv": "^5.4.1", - "voku/portable-ascii": "^2.0" - }, - "conflict": { - "tightenco/collect": "<5.5.33" - }, - "provide": { - "psr/container-implementation": "1.1|2.0", - "psr/simple-cache-implementation": "1.0|2.0|3.0" - }, - "replace": { - "illuminate/auth": "self.version", - "illuminate/broadcasting": "self.version", - "illuminate/bus": "self.version", - "illuminate/cache": "self.version", - "illuminate/collections": "self.version", - "illuminate/conditionable": "self.version", - "illuminate/config": "self.version", - "illuminate/console": "self.version", - "illuminate/container": "self.version", - "illuminate/contracts": "self.version", - "illuminate/cookie": "self.version", - "illuminate/database": "self.version", - "illuminate/encryption": "self.version", - "illuminate/events": "self.version", - "illuminate/filesystem": "self.version", - "illuminate/hashing": "self.version", - "illuminate/http": "self.version", - "illuminate/log": "self.version", - "illuminate/macroable": "self.version", - "illuminate/mail": "self.version", - "illuminate/notifications": "self.version", - "illuminate/pagination": "self.version", - "illuminate/pipeline": "self.version", - "illuminate/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": { - "aws/aws-sdk-php": "^3.198.1", - "doctrine/dbal": "^2.13.3|^3.1.4", - "fakerphp/faker": "^1.9.2", - "guzzlehttp/guzzle": "^7.2", - "league/flysystem-aws-s3-v3": "^3.0", - "league/flysystem-ftp": "^3.0", - "league/flysystem-sftp-v3": "^3.0", - "mockery/mockery": "^1.4.4", - "orchestra/testbench-core": "^7.0", - "pda/pheanstalk": "^4.0", - "phpstan/phpstan": "^1.0", - "phpunit/phpunit": "^9.5.8", - "predis/predis": "^1.1.9", - "symfony/amazon-mailer": "^6.0", - "symfony/cache": "^6.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.198.1).", - "brianium/paratest": "Required to run tests in parallel (^6.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", - "ext-bcmath": "Required to use the multiple_of validation rule.", - "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.", - "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.2).", - "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-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", - "mockery/mockery": "Required to use mocking (^1.4.4).", - "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).", - "predis/predis": "Required to use the predis connector (^1.1.9).", - "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.0).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^6.0).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.0).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.0).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.0).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.x-dev" - } - }, - "autoload": { - "files": [ - "src/Illuminate/Collections/helpers.php", - "src/Illuminate/Events/functions.php", - "src/Illuminate/Foundation/helpers.php", - "src/Illuminate/Support/helpers.php" - ], - "psr-4": { - "Illuminate\\": "src/Illuminate/", - "Illuminate\\Support\\": [ - "src/Illuminate/Macroable/", - "src/Illuminate/Collections/", - "src/Illuminate/Conditionable/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Laravel Framework.", - "homepage": "https://laravel.com", - "keywords": [ - "framework", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2022-02-09T15:00:05+00:00" - }, - { - "name": "laravel/sanctum", - "version": "v2.14.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/sanctum.git", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/0647a87140c7522e75826cffcadb3ad6e01f71e9", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/contracts": "^6.9|^7.0|^8.0|^9.0", - "illuminate/database": "^6.9|^7.0|^8.0|^9.0", - "illuminate/support": "^6.9|^7.0|^8.0|^9.0", - "php": "^7.2|^8.0" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0", - "phpunit/phpunit": "^8.0|^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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": "2022-01-12T15:07:43+00:00" - }, - { - "name": "laravel/serializable-closure", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/serializable-closure.git", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/65c9faf50d567b65d81764a44526545689e3fe63", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "pestphp/pest": "^1.18", - "phpstan/phpstan": "^0.12.98", - "symfony/var-dumper": "^5.3" - }, - "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": "2022-02-01T16:29:39+00:00" - }, - { - "name": "laravel/tinker", - "version": "v2.7.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/tinker.git", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/5f2f9815b7631b9f586a3de7933c25f9327d4073", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073", - "shasum": "" - }, - "require": { - "illuminate/console": "^6.0|^7.0|^8.0|^9.0", - "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.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", - "phpunit/phpunit": "^8.5.8|^9.3.3" - }, - "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.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.7.0" - }, - "time": "2022-01-10T08:52:49+00:00" - }, - { - "name": "league/commonmark", - "version": "2.2.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/commonmark.git", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "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.15" - }, - "require-dev": { - "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.0", - "commonmark/commonmark.js": "0.30.0", - "composer/package-versions-deprecated": "^1.8", - "erusev/parsedown": "^1.0", - "ext-json": "*", - "github/gfm": "0.29.0", - "michelf/php-markdown": "^1.4", - "phpstan/phpstan": "^0.12.88 || ^1.0.0", - "phpunit/phpunit": "^9.5.5", - "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", - "unleashedtech/php-coding-standard": "^3.1", - "vimeo/psalm": "^4.7.3" - }, - "suggest": { - "symfony/yaml": "v2.3+ required if using the Front Matter extension" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.3-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": "2022-01-25T14:37:33+00:00" - }, - { - "name": "league/config", - "version": "v1.1.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/config.git", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/config/zipball/a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^3.0.1", - "nette/schema": "^1.2", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.90", - "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": "2021-08-14T12:15:32+00:00" - }, - { - "name": "league/flysystem", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9f8b4260031bfef5497477da53dd57b2aaff0e06", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06", - "shasum": "" - }, - "require": { - "ext-json": "*", - "league/mime-type-detection": "^1.0.0", - "php": "^8.0.2" - }, - "conflict": { - "guzzlehttp/guzzle": "<7.0", - "guzzlehttp/ringphp": "<1.1.1", - "symfony/http-client": "<5.2" - }, - "require-dev": { - "async-aws/s3": "^1.5", - "async-aws/simple-s3": "^1.0", - "aws/aws-sdk-php": "^3.198.1", - "composer/semver": "^3.0", - "ext-fileinfo": "*", - "ext-ftp": "*", - "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.5", - "google/cloud-storage": "^1.23", - "phpseclib/phpseclib": "^2.0", - "phpstan/phpstan": "^0.12.26", - "phpunit/phpunit": "^9.5.11", - "sabre/dav": "^4.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.0.3" - }, - "funding": [ - { - "url": "https://offset.earth/frankdejonge", - "type": "custom" - }, - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2022-01-31T19:41:04+00:00" - }, - { - "name": "league/mime-type-detection", - "version": "1.9.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/aa70e813a6ad3d1558fc927863d47309b4c23e69", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.2", - "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" - }, - "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.9.0" - }, - "funding": [ - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2021-11-21T11:48:40+00:00" - }, - { - "name": "monolog/monolog", - "version": "2.3.5", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd4380d6fc37626e2f799f29d91195040137eba9", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "provide": { - "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7", - "graylog2/gelf-php": "^1.4.2", - "mongodb/mongodb": "^1.8", - "php-amqplib/php-amqplib": "~2.4 || ^3", - "php-console/php-console": "^3.1.3", - "phpspec/prophecy": "^1.6.1", - "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5", - "predis/predis": "^1.1", - "rollbar/rollbar": "^1.3", - "ruflin/elastica": ">=0.90@dev", - "swiftmailer/swiftmailer": "^5.3|^6.0" - }, - "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", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "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": "2.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/2.3.5" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" - } - ], - "time": "2021-10-01T21:08:31+00:00" - }, - { - "name": "nesbot/carbon", - "version": "2.56.0", - "source": { - "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1.8 || ^8.0", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "doctrine/dbal": "^2.0 || ^3.0", - "doctrine/orm": "^2.7", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "phpmd/phpmd": "^2.9", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.54 || ^1.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.14", - "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://opencollective.com/Carbon", - "type": "open_collective" - }, - { - "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", - "type": "tidelift" - } - ], - "time": "2022-01-21T17:08:38+00:00" - }, - { - "name": "nette/schema", - "version": "v1.2.2", - "source": { - "type": "git", - "url": "https://github.com/nette/schema.git", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/9a39cef03a5b34c7de64f551538cbba05c2be5df", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df", - "shasum": "" - }, - "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": ">=7.1 <8.2" - }, - "require-dev": { - "nette/tester": "^2.3 || ^2.4", - "phpstan/phpstan-nette": "^0.12", - "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.2" - }, - "time": "2021-10-15T11:40:02+00:00" - }, - { - "name": "nette/utils", - "version": "v3.2.7", - "source": { - "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/0af4e3de4df9f1543534beab255ccf459e7a2c99", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99", - "shasum": "" - }, - "require": { - "php": ">=7.2 <8.2" - }, - "conflict": { - "nette/di": "<3.0.6" - }, - "require-dev": { - "nette/tester": "~2.0", - "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.3" - }, - "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()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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 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/v3.2.7" - }, - "time": "2022-01-24T11:29:14+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.13.2", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", - "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.13.2" - }, - "time": "2021-11-30T19:35:32+00:00" - }, - { - "name": "phpoption/phpoption", - "version": "1.8.1", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-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.8.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", - "type": "tidelift" - } - ], - "time": "2021-12-04T23:24:31+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.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.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": "http://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/tree/master" - }, - "time": "2020-06-29T06:28:15+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.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": "http://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/master" - }, - "time": "2019-04-30T12:38:16+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.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": "http://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/master" - }, - "time": "2016-08-06T14:39: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.1", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "570292577277f06f590635381a7f761a6cf4f026" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/570292577277f06f590635381a7f761a6cf4f026", - "reference": "570292577277f06f590635381a7f761a6cf4f026", - "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" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "3.17.05.02" - }, - "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.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." - }, - "bin": [ - "bin/psysh" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "0.11.x-dev" - } - }, - "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.1" - }, - "time": "2022-01-03T13:58:38+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": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/ramsey/collection.git", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "shasum": "" - }, - "require": { - "php": "^7.3 || ^8", - "symfony/polyfill-php81": "^1.23" - }, - "require-dev": { - "captainhook/captainhook": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "ergebnis/composer-normalize": "^2.6", - "fakerphp/faker": "^1.5", - "hamcrest/hamcrest-php": "^2", - "jangregor/phpstan-prophecy": "^0.8", - "mockery/mockery": "^1.3", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1", - "phpstan/phpstan": "^0.12.32", - "phpstan/phpstan-mockery": "^0.12.5", - "phpstan/phpstan-phpunit": "^0.12.11", - "phpunit/phpunit": "^8.5 || ^9", - "psy/psysh": "^0.10.4", - "slevomat/coding-standard": "^6.3", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.4" - }, - "type": "library", - "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/1.2.2" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "time": "2021-10-10T03:01:02+00:00" - }, - { - "name": "ramsey/uuid", - "version": "4.2.3", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "shasum": "" - }, - "require": { - "brick/math": "^0.8 || ^0.9", - "ext-json": "*", - "php": "^7.2 || ^8.0", - "ramsey/collection": "^1.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php80": "^1.14" - }, - "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", - "moontoast/math": "^1.1", - "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.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-mockery": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^8.5 || ^9", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" - }, - "suggest": { - "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-ctype": "Enables faster processing of character classification using ctype functions.", - "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": { - "branch-alias": { - "dev-main": "4.x-dev" - }, - "captainhook": { - "force-install": true - } - }, - "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "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.2.3" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2021-09-25T23:10:38+00:00" - }, - { - "name": "symfony/console", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/22e8efd019c3270c4f79376234a3f8752cd25490", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.4|^6.0" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/css-selector", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/1955d595c12c111629cc814d3f2a2ff13580508a", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a", - "shasum": "" - }, - "require": { - "php": ">=8.0.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/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-11-01T23:48:49+00:00" - }, - { - "name": "symfony/error-handler", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/20343b3bad7ebafa38138ddcb97290a24722b57b", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" - }, - "bin": [ - "Resources/bin/patch-type-declarations" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to manage errors and ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6472ea2dd415e925b90ca82be64b8bc6157f3934", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/event-dispatcher-contracts": "^2|^3" - }, - "conflict": { - "symfony/dependency-injection": "<5.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^5.4|^6.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/aa5422287b75594b90ee9cd807caf8f0df491385", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/event-dispatcher": "^1" - }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-07-15T12:33:35+00:00" - }, - { - "name": "symfony/finder", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/8661b74dbabc23223f38c9b99d3f8ade71170430", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ad157299ced81a637fade1efcadd688d6deba5c1", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1" - }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/cache": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0" - }, - "suggest": { - "symfony/mime": "To use the file extension guesser" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v6.0.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/error-handler": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", - "symfony/twig-bridge": "<5.4", - "symfony/validator": "<5.4", - "twig/twig": "<2.13" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/process": "^5.4|^6.0", - "symfony/routing": "^5.4|^6.0", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-29T18:12:46+00:00" - }, - { - "name": "symfony/mailer", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mailer.git", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "shasum": "" - }, - "require": { - "egulias/email-validator": "^2.1.10|^3", - "php": ">=8.0.2", - "psr/event-dispatcher": "^1", - "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3" - }, - "conflict": { - "symfony/http-kernel": "<5.4" - }, - "require-dev": { - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/messenger": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/mime", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/2cd9601efd040e56f43360daa68f3c6b0534923a", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "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" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "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.24.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": "2021-10-20T20:35:02+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-11-23T21:10:46+00:00" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44", - "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.23-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.24.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": "2021-09-14T14:02:44+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.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": "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.24.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": "2021-11-30T18:21:41+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-05-27T09:17:38+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:33+00:00" - }, - { - "name": "symfony/polyfill-php81", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:11+00:00" - }, - { - "name": "symfony/process", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/298ed357274c1868c20a0061df256a1250a6c4af", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/routing", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/yaml": "<5.4" - }, - "require-dev": { - "doctrine/annotations": "^1.12", - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/36715ebf9fb9db73db0cb24263c79077c6fe8603", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/container": "^2.0" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "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.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": "2021-11-04T17:53:12+00:00" - }, - { - "name": "symfony/string", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/522144f0c4c004c80d56fa47e40e17028e2eefc2", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.0" - }, - "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/translation-contracts": "^2.0|^3.0", - "symfony/var-exporter": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "files": [ - "Resources/functions.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 an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/translation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/71bb15335798f8c4da110911bcf2d2fead7a430d", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.3|^3.0" - }, - "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" - }, - "provide": { - "symfony/translation-implementation": "2.3|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-07T00:29:03+00:00" - }, - { - "name": "symfony/translation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "suggest": { - "symfony/translation-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - } - }, - "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.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": "2021-09-07T12:43:40+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7b701676fc64f9ef11f9b4870f16b48f66be4834", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<5.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-17T16:30:44+00:00" - }, - { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.4", - "source": { - "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" - } - ], - "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", - "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "support": { - "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" - }, - "time": "2021-12-08T09:12:39+00:00" - }, - { - "name": "vlucas/phpdotenv", - "version": "v5.4.1", - "source": { - "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", - "shasum": "" - }, - "require": { - "ext-pcre": "*", - "graham-campbell/result-type": "^1.0.2", - "php": "^7.1.3 || ^8.0", - "phpoption/phpoption": "^1.8", - "symfony/polyfill-ctype": "^1.23", - "symfony/polyfill-mbstring": "^1.23.1", - "symfony/polyfill-php80": "^1.23.1" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" - }, - "suggest": { - "ext-filter": "Required to use the boolean validator." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.4-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.4.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", - "type": "tidelift" - } - ], - "time": "2021-12-12T23:22:04+00:00" - }, - { - "name": "voku/portable-ascii", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/voku/portable-ascii.git", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/9bd89e83cecdf8c37b64909454249eaed98b2c89", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89", - "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.0" - }, - "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-01-24T18:59:03+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "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.10.0" - }, - "time": "2021-03-09T10:59:23+00:00" - } - ], - "packages-dev": [ - { - "name": "doctrine/instantiator", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.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%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2020-11-10T18:47:58+00:00" - }, - { - "name": "facade/ignition-contracts", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/facade/ignition-contracts.git", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^v2.15.8", - "phpunit/phpunit": "^9.3.11", - "vimeo/psalm": "^3.17.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Facade\\IgnitionContracts\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://flareapp.io", - "role": "Developer" - } - ], - "description": "Solution contracts for Ignition", - "homepage": "https://github.com/facade/ignition-contracts", - "keywords": [ - "contracts", - "flare", - "ignition" - ], - "support": { - "issues": "https://github.com/facade/ignition-contracts/issues", - "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" - }, - "time": "2020-10-16T08:27:54+00:00" - }, - { - "name": "fakerphp/faker", - "version": "v1.19.0", - "source": { - "type": "git", - "url": "https://github.com/FakerPHP/Faker.git", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^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": "*", - "symfony/phpunit-bridge": "^4.4 || ^5.2" - }, - "suggest": { - "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", - "ext-curl": "Required by Faker\\Provider\\Image to download images.", - "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", - "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.19-dev" - } - }, - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "François Zaninotto" - } - ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], - "support": { - "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0" - }, - "time": "2022-02-02T17:38:57+00:00" - }, - { - "name": "filp/whoops", - "version": "2.14.5", - "source": { - "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "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.14.5" - }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "time": "2022-01-07T12:00:00+00:00" - }, - { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "shasum": "" - }, - "require": { - "php": "^5.3|^7.0|^8.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" - }, - "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "classmap": [ - "hamcrest" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "This is the PHP port of Hamcrest Matchers", - "keywords": [ - "test" - ], - "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" - }, - "time": "2020-07-09T08:09:16+00:00" - }, - { - "name": "laravel/sail", - "version": "v1.13.2", - "source": { - "type": "git", - "url": "https://github.com/laravel/sail.git", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.0|^9.0", - "illuminate/contracts": "^8.0|^9.0", - "illuminate/support": "^8.0|^9.0", - "php": "^7.3|^8.0" - }, - "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": "2022-02-08T14:14:12+00:00" - }, - { - "name": "mockery/mockery", - "version": "1.5.0", - "source": { - "type": "git", - "url": "https://github.com/mockery/mockery.git", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "shasum": "" - }, - "require": { - "hamcrest/hamcrest-php": "^2.0.1", - "lib-pcre": ">=7.0", - "php": "^7.3 || ^8.0" - }, - "conflict": { - "phpunit/phpunit": "<8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-0": { - "Mockery": "library/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" - } - ], - "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": { - "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.5.0" - }, - "time": "2022-01-20T13:18:17+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.10.2", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "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.10.2" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2020-11-13T09:40:50+00:00" - }, - { - "name": "nunomaduro/collision", - "version": "v6.1.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/collision.git", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "shasum": "" - }, - "require": { - "facade/ignition-contracts": "^1.0.2", - "filp/whoops": "^2.14.5", - "php": "^8.0.0", - "symfony/console": "^6.0.2" - }, - "require-dev": { - "brianium/paratest": "^6.4.1", - "laravel/framework": "^9.0", - "nunomaduro/larastan": "^1.0.2", - "nunomaduro/mock-final-classes": "^1.1.0", - "orchestra/testbench": "^7.0.0", - "phpunit/phpunit": "^9.5.11" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "6.x-dev" - }, - "laravel": { - "providers": [ - "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" - ] - } - }, - "autoload": { - "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": "2022-01-18T17:49:08+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.1.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/15a90844ad40f127afd244c0cad228de2a80052a", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a", - "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.1.1" - }, - "time": "2022-02-07T21:56:48+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.6.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "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.6.0" - }, - "time": "2022-01-04T19:58:01+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" - }, - "time": "2021-12-08T12:19:24+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "9.2.10", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d5850aaf931743067f4bfc1ae4cbd06468400687", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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 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", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.10" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-05T09:12:13+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "3.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-02T12:48:52+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "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/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:58:55+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T05:33:50+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.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/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:16:10+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "9.5.13", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/597cb647654ede35e43b137926dfdfef0fb11743", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.3.1", - "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": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.7", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", - "sebastian/version": "^3.0.2" - }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.13" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-01-24T07:33:35+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:08:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "1.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:08:54+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:30:19+00:00" - }, - { - "name": "sebastian/comparator", - "version": "4.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:49:45+00:00" - }, - { - "name": "sebastian/complexity", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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 calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:52:27+00:00" - }, - { - "name": "sebastian/diff", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:10:38+00:00" - }, - { - "name": "sebastian/environment", - "version": "5.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-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": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:52:38+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "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", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-11-11T14:18:36+00:00" - }, - { - "name": "sebastian/global-state", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-11T13:31:12+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-28T06:42:11+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "http://www.github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:17:30+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:45:17+00:00" - }, - { - "name": "sebastian/type", - "version": "2.3.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-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/2.3.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-15T12:49:02+00:00" - }, - { - "name": "sebastian/version", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:39:44+00:00" - }, - { - "name": "spatie/backtrace", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/backtrace.git", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "ext-json": "*", - "phpunit/phpunit": "^9.3", - "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": { - "issues": "https://github.com/spatie/backtrace/issues", - "source": "https://github.com/spatie/backtrace/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/sponsors/spatie", - "type": "github" - }, - { - "url": "https://spatie.be/open-source/support-us", - "type": "other" - } - ], - "time": "2021-11-09T10:57:15+00:00" - }, - { - "name": "spatie/flare-client-php", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/flare-client-php.git", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "shasum": "" - }, - "require": { - "illuminate/pipeline": "^8.0|^9.0", - "php": "^8.0", - "spatie/backtrace": "^1.2", - "symfony/http-foundation": "^5.0|^6.0", - "symfony/mime": "^5.2|^6.0", - "symfony/process": "^5.2|^6.0", - "symfony/var-dumper": "^5.2|^6.0" - }, - "require-dev": { - "dms/phpunit-arraysubset-asserts": "^0.3.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/phpunit-snapshot-assertions": "^4.0" - }, - "type": "library", - "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.0.1" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2022-02-04T15:21:00+00:00" - }, - { - "name": "spatie/ignition", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/spatie/ignition.git", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/d2d5ba823af3004268556e87dfc94449e4159f5a", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "monolog/monolog": "^2.0", - "php": "^8.0", - "spatie/flare-client-php": "^1.0", - "symfony/console": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "mockery/mockery": "^1.4", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/ray": "^1.32", - "symfony/process": "^5.4|^6.0" - }, - "type": "library", - "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": "2022-01-19T12:57:41+00:00" - }, - { - "name": "spatie/laravel-ignition", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/68250225a9f83b086462c2af1b1139dfde48fbd2", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*", - "illuminate/support": "^8.77|^9.0", - "monolog/monolog": "^2.3", - "php": "^8.0", - "spatie/flare-client-php": "^1.0.1", - "spatie/ignition": "^1.0", - "symfony/console": "^5.0|^6.0", - "symfony/var-dumper": "^5.0|^6.0" - }, - "require-dev": { - "filp/whoops": "^2.14", - "livewire/livewire": "^2.8|dev-develop", - "mockery/mockery": "^1.4", - "nunomaduro/larastan": "^1.0", - "orchestra/testbench": "^6.23|^7.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/laravel-ray": "^1.27" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Spatie\\LaravelIgnition\\IgnitionServiceProvider" - ], - "aliases": { - "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" - } - } - }, - "autoload": { - "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": "2022-02-04T15:25:56+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2021-07-28T10:34:58+00:00" - } - ], - "aliases": [], - "minimum-stability": "dev", - "stability-flags": [], - "prefer-stable": true, - "prefer-lowest": false, - "platform": { - "php": "^8.0" - }, - "platform-dev": [], - "plugin-api-version": "2.1.0" -} diff --git a/Chapter03/onlineStore/config/app.php b/Chapter03/onlineStore/config/app.php deleted file mode 100644 index 1941d7c..0000000 --- a/Chapter03/onlineStore/config/app.php +++ /dev/null @@ -1,197 +0,0 @@ - env('APP_NAME', 'Laravel'), - - /* - |-------------------------------------------------------------------------- - | Application Environment - |-------------------------------------------------------------------------- - | - | This value determines the "environment" your application is currently - | running in. This may determine how you prefer to configure various - | services the application utilizes. Set this in your ".env" file. - | - */ - - 'env' => env('APP_ENV', 'production'), - - /* - |-------------------------------------------------------------------------- - | Application Debug Mode - |-------------------------------------------------------------------------- - | - | When your application is in debug mode, detailed error messages with - | stack traces will be shown on every error that occurs within your - | application. If disabled, a simple generic error page is shown. - | - */ - - 'debug' => (bool) env('APP_DEBUG', false), - - /* - |-------------------------------------------------------------------------- - | Application URL - |-------------------------------------------------------------------------- - | - | This URL is used by the console to properly generate URLs when using - | the Artisan command line tool. You should set this to the root of - | your application so that it is used when running Artisan tasks. - | - */ - - 'url' => env('APP_URL', 'http://localhost'), - - 'asset_url' => env('ASSET_URL', null), - - /* - |-------------------------------------------------------------------------- - | 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', - - /* - |-------------------------------------------------------------------------- - | 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' => [ - - /* - * Laravel Framework Service Providers... - */ - Illuminate\Auth\AuthServiceProvider::class, - Illuminate\Broadcasting\BroadcastServiceProvider::class, - Illuminate\Bus\BusServiceProvider::class, - Illuminate\Cache\CacheServiceProvider::class, - Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, - Illuminate\Cookie\CookieServiceProvider::class, - Illuminate\Database\DatabaseServiceProvider::class, - Illuminate\Encryption\EncryptionServiceProvider::class, - Illuminate\Filesystem\FilesystemServiceProvider::class, - Illuminate\Foundation\Providers\FoundationServiceProvider::class, - Illuminate\Hashing\HashServiceProvider::class, - Illuminate\Mail\MailServiceProvider::class, - Illuminate\Notifications\NotificationServiceProvider::class, - Illuminate\Pagination\PaginationServiceProvider::class, - Illuminate\Pipeline\PipelineServiceProvider::class, - Illuminate\Queue\QueueServiceProvider::class, - Illuminate\Redis\RedisServiceProvider::class, - Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, - Illuminate\Session\SessionServiceProvider::class, - Illuminate\Translation\TranslationServiceProvider::class, - Illuminate\Validation\ValidationServiceProvider::class, - Illuminate\View\ViewServiceProvider::class, - - /* - * 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, - - ], - - /* - |-------------------------------------------------------------------------- - | 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([ - // ... - ])->toArray(), - -]; diff --git a/Chapter03/onlineStore/config/auth.php b/Chapter03/onlineStore/config/auth.php deleted file mode 100644 index d8c6cee..0000000 --- a/Chapter03/onlineStore/config/auth.php +++ /dev/null @@ -1,111 +0,0 @@ - [ - '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 expire 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. - | - */ - - 'passwords' => [ - 'users' => [ - 'provider' => 'users', - 'table' => 'password_resets', - '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/Chapter03/onlineStore/config/broadcasting.php b/Chapter03/onlineStore/config/broadcasting.php deleted file mode 100644 index 67fcbbd..0000000 --- a/Chapter03/onlineStore/config/broadcasting.php +++ /dev/null @@ -1,67 +0,0 @@ - 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'), - 'useTLS' => true, - ], - '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/Chapter03/onlineStore/config/cache.php b/Chapter03/onlineStore/config/cache.php deleted file mode 100644 index 8736c7a..0000000 --- a/Chapter03/onlineStore/config/cache.php +++ /dev/null @@ -1,110 +0,0 @@ - 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'), - ], - - '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 a RAM based store such as APC or Memcached, there might - | be other applications utilizing the same cache. So, we'll specify a - | value to get prefixed to all our keys so we can avoid collisions. - | - */ - - 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'), - -]; diff --git a/Chapter03/onlineStore/config/cors.php b/Chapter03/onlineStore/config/cors.php deleted file mode 100644 index 8a39e6d..0000000 --- a/Chapter03/onlineStore/config/cors.php +++ /dev/null @@ -1,34 +0,0 @@ - ['api/*', 'sanctum/csrf-cookie'], - - 'allowed_methods' => ['*'], - - 'allowed_origins' => ['*'], - - 'allowed_origins_patterns' => [], - - 'allowed_headers' => ['*'], - - 'exposed_headers' => [], - - 'max_age' => 0, - - 'supports_credentials' => false, - -]; diff --git a/Chapter03/onlineStore/config/database.php b/Chapter03/onlineStore/config/database.php deleted file mode 100644 index 0faebae..0000000 --- a/Chapter03/onlineStore/config/database.php +++ /dev/null @@ -1,147 +0,0 @@ - env('DB_CONNECTION', 'mysql'), - - /* - |-------------------------------------------------------------------------- - | Database Connections - |-------------------------------------------------------------------------- - | - | Here are each of the database connections setup for your application. - | Of course, examples of configuring each database platform that is - | supported by Laravel is shown below to make development simple. - | - | - | All database work in Laravel is done through the PHP PDO facilities - | so make sure you have the driver for your particular database of - | choice installed on your machine before you begin development. - | - */ - - 'connections' => [ - - 'sqlite' => [ - 'driver' => 'sqlite', - 'url' => env('DATABASE_URL'), - 'database' => env('DB_DATABASE', database_path('database.sqlite')), - 'prefix' => '', - 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), - ], - - 'mysql' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '3306'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'unix_socket' => env('DB_SOCKET', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - 'pgsql' => [ - 'driver' => 'pgsql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '5432'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - 'search_path' => 'public', - 'sslmode' => 'prefer', - ], - - 'sqlsrv' => [ - 'driver' => 'sqlsrv', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', 'localhost'), - 'port' => env('DB_PORT', '1433'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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'), - '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'), - 'password' => env('REDIS_PASSWORD'), - 'port' => env('REDIS_PORT', '6379'), - 'database' => env('REDIS_CACHE_DB', '1'), - ], - - ], - -]; diff --git a/Chapter03/onlineStore/config/filesystems.php b/Chapter03/onlineStore/config/filesystems.php deleted file mode 100644 index cf5abce..0000000 --- a/Chapter03/onlineStore/config/filesystems.php +++ /dev/null @@ -1,73 +0,0 @@ - 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 setup for each driver as an example of the required options. - | - | Supported Drivers: "local", "ftp", "sftp", "s3" - | - */ - - 'disks' => [ - - 'local' => [ - 'driver' => 'local', - 'root' => storage_path('app'), - ], - - 'public' => [ - 'driver' => 'local', - 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', - 'visibility' => 'public', - ], - - '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), - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter03/onlineStore/config/hashing.php b/Chapter03/onlineStore/config/hashing.php deleted file mode 100644 index bcd3be4..0000000 --- a/Chapter03/onlineStore/config/hashing.php +++ /dev/null @@ -1,52 +0,0 @@ - '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/Chapter03/onlineStore/config/logging.php b/Chapter03/onlineStore/config/logging.php deleted file mode 100644 index fefe088..0000000 --- a/Chapter03/onlineStore/config/logging.php +++ /dev/null @@ -1,119 +0,0 @@ - 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' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), - - /* - |-------------------------------------------------------------------------- - | 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'), - ], - - 'daily' => [ - 'driver' => 'daily', - 'path' => storage_path('logs/laravel.log'), - 'level' => env('LOG_LEVEL', 'debug'), - 'days' => 14, - ], - - 'slack' => [ - 'driver' => 'slack', - 'url' => env('LOG_SLACK_WEBHOOK_URL'), - 'username' => 'Laravel Log', - 'emoji' => ':boom:', - 'level' => env('LOG_LEVEL', 'critical'), - ], - - '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'), - ], - ], - - 'stderr' => [ - 'driver' => 'monolog', - 'level' => env('LOG_LEVEL', 'debug'), - 'handler' => StreamHandler::class, - 'formatter' => env('LOG_STDERR_FORMATTER'), - 'with' => [ - 'stream' => 'php://stderr', - ], - ], - - 'syslog' => [ - 'driver' => 'syslog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'errorlog' => [ - 'driver' => 'errorlog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'null' => [ - 'driver' => 'monolog', - 'handler' => NullHandler::class, - ], - - 'emergency' => [ - 'path' => storage_path('logs/laravel.log'), - ], - ], - -]; diff --git a/Chapter03/onlineStore/config/mail.php b/Chapter03/onlineStore/config/mail.php deleted file mode 100644 index 87b6fe3..0000000 --- a/Chapter03/onlineStore/config/mail.php +++ /dev/null @@ -1,117 +0,0 @@ - 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", - | "postmark", "log", "array", "failover" - | - */ - - 'mailers' => [ - 'smtp' => [ - 'transport' => 'smtp', - '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, - ], - - 'ses' => [ - 'transport' => 'ses', - ], - - 'mailgun' => [ - 'transport' => 'mailgun', - ], - - 'postmark' => [ - 'transport' => 'postmark', - ], - - 'sendmail' => [ - 'transport' => 'sendmail', - 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -t -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/Chapter03/onlineStore/config/queue.php b/Chapter03/onlineStore/config/queue.php deleted file mode 100644 index 25ea5a8..0000000 --- a/Chapter03/onlineStore/config/queue.php +++ /dev/null @@ -1,93 +0,0 @@ - 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, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter03/onlineStore/config/sanctum.php b/Chapter03/onlineStore/config/sanctum.php deleted file mode 100644 index 9281c92..0000000 --- a/Chapter03/onlineStore/config/sanctum.php +++ /dev/null @@ -1,65 +0,0 @@ - explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( - '%s%s', - 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', - env('APP_URL') ? ','.parse_url(env('APP_URL'), PHP_URL_HOST) : '' - ))), - - /* - |-------------------------------------------------------------------------- - | 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/Chapter03/onlineStore/config/services.php b/Chapter03/onlineStore/config/services.php deleted file mode 100644 index 2a1d616..0000000 --- a/Chapter03/onlineStore/config/services.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - 'domain' => env('MAILGUN_DOMAIN'), - 'secret' => env('MAILGUN_SECRET'), - 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), - ], - - '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/Chapter03/onlineStore/config/session.php b/Chapter03/onlineStore/config/session.php deleted file mode 100644 index 8fed97c..0000000 --- a/Chapter03/onlineStore/config/session.php +++ /dev/null @@ -1,201 +0,0 @@ - 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/Chapter03/onlineStore/config/view.php b/Chapter03/onlineStore/config/view.php deleted file mode 100644 index 22b8a18..0000000 --- a/Chapter03/onlineStore/config/view.php +++ /dev/null @@ -1,36 +0,0 @@ - [ - 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/Chapter03/onlineStore/database/.gitignore b/Chapter03/onlineStore/database/.gitignore deleted file mode 100644 index 9b19b93..0000000 --- a/Chapter03/onlineStore/database/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.sqlite* diff --git a/Chapter03/onlineStore/database/factories/UserFactory.php b/Chapter03/onlineStore/database/factories/UserFactory.php deleted file mode 100644 index d6ca926..0000000 --- a/Chapter03/onlineStore/database/factories/UserFactory.php +++ /dev/null @@ -1,42 +0,0 @@ - - */ -class UserFactory extends Factory -{ - /** - * Define the model's default state. - * - * @return array - */ - public function definition() - { - return [ - 'name' => $this->faker->name(), - 'email' => $this->faker->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. - * - * @return \Illuminate\Database\Eloquent\Factories\Factory - */ - public function unverified() - { - return $this->state(function (array $attributes) { - return [ - 'email_verified_at' => null, - ]; - }); - } -} diff --git a/Chapter03/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php b/Chapter03/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php deleted file mode 100644 index cf6b776..0000000 --- a/Chapter03/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->string('name'); - $table->string('email')->unique(); - $table->timestamp('email_verified_at')->nullable(); - $table->string('password'); - $table->rememberToken(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('users'); - } -}; diff --git a/Chapter03/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php b/Chapter03/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php deleted file mode 100644 index fcacb80..0000000 --- a/Chapter03/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php +++ /dev/null @@ -1,32 +0,0 @@ -string('email')->index(); - $table->string('token'); - $table->timestamp('created_at')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('password_resets'); - } -}; diff --git a/Chapter03/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/Chapter03/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php deleted file mode 100644 index 1719198..0000000 --- a/Chapter03/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php +++ /dev/null @@ -1,36 +0,0 @@ -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. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('failed_jobs'); - } -}; diff --git a/Chapter03/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/Chapter03/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php deleted file mode 100644 index fd235f8..0000000 --- a/Chapter03/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->morphs('tokenable'); - $table->string('name'); - $table->string('token', 64)->unique(); - $table->text('abilities')->nullable(); - $table->timestamp('last_used_at')->nullable(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('personal_access_tokens'); - } -}; diff --git a/Chapter03/onlineStore/database/seeders/DatabaseSeeder.php b/Chapter03/onlineStore/database/seeders/DatabaseSeeder.php deleted file mode 100644 index 71f673f..0000000 --- a/Chapter03/onlineStore/database/seeders/DatabaseSeeder.php +++ /dev/null @@ -1,19 +0,0 @@ -create(); - } -} diff --git a/Chapter03/onlineStore/lang/en.json b/Chapter03/onlineStore/lang/en.json deleted file mode 100644 index 577680d..0000000 --- a/Chapter03/onlineStore/lang/en.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "The :attribute must contain at least one letter.": "The :attribute must contain at least one letter.", - "The :attribute must contain at least one number.": "The :attribute must contain at least one number.", - "The :attribute must contain at least one symbol.": "The :attribute must contain at least one symbol.", - "The :attribute must contain at least one uppercase and one lowercase letter.": "The :attribute must contain at least one uppercase and one lowercase letter.", - "The given :attribute has appeared in a data leak. Please choose a different :attribute.": "The given :attribute has appeared in a data leak. Please choose a different :attribute." -} diff --git a/Chapter03/onlineStore/lang/en/auth.php b/Chapter03/onlineStore/lang/en/auth.php deleted file mode 100644 index 6598e2c..0000000 --- a/Chapter03/onlineStore/lang/en/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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/Chapter03/onlineStore/lang/en/pagination.php b/Chapter03/onlineStore/lang/en/pagination.php deleted file mode 100644 index d481411..0000000 --- a/Chapter03/onlineStore/lang/en/pagination.php +++ /dev/null @@ -1,19 +0,0 @@ - '« Previous', - 'next' => 'Next »', - -]; diff --git a/Chapter03/onlineStore/lang/en/passwords.php b/Chapter03/onlineStore/lang/en/passwords.php deleted file mode 100644 index 2345a56..0000000 --- a/Chapter03/onlineStore/lang/en/passwords.php +++ /dev/null @@ -1,22 +0,0 @@ - '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/Chapter03/onlineStore/lang/en/validation.php b/Chapter03/onlineStore/lang/en/validation.php deleted file mode 100644 index 783003c..0000000 --- a/Chapter03/onlineStore/lang/en/validation.php +++ /dev/null @@ -1,163 +0,0 @@ - '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' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - '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' => [ - 'numeric' => 'The :attribute must be greater than :value.', - 'file' => 'The :attribute must be greater than :value kilobytes.', - 'string' => 'The :attribute must be greater than :value characters.', - 'array' => 'The :attribute must have more than :value items.', - ], - 'gte' => [ - 'numeric' => 'The :attribute must be greater than or equal to :value.', - 'file' => 'The :attribute must be greater than or equal to :value kilobytes.', - 'string' => 'The :attribute must be greater than or equal to :value characters.', - 'array' => 'The :attribute must have :value items or more.', - ], - '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' => [ - 'numeric' => 'The :attribute must be less than :value.', - 'file' => 'The :attribute must be less than :value kilobytes.', - 'string' => 'The :attribute must be less than :value characters.', - 'array' => 'The :attribute must have less than :value items.', - ], - 'lte' => [ - 'numeric' => 'The :attribute must be less than or equal to :value.', - 'file' => 'The :attribute must be less than or equal to :value kilobytes.', - 'string' => 'The :attribute must be less than or equal to :value characters.', - 'array' => 'The :attribute must not have more than :value items.', - ], - 'mac_address' => 'The :attribute must be a valid MAC address.', - 'max' => [ - 'numeric' => 'The :attribute must not be greater than :max.', - 'file' => 'The :attribute must not be greater than :max kilobytes.', - 'string' => 'The :attribute must not be greater than :max characters.', - 'array' => 'The :attribute must not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - '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.', - 'password' => 'The password is incorrect.', - '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' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - '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/Chapter03/onlineStore/package.json b/Chapter03/onlineStore/package.json deleted file mode 100644 index 7a9aecd..0000000 --- a/Chapter03/onlineStore/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "private": true, - "scripts": { - "dev": "npm run development", - "development": "mix", - "watch": "mix watch", - "watch-poll": "mix watch -- --watch-options-poll=1000", - "hot": "mix watch --hot", - "prod": "npm run production", - "production": "mix --production" - }, - "devDependencies": { - "axios": "^0.25", - "laravel-mix": "^6.0.6", - "lodash": "^4.17.19", - "postcss": "^8.1.14" - } -} diff --git a/Chapter03/onlineStore/phpunit.xml b/Chapter03/onlineStore/phpunit.xml deleted file mode 100644 index 2ac86a1..0000000 --- a/Chapter03/onlineStore/phpunit.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - ./tests/Unit - - - ./tests/Feature - - - - - ./app - - - - - - - - - - - - - - diff --git a/Chapter03/onlineStore/public/.htaccess b/Chapter03/onlineStore/public/.htaccess deleted file mode 100644 index 3aec5e2..0000000 --- a/Chapter03/onlineStore/public/.htaccess +++ /dev/null @@ -1,21 +0,0 @@ - - - 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/Chapter03/onlineStore/public/favicon.ico b/Chapter03/onlineStore/public/favicon.ico deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter03/onlineStore/public/index.php b/Chapter03/onlineStore/public/index.php deleted file mode 100644 index 1d69f3a..0000000 --- a/Chapter03/onlineStore/public/index.php +++ /dev/null @@ -1,55 +0,0 @@ -make(Kernel::class); - -$response = $kernel->handle( - $request = Request::capture() -)->send(); - -$kernel->terminate($request, $response); diff --git a/Chapter03/onlineStore/public/robots.txt b/Chapter03/onlineStore/public/robots.txt deleted file mode 100644 index eb05362..0000000 --- a/Chapter03/onlineStore/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: diff --git a/Chapter03/onlineStore/resources/css/app.css b/Chapter03/onlineStore/resources/css/app.css deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter03/onlineStore/resources/js/app.js b/Chapter03/onlineStore/resources/js/app.js deleted file mode 100644 index 40c55f6..0000000 --- a/Chapter03/onlineStore/resources/js/app.js +++ /dev/null @@ -1 +0,0 @@ -require('./bootstrap'); diff --git a/Chapter03/onlineStore/resources/js/bootstrap.js b/Chapter03/onlineStore/resources/js/bootstrap.js deleted file mode 100644 index 6922577..0000000 --- a/Chapter03/onlineStore/resources/js/bootstrap.js +++ /dev/null @@ -1,28 +0,0 @@ -window._ = require('lodash'); - -/** - * 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 = require('axios'); - -window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; - -/** - * 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'; - -// window.Pusher = require('pusher-js'); - -// window.Echo = new Echo({ -// broadcaster: 'pusher', -// key: process.env.MIX_PUSHER_APP_KEY, -// cluster: process.env.MIX_PUSHER_APP_CLUSTER, -// forceTLS: true -// }); diff --git a/Chapter03/onlineStore/resources/views/welcome.blade.php b/Chapter03/onlineStore/resources/views/welcome.blade.php deleted file mode 100644 index dd6a45d..0000000 --- a/Chapter03/onlineStore/resources/views/welcome.blade.php +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - Laravel - - - - - - - - - - -
- @if (Route::has('login')) - - @endif - -
-
- - - - - -
- -
-
-
- - -
-
- Laravel has wonderful, thorough documentation covering every aspect of the framework. Whether you are new to the framework or have previous experience with Laravel, we recommend reading all of the documentation from beginning to end. -
-
-
- -
-
- - -
- -
-
- Laracasts offers thousands of video tutorials on Laravel, PHP, and JavaScript development. Check them out, see for yourself, and massively level up your development skills in the process. -
-
-
- -
-
- - -
- -
-
- Laravel News is a community driven portal and newsletter aggregating all of the latest and most important news in the Laravel ecosystem, including new package releases and tutorials. -
-
-
- -
-
- -
Vibrant Ecosystem
-
- -
-
- Laravel's robust library of first-party tools and libraries, such as Forge, Vapor, Nova, and Envoyer help you take your projects to the next level. Pair them with powerful open source libraries like Cashier, Dusk, Echo, Horizon, Sanctum, Telescope, and more. -
-
-
-
-
- -
-
-
- - - - - - Shop - - - - - - - - Sponsor - -
-
- -
- Laravel v{{ Illuminate\Foundation\Application::VERSION }} (PHP v{{ PHP_VERSION }}) -
-
-
-
- - diff --git a/Chapter03/onlineStore/routes/api.php b/Chapter03/onlineStore/routes/api.php deleted file mode 100644 index eb6fa48..0000000 --- a/Chapter03/onlineStore/routes/api.php +++ /dev/null @@ -1,19 +0,0 @@ -get('/user', function (Request $request) { - return $request->user(); -}); diff --git a/Chapter03/onlineStore/routes/channels.php b/Chapter03/onlineStore/routes/channels.php deleted file mode 100644 index 5d451e1..0000000 --- a/Chapter03/onlineStore/routes/channels.php +++ /dev/null @@ -1,18 +0,0 @@ -id === (int) $id; -}); diff --git a/Chapter03/onlineStore/routes/console.php b/Chapter03/onlineStore/routes/console.php deleted file mode 100644 index e05f4c9..0000000 --- a/Chapter03/onlineStore/routes/console.php +++ /dev/null @@ -1,19 +0,0 @@ -comment(Inspiring::quote()); -})->purpose('Display an inspiring quote'); diff --git a/Chapter03/onlineStore/routes/web.php b/Chapter03/onlineStore/routes/web.php deleted file mode 100644 index b130397..0000000 --- a/Chapter03/onlineStore/routes/web.php +++ /dev/null @@ -1,18 +0,0 @@ -make(Kernel::class)->bootstrap(); - - return $app; - } -} diff --git a/Chapter03/onlineStore/tests/Feature/ExampleTest.php b/Chapter03/onlineStore/tests/Feature/ExampleTest.php deleted file mode 100644 index 78ccc21..0000000 --- a/Chapter03/onlineStore/tests/Feature/ExampleTest.php +++ /dev/null @@ -1,21 +0,0 @@ -get('/'); - - $response->assertStatus(200); - } -} diff --git a/Chapter03/onlineStore/tests/TestCase.php b/Chapter03/onlineStore/tests/TestCase.php deleted file mode 100644 index 2932d4a..0000000 --- a/Chapter03/onlineStore/tests/TestCase.php +++ /dev/null @@ -1,10 +0,0 @@ -assertTrue(true); - } -} diff --git a/Chapter03/onlineStore/webpack.mix.js b/Chapter03/onlineStore/webpack.mix.js deleted file mode 100644 index 2a22dc1..0000000 --- a/Chapter03/onlineStore/webpack.mix.js +++ /dev/null @@ -1,17 +0,0 @@ -const mix = require('laravel-mix'); - -/* - |-------------------------------------------------------------------------- - | Mix Asset Management - |-------------------------------------------------------------------------- - | - | Mix provides a clean, fluent API for defining some Webpack build steps - | for your Laravel applications. By default, we are compiling the CSS - | file for the application as well as bundling up all the JS files. - | - */ - -mix.js('resources/js/app.js', 'public/js') - .postCss('resources/css/app.css', 'public/css', [ - // - ]); diff --git a/Chapter05/onlineStore/.editorconfig b/Chapter05/onlineStore/.editorconfig deleted file mode 100644 index 1671c9b..0000000 --- a/Chapter05/onlineStore/.editorconfig +++ /dev/null @@ -1,18 +0,0 @@ -root = true - -[*] -charset = utf-8 -end_of_line = lf -insert_final_newline = true -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true - -[*.md] -trim_trailing_whitespace = false - -[*.{yml,yaml}] -indent_size = 2 - -[docker-compose.yml] -indent_size = 4 diff --git a/Chapter05/onlineStore/.env.example b/Chapter05/onlineStore/.env.example deleted file mode 100644 index 8510237..0000000 --- a/Chapter05/onlineStore/.env.example +++ /dev/null @@ -1,52 +0,0 @@ -APP_NAME=Laravel -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=laravel -DB_USERNAME=root -DB_PASSWORD= - -BROADCAST_DRIVER=log -CACHE_DRIVER=file -FILESYSTEM_DISK=local -QUEUE_CONNECTION=sync -SESSION_DRIVER=file -SESSION_LIFETIME=120 - -MEMCACHED_HOST=127.0.0.1 - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -MAIL_MAILER=smtp -MAIL_HOST=mailhog -MAIL_PORT=1025 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS=null -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_APP_CLUSTER=mt1 - -MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/Chapter05/onlineStore/.gitattributes b/Chapter05/onlineStore/.gitattributes deleted file mode 100644 index 510d996..0000000 --- a/Chapter05/onlineStore/.gitattributes +++ /dev/null @@ -1,10 +0,0 @@ -* text=auto - -*.blade.php diff=html -*.css diff=css -*.html diff=html -*.md diff=markdown -*.php diff=php - -/.github export-ignore -CHANGELOG.md export-ignore diff --git a/Chapter05/onlineStore/.gitignore b/Chapter05/onlineStore/.gitignore deleted file mode 100644 index eb003b0..0000000 --- a/Chapter05/onlineStore/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -/node_modules -/public/hot -/public/storage -/storage/*.key -/vendor -.env -.env.backup -.phpunit.result.cache -docker-compose.override.yml -Homestead.json -Homestead.yaml -npm-debug.log -yarn-error.log -/.idea -/.vscode diff --git a/Chapter05/onlineStore/.styleci.yml b/Chapter05/onlineStore/.styleci.yml deleted file mode 100644 index 679a631..0000000 --- a/Chapter05/onlineStore/.styleci.yml +++ /dev/null @@ -1,13 +0,0 @@ -php: - preset: laravel - version: 8 - disabled: - - no_unused_imports - finder: - not-name: - - index.php -js: - finder: - not-name: - - webpack.mix.js -css: true diff --git a/Chapter05/onlineStore/README.md b/Chapter05/onlineStore/README.md deleted file mode 100644 index f171eca..0000000 --- a/Chapter05/onlineStore/README.md +++ /dev/null @@ -1,64 +0,0 @@ -

- -

-Build Status -Total Downloads -Latest Stable Version -License -

- -## About Laravel - -Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as: - -- [Simple, fast routing engine](https://laravel.com/docs/routing). -- [Powerful dependency injection container](https://laravel.com/docs/container). -- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage. -- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent). -- Database agnostic [schema migrations](https://laravel.com/docs/migrations). -- [Robust background job processing](https://laravel.com/docs/queues). -- [Real-time event broadcasting](https://laravel.com/docs/broadcasting). - -Laravel is accessible, powerful, and provides tools required for large, robust applications. - -## Learning Laravel - -Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework. - -If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 2000 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library. - -## Laravel Sponsors - -We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell). - -### Premium Partners - -- **[Vehikl](https://vehikl.com/)** -- **[Tighten Co.](https://tighten.co)** -- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** -- **[64 Robots](https://64robots.com)** -- **[Cubet Techno Labs](https://cubettech.com)** -- **[Cyber-Duck](https://cyber-duck.co.uk)** -- **[Many](https://www.many.co.uk)** -- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)** -- **[DevSquad](https://devsquad.com)** -- **[Curotec](https://www.curotec.com/services/technologies/laravel/)** -- **[OP.GG](https://op.gg)** -- **[WebReinvent](https://webreinvent.com/?utm_source=laravel&utm_medium=github&utm_campaign=patreon-sponsors)** -- **[Lendio](https://lendio.com)** - -## Contributing - -Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions). - -## Code of Conduct - -In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). - -## Security Vulnerabilities - -If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed. - -## License - -The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). diff --git a/Chapter05/onlineStore/app/Console/Kernel.php b/Chapter05/onlineStore/app/Console/Kernel.php deleted file mode 100644 index d8bc1d2..0000000 --- a/Chapter05/onlineStore/app/Console/Kernel.php +++ /dev/null @@ -1,32 +0,0 @@ -command('inspire')->hourly(); - } - - /** - * Register the commands for the application. - * - * @return void - */ - protected function commands() - { - $this->load(__DIR__.'/Commands'); - - require base_path('routes/console.php'); - } -} diff --git a/Chapter05/onlineStore/app/Exceptions/Handler.php b/Chapter05/onlineStore/app/Exceptions/Handler.php deleted file mode 100644 index 8e7fbd1..0000000 --- a/Chapter05/onlineStore/app/Exceptions/Handler.php +++ /dev/null @@ -1,41 +0,0 @@ -> - */ - protected $dontReport = [ - // - ]; - - /** - * A list of the inputs that are never flashed for validation exceptions. - * - * @var array - */ - protected $dontFlash = [ - 'current_password', - 'password', - 'password_confirmation', - ]; - - /** - * Register the exception handling callbacks for the application. - * - * @return void - */ - public function register() - { - $this->reportable(function (Throwable $e) { - // - }); - } -} diff --git a/Chapter05/onlineStore/app/Http/Controllers/Controller.php b/Chapter05/onlineStore/app/Http/Controllers/Controller.php deleted file mode 100644 index a0a2a8a..0000000 --- a/Chapter05/onlineStore/app/Http/Controllers/Controller.php +++ /dev/null @@ -1,13 +0,0 @@ - - */ - protected $middleware = [ - // \App\Http\Middleware\TrustHosts::class, - \App\Http\Middleware\TrustProxies::class, - \Fruitcake\Cors\HandleCors::class, - \App\Http\Middleware\PreventRequestsDuringMaintenance::class, - \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, - \App\Http\Middleware\TrimStrings::class, - \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, - ]; - - /** - * The application's route middleware groups. - * - * @var array> - */ - protected $middlewareGroups = [ - 'web' => [ - \App\Http\Middleware\EncryptCookies::class, - \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, - \Illuminate\Session\Middleware\StartSession::class, - // \Illuminate\Session\Middleware\AuthenticateSession::class, - \Illuminate\View\Middleware\ShareErrorsFromSession::class, - \App\Http\Middleware\VerifyCsrfToken::class, - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - - 'api' => [ - // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, - 'throttle:api', - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - ]; - - /** - * The application's route middleware. - * - * These middleware may be assigned to groups or used individually. - * - * @var array - */ - protected $routeMiddleware = [ - 'auth' => \App\Http\Middleware\Authenticate::class, - 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::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, - 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, - 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, - 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, - ]; -} diff --git a/Chapter05/onlineStore/app/Http/Middleware/Authenticate.php b/Chapter05/onlineStore/app/Http/Middleware/Authenticate.php deleted file mode 100644 index 704089a..0000000 --- a/Chapter05/onlineStore/app/Http/Middleware/Authenticate.php +++ /dev/null @@ -1,21 +0,0 @@ -expectsJson()) { - return route('login'); - } - } -} diff --git a/Chapter05/onlineStore/app/Http/Middleware/EncryptCookies.php b/Chapter05/onlineStore/app/Http/Middleware/EncryptCookies.php deleted file mode 100644 index 867695b..0000000 --- a/Chapter05/onlineStore/app/Http/Middleware/EncryptCookies.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter05/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/Chapter05/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php deleted file mode 100644 index 74cbd9a..0000000 --- a/Chapter05/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter05/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php b/Chapter05/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php deleted file mode 100644 index a2813a0..0000000 --- a/Chapter05/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php +++ /dev/null @@ -1,32 +0,0 @@ -check()) { - return redirect(RouteServiceProvider::HOME); - } - } - - return $next($request); - } -} diff --git a/Chapter05/onlineStore/app/Http/Middleware/TrimStrings.php b/Chapter05/onlineStore/app/Http/Middleware/TrimStrings.php deleted file mode 100644 index 88cadca..0000000 --- a/Chapter05/onlineStore/app/Http/Middleware/TrimStrings.php +++ /dev/null @@ -1,19 +0,0 @@ - - */ - protected $except = [ - 'current_password', - 'password', - 'password_confirmation', - ]; -} diff --git a/Chapter05/onlineStore/app/Http/Middleware/TrustHosts.php b/Chapter05/onlineStore/app/Http/Middleware/TrustHosts.php deleted file mode 100644 index 7186414..0000000 --- a/Chapter05/onlineStore/app/Http/Middleware/TrustHosts.php +++ /dev/null @@ -1,20 +0,0 @@ - - */ - public function hosts() - { - return [ - $this->allSubdomainsOfApplicationUrl(), - ]; - } -} diff --git a/Chapter05/onlineStore/app/Http/Middleware/TrustProxies.php b/Chapter05/onlineStore/app/Http/Middleware/TrustProxies.php deleted file mode 100644 index 3391630..0000000 --- a/Chapter05/onlineStore/app/Http/Middleware/TrustProxies.php +++ /dev/null @@ -1,28 +0,0 @@ -|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/Chapter05/onlineStore/app/Http/Middleware/VerifyCsrfToken.php b/Chapter05/onlineStore/app/Http/Middleware/VerifyCsrfToken.php deleted file mode 100644 index 9e86521..0000000 --- a/Chapter05/onlineStore/app/Http/Middleware/VerifyCsrfToken.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter05/onlineStore/app/Models/User.php b/Chapter05/onlineStore/app/Models/User.php deleted file mode 100644 index 8996368..0000000 --- a/Chapter05/onlineStore/app/Models/User.php +++ /dev/null @@ -1,44 +0,0 @@ - - */ - 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', - ]; -} diff --git a/Chapter05/onlineStore/app/Providers/AppServiceProvider.php b/Chapter05/onlineStore/app/Providers/AppServiceProvider.php deleted file mode 100644 index ee8ca5b..0000000 --- a/Chapter05/onlineStore/app/Providers/AppServiceProvider.php +++ /dev/null @@ -1,28 +0,0 @@ - - */ - protected $policies = [ - // 'App\Models\Model' => 'App\Policies\ModelPolicy', - ]; - - /** - * Register any authentication / authorization services. - * - * @return void - */ - public function boot() - { - $this->registerPolicies(); - - // - } -} diff --git a/Chapter05/onlineStore/app/Providers/BroadcastServiceProvider.php b/Chapter05/onlineStore/app/Providers/BroadcastServiceProvider.php deleted file mode 100644 index 395c518..0000000 --- a/Chapter05/onlineStore/app/Providers/BroadcastServiceProvider.php +++ /dev/null @@ -1,21 +0,0 @@ -> - */ - protected $listen = [ - Registered::class => [ - SendEmailVerificationNotification::class, - ], - ]; - - /** - * Register any events for your application. - * - * @return void - */ - public function boot() - { - // - } -} diff --git a/Chapter05/onlineStore/app/Providers/RouteServiceProvider.php b/Chapter05/onlineStore/app/Providers/RouteServiceProvider.php deleted file mode 100644 index 7c17d1f..0000000 --- a/Chapter05/onlineStore/app/Providers/RouteServiceProvider.php +++ /dev/null @@ -1,63 +0,0 @@ -configureRateLimiting(); - - $this->routes(function () { - Route::prefix('api') - ->middleware('api') - ->namespace($this->namespace) - ->group(base_path('routes/api.php')); - - Route::middleware('web') - ->namespace($this->namespace) - ->group(base_path('routes/web.php')); - }); - } - - /** - * Configure the rate limiters for the application. - * - * @return void - */ - protected function configureRateLimiting() - { - RateLimiter::for('api', function (Request $request) { - return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); - }); - } -} diff --git a/Chapter05/onlineStore/artisan b/Chapter05/onlineStore/artisan deleted file mode 100644 index 67a3329..0000000 --- a/Chapter05/onlineStore/artisan +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env php -make(Illuminate\Contracts\Console\Kernel::class); - -$status = $kernel->handle( - $input = new Symfony\Component\Console\Input\ArgvInput, - new Symfony\Component\Console\Output\ConsoleOutput -); - -/* -|-------------------------------------------------------------------------- -| Shutdown The Application -|-------------------------------------------------------------------------- -| -| Once Artisan has finished running, we will fire off the shutdown events -| so that any final work may be done by the application before we shut -| down the process. This is the last thing to happen to the request. -| -*/ - -$kernel->terminate($input, $status); - -exit($status); diff --git a/Chapter05/onlineStore/bootstrap/app.php b/Chapter05/onlineStore/bootstrap/app.php deleted file mode 100644 index 037e17d..0000000 --- a/Chapter05/onlineStore/bootstrap/app.php +++ /dev/null @@ -1,55 +0,0 @@ -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/Chapter05/onlineStore/bootstrap/cache/.gitignore b/Chapter05/onlineStore/bootstrap/cache/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter05/onlineStore/bootstrap/cache/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter05/onlineStore/composer.json b/Chapter05/onlineStore/composer.json deleted file mode 100644 index 6913736..0000000 --- a/Chapter05/onlineStore/composer.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "name": "laravel/laravel", - "type": "project", - "description": "The Laravel Framework.", - "keywords": ["framework", "laravel"], - "license": "MIT", - "require": { - "php": "^8.0", - "fruitcake/laravel-cors": "^2.0.5", - "guzzlehttp/guzzle": "^7.2", - "laravel/framework": "^9.0", - "laravel/sanctum": "^2.14", - "laravel/tinker": "^2.7" - }, - "require-dev": { - "fakerphp/faker": "^1.9.1", - "laravel/sail": "^1.0.1", - "mockery/mockery": "^1.4.4", - "nunomaduro/collision": "^6.1", - "phpunit/phpunit": "^9.5.10", - "spatie/laravel-ignition": "^1.0" - }, - "autoload": { - "psr-4": { - "App\\": "app/", - "Database\\Factories\\": "database/factories/", - "Database\\Seeders\\": "database/seeders/" - } - }, - "autoload-dev": { - "psr-4": { - "Tests\\": "tests/" - } - }, - "scripts": { - "post-autoload-dump": [ - "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", - "@php artisan package:discover --ansi" - ], - "post-update-cmd": [ - "@php artisan vendor:publish --tag=laravel-assets --ansi --force" - ], - "post-root-package-install": [ - "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" - ], - "post-create-project-cmd": [ - "@php artisan key:generate --ansi" - ] - }, - "extra": { - "laravel": { - "dont-discover": [] - } - }, - "config": { - "optimize-autoloader": true, - "preferred-install": "dist", - "sort-packages": true - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/Chapter05/onlineStore/composer.lock b/Chapter05/onlineStore/composer.lock deleted file mode 100644 index 64d5967..0000000 --- a/Chapter05/onlineStore/composer.lock +++ /dev/null @@ -1,7804 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "65e85f9f959c0b087110331754d451cf", - "packages": [ - { - "name": "asm89/stack-cors", - "version": "v2.1.1", - "source": { - "type": "git", - "url": "https://github.com/asm89/stack-cors.git", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4|^5|^6" - }, - "require-dev": { - "phpunit/phpunit": "^7|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "psr-4": { - "Asm89\\Stack\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alexander", - "email": "iam.asm89@gmail.com" - } - ], - "description": "Cross-origin resource sharing library and stack middleware", - "homepage": "https://github.com/asm89/stack-cors", - "keywords": [ - "cors", - "stack" - ], - "support": { - "issues": "https://github.com/asm89/stack-cors/issues", - "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" - }, - "time": "2022-01-18T09:12:03+00:00" - }, - { - "name": "brick/math", - "version": "0.9.3", - "source": { - "type": "git", - "url": "https://github.com/brick/math.git", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", - "vimeo/psalm": "4.9.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Brick\\Math\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Arbitrary-precision arithmetic library", - "keywords": [ - "Arbitrary-precision", - "BigInteger", - "BigRational", - "arithmetic", - "bigdecimal", - "bignum", - "brick", - "math" - ], - "support": { - "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.9.3" - }, - "funding": [ - { - "url": "https://github.com/BenMorel", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/brick/math", - "type": "tidelift" - } - ], - "time": "2021-08-15T20:50:18+00:00" - }, - { - "name": "dflydev/dot-access-data", - "version": "v3.0.1", - "source": { - "type": "git", - "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c", - "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": "^3.14" - }, - "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.1" - }, - "time": "2021-08-13T13:06:58+00:00" - }, - { - "name": "doctrine/inflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "vimeo/psalm": "^4.10" - }, - "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.4" - }, - "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": "2021-10-22T20:16:43+00:00" - }, - { - "name": "doctrine/lexer", - "version": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" - } - }, - "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/1.2.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%2Flexer", - "type": "tidelift" - } - ], - "time": "2022-01-12T08:27:12+00:00" - }, - { - "name": "dragonmantank/cron-expression", - "version": "v3.3.1", - "source": { - "type": "git", - "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "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.1" - }, - "funding": [ - { - "url": "https://github.com/dragonmantank", - "type": "github" - } - ], - "time": "2022-01-18T15:43:28+00:00" - }, - { - "name": "egulias/email-validator", - "version": "3.1.2", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ee0db30118f661fb166bcffbf5d82032df484697", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^1.2", - "php": ">=7.2", - "symfony/polyfill-intl-idn": "^1.15" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^8.5.8|^9.3.3", - "vimeo/psalm": "^4" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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/3.1.2" - }, - "funding": [ - { - "url": "https://github.com/egulias", - "type": "github" - } - ], - "time": "2021-10-11T09:18:27+00:00" - }, - { - "name": "fruitcake/laravel-cors", - "version": "v2.0.5", - "source": { - "type": "git", - "url": "https://github.com/fruitcake/laravel-cors.git", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "shasum": "" - }, - "require": { - "asm89/stack-cors": "^2.0.1", - "illuminate/contracts": "^6|^7|^8|^9", - "illuminate/support": "^6|^7|^8|^9", - "php": ">=7.2", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4.3.4|^5|^6" - }, - "require-dev": { - "laravel/framework": "^6|^7.24|^8", - "orchestra/testbench-dusk": "^4|^5|^6|^7", - "phpunit/phpunit": "^6|^7|^8|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - }, - "laravel": { - "providers": [ - "Fruitcake\\Cors\\CorsServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Fruitcake\\Cors\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fruitcake", - "homepage": "https://fruitcake.nl" - }, - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", - "keywords": [ - "api", - "cors", - "crossdomain", - "laravel" - ], - "support": { - "issues": "https://github.com/fruitcake/laravel-cors/issues", - "source": "https://github.com/fruitcake/laravel-cors/tree/v2.0.5" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "time": "2022-01-03T14:53:04+00:00" - }, - { - "name": "graham-campbell/result-type", - "version": "v1.0.4", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "0690bde05318336c7221785f2a932467f98b64ca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/0690bde05318336c7221785f2a932467f98b64ca", - "reference": "0690bde05318336c7221785f2a932467f98b64ca", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "phpoption/phpoption": "^1.8" - }, - "require-dev": { - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", - "type": "tidelift" - } - ], - "time": "2021-11-21T21:41:47+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "7.4.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.8.3 || ^2.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.4.1", - "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.5 || ^9.3.5", - "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": { - "branch-alias": { - "dev-master": "7.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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.4.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": "2021-12-06T18:43:05+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "1.5.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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/1.5.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "time": "2021-10-22T20:56:57+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.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.4.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.8 || ^9.3.10" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "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.1.0" - }, - "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": "2021-10-06T17:43:30+00:00" - }, - { - "name": "laravel/framework", - "version": "v9.0.1", - "source": { - "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "shasum": "" - }, - "require": { - "doctrine/inflector": "^2.0", - "dragonmantank/cron-expression": "^3.1", - "egulias/email-validator": "^3.1", - "ext-mbstring": "*", - "ext-openssl": "*", - "laravel/serializable-closure": "^1.0", - "league/commonmark": "^2.2", - "league/flysystem": "^3.0", - "monolog/monolog": "^2.0", - "nesbot/carbon": "^2.53.1", - "php": "^8.0.2", - "psr/container": "^1.1.1|^2.0.1", - "psr/log": "^1.0|^2.0|^3.0", - "psr/simple-cache": "^1.0|^2.0|^3.0", - "ramsey/uuid": "^4.2.2", - "symfony/console": "^6.0", - "symfony/error-handler": "^6.0", - "symfony/finder": "^6.0", - "symfony/http-foundation": "^6.0", - "symfony/http-kernel": "^6.0", - "symfony/mailer": "^6.0", - "symfony/mime": "^6.0", - "symfony/process": "^6.0", - "symfony/routing": "^6.0", - "symfony/var-dumper": "^6.0", - "tijsverkoyen/css-to-inline-styles": "^2.2.2", - "vlucas/phpdotenv": "^5.4.1", - "voku/portable-ascii": "^2.0" - }, - "conflict": { - "tightenco/collect": "<5.5.33" - }, - "provide": { - "psr/container-implementation": "1.1|2.0", - "psr/simple-cache-implementation": "1.0|2.0|3.0" - }, - "replace": { - "illuminate/auth": "self.version", - "illuminate/broadcasting": "self.version", - "illuminate/bus": "self.version", - "illuminate/cache": "self.version", - "illuminate/collections": "self.version", - "illuminate/conditionable": "self.version", - "illuminate/config": "self.version", - "illuminate/console": "self.version", - "illuminate/container": "self.version", - "illuminate/contracts": "self.version", - "illuminate/cookie": "self.version", - "illuminate/database": "self.version", - "illuminate/encryption": "self.version", - "illuminate/events": "self.version", - "illuminate/filesystem": "self.version", - "illuminate/hashing": "self.version", - "illuminate/http": "self.version", - "illuminate/log": "self.version", - "illuminate/macroable": "self.version", - "illuminate/mail": "self.version", - "illuminate/notifications": "self.version", - "illuminate/pagination": "self.version", - "illuminate/pipeline": "self.version", - "illuminate/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": { - "aws/aws-sdk-php": "^3.198.1", - "doctrine/dbal": "^2.13.3|^3.1.4", - "fakerphp/faker": "^1.9.2", - "guzzlehttp/guzzle": "^7.2", - "league/flysystem-aws-s3-v3": "^3.0", - "league/flysystem-ftp": "^3.0", - "league/flysystem-sftp-v3": "^3.0", - "mockery/mockery": "^1.4.4", - "orchestra/testbench-core": "^7.0", - "pda/pheanstalk": "^4.0", - "phpstan/phpstan": "^1.0", - "phpunit/phpunit": "^9.5.8", - "predis/predis": "^1.1.9", - "symfony/amazon-mailer": "^6.0", - "symfony/cache": "^6.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.198.1).", - "brianium/paratest": "Required to run tests in parallel (^6.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", - "ext-bcmath": "Required to use the multiple_of validation rule.", - "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.", - "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.2).", - "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-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", - "mockery/mockery": "Required to use mocking (^1.4.4).", - "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).", - "predis/predis": "Required to use the predis connector (^1.1.9).", - "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.0).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^6.0).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.0).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.0).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.0).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.x-dev" - } - }, - "autoload": { - "files": [ - "src/Illuminate/Collections/helpers.php", - "src/Illuminate/Events/functions.php", - "src/Illuminate/Foundation/helpers.php", - "src/Illuminate/Support/helpers.php" - ], - "psr-4": { - "Illuminate\\": "src/Illuminate/", - "Illuminate\\Support\\": [ - "src/Illuminate/Macroable/", - "src/Illuminate/Collections/", - "src/Illuminate/Conditionable/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Laravel Framework.", - "homepage": "https://laravel.com", - "keywords": [ - "framework", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2022-02-09T15:00:05+00:00" - }, - { - "name": "laravel/sanctum", - "version": "v2.14.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/sanctum.git", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/0647a87140c7522e75826cffcadb3ad6e01f71e9", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/contracts": "^6.9|^7.0|^8.0|^9.0", - "illuminate/database": "^6.9|^7.0|^8.0|^9.0", - "illuminate/support": "^6.9|^7.0|^8.0|^9.0", - "php": "^7.2|^8.0" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0", - "phpunit/phpunit": "^8.0|^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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": "2022-01-12T15:07:43+00:00" - }, - { - "name": "laravel/serializable-closure", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/serializable-closure.git", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/65c9faf50d567b65d81764a44526545689e3fe63", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "pestphp/pest": "^1.18", - "phpstan/phpstan": "^0.12.98", - "symfony/var-dumper": "^5.3" - }, - "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": "2022-02-01T16:29:39+00:00" - }, - { - "name": "laravel/tinker", - "version": "v2.7.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/tinker.git", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/5f2f9815b7631b9f586a3de7933c25f9327d4073", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073", - "shasum": "" - }, - "require": { - "illuminate/console": "^6.0|^7.0|^8.0|^9.0", - "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.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", - "phpunit/phpunit": "^8.5.8|^9.3.3" - }, - "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.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.7.0" - }, - "time": "2022-01-10T08:52:49+00:00" - }, - { - "name": "league/commonmark", - "version": "2.2.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/commonmark.git", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "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.15" - }, - "require-dev": { - "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.0", - "commonmark/commonmark.js": "0.30.0", - "composer/package-versions-deprecated": "^1.8", - "erusev/parsedown": "^1.0", - "ext-json": "*", - "github/gfm": "0.29.0", - "michelf/php-markdown": "^1.4", - "phpstan/phpstan": "^0.12.88 || ^1.0.0", - "phpunit/phpunit": "^9.5.5", - "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", - "unleashedtech/php-coding-standard": "^3.1", - "vimeo/psalm": "^4.7.3" - }, - "suggest": { - "symfony/yaml": "v2.3+ required if using the Front Matter extension" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.3-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": "2022-01-25T14:37:33+00:00" - }, - { - "name": "league/config", - "version": "v1.1.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/config.git", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/config/zipball/a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^3.0.1", - "nette/schema": "^1.2", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.90", - "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": "2021-08-14T12:15:32+00:00" - }, - { - "name": "league/flysystem", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9f8b4260031bfef5497477da53dd57b2aaff0e06", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06", - "shasum": "" - }, - "require": { - "ext-json": "*", - "league/mime-type-detection": "^1.0.0", - "php": "^8.0.2" - }, - "conflict": { - "guzzlehttp/guzzle": "<7.0", - "guzzlehttp/ringphp": "<1.1.1", - "symfony/http-client": "<5.2" - }, - "require-dev": { - "async-aws/s3": "^1.5", - "async-aws/simple-s3": "^1.0", - "aws/aws-sdk-php": "^3.198.1", - "composer/semver": "^3.0", - "ext-fileinfo": "*", - "ext-ftp": "*", - "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.5", - "google/cloud-storage": "^1.23", - "phpseclib/phpseclib": "^2.0", - "phpstan/phpstan": "^0.12.26", - "phpunit/phpunit": "^9.5.11", - "sabre/dav": "^4.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.0.3" - }, - "funding": [ - { - "url": "https://offset.earth/frankdejonge", - "type": "custom" - }, - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2022-01-31T19:41:04+00:00" - }, - { - "name": "league/mime-type-detection", - "version": "1.9.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/aa70e813a6ad3d1558fc927863d47309b4c23e69", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.2", - "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" - }, - "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.9.0" - }, - "funding": [ - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2021-11-21T11:48:40+00:00" - }, - { - "name": "monolog/monolog", - "version": "2.3.5", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd4380d6fc37626e2f799f29d91195040137eba9", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "provide": { - "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7", - "graylog2/gelf-php": "^1.4.2", - "mongodb/mongodb": "^1.8", - "php-amqplib/php-amqplib": "~2.4 || ^3", - "php-console/php-console": "^3.1.3", - "phpspec/prophecy": "^1.6.1", - "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5", - "predis/predis": "^1.1", - "rollbar/rollbar": "^1.3", - "ruflin/elastica": ">=0.90@dev", - "swiftmailer/swiftmailer": "^5.3|^6.0" - }, - "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", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "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": "2.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/2.3.5" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" - } - ], - "time": "2021-10-01T21:08:31+00:00" - }, - { - "name": "nesbot/carbon", - "version": "2.56.0", - "source": { - "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1.8 || ^8.0", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "doctrine/dbal": "^2.0 || ^3.0", - "doctrine/orm": "^2.7", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "phpmd/phpmd": "^2.9", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.54 || ^1.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.14", - "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://opencollective.com/Carbon", - "type": "open_collective" - }, - { - "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", - "type": "tidelift" - } - ], - "time": "2022-01-21T17:08:38+00:00" - }, - { - "name": "nette/schema", - "version": "v1.2.2", - "source": { - "type": "git", - "url": "https://github.com/nette/schema.git", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/9a39cef03a5b34c7de64f551538cbba05c2be5df", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df", - "shasum": "" - }, - "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": ">=7.1 <8.2" - }, - "require-dev": { - "nette/tester": "^2.3 || ^2.4", - "phpstan/phpstan-nette": "^0.12", - "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.2" - }, - "time": "2021-10-15T11:40:02+00:00" - }, - { - "name": "nette/utils", - "version": "v3.2.7", - "source": { - "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/0af4e3de4df9f1543534beab255ccf459e7a2c99", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99", - "shasum": "" - }, - "require": { - "php": ">=7.2 <8.2" - }, - "conflict": { - "nette/di": "<3.0.6" - }, - "require-dev": { - "nette/tester": "~2.0", - "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.3" - }, - "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()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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 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/v3.2.7" - }, - "time": "2022-01-24T11:29:14+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.13.2", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", - "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.13.2" - }, - "time": "2021-11-30T19:35:32+00:00" - }, - { - "name": "phpoption/phpoption", - "version": "1.8.1", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-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.8.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", - "type": "tidelift" - } - ], - "time": "2021-12-04T23:24:31+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.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.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": "http://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/tree/master" - }, - "time": "2020-06-29T06:28:15+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.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": "http://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/master" - }, - "time": "2019-04-30T12:38:16+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.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": "http://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/master" - }, - "time": "2016-08-06T14:39: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.1", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "570292577277f06f590635381a7f761a6cf4f026" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/570292577277f06f590635381a7f761a6cf4f026", - "reference": "570292577277f06f590635381a7f761a6cf4f026", - "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" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "3.17.05.02" - }, - "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.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." - }, - "bin": [ - "bin/psysh" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "0.11.x-dev" - } - }, - "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.1" - }, - "time": "2022-01-03T13:58:38+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": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/ramsey/collection.git", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "shasum": "" - }, - "require": { - "php": "^7.3 || ^8", - "symfony/polyfill-php81": "^1.23" - }, - "require-dev": { - "captainhook/captainhook": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "ergebnis/composer-normalize": "^2.6", - "fakerphp/faker": "^1.5", - "hamcrest/hamcrest-php": "^2", - "jangregor/phpstan-prophecy": "^0.8", - "mockery/mockery": "^1.3", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1", - "phpstan/phpstan": "^0.12.32", - "phpstan/phpstan-mockery": "^0.12.5", - "phpstan/phpstan-phpunit": "^0.12.11", - "phpunit/phpunit": "^8.5 || ^9", - "psy/psysh": "^0.10.4", - "slevomat/coding-standard": "^6.3", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.4" - }, - "type": "library", - "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/1.2.2" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "time": "2021-10-10T03:01:02+00:00" - }, - { - "name": "ramsey/uuid", - "version": "4.2.3", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "shasum": "" - }, - "require": { - "brick/math": "^0.8 || ^0.9", - "ext-json": "*", - "php": "^7.2 || ^8.0", - "ramsey/collection": "^1.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php80": "^1.14" - }, - "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", - "moontoast/math": "^1.1", - "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.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-mockery": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^8.5 || ^9", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" - }, - "suggest": { - "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-ctype": "Enables faster processing of character classification using ctype functions.", - "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": { - "branch-alias": { - "dev-main": "4.x-dev" - }, - "captainhook": { - "force-install": true - } - }, - "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "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.2.3" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2021-09-25T23:10:38+00:00" - }, - { - "name": "symfony/console", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/22e8efd019c3270c4f79376234a3f8752cd25490", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.4|^6.0" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/css-selector", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/1955d595c12c111629cc814d3f2a2ff13580508a", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a", - "shasum": "" - }, - "require": { - "php": ">=8.0.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/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-11-01T23:48:49+00:00" - }, - { - "name": "symfony/error-handler", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/20343b3bad7ebafa38138ddcb97290a24722b57b", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" - }, - "bin": [ - "Resources/bin/patch-type-declarations" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to manage errors and ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6472ea2dd415e925b90ca82be64b8bc6157f3934", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/event-dispatcher-contracts": "^2|^3" - }, - "conflict": { - "symfony/dependency-injection": "<5.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^5.4|^6.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/aa5422287b75594b90ee9cd807caf8f0df491385", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/event-dispatcher": "^1" - }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-07-15T12:33:35+00:00" - }, - { - "name": "symfony/finder", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/8661b74dbabc23223f38c9b99d3f8ade71170430", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ad157299ced81a637fade1efcadd688d6deba5c1", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1" - }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/cache": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0" - }, - "suggest": { - "symfony/mime": "To use the file extension guesser" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v6.0.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/error-handler": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", - "symfony/twig-bridge": "<5.4", - "symfony/validator": "<5.4", - "twig/twig": "<2.13" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/process": "^5.4|^6.0", - "symfony/routing": "^5.4|^6.0", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-29T18:12:46+00:00" - }, - { - "name": "symfony/mailer", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mailer.git", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "shasum": "" - }, - "require": { - "egulias/email-validator": "^2.1.10|^3", - "php": ">=8.0.2", - "psr/event-dispatcher": "^1", - "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3" - }, - "conflict": { - "symfony/http-kernel": "<5.4" - }, - "require-dev": { - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/messenger": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/mime", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/2cd9601efd040e56f43360daa68f3c6b0534923a", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "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" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "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.24.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": "2021-10-20T20:35:02+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-11-23T21:10:46+00:00" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44", - "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.23-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.24.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": "2021-09-14T14:02:44+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.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": "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.24.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": "2021-11-30T18:21:41+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-05-27T09:17:38+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:33+00:00" - }, - { - "name": "symfony/polyfill-php81", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:11+00:00" - }, - { - "name": "symfony/process", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/298ed357274c1868c20a0061df256a1250a6c4af", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/routing", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/yaml": "<5.4" - }, - "require-dev": { - "doctrine/annotations": "^1.12", - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/36715ebf9fb9db73db0cb24263c79077c6fe8603", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/container": "^2.0" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "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.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": "2021-11-04T17:53:12+00:00" - }, - { - "name": "symfony/string", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/522144f0c4c004c80d56fa47e40e17028e2eefc2", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.0" - }, - "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/translation-contracts": "^2.0|^3.0", - "symfony/var-exporter": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "files": [ - "Resources/functions.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 an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/translation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/71bb15335798f8c4da110911bcf2d2fead7a430d", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.3|^3.0" - }, - "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" - }, - "provide": { - "symfony/translation-implementation": "2.3|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-07T00:29:03+00:00" - }, - { - "name": "symfony/translation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "suggest": { - "symfony/translation-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - } - }, - "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.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": "2021-09-07T12:43:40+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7b701676fc64f9ef11f9b4870f16b48f66be4834", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<5.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-17T16:30:44+00:00" - }, - { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.4", - "source": { - "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" - } - ], - "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", - "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "support": { - "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" - }, - "time": "2021-12-08T09:12:39+00:00" - }, - { - "name": "vlucas/phpdotenv", - "version": "v5.4.1", - "source": { - "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", - "shasum": "" - }, - "require": { - "ext-pcre": "*", - "graham-campbell/result-type": "^1.0.2", - "php": "^7.1.3 || ^8.0", - "phpoption/phpoption": "^1.8", - "symfony/polyfill-ctype": "^1.23", - "symfony/polyfill-mbstring": "^1.23.1", - "symfony/polyfill-php80": "^1.23.1" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" - }, - "suggest": { - "ext-filter": "Required to use the boolean validator." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.4-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.4.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", - "type": "tidelift" - } - ], - "time": "2021-12-12T23:22:04+00:00" - }, - { - "name": "voku/portable-ascii", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/voku/portable-ascii.git", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/9bd89e83cecdf8c37b64909454249eaed98b2c89", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89", - "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.0" - }, - "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-01-24T18:59:03+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "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.10.0" - }, - "time": "2021-03-09T10:59:23+00:00" - } - ], - "packages-dev": [ - { - "name": "doctrine/instantiator", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.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%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2020-11-10T18:47:58+00:00" - }, - { - "name": "facade/ignition-contracts", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/facade/ignition-contracts.git", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^v2.15.8", - "phpunit/phpunit": "^9.3.11", - "vimeo/psalm": "^3.17.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Facade\\IgnitionContracts\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://flareapp.io", - "role": "Developer" - } - ], - "description": "Solution contracts for Ignition", - "homepage": "https://github.com/facade/ignition-contracts", - "keywords": [ - "contracts", - "flare", - "ignition" - ], - "support": { - "issues": "https://github.com/facade/ignition-contracts/issues", - "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" - }, - "time": "2020-10-16T08:27:54+00:00" - }, - { - "name": "fakerphp/faker", - "version": "v1.19.0", - "source": { - "type": "git", - "url": "https://github.com/FakerPHP/Faker.git", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^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": "*", - "symfony/phpunit-bridge": "^4.4 || ^5.2" - }, - "suggest": { - "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", - "ext-curl": "Required by Faker\\Provider\\Image to download images.", - "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", - "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.19-dev" - } - }, - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "François Zaninotto" - } - ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], - "support": { - "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0" - }, - "time": "2022-02-02T17:38:57+00:00" - }, - { - "name": "filp/whoops", - "version": "2.14.5", - "source": { - "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "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.14.5" - }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "time": "2022-01-07T12:00:00+00:00" - }, - { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "shasum": "" - }, - "require": { - "php": "^5.3|^7.0|^8.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" - }, - "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "classmap": [ - "hamcrest" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "This is the PHP port of Hamcrest Matchers", - "keywords": [ - "test" - ], - "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" - }, - "time": "2020-07-09T08:09:16+00:00" - }, - { - "name": "laravel/sail", - "version": "v1.13.2", - "source": { - "type": "git", - "url": "https://github.com/laravel/sail.git", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.0|^9.0", - "illuminate/contracts": "^8.0|^9.0", - "illuminate/support": "^8.0|^9.0", - "php": "^7.3|^8.0" - }, - "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": "2022-02-08T14:14:12+00:00" - }, - { - "name": "mockery/mockery", - "version": "1.5.0", - "source": { - "type": "git", - "url": "https://github.com/mockery/mockery.git", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "shasum": "" - }, - "require": { - "hamcrest/hamcrest-php": "^2.0.1", - "lib-pcre": ">=7.0", - "php": "^7.3 || ^8.0" - }, - "conflict": { - "phpunit/phpunit": "<8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-0": { - "Mockery": "library/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" - } - ], - "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": { - "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.5.0" - }, - "time": "2022-01-20T13:18:17+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.10.2", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "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.10.2" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2020-11-13T09:40:50+00:00" - }, - { - "name": "nunomaduro/collision", - "version": "v6.1.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/collision.git", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "shasum": "" - }, - "require": { - "facade/ignition-contracts": "^1.0.2", - "filp/whoops": "^2.14.5", - "php": "^8.0.0", - "symfony/console": "^6.0.2" - }, - "require-dev": { - "brianium/paratest": "^6.4.1", - "laravel/framework": "^9.0", - "nunomaduro/larastan": "^1.0.2", - "nunomaduro/mock-final-classes": "^1.1.0", - "orchestra/testbench": "^7.0.0", - "phpunit/phpunit": "^9.5.11" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "6.x-dev" - }, - "laravel": { - "providers": [ - "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" - ] - } - }, - "autoload": { - "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": "2022-01-18T17:49:08+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.1.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/15a90844ad40f127afd244c0cad228de2a80052a", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a", - "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.1.1" - }, - "time": "2022-02-07T21:56:48+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.6.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "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.6.0" - }, - "time": "2022-01-04T19:58:01+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" - }, - "time": "2021-12-08T12:19:24+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "9.2.10", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d5850aaf931743067f4bfc1ae4cbd06468400687", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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 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", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.10" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-05T09:12:13+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "3.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-02T12:48:52+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "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/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:58:55+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T05:33:50+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.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/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:16:10+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "9.5.13", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/597cb647654ede35e43b137926dfdfef0fb11743", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.3.1", - "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": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.7", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", - "sebastian/version": "^3.0.2" - }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.13" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-01-24T07:33:35+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:08:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "1.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:08:54+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:30:19+00:00" - }, - { - "name": "sebastian/comparator", - "version": "4.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:49:45+00:00" - }, - { - "name": "sebastian/complexity", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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 calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:52:27+00:00" - }, - { - "name": "sebastian/diff", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:10:38+00:00" - }, - { - "name": "sebastian/environment", - "version": "5.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-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": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:52:38+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "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", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-11-11T14:18:36+00:00" - }, - { - "name": "sebastian/global-state", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-11T13:31:12+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-28T06:42:11+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "http://www.github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:17:30+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:45:17+00:00" - }, - { - "name": "sebastian/type", - "version": "2.3.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-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/2.3.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-15T12:49:02+00:00" - }, - { - "name": "sebastian/version", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:39:44+00:00" - }, - { - "name": "spatie/backtrace", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/backtrace.git", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "ext-json": "*", - "phpunit/phpunit": "^9.3", - "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": { - "issues": "https://github.com/spatie/backtrace/issues", - "source": "https://github.com/spatie/backtrace/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/sponsors/spatie", - "type": "github" - }, - { - "url": "https://spatie.be/open-source/support-us", - "type": "other" - } - ], - "time": "2021-11-09T10:57:15+00:00" - }, - { - "name": "spatie/flare-client-php", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/flare-client-php.git", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "shasum": "" - }, - "require": { - "illuminate/pipeline": "^8.0|^9.0", - "php": "^8.0", - "spatie/backtrace": "^1.2", - "symfony/http-foundation": "^5.0|^6.0", - "symfony/mime": "^5.2|^6.0", - "symfony/process": "^5.2|^6.0", - "symfony/var-dumper": "^5.2|^6.0" - }, - "require-dev": { - "dms/phpunit-arraysubset-asserts": "^0.3.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/phpunit-snapshot-assertions": "^4.0" - }, - "type": "library", - "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.0.1" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2022-02-04T15:21:00+00:00" - }, - { - "name": "spatie/ignition", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/spatie/ignition.git", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/d2d5ba823af3004268556e87dfc94449e4159f5a", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "monolog/monolog": "^2.0", - "php": "^8.0", - "spatie/flare-client-php": "^1.0", - "symfony/console": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "mockery/mockery": "^1.4", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/ray": "^1.32", - "symfony/process": "^5.4|^6.0" - }, - "type": "library", - "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": "2022-01-19T12:57:41+00:00" - }, - { - "name": "spatie/laravel-ignition", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/68250225a9f83b086462c2af1b1139dfde48fbd2", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*", - "illuminate/support": "^8.77|^9.0", - "monolog/monolog": "^2.3", - "php": "^8.0", - "spatie/flare-client-php": "^1.0.1", - "spatie/ignition": "^1.0", - "symfony/console": "^5.0|^6.0", - "symfony/var-dumper": "^5.0|^6.0" - }, - "require-dev": { - "filp/whoops": "^2.14", - "livewire/livewire": "^2.8|dev-develop", - "mockery/mockery": "^1.4", - "nunomaduro/larastan": "^1.0", - "orchestra/testbench": "^6.23|^7.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/laravel-ray": "^1.27" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Spatie\\LaravelIgnition\\IgnitionServiceProvider" - ], - "aliases": { - "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" - } - } - }, - "autoload": { - "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": "2022-02-04T15:25:56+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2021-07-28T10:34:58+00:00" - } - ], - "aliases": [], - "minimum-stability": "dev", - "stability-flags": [], - "prefer-stable": true, - "prefer-lowest": false, - "platform": { - "php": "^8.0" - }, - "platform-dev": [], - "plugin-api-version": "2.1.0" -} diff --git a/Chapter05/onlineStore/config/app.php b/Chapter05/onlineStore/config/app.php deleted file mode 100644 index 1941d7c..0000000 --- a/Chapter05/onlineStore/config/app.php +++ /dev/null @@ -1,197 +0,0 @@ - env('APP_NAME', 'Laravel'), - - /* - |-------------------------------------------------------------------------- - | Application Environment - |-------------------------------------------------------------------------- - | - | This value determines the "environment" your application is currently - | running in. This may determine how you prefer to configure various - | services the application utilizes. Set this in your ".env" file. - | - */ - - 'env' => env('APP_ENV', 'production'), - - /* - |-------------------------------------------------------------------------- - | Application Debug Mode - |-------------------------------------------------------------------------- - | - | When your application is in debug mode, detailed error messages with - | stack traces will be shown on every error that occurs within your - | application. If disabled, a simple generic error page is shown. - | - */ - - 'debug' => (bool) env('APP_DEBUG', false), - - /* - |-------------------------------------------------------------------------- - | Application URL - |-------------------------------------------------------------------------- - | - | This URL is used by the console to properly generate URLs when using - | the Artisan command line tool. You should set this to the root of - | your application so that it is used when running Artisan tasks. - | - */ - - 'url' => env('APP_URL', 'http://localhost'), - - 'asset_url' => env('ASSET_URL', null), - - /* - |-------------------------------------------------------------------------- - | 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', - - /* - |-------------------------------------------------------------------------- - | 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' => [ - - /* - * Laravel Framework Service Providers... - */ - Illuminate\Auth\AuthServiceProvider::class, - Illuminate\Broadcasting\BroadcastServiceProvider::class, - Illuminate\Bus\BusServiceProvider::class, - Illuminate\Cache\CacheServiceProvider::class, - Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, - Illuminate\Cookie\CookieServiceProvider::class, - Illuminate\Database\DatabaseServiceProvider::class, - Illuminate\Encryption\EncryptionServiceProvider::class, - Illuminate\Filesystem\FilesystemServiceProvider::class, - Illuminate\Foundation\Providers\FoundationServiceProvider::class, - Illuminate\Hashing\HashServiceProvider::class, - Illuminate\Mail\MailServiceProvider::class, - Illuminate\Notifications\NotificationServiceProvider::class, - Illuminate\Pagination\PaginationServiceProvider::class, - Illuminate\Pipeline\PipelineServiceProvider::class, - Illuminate\Queue\QueueServiceProvider::class, - Illuminate\Redis\RedisServiceProvider::class, - Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, - Illuminate\Session\SessionServiceProvider::class, - Illuminate\Translation\TranslationServiceProvider::class, - Illuminate\Validation\ValidationServiceProvider::class, - Illuminate\View\ViewServiceProvider::class, - - /* - * 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, - - ], - - /* - |-------------------------------------------------------------------------- - | 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([ - // ... - ])->toArray(), - -]; diff --git a/Chapter05/onlineStore/config/auth.php b/Chapter05/onlineStore/config/auth.php deleted file mode 100644 index d8c6cee..0000000 --- a/Chapter05/onlineStore/config/auth.php +++ /dev/null @@ -1,111 +0,0 @@ - [ - '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 expire 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. - | - */ - - 'passwords' => [ - 'users' => [ - 'provider' => 'users', - 'table' => 'password_resets', - '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/Chapter05/onlineStore/config/broadcasting.php b/Chapter05/onlineStore/config/broadcasting.php deleted file mode 100644 index 67fcbbd..0000000 --- a/Chapter05/onlineStore/config/broadcasting.php +++ /dev/null @@ -1,67 +0,0 @@ - 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'), - 'useTLS' => true, - ], - '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/Chapter05/onlineStore/config/cache.php b/Chapter05/onlineStore/config/cache.php deleted file mode 100644 index 8736c7a..0000000 --- a/Chapter05/onlineStore/config/cache.php +++ /dev/null @@ -1,110 +0,0 @@ - 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'), - ], - - '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 a RAM based store such as APC or Memcached, there might - | be other applications utilizing the same cache. So, we'll specify a - | value to get prefixed to all our keys so we can avoid collisions. - | - */ - - 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'), - -]; diff --git a/Chapter05/onlineStore/config/cors.php b/Chapter05/onlineStore/config/cors.php deleted file mode 100644 index 8a39e6d..0000000 --- a/Chapter05/onlineStore/config/cors.php +++ /dev/null @@ -1,34 +0,0 @@ - ['api/*', 'sanctum/csrf-cookie'], - - 'allowed_methods' => ['*'], - - 'allowed_origins' => ['*'], - - 'allowed_origins_patterns' => [], - - 'allowed_headers' => ['*'], - - 'exposed_headers' => [], - - 'max_age' => 0, - - 'supports_credentials' => false, - -]; diff --git a/Chapter05/onlineStore/config/database.php b/Chapter05/onlineStore/config/database.php deleted file mode 100644 index 0faebae..0000000 --- a/Chapter05/onlineStore/config/database.php +++ /dev/null @@ -1,147 +0,0 @@ - env('DB_CONNECTION', 'mysql'), - - /* - |-------------------------------------------------------------------------- - | Database Connections - |-------------------------------------------------------------------------- - | - | Here are each of the database connections setup for your application. - | Of course, examples of configuring each database platform that is - | supported by Laravel is shown below to make development simple. - | - | - | All database work in Laravel is done through the PHP PDO facilities - | so make sure you have the driver for your particular database of - | choice installed on your machine before you begin development. - | - */ - - 'connections' => [ - - 'sqlite' => [ - 'driver' => 'sqlite', - 'url' => env('DATABASE_URL'), - 'database' => env('DB_DATABASE', database_path('database.sqlite')), - 'prefix' => '', - 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), - ], - - 'mysql' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '3306'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'unix_socket' => env('DB_SOCKET', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - 'pgsql' => [ - 'driver' => 'pgsql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '5432'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - 'search_path' => 'public', - 'sslmode' => 'prefer', - ], - - 'sqlsrv' => [ - 'driver' => 'sqlsrv', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', 'localhost'), - 'port' => env('DB_PORT', '1433'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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'), - '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'), - 'password' => env('REDIS_PASSWORD'), - 'port' => env('REDIS_PORT', '6379'), - 'database' => env('REDIS_CACHE_DB', '1'), - ], - - ], - -]; diff --git a/Chapter05/onlineStore/config/filesystems.php b/Chapter05/onlineStore/config/filesystems.php deleted file mode 100644 index cf5abce..0000000 --- a/Chapter05/onlineStore/config/filesystems.php +++ /dev/null @@ -1,73 +0,0 @@ - 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 setup for each driver as an example of the required options. - | - | Supported Drivers: "local", "ftp", "sftp", "s3" - | - */ - - 'disks' => [ - - 'local' => [ - 'driver' => 'local', - 'root' => storage_path('app'), - ], - - 'public' => [ - 'driver' => 'local', - 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', - 'visibility' => 'public', - ], - - '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), - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter05/onlineStore/config/hashing.php b/Chapter05/onlineStore/config/hashing.php deleted file mode 100644 index bcd3be4..0000000 --- a/Chapter05/onlineStore/config/hashing.php +++ /dev/null @@ -1,52 +0,0 @@ - '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/Chapter05/onlineStore/config/logging.php b/Chapter05/onlineStore/config/logging.php deleted file mode 100644 index fefe088..0000000 --- a/Chapter05/onlineStore/config/logging.php +++ /dev/null @@ -1,119 +0,0 @@ - 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' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), - - /* - |-------------------------------------------------------------------------- - | 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'), - ], - - 'daily' => [ - 'driver' => 'daily', - 'path' => storage_path('logs/laravel.log'), - 'level' => env('LOG_LEVEL', 'debug'), - 'days' => 14, - ], - - 'slack' => [ - 'driver' => 'slack', - 'url' => env('LOG_SLACK_WEBHOOK_URL'), - 'username' => 'Laravel Log', - 'emoji' => ':boom:', - 'level' => env('LOG_LEVEL', 'critical'), - ], - - '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'), - ], - ], - - 'stderr' => [ - 'driver' => 'monolog', - 'level' => env('LOG_LEVEL', 'debug'), - 'handler' => StreamHandler::class, - 'formatter' => env('LOG_STDERR_FORMATTER'), - 'with' => [ - 'stream' => 'php://stderr', - ], - ], - - 'syslog' => [ - 'driver' => 'syslog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'errorlog' => [ - 'driver' => 'errorlog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'null' => [ - 'driver' => 'monolog', - 'handler' => NullHandler::class, - ], - - 'emergency' => [ - 'path' => storage_path('logs/laravel.log'), - ], - ], - -]; diff --git a/Chapter05/onlineStore/config/mail.php b/Chapter05/onlineStore/config/mail.php deleted file mode 100644 index 87b6fe3..0000000 --- a/Chapter05/onlineStore/config/mail.php +++ /dev/null @@ -1,117 +0,0 @@ - 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", - | "postmark", "log", "array", "failover" - | - */ - - 'mailers' => [ - 'smtp' => [ - 'transport' => 'smtp', - '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, - ], - - 'ses' => [ - 'transport' => 'ses', - ], - - 'mailgun' => [ - 'transport' => 'mailgun', - ], - - 'postmark' => [ - 'transport' => 'postmark', - ], - - 'sendmail' => [ - 'transport' => 'sendmail', - 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -t -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/Chapter05/onlineStore/config/queue.php b/Chapter05/onlineStore/config/queue.php deleted file mode 100644 index 25ea5a8..0000000 --- a/Chapter05/onlineStore/config/queue.php +++ /dev/null @@ -1,93 +0,0 @@ - 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, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter05/onlineStore/config/sanctum.php b/Chapter05/onlineStore/config/sanctum.php deleted file mode 100644 index 9281c92..0000000 --- a/Chapter05/onlineStore/config/sanctum.php +++ /dev/null @@ -1,65 +0,0 @@ - explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( - '%s%s', - 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', - env('APP_URL') ? ','.parse_url(env('APP_URL'), PHP_URL_HOST) : '' - ))), - - /* - |-------------------------------------------------------------------------- - | 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/Chapter05/onlineStore/config/services.php b/Chapter05/onlineStore/config/services.php deleted file mode 100644 index 2a1d616..0000000 --- a/Chapter05/onlineStore/config/services.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - 'domain' => env('MAILGUN_DOMAIN'), - 'secret' => env('MAILGUN_SECRET'), - 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), - ], - - '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/Chapter05/onlineStore/config/session.php b/Chapter05/onlineStore/config/session.php deleted file mode 100644 index 8fed97c..0000000 --- a/Chapter05/onlineStore/config/session.php +++ /dev/null @@ -1,201 +0,0 @@ - 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/Chapter05/onlineStore/config/view.php b/Chapter05/onlineStore/config/view.php deleted file mode 100644 index 22b8a18..0000000 --- a/Chapter05/onlineStore/config/view.php +++ /dev/null @@ -1,36 +0,0 @@ - [ - 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/Chapter05/onlineStore/database/.gitignore b/Chapter05/onlineStore/database/.gitignore deleted file mode 100644 index 9b19b93..0000000 --- a/Chapter05/onlineStore/database/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.sqlite* diff --git a/Chapter05/onlineStore/database/factories/UserFactory.php b/Chapter05/onlineStore/database/factories/UserFactory.php deleted file mode 100644 index d6ca926..0000000 --- a/Chapter05/onlineStore/database/factories/UserFactory.php +++ /dev/null @@ -1,42 +0,0 @@ - - */ -class UserFactory extends Factory -{ - /** - * Define the model's default state. - * - * @return array - */ - public function definition() - { - return [ - 'name' => $this->faker->name(), - 'email' => $this->faker->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. - * - * @return \Illuminate\Database\Eloquent\Factories\Factory - */ - public function unverified() - { - return $this->state(function (array $attributes) { - return [ - 'email_verified_at' => null, - ]; - }); - } -} diff --git a/Chapter05/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php b/Chapter05/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php deleted file mode 100644 index cf6b776..0000000 --- a/Chapter05/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->string('name'); - $table->string('email')->unique(); - $table->timestamp('email_verified_at')->nullable(); - $table->string('password'); - $table->rememberToken(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('users'); - } -}; diff --git a/Chapter05/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php b/Chapter05/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php deleted file mode 100644 index fcacb80..0000000 --- a/Chapter05/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php +++ /dev/null @@ -1,32 +0,0 @@ -string('email')->index(); - $table->string('token'); - $table->timestamp('created_at')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('password_resets'); - } -}; diff --git a/Chapter05/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/Chapter05/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php deleted file mode 100644 index 1719198..0000000 --- a/Chapter05/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php +++ /dev/null @@ -1,36 +0,0 @@ -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. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('failed_jobs'); - } -}; diff --git a/Chapter05/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/Chapter05/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php deleted file mode 100644 index fd235f8..0000000 --- a/Chapter05/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->morphs('tokenable'); - $table->string('name'); - $table->string('token', 64)->unique(); - $table->text('abilities')->nullable(); - $table->timestamp('last_used_at')->nullable(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('personal_access_tokens'); - } -}; diff --git a/Chapter05/onlineStore/database/seeders/DatabaseSeeder.php b/Chapter05/onlineStore/database/seeders/DatabaseSeeder.php deleted file mode 100644 index 71f673f..0000000 --- a/Chapter05/onlineStore/database/seeders/DatabaseSeeder.php +++ /dev/null @@ -1,19 +0,0 @@ -create(); - } -} diff --git a/Chapter05/onlineStore/lang/en.json b/Chapter05/onlineStore/lang/en.json deleted file mode 100644 index 577680d..0000000 --- a/Chapter05/onlineStore/lang/en.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "The :attribute must contain at least one letter.": "The :attribute must contain at least one letter.", - "The :attribute must contain at least one number.": "The :attribute must contain at least one number.", - "The :attribute must contain at least one symbol.": "The :attribute must contain at least one symbol.", - "The :attribute must contain at least one uppercase and one lowercase letter.": "The :attribute must contain at least one uppercase and one lowercase letter.", - "The given :attribute has appeared in a data leak. Please choose a different :attribute.": "The given :attribute has appeared in a data leak. Please choose a different :attribute." -} diff --git a/Chapter05/onlineStore/lang/en/auth.php b/Chapter05/onlineStore/lang/en/auth.php deleted file mode 100644 index 6598e2c..0000000 --- a/Chapter05/onlineStore/lang/en/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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/Chapter05/onlineStore/lang/en/pagination.php b/Chapter05/onlineStore/lang/en/pagination.php deleted file mode 100644 index d481411..0000000 --- a/Chapter05/onlineStore/lang/en/pagination.php +++ /dev/null @@ -1,19 +0,0 @@ - '« Previous', - 'next' => 'Next »', - -]; diff --git a/Chapter05/onlineStore/lang/en/passwords.php b/Chapter05/onlineStore/lang/en/passwords.php deleted file mode 100644 index 2345a56..0000000 --- a/Chapter05/onlineStore/lang/en/passwords.php +++ /dev/null @@ -1,22 +0,0 @@ - '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/Chapter05/onlineStore/lang/en/validation.php b/Chapter05/onlineStore/lang/en/validation.php deleted file mode 100644 index 783003c..0000000 --- a/Chapter05/onlineStore/lang/en/validation.php +++ /dev/null @@ -1,163 +0,0 @@ - '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' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - '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' => [ - 'numeric' => 'The :attribute must be greater than :value.', - 'file' => 'The :attribute must be greater than :value kilobytes.', - 'string' => 'The :attribute must be greater than :value characters.', - 'array' => 'The :attribute must have more than :value items.', - ], - 'gte' => [ - 'numeric' => 'The :attribute must be greater than or equal to :value.', - 'file' => 'The :attribute must be greater than or equal to :value kilobytes.', - 'string' => 'The :attribute must be greater than or equal to :value characters.', - 'array' => 'The :attribute must have :value items or more.', - ], - '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' => [ - 'numeric' => 'The :attribute must be less than :value.', - 'file' => 'The :attribute must be less than :value kilobytes.', - 'string' => 'The :attribute must be less than :value characters.', - 'array' => 'The :attribute must have less than :value items.', - ], - 'lte' => [ - 'numeric' => 'The :attribute must be less than or equal to :value.', - 'file' => 'The :attribute must be less than or equal to :value kilobytes.', - 'string' => 'The :attribute must be less than or equal to :value characters.', - 'array' => 'The :attribute must not have more than :value items.', - ], - 'mac_address' => 'The :attribute must be a valid MAC address.', - 'max' => [ - 'numeric' => 'The :attribute must not be greater than :max.', - 'file' => 'The :attribute must not be greater than :max kilobytes.', - 'string' => 'The :attribute must not be greater than :max characters.', - 'array' => 'The :attribute must not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - '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.', - 'password' => 'The password is incorrect.', - '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' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - '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/Chapter05/onlineStore/package.json b/Chapter05/onlineStore/package.json deleted file mode 100644 index 7a9aecd..0000000 --- a/Chapter05/onlineStore/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "private": true, - "scripts": { - "dev": "npm run development", - "development": "mix", - "watch": "mix watch", - "watch-poll": "mix watch -- --watch-options-poll=1000", - "hot": "mix watch --hot", - "prod": "npm run production", - "production": "mix --production" - }, - "devDependencies": { - "axios": "^0.25", - "laravel-mix": "^6.0.6", - "lodash": "^4.17.19", - "postcss": "^8.1.14" - } -} diff --git a/Chapter05/onlineStore/phpunit.xml b/Chapter05/onlineStore/phpunit.xml deleted file mode 100644 index 2ac86a1..0000000 --- a/Chapter05/onlineStore/phpunit.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - ./tests/Unit - - - ./tests/Feature - - - - - ./app - - - - - - - - - - - - - - diff --git a/Chapter05/onlineStore/public/.htaccess b/Chapter05/onlineStore/public/.htaccess deleted file mode 100644 index 3aec5e2..0000000 --- a/Chapter05/onlineStore/public/.htaccess +++ /dev/null @@ -1,21 +0,0 @@ - - - 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/Chapter05/onlineStore/public/css/app.css b/Chapter05/onlineStore/public/css/app.css deleted file mode 100644 index cabac36..0000000 --- a/Chapter05/onlineStore/public/css/app.css +++ /dev/null @@ -1,20 +0,0 @@ -.bg-secondary { - background-color: #2c3e50 !important; -} - -.copyright { - background-color: #1a252f; -} - -.bg-primary { - background-color: #1abc9c !important; -} - -nav{ - font-weight: 700; -} - -.img-card{ - height: 18vw; - object-fit: cover; -} diff --git a/Chapter05/onlineStore/public/favicon.ico b/Chapter05/onlineStore/public/favicon.ico deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter05/onlineStore/public/index.php b/Chapter05/onlineStore/public/index.php deleted file mode 100644 index 1d69f3a..0000000 --- a/Chapter05/onlineStore/public/index.php +++ /dev/null @@ -1,55 +0,0 @@ -make(Kernel::class); - -$response = $kernel->handle( - $request = Request::capture() -)->send(); - -$kernel->terminate($request, $response); diff --git a/Chapter05/onlineStore/public/robots.txt b/Chapter05/onlineStore/public/robots.txt deleted file mode 100644 index eb05362..0000000 --- a/Chapter05/onlineStore/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: diff --git a/Chapter05/onlineStore/resources/css/app.css b/Chapter05/onlineStore/resources/css/app.css deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter05/onlineStore/resources/js/app.js b/Chapter05/onlineStore/resources/js/app.js deleted file mode 100644 index 40c55f6..0000000 --- a/Chapter05/onlineStore/resources/js/app.js +++ /dev/null @@ -1 +0,0 @@ -require('./bootstrap'); diff --git a/Chapter05/onlineStore/resources/js/bootstrap.js b/Chapter05/onlineStore/resources/js/bootstrap.js deleted file mode 100644 index 6922577..0000000 --- a/Chapter05/onlineStore/resources/js/bootstrap.js +++ /dev/null @@ -1,28 +0,0 @@ -window._ = require('lodash'); - -/** - * 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 = require('axios'); - -window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; - -/** - * 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'; - -// window.Pusher = require('pusher-js'); - -// window.Echo = new Echo({ -// broadcaster: 'pusher', -// key: process.env.MIX_PUSHER_APP_KEY, -// cluster: process.env.MIX_PUSHER_APP_CLUSTER, -// forceTLS: true -// }); diff --git a/Chapter05/onlineStore/resources/views/layouts/app.blade.php b/Chapter05/onlineStore/resources/views/layouts/app.blade.php deleted file mode 100644 index 6351369..0000000 --- a/Chapter05/onlineStore/resources/views/layouts/app.blade.php +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - @yield('title', 'Online Store') - - - - - -
-
-

@yield('subtitle', 'A Laravel Online Store')

-
-
- - -
- @yield('content') -
- - - - - - - diff --git a/Chapter05/onlineStore/resources/views/welcome.blade.php b/Chapter05/onlineStore/resources/views/welcome.blade.php deleted file mode 100644 index c587c72..0000000 --- a/Chapter05/onlineStore/resources/views/welcome.blade.php +++ /dev/null @@ -1,7 +0,0 @@ -@extends('layouts.app') -@section('title', 'Home Page - Online Store') -@section('content') -
- Welcome to the application -
-@endsection \ No newline at end of file diff --git a/Chapter05/onlineStore/routes/api.php b/Chapter05/onlineStore/routes/api.php deleted file mode 100644 index eb6fa48..0000000 --- a/Chapter05/onlineStore/routes/api.php +++ /dev/null @@ -1,19 +0,0 @@ -get('/user', function (Request $request) { - return $request->user(); -}); diff --git a/Chapter05/onlineStore/routes/channels.php b/Chapter05/onlineStore/routes/channels.php deleted file mode 100644 index 5d451e1..0000000 --- a/Chapter05/onlineStore/routes/channels.php +++ /dev/null @@ -1,18 +0,0 @@ -id === (int) $id; -}); diff --git a/Chapter05/onlineStore/routes/console.php b/Chapter05/onlineStore/routes/console.php deleted file mode 100644 index e05f4c9..0000000 --- a/Chapter05/onlineStore/routes/console.php +++ /dev/null @@ -1,19 +0,0 @@ -comment(Inspiring::quote()); -})->purpose('Display an inspiring quote'); diff --git a/Chapter05/onlineStore/routes/web.php b/Chapter05/onlineStore/routes/web.php deleted file mode 100644 index b130397..0000000 --- a/Chapter05/onlineStore/routes/web.php +++ /dev/null @@ -1,18 +0,0 @@ -make(Kernel::class)->bootstrap(); - - return $app; - } -} diff --git a/Chapter05/onlineStore/tests/Feature/ExampleTest.php b/Chapter05/onlineStore/tests/Feature/ExampleTest.php deleted file mode 100644 index 78ccc21..0000000 --- a/Chapter05/onlineStore/tests/Feature/ExampleTest.php +++ /dev/null @@ -1,21 +0,0 @@ -get('/'); - - $response->assertStatus(200); - } -} diff --git a/Chapter05/onlineStore/tests/TestCase.php b/Chapter05/onlineStore/tests/TestCase.php deleted file mode 100644 index 2932d4a..0000000 --- a/Chapter05/onlineStore/tests/TestCase.php +++ /dev/null @@ -1,10 +0,0 @@ -assertTrue(true); - } -} diff --git a/Chapter05/onlineStore/webpack.mix.js b/Chapter05/onlineStore/webpack.mix.js deleted file mode 100644 index 2a22dc1..0000000 --- a/Chapter05/onlineStore/webpack.mix.js +++ /dev/null @@ -1,17 +0,0 @@ -const mix = require('laravel-mix'); - -/* - |-------------------------------------------------------------------------- - | Mix Asset Management - |-------------------------------------------------------------------------- - | - | Mix provides a clean, fluent API for defining some Webpack build steps - | for your Laravel applications. By default, we are compiling the CSS - | file for the application as well as bundling up all the JS files. - | - */ - -mix.js('resources/js/app.js', 'public/js') - .postCss('resources/css/app.css', 'public/css', [ - // - ]); diff --git a/Chapter06/onlineStore/.editorconfig b/Chapter06/onlineStore/.editorconfig deleted file mode 100644 index 1671c9b..0000000 --- a/Chapter06/onlineStore/.editorconfig +++ /dev/null @@ -1,18 +0,0 @@ -root = true - -[*] -charset = utf-8 -end_of_line = lf -insert_final_newline = true -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true - -[*.md] -trim_trailing_whitespace = false - -[*.{yml,yaml}] -indent_size = 2 - -[docker-compose.yml] -indent_size = 4 diff --git a/Chapter06/onlineStore/.env.example b/Chapter06/onlineStore/.env.example deleted file mode 100644 index 8510237..0000000 --- a/Chapter06/onlineStore/.env.example +++ /dev/null @@ -1,52 +0,0 @@ -APP_NAME=Laravel -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=laravel -DB_USERNAME=root -DB_PASSWORD= - -BROADCAST_DRIVER=log -CACHE_DRIVER=file -FILESYSTEM_DISK=local -QUEUE_CONNECTION=sync -SESSION_DRIVER=file -SESSION_LIFETIME=120 - -MEMCACHED_HOST=127.0.0.1 - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -MAIL_MAILER=smtp -MAIL_HOST=mailhog -MAIL_PORT=1025 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS=null -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_APP_CLUSTER=mt1 - -MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/Chapter06/onlineStore/.gitattributes b/Chapter06/onlineStore/.gitattributes deleted file mode 100644 index 510d996..0000000 --- a/Chapter06/onlineStore/.gitattributes +++ /dev/null @@ -1,10 +0,0 @@ -* text=auto - -*.blade.php diff=html -*.css diff=css -*.html diff=html -*.md diff=markdown -*.php diff=php - -/.github export-ignore -CHANGELOG.md export-ignore diff --git a/Chapter06/onlineStore/.gitignore b/Chapter06/onlineStore/.gitignore deleted file mode 100644 index eb003b0..0000000 --- a/Chapter06/onlineStore/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -/node_modules -/public/hot -/public/storage -/storage/*.key -/vendor -.env -.env.backup -.phpunit.result.cache -docker-compose.override.yml -Homestead.json -Homestead.yaml -npm-debug.log -yarn-error.log -/.idea -/.vscode diff --git a/Chapter06/onlineStore/.styleci.yml b/Chapter06/onlineStore/.styleci.yml deleted file mode 100644 index 679a631..0000000 --- a/Chapter06/onlineStore/.styleci.yml +++ /dev/null @@ -1,13 +0,0 @@ -php: - preset: laravel - version: 8 - disabled: - - no_unused_imports - finder: - not-name: - - index.php -js: - finder: - not-name: - - webpack.mix.js -css: true diff --git a/Chapter06/onlineStore/README.md b/Chapter06/onlineStore/README.md deleted file mode 100644 index f171eca..0000000 --- a/Chapter06/onlineStore/README.md +++ /dev/null @@ -1,64 +0,0 @@ -

- -

-Build Status -Total Downloads -Latest Stable Version -License -

- -## About Laravel - -Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as: - -- [Simple, fast routing engine](https://laravel.com/docs/routing). -- [Powerful dependency injection container](https://laravel.com/docs/container). -- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage. -- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent). -- Database agnostic [schema migrations](https://laravel.com/docs/migrations). -- [Robust background job processing](https://laravel.com/docs/queues). -- [Real-time event broadcasting](https://laravel.com/docs/broadcasting). - -Laravel is accessible, powerful, and provides tools required for large, robust applications. - -## Learning Laravel - -Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework. - -If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 2000 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library. - -## Laravel Sponsors - -We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell). - -### Premium Partners - -- **[Vehikl](https://vehikl.com/)** -- **[Tighten Co.](https://tighten.co)** -- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** -- **[64 Robots](https://64robots.com)** -- **[Cubet Techno Labs](https://cubettech.com)** -- **[Cyber-Duck](https://cyber-duck.co.uk)** -- **[Many](https://www.many.co.uk)** -- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)** -- **[DevSquad](https://devsquad.com)** -- **[Curotec](https://www.curotec.com/services/technologies/laravel/)** -- **[OP.GG](https://op.gg)** -- **[WebReinvent](https://webreinvent.com/?utm_source=laravel&utm_medium=github&utm_campaign=patreon-sponsors)** -- **[Lendio](https://lendio.com)** - -## Contributing - -Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions). - -## Code of Conduct - -In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). - -## Security Vulnerabilities - -If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed. - -## License - -The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). diff --git a/Chapter06/onlineStore/app/Console/Kernel.php b/Chapter06/onlineStore/app/Console/Kernel.php deleted file mode 100644 index d8bc1d2..0000000 --- a/Chapter06/onlineStore/app/Console/Kernel.php +++ /dev/null @@ -1,32 +0,0 @@ -command('inspire')->hourly(); - } - - /** - * Register the commands for the application. - * - * @return void - */ - protected function commands() - { - $this->load(__DIR__.'/Commands'); - - require base_path('routes/console.php'); - } -} diff --git a/Chapter06/onlineStore/app/Exceptions/Handler.php b/Chapter06/onlineStore/app/Exceptions/Handler.php deleted file mode 100644 index 8e7fbd1..0000000 --- a/Chapter06/onlineStore/app/Exceptions/Handler.php +++ /dev/null @@ -1,41 +0,0 @@ -> - */ - protected $dontReport = [ - // - ]; - - /** - * A list of the inputs that are never flashed for validation exceptions. - * - * @var array - */ - protected $dontFlash = [ - 'current_password', - 'password', - 'password_confirmation', - ]; - - /** - * Register the exception handling callbacks for the application. - * - * @return void - */ - public function register() - { - $this->reportable(function (Throwable $e) { - // - }); - } -} diff --git a/Chapter06/onlineStore/app/Http/Controllers/Controller.php b/Chapter06/onlineStore/app/Http/Controllers/Controller.php deleted file mode 100644 index a0a2a8a..0000000 --- a/Chapter06/onlineStore/app/Http/Controllers/Controller.php +++ /dev/null @@ -1,13 +0,0 @@ -with("viewData", $viewData); - } - - public function about() - { - $data1 = "About us - Online Store"; - $data2 = "About us"; - $description = "This is an about page ..."; - $author = "Developed by: Your Name"; - return view('home.about')->with("title", $data1) - ->with("subtitle", $data2) - ->with("description", $description) - ->with("author", $author); - - } -} diff --git a/Chapter06/onlineStore/app/Http/Kernel.php b/Chapter06/onlineStore/app/Http/Kernel.php deleted file mode 100644 index d3722c2..0000000 --- a/Chapter06/onlineStore/app/Http/Kernel.php +++ /dev/null @@ -1,67 +0,0 @@ - - */ - protected $middleware = [ - // \App\Http\Middleware\TrustHosts::class, - \App\Http\Middleware\TrustProxies::class, - \Fruitcake\Cors\HandleCors::class, - \App\Http\Middleware\PreventRequestsDuringMaintenance::class, - \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, - \App\Http\Middleware\TrimStrings::class, - \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, - ]; - - /** - * The application's route middleware groups. - * - * @var array> - */ - protected $middlewareGroups = [ - 'web' => [ - \App\Http\Middleware\EncryptCookies::class, - \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, - \Illuminate\Session\Middleware\StartSession::class, - // \Illuminate\Session\Middleware\AuthenticateSession::class, - \Illuminate\View\Middleware\ShareErrorsFromSession::class, - \App\Http\Middleware\VerifyCsrfToken::class, - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - - 'api' => [ - // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, - 'throttle:api', - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - ]; - - /** - * The application's route middleware. - * - * These middleware may be assigned to groups or used individually. - * - * @var array - */ - protected $routeMiddleware = [ - 'auth' => \App\Http\Middleware\Authenticate::class, - 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::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, - 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, - 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, - 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, - ]; -} diff --git a/Chapter06/onlineStore/app/Http/Middleware/Authenticate.php b/Chapter06/onlineStore/app/Http/Middleware/Authenticate.php deleted file mode 100644 index 704089a..0000000 --- a/Chapter06/onlineStore/app/Http/Middleware/Authenticate.php +++ /dev/null @@ -1,21 +0,0 @@ -expectsJson()) { - return route('login'); - } - } -} diff --git a/Chapter06/onlineStore/app/Http/Middleware/EncryptCookies.php b/Chapter06/onlineStore/app/Http/Middleware/EncryptCookies.php deleted file mode 100644 index 867695b..0000000 --- a/Chapter06/onlineStore/app/Http/Middleware/EncryptCookies.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter06/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/Chapter06/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php deleted file mode 100644 index 74cbd9a..0000000 --- a/Chapter06/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter06/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php b/Chapter06/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php deleted file mode 100644 index a2813a0..0000000 --- a/Chapter06/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php +++ /dev/null @@ -1,32 +0,0 @@ -check()) { - return redirect(RouteServiceProvider::HOME); - } - } - - return $next($request); - } -} diff --git a/Chapter06/onlineStore/app/Http/Middleware/TrimStrings.php b/Chapter06/onlineStore/app/Http/Middleware/TrimStrings.php deleted file mode 100644 index 88cadca..0000000 --- a/Chapter06/onlineStore/app/Http/Middleware/TrimStrings.php +++ /dev/null @@ -1,19 +0,0 @@ - - */ - protected $except = [ - 'current_password', - 'password', - 'password_confirmation', - ]; -} diff --git a/Chapter06/onlineStore/app/Http/Middleware/TrustHosts.php b/Chapter06/onlineStore/app/Http/Middleware/TrustHosts.php deleted file mode 100644 index 7186414..0000000 --- a/Chapter06/onlineStore/app/Http/Middleware/TrustHosts.php +++ /dev/null @@ -1,20 +0,0 @@ - - */ - public function hosts() - { - return [ - $this->allSubdomainsOfApplicationUrl(), - ]; - } -} diff --git a/Chapter06/onlineStore/app/Http/Middleware/TrustProxies.php b/Chapter06/onlineStore/app/Http/Middleware/TrustProxies.php deleted file mode 100644 index 3391630..0000000 --- a/Chapter06/onlineStore/app/Http/Middleware/TrustProxies.php +++ /dev/null @@ -1,28 +0,0 @@ -|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/Chapter06/onlineStore/app/Http/Middleware/VerifyCsrfToken.php b/Chapter06/onlineStore/app/Http/Middleware/VerifyCsrfToken.php deleted file mode 100644 index 9e86521..0000000 --- a/Chapter06/onlineStore/app/Http/Middleware/VerifyCsrfToken.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter06/onlineStore/app/Models/User.php b/Chapter06/onlineStore/app/Models/User.php deleted file mode 100644 index 8996368..0000000 --- a/Chapter06/onlineStore/app/Models/User.php +++ /dev/null @@ -1,44 +0,0 @@ - - */ - 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', - ]; -} diff --git a/Chapter06/onlineStore/app/Providers/AppServiceProvider.php b/Chapter06/onlineStore/app/Providers/AppServiceProvider.php deleted file mode 100644 index ee8ca5b..0000000 --- a/Chapter06/onlineStore/app/Providers/AppServiceProvider.php +++ /dev/null @@ -1,28 +0,0 @@ - - */ - protected $policies = [ - // 'App\Models\Model' => 'App\Policies\ModelPolicy', - ]; - - /** - * Register any authentication / authorization services. - * - * @return void - */ - public function boot() - { - $this->registerPolicies(); - - // - } -} diff --git a/Chapter06/onlineStore/app/Providers/BroadcastServiceProvider.php b/Chapter06/onlineStore/app/Providers/BroadcastServiceProvider.php deleted file mode 100644 index 395c518..0000000 --- a/Chapter06/onlineStore/app/Providers/BroadcastServiceProvider.php +++ /dev/null @@ -1,21 +0,0 @@ -> - */ - protected $listen = [ - Registered::class => [ - SendEmailVerificationNotification::class, - ], - ]; - - /** - * Register any events for your application. - * - * @return void - */ - public function boot() - { - // - } -} diff --git a/Chapter06/onlineStore/app/Providers/RouteServiceProvider.php b/Chapter06/onlineStore/app/Providers/RouteServiceProvider.php deleted file mode 100644 index 7c17d1f..0000000 --- a/Chapter06/onlineStore/app/Providers/RouteServiceProvider.php +++ /dev/null @@ -1,63 +0,0 @@ -configureRateLimiting(); - - $this->routes(function () { - Route::prefix('api') - ->middleware('api') - ->namespace($this->namespace) - ->group(base_path('routes/api.php')); - - Route::middleware('web') - ->namespace($this->namespace) - ->group(base_path('routes/web.php')); - }); - } - - /** - * Configure the rate limiters for the application. - * - * @return void - */ - protected function configureRateLimiting() - { - RateLimiter::for('api', function (Request $request) { - return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); - }); - } -} diff --git a/Chapter06/onlineStore/artisan b/Chapter06/onlineStore/artisan deleted file mode 100644 index 67a3329..0000000 --- a/Chapter06/onlineStore/artisan +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env php -make(Illuminate\Contracts\Console\Kernel::class); - -$status = $kernel->handle( - $input = new Symfony\Component\Console\Input\ArgvInput, - new Symfony\Component\Console\Output\ConsoleOutput -); - -/* -|-------------------------------------------------------------------------- -| Shutdown The Application -|-------------------------------------------------------------------------- -| -| Once Artisan has finished running, we will fire off the shutdown events -| so that any final work may be done by the application before we shut -| down the process. This is the last thing to happen to the request. -| -*/ - -$kernel->terminate($input, $status); - -exit($status); diff --git a/Chapter06/onlineStore/bootstrap/app.php b/Chapter06/onlineStore/bootstrap/app.php deleted file mode 100644 index 037e17d..0000000 --- a/Chapter06/onlineStore/bootstrap/app.php +++ /dev/null @@ -1,55 +0,0 @@ -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/Chapter06/onlineStore/bootstrap/cache/.gitignore b/Chapter06/onlineStore/bootstrap/cache/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter06/onlineStore/bootstrap/cache/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter06/onlineStore/composer.json b/Chapter06/onlineStore/composer.json deleted file mode 100644 index 6913736..0000000 --- a/Chapter06/onlineStore/composer.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "name": "laravel/laravel", - "type": "project", - "description": "The Laravel Framework.", - "keywords": ["framework", "laravel"], - "license": "MIT", - "require": { - "php": "^8.0", - "fruitcake/laravel-cors": "^2.0.5", - "guzzlehttp/guzzle": "^7.2", - "laravel/framework": "^9.0", - "laravel/sanctum": "^2.14", - "laravel/tinker": "^2.7" - }, - "require-dev": { - "fakerphp/faker": "^1.9.1", - "laravel/sail": "^1.0.1", - "mockery/mockery": "^1.4.4", - "nunomaduro/collision": "^6.1", - "phpunit/phpunit": "^9.5.10", - "spatie/laravel-ignition": "^1.0" - }, - "autoload": { - "psr-4": { - "App\\": "app/", - "Database\\Factories\\": "database/factories/", - "Database\\Seeders\\": "database/seeders/" - } - }, - "autoload-dev": { - "psr-4": { - "Tests\\": "tests/" - } - }, - "scripts": { - "post-autoload-dump": [ - "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", - "@php artisan package:discover --ansi" - ], - "post-update-cmd": [ - "@php artisan vendor:publish --tag=laravel-assets --ansi --force" - ], - "post-root-package-install": [ - "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" - ], - "post-create-project-cmd": [ - "@php artisan key:generate --ansi" - ] - }, - "extra": { - "laravel": { - "dont-discover": [] - } - }, - "config": { - "optimize-autoloader": true, - "preferred-install": "dist", - "sort-packages": true - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/Chapter06/onlineStore/composer.lock b/Chapter06/onlineStore/composer.lock deleted file mode 100644 index 64d5967..0000000 --- a/Chapter06/onlineStore/composer.lock +++ /dev/null @@ -1,7804 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "65e85f9f959c0b087110331754d451cf", - "packages": [ - { - "name": "asm89/stack-cors", - "version": "v2.1.1", - "source": { - "type": "git", - "url": "https://github.com/asm89/stack-cors.git", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4|^5|^6" - }, - "require-dev": { - "phpunit/phpunit": "^7|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "psr-4": { - "Asm89\\Stack\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alexander", - "email": "iam.asm89@gmail.com" - } - ], - "description": "Cross-origin resource sharing library and stack middleware", - "homepage": "https://github.com/asm89/stack-cors", - "keywords": [ - "cors", - "stack" - ], - "support": { - "issues": "https://github.com/asm89/stack-cors/issues", - "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" - }, - "time": "2022-01-18T09:12:03+00:00" - }, - { - "name": "brick/math", - "version": "0.9.3", - "source": { - "type": "git", - "url": "https://github.com/brick/math.git", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", - "vimeo/psalm": "4.9.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Brick\\Math\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Arbitrary-precision arithmetic library", - "keywords": [ - "Arbitrary-precision", - "BigInteger", - "BigRational", - "arithmetic", - "bigdecimal", - "bignum", - "brick", - "math" - ], - "support": { - "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.9.3" - }, - "funding": [ - { - "url": "https://github.com/BenMorel", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/brick/math", - "type": "tidelift" - } - ], - "time": "2021-08-15T20:50:18+00:00" - }, - { - "name": "dflydev/dot-access-data", - "version": "v3.0.1", - "source": { - "type": "git", - "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c", - "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": "^3.14" - }, - "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.1" - }, - "time": "2021-08-13T13:06:58+00:00" - }, - { - "name": "doctrine/inflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "vimeo/psalm": "^4.10" - }, - "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.4" - }, - "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": "2021-10-22T20:16:43+00:00" - }, - { - "name": "doctrine/lexer", - "version": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" - } - }, - "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/1.2.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%2Flexer", - "type": "tidelift" - } - ], - "time": "2022-01-12T08:27:12+00:00" - }, - { - "name": "dragonmantank/cron-expression", - "version": "v3.3.1", - "source": { - "type": "git", - "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "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.1" - }, - "funding": [ - { - "url": "https://github.com/dragonmantank", - "type": "github" - } - ], - "time": "2022-01-18T15:43:28+00:00" - }, - { - "name": "egulias/email-validator", - "version": "3.1.2", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ee0db30118f661fb166bcffbf5d82032df484697", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^1.2", - "php": ">=7.2", - "symfony/polyfill-intl-idn": "^1.15" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^8.5.8|^9.3.3", - "vimeo/psalm": "^4" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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/3.1.2" - }, - "funding": [ - { - "url": "https://github.com/egulias", - "type": "github" - } - ], - "time": "2021-10-11T09:18:27+00:00" - }, - { - "name": "fruitcake/laravel-cors", - "version": "v2.0.5", - "source": { - "type": "git", - "url": "https://github.com/fruitcake/laravel-cors.git", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "shasum": "" - }, - "require": { - "asm89/stack-cors": "^2.0.1", - "illuminate/contracts": "^6|^7|^8|^9", - "illuminate/support": "^6|^7|^8|^9", - "php": ">=7.2", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4.3.4|^5|^6" - }, - "require-dev": { - "laravel/framework": "^6|^7.24|^8", - "orchestra/testbench-dusk": "^4|^5|^6|^7", - "phpunit/phpunit": "^6|^7|^8|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - }, - "laravel": { - "providers": [ - "Fruitcake\\Cors\\CorsServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Fruitcake\\Cors\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fruitcake", - "homepage": "https://fruitcake.nl" - }, - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", - "keywords": [ - "api", - "cors", - "crossdomain", - "laravel" - ], - "support": { - "issues": "https://github.com/fruitcake/laravel-cors/issues", - "source": "https://github.com/fruitcake/laravel-cors/tree/v2.0.5" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "time": "2022-01-03T14:53:04+00:00" - }, - { - "name": "graham-campbell/result-type", - "version": "v1.0.4", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "0690bde05318336c7221785f2a932467f98b64ca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/0690bde05318336c7221785f2a932467f98b64ca", - "reference": "0690bde05318336c7221785f2a932467f98b64ca", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "phpoption/phpoption": "^1.8" - }, - "require-dev": { - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", - "type": "tidelift" - } - ], - "time": "2021-11-21T21:41:47+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "7.4.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.8.3 || ^2.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.4.1", - "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.5 || ^9.3.5", - "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": { - "branch-alias": { - "dev-master": "7.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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.4.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": "2021-12-06T18:43:05+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "1.5.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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/1.5.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "time": "2021-10-22T20:56:57+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.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.4.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.8 || ^9.3.10" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "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.1.0" - }, - "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": "2021-10-06T17:43:30+00:00" - }, - { - "name": "laravel/framework", - "version": "v9.0.1", - "source": { - "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "shasum": "" - }, - "require": { - "doctrine/inflector": "^2.0", - "dragonmantank/cron-expression": "^3.1", - "egulias/email-validator": "^3.1", - "ext-mbstring": "*", - "ext-openssl": "*", - "laravel/serializable-closure": "^1.0", - "league/commonmark": "^2.2", - "league/flysystem": "^3.0", - "monolog/monolog": "^2.0", - "nesbot/carbon": "^2.53.1", - "php": "^8.0.2", - "psr/container": "^1.1.1|^2.0.1", - "psr/log": "^1.0|^2.0|^3.0", - "psr/simple-cache": "^1.0|^2.0|^3.0", - "ramsey/uuid": "^4.2.2", - "symfony/console": "^6.0", - "symfony/error-handler": "^6.0", - "symfony/finder": "^6.0", - "symfony/http-foundation": "^6.0", - "symfony/http-kernel": "^6.0", - "symfony/mailer": "^6.0", - "symfony/mime": "^6.0", - "symfony/process": "^6.0", - "symfony/routing": "^6.0", - "symfony/var-dumper": "^6.0", - "tijsverkoyen/css-to-inline-styles": "^2.2.2", - "vlucas/phpdotenv": "^5.4.1", - "voku/portable-ascii": "^2.0" - }, - "conflict": { - "tightenco/collect": "<5.5.33" - }, - "provide": { - "psr/container-implementation": "1.1|2.0", - "psr/simple-cache-implementation": "1.0|2.0|3.0" - }, - "replace": { - "illuminate/auth": "self.version", - "illuminate/broadcasting": "self.version", - "illuminate/bus": "self.version", - "illuminate/cache": "self.version", - "illuminate/collections": "self.version", - "illuminate/conditionable": "self.version", - "illuminate/config": "self.version", - "illuminate/console": "self.version", - "illuminate/container": "self.version", - "illuminate/contracts": "self.version", - "illuminate/cookie": "self.version", - "illuminate/database": "self.version", - "illuminate/encryption": "self.version", - "illuminate/events": "self.version", - "illuminate/filesystem": "self.version", - "illuminate/hashing": "self.version", - "illuminate/http": "self.version", - "illuminate/log": "self.version", - "illuminate/macroable": "self.version", - "illuminate/mail": "self.version", - "illuminate/notifications": "self.version", - "illuminate/pagination": "self.version", - "illuminate/pipeline": "self.version", - "illuminate/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": { - "aws/aws-sdk-php": "^3.198.1", - "doctrine/dbal": "^2.13.3|^3.1.4", - "fakerphp/faker": "^1.9.2", - "guzzlehttp/guzzle": "^7.2", - "league/flysystem-aws-s3-v3": "^3.0", - "league/flysystem-ftp": "^3.0", - "league/flysystem-sftp-v3": "^3.0", - "mockery/mockery": "^1.4.4", - "orchestra/testbench-core": "^7.0", - "pda/pheanstalk": "^4.0", - "phpstan/phpstan": "^1.0", - "phpunit/phpunit": "^9.5.8", - "predis/predis": "^1.1.9", - "symfony/amazon-mailer": "^6.0", - "symfony/cache": "^6.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.198.1).", - "brianium/paratest": "Required to run tests in parallel (^6.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", - "ext-bcmath": "Required to use the multiple_of validation rule.", - "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.", - "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.2).", - "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-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", - "mockery/mockery": "Required to use mocking (^1.4.4).", - "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).", - "predis/predis": "Required to use the predis connector (^1.1.9).", - "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.0).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^6.0).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.0).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.0).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.0).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.x-dev" - } - }, - "autoload": { - "files": [ - "src/Illuminate/Collections/helpers.php", - "src/Illuminate/Events/functions.php", - "src/Illuminate/Foundation/helpers.php", - "src/Illuminate/Support/helpers.php" - ], - "psr-4": { - "Illuminate\\": "src/Illuminate/", - "Illuminate\\Support\\": [ - "src/Illuminate/Macroable/", - "src/Illuminate/Collections/", - "src/Illuminate/Conditionable/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Laravel Framework.", - "homepage": "https://laravel.com", - "keywords": [ - "framework", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2022-02-09T15:00:05+00:00" - }, - { - "name": "laravel/sanctum", - "version": "v2.14.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/sanctum.git", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/0647a87140c7522e75826cffcadb3ad6e01f71e9", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/contracts": "^6.9|^7.0|^8.0|^9.0", - "illuminate/database": "^6.9|^7.0|^8.0|^9.0", - "illuminate/support": "^6.9|^7.0|^8.0|^9.0", - "php": "^7.2|^8.0" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0", - "phpunit/phpunit": "^8.0|^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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": "2022-01-12T15:07:43+00:00" - }, - { - "name": "laravel/serializable-closure", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/serializable-closure.git", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/65c9faf50d567b65d81764a44526545689e3fe63", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "pestphp/pest": "^1.18", - "phpstan/phpstan": "^0.12.98", - "symfony/var-dumper": "^5.3" - }, - "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": "2022-02-01T16:29:39+00:00" - }, - { - "name": "laravel/tinker", - "version": "v2.7.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/tinker.git", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/5f2f9815b7631b9f586a3de7933c25f9327d4073", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073", - "shasum": "" - }, - "require": { - "illuminate/console": "^6.0|^7.0|^8.0|^9.0", - "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.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", - "phpunit/phpunit": "^8.5.8|^9.3.3" - }, - "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.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.7.0" - }, - "time": "2022-01-10T08:52:49+00:00" - }, - { - "name": "league/commonmark", - "version": "2.2.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/commonmark.git", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "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.15" - }, - "require-dev": { - "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.0", - "commonmark/commonmark.js": "0.30.0", - "composer/package-versions-deprecated": "^1.8", - "erusev/parsedown": "^1.0", - "ext-json": "*", - "github/gfm": "0.29.0", - "michelf/php-markdown": "^1.4", - "phpstan/phpstan": "^0.12.88 || ^1.0.0", - "phpunit/phpunit": "^9.5.5", - "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", - "unleashedtech/php-coding-standard": "^3.1", - "vimeo/psalm": "^4.7.3" - }, - "suggest": { - "symfony/yaml": "v2.3+ required if using the Front Matter extension" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.3-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": "2022-01-25T14:37:33+00:00" - }, - { - "name": "league/config", - "version": "v1.1.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/config.git", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/config/zipball/a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^3.0.1", - "nette/schema": "^1.2", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.90", - "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": "2021-08-14T12:15:32+00:00" - }, - { - "name": "league/flysystem", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9f8b4260031bfef5497477da53dd57b2aaff0e06", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06", - "shasum": "" - }, - "require": { - "ext-json": "*", - "league/mime-type-detection": "^1.0.0", - "php": "^8.0.2" - }, - "conflict": { - "guzzlehttp/guzzle": "<7.0", - "guzzlehttp/ringphp": "<1.1.1", - "symfony/http-client": "<5.2" - }, - "require-dev": { - "async-aws/s3": "^1.5", - "async-aws/simple-s3": "^1.0", - "aws/aws-sdk-php": "^3.198.1", - "composer/semver": "^3.0", - "ext-fileinfo": "*", - "ext-ftp": "*", - "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.5", - "google/cloud-storage": "^1.23", - "phpseclib/phpseclib": "^2.0", - "phpstan/phpstan": "^0.12.26", - "phpunit/phpunit": "^9.5.11", - "sabre/dav": "^4.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.0.3" - }, - "funding": [ - { - "url": "https://offset.earth/frankdejonge", - "type": "custom" - }, - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2022-01-31T19:41:04+00:00" - }, - { - "name": "league/mime-type-detection", - "version": "1.9.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/aa70e813a6ad3d1558fc927863d47309b4c23e69", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.2", - "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" - }, - "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.9.0" - }, - "funding": [ - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2021-11-21T11:48:40+00:00" - }, - { - "name": "monolog/monolog", - "version": "2.3.5", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd4380d6fc37626e2f799f29d91195040137eba9", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "provide": { - "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7", - "graylog2/gelf-php": "^1.4.2", - "mongodb/mongodb": "^1.8", - "php-amqplib/php-amqplib": "~2.4 || ^3", - "php-console/php-console": "^3.1.3", - "phpspec/prophecy": "^1.6.1", - "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5", - "predis/predis": "^1.1", - "rollbar/rollbar": "^1.3", - "ruflin/elastica": ">=0.90@dev", - "swiftmailer/swiftmailer": "^5.3|^6.0" - }, - "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", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "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": "2.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/2.3.5" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" - } - ], - "time": "2021-10-01T21:08:31+00:00" - }, - { - "name": "nesbot/carbon", - "version": "2.56.0", - "source": { - "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1.8 || ^8.0", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "doctrine/dbal": "^2.0 || ^3.0", - "doctrine/orm": "^2.7", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "phpmd/phpmd": "^2.9", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.54 || ^1.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.14", - "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://opencollective.com/Carbon", - "type": "open_collective" - }, - { - "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", - "type": "tidelift" - } - ], - "time": "2022-01-21T17:08:38+00:00" - }, - { - "name": "nette/schema", - "version": "v1.2.2", - "source": { - "type": "git", - "url": "https://github.com/nette/schema.git", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/9a39cef03a5b34c7de64f551538cbba05c2be5df", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df", - "shasum": "" - }, - "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": ">=7.1 <8.2" - }, - "require-dev": { - "nette/tester": "^2.3 || ^2.4", - "phpstan/phpstan-nette": "^0.12", - "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.2" - }, - "time": "2021-10-15T11:40:02+00:00" - }, - { - "name": "nette/utils", - "version": "v3.2.7", - "source": { - "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/0af4e3de4df9f1543534beab255ccf459e7a2c99", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99", - "shasum": "" - }, - "require": { - "php": ">=7.2 <8.2" - }, - "conflict": { - "nette/di": "<3.0.6" - }, - "require-dev": { - "nette/tester": "~2.0", - "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.3" - }, - "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()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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 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/v3.2.7" - }, - "time": "2022-01-24T11:29:14+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.13.2", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", - "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.13.2" - }, - "time": "2021-11-30T19:35:32+00:00" - }, - { - "name": "phpoption/phpoption", - "version": "1.8.1", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-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.8.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", - "type": "tidelift" - } - ], - "time": "2021-12-04T23:24:31+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.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.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": "http://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/tree/master" - }, - "time": "2020-06-29T06:28:15+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.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": "http://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/master" - }, - "time": "2019-04-30T12:38:16+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.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": "http://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/master" - }, - "time": "2016-08-06T14:39: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.1", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "570292577277f06f590635381a7f761a6cf4f026" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/570292577277f06f590635381a7f761a6cf4f026", - "reference": "570292577277f06f590635381a7f761a6cf4f026", - "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" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "3.17.05.02" - }, - "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.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." - }, - "bin": [ - "bin/psysh" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "0.11.x-dev" - } - }, - "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.1" - }, - "time": "2022-01-03T13:58:38+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": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/ramsey/collection.git", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "shasum": "" - }, - "require": { - "php": "^7.3 || ^8", - "symfony/polyfill-php81": "^1.23" - }, - "require-dev": { - "captainhook/captainhook": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "ergebnis/composer-normalize": "^2.6", - "fakerphp/faker": "^1.5", - "hamcrest/hamcrest-php": "^2", - "jangregor/phpstan-prophecy": "^0.8", - "mockery/mockery": "^1.3", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1", - "phpstan/phpstan": "^0.12.32", - "phpstan/phpstan-mockery": "^0.12.5", - "phpstan/phpstan-phpunit": "^0.12.11", - "phpunit/phpunit": "^8.5 || ^9", - "psy/psysh": "^0.10.4", - "slevomat/coding-standard": "^6.3", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.4" - }, - "type": "library", - "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/1.2.2" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "time": "2021-10-10T03:01:02+00:00" - }, - { - "name": "ramsey/uuid", - "version": "4.2.3", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "shasum": "" - }, - "require": { - "brick/math": "^0.8 || ^0.9", - "ext-json": "*", - "php": "^7.2 || ^8.0", - "ramsey/collection": "^1.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php80": "^1.14" - }, - "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", - "moontoast/math": "^1.1", - "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.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-mockery": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^8.5 || ^9", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" - }, - "suggest": { - "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-ctype": "Enables faster processing of character classification using ctype functions.", - "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": { - "branch-alias": { - "dev-main": "4.x-dev" - }, - "captainhook": { - "force-install": true - } - }, - "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "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.2.3" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2021-09-25T23:10:38+00:00" - }, - { - "name": "symfony/console", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/22e8efd019c3270c4f79376234a3f8752cd25490", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.4|^6.0" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/css-selector", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/1955d595c12c111629cc814d3f2a2ff13580508a", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a", - "shasum": "" - }, - "require": { - "php": ">=8.0.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/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-11-01T23:48:49+00:00" - }, - { - "name": "symfony/error-handler", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/20343b3bad7ebafa38138ddcb97290a24722b57b", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" - }, - "bin": [ - "Resources/bin/patch-type-declarations" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to manage errors and ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6472ea2dd415e925b90ca82be64b8bc6157f3934", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/event-dispatcher-contracts": "^2|^3" - }, - "conflict": { - "symfony/dependency-injection": "<5.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^5.4|^6.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/aa5422287b75594b90ee9cd807caf8f0df491385", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/event-dispatcher": "^1" - }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-07-15T12:33:35+00:00" - }, - { - "name": "symfony/finder", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/8661b74dbabc23223f38c9b99d3f8ade71170430", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ad157299ced81a637fade1efcadd688d6deba5c1", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1" - }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/cache": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0" - }, - "suggest": { - "symfony/mime": "To use the file extension guesser" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v6.0.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/error-handler": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", - "symfony/twig-bridge": "<5.4", - "symfony/validator": "<5.4", - "twig/twig": "<2.13" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/process": "^5.4|^6.0", - "symfony/routing": "^5.4|^6.0", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-29T18:12:46+00:00" - }, - { - "name": "symfony/mailer", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mailer.git", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "shasum": "" - }, - "require": { - "egulias/email-validator": "^2.1.10|^3", - "php": ">=8.0.2", - "psr/event-dispatcher": "^1", - "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3" - }, - "conflict": { - "symfony/http-kernel": "<5.4" - }, - "require-dev": { - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/messenger": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/mime", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/2cd9601efd040e56f43360daa68f3c6b0534923a", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "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" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "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.24.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": "2021-10-20T20:35:02+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-11-23T21:10:46+00:00" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44", - "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.23-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.24.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": "2021-09-14T14:02:44+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.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": "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.24.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": "2021-11-30T18:21:41+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-05-27T09:17:38+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:33+00:00" - }, - { - "name": "symfony/polyfill-php81", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:11+00:00" - }, - { - "name": "symfony/process", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/298ed357274c1868c20a0061df256a1250a6c4af", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/routing", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/yaml": "<5.4" - }, - "require-dev": { - "doctrine/annotations": "^1.12", - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/36715ebf9fb9db73db0cb24263c79077c6fe8603", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/container": "^2.0" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "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.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": "2021-11-04T17:53:12+00:00" - }, - { - "name": "symfony/string", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/522144f0c4c004c80d56fa47e40e17028e2eefc2", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.0" - }, - "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/translation-contracts": "^2.0|^3.0", - "symfony/var-exporter": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "files": [ - "Resources/functions.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 an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/translation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/71bb15335798f8c4da110911bcf2d2fead7a430d", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.3|^3.0" - }, - "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" - }, - "provide": { - "symfony/translation-implementation": "2.3|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-07T00:29:03+00:00" - }, - { - "name": "symfony/translation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "suggest": { - "symfony/translation-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - } - }, - "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.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": "2021-09-07T12:43:40+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7b701676fc64f9ef11f9b4870f16b48f66be4834", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<5.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-17T16:30:44+00:00" - }, - { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.4", - "source": { - "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" - } - ], - "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", - "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "support": { - "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" - }, - "time": "2021-12-08T09:12:39+00:00" - }, - { - "name": "vlucas/phpdotenv", - "version": "v5.4.1", - "source": { - "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", - "shasum": "" - }, - "require": { - "ext-pcre": "*", - "graham-campbell/result-type": "^1.0.2", - "php": "^7.1.3 || ^8.0", - "phpoption/phpoption": "^1.8", - "symfony/polyfill-ctype": "^1.23", - "symfony/polyfill-mbstring": "^1.23.1", - "symfony/polyfill-php80": "^1.23.1" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" - }, - "suggest": { - "ext-filter": "Required to use the boolean validator." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.4-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.4.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", - "type": "tidelift" - } - ], - "time": "2021-12-12T23:22:04+00:00" - }, - { - "name": "voku/portable-ascii", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/voku/portable-ascii.git", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/9bd89e83cecdf8c37b64909454249eaed98b2c89", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89", - "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.0" - }, - "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-01-24T18:59:03+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "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.10.0" - }, - "time": "2021-03-09T10:59:23+00:00" - } - ], - "packages-dev": [ - { - "name": "doctrine/instantiator", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.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%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2020-11-10T18:47:58+00:00" - }, - { - "name": "facade/ignition-contracts", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/facade/ignition-contracts.git", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^v2.15.8", - "phpunit/phpunit": "^9.3.11", - "vimeo/psalm": "^3.17.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Facade\\IgnitionContracts\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://flareapp.io", - "role": "Developer" - } - ], - "description": "Solution contracts for Ignition", - "homepage": "https://github.com/facade/ignition-contracts", - "keywords": [ - "contracts", - "flare", - "ignition" - ], - "support": { - "issues": "https://github.com/facade/ignition-contracts/issues", - "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" - }, - "time": "2020-10-16T08:27:54+00:00" - }, - { - "name": "fakerphp/faker", - "version": "v1.19.0", - "source": { - "type": "git", - "url": "https://github.com/FakerPHP/Faker.git", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^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": "*", - "symfony/phpunit-bridge": "^4.4 || ^5.2" - }, - "suggest": { - "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", - "ext-curl": "Required by Faker\\Provider\\Image to download images.", - "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", - "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.19-dev" - } - }, - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "François Zaninotto" - } - ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], - "support": { - "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0" - }, - "time": "2022-02-02T17:38:57+00:00" - }, - { - "name": "filp/whoops", - "version": "2.14.5", - "source": { - "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "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.14.5" - }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "time": "2022-01-07T12:00:00+00:00" - }, - { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "shasum": "" - }, - "require": { - "php": "^5.3|^7.0|^8.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" - }, - "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "classmap": [ - "hamcrest" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "This is the PHP port of Hamcrest Matchers", - "keywords": [ - "test" - ], - "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" - }, - "time": "2020-07-09T08:09:16+00:00" - }, - { - "name": "laravel/sail", - "version": "v1.13.2", - "source": { - "type": "git", - "url": "https://github.com/laravel/sail.git", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.0|^9.0", - "illuminate/contracts": "^8.0|^9.0", - "illuminate/support": "^8.0|^9.0", - "php": "^7.3|^8.0" - }, - "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": "2022-02-08T14:14:12+00:00" - }, - { - "name": "mockery/mockery", - "version": "1.5.0", - "source": { - "type": "git", - "url": "https://github.com/mockery/mockery.git", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "shasum": "" - }, - "require": { - "hamcrest/hamcrest-php": "^2.0.1", - "lib-pcre": ">=7.0", - "php": "^7.3 || ^8.0" - }, - "conflict": { - "phpunit/phpunit": "<8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-0": { - "Mockery": "library/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" - } - ], - "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": { - "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.5.0" - }, - "time": "2022-01-20T13:18:17+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.10.2", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "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.10.2" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2020-11-13T09:40:50+00:00" - }, - { - "name": "nunomaduro/collision", - "version": "v6.1.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/collision.git", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "shasum": "" - }, - "require": { - "facade/ignition-contracts": "^1.0.2", - "filp/whoops": "^2.14.5", - "php": "^8.0.0", - "symfony/console": "^6.0.2" - }, - "require-dev": { - "brianium/paratest": "^6.4.1", - "laravel/framework": "^9.0", - "nunomaduro/larastan": "^1.0.2", - "nunomaduro/mock-final-classes": "^1.1.0", - "orchestra/testbench": "^7.0.0", - "phpunit/phpunit": "^9.5.11" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "6.x-dev" - }, - "laravel": { - "providers": [ - "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" - ] - } - }, - "autoload": { - "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": "2022-01-18T17:49:08+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.1.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/15a90844ad40f127afd244c0cad228de2a80052a", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a", - "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.1.1" - }, - "time": "2022-02-07T21:56:48+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.6.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "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.6.0" - }, - "time": "2022-01-04T19:58:01+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" - }, - "time": "2021-12-08T12:19:24+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "9.2.10", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d5850aaf931743067f4bfc1ae4cbd06468400687", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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 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", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.10" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-05T09:12:13+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "3.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-02T12:48:52+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "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/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:58:55+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T05:33:50+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.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/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:16:10+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "9.5.13", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/597cb647654ede35e43b137926dfdfef0fb11743", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.3.1", - "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": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.7", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", - "sebastian/version": "^3.0.2" - }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.13" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-01-24T07:33:35+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:08:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "1.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:08:54+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:30:19+00:00" - }, - { - "name": "sebastian/comparator", - "version": "4.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:49:45+00:00" - }, - { - "name": "sebastian/complexity", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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 calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:52:27+00:00" - }, - { - "name": "sebastian/diff", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:10:38+00:00" - }, - { - "name": "sebastian/environment", - "version": "5.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-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": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:52:38+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "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", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-11-11T14:18:36+00:00" - }, - { - "name": "sebastian/global-state", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-11T13:31:12+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-28T06:42:11+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "http://www.github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:17:30+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:45:17+00:00" - }, - { - "name": "sebastian/type", - "version": "2.3.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-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/2.3.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-15T12:49:02+00:00" - }, - { - "name": "sebastian/version", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:39:44+00:00" - }, - { - "name": "spatie/backtrace", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/backtrace.git", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "ext-json": "*", - "phpunit/phpunit": "^9.3", - "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": { - "issues": "https://github.com/spatie/backtrace/issues", - "source": "https://github.com/spatie/backtrace/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/sponsors/spatie", - "type": "github" - }, - { - "url": "https://spatie.be/open-source/support-us", - "type": "other" - } - ], - "time": "2021-11-09T10:57:15+00:00" - }, - { - "name": "spatie/flare-client-php", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/flare-client-php.git", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "shasum": "" - }, - "require": { - "illuminate/pipeline": "^8.0|^9.0", - "php": "^8.0", - "spatie/backtrace": "^1.2", - "symfony/http-foundation": "^5.0|^6.0", - "symfony/mime": "^5.2|^6.0", - "symfony/process": "^5.2|^6.0", - "symfony/var-dumper": "^5.2|^6.0" - }, - "require-dev": { - "dms/phpunit-arraysubset-asserts": "^0.3.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/phpunit-snapshot-assertions": "^4.0" - }, - "type": "library", - "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.0.1" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2022-02-04T15:21:00+00:00" - }, - { - "name": "spatie/ignition", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/spatie/ignition.git", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/d2d5ba823af3004268556e87dfc94449e4159f5a", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "monolog/monolog": "^2.0", - "php": "^8.0", - "spatie/flare-client-php": "^1.0", - "symfony/console": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "mockery/mockery": "^1.4", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/ray": "^1.32", - "symfony/process": "^5.4|^6.0" - }, - "type": "library", - "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": "2022-01-19T12:57:41+00:00" - }, - { - "name": "spatie/laravel-ignition", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/68250225a9f83b086462c2af1b1139dfde48fbd2", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*", - "illuminate/support": "^8.77|^9.0", - "monolog/monolog": "^2.3", - "php": "^8.0", - "spatie/flare-client-php": "^1.0.1", - "spatie/ignition": "^1.0", - "symfony/console": "^5.0|^6.0", - "symfony/var-dumper": "^5.0|^6.0" - }, - "require-dev": { - "filp/whoops": "^2.14", - "livewire/livewire": "^2.8|dev-develop", - "mockery/mockery": "^1.4", - "nunomaduro/larastan": "^1.0", - "orchestra/testbench": "^6.23|^7.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/laravel-ray": "^1.27" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Spatie\\LaravelIgnition\\IgnitionServiceProvider" - ], - "aliases": { - "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" - } - } - }, - "autoload": { - "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": "2022-02-04T15:25:56+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2021-07-28T10:34:58+00:00" - } - ], - "aliases": [], - "minimum-stability": "dev", - "stability-flags": [], - "prefer-stable": true, - "prefer-lowest": false, - "platform": { - "php": "^8.0" - }, - "platform-dev": [], - "plugin-api-version": "2.1.0" -} diff --git a/Chapter06/onlineStore/config/app.php b/Chapter06/onlineStore/config/app.php deleted file mode 100644 index 1941d7c..0000000 --- a/Chapter06/onlineStore/config/app.php +++ /dev/null @@ -1,197 +0,0 @@ - env('APP_NAME', 'Laravel'), - - /* - |-------------------------------------------------------------------------- - | Application Environment - |-------------------------------------------------------------------------- - | - | This value determines the "environment" your application is currently - | running in. This may determine how you prefer to configure various - | services the application utilizes. Set this in your ".env" file. - | - */ - - 'env' => env('APP_ENV', 'production'), - - /* - |-------------------------------------------------------------------------- - | Application Debug Mode - |-------------------------------------------------------------------------- - | - | When your application is in debug mode, detailed error messages with - | stack traces will be shown on every error that occurs within your - | application. If disabled, a simple generic error page is shown. - | - */ - - 'debug' => (bool) env('APP_DEBUG', false), - - /* - |-------------------------------------------------------------------------- - | Application URL - |-------------------------------------------------------------------------- - | - | This URL is used by the console to properly generate URLs when using - | the Artisan command line tool. You should set this to the root of - | your application so that it is used when running Artisan tasks. - | - */ - - 'url' => env('APP_URL', 'http://localhost'), - - 'asset_url' => env('ASSET_URL', null), - - /* - |-------------------------------------------------------------------------- - | 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', - - /* - |-------------------------------------------------------------------------- - | 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' => [ - - /* - * Laravel Framework Service Providers... - */ - Illuminate\Auth\AuthServiceProvider::class, - Illuminate\Broadcasting\BroadcastServiceProvider::class, - Illuminate\Bus\BusServiceProvider::class, - Illuminate\Cache\CacheServiceProvider::class, - Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, - Illuminate\Cookie\CookieServiceProvider::class, - Illuminate\Database\DatabaseServiceProvider::class, - Illuminate\Encryption\EncryptionServiceProvider::class, - Illuminate\Filesystem\FilesystemServiceProvider::class, - Illuminate\Foundation\Providers\FoundationServiceProvider::class, - Illuminate\Hashing\HashServiceProvider::class, - Illuminate\Mail\MailServiceProvider::class, - Illuminate\Notifications\NotificationServiceProvider::class, - Illuminate\Pagination\PaginationServiceProvider::class, - Illuminate\Pipeline\PipelineServiceProvider::class, - Illuminate\Queue\QueueServiceProvider::class, - Illuminate\Redis\RedisServiceProvider::class, - Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, - Illuminate\Session\SessionServiceProvider::class, - Illuminate\Translation\TranslationServiceProvider::class, - Illuminate\Validation\ValidationServiceProvider::class, - Illuminate\View\ViewServiceProvider::class, - - /* - * 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, - - ], - - /* - |-------------------------------------------------------------------------- - | 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([ - // ... - ])->toArray(), - -]; diff --git a/Chapter06/onlineStore/config/auth.php b/Chapter06/onlineStore/config/auth.php deleted file mode 100644 index d8c6cee..0000000 --- a/Chapter06/onlineStore/config/auth.php +++ /dev/null @@ -1,111 +0,0 @@ - [ - '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 expire 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. - | - */ - - 'passwords' => [ - 'users' => [ - 'provider' => 'users', - 'table' => 'password_resets', - '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/Chapter06/onlineStore/config/broadcasting.php b/Chapter06/onlineStore/config/broadcasting.php deleted file mode 100644 index 67fcbbd..0000000 --- a/Chapter06/onlineStore/config/broadcasting.php +++ /dev/null @@ -1,67 +0,0 @@ - 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'), - 'useTLS' => true, - ], - '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/Chapter06/onlineStore/config/cache.php b/Chapter06/onlineStore/config/cache.php deleted file mode 100644 index 8736c7a..0000000 --- a/Chapter06/onlineStore/config/cache.php +++ /dev/null @@ -1,110 +0,0 @@ - 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'), - ], - - '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 a RAM based store such as APC or Memcached, there might - | be other applications utilizing the same cache. So, we'll specify a - | value to get prefixed to all our keys so we can avoid collisions. - | - */ - - 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'), - -]; diff --git a/Chapter06/onlineStore/config/cors.php b/Chapter06/onlineStore/config/cors.php deleted file mode 100644 index 8a39e6d..0000000 --- a/Chapter06/onlineStore/config/cors.php +++ /dev/null @@ -1,34 +0,0 @@ - ['api/*', 'sanctum/csrf-cookie'], - - 'allowed_methods' => ['*'], - - 'allowed_origins' => ['*'], - - 'allowed_origins_patterns' => [], - - 'allowed_headers' => ['*'], - - 'exposed_headers' => [], - - 'max_age' => 0, - - 'supports_credentials' => false, - -]; diff --git a/Chapter06/onlineStore/config/database.php b/Chapter06/onlineStore/config/database.php deleted file mode 100644 index 0faebae..0000000 --- a/Chapter06/onlineStore/config/database.php +++ /dev/null @@ -1,147 +0,0 @@ - env('DB_CONNECTION', 'mysql'), - - /* - |-------------------------------------------------------------------------- - | Database Connections - |-------------------------------------------------------------------------- - | - | Here are each of the database connections setup for your application. - | Of course, examples of configuring each database platform that is - | supported by Laravel is shown below to make development simple. - | - | - | All database work in Laravel is done through the PHP PDO facilities - | so make sure you have the driver for your particular database of - | choice installed on your machine before you begin development. - | - */ - - 'connections' => [ - - 'sqlite' => [ - 'driver' => 'sqlite', - 'url' => env('DATABASE_URL'), - 'database' => env('DB_DATABASE', database_path('database.sqlite')), - 'prefix' => '', - 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), - ], - - 'mysql' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '3306'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'unix_socket' => env('DB_SOCKET', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - 'pgsql' => [ - 'driver' => 'pgsql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '5432'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - 'search_path' => 'public', - 'sslmode' => 'prefer', - ], - - 'sqlsrv' => [ - 'driver' => 'sqlsrv', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', 'localhost'), - 'port' => env('DB_PORT', '1433'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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'), - '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'), - 'password' => env('REDIS_PASSWORD'), - 'port' => env('REDIS_PORT', '6379'), - 'database' => env('REDIS_CACHE_DB', '1'), - ], - - ], - -]; diff --git a/Chapter06/onlineStore/config/filesystems.php b/Chapter06/onlineStore/config/filesystems.php deleted file mode 100644 index cf5abce..0000000 --- a/Chapter06/onlineStore/config/filesystems.php +++ /dev/null @@ -1,73 +0,0 @@ - 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 setup for each driver as an example of the required options. - | - | Supported Drivers: "local", "ftp", "sftp", "s3" - | - */ - - 'disks' => [ - - 'local' => [ - 'driver' => 'local', - 'root' => storage_path('app'), - ], - - 'public' => [ - 'driver' => 'local', - 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', - 'visibility' => 'public', - ], - - '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), - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter06/onlineStore/config/hashing.php b/Chapter06/onlineStore/config/hashing.php deleted file mode 100644 index bcd3be4..0000000 --- a/Chapter06/onlineStore/config/hashing.php +++ /dev/null @@ -1,52 +0,0 @@ - '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/Chapter06/onlineStore/config/logging.php b/Chapter06/onlineStore/config/logging.php deleted file mode 100644 index fefe088..0000000 --- a/Chapter06/onlineStore/config/logging.php +++ /dev/null @@ -1,119 +0,0 @@ - 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' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), - - /* - |-------------------------------------------------------------------------- - | 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'), - ], - - 'daily' => [ - 'driver' => 'daily', - 'path' => storage_path('logs/laravel.log'), - 'level' => env('LOG_LEVEL', 'debug'), - 'days' => 14, - ], - - 'slack' => [ - 'driver' => 'slack', - 'url' => env('LOG_SLACK_WEBHOOK_URL'), - 'username' => 'Laravel Log', - 'emoji' => ':boom:', - 'level' => env('LOG_LEVEL', 'critical'), - ], - - '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'), - ], - ], - - 'stderr' => [ - 'driver' => 'monolog', - 'level' => env('LOG_LEVEL', 'debug'), - 'handler' => StreamHandler::class, - 'formatter' => env('LOG_STDERR_FORMATTER'), - 'with' => [ - 'stream' => 'php://stderr', - ], - ], - - 'syslog' => [ - 'driver' => 'syslog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'errorlog' => [ - 'driver' => 'errorlog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'null' => [ - 'driver' => 'monolog', - 'handler' => NullHandler::class, - ], - - 'emergency' => [ - 'path' => storage_path('logs/laravel.log'), - ], - ], - -]; diff --git a/Chapter06/onlineStore/config/mail.php b/Chapter06/onlineStore/config/mail.php deleted file mode 100644 index 87b6fe3..0000000 --- a/Chapter06/onlineStore/config/mail.php +++ /dev/null @@ -1,117 +0,0 @@ - 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", - | "postmark", "log", "array", "failover" - | - */ - - 'mailers' => [ - 'smtp' => [ - 'transport' => 'smtp', - '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, - ], - - 'ses' => [ - 'transport' => 'ses', - ], - - 'mailgun' => [ - 'transport' => 'mailgun', - ], - - 'postmark' => [ - 'transport' => 'postmark', - ], - - 'sendmail' => [ - 'transport' => 'sendmail', - 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -t -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/Chapter06/onlineStore/config/queue.php b/Chapter06/onlineStore/config/queue.php deleted file mode 100644 index 25ea5a8..0000000 --- a/Chapter06/onlineStore/config/queue.php +++ /dev/null @@ -1,93 +0,0 @@ - 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, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter06/onlineStore/config/sanctum.php b/Chapter06/onlineStore/config/sanctum.php deleted file mode 100644 index 9281c92..0000000 --- a/Chapter06/onlineStore/config/sanctum.php +++ /dev/null @@ -1,65 +0,0 @@ - explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( - '%s%s', - 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', - env('APP_URL') ? ','.parse_url(env('APP_URL'), PHP_URL_HOST) : '' - ))), - - /* - |-------------------------------------------------------------------------- - | 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/Chapter06/onlineStore/config/services.php b/Chapter06/onlineStore/config/services.php deleted file mode 100644 index 2a1d616..0000000 --- a/Chapter06/onlineStore/config/services.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - 'domain' => env('MAILGUN_DOMAIN'), - 'secret' => env('MAILGUN_SECRET'), - 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), - ], - - '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/Chapter06/onlineStore/config/session.php b/Chapter06/onlineStore/config/session.php deleted file mode 100644 index 8fed97c..0000000 --- a/Chapter06/onlineStore/config/session.php +++ /dev/null @@ -1,201 +0,0 @@ - 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/Chapter06/onlineStore/config/view.php b/Chapter06/onlineStore/config/view.php deleted file mode 100644 index 22b8a18..0000000 --- a/Chapter06/onlineStore/config/view.php +++ /dev/null @@ -1,36 +0,0 @@ - [ - 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/Chapter06/onlineStore/database/.gitignore b/Chapter06/onlineStore/database/.gitignore deleted file mode 100644 index 9b19b93..0000000 --- a/Chapter06/onlineStore/database/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.sqlite* diff --git a/Chapter06/onlineStore/database/factories/UserFactory.php b/Chapter06/onlineStore/database/factories/UserFactory.php deleted file mode 100644 index d6ca926..0000000 --- a/Chapter06/onlineStore/database/factories/UserFactory.php +++ /dev/null @@ -1,42 +0,0 @@ - - */ -class UserFactory extends Factory -{ - /** - * Define the model's default state. - * - * @return array - */ - public function definition() - { - return [ - 'name' => $this->faker->name(), - 'email' => $this->faker->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. - * - * @return \Illuminate\Database\Eloquent\Factories\Factory - */ - public function unverified() - { - return $this->state(function (array $attributes) { - return [ - 'email_verified_at' => null, - ]; - }); - } -} diff --git a/Chapter06/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php b/Chapter06/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php deleted file mode 100644 index cf6b776..0000000 --- a/Chapter06/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->string('name'); - $table->string('email')->unique(); - $table->timestamp('email_verified_at')->nullable(); - $table->string('password'); - $table->rememberToken(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('users'); - } -}; diff --git a/Chapter06/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php b/Chapter06/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php deleted file mode 100644 index fcacb80..0000000 --- a/Chapter06/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php +++ /dev/null @@ -1,32 +0,0 @@ -string('email')->index(); - $table->string('token'); - $table->timestamp('created_at')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('password_resets'); - } -}; diff --git a/Chapter06/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/Chapter06/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php deleted file mode 100644 index 1719198..0000000 --- a/Chapter06/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php +++ /dev/null @@ -1,36 +0,0 @@ -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. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('failed_jobs'); - } -}; diff --git a/Chapter06/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/Chapter06/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php deleted file mode 100644 index fd235f8..0000000 --- a/Chapter06/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->morphs('tokenable'); - $table->string('name'); - $table->string('token', 64)->unique(); - $table->text('abilities')->nullable(); - $table->timestamp('last_used_at')->nullable(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('personal_access_tokens'); - } -}; diff --git a/Chapter06/onlineStore/database/seeders/DatabaseSeeder.php b/Chapter06/onlineStore/database/seeders/DatabaseSeeder.php deleted file mode 100644 index 71f673f..0000000 --- a/Chapter06/onlineStore/database/seeders/DatabaseSeeder.php +++ /dev/null @@ -1,19 +0,0 @@ -create(); - } -} diff --git a/Chapter06/onlineStore/lang/en.json b/Chapter06/onlineStore/lang/en.json deleted file mode 100644 index 577680d..0000000 --- a/Chapter06/onlineStore/lang/en.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "The :attribute must contain at least one letter.": "The :attribute must contain at least one letter.", - "The :attribute must contain at least one number.": "The :attribute must contain at least one number.", - "The :attribute must contain at least one symbol.": "The :attribute must contain at least one symbol.", - "The :attribute must contain at least one uppercase and one lowercase letter.": "The :attribute must contain at least one uppercase and one lowercase letter.", - "The given :attribute has appeared in a data leak. Please choose a different :attribute.": "The given :attribute has appeared in a data leak. Please choose a different :attribute." -} diff --git a/Chapter06/onlineStore/lang/en/auth.php b/Chapter06/onlineStore/lang/en/auth.php deleted file mode 100644 index 6598e2c..0000000 --- a/Chapter06/onlineStore/lang/en/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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/Chapter06/onlineStore/lang/en/pagination.php b/Chapter06/onlineStore/lang/en/pagination.php deleted file mode 100644 index d481411..0000000 --- a/Chapter06/onlineStore/lang/en/pagination.php +++ /dev/null @@ -1,19 +0,0 @@ - '« Previous', - 'next' => 'Next »', - -]; diff --git a/Chapter06/onlineStore/lang/en/passwords.php b/Chapter06/onlineStore/lang/en/passwords.php deleted file mode 100644 index 2345a56..0000000 --- a/Chapter06/onlineStore/lang/en/passwords.php +++ /dev/null @@ -1,22 +0,0 @@ - '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/Chapter06/onlineStore/lang/en/validation.php b/Chapter06/onlineStore/lang/en/validation.php deleted file mode 100644 index 783003c..0000000 --- a/Chapter06/onlineStore/lang/en/validation.php +++ /dev/null @@ -1,163 +0,0 @@ - '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' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - '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' => [ - 'numeric' => 'The :attribute must be greater than :value.', - 'file' => 'The :attribute must be greater than :value kilobytes.', - 'string' => 'The :attribute must be greater than :value characters.', - 'array' => 'The :attribute must have more than :value items.', - ], - 'gte' => [ - 'numeric' => 'The :attribute must be greater than or equal to :value.', - 'file' => 'The :attribute must be greater than or equal to :value kilobytes.', - 'string' => 'The :attribute must be greater than or equal to :value characters.', - 'array' => 'The :attribute must have :value items or more.', - ], - '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' => [ - 'numeric' => 'The :attribute must be less than :value.', - 'file' => 'The :attribute must be less than :value kilobytes.', - 'string' => 'The :attribute must be less than :value characters.', - 'array' => 'The :attribute must have less than :value items.', - ], - 'lte' => [ - 'numeric' => 'The :attribute must be less than or equal to :value.', - 'file' => 'The :attribute must be less than or equal to :value kilobytes.', - 'string' => 'The :attribute must be less than or equal to :value characters.', - 'array' => 'The :attribute must not have more than :value items.', - ], - 'mac_address' => 'The :attribute must be a valid MAC address.', - 'max' => [ - 'numeric' => 'The :attribute must not be greater than :max.', - 'file' => 'The :attribute must not be greater than :max kilobytes.', - 'string' => 'The :attribute must not be greater than :max characters.', - 'array' => 'The :attribute must not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - '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.', - 'password' => 'The password is incorrect.', - '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' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - '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/Chapter06/onlineStore/package.json b/Chapter06/onlineStore/package.json deleted file mode 100644 index 7a9aecd..0000000 --- a/Chapter06/onlineStore/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "private": true, - "scripts": { - "dev": "npm run development", - "development": "mix", - "watch": "mix watch", - "watch-poll": "mix watch -- --watch-options-poll=1000", - "hot": "mix watch --hot", - "prod": "npm run production", - "production": "mix --production" - }, - "devDependencies": { - "axios": "^0.25", - "laravel-mix": "^6.0.6", - "lodash": "^4.17.19", - "postcss": "^8.1.14" - } -} diff --git a/Chapter06/onlineStore/phpunit.xml b/Chapter06/onlineStore/phpunit.xml deleted file mode 100644 index 2ac86a1..0000000 --- a/Chapter06/onlineStore/phpunit.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - ./tests/Unit - - - ./tests/Feature - - - - - ./app - - - - - - - - - - - - - - diff --git a/Chapter06/onlineStore/public/.htaccess b/Chapter06/onlineStore/public/.htaccess deleted file mode 100644 index 3aec5e2..0000000 --- a/Chapter06/onlineStore/public/.htaccess +++ /dev/null @@ -1,21 +0,0 @@ - - - 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/Chapter06/onlineStore/public/css/app.css b/Chapter06/onlineStore/public/css/app.css deleted file mode 100644 index cabac36..0000000 --- a/Chapter06/onlineStore/public/css/app.css +++ /dev/null @@ -1,20 +0,0 @@ -.bg-secondary { - background-color: #2c3e50 !important; -} - -.copyright { - background-color: #1a252f; -} - -.bg-primary { - background-color: #1abc9c !important; -} - -nav{ - font-weight: 700; -} - -.img-card{ - height: 18vw; - object-fit: cover; -} diff --git a/Chapter06/onlineStore/public/favicon.ico b/Chapter06/onlineStore/public/favicon.ico deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter06/onlineStore/public/img/game.png b/Chapter06/onlineStore/public/img/game.png deleted file mode 100644 index 85420e8bbc16098bf26b4ee63bde0e91a19d1f2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25896 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 cz>% diff --git a/Chapter06/onlineStore/public/img/safe.png b/Chapter06/onlineStore/public/img/safe.png deleted file mode 100644 index 445942c707af53210931f9f4f99f6d3cb69e5d89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19240 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
w==XB0?3|p=#`o%NsudE(E-U#KS3Snw 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 o>ir+C;RN10sIS0&a;pmake(Kernel::class); - -$response = $kernel->handle( - $request = Request::capture() -)->send(); - -$kernel->terminate($request, $response); diff --git a/Chapter06/onlineStore/public/robots.txt b/Chapter06/onlineStore/public/robots.txt deleted file mode 100644 index eb05362..0000000 --- a/Chapter06/onlineStore/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: diff --git a/Chapter06/onlineStore/resources/css/app.css b/Chapter06/onlineStore/resources/css/app.css deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter06/onlineStore/resources/js/app.js b/Chapter06/onlineStore/resources/js/app.js deleted file mode 100644 index 40c55f6..0000000 --- a/Chapter06/onlineStore/resources/js/app.js +++ /dev/null @@ -1 +0,0 @@ -require('./bootstrap'); diff --git a/Chapter06/onlineStore/resources/js/bootstrap.js b/Chapter06/onlineStore/resources/js/bootstrap.js deleted file mode 100644 index 6922577..0000000 --- a/Chapter06/onlineStore/resources/js/bootstrap.js +++ /dev/null @@ -1,28 +0,0 @@ -window._ = require('lodash'); - -/** - * 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 = require('axios'); - -window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; - -/** - * 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'; - -// window.Pusher = require('pusher-js'); - -// window.Echo = new Echo({ -// broadcaster: 'pusher', -// key: process.env.MIX_PUSHER_APP_KEY, -// cluster: process.env.MIX_PUSHER_APP_CLUSTER, -// forceTLS: true -// }); diff --git a/Chapter06/onlineStore/resources/views/home/about.blade.php b/Chapter06/onlineStore/resources/views/home/about.blade.php deleted file mode 100644 index 0a3658c..0000000 --- a/Chapter06/onlineStore/resources/views/home/about.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $title) -@section('subtitle', $subtitle) -@section('content') -
-
-
-

{{ $description }}

-
-
-

{{ $author }}

-
-
-
-@endsection diff --git a/Chapter06/onlineStore/resources/views/home/index.blade.php b/Chapter06/onlineStore/resources/views/home/index.blade.php deleted file mode 100644 index 1affb20..0000000 --- a/Chapter06/onlineStore/resources/views/home/index.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('content') -
-
- -
-
- -
-
- -
-
-@endsection diff --git a/Chapter06/onlineStore/resources/views/layouts/app.blade.php b/Chapter06/onlineStore/resources/views/layouts/app.blade.php deleted file mode 100644 index 6351369..0000000 --- a/Chapter06/onlineStore/resources/views/layouts/app.blade.php +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - @yield('title', 'Online Store') - - - -
- -
-
-

@yield('subtitle', 'A Laravel Online Store')

-
-
- - -
- @yield('content') -
- - - - - - - diff --git a/Chapter06/onlineStore/resources/views/welcome.blade.php b/Chapter06/onlineStore/resources/views/welcome.blade.php deleted file mode 100644 index c587c72..0000000 --- a/Chapter06/onlineStore/resources/views/welcome.blade.php +++ /dev/null @@ -1,7 +0,0 @@ -@extends('layouts.app') -@section('title', 'Home Page - Online Store') -@section('content') -
- Welcome to the application -
-@endsection \ No newline at end of file diff --git a/Chapter06/onlineStore/routes/api.php b/Chapter06/onlineStore/routes/api.php deleted file mode 100644 index eb6fa48..0000000 --- a/Chapter06/onlineStore/routes/api.php +++ /dev/null @@ -1,19 +0,0 @@ -get('/user', function (Request $request) { - return $request->user(); -}); diff --git a/Chapter06/onlineStore/routes/channels.php b/Chapter06/onlineStore/routes/channels.php deleted file mode 100644 index 5d451e1..0000000 --- a/Chapter06/onlineStore/routes/channels.php +++ /dev/null @@ -1,18 +0,0 @@ -id === (int) $id; -}); diff --git a/Chapter06/onlineStore/routes/console.php b/Chapter06/onlineStore/routes/console.php deleted file mode 100644 index e05f4c9..0000000 --- a/Chapter06/onlineStore/routes/console.php +++ /dev/null @@ -1,19 +0,0 @@ -comment(Inspiring::quote()); -})->purpose('Display an inspiring quote'); diff --git a/Chapter06/onlineStore/routes/web.php b/Chapter06/onlineStore/routes/web.php deleted file mode 100644 index 011d40a..0000000 --- a/Chapter06/onlineStore/routes/web.php +++ /dev/null @@ -1,21 +0,0 @@ -with("viewData", $viewData); -}); -Route::get('/about', 'App\Http\Controllers\HomeController@about')->name("home.about"); diff --git a/Chapter06/onlineStore/storage/app/.gitignore b/Chapter06/onlineStore/storage/app/.gitignore deleted file mode 100644 index 8f4803c..0000000 --- a/Chapter06/onlineStore/storage/app/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!public/ -!.gitignore diff --git a/Chapter06/onlineStore/storage/app/public/.gitignore b/Chapter06/onlineStore/storage/app/public/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter06/onlineStore/storage/app/public/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter06/onlineStore/storage/framework/.gitignore b/Chapter06/onlineStore/storage/framework/.gitignore deleted file mode 100644 index 05c4471..0000000 --- a/Chapter06/onlineStore/storage/framework/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -compiled.php -config.php -down -events.scanned.php -maintenance.php -routes.php -routes.scanned.php -schedule-* -services.json diff --git a/Chapter06/onlineStore/storage/framework/cache/.gitignore b/Chapter06/onlineStore/storage/framework/cache/.gitignore deleted file mode 100644 index 01e4a6c..0000000 --- a/Chapter06/onlineStore/storage/framework/cache/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!data/ -!.gitignore diff --git a/Chapter06/onlineStore/storage/framework/cache/data/.gitignore b/Chapter06/onlineStore/storage/framework/cache/data/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter06/onlineStore/storage/framework/cache/data/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter06/onlineStore/storage/framework/sessions/.gitignore b/Chapter06/onlineStore/storage/framework/sessions/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter06/onlineStore/storage/framework/sessions/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter06/onlineStore/storage/framework/testing/.gitignore b/Chapter06/onlineStore/storage/framework/testing/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter06/onlineStore/storage/framework/testing/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter06/onlineStore/storage/framework/views/.gitignore b/Chapter06/onlineStore/storage/framework/views/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter06/onlineStore/storage/framework/views/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter06/onlineStore/storage/logs/.gitignore b/Chapter06/onlineStore/storage/logs/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter06/onlineStore/storage/logs/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter06/onlineStore/tests/CreatesApplication.php b/Chapter06/onlineStore/tests/CreatesApplication.php deleted file mode 100644 index 547152f..0000000 --- a/Chapter06/onlineStore/tests/CreatesApplication.php +++ /dev/null @@ -1,22 +0,0 @@ -make(Kernel::class)->bootstrap(); - - return $app; - } -} diff --git a/Chapter06/onlineStore/tests/Feature/ExampleTest.php b/Chapter06/onlineStore/tests/Feature/ExampleTest.php deleted file mode 100644 index 78ccc21..0000000 --- a/Chapter06/onlineStore/tests/Feature/ExampleTest.php +++ /dev/null @@ -1,21 +0,0 @@ -get('/'); - - $response->assertStatus(200); - } -} diff --git a/Chapter06/onlineStore/tests/TestCase.php b/Chapter06/onlineStore/tests/TestCase.php deleted file mode 100644 index 2932d4a..0000000 --- a/Chapter06/onlineStore/tests/TestCase.php +++ /dev/null @@ -1,10 +0,0 @@ -assertTrue(true); - } -} diff --git a/Chapter06/onlineStore/webpack.mix.js b/Chapter06/onlineStore/webpack.mix.js deleted file mode 100644 index 2a22dc1..0000000 --- a/Chapter06/onlineStore/webpack.mix.js +++ /dev/null @@ -1,17 +0,0 @@ -const mix = require('laravel-mix'); - -/* - |-------------------------------------------------------------------------- - | Mix Asset Management - |-------------------------------------------------------------------------- - | - | Mix provides a clean, fluent API for defining some Webpack build steps - | for your Laravel applications. By default, we are compiling the CSS - | file for the application as well as bundling up all the JS files. - | - */ - -mix.js('resources/js/app.js', 'public/js') - .postCss('resources/css/app.css', 'public/css', [ - // - ]); diff --git a/Chapter07/onlineStore/.editorconfig b/Chapter07/onlineStore/.editorconfig deleted file mode 100644 index 1671c9b..0000000 --- a/Chapter07/onlineStore/.editorconfig +++ /dev/null @@ -1,18 +0,0 @@ -root = true - -[*] -charset = utf-8 -end_of_line = lf -insert_final_newline = true -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true - -[*.md] -trim_trailing_whitespace = false - -[*.{yml,yaml}] -indent_size = 2 - -[docker-compose.yml] -indent_size = 4 diff --git a/Chapter07/onlineStore/.env.example b/Chapter07/onlineStore/.env.example deleted file mode 100644 index 8510237..0000000 --- a/Chapter07/onlineStore/.env.example +++ /dev/null @@ -1,52 +0,0 @@ -APP_NAME=Laravel -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=laravel -DB_USERNAME=root -DB_PASSWORD= - -BROADCAST_DRIVER=log -CACHE_DRIVER=file -FILESYSTEM_DISK=local -QUEUE_CONNECTION=sync -SESSION_DRIVER=file -SESSION_LIFETIME=120 - -MEMCACHED_HOST=127.0.0.1 - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -MAIL_MAILER=smtp -MAIL_HOST=mailhog -MAIL_PORT=1025 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS=null -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_APP_CLUSTER=mt1 - -MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/Chapter07/onlineStore/.gitattributes b/Chapter07/onlineStore/.gitattributes deleted file mode 100644 index 510d996..0000000 --- a/Chapter07/onlineStore/.gitattributes +++ /dev/null @@ -1,10 +0,0 @@ -* text=auto - -*.blade.php diff=html -*.css diff=css -*.html diff=html -*.md diff=markdown -*.php diff=php - -/.github export-ignore -CHANGELOG.md export-ignore diff --git a/Chapter07/onlineStore/.gitignore b/Chapter07/onlineStore/.gitignore deleted file mode 100644 index eb003b0..0000000 --- a/Chapter07/onlineStore/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -/node_modules -/public/hot -/public/storage -/storage/*.key -/vendor -.env -.env.backup -.phpunit.result.cache -docker-compose.override.yml -Homestead.json -Homestead.yaml -npm-debug.log -yarn-error.log -/.idea -/.vscode diff --git a/Chapter07/onlineStore/.styleci.yml b/Chapter07/onlineStore/.styleci.yml deleted file mode 100644 index 679a631..0000000 --- a/Chapter07/onlineStore/.styleci.yml +++ /dev/null @@ -1,13 +0,0 @@ -php: - preset: laravel - version: 8 - disabled: - - no_unused_imports - finder: - not-name: - - index.php -js: - finder: - not-name: - - webpack.mix.js -css: true diff --git a/Chapter07/onlineStore/README.md b/Chapter07/onlineStore/README.md deleted file mode 100644 index f171eca..0000000 --- a/Chapter07/onlineStore/README.md +++ /dev/null @@ -1,64 +0,0 @@ -

- -

-Build Status -Total Downloads -Latest Stable Version -License -

- -## About Laravel - -Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as: - -- [Simple, fast routing engine](https://laravel.com/docs/routing). -- [Powerful dependency injection container](https://laravel.com/docs/container). -- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage. -- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent). -- Database agnostic [schema migrations](https://laravel.com/docs/migrations). -- [Robust background job processing](https://laravel.com/docs/queues). -- [Real-time event broadcasting](https://laravel.com/docs/broadcasting). - -Laravel is accessible, powerful, and provides tools required for large, robust applications. - -## Learning Laravel - -Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework. - -If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 2000 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library. - -## Laravel Sponsors - -We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell). - -### Premium Partners - -- **[Vehikl](https://vehikl.com/)** -- **[Tighten Co.](https://tighten.co)** -- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** -- **[64 Robots](https://64robots.com)** -- **[Cubet Techno Labs](https://cubettech.com)** -- **[Cyber-Duck](https://cyber-duck.co.uk)** -- **[Many](https://www.many.co.uk)** -- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)** -- **[DevSquad](https://devsquad.com)** -- **[Curotec](https://www.curotec.com/services/technologies/laravel/)** -- **[OP.GG](https://op.gg)** -- **[WebReinvent](https://webreinvent.com/?utm_source=laravel&utm_medium=github&utm_campaign=patreon-sponsors)** -- **[Lendio](https://lendio.com)** - -## Contributing - -Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions). - -## Code of Conduct - -In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). - -## Security Vulnerabilities - -If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed. - -## License - -The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). diff --git a/Chapter07/onlineStore/app/Console/Kernel.php b/Chapter07/onlineStore/app/Console/Kernel.php deleted file mode 100644 index d8bc1d2..0000000 --- a/Chapter07/onlineStore/app/Console/Kernel.php +++ /dev/null @@ -1,32 +0,0 @@ -command('inspire')->hourly(); - } - - /** - * Register the commands for the application. - * - * @return void - */ - protected function commands() - { - $this->load(__DIR__.'/Commands'); - - require base_path('routes/console.php'); - } -} diff --git a/Chapter07/onlineStore/app/Exceptions/Handler.php b/Chapter07/onlineStore/app/Exceptions/Handler.php deleted file mode 100644 index 8e7fbd1..0000000 --- a/Chapter07/onlineStore/app/Exceptions/Handler.php +++ /dev/null @@ -1,41 +0,0 @@ -> - */ - protected $dontReport = [ - // - ]; - - /** - * A list of the inputs that are never flashed for validation exceptions. - * - * @var array - */ - protected $dontFlash = [ - 'current_password', - 'password', - 'password_confirmation', - ]; - - /** - * Register the exception handling callbacks for the application. - * - * @return void - */ - public function register() - { - $this->reportable(function (Throwable $e) { - // - }); - } -} diff --git a/Chapter07/onlineStore/app/Http/Controllers/Controller.php b/Chapter07/onlineStore/app/Http/Controllers/Controller.php deleted file mode 100644 index a0a2a8a..0000000 --- a/Chapter07/onlineStore/app/Http/Controllers/Controller.php +++ /dev/null @@ -1,13 +0,0 @@ -with("viewData", $viewData); - } - - public function about() - { - $viewData = []; - $viewData["title"] = "About us - Online Store"; - $viewData["subtitle"] = "About us"; - $viewData["description"] = "This is an about page ..."; - $viewData["author"] = "Developed by: Your Name"; - return view('home.about')->with("viewData", $viewData); - - } -} diff --git a/Chapter07/onlineStore/app/Http/Kernel.php b/Chapter07/onlineStore/app/Http/Kernel.php deleted file mode 100644 index d3722c2..0000000 --- a/Chapter07/onlineStore/app/Http/Kernel.php +++ /dev/null @@ -1,67 +0,0 @@ - - */ - protected $middleware = [ - // \App\Http\Middleware\TrustHosts::class, - \App\Http\Middleware\TrustProxies::class, - \Fruitcake\Cors\HandleCors::class, - \App\Http\Middleware\PreventRequestsDuringMaintenance::class, - \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, - \App\Http\Middleware\TrimStrings::class, - \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, - ]; - - /** - * The application's route middleware groups. - * - * @var array> - */ - protected $middlewareGroups = [ - 'web' => [ - \App\Http\Middleware\EncryptCookies::class, - \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, - \Illuminate\Session\Middleware\StartSession::class, - // \Illuminate\Session\Middleware\AuthenticateSession::class, - \Illuminate\View\Middleware\ShareErrorsFromSession::class, - \App\Http\Middleware\VerifyCsrfToken::class, - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - - 'api' => [ - // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, - 'throttle:api', - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - ]; - - /** - * The application's route middleware. - * - * These middleware may be assigned to groups or used individually. - * - * @var array - */ - protected $routeMiddleware = [ - 'auth' => \App\Http\Middleware\Authenticate::class, - 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::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, - 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, - 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, - 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, - ]; -} diff --git a/Chapter07/onlineStore/app/Http/Middleware/Authenticate.php b/Chapter07/onlineStore/app/Http/Middleware/Authenticate.php deleted file mode 100644 index 704089a..0000000 --- a/Chapter07/onlineStore/app/Http/Middleware/Authenticate.php +++ /dev/null @@ -1,21 +0,0 @@ -expectsJson()) { - return route('login'); - } - } -} diff --git a/Chapter07/onlineStore/app/Http/Middleware/EncryptCookies.php b/Chapter07/onlineStore/app/Http/Middleware/EncryptCookies.php deleted file mode 100644 index 867695b..0000000 --- a/Chapter07/onlineStore/app/Http/Middleware/EncryptCookies.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter07/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/Chapter07/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php deleted file mode 100644 index 74cbd9a..0000000 --- a/Chapter07/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter07/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php b/Chapter07/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php deleted file mode 100644 index a2813a0..0000000 --- a/Chapter07/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php +++ /dev/null @@ -1,32 +0,0 @@ -check()) { - return redirect(RouteServiceProvider::HOME); - } - } - - return $next($request); - } -} diff --git a/Chapter07/onlineStore/app/Http/Middleware/TrimStrings.php b/Chapter07/onlineStore/app/Http/Middleware/TrimStrings.php deleted file mode 100644 index 88cadca..0000000 --- a/Chapter07/onlineStore/app/Http/Middleware/TrimStrings.php +++ /dev/null @@ -1,19 +0,0 @@ - - */ - protected $except = [ - 'current_password', - 'password', - 'password_confirmation', - ]; -} diff --git a/Chapter07/onlineStore/app/Http/Middleware/TrustHosts.php b/Chapter07/onlineStore/app/Http/Middleware/TrustHosts.php deleted file mode 100644 index 7186414..0000000 --- a/Chapter07/onlineStore/app/Http/Middleware/TrustHosts.php +++ /dev/null @@ -1,20 +0,0 @@ - - */ - public function hosts() - { - return [ - $this->allSubdomainsOfApplicationUrl(), - ]; - } -} diff --git a/Chapter07/onlineStore/app/Http/Middleware/TrustProxies.php b/Chapter07/onlineStore/app/Http/Middleware/TrustProxies.php deleted file mode 100644 index 3391630..0000000 --- a/Chapter07/onlineStore/app/Http/Middleware/TrustProxies.php +++ /dev/null @@ -1,28 +0,0 @@ -|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/Chapter07/onlineStore/app/Http/Middleware/VerifyCsrfToken.php b/Chapter07/onlineStore/app/Http/Middleware/VerifyCsrfToken.php deleted file mode 100644 index 9e86521..0000000 --- a/Chapter07/onlineStore/app/Http/Middleware/VerifyCsrfToken.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter07/onlineStore/app/Models/User.php b/Chapter07/onlineStore/app/Models/User.php deleted file mode 100644 index 8996368..0000000 --- a/Chapter07/onlineStore/app/Models/User.php +++ /dev/null @@ -1,44 +0,0 @@ - - */ - 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', - ]; -} diff --git a/Chapter07/onlineStore/app/Providers/AppServiceProvider.php b/Chapter07/onlineStore/app/Providers/AppServiceProvider.php deleted file mode 100644 index ee8ca5b..0000000 --- a/Chapter07/onlineStore/app/Providers/AppServiceProvider.php +++ /dev/null @@ -1,28 +0,0 @@ - - */ - protected $policies = [ - // 'App\Models\Model' => 'App\Policies\ModelPolicy', - ]; - - /** - * Register any authentication / authorization services. - * - * @return void - */ - public function boot() - { - $this->registerPolicies(); - - // - } -} diff --git a/Chapter07/onlineStore/app/Providers/BroadcastServiceProvider.php b/Chapter07/onlineStore/app/Providers/BroadcastServiceProvider.php deleted file mode 100644 index 395c518..0000000 --- a/Chapter07/onlineStore/app/Providers/BroadcastServiceProvider.php +++ /dev/null @@ -1,21 +0,0 @@ -> - */ - protected $listen = [ - Registered::class => [ - SendEmailVerificationNotification::class, - ], - ]; - - /** - * Register any events for your application. - * - * @return void - */ - public function boot() - { - // - } -} diff --git a/Chapter07/onlineStore/app/Providers/RouteServiceProvider.php b/Chapter07/onlineStore/app/Providers/RouteServiceProvider.php deleted file mode 100644 index 7c17d1f..0000000 --- a/Chapter07/onlineStore/app/Providers/RouteServiceProvider.php +++ /dev/null @@ -1,63 +0,0 @@ -configureRateLimiting(); - - $this->routes(function () { - Route::prefix('api') - ->middleware('api') - ->namespace($this->namespace) - ->group(base_path('routes/api.php')); - - Route::middleware('web') - ->namespace($this->namespace) - ->group(base_path('routes/web.php')); - }); - } - - /** - * Configure the rate limiters for the application. - * - * @return void - */ - protected function configureRateLimiting() - { - RateLimiter::for('api', function (Request $request) { - return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); - }); - } -} diff --git a/Chapter07/onlineStore/artisan b/Chapter07/onlineStore/artisan deleted file mode 100644 index 67a3329..0000000 --- a/Chapter07/onlineStore/artisan +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env php -make(Illuminate\Contracts\Console\Kernel::class); - -$status = $kernel->handle( - $input = new Symfony\Component\Console\Input\ArgvInput, - new Symfony\Component\Console\Output\ConsoleOutput -); - -/* -|-------------------------------------------------------------------------- -| Shutdown The Application -|-------------------------------------------------------------------------- -| -| Once Artisan has finished running, we will fire off the shutdown events -| so that any final work may be done by the application before we shut -| down the process. This is the last thing to happen to the request. -| -*/ - -$kernel->terminate($input, $status); - -exit($status); diff --git a/Chapter07/onlineStore/bootstrap/app.php b/Chapter07/onlineStore/bootstrap/app.php deleted file mode 100644 index 037e17d..0000000 --- a/Chapter07/onlineStore/bootstrap/app.php +++ /dev/null @@ -1,55 +0,0 @@ -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/Chapter07/onlineStore/bootstrap/cache/.gitignore b/Chapter07/onlineStore/bootstrap/cache/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter07/onlineStore/bootstrap/cache/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter07/onlineStore/composer.json b/Chapter07/onlineStore/composer.json deleted file mode 100644 index 6913736..0000000 --- a/Chapter07/onlineStore/composer.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "name": "laravel/laravel", - "type": "project", - "description": "The Laravel Framework.", - "keywords": ["framework", "laravel"], - "license": "MIT", - "require": { - "php": "^8.0", - "fruitcake/laravel-cors": "^2.0.5", - "guzzlehttp/guzzle": "^7.2", - "laravel/framework": "^9.0", - "laravel/sanctum": "^2.14", - "laravel/tinker": "^2.7" - }, - "require-dev": { - "fakerphp/faker": "^1.9.1", - "laravel/sail": "^1.0.1", - "mockery/mockery": "^1.4.4", - "nunomaduro/collision": "^6.1", - "phpunit/phpunit": "^9.5.10", - "spatie/laravel-ignition": "^1.0" - }, - "autoload": { - "psr-4": { - "App\\": "app/", - "Database\\Factories\\": "database/factories/", - "Database\\Seeders\\": "database/seeders/" - } - }, - "autoload-dev": { - "psr-4": { - "Tests\\": "tests/" - } - }, - "scripts": { - "post-autoload-dump": [ - "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", - "@php artisan package:discover --ansi" - ], - "post-update-cmd": [ - "@php artisan vendor:publish --tag=laravel-assets --ansi --force" - ], - "post-root-package-install": [ - "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" - ], - "post-create-project-cmd": [ - "@php artisan key:generate --ansi" - ] - }, - "extra": { - "laravel": { - "dont-discover": [] - } - }, - "config": { - "optimize-autoloader": true, - "preferred-install": "dist", - "sort-packages": true - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/Chapter07/onlineStore/composer.lock b/Chapter07/onlineStore/composer.lock deleted file mode 100644 index 64d5967..0000000 --- a/Chapter07/onlineStore/composer.lock +++ /dev/null @@ -1,7804 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "65e85f9f959c0b087110331754d451cf", - "packages": [ - { - "name": "asm89/stack-cors", - "version": "v2.1.1", - "source": { - "type": "git", - "url": "https://github.com/asm89/stack-cors.git", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4|^5|^6" - }, - "require-dev": { - "phpunit/phpunit": "^7|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "psr-4": { - "Asm89\\Stack\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alexander", - "email": "iam.asm89@gmail.com" - } - ], - "description": "Cross-origin resource sharing library and stack middleware", - "homepage": "https://github.com/asm89/stack-cors", - "keywords": [ - "cors", - "stack" - ], - "support": { - "issues": "https://github.com/asm89/stack-cors/issues", - "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" - }, - "time": "2022-01-18T09:12:03+00:00" - }, - { - "name": "brick/math", - "version": "0.9.3", - "source": { - "type": "git", - "url": "https://github.com/brick/math.git", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", - "vimeo/psalm": "4.9.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Brick\\Math\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Arbitrary-precision arithmetic library", - "keywords": [ - "Arbitrary-precision", - "BigInteger", - "BigRational", - "arithmetic", - "bigdecimal", - "bignum", - "brick", - "math" - ], - "support": { - "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.9.3" - }, - "funding": [ - { - "url": "https://github.com/BenMorel", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/brick/math", - "type": "tidelift" - } - ], - "time": "2021-08-15T20:50:18+00:00" - }, - { - "name": "dflydev/dot-access-data", - "version": "v3.0.1", - "source": { - "type": "git", - "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c", - "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": "^3.14" - }, - "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.1" - }, - "time": "2021-08-13T13:06:58+00:00" - }, - { - "name": "doctrine/inflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "vimeo/psalm": "^4.10" - }, - "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.4" - }, - "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": "2021-10-22T20:16:43+00:00" - }, - { - "name": "doctrine/lexer", - "version": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" - } - }, - "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/1.2.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%2Flexer", - "type": "tidelift" - } - ], - "time": "2022-01-12T08:27:12+00:00" - }, - { - "name": "dragonmantank/cron-expression", - "version": "v3.3.1", - "source": { - "type": "git", - "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "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.1" - }, - "funding": [ - { - "url": "https://github.com/dragonmantank", - "type": "github" - } - ], - "time": "2022-01-18T15:43:28+00:00" - }, - { - "name": "egulias/email-validator", - "version": "3.1.2", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ee0db30118f661fb166bcffbf5d82032df484697", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^1.2", - "php": ">=7.2", - "symfony/polyfill-intl-idn": "^1.15" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^8.5.8|^9.3.3", - "vimeo/psalm": "^4" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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/3.1.2" - }, - "funding": [ - { - "url": "https://github.com/egulias", - "type": "github" - } - ], - "time": "2021-10-11T09:18:27+00:00" - }, - { - "name": "fruitcake/laravel-cors", - "version": "v2.0.5", - "source": { - "type": "git", - "url": "https://github.com/fruitcake/laravel-cors.git", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "shasum": "" - }, - "require": { - "asm89/stack-cors": "^2.0.1", - "illuminate/contracts": "^6|^7|^8|^9", - "illuminate/support": "^6|^7|^8|^9", - "php": ">=7.2", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4.3.4|^5|^6" - }, - "require-dev": { - "laravel/framework": "^6|^7.24|^8", - "orchestra/testbench-dusk": "^4|^5|^6|^7", - "phpunit/phpunit": "^6|^7|^8|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - }, - "laravel": { - "providers": [ - "Fruitcake\\Cors\\CorsServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Fruitcake\\Cors\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fruitcake", - "homepage": "https://fruitcake.nl" - }, - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", - "keywords": [ - "api", - "cors", - "crossdomain", - "laravel" - ], - "support": { - "issues": "https://github.com/fruitcake/laravel-cors/issues", - "source": "https://github.com/fruitcake/laravel-cors/tree/v2.0.5" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "time": "2022-01-03T14:53:04+00:00" - }, - { - "name": "graham-campbell/result-type", - "version": "v1.0.4", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "0690bde05318336c7221785f2a932467f98b64ca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/0690bde05318336c7221785f2a932467f98b64ca", - "reference": "0690bde05318336c7221785f2a932467f98b64ca", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "phpoption/phpoption": "^1.8" - }, - "require-dev": { - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", - "type": "tidelift" - } - ], - "time": "2021-11-21T21:41:47+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "7.4.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.8.3 || ^2.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.4.1", - "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.5 || ^9.3.5", - "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": { - "branch-alias": { - "dev-master": "7.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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.4.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": "2021-12-06T18:43:05+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "1.5.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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/1.5.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "time": "2021-10-22T20:56:57+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.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.4.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.8 || ^9.3.10" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "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.1.0" - }, - "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": "2021-10-06T17:43:30+00:00" - }, - { - "name": "laravel/framework", - "version": "v9.0.1", - "source": { - "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "shasum": "" - }, - "require": { - "doctrine/inflector": "^2.0", - "dragonmantank/cron-expression": "^3.1", - "egulias/email-validator": "^3.1", - "ext-mbstring": "*", - "ext-openssl": "*", - "laravel/serializable-closure": "^1.0", - "league/commonmark": "^2.2", - "league/flysystem": "^3.0", - "monolog/monolog": "^2.0", - "nesbot/carbon": "^2.53.1", - "php": "^8.0.2", - "psr/container": "^1.1.1|^2.0.1", - "psr/log": "^1.0|^2.0|^3.0", - "psr/simple-cache": "^1.0|^2.0|^3.0", - "ramsey/uuid": "^4.2.2", - "symfony/console": "^6.0", - "symfony/error-handler": "^6.0", - "symfony/finder": "^6.0", - "symfony/http-foundation": "^6.0", - "symfony/http-kernel": "^6.0", - "symfony/mailer": "^6.0", - "symfony/mime": "^6.0", - "symfony/process": "^6.0", - "symfony/routing": "^6.0", - "symfony/var-dumper": "^6.0", - "tijsverkoyen/css-to-inline-styles": "^2.2.2", - "vlucas/phpdotenv": "^5.4.1", - "voku/portable-ascii": "^2.0" - }, - "conflict": { - "tightenco/collect": "<5.5.33" - }, - "provide": { - "psr/container-implementation": "1.1|2.0", - "psr/simple-cache-implementation": "1.0|2.0|3.0" - }, - "replace": { - "illuminate/auth": "self.version", - "illuminate/broadcasting": "self.version", - "illuminate/bus": "self.version", - "illuminate/cache": "self.version", - "illuminate/collections": "self.version", - "illuminate/conditionable": "self.version", - "illuminate/config": "self.version", - "illuminate/console": "self.version", - "illuminate/container": "self.version", - "illuminate/contracts": "self.version", - "illuminate/cookie": "self.version", - "illuminate/database": "self.version", - "illuminate/encryption": "self.version", - "illuminate/events": "self.version", - "illuminate/filesystem": "self.version", - "illuminate/hashing": "self.version", - "illuminate/http": "self.version", - "illuminate/log": "self.version", - "illuminate/macroable": "self.version", - "illuminate/mail": "self.version", - "illuminate/notifications": "self.version", - "illuminate/pagination": "self.version", - "illuminate/pipeline": "self.version", - "illuminate/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": { - "aws/aws-sdk-php": "^3.198.1", - "doctrine/dbal": "^2.13.3|^3.1.4", - "fakerphp/faker": "^1.9.2", - "guzzlehttp/guzzle": "^7.2", - "league/flysystem-aws-s3-v3": "^3.0", - "league/flysystem-ftp": "^3.0", - "league/flysystem-sftp-v3": "^3.0", - "mockery/mockery": "^1.4.4", - "orchestra/testbench-core": "^7.0", - "pda/pheanstalk": "^4.0", - "phpstan/phpstan": "^1.0", - "phpunit/phpunit": "^9.5.8", - "predis/predis": "^1.1.9", - "symfony/amazon-mailer": "^6.0", - "symfony/cache": "^6.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.198.1).", - "brianium/paratest": "Required to run tests in parallel (^6.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", - "ext-bcmath": "Required to use the multiple_of validation rule.", - "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.", - "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.2).", - "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-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", - "mockery/mockery": "Required to use mocking (^1.4.4).", - "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).", - "predis/predis": "Required to use the predis connector (^1.1.9).", - "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.0).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^6.0).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.0).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.0).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.0).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.x-dev" - } - }, - "autoload": { - "files": [ - "src/Illuminate/Collections/helpers.php", - "src/Illuminate/Events/functions.php", - "src/Illuminate/Foundation/helpers.php", - "src/Illuminate/Support/helpers.php" - ], - "psr-4": { - "Illuminate\\": "src/Illuminate/", - "Illuminate\\Support\\": [ - "src/Illuminate/Macroable/", - "src/Illuminate/Collections/", - "src/Illuminate/Conditionable/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Laravel Framework.", - "homepage": "https://laravel.com", - "keywords": [ - "framework", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2022-02-09T15:00:05+00:00" - }, - { - "name": "laravel/sanctum", - "version": "v2.14.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/sanctum.git", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/0647a87140c7522e75826cffcadb3ad6e01f71e9", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/contracts": "^6.9|^7.0|^8.0|^9.0", - "illuminate/database": "^6.9|^7.0|^8.0|^9.0", - "illuminate/support": "^6.9|^7.0|^8.0|^9.0", - "php": "^7.2|^8.0" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0", - "phpunit/phpunit": "^8.0|^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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": "2022-01-12T15:07:43+00:00" - }, - { - "name": "laravel/serializable-closure", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/serializable-closure.git", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/65c9faf50d567b65d81764a44526545689e3fe63", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "pestphp/pest": "^1.18", - "phpstan/phpstan": "^0.12.98", - "symfony/var-dumper": "^5.3" - }, - "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": "2022-02-01T16:29:39+00:00" - }, - { - "name": "laravel/tinker", - "version": "v2.7.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/tinker.git", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/5f2f9815b7631b9f586a3de7933c25f9327d4073", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073", - "shasum": "" - }, - "require": { - "illuminate/console": "^6.0|^7.0|^8.0|^9.0", - "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.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", - "phpunit/phpunit": "^8.5.8|^9.3.3" - }, - "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.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.7.0" - }, - "time": "2022-01-10T08:52:49+00:00" - }, - { - "name": "league/commonmark", - "version": "2.2.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/commonmark.git", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "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.15" - }, - "require-dev": { - "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.0", - "commonmark/commonmark.js": "0.30.0", - "composer/package-versions-deprecated": "^1.8", - "erusev/parsedown": "^1.0", - "ext-json": "*", - "github/gfm": "0.29.0", - "michelf/php-markdown": "^1.4", - "phpstan/phpstan": "^0.12.88 || ^1.0.0", - "phpunit/phpunit": "^9.5.5", - "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", - "unleashedtech/php-coding-standard": "^3.1", - "vimeo/psalm": "^4.7.3" - }, - "suggest": { - "symfony/yaml": "v2.3+ required if using the Front Matter extension" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.3-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": "2022-01-25T14:37:33+00:00" - }, - { - "name": "league/config", - "version": "v1.1.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/config.git", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/config/zipball/a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^3.0.1", - "nette/schema": "^1.2", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.90", - "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": "2021-08-14T12:15:32+00:00" - }, - { - "name": "league/flysystem", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9f8b4260031bfef5497477da53dd57b2aaff0e06", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06", - "shasum": "" - }, - "require": { - "ext-json": "*", - "league/mime-type-detection": "^1.0.0", - "php": "^8.0.2" - }, - "conflict": { - "guzzlehttp/guzzle": "<7.0", - "guzzlehttp/ringphp": "<1.1.1", - "symfony/http-client": "<5.2" - }, - "require-dev": { - "async-aws/s3": "^1.5", - "async-aws/simple-s3": "^1.0", - "aws/aws-sdk-php": "^3.198.1", - "composer/semver": "^3.0", - "ext-fileinfo": "*", - "ext-ftp": "*", - "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.5", - "google/cloud-storage": "^1.23", - "phpseclib/phpseclib": "^2.0", - "phpstan/phpstan": "^0.12.26", - "phpunit/phpunit": "^9.5.11", - "sabre/dav": "^4.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.0.3" - }, - "funding": [ - { - "url": "https://offset.earth/frankdejonge", - "type": "custom" - }, - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2022-01-31T19:41:04+00:00" - }, - { - "name": "league/mime-type-detection", - "version": "1.9.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/aa70e813a6ad3d1558fc927863d47309b4c23e69", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.2", - "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" - }, - "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.9.0" - }, - "funding": [ - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2021-11-21T11:48:40+00:00" - }, - { - "name": "monolog/monolog", - "version": "2.3.5", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd4380d6fc37626e2f799f29d91195040137eba9", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "provide": { - "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7", - "graylog2/gelf-php": "^1.4.2", - "mongodb/mongodb": "^1.8", - "php-amqplib/php-amqplib": "~2.4 || ^3", - "php-console/php-console": "^3.1.3", - "phpspec/prophecy": "^1.6.1", - "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5", - "predis/predis": "^1.1", - "rollbar/rollbar": "^1.3", - "ruflin/elastica": ">=0.90@dev", - "swiftmailer/swiftmailer": "^5.3|^6.0" - }, - "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", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "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": "2.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/2.3.5" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" - } - ], - "time": "2021-10-01T21:08:31+00:00" - }, - { - "name": "nesbot/carbon", - "version": "2.56.0", - "source": { - "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1.8 || ^8.0", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "doctrine/dbal": "^2.0 || ^3.0", - "doctrine/orm": "^2.7", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "phpmd/phpmd": "^2.9", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.54 || ^1.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.14", - "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://opencollective.com/Carbon", - "type": "open_collective" - }, - { - "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", - "type": "tidelift" - } - ], - "time": "2022-01-21T17:08:38+00:00" - }, - { - "name": "nette/schema", - "version": "v1.2.2", - "source": { - "type": "git", - "url": "https://github.com/nette/schema.git", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/9a39cef03a5b34c7de64f551538cbba05c2be5df", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df", - "shasum": "" - }, - "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": ">=7.1 <8.2" - }, - "require-dev": { - "nette/tester": "^2.3 || ^2.4", - "phpstan/phpstan-nette": "^0.12", - "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.2" - }, - "time": "2021-10-15T11:40:02+00:00" - }, - { - "name": "nette/utils", - "version": "v3.2.7", - "source": { - "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/0af4e3de4df9f1543534beab255ccf459e7a2c99", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99", - "shasum": "" - }, - "require": { - "php": ">=7.2 <8.2" - }, - "conflict": { - "nette/di": "<3.0.6" - }, - "require-dev": { - "nette/tester": "~2.0", - "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.3" - }, - "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()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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 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/v3.2.7" - }, - "time": "2022-01-24T11:29:14+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.13.2", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", - "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.13.2" - }, - "time": "2021-11-30T19:35:32+00:00" - }, - { - "name": "phpoption/phpoption", - "version": "1.8.1", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-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.8.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", - "type": "tidelift" - } - ], - "time": "2021-12-04T23:24:31+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.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.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": "http://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/tree/master" - }, - "time": "2020-06-29T06:28:15+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.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": "http://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/master" - }, - "time": "2019-04-30T12:38:16+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.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": "http://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/master" - }, - "time": "2016-08-06T14:39: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.1", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "570292577277f06f590635381a7f761a6cf4f026" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/570292577277f06f590635381a7f761a6cf4f026", - "reference": "570292577277f06f590635381a7f761a6cf4f026", - "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" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "3.17.05.02" - }, - "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.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." - }, - "bin": [ - "bin/psysh" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "0.11.x-dev" - } - }, - "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.1" - }, - "time": "2022-01-03T13:58:38+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": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/ramsey/collection.git", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "shasum": "" - }, - "require": { - "php": "^7.3 || ^8", - "symfony/polyfill-php81": "^1.23" - }, - "require-dev": { - "captainhook/captainhook": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "ergebnis/composer-normalize": "^2.6", - "fakerphp/faker": "^1.5", - "hamcrest/hamcrest-php": "^2", - "jangregor/phpstan-prophecy": "^0.8", - "mockery/mockery": "^1.3", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1", - "phpstan/phpstan": "^0.12.32", - "phpstan/phpstan-mockery": "^0.12.5", - "phpstan/phpstan-phpunit": "^0.12.11", - "phpunit/phpunit": "^8.5 || ^9", - "psy/psysh": "^0.10.4", - "slevomat/coding-standard": "^6.3", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.4" - }, - "type": "library", - "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/1.2.2" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "time": "2021-10-10T03:01:02+00:00" - }, - { - "name": "ramsey/uuid", - "version": "4.2.3", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "shasum": "" - }, - "require": { - "brick/math": "^0.8 || ^0.9", - "ext-json": "*", - "php": "^7.2 || ^8.0", - "ramsey/collection": "^1.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php80": "^1.14" - }, - "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", - "moontoast/math": "^1.1", - "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.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-mockery": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^8.5 || ^9", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" - }, - "suggest": { - "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-ctype": "Enables faster processing of character classification using ctype functions.", - "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": { - "branch-alias": { - "dev-main": "4.x-dev" - }, - "captainhook": { - "force-install": true - } - }, - "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "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.2.3" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2021-09-25T23:10:38+00:00" - }, - { - "name": "symfony/console", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/22e8efd019c3270c4f79376234a3f8752cd25490", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.4|^6.0" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/css-selector", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/1955d595c12c111629cc814d3f2a2ff13580508a", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a", - "shasum": "" - }, - "require": { - "php": ">=8.0.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/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-11-01T23:48:49+00:00" - }, - { - "name": "symfony/error-handler", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/20343b3bad7ebafa38138ddcb97290a24722b57b", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" - }, - "bin": [ - "Resources/bin/patch-type-declarations" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to manage errors and ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6472ea2dd415e925b90ca82be64b8bc6157f3934", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/event-dispatcher-contracts": "^2|^3" - }, - "conflict": { - "symfony/dependency-injection": "<5.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^5.4|^6.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/aa5422287b75594b90ee9cd807caf8f0df491385", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/event-dispatcher": "^1" - }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-07-15T12:33:35+00:00" - }, - { - "name": "symfony/finder", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/8661b74dbabc23223f38c9b99d3f8ade71170430", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ad157299ced81a637fade1efcadd688d6deba5c1", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1" - }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/cache": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0" - }, - "suggest": { - "symfony/mime": "To use the file extension guesser" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v6.0.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/error-handler": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", - "symfony/twig-bridge": "<5.4", - "symfony/validator": "<5.4", - "twig/twig": "<2.13" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/process": "^5.4|^6.0", - "symfony/routing": "^5.4|^6.0", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-29T18:12:46+00:00" - }, - { - "name": "symfony/mailer", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mailer.git", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "shasum": "" - }, - "require": { - "egulias/email-validator": "^2.1.10|^3", - "php": ">=8.0.2", - "psr/event-dispatcher": "^1", - "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3" - }, - "conflict": { - "symfony/http-kernel": "<5.4" - }, - "require-dev": { - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/messenger": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/mime", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/2cd9601efd040e56f43360daa68f3c6b0534923a", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "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" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "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.24.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": "2021-10-20T20:35:02+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-11-23T21:10:46+00:00" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44", - "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.23-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.24.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": "2021-09-14T14:02:44+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.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": "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.24.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": "2021-11-30T18:21:41+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-05-27T09:17:38+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:33+00:00" - }, - { - "name": "symfony/polyfill-php81", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:11+00:00" - }, - { - "name": "symfony/process", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/298ed357274c1868c20a0061df256a1250a6c4af", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/routing", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/yaml": "<5.4" - }, - "require-dev": { - "doctrine/annotations": "^1.12", - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/36715ebf9fb9db73db0cb24263c79077c6fe8603", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/container": "^2.0" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "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.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": "2021-11-04T17:53:12+00:00" - }, - { - "name": "symfony/string", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/522144f0c4c004c80d56fa47e40e17028e2eefc2", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.0" - }, - "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/translation-contracts": "^2.0|^3.0", - "symfony/var-exporter": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "files": [ - "Resources/functions.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 an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/translation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/71bb15335798f8c4da110911bcf2d2fead7a430d", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.3|^3.0" - }, - "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" - }, - "provide": { - "symfony/translation-implementation": "2.3|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-07T00:29:03+00:00" - }, - { - "name": "symfony/translation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "suggest": { - "symfony/translation-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - } - }, - "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.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": "2021-09-07T12:43:40+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7b701676fc64f9ef11f9b4870f16b48f66be4834", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<5.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-17T16:30:44+00:00" - }, - { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.4", - "source": { - "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" - } - ], - "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", - "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "support": { - "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" - }, - "time": "2021-12-08T09:12:39+00:00" - }, - { - "name": "vlucas/phpdotenv", - "version": "v5.4.1", - "source": { - "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", - "shasum": "" - }, - "require": { - "ext-pcre": "*", - "graham-campbell/result-type": "^1.0.2", - "php": "^7.1.3 || ^8.0", - "phpoption/phpoption": "^1.8", - "symfony/polyfill-ctype": "^1.23", - "symfony/polyfill-mbstring": "^1.23.1", - "symfony/polyfill-php80": "^1.23.1" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" - }, - "suggest": { - "ext-filter": "Required to use the boolean validator." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.4-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.4.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", - "type": "tidelift" - } - ], - "time": "2021-12-12T23:22:04+00:00" - }, - { - "name": "voku/portable-ascii", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/voku/portable-ascii.git", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/9bd89e83cecdf8c37b64909454249eaed98b2c89", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89", - "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.0" - }, - "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-01-24T18:59:03+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "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.10.0" - }, - "time": "2021-03-09T10:59:23+00:00" - } - ], - "packages-dev": [ - { - "name": "doctrine/instantiator", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.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%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2020-11-10T18:47:58+00:00" - }, - { - "name": "facade/ignition-contracts", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/facade/ignition-contracts.git", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^v2.15.8", - "phpunit/phpunit": "^9.3.11", - "vimeo/psalm": "^3.17.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Facade\\IgnitionContracts\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://flareapp.io", - "role": "Developer" - } - ], - "description": "Solution contracts for Ignition", - "homepage": "https://github.com/facade/ignition-contracts", - "keywords": [ - "contracts", - "flare", - "ignition" - ], - "support": { - "issues": "https://github.com/facade/ignition-contracts/issues", - "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" - }, - "time": "2020-10-16T08:27:54+00:00" - }, - { - "name": "fakerphp/faker", - "version": "v1.19.0", - "source": { - "type": "git", - "url": "https://github.com/FakerPHP/Faker.git", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^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": "*", - "symfony/phpunit-bridge": "^4.4 || ^5.2" - }, - "suggest": { - "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", - "ext-curl": "Required by Faker\\Provider\\Image to download images.", - "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", - "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.19-dev" - } - }, - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "François Zaninotto" - } - ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], - "support": { - "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0" - }, - "time": "2022-02-02T17:38:57+00:00" - }, - { - "name": "filp/whoops", - "version": "2.14.5", - "source": { - "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "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.14.5" - }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "time": "2022-01-07T12:00:00+00:00" - }, - { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "shasum": "" - }, - "require": { - "php": "^5.3|^7.0|^8.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" - }, - "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "classmap": [ - "hamcrest" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "This is the PHP port of Hamcrest Matchers", - "keywords": [ - "test" - ], - "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" - }, - "time": "2020-07-09T08:09:16+00:00" - }, - { - "name": "laravel/sail", - "version": "v1.13.2", - "source": { - "type": "git", - "url": "https://github.com/laravel/sail.git", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.0|^9.0", - "illuminate/contracts": "^8.0|^9.0", - "illuminate/support": "^8.0|^9.0", - "php": "^7.3|^8.0" - }, - "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": "2022-02-08T14:14:12+00:00" - }, - { - "name": "mockery/mockery", - "version": "1.5.0", - "source": { - "type": "git", - "url": "https://github.com/mockery/mockery.git", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "shasum": "" - }, - "require": { - "hamcrest/hamcrest-php": "^2.0.1", - "lib-pcre": ">=7.0", - "php": "^7.3 || ^8.0" - }, - "conflict": { - "phpunit/phpunit": "<8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-0": { - "Mockery": "library/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" - } - ], - "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": { - "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.5.0" - }, - "time": "2022-01-20T13:18:17+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.10.2", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "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.10.2" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2020-11-13T09:40:50+00:00" - }, - { - "name": "nunomaduro/collision", - "version": "v6.1.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/collision.git", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "shasum": "" - }, - "require": { - "facade/ignition-contracts": "^1.0.2", - "filp/whoops": "^2.14.5", - "php": "^8.0.0", - "symfony/console": "^6.0.2" - }, - "require-dev": { - "brianium/paratest": "^6.4.1", - "laravel/framework": "^9.0", - "nunomaduro/larastan": "^1.0.2", - "nunomaduro/mock-final-classes": "^1.1.0", - "orchestra/testbench": "^7.0.0", - "phpunit/phpunit": "^9.5.11" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "6.x-dev" - }, - "laravel": { - "providers": [ - "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" - ] - } - }, - "autoload": { - "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": "2022-01-18T17:49:08+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.1.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/15a90844ad40f127afd244c0cad228de2a80052a", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a", - "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.1.1" - }, - "time": "2022-02-07T21:56:48+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.6.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "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.6.0" - }, - "time": "2022-01-04T19:58:01+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" - }, - "time": "2021-12-08T12:19:24+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "9.2.10", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d5850aaf931743067f4bfc1ae4cbd06468400687", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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 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", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.10" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-05T09:12:13+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "3.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-02T12:48:52+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "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/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:58:55+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T05:33:50+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.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/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:16:10+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "9.5.13", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/597cb647654ede35e43b137926dfdfef0fb11743", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.3.1", - "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": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.7", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", - "sebastian/version": "^3.0.2" - }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.13" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-01-24T07:33:35+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:08:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "1.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:08:54+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:30:19+00:00" - }, - { - "name": "sebastian/comparator", - "version": "4.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:49:45+00:00" - }, - { - "name": "sebastian/complexity", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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 calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:52:27+00:00" - }, - { - "name": "sebastian/diff", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:10:38+00:00" - }, - { - "name": "sebastian/environment", - "version": "5.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-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": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:52:38+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "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", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-11-11T14:18:36+00:00" - }, - { - "name": "sebastian/global-state", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-11T13:31:12+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-28T06:42:11+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "http://www.github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:17:30+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:45:17+00:00" - }, - { - "name": "sebastian/type", - "version": "2.3.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-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/2.3.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-15T12:49:02+00:00" - }, - { - "name": "sebastian/version", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:39:44+00:00" - }, - { - "name": "spatie/backtrace", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/backtrace.git", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "ext-json": "*", - "phpunit/phpunit": "^9.3", - "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": { - "issues": "https://github.com/spatie/backtrace/issues", - "source": "https://github.com/spatie/backtrace/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/sponsors/spatie", - "type": "github" - }, - { - "url": "https://spatie.be/open-source/support-us", - "type": "other" - } - ], - "time": "2021-11-09T10:57:15+00:00" - }, - { - "name": "spatie/flare-client-php", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/flare-client-php.git", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "shasum": "" - }, - "require": { - "illuminate/pipeline": "^8.0|^9.0", - "php": "^8.0", - "spatie/backtrace": "^1.2", - "symfony/http-foundation": "^5.0|^6.0", - "symfony/mime": "^5.2|^6.0", - "symfony/process": "^5.2|^6.0", - "symfony/var-dumper": "^5.2|^6.0" - }, - "require-dev": { - "dms/phpunit-arraysubset-asserts": "^0.3.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/phpunit-snapshot-assertions": "^4.0" - }, - "type": "library", - "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.0.1" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2022-02-04T15:21:00+00:00" - }, - { - "name": "spatie/ignition", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/spatie/ignition.git", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/d2d5ba823af3004268556e87dfc94449e4159f5a", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "monolog/monolog": "^2.0", - "php": "^8.0", - "spatie/flare-client-php": "^1.0", - "symfony/console": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "mockery/mockery": "^1.4", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/ray": "^1.32", - "symfony/process": "^5.4|^6.0" - }, - "type": "library", - "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": "2022-01-19T12:57:41+00:00" - }, - { - "name": "spatie/laravel-ignition", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/68250225a9f83b086462c2af1b1139dfde48fbd2", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*", - "illuminate/support": "^8.77|^9.0", - "monolog/monolog": "^2.3", - "php": "^8.0", - "spatie/flare-client-php": "^1.0.1", - "spatie/ignition": "^1.0", - "symfony/console": "^5.0|^6.0", - "symfony/var-dumper": "^5.0|^6.0" - }, - "require-dev": { - "filp/whoops": "^2.14", - "livewire/livewire": "^2.8|dev-develop", - "mockery/mockery": "^1.4", - "nunomaduro/larastan": "^1.0", - "orchestra/testbench": "^6.23|^7.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/laravel-ray": "^1.27" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Spatie\\LaravelIgnition\\IgnitionServiceProvider" - ], - "aliases": { - "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" - } - } - }, - "autoload": { - "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": "2022-02-04T15:25:56+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2021-07-28T10:34:58+00:00" - } - ], - "aliases": [], - "minimum-stability": "dev", - "stability-flags": [], - "prefer-stable": true, - "prefer-lowest": false, - "platform": { - "php": "^8.0" - }, - "platform-dev": [], - "plugin-api-version": "2.1.0" -} diff --git a/Chapter07/onlineStore/config/app.php b/Chapter07/onlineStore/config/app.php deleted file mode 100644 index 1941d7c..0000000 --- a/Chapter07/onlineStore/config/app.php +++ /dev/null @@ -1,197 +0,0 @@ - env('APP_NAME', 'Laravel'), - - /* - |-------------------------------------------------------------------------- - | Application Environment - |-------------------------------------------------------------------------- - | - | This value determines the "environment" your application is currently - | running in. This may determine how you prefer to configure various - | services the application utilizes. Set this in your ".env" file. - | - */ - - 'env' => env('APP_ENV', 'production'), - - /* - |-------------------------------------------------------------------------- - | Application Debug Mode - |-------------------------------------------------------------------------- - | - | When your application is in debug mode, detailed error messages with - | stack traces will be shown on every error that occurs within your - | application. If disabled, a simple generic error page is shown. - | - */ - - 'debug' => (bool) env('APP_DEBUG', false), - - /* - |-------------------------------------------------------------------------- - | Application URL - |-------------------------------------------------------------------------- - | - | This URL is used by the console to properly generate URLs when using - | the Artisan command line tool. You should set this to the root of - | your application so that it is used when running Artisan tasks. - | - */ - - 'url' => env('APP_URL', 'http://localhost'), - - 'asset_url' => env('ASSET_URL', null), - - /* - |-------------------------------------------------------------------------- - | 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', - - /* - |-------------------------------------------------------------------------- - | 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' => [ - - /* - * Laravel Framework Service Providers... - */ - Illuminate\Auth\AuthServiceProvider::class, - Illuminate\Broadcasting\BroadcastServiceProvider::class, - Illuminate\Bus\BusServiceProvider::class, - Illuminate\Cache\CacheServiceProvider::class, - Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, - Illuminate\Cookie\CookieServiceProvider::class, - Illuminate\Database\DatabaseServiceProvider::class, - Illuminate\Encryption\EncryptionServiceProvider::class, - Illuminate\Filesystem\FilesystemServiceProvider::class, - Illuminate\Foundation\Providers\FoundationServiceProvider::class, - Illuminate\Hashing\HashServiceProvider::class, - Illuminate\Mail\MailServiceProvider::class, - Illuminate\Notifications\NotificationServiceProvider::class, - Illuminate\Pagination\PaginationServiceProvider::class, - Illuminate\Pipeline\PipelineServiceProvider::class, - Illuminate\Queue\QueueServiceProvider::class, - Illuminate\Redis\RedisServiceProvider::class, - Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, - Illuminate\Session\SessionServiceProvider::class, - Illuminate\Translation\TranslationServiceProvider::class, - Illuminate\Validation\ValidationServiceProvider::class, - Illuminate\View\ViewServiceProvider::class, - - /* - * 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, - - ], - - /* - |-------------------------------------------------------------------------- - | 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([ - // ... - ])->toArray(), - -]; diff --git a/Chapter07/onlineStore/config/auth.php b/Chapter07/onlineStore/config/auth.php deleted file mode 100644 index d8c6cee..0000000 --- a/Chapter07/onlineStore/config/auth.php +++ /dev/null @@ -1,111 +0,0 @@ - [ - '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 expire 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. - | - */ - - 'passwords' => [ - 'users' => [ - 'provider' => 'users', - 'table' => 'password_resets', - '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/Chapter07/onlineStore/config/broadcasting.php b/Chapter07/onlineStore/config/broadcasting.php deleted file mode 100644 index 67fcbbd..0000000 --- a/Chapter07/onlineStore/config/broadcasting.php +++ /dev/null @@ -1,67 +0,0 @@ - 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'), - 'useTLS' => true, - ], - '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/Chapter07/onlineStore/config/cache.php b/Chapter07/onlineStore/config/cache.php deleted file mode 100644 index 8736c7a..0000000 --- a/Chapter07/onlineStore/config/cache.php +++ /dev/null @@ -1,110 +0,0 @@ - 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'), - ], - - '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 a RAM based store such as APC or Memcached, there might - | be other applications utilizing the same cache. So, we'll specify a - | value to get prefixed to all our keys so we can avoid collisions. - | - */ - - 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'), - -]; diff --git a/Chapter07/onlineStore/config/cors.php b/Chapter07/onlineStore/config/cors.php deleted file mode 100644 index 8a39e6d..0000000 --- a/Chapter07/onlineStore/config/cors.php +++ /dev/null @@ -1,34 +0,0 @@ - ['api/*', 'sanctum/csrf-cookie'], - - 'allowed_methods' => ['*'], - - 'allowed_origins' => ['*'], - - 'allowed_origins_patterns' => [], - - 'allowed_headers' => ['*'], - - 'exposed_headers' => [], - - 'max_age' => 0, - - 'supports_credentials' => false, - -]; diff --git a/Chapter07/onlineStore/config/database.php b/Chapter07/onlineStore/config/database.php deleted file mode 100644 index 0faebae..0000000 --- a/Chapter07/onlineStore/config/database.php +++ /dev/null @@ -1,147 +0,0 @@ - env('DB_CONNECTION', 'mysql'), - - /* - |-------------------------------------------------------------------------- - | Database Connections - |-------------------------------------------------------------------------- - | - | Here are each of the database connections setup for your application. - | Of course, examples of configuring each database platform that is - | supported by Laravel is shown below to make development simple. - | - | - | All database work in Laravel is done through the PHP PDO facilities - | so make sure you have the driver for your particular database of - | choice installed on your machine before you begin development. - | - */ - - 'connections' => [ - - 'sqlite' => [ - 'driver' => 'sqlite', - 'url' => env('DATABASE_URL'), - 'database' => env('DB_DATABASE', database_path('database.sqlite')), - 'prefix' => '', - 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), - ], - - 'mysql' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '3306'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'unix_socket' => env('DB_SOCKET', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - 'pgsql' => [ - 'driver' => 'pgsql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '5432'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - 'search_path' => 'public', - 'sslmode' => 'prefer', - ], - - 'sqlsrv' => [ - 'driver' => 'sqlsrv', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', 'localhost'), - 'port' => env('DB_PORT', '1433'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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'), - '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'), - 'password' => env('REDIS_PASSWORD'), - 'port' => env('REDIS_PORT', '6379'), - 'database' => env('REDIS_CACHE_DB', '1'), - ], - - ], - -]; diff --git a/Chapter07/onlineStore/config/filesystems.php b/Chapter07/onlineStore/config/filesystems.php deleted file mode 100644 index cf5abce..0000000 --- a/Chapter07/onlineStore/config/filesystems.php +++ /dev/null @@ -1,73 +0,0 @@ - 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 setup for each driver as an example of the required options. - | - | Supported Drivers: "local", "ftp", "sftp", "s3" - | - */ - - 'disks' => [ - - 'local' => [ - 'driver' => 'local', - 'root' => storage_path('app'), - ], - - 'public' => [ - 'driver' => 'local', - 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', - 'visibility' => 'public', - ], - - '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), - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter07/onlineStore/config/hashing.php b/Chapter07/onlineStore/config/hashing.php deleted file mode 100644 index bcd3be4..0000000 --- a/Chapter07/onlineStore/config/hashing.php +++ /dev/null @@ -1,52 +0,0 @@ - '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/Chapter07/onlineStore/config/logging.php b/Chapter07/onlineStore/config/logging.php deleted file mode 100644 index fefe088..0000000 --- a/Chapter07/onlineStore/config/logging.php +++ /dev/null @@ -1,119 +0,0 @@ - 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' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), - - /* - |-------------------------------------------------------------------------- - | 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'), - ], - - 'daily' => [ - 'driver' => 'daily', - 'path' => storage_path('logs/laravel.log'), - 'level' => env('LOG_LEVEL', 'debug'), - 'days' => 14, - ], - - 'slack' => [ - 'driver' => 'slack', - 'url' => env('LOG_SLACK_WEBHOOK_URL'), - 'username' => 'Laravel Log', - 'emoji' => ':boom:', - 'level' => env('LOG_LEVEL', 'critical'), - ], - - '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'), - ], - ], - - 'stderr' => [ - 'driver' => 'monolog', - 'level' => env('LOG_LEVEL', 'debug'), - 'handler' => StreamHandler::class, - 'formatter' => env('LOG_STDERR_FORMATTER'), - 'with' => [ - 'stream' => 'php://stderr', - ], - ], - - 'syslog' => [ - 'driver' => 'syslog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'errorlog' => [ - 'driver' => 'errorlog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'null' => [ - 'driver' => 'monolog', - 'handler' => NullHandler::class, - ], - - 'emergency' => [ - 'path' => storage_path('logs/laravel.log'), - ], - ], - -]; diff --git a/Chapter07/onlineStore/config/mail.php b/Chapter07/onlineStore/config/mail.php deleted file mode 100644 index 87b6fe3..0000000 --- a/Chapter07/onlineStore/config/mail.php +++ /dev/null @@ -1,117 +0,0 @@ - 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", - | "postmark", "log", "array", "failover" - | - */ - - 'mailers' => [ - 'smtp' => [ - 'transport' => 'smtp', - '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, - ], - - 'ses' => [ - 'transport' => 'ses', - ], - - 'mailgun' => [ - 'transport' => 'mailgun', - ], - - 'postmark' => [ - 'transport' => 'postmark', - ], - - 'sendmail' => [ - 'transport' => 'sendmail', - 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -t -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/Chapter07/onlineStore/config/queue.php b/Chapter07/onlineStore/config/queue.php deleted file mode 100644 index 25ea5a8..0000000 --- a/Chapter07/onlineStore/config/queue.php +++ /dev/null @@ -1,93 +0,0 @@ - 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, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter07/onlineStore/config/sanctum.php b/Chapter07/onlineStore/config/sanctum.php deleted file mode 100644 index 9281c92..0000000 --- a/Chapter07/onlineStore/config/sanctum.php +++ /dev/null @@ -1,65 +0,0 @@ - explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( - '%s%s', - 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', - env('APP_URL') ? ','.parse_url(env('APP_URL'), PHP_URL_HOST) : '' - ))), - - /* - |-------------------------------------------------------------------------- - | 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/Chapter07/onlineStore/config/services.php b/Chapter07/onlineStore/config/services.php deleted file mode 100644 index 2a1d616..0000000 --- a/Chapter07/onlineStore/config/services.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - 'domain' => env('MAILGUN_DOMAIN'), - 'secret' => env('MAILGUN_SECRET'), - 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), - ], - - '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/Chapter07/onlineStore/config/session.php b/Chapter07/onlineStore/config/session.php deleted file mode 100644 index 8fed97c..0000000 --- a/Chapter07/onlineStore/config/session.php +++ /dev/null @@ -1,201 +0,0 @@ - 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/Chapter07/onlineStore/config/view.php b/Chapter07/onlineStore/config/view.php deleted file mode 100644 index 22b8a18..0000000 --- a/Chapter07/onlineStore/config/view.php +++ /dev/null @@ -1,36 +0,0 @@ - [ - 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/Chapter07/onlineStore/database/.gitignore b/Chapter07/onlineStore/database/.gitignore deleted file mode 100644 index 9b19b93..0000000 --- a/Chapter07/onlineStore/database/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.sqlite* diff --git a/Chapter07/onlineStore/database/factories/UserFactory.php b/Chapter07/onlineStore/database/factories/UserFactory.php deleted file mode 100644 index d6ca926..0000000 --- a/Chapter07/onlineStore/database/factories/UserFactory.php +++ /dev/null @@ -1,42 +0,0 @@ - - */ -class UserFactory extends Factory -{ - /** - * Define the model's default state. - * - * @return array - */ - public function definition() - { - return [ - 'name' => $this->faker->name(), - 'email' => $this->faker->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. - * - * @return \Illuminate\Database\Eloquent\Factories\Factory - */ - public function unverified() - { - return $this->state(function (array $attributes) { - return [ - 'email_verified_at' => null, - ]; - }); - } -} diff --git a/Chapter07/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php b/Chapter07/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php deleted file mode 100644 index cf6b776..0000000 --- a/Chapter07/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->string('name'); - $table->string('email')->unique(); - $table->timestamp('email_verified_at')->nullable(); - $table->string('password'); - $table->rememberToken(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('users'); - } -}; diff --git a/Chapter07/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php b/Chapter07/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php deleted file mode 100644 index fcacb80..0000000 --- a/Chapter07/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php +++ /dev/null @@ -1,32 +0,0 @@ -string('email')->index(); - $table->string('token'); - $table->timestamp('created_at')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('password_resets'); - } -}; diff --git a/Chapter07/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/Chapter07/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php deleted file mode 100644 index 1719198..0000000 --- a/Chapter07/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php +++ /dev/null @@ -1,36 +0,0 @@ -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. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('failed_jobs'); - } -}; diff --git a/Chapter07/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/Chapter07/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php deleted file mode 100644 index fd235f8..0000000 --- a/Chapter07/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->morphs('tokenable'); - $table->string('name'); - $table->string('token', 64)->unique(); - $table->text('abilities')->nullable(); - $table->timestamp('last_used_at')->nullable(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('personal_access_tokens'); - } -}; diff --git a/Chapter07/onlineStore/database/seeders/DatabaseSeeder.php b/Chapter07/onlineStore/database/seeders/DatabaseSeeder.php deleted file mode 100644 index 71f673f..0000000 --- a/Chapter07/onlineStore/database/seeders/DatabaseSeeder.php +++ /dev/null @@ -1,19 +0,0 @@ -create(); - } -} diff --git a/Chapter07/onlineStore/lang/en.json b/Chapter07/onlineStore/lang/en.json deleted file mode 100644 index 577680d..0000000 --- a/Chapter07/onlineStore/lang/en.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "The :attribute must contain at least one letter.": "The :attribute must contain at least one letter.", - "The :attribute must contain at least one number.": "The :attribute must contain at least one number.", - "The :attribute must contain at least one symbol.": "The :attribute must contain at least one symbol.", - "The :attribute must contain at least one uppercase and one lowercase letter.": "The :attribute must contain at least one uppercase and one lowercase letter.", - "The given :attribute has appeared in a data leak. Please choose a different :attribute.": "The given :attribute has appeared in a data leak. Please choose a different :attribute." -} diff --git a/Chapter07/onlineStore/lang/en/auth.php b/Chapter07/onlineStore/lang/en/auth.php deleted file mode 100644 index 6598e2c..0000000 --- a/Chapter07/onlineStore/lang/en/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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/Chapter07/onlineStore/lang/en/pagination.php b/Chapter07/onlineStore/lang/en/pagination.php deleted file mode 100644 index d481411..0000000 --- a/Chapter07/onlineStore/lang/en/pagination.php +++ /dev/null @@ -1,19 +0,0 @@ - '« Previous', - 'next' => 'Next »', - -]; diff --git a/Chapter07/onlineStore/lang/en/passwords.php b/Chapter07/onlineStore/lang/en/passwords.php deleted file mode 100644 index 2345a56..0000000 --- a/Chapter07/onlineStore/lang/en/passwords.php +++ /dev/null @@ -1,22 +0,0 @@ - '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/Chapter07/onlineStore/lang/en/validation.php b/Chapter07/onlineStore/lang/en/validation.php deleted file mode 100644 index 783003c..0000000 --- a/Chapter07/onlineStore/lang/en/validation.php +++ /dev/null @@ -1,163 +0,0 @@ - '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' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - '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' => [ - 'numeric' => 'The :attribute must be greater than :value.', - 'file' => 'The :attribute must be greater than :value kilobytes.', - 'string' => 'The :attribute must be greater than :value characters.', - 'array' => 'The :attribute must have more than :value items.', - ], - 'gte' => [ - 'numeric' => 'The :attribute must be greater than or equal to :value.', - 'file' => 'The :attribute must be greater than or equal to :value kilobytes.', - 'string' => 'The :attribute must be greater than or equal to :value characters.', - 'array' => 'The :attribute must have :value items or more.', - ], - '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' => [ - 'numeric' => 'The :attribute must be less than :value.', - 'file' => 'The :attribute must be less than :value kilobytes.', - 'string' => 'The :attribute must be less than :value characters.', - 'array' => 'The :attribute must have less than :value items.', - ], - 'lte' => [ - 'numeric' => 'The :attribute must be less than or equal to :value.', - 'file' => 'The :attribute must be less than or equal to :value kilobytes.', - 'string' => 'The :attribute must be less than or equal to :value characters.', - 'array' => 'The :attribute must not have more than :value items.', - ], - 'mac_address' => 'The :attribute must be a valid MAC address.', - 'max' => [ - 'numeric' => 'The :attribute must not be greater than :max.', - 'file' => 'The :attribute must not be greater than :max kilobytes.', - 'string' => 'The :attribute must not be greater than :max characters.', - 'array' => 'The :attribute must not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - '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.', - 'password' => 'The password is incorrect.', - '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' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - '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/Chapter07/onlineStore/package.json b/Chapter07/onlineStore/package.json deleted file mode 100644 index 7a9aecd..0000000 --- a/Chapter07/onlineStore/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "private": true, - "scripts": { - "dev": "npm run development", - "development": "mix", - "watch": "mix watch", - "watch-poll": "mix watch -- --watch-options-poll=1000", - "hot": "mix watch --hot", - "prod": "npm run production", - "production": "mix --production" - }, - "devDependencies": { - "axios": "^0.25", - "laravel-mix": "^6.0.6", - "lodash": "^4.17.19", - "postcss": "^8.1.14" - } -} diff --git a/Chapter07/onlineStore/phpunit.xml b/Chapter07/onlineStore/phpunit.xml deleted file mode 100644 index 2ac86a1..0000000 --- a/Chapter07/onlineStore/phpunit.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - ./tests/Unit - - - ./tests/Feature - - - - - ./app - - - - - - - - - - - - - - diff --git a/Chapter07/onlineStore/public/.htaccess b/Chapter07/onlineStore/public/.htaccess deleted file mode 100644 index 3aec5e2..0000000 --- a/Chapter07/onlineStore/public/.htaccess +++ /dev/null @@ -1,21 +0,0 @@ - - - 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/Chapter07/onlineStore/public/css/app.css b/Chapter07/onlineStore/public/css/app.css deleted file mode 100644 index cabac36..0000000 --- a/Chapter07/onlineStore/public/css/app.css +++ /dev/null @@ -1,20 +0,0 @@ -.bg-secondary { - background-color: #2c3e50 !important; -} - -.copyright { - background-color: #1a252f; -} - -.bg-primary { - background-color: #1abc9c !important; -} - -nav{ - font-weight: 700; -} - -.img-card{ - height: 18vw; - object-fit: cover; -} diff --git a/Chapter07/onlineStore/public/favicon.ico b/Chapter07/onlineStore/public/favicon.ico deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter07/onlineStore/public/img/game.png b/Chapter07/onlineStore/public/img/game.png deleted file mode 100644 index 85420e8bbc16098bf26b4ee63bde0e91a19d1f2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25896 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 cz>% diff --git a/Chapter07/onlineStore/public/img/safe.png b/Chapter07/onlineStore/public/img/safe.png deleted file mode 100644 index 445942c707af53210931f9f4f99f6d3cb69e5d89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19240 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
w==XB0?3|p=#`o%NsudE(E-U#KS3Snw z;4wZCaSDCwf?7xR$-V`njZ0H2I+y>dL?+!C^E$@XAGyl_w(QawTwCkFeo~RiRD_JK zz1UV4OE9~UAlK2>4hUbTrkI2lrYUSUK9e4rmH5EF3JH}tii>~MdO>7UajV)JW+e07 z`kC_G-`39da7nWdMQI#rV)qy$x_GLq;Ka9EL;dLMmUJ^A%GR3ECk?A7rA;k74i!~=pkR=E$gZUR>ybJfV7Ju^oUxA^-R{S08UV8-_w54i)Z z_;V0ZVm->XmT`@Ur?Z}Qi(u&sYV zr%NY>qeWM|Sf-OL8?<<)QjP}O>rg@=M6=;il8;0HNzcyCtYs@c;M9N&A#!Q!^q2nR zODjL9Z-))F3Sv{K8QHEVatzAGs5+3P`QCLL?29C*2zpH|)3aiS<4M=P^LoObo8Onm z`EsXvyrUca@bO8A(C&opR#TNh2UKP&RD(H+!R}__b_={?Eb<=M`YJ0c>uhX-<<>i% z$n;HBJ+xxNxJg631YX26k* z3{P;1>T5@e92Rk4@Ek!TxIR^iMK%zUQO0o)6HvGpT2zvMu&&07etk64+1Y7TJv$c8 z8M%?-QH})I&Kcg);9R z^P*JSe0+>LLU^kiuI3zctURDEzE0*hq#Y)eTGJEpWNN?-^v zin6Jh8QqzLVTtvwoicK@$lef2fuSstko2~+lZm$LPMIxpL1|aQg4Z>VpE7%T!+vfe zY<&o0=(U9=Y%W0TxiwzgQAgO`-tM5I$%Atv$T8T?hR|hu8os;9_FZ)OA4Ap-qrBB= zNl15!)Q|!}?z?m}8ck;xyke&?Ktw}B(|pt~6cO`XLjIGr%k{NSf%Dn^0tkL)srP@+ zU%GBIh`w4myz&KBdjA8;ra=0i(L(@B$|?B@H~P4UH0r>w$yG^HCL<$@oiM>y)@{9* z(*EgBh4TjaTX~ww>K7Gt(-)_+btK|_kuDQy;DTKrgyt>wEGi5aR=hSbF_F{}T5aq) zP+MCYM)rhM#*ZQnI$9AXo-pAn%Gw;k71x!U3+KL*bPUR}9*yoBITGvW43bL!s(pcC z{pPuuy4Xgh@-*(^s6JE6@Uh+9rnO{UHpZYl;AR*!2dvNm7w6*QQYS%*z)HR-B{_Mn ztjEpmYnB#|U6@|dP&jn2sb1{(ORd^9kU+ZvCAvKu^qR;r^40qydZQhbLqSU2R-?GS zzRub<<3fxo1JTzpfE}9APBYHkOeR3oI(1aTIc z>r>8YWu?B8t*x!8sSMdpk|X`IGAc^`@BjI2YikY7J1HoMw6Kz{V~jmc)U9_Y1mzg) zTi!6iotZXSpTQo%*MHW#qh85sZ$J3YlPE0JEp%Ww{?O>cn-#Gon7r_wciq?*X=%2?WQ+XU>#e`~?z!$&KHrJ&?Ig#yXPUNXE zpSy`VNLQ3K%+%7?RaMp1ZI;bk&b=X1-vNG$|HY{2_@8f@5MtmZE~-n7h6EX}yX^<( zTFOq!-v-WK*f`r9g3v|R+#FPzc)XELtS1$9byKA%RT7y~#q{^ZZ1xr(ALO|M+xms{ zDd{0MH&vkSc#&S-G{nKms?frspKXjUHYs^boS+55(<@483)9xFv)dRNT3ob% zntoAIQY!vyHsw^Si!WO`Tdcwqqvtp6vt^v7>9&{TSmB>{BAakq`pvtEG=3S2O6^Wb zsz9l>^YbOg*~%q0gC0Y6?G^nC- zzsEKD>XYdF;7k_bKQ_HOVs|lqe*T$G()brIUL+)>hR_HMjgOB%e44G4W06vUp}yiXSPLS=IlAAkH=FB7SSgWB)lN=X?ho;4Z%C<4`SKgg~H&v@?b&p1r$#%B3rhAp>blG?&`0IdA z>!@u7@BJ+b4EZ*?V&N-A(jJMT+m{*%NSLoSpV((c+8|6i00i;=jz-qj@5m|OuY;`5 zC(rLQ>d%+iR%qvLQ)yCEru@~NAsw^Hz5YvKH9Nu;fJUmgM+K5pdv+aF^NXC6|=DW5juxu z=1SbsoB7=1M?!8x+6b%eP?waoe+RQ9#Uw)HBs9N-FdV|OzKR@I-d{^&XJcWR&*S8x zG%HocF)#Cf>6aJPebtw6sWmT3DT|0$Z|xd8Me>o$hz&yL{|#Uk5=s5l+*+5eq&QNe z(7I}K^t6gk@LqOvbF-+o9yp%J7q!kus~&=j2+e2DHx5NzhQ{ANVU0@f*jwvr^-73k zk1Ey);USigL~kFvqk>QNyl_*ZhlL~`Ze=A(d`tn}vV=#SyW#V0m4w!plGIjk)EZ`+ zOCUxCmBlgT3S0xuzl)#AE+71%3-=Ycm zT`<@0wM=0D=rMAf;Qhq=M*XK3FG2ps9wgGVH!$kswUbC&4Y6#v4j`AK(=aXCRFmu{arYm|IdXiD)@Dvb;a5y z0;-PTiNd_HBr?|WeX%c#W=amZ!h4-NlTokUTLkZ|P1^H(0+1*3-IbPHAEE;Ge3^1r z_lr*zIpUZni-k^!-1&H7i!3TZCZZ?tLgrMqc)&QHCdd+R1$lM6)q}@&GU*LW)j3)r zaf&T*YPBKrbGO3X(+kmyw1QD*CKQaO?v}3>|#>!IJ-gV*zze4=LE6ZF{n;>;6;@`;p$sK zUc{=W#GUBG9G{wPO`QYXufY_PAQYRKnMwHUbdJ5kKbC^a+G#2)W{@CTRZQen;wK{5 zA(lHTUfNtPXIUW=N|u@3C}Q=}I3C94cXk?hHLkm~J~*h1*52J~zVSe~dRuGj>9G>y zmY=)vXJJ)^%hV6873c?ekyG*tjM+QRD3DvQbn$RsQ-6KO{$2QbG#910TLV+h++!L4Y4>tPO8nH~W=}{0 zYm^)xUsX`?{LT?39GW5Ai=SYrIBF5EV)pk<&!?#v)MXd@@2R-|>=^$~xX4LZS2XF< z>c6>O%b2{xyBM}U-TJYfwd8@dR`H@SJZ3nE@%<0c6ioA@KATA&jFt&8g$U6sLjIq} zw*-ZCwYB3D5_%pz@|NP|;24~-JAf6jj%CN)qTpw0dlgaO>;m|0|1~A0GDF0(nb=04X4%=<`KlKNS5<>ULdI^Kc)WR1 z22T6WeZ3y|sijD@-u7#?28+^Crv)jyS0g((h#FU4bU?I2-lzp#C_piRToT`G$!(X zHs&JQUk()cw^E^PiUUKIk~)c({wreewjDc9&rbCfI|1$OjT3+WKY#vYIVOr#AQzp0 z&$;h?{6ZO_OqP7UUTRcZT6$fFw>zCyRi~}1*{R>$gqCVqpvt(-|3opP2`YMbUp`>~ zheQY*%tQdQCzYE#_!W@;FEvW7Qv;+At6ACDOz+=s@8}?~s(`;nd&7p80Q}=;26E`) zS5A~YAT9-k5P&=&tTaQ*RoDjl`dC?53aoX$iv`SLD+Q-jY)*&z`TCZb4i4j{$yLt) zJ$TTA03iKW*!XNh!jwZgI3Ygg=ilW`L27l~li)Cs?u1IzjsNZ-a6)d>7UI_Uj9;sm zv&9H~WG*Z$Vq;|`32fW{+VQBdX>n*!c{q^I$}{icOHjMOn|FEkKHoUxdK(-LKm|kN z*)u8-S^11O9j*3(bSzL;D!KN*gC30V4VWlNdEfWr!O7Y|8p*Ez@V!gV=>>j$OoDmf5VBtw5O9cueh9dsg#v%4_SrZMc+qigGXoSaHCm`2=04Onvn{ zn3JK9#!c*$EXm2e`Q{=%Hyn~@>kXSgg0_lmLU=@zepP7y>JgGTZQ+t|WHaFr5kn%V zX)xJb_g&o2{@@RtShzy3I9Px^#^Dm8fXZr^A?nB?{E!yCqVyyI(fT~2) z*Urky*2vD?-B-x%>~leV$#{nswP?djb-xIzo|UPJRFa(EK(Uf1bRwU*qtSo~`T6)JZqmHUGK5eD|6!b>Vg^Kw&Bl$ zmODV%2y94EKu-%^= z*=CVeDm{480+B`3`{BO=j`aBzyWJYwFP;D|I-HQ;VCmcnEcCyHm+5`)5Km`^Ua4HXC%&C@FxBQNiatx|{;sI4sYymjPEJEJACw_ExqWzOm#I6aOV=zKB~$wufGUn- zs>BL5ZpEKxiX56aX*#?h>PbaOWEK(<%E*o>oSYN+s5pSKEMz?cQ~{95$H*JsFun@9 zyL}d!PkxyHOxE$B7dGXNrJf@DK84CBARsuknE+7dSY%j2b#=JJd+$v_wW;p!{euch z*hlL+q)J&2LHfd?vTlWaJew2fdl~_*y3&lRxx%Qv`CWoX+XqW9E=(!h$awmZi?SXd zccA<6D3th4();{TP{*j#!NQ!kNI8N%t{>$q62KN$@Vq89Q664~=|$LC|J_K0E22lF zV6ed`VVA3-`V)9|P~9rx-pYFo4UN{6U{1us)}P@u_V%E$<7>$Qu27(o=v_AoiLyA6 zB%>C`?K3k}(9`2r4yn?)wk$D$v#&EgQj1V!B_xNGd2{K3dLZE;oKYY4L|PgkA{tkA zHV`hJ>**3{0QPKmtC9zxBx=)yz$Wc#3n<@^1arvA0p!NGUP|0#(*#j!fDGA761KjT zf=qeGQHhOV#6SBG|CZBDWUP=f&vJxS|@E#_;Wx5RcF*iZ%|wETSnCw zAOv5j)p1Zb5nC`4FAlj)GIk{;Ep6>^=zsqWm#Eaj3X}Y8AKA7wiAiKO-wN5 z+V1an%hLhs@2dN~J}=xq89b!c02W57@4WIj7=cO!`PlOWz9_6NqP!X917^_WcBWo= zHl%aPgzYlem%ta;mTpIDAQ6@S0Hkk4fAhPzj8$5WGe-s3y@>)@9a#sU3?L#RmM$(X zCMMDXVUNqut%U@#nyGE#;(Y zEKp+OYLtCfRgX@Z8esf3UZ8W3XnA}AGRf|IL28W;|$%yPU4SZHQ!wG!H(#dfN? zXejH6_Y?_mA?qa_K`ko(eQ~^QXddQ=CP_yYc0gFA9z@Q2K(V-F&{Bl^of=f756>Iy z-edwK{{v%522gQ;bRtlqI)Hf++}n>OSY{fWhYgi-6v0E^c|x8%Wf&js;Ryt=xT7Wj zg(8*HT6wdVkenP1-4IX1#UshJ1Dy-2`N-lXi#0(*P>BIMiPcpqexRPCW*!?gm~XBO5?a^!5hXr9!>CRm&j&p7|Rf;LdGl{eMixWlU{0LF4r@8*^AGf=zmWUhWMURUXT0sC5p763D9?*f;ROX=_1TD3Zd z<2+%xHJ`kp=k(waQqTQGgoWm!A;`377xqupCWp*d`{iL!8WQ!wmz9jfcc`lB%7##( zEdM2QRef{l0k!CQjnj|fC)UcZp}0OREiFF`Gq8Gf0EkkNBLbtSnL(xP((}p%8;yOm z^+{BpEhdWI%47~`WBX3f!+A81{%MzLBvGULDZ`vw*vZwYQIuP?P=kbFhlp7Q0T5Yf zl1+!*FHVfpBck(1-B*$OB`Zl1W`!CFeQOFu*$NU-a0)>2b%+;=z)*qSLbp;y3qpFj zUQBR9OszcY{>{8nyAkX(d?q-fNKT5(Czcm$y})K_b2Co@-eOlN=(*Gm(nrzf#|xgV z`o5mpP3q8ww&atNp|iYuQW7RPI~kD(Wd;MQr$sZ=K6or+KgKEF&iJNHao;Ck+yDS1gs7KMqd zgUYqfoS{j?tnusZC_mP~U5B9gi1c;FvN7UMci_W^3j@^EZvbwWEeMRyC_CdAUXk^~O!V3} zeZpmUa$YR5Z?}|N`LB!8Y%ij15kPZ#P1^#4K|t8x_{F1p1LwJUa|ZEk*+Xo0Q47M+ z5MN*4`-OJ%)4)cU9Cf`e8r7*<$=1qQl#tE_h}1O4jm9a3vwLD03x$5bLWDt8MQc5r zoScm9N7_m#mVSXYg8RUL03{)&fiFZ3{)xD0V#5ctwX|e+43z-(%BVK+HBx8x(~VIN zGccf!8tkvVqmmuay{D(4K_R|k06RuXvL_DwCy+hN+Whh8^euocx6o9}x;`A$&Y6kC zdeHDx{Vx3wkn_$s>?|dPRg$(4>)JUYJ;&v$Y2rHx1uIhFHgY7l{fUDMxSS$m>zt2F zT}WLed@wB%s1p>D-Qx)O*s<|_YgQrB^lBz!cHnSnx`2MzR+^PJ@_O|yUorYOr(?tj z^b{BkTz3&^6aUQBE{vY)I+l_+CSm5psGWn8N%otnQjNcAmD+gDY62OmIW-c;nSe}m zCx8Z`mn)1>Se)vZqTiU$+qGa+ga(N;nU6QWqwP>0{tjp@R86^|G8txFyQvFjrSaV9Xu zytN;A@3lbwP5=dfY06U*pbZ^Lkho_u1k?h(F6H=6kEz(8d|A~WojAq+9En7`i9`Rl z?f#lipBWGjErPbXtL|5!f7ic-&Q%@TXjt_|7(RUX@DSbzY8&tPX!eygD z!^(60t5v9x+TOfl!_556cO}bA6(oPWsgDGml*-CyI6|vJcZysjbj{Sr(eD#x1sR;7 z?U~T+<Ss-;B+_vn6KGAbvK zXCuJJAGq^)z$hyDyzB$EOBlhVxf#+?E?!j0J~Oue6TBDctI3HCXvnZL%gA&RPO97v*VvaVMTgKu`HDlLz>bH{}sJtlib@lnyyA+yeF(J)G; zr=lzec|Yi3Ds0@s#}z8HeV{$H`DV#g>_F#fxmSLpTjC3^C_?_#_gScZRrZ-gZ;J5J zQcmf|&S$&LmzC4(9WVW_13hn)6jHDah(Q3-#P4#FcItA)56JK?zt-YL1b`D=$LY=c z5eqJ4&z`}E8Fy=l5vEAb%k0qRizU}aOHgE~1JShNJlP&v_#$n(=;ZX6wP03=gQKLO z;nTsF=L?4GdwVq9S#{N?3-vc_GP0;iG3OQuMeyL5ur`Ys4d|>D@ks3WQcf2hZ9(KN z>4=Yy=kp1a78s&b*kW2)8PjKS# zdm&BbXBy+~nRC!;Kh2b;3Xem=Z*iSC1p*pEboftcYP{xer#C`pZF{J%E3_%sg*Np$ zi!?HOpAX)q4~lAFeWyCiDb@W(54?#^#D9M>ctgRP2XZODc|DBs$NbK-U9Rsjh)m_Gns!V?4SGrM!br1mr%G$9UN2wOBV z{)?87ro-H0Wq^kLi29*0DjQckIfB%3(z0--n2zL|~;RBK%m}%`tfSLNcM@?HN zgh%qj?%OJOkpf(MMC%4L(0&Bb2M?_eXkLHXd=6W3_(u!c`^1lOcy(zjWk&*RK7amS zqGAd1#@!5=T_0h5|2J~F@jdP*J`jaCC8N?6^5#^h`?hw^T?Tj{Xs5&U^+mh=F#gHV zPeG5n^YIQ*h0i(Ozokdpe%3B<&~a-iNAy>ZM{mQ$_P;*$10n_U%`GAO)n${++oeZW zj$(&xHrFqPqf!flp7|*9gMRpTDb7ejm7js2TX&LO%z1Y)BmJ8Lw<)n8-IW~o>Z8Ty z*My_>VS`Kx2gj`o1~GqjLT0o%fz@#p%Go4&QUJMNNyj z(F&DVEGe(w177+svzulAcVCtQ0CeYVV0ZWLQ}&t5r42-=``KFEcA5@gWb-wFS@Xr_ zi!qx!KrOB(#Z5P(Td@@tRzTyf9G2krOk0=dF*M~YKV>!(0z6g}b7a}P6I%S?lB6Ga zyFn<%t?P~VD=J?XK?ML3gEtNcxTzBlYS<{z;Bk)BH4nZ3E%L=2`40qt>%Ls)1&!Kk zpb-r{Gt5pQja&HDob7abJh`O!35py@hF3FJM>7cM-L0M=0iv4#3Wx zP9g2^Yr-F8JFPE!6{mEY?bm0`>nHBu?Pp7&c zG6$Uzu)tmUrMTVCX5gOl01=flppF1=_jm{o@Jxb^M&Mp0WBK}66;(sSFTnm@)-)mD z4DcVNm&N}3Yo0yXvPfasx!5^1-?IHX76O+!83GTJF!tZ4I7w)?#4lhE$}kdmMuCG0 zt0Cz04KdeC{toCmjI6jIKOL2iTA=OwJ+EH zJ`w=b_hnOv-QBK*)7Arfi4VeaG`!MpoDl|!$Ig7{@_WX7;8`ID_5t@Y0k^iz1{TH( z-p^~+p0Ww(`v<_lK5`%cw8}~N(~I|ZRR>=!F?kM5mHB)AEsz6lzh~uhan|I$C<0p4 z5#3_*Yh(L8<3&^M0-IS!K!a(TAV-_cnx!$X_Q&1(wOBkE{Ox9I(vb z0xc~oc9P(oXu=ZA?X)zwW1eC|8~9KW;N19v*(<*U_wUU#UOuH`o9{2+IUy$&0867U z(||Es4csV^yR=heYcuHh72u&40a73-6Wbr0rx*Ns1YCF4u{2}b<>PWy=aZIxEPD6o z3D8C9enP-N;shSO!C6^iJJrr$?anRct#>NlslS#qQMm{lS8xEP5RYZRyd>c1KYx$R zqm`EacSW7jJLavA-J^aaK=vchk|l;S=G9iz-U|NVX7DzGfp=$dt=6Szbrw)S{RlPa zjq>sLjk`Yee$@15MZlbRnF(~h%x|GX868VrA1u+z{}fydit^u=s z*OwKw1%`|Q+aix$|4OrLXS7Y&B^b@U*V0<+$>|A3hs_mB*0Epkc3(WN+`A4~u{kj1 zmc4U-yYk`eI|Zg)YbQ=Sa_ww~B&Xo!2stYe-j92}bSKUQ_WY}?fuY90V6`esr7+Nm(c$3WFl3~~RpHLB3~f@Pxe$0ih*B5 z?h@MWYEG8!UM8**^QN`S7URI+nC&Q64S(4=09${5S?bbv5Q1{3I2${&peWv zEa=0jK<6?1a#fe}2Xv$^a??Y5!*k&IA|u^FKrXo%^4m|IYp24gDYQ_#Zm|{}A)P+wuQC z`~ROE|KF1lk#JT_p`Bpzb#8`;*RoLqXCTK^-R!hcapkqp4 z>(O-kqk+OgR>vsyGA3Md$sKe%K$H%SRx3~YpQSM~Zt{2DrX-=Fn8-9s?br(ctQfhP zhUI-v`-CcHVobOsCVCz?3(>QJUn3;J#b5Pf+tE!ZU@X+f2J=FMdO!iJ*N9-DKK?p6!IwrYT=yX21!gP zV0E(D97q};S>D;P!p_O$l&Qeup6eVT?2*8=Im6w_gaANgynBNW+w-7il&PQC5sk!+JX(IxRf|nI%!wZ!OzlW*5Xz?vEX{HZvyEG11)T9m7 zXAzWe<-w(b3zt$;j}yeNh!y+u%RX@wN0)$WJY|!m5wu27Z?_dSH_rmM*d4&*W|SDD zjYB?8AaZcu)z4OHY%QzZHGJ}A7kZTsghHpY4FD0i$gP1gQF3vEYQ?Z0>rF*phL_Fj){XJ(8Iu zFg5q%M>>E%WA9+&8>u4ZcVZ^H(su=7{DgAoz$|T+Fg6J^i*LIMB1C2*w91a6HN9hF z`V?XLKN-hZIZVho{UPR_iA?#GlZ?&M~Tb3)r=w{B0Yqb8#wtmqC|+t#%bI zT;w4XV8>w+;Ee7@l1YL;NCZdLHqT%8QZA-DVgZ{ay-470PHUN{ML{Lk^aV7%{Y~sm zXw}RuyYOW`PfHqM;RvpuxOn(3OWq6iUps<10E7gY5|U=#O_a#J!9wO3MwEfLTcfsL z1#ONiU}>X0o{2bKEFh+c4bvJEu^15xxg600&oFhX9&6ecF^_lhUY39}13;F;=MjH< zCL*-)^>CM6YxGU5-|6@$6e@&{q)ZCC2-+)}F={_wcH6E}!|g;NU93ySJA>~#y+xYt z6Q{}*k+(;fmKvtb&A&KUb<;BH;E-2=3*%`6Z~t9(;D|>+|7V6q8;+vV>FjEAJ$mAh zAq|fVs4Z;>@W>t*FI}5@Rs5CiT;$zA-}35TT%1FAk8xmp?bc08sm&wC6)tk?Z+6AO z2lV2g6qVdwgszh~MFRkD`2hb3!;r3;U6%I?U7iXeHuJOyxgo$AK0<_jGeGD`A$}Jd zhyzb8fKZCX7pOn2`0hG1UL(og%Ou6+`4QfN5DG-O1(gv-G!T-y%c*litcj2#4=+{+ zjIwy-u#weU#gniK{RHUHa|d2V_Da-Jc^2Vq(fhE^(EOe3@1nvzm5G7HX}JLi`LeVt ze51|fY1VIhmv+BrhQ&5aMvK|98*DmGeV8B)FZUykepnw+mRvu9z@t4c#kMYegHF*6 zL!~vXWV?UPRSjpsz%=`K}s|y`O_rSjb z2Z^Swz@5au*mqe^-8q+Ii#5>>j`s^Wf?@z||CHLJxf(^@jf$dY9Lyyu;{c4-dZo=u( zAq1l5b#AWVUZ@}95CA;i1a z90O-&_=kI4DC546>mT;zZUnCe-0Cwu~6AU{to(QRsG7gfTtsJ8F0y9e+w z+ehXEY$l!arsH~Y@ej31M4rdf-N&{sMZ+^47HV5V%5e0}=)kcCB`YEZdi=BhK*)8% z`v_GqG%`39>g3XMLw&pq3YEd@-MR!04-Zf_f|$b(iG;d8xh9f-GHc0cp&nBk8>qf} zycw|=g2#)(6jCpK!8YL5Yx2fdmedm<68AH8!6mAAmR|xK0~{qg7IgVlahhrk?-vf3 zm3%k@y%Z{Xc6IOeHk6Ti0Yy@3{i!5So0SjHUHl4g*oGY(_6KfUjSWfFt!<-5RU|K5tD`B$^*ZhY}Ac#&K9dl&%^kILFFTT@p-Krzy%w$KS5=xXO}qlDBs5@BmU z2ZXiq<>uB`Ii@V7kg3*7L}T;6tMOIw>f{6P)YqbyNR0OKZ)oaiJ294dd8DJz~P zs#z?eu#LKx-LkSG#qtwaeAa9gyyb|ktY_u+x4Y40Bwo`-p23v>lukM9O^%RJfqdQ0 zS=8yYPt?_ZLPVOwlprse@o|S$`&jz-e#e!YAc06(%Rkx9zz($S+hYcto_B4M-8rhm ze)!%FCALldC)@G`2^%WvzX1=fYN3J&2zS%W*?zBAZ*J(rL&e~(E1ny@#@?24<#Sdh zGboNN05@5_l(FPDEh?a@u5Vw3L9YKT7WxI)Hzp|Mk8M<*;%*bnOwZCRk2R=zot^QM z#5I?gug<=bVxdo0*O#|M04Rw%##ReuAP@YUeTY;W+Ddw>Wg&+FuTxtBjEc-FkBO2b&% zB9x?JH#0C7;XLRJaeXnjj$49|sYBIstR{ZaLGe#1VJ>sijg20PSvURK{@?uf{k;-) zTAf%%p@e4-@#CV5#4gQ(q$9-}J_pOAlAbT5R+~qCogW7CkVXc4B^~`3szM=C1GdT( z|FhG;;8jSmsx+E&;8`aHaSc+w&gpTby>BOO!|IAmv2CJoxkkO-q zf7{tQaNTEM0g?T<^yU?%rVnrc%Jb*jmH2Lm?dtRemb~JWDKbvXSi@ZK`yVt&7iYh* zqSMj~cCP%y*r|)?H^uc0{^>o^HRiS~s7&!Izib071He<{WQq{o8H>Uny!TjdG4u*8 zIC6kkyA0Q4mk%)e<#i>wxOTiH^K7!dOv+c^#X70ZNzXSB(owfiHFa?cf)PQNN+jlMWhiXB*Y{AFKb`TtO zd}-XM&x;FW&_I2xy`ASRKnLOe+%ATrN6mUMWKC zd1ukJOQbRB?QGcfsT@w8YG!qqApAe5H*J0QDy8vTfDQ+#ih0`BPqrFD5tXVD9TalF zUED-Mdi^okgG&;eFo=I<=jq_)$|3;<;!~TSjdqD8oJ?@RVR>A?DMu7SvV7L)#~{|o zv!X3qYQX0d?3F7Os7^J}@UjM>7Y(rbyo_C6R8z`Mio=CtU~NEy(@DPXo&tAjzd+j_J9^J=gqPm)y1mb>It-EONiCVRA_G{ zO&rGbOvIB?q@adqMgelh4_q?1o%E_QLStlkz?#%E)sXrDeHEs-3~q=JSrn{;SN2!{ z&OlXzEfJ7S=a->Ty&+3SA4}JfRc7Ca<^&h2h}vJYLH22bNC4OblDC;Q-(pCCcodc7 zi4)$7b$NSp&EgQea6_sWF;ji9i9mV22lp1bp%*OI+F4eb|~hqiArrAdTXNSqgYS zCx(GkBaaw4NR)Xua8#Zez*h_!QV-ywXi?#4L)3qj2V-^9R=?Zia6*GCRs@W7d5EP7 z94mSZ7&zbkD?s6BLmry#1QwvXt}4WEY=Y;RQMd@xy_1T{6F`hjGG8&MwqJ4TLlv~} zzD#&v;p=VQs=$6S!g$+dSN(Jukg?+;s{@&X`o#lp829GC%NY;*`RS!)YA?3LV&@ip zz_m9j7%&;UPtc_M1gBmB?0TE8!+|Q3j{S*5PtTp*n!2ffYI2^UhVyzB3|DLbkl5L9 zPu$kgl2RFq5siL1?L*bg_7fKlj}f;wO~rZ5F&(tL$8Dgb8282o3dp1m1ab|=)kHP_jkYT1VTY7F;L4y0lt7oOZsFs z&^MtD7T4UW6KlJwQrppW6F1p*%JcX=tCbT0-&sm89w8GZ$lY`0mB$g7G#8WkDDQ^| zt9)It<9B;oC-#F9zBgY=!L9i#x7|PA$xN5-2}CIg5kEa?SvED&@QRx-Ir+0fGhWX6 z?k}ZyDx`U^b63hSu7AIbVS@lLd6{71Na-Gakz(V7i_AUu;f@ykhF`uf9ElFvnp~ zUY+Ou^GA4hi@T)znZ^us@1m>geqMc(W@?4hpXk^8Lf6296-N7B&;lh3IUeg;IBWhdW7I^tMhb-sY$4~UqG?AQdjE4CS_lOZB zuH8(RVT)}l7PRZ!-i`Jj2+~2p*p(ov#OTEk8Ae74C+)i%}E>clCDqgAa z6ZTsVpIBs3H^#<$?&)|X#aJBhf_^J!`$#;=+LFf1c{W?+y0V@owN{)Q-c0@9x;0Lk zt-^f>H`Sz##DHoQ`=o!Co9_ctR}$f}nXg;FE^peTo6ht@@Ai9!7VFP>H&&>xE`8V91L@bkXZxX*=Vpj{>35 zp6OhH=$SP~ZP(KZ;NB9fKh><#mVbw(i4aOysC(*r6QoF4A*$``Rtcp`%f}W3Mj|j$ zzc9`LFrJ@Qt&@8@-+a2yeV!hU8`oDzL+xY$A;MtKDMX4rC@dnI?ct!t&H46G$X&qjg7B_P~asF*u){+s0`JbY>`?`r#nqPP5ZlCOo~Ze7cc7FD}4C1r8TlKdr3 z{k`>P;a^Rf%zbFS^WoFYnK8Vd_FJ)1;F-6NmGw_ikpkY@C|1DQ z0JE`WF1Yl7!sOvmMBOSaqg1J#Ck=qBO-tu!i8+%RnJcD@yI|BBftsob!>NS@)Zu_Nk~3WW$fz|@Y%pemr!cIa-0XLeEP&o6R0AP zU4G}>rLt_H{n~BsGogfz38R23NsCa)W~1xJz=`oov_qlSv0qC`K1Amy0SsB_D*grV zS?UP5^aQ|HTue}M7fl(a1Zq{x6~JB~;tN2;*#X1j($R(qBCxP}?dieA^qdG_7a0@4 zReno!-(EGoOn#idt(BIQ8E@adSllv%%>>}GxD(!h@es)kur>H)VnS_(*H3ZR$=54i z%(?9Zx=eo|q}nd+e`M+uuaEBDh_p`vp)Ym)^ihrhcEnxu{zC#!ZVC|a-;Z$q7oF%Y zxFiKA|MK?>nsz9%lnJkWAK=>=qf6vE=>azA-GIPtk0m$hUHZTG33 zBsnW|_<gGFQGYCz+kqI`8TKY=K&1Ej=iVNM4RgqlPg%c(-?50f-H+YhMg>{V~$mHX@x45vt>dTp4HH^7xtbUQrj zOhc}0&T&v{@z!MYeX<f-Y3X@P98#)||nS1UAe^k<|G*`XzxM>!Kg?qVH9%vQ(>ZL#d46zulRF zqo?zpQFnIRUm2?O>!lr4b^pl;=`%8{n#C#EcP0#gVuobg4bn(dk?V}Q#-(*jxcFJ| ztSS9`QcaQiC4edkHlkmd9m?;Yrq}O3nky%D%_J?w9z<#~ac0PZfCyj)z-(G<)<1L? zcdd(oN@yS;RydT!SFXeG4 zqjhokcOJ{Fqzd@>bjrAuNHF+qu>!&F&Cj>ocBiKmNsyIcQ*C)9hJ!5}&2+dS>Bq66;0nU%$b$}X}v zxp8TJD6OEHHfrHIuM@L-GK ze@#_&)y}L6q)5ttpq-?l)v9PD;#B?%0?j(5RaPwKp!!61luZJF{y%4o7Dd(I&%*USZgnf zlF^I_-TVGa{T|RUFIcX{g_w~qqk4UECdi9#&x_BG-@O&a{nPG!N7iY2U0d>pgpXbg z&mvAFFOgX84?wTHI#`<;1Z}QZCeQNg)=UuDccj=Vqbj-I%D@BR1zkBW4H4j<=MB!e ztP;x(i$N0)QeP49@MNy9`?CFedZK+x{Q&_CxdJCP7R!=$$8gZFxKtsfV2f@*g_rqH zFjN9Izj3fOaBX;2%M5fsB#_ZYw2u4;>QE#2NUoX}V)1#HY~IUo2=xW2Bz*=Y@Apu) zng-q{Trd32LdaVH(iuEu24seM%{$4v5CYEK!NZ0{f%g!nb9aKnF&+7^p1Ht*)9AD6 zR+^{Bsu3aI+4J=|+nt7@mzlKO0Ir+@JPk)ZEd`p9lq2%`c9Z4+8yXQ>RuhrPxEI29 ze$z1!{PcIFW9LO3Y=B~UQc+h;B#Ei@a_=o5^Rmn0vfCf=pV@^P2s35FDhK^#e(GL; z-1A-Q@6}cwmfAuloP>?!a7t>Dh4+^Mv?gg_d)#>XvYFRfW4&0YXRA7$Sd2^sZ^-y^(4F@*rPvfAZo?;|0%^WHs)#jWet z+ybH;LT+3_=O~A{ojx|L>ecu*!J-p9p@8U>1y*=Ej1QK)GwVt$hf}$$U8hXhNOOER z@p<};m5qDq8>GFiK~GmyPN%I0R2Xq%3xxDQ<=iCNx%@#-5^|+I@b^+2kc2H)pm)2$ zdC86X!Icbt0c!Neoc)T!2*^!yl{No@+?z+NoY#%_YDUjCkGCdvIiU=BX8@(M&XjK% zkA+WmDvN7;8F@*ryjz4JmE?dl&2VVUg4IZ!g4T9Vjyu>GCaPbFy-?C|9(qP(ZgiC_ z4CMdxH1uZIS*e8dChi8p`F+ZKoA8N%@q#=j&jYfs+j~0+_`u8@s&@Dg72~WTTC>bg zvzg+FueB&Ch0QVql#yKL=a+xnotAM@3qEVbh5VAu`w5(PHD-c1hJbfDL&PKt7Vb)7 zTp0gD3B<2s_QYx#mdGvOHl+Mr0LpdTi7KVMI~3gz9ceC zsfOEgiT8!hPN{vcG106P>YXV{w!mz%IKUjZ$!PUAf^3=;kkxfOP5FS&tiy#hQlR-3 zI=A2(dtCS*GI~Md#a8F;fkI=Tmb5qFVNYQ|U+HHfeTNFz{pxz^Gtj*YzWf2QotB|} zcF8XpkltAcH0P(veK^}u5!0f3>1d?$j}x$$ia}vly8?;UfTiNN;C^Y+u*40;k#xkc z0;Pqal;HOl*kT41Qs>_0ep~i8cUU@-xXSEtfR$FJ7_0VuP4XMDnKc;g<`tN42S~OA zuC*hP6(yV=aj39pk4`q;$c z&3#gLF@e|&bl{gR0plDdpak7wks~uWH<{3T7RLr^eW(8MF;KAu7!WnTti?YCXjZ6j zTf*?BdA0iFgG9Z~|vq+d6({Du`QH^8&D2d0n8wO>|4t zhp9d4Lo?UJ4a5@Nv_Hc8uO-lPn$#VtO6JctImrthE@jdY@!Oq~1u~x3cfqKDkQVqJ z=)^K4fP-)tEnJF|k&x`>4v?#qFM%Ww**l{fyK-Yw+_8-LL`EMPZl8U$6c>T4NcEL~&N)|r@V6cbZ~*kFbICr&a(~xocfKh*ROz^( z_|vmtXY$AdBW`Yp7}=XK#J%)-y!?FTzHUq)kVsNRR5tetib(|5Ud;51HuLZA3jmQ5 zu-O6TRe|q3x(!hSZ|3aJCfrP(L1mR(#)^5JF(hih2AO+U`xf_U?Ra<3G-{&y`$cA@ z1hIMMvNX2ReC7o#p)m~es)%NS|Fs>y2iL*yW7@0t7b4B~3uYtc2wbC|-{rD3+$B7| z-%UrIL4HGMP^ZJu?5yFq_b`K#=!TQnm7X5@MS$*_om_d}!?*ni1=5t)wYZ?lay@(r z_bN1>y^f+;L4Krf9jzJc_M?8f2+}w!7d+q(q!5(_@yy|a&GYHwqO|l>ltx;DB2QN+ zffb}=PbgKI#M2ZE4h~9HZ@u;+xz8b$F^jt;fFy%rrS4xF=y8l$P9!`RB=Af17fMPN z0YB&bPP$d!>Wr3P3xPZ@F6xsMZhlO23J6dH<~rVuj2sOcg@#mTXU`su{;3_@ag~ma zRg8;P82ntjrIOT<5bry8Y_7%&YH1~I<;xu60apzZT#aRul%~g(ceG^1{oSZdIs&LZ#l7QREO9%Yy-qyI9lp1Py{W!U9=gm4vTu?n2M&Cge|_1chBpw^ z9!t@DjTagsjW!jkpJOhxHa@v2dz>_4t3jnNZNclc0)uWsWZT2XX(qp*mE5BioEMV{6R5#Ca^Ke-t zYu%spe+&(<-}BlE5MeyAjZd`BwpmxaaK9d7gbn%y(csy}85~DoUWiu?I6zkzPQ9)x zvwfR9i_f2Ag#y->8vI=ILPp__vt70=o7uqx&A(`gu@iM|1|B)5ZiRFF?#IE`3^Nui zskFECNh=ZAM*(!`&4a=omH$%E^C$zrEEg%HG=L!oa}YN5Cnt| z%6;nXwTM%Oa@aor5v^#EQ;Xye%DggL;@2^yKlg{ zuRW9tvUyca|9mX7x`Wl;V7GR;RC4hUx&~;qn6GeQcP2l8`WUz4s`P;Z+Fv4;v$p3` z3F%0h%`7GAk*3!VkQXx#@pRZt-Od=h}7Bkc|`vpVu&0__4ByoR$2g6=Vl?q`#DTdsT z;krwy(L1s!hkaf4wCt*Thh`Zu-AgyQ>Ml^}DL)4Ha&l});jB1G zvQfHJk<5TS!m#+>;nvM^cK$Vl)MS%dm{}s8GQqar3VCZ{WxoBy3t~Th#BK>(1jr{W zg{AQRINI0E5>G6dz7t}%yPTleV#eQgieGZ0-u|E>L&Cxp5P4`$`RpJt5u-SDb8E0ZK?pF}a;AZIa$HCf!o-1S{KAv->p{h0jpR-Rt^af~x zWo5}TSMC$Jj)7Sgrm2`t&G)lX4=xk00%<hipp-)w)`d~QC^3@!+!q8ACspw*s?0nl7PVUc!UMuA@P?nI|^D_Hx zz;2-=a|tDVrM37`EA8c%EvgLRh{-PNv}Qn}j67RW)SP=2@t*`Miy?Z{fL?cXfXhq< zdopnEsWI5b%;HsI(7oR|xutIqs5@fNIDTbniK#c?GZno@8006} zcX1pE=9r0^UHjoz)~U4EVCYS|F0WOlPoSOO-2url0fa-=dh^cZVj4($S1U(SCOm3< zn>GVPTnd?GRtIJ;l8;oKp1n}GzVB_Uwyca^G1T8)s;NmBENsQN&DA!%m2(WJIX&Nc zv}MY&8V0}48*m!M=L`;=+&?iIju(gi7S~B1b*smZi&n(MR7|oXgW6xie8*rZ6LY8r z)9paszO}b+U+aji0GgffwXT9?tOu&a$A7$-V5#7(BIiMA^Bqylx077{BH;4$?^3x~ znsOtoO37SrUp-;x&lY`!R;&QuCtm;Cvo90ae@V8N=Nu?z6LwH$m0%)#W2aG-E2NMB z|3=39eRiq)F9s#y!Xsdy3E}EM+911$)%PhF4Ntr&PN?B`tQy!Xrr{`RLMrg7yV`N} z2htBPBFy=0-_Z8q;RQucTE@0ldkupf9hz~2?2ErhYccTr8`iF)62()`i~VM@w1n8W zRP^@eTN(x(*}Wpj(KcK3$nlsWDjz(a&j)fWDkX>`#GPW4c(bmU^d2lzC2M+$4ZDwy zqdQK6rCI~ezTVr#5v`c5o_+CroDE)ny3btXZ#aH~(ZMKsi|Ql4a+2cUxy6+ZNc@rJns%&hdRc zUYh@g(Eqyji8*SFgwI7NFyYocoPs%|JGdmbB%KmB5^%GYTh~_anfmN04AVOUmhYV0 zS3(zY)Z(R0T_=0<>U-vB+)+ofD}+@?@c&sX?5X(VG)z~V4jQv^aT;i5V)tDzNB-(Q zZ8?&!fpFTfdu|kmjIJvMQ0e_U*lXTq-`ZA@`%nHK89I@|Xu<(O5%3+gocIWuNT2`V zD0~oFkjx^dQ9AE>(%V~a9=qx{@@s|P-5{`UYFjpGxJ*c&Q26}*^oyw_7tbdmHYeJO zBaI>ZlsPrhgl`@!>c40~39=k<{c09!P39y%9j+$pR%68Y7*rMkXY4r!lyr?=LhdK5 zGeGgA_ycgKHxeRR#n7-MTf--{HOFRq?!Ji*j(=D898#v`k#Z2fYOxn`>W7_ngq{65 zuR5f+lj)z6F?ZuYuTDh227Yd z4rlD>NMUA2VPQ`gckJGuD)?hEcKjwImWZI17_hEQ^a|G(!_*L0SYL(g-_MXqr;Au6 zrVN(%Gv^lXBJjdwz|rE?WJnHv+`fo57`g5E-t4qMd|(AjxkETG+jRCTsEwQWtL zKuth!uDx2akZo7rF>fa6u|AjUr8Jl+!AW3?wS#9b%ND*C1D^kvdSpk72K&H6pg)e; zc$*u)Ze3?kkkqE5&VICz;IL7ArJ2E9`un>HhuyIC7CKoKRtu2I-ks_^COWzKT4{~- zZ%8)8MRvy{nc3IgP`L`!?6_|22@MM-cf7KL?fn85^ILTr}Ih0Ssjb& zt*#L#X2xHO;xP`GKhx5tpn-e1p>3QkRZ?=sr(Y&JYZ6-e{{$`js&rdds)_GXpI?M4 zMs`n5?ah_*)ndF&kZy5(*ck%pUatAw+DEv#-+U7=THdIrk*&M}+AMwZO9yKF%q&}u z%L9+=&2t{Q^69PC|3=D3v6H{i_f?e^q#yX4?kf%=ZG#I_{#3UbRZNci3NDBY76^Bx zO#+!zI!?2Ct8Dxn81i1^LXkq-2Rh;G9hOwxNl3z{hc`3G&PM(IqLt7l<0xl<) z@*qE#c24eZ?Qd>}+@6!s$x}o~_}>6mx_N+@cY+{CS6?2aiW#1tYNa_ynjrNUF&K?= zl~s4?$EtawEdwkLLSkTxXYhK^b)-?GCZG!TZV$~KrJ??|w|#a|Q|h&b8`US=rZ3aG zPFFM)q_pBY=NPkxkt(7j!b3KXK(JsAA++FWz2AAN)?9SJdXir^XDN@ZzrOD<;_C2GE`nYdee ze&$AExT%EhNu1;LnTin3;FV}PCQ8D%t(&v78DhHQVz|fJt6K4$YF4i2OHWUCvsxQ% zz3cxpdrs|c+*mVW59;>^G$+F5#(!V0t^pDJhN82j4*-a+b0@*`Z^uIJJ13+5sG5(t z0;|c}Ph}-C>W}Ea4IFjaGAxP&);(wd_E`I)YWIdmmb;#$hTUs@HI58cmMglO>%B%C zmXPk@iMA60LH0W1h_WQkm0W3#wJLhr=pp1xbQ$;goq=B0^__*}vB{-du#%t2CO7IR zq~Nme`gr*~0xvUAmh3Qf@knsn(Ek>y#$t2>-8T>n8qDDt33& z+}82&8kVH-Tnznr*P z=A2%8X}GO*eo(xwALlnS{D8*^>(WxiXGlVx9WR#&o9~2g*-ixJMnKS7=Cqwa$=it~ z*Mr8m`Y>FfypFEp$96NU-O2|G#)#3nbDix0-zCMS{xrdY6sfOU0VAceP^G73D+6yQ zndiYVzpHe}^O4W}zMeHcvI*{xZRxr8-DMFzLEYtaf6-WrZrol@I({X-3IF)n+ZfQu z-}@RtPlGODP417rOOA+vp}kcj2L;9)WBO*Fw<+b6kR6t8m zGGPi*&>Tr(O5WB|L^&sxr!GqGlXx7R+BqcXo(ue4`wpl~o#XEzD(fy*fWs;nw{gUdu69Bq7)-iJI{jrede@yS>l3`s-0JJ2&ls@4<^ zq4zOkKP4=bxcPV%E@IjzQ-UQ9&;21M;PhFi;b}+e`MP%~(2+61md^9NRMv2px({Jg ziVC5AJdV2_r~Td?-ET^3 zE$iG55i&ExQg!+Te!q0)ewg*xyS+x?h?)f|<}Q9~IUPdntyYKoS9!r+br?HI$5py> zbUA2BcP91Vviz5>tjgAqv0kjX>nF?JuN#)(6ECc=g$F#`?Nn-d>NUWlm1}J4|Mp$; z817>co25{F7L_oR-}*`4EPm=&pScWdsJ>?HipVKOdlwHW>&dwTE;Yp+M9PAo=R_cv zr*$s~lTkxOa((Dg&TW^MhZbQ$LO32!FaGAB+K^3*$uqZ<{d9Co`O}#fFN10SvW3cR zWTa9Ed>y*Xrxz%m%t}1T%UNmrngfWcGDoQ<^y4eiKmog$IhQ_K$zkwNcmo54bkskU zp>tz%kBuKu!;U<dwyH=-C}nzdXxpQZrq%$dXev~VKtu-$!o<$E+|-$zLNA%BprSr z)UMq|AK={{rm!-hV0^!2sBRLWAQRlW^=tvX**qo0k*t$A|5gW4-sl|nSJN~onD)ui zK#%&9K(d_e@UO>1fbXG%hMdzY*ZaR-=<-RO5u3VDTi zEJfwE6N{-%;U@iI7TQa6I$S+l1(XiW1Jp#vgpe~LJyzbKZI=B@4W7`y7L`D786=UK zIv!Yx@tM`S}b95@J6hr{WeS@RVCkjK{cEh4%9A(YoId7R?YXe!hpNQrKs= z*U@nXH&DJmP2-HfHJkF!P`T}h)fQg~4Lj1q`N>lLab-3sG@P^zVVDLeGn1GNAwAx$ z`v_9Sf1as|*^l_F+nt`p#^w=X4xdnV))O+rOC(dHEe+_(zdVS?#cNDObHTDf!4 zlwHo2>zZ|~yU_9{3*jo_);9h*`v?ZQLbpmeEaO$#zLJ?O&&q2(Q=|t@_Fd^<`Koo61JdPwa7z%TBfehhiVm=mpM%G z(4q0V?cNWiY9^Ni8cIr7(4st;GOVYk6?c7kj|YpCF|`hU9fhg1T;g_hO;AN0?|i!y z_Z$GdQb8*pdwBFZkFMC$I)15zP8^h}xCO=zVsOS%W20B_`aEAb!sh7{I^9vX(`8jh zad1|k3AmY>m$D>e5LZxje_>!D3A(}zPILa^TiVU)Ql07O7eO7vN`+&uu>L&9C4f|5 zO&{uj=dba^Kx$F!Zpa?x;iiq7uU8QzcELvJQc6OPQ`>K)XyNNe8`) zD$1|<#Rqs-7FcLZY08~>)RY*LjZ&>v<81%Y=*&7nX2yu^ozItJO_)o4LIM>7K~cEw z5XItgg8uSC?H$yXwTMD_=(DWYH3UQ)P^gW_yYWgO!Q!8~p50WbL28PuSf7wjGg1t} z5|yiC@m3G3?$Csg+`eG@^HxdfCKt!aQCOli9^y;o&7|IW7z2-lhn6(xjC+hm}bgEF<{lkyM6QWo^kD?Byh*o{Zf6a!)D&_;z2FT=VA-d1(%aJ(6W9 zo@F^$bnbldBIg7B_qC5zzk(?XD|Qq4*Jga|*bt?B^|DGHs{zP`%W3-m6|!B9KJ#~D zk+m_m3p})T8nl0PuvgB0`S)*onUt5HE>ql48K=#uN=1#pVyDI6rXJUBo7CZ9L+K3m zn)T!l5Fe>CbJc21Lpy1AvHGt26i^$8n*X(t;=(YOYnU3^t@-8CPo&uJ>i|YCX|^_% zlhp&34Vy=u$!Mf1C{b|Fx(lvJWj(0cUW}mrhkNhNOciL-Mk(_VDlg9Jx0X$w-*N~@WCWA7RQOyEWr|B=ai^zbzvL8=Nm#o5AY6k6` z6h$@`t08Od(qdf+KRv7`A&dauK0)m-)bQ1)=-8-)PQ*Oge{9~-u*pe733PC%@a2%B zn4_|~9)xA*7!QEwGsCw3N(F`bHBYF9Jn)(eMuGO>D6F?t8$qF4Y;-SRQV#HNEbuG zjY!w7;rc%6^yy?#a3WYoDryNGYf}|BC&QasYBn{$xa{0AZ0pD|r$RTcL=J^oGSwlkeq^rCEF@fB*Qxq5-?V zZ6#DvWHX|Fk3#3bTvZ{}7)b6+VNchIflZu#D%lPOGV1Q0H<4UIY+k@yzi=fe;sKBG zcrwDCAg=eX8NW0sf54tX(Wt<_RBI1xZjaqAuotlQFYA;L_09~-DJJzZq5r@5`v*fW zJY$3u&#yYbm$lB6e=~>m-ZMwQ`eT?WuQvo{@ z_e#$`&Ze%+i)IgUOx|${&-UZ3R)1l_tFSst$p?<}=iI25iX!QWRUVBs0pKHwzGTTsusJ_~CD{SNJdxy%wD;RF91- zB61Gpm`r_hLTW4sxTIyG;cuV-+&Y%^HhJfORnApPy%|O1J!hh>$_3FIU`b#elQ?X0UrV6p6S@nj%*N|0U+NBU1N`C4p}xesk0rkoCUgFKTEDT zc$UCi&*p><-E;dnbP#*|eX6MUvQvl{vkKd`lTCBmfEJyEVt!uQAr$L~nS5eR%evf~ zBAM5U1KWmk{~Bi6=q8qpaqzlj(vSAYU7djw zQEc?owa}~eJw`yz22e0IKAj5N$X3Yoqc5MMEU0nNiyGbpYF_V2ayaNh3g$E%9Ht%K zYS8-*^4HpFrH*N_^Wndehi*(6x52xvdek@Vgq@WZeCo~Qnqf!~Cm_l<{$^s~HpG)pdPIgtYMN<8S74w(#vAT-g>) zO^mN*rlS!P%53tIknCj=Kh95v*&Z4W?=EeZCA-uvsUlgyl%v-iwCduH~29u3RJdSPyE{TSPQQ$rqREoFN*tHSu@7jM)Fyg7cd^GTI9%;ifR^QidZ-ov$f&WB|yA# z0dr0N$mEpxZOP(kiXh+orfp&Pye5^vAXQ)0MS;utjxXhJvoWz*z35F|^;~`AYAeg- z-968dctei!q4N}9o)z#qG>2T>D)dUlWLyzGcYd$BXJk?9>O4=vs^-<)_m~dT(9$i@ zr`5VwK2|ZtC6zwf;;>+9!blFz>>Rq?&6o(M$rTlDe13xCxBwUw3sXoR^w@bj+ft)- z-?Ff=$$#AWip0Z&mHK*S0aJ{)uf~66Jk7e|eoy#SE)yPFe{@=LSLP1e&SVReKiDcq z)1#qbBpUk#Kfi1`0AFzC@*f{>;c~y7BT2y$L(6a)I=pLOtdyaGyCdRS-X%MH;=YG^ zpS0i*Fj$FH=8IB7D%&_k%vBjUbK>&8yw!+MNtX@M341X6$0WPh$S;Zfb;EVwB86Vx zbPfVZ))%e5Rz_grw{pZ5%F|5Ep@V3{)zw=bEgGCuLuwI`Ra={XZl~oA+E)GWmAXA$ zVU~8u2kAU8fKV#%e^SgY(m1qS@8hiQ`I_bvXA*+rqV_gEFo#NY&dEjF!EaEAXT)u= z5JW6bP^16NMEm?HBlHhqT|>=T7eu7q9{2`xYL_r@1*pSQnVV)<({zWn56$t0iz5k4 zuvq`Q#q_FY#RMfu7f}=qxmP{^$(-n8@BDcYd3M8skBXQ4umZ##6v#2X>X|Pg{eaCs zjikUBE~;0yOTT;~9OHF!ass4wg0GGCh0P>2im6zvSAdT_z6?pjs@?NTLm;3#?Y9sQ zrGQVXEVagUdpZR%tkvY0@vUaV;;YfzX${WyY0p!_q3S;6RiN41IgcmxSIm)lkL`c? z!(M05aA{>pboA-!NWGcyDj%ru7_tIqc3O9FlU3H&tB?m{Og9jiyIEQYruEcpt2}|= z&)SR8+bM{0^`-r{qqcDZ2YoLmZdOQ3EhL)VFq#c!KwXfGfvD!Y_Z0o0cz1U#ExT@* z*YQL7)K?q5EIY^>aW;(jX|m~$ zii;O_mU@x@+>`kPh>QqJCJnuBWPnED;h;u1&SO_f@}kL;P|Y&pFL3Ebx5l z$0po0KX2p7ZaENoXx~M&tgCap6R;3Gmb7eAUTyLKn7ot%(&N^#;0N3iaV|>?^J3nV z>=!BH3N*Wv(G>X<@u4c;1&RXx+BqTcpW~s&q26YCC7`$^ibq-ZlHEMOi zr0Fe0UsPl&lYt!*2r0+%=H_Dqr;X#hM?P>4-u!$S zyA)dm4|JW7lyl8&sG7%!6XGeYyh{)61r*oa?%>N+$F@9vEQhF(t<{pFF7UJgn-j97 zUqsvW#e&yc(xQp04Xm1Ve!&I{!MHo&m1D$iWNKADyQNVznTyFo{RC|en7i4)MVqe( z;qiNioFl&4dBZ;Vr{CZYFA!E`s)w%oUWv_rM*}z05j|Hm^d8Yh8+fvZ-bwHv zkL^yXXuk`5;&I%XPMYx#4Y;HI~*;C#5x_#`txZ6EL zkmI(Y?V2%5+Z!hFM_c_KS*oC+$ggvgRT~reS->Z_COAQVejuo(FRd$<23_P~)T|!J zNBZ_UTBd}qAExaI@@92mDLi^gMKmyNc|>4`qR^{M9&t7$6@tLLaJ!k*7Z3XNx#14nef9%aUGs zLT2kT{YR(^uvE39)=Rx5(6GcBYX4^OUio%!%gAeVx|5b zDMMa%bIUnyZj#<`najD{hyAsn3>Ga|8nVjw0lI`3w$t}2wHs2EKIwZXzT-;rJ@57Y zHAlN4aFDB?yq?(#vXkJGw?bwK*7Drgb>dY&hvmh}{aGzoM3VhDxHVOXGM|&^v<&gvjUI}2 zR%^nf1OIf=AIc1wsb=J6r- z0Y|_Tig1dHNhjoRy;V+HA!*-C3!0ifIno&N46gtkKKpi#(}{56?vITJd9%Vfs=Xtc ztfvRVjaZ}aiV7{RJTOZ0!;-|yYrLLkDZXHG#F`l1f zHua-Dkjm)>P5eGIzF$;mFx6waG;zke3kRo0j8P;*LK}IDAs3K;HG+TI%mTyZOl8qf zUwj3uB78ol9_4CNJ)C`Ax3ZqzkiRe@FD+wVC7}ESzdap(Fy*~Bpl?cd9Ht~;en&|l zFZhS0X2)4S`gho|)$}U!g&1b#^98m$@6VC9G{o69&M%Jx?h$6!R}$;)>DJd8rW8oF zx+9SHUHbg5vLe7HHQ2(c3Yf}lc?n<)^SG_qqa3<>_s{u&8TShqJMGPT{o6TiCztrS z6+Y*!ncY;rFXSKb1C1{RBYPi$${HakjDqt#amTyPHks zK+|8z);&I_n86%wB@wsY*u@YD&HmvwEQJz?J*`;ZlP4@@mK{Fr{O7HyiM!Tw#I_oW zmx{%;y!_Q@{ta%X-KqA2_p-McW4QYEXvR3oXQ=n1ST`v|ezDTek0vF)ng$Rby0y`L0i!P{iaFQb0;wdrh7<3U2k)a)sP&$PpL}0$%;X(s`5XQb^~O8 z6dm4U$<7YZ5BLXo_~bvIxH%{N2f>xzi97smVz`)moTSE;?P8VrJl@8VMPr__rvkIW z>n9lB%FB>isZCH;r!XJ{0E!$iIN60|rdiSa&ES*ee4b)3y{3tTZ#u^XSiF=KcyzR@ z_t{<-=JL*)$ALn%60;?|Icv(gv2L@Y3p$Oi!OOo7@${*9l^y_xWjh4l!DcCmM28@?{||&w0{j4GTNNlIcuWK_PH@8pfei<8 zOd)|d6(Lh%5(yj`SgsK3v<5o_V#onhiOnL4+nhp5L&6Q7`!E3Wm(mF=9AyGA>SqyS zN?*di8bmeyA7TO_@YeN^0z0X@-{w z5HY~?1K<>e%tRM$xKtlu2rv@vr5_0J08PFexgTh=4THeN!E{OawB#_i%sQnb4XKqW z?^{^|-cW7PX~?V>ni+zM2X*ts-}^g}3Xntikrg#U^=WkAWyVAH>PT<6UhMQLnonAL zNf1qK8z2Q5#iI&HYNsQ26G=@Bfxn!uRV4K#s3^}1Vok4aU)Lf68m zeC753;Rbc#VUV%jdLN)(d(CXBPCIUh!99Y8V!=c6Sih-BLr}>EC@oWp`NlBBeOj_Lm4W?$RnW$cb7!tk_NC)qRc!$dnE{#I{Lt$fr0j2y(j3TBqBjmeS z00+e+7^*O$9@+Jj6?D%yN6p0aqQceMMuJh^ty>Wf=P*C0U%dqG>I=6h!^<^Nt}23p z0J(KD8qmYS?~;de0tOo|@l7+<&2=|0jtK;_Bm%KyVw1o}qgQ}jOmb0y)AbR7#@9cc z!64+ig&Th^0mT6!{VVwy4N)&7+L-Y+kJ z#mT@y`fy;n@~>Ya9Nc$W^GlJX@B!f5fC8Z2wSlpjoxOg()@_m&OxzbCNgbtF7=8ov zLhHlHrSNz$!n2XneL?_}$FH4T-97Cd9spo{T1DEt(gOpxK+kqR_^wT%>{)w{>*-(Sfc?gz% zP#!k@!!l8IC=7&dJSjYyFJL)%EO~Y^K;ODSH17W&8Sxok*jCf#GnyiZ zBApttz`o8gc={9T3}PZmuyQyA4#Gy|g|d?W0%|KR_t5g3h3)@dF2&xV{&Cv`N_v&9 zU!P=U`ht;c?N_Y*+i#ye{LN0-9?x_%qVM#@ZE(Nky8gG$vrnsmXorq{+*Lz*I z(Zm&l>mPT1?IB0=rP%Hr{a!u}?#QvqHF0|j^@MTv!tedM*0n5~PK^81PmBBf0!sbz z39RTf7FIO9lQWxnTsi7zWKMoNyu1>foM%L(!amq0$3FfsyDWC!6Vf!Gd_UurlEVPM zWXW=Rhy`8S&aIiTzpAA76#o7GOlmT)ICy6W_i?SHlIWp9P1?iYfGNHGn}{bg9Bnz{CxWUZ z@uM{zvuD5RDit3@8hscW*IUOYSa72g0`wX}ygjg%K`~1oe{{x1_fIS;z9KFcW~$Pi zvv_oiS5^4-7b#!gT~qh&;&A3#EgI>o-!s<7y~PfUX4R2#T+LB3y{!0dJ1CwzWhLHQ zvtguFQ*kI*Vt=*yR~{C11+8$Yv8kzat6E(j|3Q!o+}}^$jk=?$NsZ-cV78%YajYZ3 z^S4EY%}H~fPn;nAA1i)Nm`1H0{Vf~BCj@b$QP3pl4e}RyKmI2BIMn_8wy9AXh`B3$ zKd}G>OIs~4{`f7}|Lb>^>92(sBJD-Vdr~=9Kd#+cPVzE83ep{`T(*O~(93_T6fFbK zv&Eu%CrNCef76Aai%x$_ly+wz?u_k^BQ6UC{&$o9wG7dY@?_=9%16YAEu z86dNNo}Q44o$NGyLD~&Nk+BDUwDo$E^bCj_U3R$eV7**ewjLrY?_VP6(_|^jqd+7= zPBv;JJC>92oQ;2xt@^{0_ntZ0grB$LgtfU#*b&K++PN05Nz_}#0-9(pUqM5TugvoT zE~9t6v#z64>qOv@aOn5?{Bs0$K4@iV=h0}M$k~N%SZBf1yR5m<%FF;!vI@70Ih{^#^o_y> zx_rkY-5$QJxD(J71@4|Gr^oolpsiKQ*`8CoT*lC^-=}8p=*p(JZE`yliv4;OcEBw* zv>@dAev<{fq3Wo%f&iJPxt!N!Ks*PS^A~_`{=dC;10Xt~{{Q7_14!zG`v04&2*9=z o>ir+C;RN10sIS0&a;pmake(Kernel::class); - -$response = $kernel->handle( - $request = Request::capture() -)->send(); - -$kernel->terminate($request, $response); diff --git a/Chapter07/onlineStore/public/robots.txt b/Chapter07/onlineStore/public/robots.txt deleted file mode 100644 index eb05362..0000000 --- a/Chapter07/onlineStore/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: diff --git a/Chapter07/onlineStore/resources/css/app.css b/Chapter07/onlineStore/resources/css/app.css deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter07/onlineStore/resources/js/app.js b/Chapter07/onlineStore/resources/js/app.js deleted file mode 100644 index 40c55f6..0000000 --- a/Chapter07/onlineStore/resources/js/app.js +++ /dev/null @@ -1 +0,0 @@ -require('./bootstrap'); diff --git a/Chapter07/onlineStore/resources/js/bootstrap.js b/Chapter07/onlineStore/resources/js/bootstrap.js deleted file mode 100644 index 6922577..0000000 --- a/Chapter07/onlineStore/resources/js/bootstrap.js +++ /dev/null @@ -1,28 +0,0 @@ -window._ = require('lodash'); - -/** - * 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 = require('axios'); - -window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; - -/** - * 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'; - -// window.Pusher = require('pusher-js'); - -// window.Echo = new Echo({ -// broadcaster: 'pusher', -// key: process.env.MIX_PUSHER_APP_KEY, -// cluster: process.env.MIX_PUSHER_APP_CLUSTER, -// forceTLS: true -// }); diff --git a/Chapter07/onlineStore/resources/views/home/about.blade.php b/Chapter07/onlineStore/resources/views/home/about.blade.php deleted file mode 100644 index f79abf3..0000000 --- a/Chapter07/onlineStore/resources/views/home/about.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
-
-
-

{{ $viewData["description"] }}

-
-
-

{{ $viewData["author"] }}

-
-
-
-@endsection diff --git a/Chapter07/onlineStore/resources/views/home/index.blade.php b/Chapter07/onlineStore/resources/views/home/index.blade.php deleted file mode 100644 index 1affb20..0000000 --- a/Chapter07/onlineStore/resources/views/home/index.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('content') -
-
- -
-
- -
-
- -
-
-@endsection diff --git a/Chapter07/onlineStore/resources/views/layouts/app.blade.php b/Chapter07/onlineStore/resources/views/layouts/app.blade.php deleted file mode 100644 index cb97098..0000000 --- a/Chapter07/onlineStore/resources/views/layouts/app.blade.php +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - @yield('title', 'Online Store') - - - -
- -
-
-

@yield('subtitle', 'A Laravel Online Store')

-
-
- - -
- @yield('content') -
- - - - - - - diff --git a/Chapter07/onlineStore/resources/views/welcome.blade.php b/Chapter07/onlineStore/resources/views/welcome.blade.php deleted file mode 100644 index c587c72..0000000 --- a/Chapter07/onlineStore/resources/views/welcome.blade.php +++ /dev/null @@ -1,7 +0,0 @@ -@extends('layouts.app') -@section('title', 'Home Page - Online Store') -@section('content') -
- Welcome to the application -
-@endsection \ No newline at end of file diff --git a/Chapter07/onlineStore/routes/api.php b/Chapter07/onlineStore/routes/api.php deleted file mode 100644 index eb6fa48..0000000 --- a/Chapter07/onlineStore/routes/api.php +++ /dev/null @@ -1,19 +0,0 @@ -get('/user', function (Request $request) { - return $request->user(); -}); diff --git a/Chapter07/onlineStore/routes/channels.php b/Chapter07/onlineStore/routes/channels.php deleted file mode 100644 index 5d451e1..0000000 --- a/Chapter07/onlineStore/routes/channels.php +++ /dev/null @@ -1,18 +0,0 @@ -id === (int) $id; -}); diff --git a/Chapter07/onlineStore/routes/console.php b/Chapter07/onlineStore/routes/console.php deleted file mode 100644 index e05f4c9..0000000 --- a/Chapter07/onlineStore/routes/console.php +++ /dev/null @@ -1,19 +0,0 @@ -comment(Inspiring::quote()); -})->purpose('Display an inspiring quote'); diff --git a/Chapter07/onlineStore/routes/web.php b/Chapter07/onlineStore/routes/web.php deleted file mode 100644 index b1e2ba5..0000000 --- a/Chapter07/onlineStore/routes/web.php +++ /dev/null @@ -1,17 +0,0 @@ -name("home.index"); -Route::get('/about', 'App\Http\Controllers\HomeController@about')->name("home.about"); diff --git a/Chapter07/onlineStore/storage/app/.gitignore b/Chapter07/onlineStore/storage/app/.gitignore deleted file mode 100644 index 8f4803c..0000000 --- a/Chapter07/onlineStore/storage/app/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!public/ -!.gitignore diff --git a/Chapter07/onlineStore/storage/app/public/.gitignore b/Chapter07/onlineStore/storage/app/public/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter07/onlineStore/storage/app/public/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter07/onlineStore/storage/framework/.gitignore b/Chapter07/onlineStore/storage/framework/.gitignore deleted file mode 100644 index 05c4471..0000000 --- a/Chapter07/onlineStore/storage/framework/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -compiled.php -config.php -down -events.scanned.php -maintenance.php -routes.php -routes.scanned.php -schedule-* -services.json diff --git a/Chapter07/onlineStore/storage/framework/cache/.gitignore b/Chapter07/onlineStore/storage/framework/cache/.gitignore deleted file mode 100644 index 01e4a6c..0000000 --- a/Chapter07/onlineStore/storage/framework/cache/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!data/ -!.gitignore diff --git a/Chapter07/onlineStore/storage/framework/cache/data/.gitignore b/Chapter07/onlineStore/storage/framework/cache/data/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter07/onlineStore/storage/framework/cache/data/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter07/onlineStore/storage/framework/sessions/.gitignore b/Chapter07/onlineStore/storage/framework/sessions/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter07/onlineStore/storage/framework/sessions/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter07/onlineStore/storage/framework/testing/.gitignore b/Chapter07/onlineStore/storage/framework/testing/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter07/onlineStore/storage/framework/testing/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter07/onlineStore/storage/framework/views/.gitignore b/Chapter07/onlineStore/storage/framework/views/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter07/onlineStore/storage/framework/views/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter07/onlineStore/storage/logs/.gitignore b/Chapter07/onlineStore/storage/logs/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter07/onlineStore/storage/logs/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter07/onlineStore/tests/CreatesApplication.php b/Chapter07/onlineStore/tests/CreatesApplication.php deleted file mode 100644 index 547152f..0000000 --- a/Chapter07/onlineStore/tests/CreatesApplication.php +++ /dev/null @@ -1,22 +0,0 @@ -make(Kernel::class)->bootstrap(); - - return $app; - } -} diff --git a/Chapter07/onlineStore/tests/Feature/ExampleTest.php b/Chapter07/onlineStore/tests/Feature/ExampleTest.php deleted file mode 100644 index 78ccc21..0000000 --- a/Chapter07/onlineStore/tests/Feature/ExampleTest.php +++ /dev/null @@ -1,21 +0,0 @@ -get('/'); - - $response->assertStatus(200); - } -} diff --git a/Chapter07/onlineStore/tests/TestCase.php b/Chapter07/onlineStore/tests/TestCase.php deleted file mode 100644 index 2932d4a..0000000 --- a/Chapter07/onlineStore/tests/TestCase.php +++ /dev/null @@ -1,10 +0,0 @@ -assertTrue(true); - } -} diff --git a/Chapter07/onlineStore/webpack.mix.js b/Chapter07/onlineStore/webpack.mix.js deleted file mode 100644 index 2a22dc1..0000000 --- a/Chapter07/onlineStore/webpack.mix.js +++ /dev/null @@ -1,17 +0,0 @@ -const mix = require('laravel-mix'); - -/* - |-------------------------------------------------------------------------- - | Mix Asset Management - |-------------------------------------------------------------------------- - | - | Mix provides a clean, fluent API for defining some Webpack build steps - | for your Laravel applications. By default, we are compiling the CSS - | file for the application as well as bundling up all the JS files. - | - */ - -mix.js('resources/js/app.js', 'public/js') - .postCss('resources/css/app.css', 'public/css', [ - // - ]); diff --git a/Chapter08/onlineStore/.editorconfig b/Chapter08/onlineStore/.editorconfig deleted file mode 100644 index 1671c9b..0000000 --- a/Chapter08/onlineStore/.editorconfig +++ /dev/null @@ -1,18 +0,0 @@ -root = true - -[*] -charset = utf-8 -end_of_line = lf -insert_final_newline = true -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true - -[*.md] -trim_trailing_whitespace = false - -[*.{yml,yaml}] -indent_size = 2 - -[docker-compose.yml] -indent_size = 4 diff --git a/Chapter08/onlineStore/.env.example b/Chapter08/onlineStore/.env.example deleted file mode 100644 index 8510237..0000000 --- a/Chapter08/onlineStore/.env.example +++ /dev/null @@ -1,52 +0,0 @@ -APP_NAME=Laravel -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=laravel -DB_USERNAME=root -DB_PASSWORD= - -BROADCAST_DRIVER=log -CACHE_DRIVER=file -FILESYSTEM_DISK=local -QUEUE_CONNECTION=sync -SESSION_DRIVER=file -SESSION_LIFETIME=120 - -MEMCACHED_HOST=127.0.0.1 - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -MAIL_MAILER=smtp -MAIL_HOST=mailhog -MAIL_PORT=1025 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS=null -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_APP_CLUSTER=mt1 - -MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/Chapter08/onlineStore/.gitattributes b/Chapter08/onlineStore/.gitattributes deleted file mode 100644 index 510d996..0000000 --- a/Chapter08/onlineStore/.gitattributes +++ /dev/null @@ -1,10 +0,0 @@ -* text=auto - -*.blade.php diff=html -*.css diff=css -*.html diff=html -*.md diff=markdown -*.php diff=php - -/.github export-ignore -CHANGELOG.md export-ignore diff --git a/Chapter08/onlineStore/.gitignore b/Chapter08/onlineStore/.gitignore deleted file mode 100644 index eb003b0..0000000 --- a/Chapter08/onlineStore/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -/node_modules -/public/hot -/public/storage -/storage/*.key -/vendor -.env -.env.backup -.phpunit.result.cache -docker-compose.override.yml -Homestead.json -Homestead.yaml -npm-debug.log -yarn-error.log -/.idea -/.vscode diff --git a/Chapter08/onlineStore/.styleci.yml b/Chapter08/onlineStore/.styleci.yml deleted file mode 100644 index 679a631..0000000 --- a/Chapter08/onlineStore/.styleci.yml +++ /dev/null @@ -1,13 +0,0 @@ -php: - preset: laravel - version: 8 - disabled: - - no_unused_imports - finder: - not-name: - - index.php -js: - finder: - not-name: - - webpack.mix.js -css: true diff --git a/Chapter08/onlineStore/README.md b/Chapter08/onlineStore/README.md deleted file mode 100644 index f171eca..0000000 --- a/Chapter08/onlineStore/README.md +++ /dev/null @@ -1,64 +0,0 @@ -

- -

-Build Status -Total Downloads -Latest Stable Version -License -

- -## About Laravel - -Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as: - -- [Simple, fast routing engine](https://laravel.com/docs/routing). -- [Powerful dependency injection container](https://laravel.com/docs/container). -- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage. -- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent). -- Database agnostic [schema migrations](https://laravel.com/docs/migrations). -- [Robust background job processing](https://laravel.com/docs/queues). -- [Real-time event broadcasting](https://laravel.com/docs/broadcasting). - -Laravel is accessible, powerful, and provides tools required for large, robust applications. - -## Learning Laravel - -Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework. - -If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 2000 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library. - -## Laravel Sponsors - -We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell). - -### Premium Partners - -- **[Vehikl](https://vehikl.com/)** -- **[Tighten Co.](https://tighten.co)** -- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** -- **[64 Robots](https://64robots.com)** -- **[Cubet Techno Labs](https://cubettech.com)** -- **[Cyber-Duck](https://cyber-duck.co.uk)** -- **[Many](https://www.many.co.uk)** -- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)** -- **[DevSquad](https://devsquad.com)** -- **[Curotec](https://www.curotec.com/services/technologies/laravel/)** -- **[OP.GG](https://op.gg)** -- **[WebReinvent](https://webreinvent.com/?utm_source=laravel&utm_medium=github&utm_campaign=patreon-sponsors)** -- **[Lendio](https://lendio.com)** - -## Contributing - -Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions). - -## Code of Conduct - -In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). - -## Security Vulnerabilities - -If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed. - -## License - -The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). diff --git a/Chapter08/onlineStore/app/Console/Kernel.php b/Chapter08/onlineStore/app/Console/Kernel.php deleted file mode 100644 index d8bc1d2..0000000 --- a/Chapter08/onlineStore/app/Console/Kernel.php +++ /dev/null @@ -1,32 +0,0 @@ -command('inspire')->hourly(); - } - - /** - * Register the commands for the application. - * - * @return void - */ - protected function commands() - { - $this->load(__DIR__.'/Commands'); - - require base_path('routes/console.php'); - } -} diff --git a/Chapter08/onlineStore/app/Exceptions/Handler.php b/Chapter08/onlineStore/app/Exceptions/Handler.php deleted file mode 100644 index 8e7fbd1..0000000 --- a/Chapter08/onlineStore/app/Exceptions/Handler.php +++ /dev/null @@ -1,41 +0,0 @@ -> - */ - protected $dontReport = [ - // - ]; - - /** - * A list of the inputs that are never flashed for validation exceptions. - * - * @var array - */ - protected $dontFlash = [ - 'current_password', - 'password', - 'password_confirmation', - ]; - - /** - * Register the exception handling callbacks for the application. - * - * @return void - */ - public function register() - { - $this->reportable(function (Throwable $e) { - // - }); - } -} diff --git a/Chapter08/onlineStore/app/Http/Controllers/Controller.php b/Chapter08/onlineStore/app/Http/Controllers/Controller.php deleted file mode 100644 index a0a2a8a..0000000 --- a/Chapter08/onlineStore/app/Http/Controllers/Controller.php +++ /dev/null @@ -1,13 +0,0 @@ -with("viewData", $viewData); - } - - public function about() - { - $viewData = []; - $viewData["title"] = "About us - Online Store"; - $viewData["subtitle"] = "About us"; - $viewData["description"] = "This is an about page ..."; - $viewData["author"] = "Developed by: Your Name"; - return view('home.about')->with("viewData", $viewData); - } -} diff --git a/Chapter08/onlineStore/app/Http/Kernel.php b/Chapter08/onlineStore/app/Http/Kernel.php deleted file mode 100644 index d3722c2..0000000 --- a/Chapter08/onlineStore/app/Http/Kernel.php +++ /dev/null @@ -1,67 +0,0 @@ - - */ - protected $middleware = [ - // \App\Http\Middleware\TrustHosts::class, - \App\Http\Middleware\TrustProxies::class, - \Fruitcake\Cors\HandleCors::class, - \App\Http\Middleware\PreventRequestsDuringMaintenance::class, - \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, - \App\Http\Middleware\TrimStrings::class, - \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, - ]; - - /** - * The application's route middleware groups. - * - * @var array> - */ - protected $middlewareGroups = [ - 'web' => [ - \App\Http\Middleware\EncryptCookies::class, - \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, - \Illuminate\Session\Middleware\StartSession::class, - // \Illuminate\Session\Middleware\AuthenticateSession::class, - \Illuminate\View\Middleware\ShareErrorsFromSession::class, - \App\Http\Middleware\VerifyCsrfToken::class, - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - - 'api' => [ - // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, - 'throttle:api', - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - ]; - - /** - * The application's route middleware. - * - * These middleware may be assigned to groups or used individually. - * - * @var array - */ - protected $routeMiddleware = [ - 'auth' => \App\Http\Middleware\Authenticate::class, - 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::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, - 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, - 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, - 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, - ]; -} diff --git a/Chapter08/onlineStore/app/Http/Middleware/Authenticate.php b/Chapter08/onlineStore/app/Http/Middleware/Authenticate.php deleted file mode 100644 index 704089a..0000000 --- a/Chapter08/onlineStore/app/Http/Middleware/Authenticate.php +++ /dev/null @@ -1,21 +0,0 @@ -expectsJson()) { - return route('login'); - } - } -} diff --git a/Chapter08/onlineStore/app/Http/Middleware/EncryptCookies.php b/Chapter08/onlineStore/app/Http/Middleware/EncryptCookies.php deleted file mode 100644 index 867695b..0000000 --- a/Chapter08/onlineStore/app/Http/Middleware/EncryptCookies.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter08/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/Chapter08/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php deleted file mode 100644 index 74cbd9a..0000000 --- a/Chapter08/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter08/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php b/Chapter08/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php deleted file mode 100644 index a2813a0..0000000 --- a/Chapter08/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php +++ /dev/null @@ -1,32 +0,0 @@ -check()) { - return redirect(RouteServiceProvider::HOME); - } - } - - return $next($request); - } -} diff --git a/Chapter08/onlineStore/app/Http/Middleware/TrimStrings.php b/Chapter08/onlineStore/app/Http/Middleware/TrimStrings.php deleted file mode 100644 index 88cadca..0000000 --- a/Chapter08/onlineStore/app/Http/Middleware/TrimStrings.php +++ /dev/null @@ -1,19 +0,0 @@ - - */ - protected $except = [ - 'current_password', - 'password', - 'password_confirmation', - ]; -} diff --git a/Chapter08/onlineStore/app/Http/Middleware/TrustHosts.php b/Chapter08/onlineStore/app/Http/Middleware/TrustHosts.php deleted file mode 100644 index 7186414..0000000 --- a/Chapter08/onlineStore/app/Http/Middleware/TrustHosts.php +++ /dev/null @@ -1,20 +0,0 @@ - - */ - public function hosts() - { - return [ - $this->allSubdomainsOfApplicationUrl(), - ]; - } -} diff --git a/Chapter08/onlineStore/app/Http/Middleware/TrustProxies.php b/Chapter08/onlineStore/app/Http/Middleware/TrustProxies.php deleted file mode 100644 index 3391630..0000000 --- a/Chapter08/onlineStore/app/Http/Middleware/TrustProxies.php +++ /dev/null @@ -1,28 +0,0 @@ -|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/Chapter08/onlineStore/app/Http/Middleware/VerifyCsrfToken.php b/Chapter08/onlineStore/app/Http/Middleware/VerifyCsrfToken.php deleted file mode 100644 index 9e86521..0000000 --- a/Chapter08/onlineStore/app/Http/Middleware/VerifyCsrfToken.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter08/onlineStore/app/Models/User.php b/Chapter08/onlineStore/app/Models/User.php deleted file mode 100644 index 8996368..0000000 --- a/Chapter08/onlineStore/app/Models/User.php +++ /dev/null @@ -1,44 +0,0 @@ - - */ - 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', - ]; -} diff --git a/Chapter08/onlineStore/app/Providers/AppServiceProvider.php b/Chapter08/onlineStore/app/Providers/AppServiceProvider.php deleted file mode 100644 index ee8ca5b..0000000 --- a/Chapter08/onlineStore/app/Providers/AppServiceProvider.php +++ /dev/null @@ -1,28 +0,0 @@ - - */ - protected $policies = [ - // 'App\Models\Model' => 'App\Policies\ModelPolicy', - ]; - - /** - * Register any authentication / authorization services. - * - * @return void - */ - public function boot() - { - $this->registerPolicies(); - - // - } -} diff --git a/Chapter08/onlineStore/app/Providers/BroadcastServiceProvider.php b/Chapter08/onlineStore/app/Providers/BroadcastServiceProvider.php deleted file mode 100644 index 395c518..0000000 --- a/Chapter08/onlineStore/app/Providers/BroadcastServiceProvider.php +++ /dev/null @@ -1,21 +0,0 @@ -> - */ - protected $listen = [ - Registered::class => [ - SendEmailVerificationNotification::class, - ], - ]; - - /** - * Register any events for your application. - * - * @return void - */ - public function boot() - { - // - } -} diff --git a/Chapter08/onlineStore/app/Providers/RouteServiceProvider.php b/Chapter08/onlineStore/app/Providers/RouteServiceProvider.php deleted file mode 100644 index 7c17d1f..0000000 --- a/Chapter08/onlineStore/app/Providers/RouteServiceProvider.php +++ /dev/null @@ -1,63 +0,0 @@ -configureRateLimiting(); - - $this->routes(function () { - Route::prefix('api') - ->middleware('api') - ->namespace($this->namespace) - ->group(base_path('routes/api.php')); - - Route::middleware('web') - ->namespace($this->namespace) - ->group(base_path('routes/web.php')); - }); - } - - /** - * Configure the rate limiters for the application. - * - * @return void - */ - protected function configureRateLimiting() - { - RateLimiter::for('api', function (Request $request) { - return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); - }); - } -} diff --git a/Chapter08/onlineStore/artisan b/Chapter08/onlineStore/artisan deleted file mode 100644 index 67a3329..0000000 --- a/Chapter08/onlineStore/artisan +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env php -make(Illuminate\Contracts\Console\Kernel::class); - -$status = $kernel->handle( - $input = new Symfony\Component\Console\Input\ArgvInput, - new Symfony\Component\Console\Output\ConsoleOutput -); - -/* -|-------------------------------------------------------------------------- -| Shutdown The Application -|-------------------------------------------------------------------------- -| -| Once Artisan has finished running, we will fire off the shutdown events -| so that any final work may be done by the application before we shut -| down the process. This is the last thing to happen to the request. -| -*/ - -$kernel->terminate($input, $status); - -exit($status); diff --git a/Chapter08/onlineStore/bootstrap/app.php b/Chapter08/onlineStore/bootstrap/app.php deleted file mode 100644 index 037e17d..0000000 --- a/Chapter08/onlineStore/bootstrap/app.php +++ /dev/null @@ -1,55 +0,0 @@ -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/Chapter08/onlineStore/bootstrap/cache/.gitignore b/Chapter08/onlineStore/bootstrap/cache/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter08/onlineStore/bootstrap/cache/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter08/onlineStore/composer.json b/Chapter08/onlineStore/composer.json deleted file mode 100644 index f0f2eda..0000000 --- a/Chapter08/onlineStore/composer.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "name": "laravel/laravel", - "type": "project", - "description": "The Laravel Framework.", - "keywords": ["framework", "laravel"], - "license": "MIT", - "require": { - "php": "^8.0", - "fruitcake/laravel-cors": "^2.0.5", - "guzzlehttp/guzzle": "^7.2", - "laravel/framework": "^9.0", - "laravel/sanctum": "^2.14", - "laravel/tinker": "^2.7" - }, - "require-dev": { - "fakerphp/faker": "^1.9.1", - "laravel/sail": "^1.0.1", - "mockery/mockery": "^1.4.4", - "nunomaduro/collision": "^6.1", - "phpunit/phpunit": "^9.5.10", - "spatie/laravel-ignition": "^1.0", - "squizlabs/php_codesniffer": "^3.6" - }, - "autoload": { - "psr-4": { - "App\\": "app/", - "Database\\Factories\\": "database/factories/", - "Database\\Seeders\\": "database/seeders/" - } - }, - "autoload-dev": { - "psr-4": { - "Tests\\": "tests/" - } - }, - "scripts": { - "post-autoload-dump": [ - "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", - "@php artisan package:discover --ansi" - ], - "post-update-cmd": [ - "@php artisan vendor:publish --tag=laravel-assets --ansi --force" - ], - "post-root-package-install": [ - "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" - ], - "post-create-project-cmd": [ - "@php artisan key:generate --ansi" - ] - }, - "extra": { - "laravel": { - "dont-discover": [] - } - }, - "config": { - "optimize-autoloader": true, - "preferred-install": "dist", - "sort-packages": true - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/Chapter08/onlineStore/composer.lock b/Chapter08/onlineStore/composer.lock deleted file mode 100644 index b55e897..0000000 --- a/Chapter08/onlineStore/composer.lock +++ /dev/null @@ -1,7860 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "8bdcc31974d0d5a00db79c82827c8815", - "packages": [ - { - "name": "asm89/stack-cors", - "version": "v2.1.1", - "source": { - "type": "git", - "url": "https://github.com/asm89/stack-cors.git", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4|^5|^6" - }, - "require-dev": { - "phpunit/phpunit": "^7|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "psr-4": { - "Asm89\\Stack\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alexander", - "email": "iam.asm89@gmail.com" - } - ], - "description": "Cross-origin resource sharing library and stack middleware", - "homepage": "https://github.com/asm89/stack-cors", - "keywords": [ - "cors", - "stack" - ], - "support": { - "issues": "https://github.com/asm89/stack-cors/issues", - "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" - }, - "time": "2022-01-18T09:12:03+00:00" - }, - { - "name": "brick/math", - "version": "0.9.3", - "source": { - "type": "git", - "url": "https://github.com/brick/math.git", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", - "vimeo/psalm": "4.9.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Brick\\Math\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Arbitrary-precision arithmetic library", - "keywords": [ - "Arbitrary-precision", - "BigInteger", - "BigRational", - "arithmetic", - "bigdecimal", - "bignum", - "brick", - "math" - ], - "support": { - "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.9.3" - }, - "funding": [ - { - "url": "https://github.com/BenMorel", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/brick/math", - "type": "tidelift" - } - ], - "time": "2021-08-15T20:50:18+00:00" - }, - { - "name": "dflydev/dot-access-data", - "version": "v3.0.1", - "source": { - "type": "git", - "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c", - "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": "^3.14" - }, - "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.1" - }, - "time": "2021-08-13T13:06:58+00:00" - }, - { - "name": "doctrine/inflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "vimeo/psalm": "^4.10" - }, - "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.4" - }, - "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": "2021-10-22T20:16:43+00:00" - }, - { - "name": "doctrine/lexer", - "version": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" - } - }, - "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/1.2.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%2Flexer", - "type": "tidelift" - } - ], - "time": "2022-01-12T08:27:12+00:00" - }, - { - "name": "dragonmantank/cron-expression", - "version": "v3.3.1", - "source": { - "type": "git", - "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "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.1" - }, - "funding": [ - { - "url": "https://github.com/dragonmantank", - "type": "github" - } - ], - "time": "2022-01-18T15:43:28+00:00" - }, - { - "name": "egulias/email-validator", - "version": "3.1.2", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ee0db30118f661fb166bcffbf5d82032df484697", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^1.2", - "php": ">=7.2", - "symfony/polyfill-intl-idn": "^1.15" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^8.5.8|^9.3.3", - "vimeo/psalm": "^4" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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/3.1.2" - }, - "funding": [ - { - "url": "https://github.com/egulias", - "type": "github" - } - ], - "time": "2021-10-11T09:18:27+00:00" - }, - { - "name": "fruitcake/laravel-cors", - "version": "v2.0.5", - "source": { - "type": "git", - "url": "https://github.com/fruitcake/laravel-cors.git", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "shasum": "" - }, - "require": { - "asm89/stack-cors": "^2.0.1", - "illuminate/contracts": "^6|^7|^8|^9", - "illuminate/support": "^6|^7|^8|^9", - "php": ">=7.2", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4.3.4|^5|^6" - }, - "require-dev": { - "laravel/framework": "^6|^7.24|^8", - "orchestra/testbench-dusk": "^4|^5|^6|^7", - "phpunit/phpunit": "^6|^7|^8|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - }, - "laravel": { - "providers": [ - "Fruitcake\\Cors\\CorsServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Fruitcake\\Cors\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fruitcake", - "homepage": "https://fruitcake.nl" - }, - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", - "keywords": [ - "api", - "cors", - "crossdomain", - "laravel" - ], - "support": { - "issues": "https://github.com/fruitcake/laravel-cors/issues", - "source": "https://github.com/fruitcake/laravel-cors/tree/v2.0.5" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "time": "2022-01-03T14:53:04+00:00" - }, - { - "name": "graham-campbell/result-type", - "version": "v1.0.4", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "0690bde05318336c7221785f2a932467f98b64ca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/0690bde05318336c7221785f2a932467f98b64ca", - "reference": "0690bde05318336c7221785f2a932467f98b64ca", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "phpoption/phpoption": "^1.8" - }, - "require-dev": { - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", - "type": "tidelift" - } - ], - "time": "2021-11-21T21:41:47+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "7.4.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.8.3 || ^2.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.4.1", - "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.5 || ^9.3.5", - "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": { - "branch-alias": { - "dev-master": "7.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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.4.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": "2021-12-06T18:43:05+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "1.5.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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/1.5.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "time": "2021-10-22T20:56:57+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.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.4.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.8 || ^9.3.10" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "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.1.0" - }, - "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": "2021-10-06T17:43:30+00:00" - }, - { - "name": "laravel/framework", - "version": "v9.0.1", - "source": { - "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "shasum": "" - }, - "require": { - "doctrine/inflector": "^2.0", - "dragonmantank/cron-expression": "^3.1", - "egulias/email-validator": "^3.1", - "ext-mbstring": "*", - "ext-openssl": "*", - "laravel/serializable-closure": "^1.0", - "league/commonmark": "^2.2", - "league/flysystem": "^3.0", - "monolog/monolog": "^2.0", - "nesbot/carbon": "^2.53.1", - "php": "^8.0.2", - "psr/container": "^1.1.1|^2.0.1", - "psr/log": "^1.0|^2.0|^3.0", - "psr/simple-cache": "^1.0|^2.0|^3.0", - "ramsey/uuid": "^4.2.2", - "symfony/console": "^6.0", - "symfony/error-handler": "^6.0", - "symfony/finder": "^6.0", - "symfony/http-foundation": "^6.0", - "symfony/http-kernel": "^6.0", - "symfony/mailer": "^6.0", - "symfony/mime": "^6.0", - "symfony/process": "^6.0", - "symfony/routing": "^6.0", - "symfony/var-dumper": "^6.0", - "tijsverkoyen/css-to-inline-styles": "^2.2.2", - "vlucas/phpdotenv": "^5.4.1", - "voku/portable-ascii": "^2.0" - }, - "conflict": { - "tightenco/collect": "<5.5.33" - }, - "provide": { - "psr/container-implementation": "1.1|2.0", - "psr/simple-cache-implementation": "1.0|2.0|3.0" - }, - "replace": { - "illuminate/auth": "self.version", - "illuminate/broadcasting": "self.version", - "illuminate/bus": "self.version", - "illuminate/cache": "self.version", - "illuminate/collections": "self.version", - "illuminate/conditionable": "self.version", - "illuminate/config": "self.version", - "illuminate/console": "self.version", - "illuminate/container": "self.version", - "illuminate/contracts": "self.version", - "illuminate/cookie": "self.version", - "illuminate/database": "self.version", - "illuminate/encryption": "self.version", - "illuminate/events": "self.version", - "illuminate/filesystem": "self.version", - "illuminate/hashing": "self.version", - "illuminate/http": "self.version", - "illuminate/log": "self.version", - "illuminate/macroable": "self.version", - "illuminate/mail": "self.version", - "illuminate/notifications": "self.version", - "illuminate/pagination": "self.version", - "illuminate/pipeline": "self.version", - "illuminate/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": { - "aws/aws-sdk-php": "^3.198.1", - "doctrine/dbal": "^2.13.3|^3.1.4", - "fakerphp/faker": "^1.9.2", - "guzzlehttp/guzzle": "^7.2", - "league/flysystem-aws-s3-v3": "^3.0", - "league/flysystem-ftp": "^3.0", - "league/flysystem-sftp-v3": "^3.0", - "mockery/mockery": "^1.4.4", - "orchestra/testbench-core": "^7.0", - "pda/pheanstalk": "^4.0", - "phpstan/phpstan": "^1.0", - "phpunit/phpunit": "^9.5.8", - "predis/predis": "^1.1.9", - "symfony/amazon-mailer": "^6.0", - "symfony/cache": "^6.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.198.1).", - "brianium/paratest": "Required to run tests in parallel (^6.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", - "ext-bcmath": "Required to use the multiple_of validation rule.", - "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.", - "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.2).", - "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-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", - "mockery/mockery": "Required to use mocking (^1.4.4).", - "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).", - "predis/predis": "Required to use the predis connector (^1.1.9).", - "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.0).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^6.0).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.0).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.0).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.0).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.x-dev" - } - }, - "autoload": { - "files": [ - "src/Illuminate/Collections/helpers.php", - "src/Illuminate/Events/functions.php", - "src/Illuminate/Foundation/helpers.php", - "src/Illuminate/Support/helpers.php" - ], - "psr-4": { - "Illuminate\\": "src/Illuminate/", - "Illuminate\\Support\\": [ - "src/Illuminate/Macroable/", - "src/Illuminate/Collections/", - "src/Illuminate/Conditionable/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Laravel Framework.", - "homepage": "https://laravel.com", - "keywords": [ - "framework", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2022-02-09T15:00:05+00:00" - }, - { - "name": "laravel/sanctum", - "version": "v2.14.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/sanctum.git", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/0647a87140c7522e75826cffcadb3ad6e01f71e9", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/contracts": "^6.9|^7.0|^8.0|^9.0", - "illuminate/database": "^6.9|^7.0|^8.0|^9.0", - "illuminate/support": "^6.9|^7.0|^8.0|^9.0", - "php": "^7.2|^8.0" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0", - "phpunit/phpunit": "^8.0|^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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": "2022-01-12T15:07:43+00:00" - }, - { - "name": "laravel/serializable-closure", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/serializable-closure.git", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/65c9faf50d567b65d81764a44526545689e3fe63", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "pestphp/pest": "^1.18", - "phpstan/phpstan": "^0.12.98", - "symfony/var-dumper": "^5.3" - }, - "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": "2022-02-01T16:29:39+00:00" - }, - { - "name": "laravel/tinker", - "version": "v2.7.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/tinker.git", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/5f2f9815b7631b9f586a3de7933c25f9327d4073", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073", - "shasum": "" - }, - "require": { - "illuminate/console": "^6.0|^7.0|^8.0|^9.0", - "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.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", - "phpunit/phpunit": "^8.5.8|^9.3.3" - }, - "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.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.7.0" - }, - "time": "2022-01-10T08:52:49+00:00" - }, - { - "name": "league/commonmark", - "version": "2.2.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/commonmark.git", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "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.15" - }, - "require-dev": { - "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.0", - "commonmark/commonmark.js": "0.30.0", - "composer/package-versions-deprecated": "^1.8", - "erusev/parsedown": "^1.0", - "ext-json": "*", - "github/gfm": "0.29.0", - "michelf/php-markdown": "^1.4", - "phpstan/phpstan": "^0.12.88 || ^1.0.0", - "phpunit/phpunit": "^9.5.5", - "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", - "unleashedtech/php-coding-standard": "^3.1", - "vimeo/psalm": "^4.7.3" - }, - "suggest": { - "symfony/yaml": "v2.3+ required if using the Front Matter extension" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.3-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": "2022-01-25T14:37:33+00:00" - }, - { - "name": "league/config", - "version": "v1.1.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/config.git", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/config/zipball/a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^3.0.1", - "nette/schema": "^1.2", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.90", - "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": "2021-08-14T12:15:32+00:00" - }, - { - "name": "league/flysystem", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9f8b4260031bfef5497477da53dd57b2aaff0e06", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06", - "shasum": "" - }, - "require": { - "ext-json": "*", - "league/mime-type-detection": "^1.0.0", - "php": "^8.0.2" - }, - "conflict": { - "guzzlehttp/guzzle": "<7.0", - "guzzlehttp/ringphp": "<1.1.1", - "symfony/http-client": "<5.2" - }, - "require-dev": { - "async-aws/s3": "^1.5", - "async-aws/simple-s3": "^1.0", - "aws/aws-sdk-php": "^3.198.1", - "composer/semver": "^3.0", - "ext-fileinfo": "*", - "ext-ftp": "*", - "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.5", - "google/cloud-storage": "^1.23", - "phpseclib/phpseclib": "^2.0", - "phpstan/phpstan": "^0.12.26", - "phpunit/phpunit": "^9.5.11", - "sabre/dav": "^4.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.0.3" - }, - "funding": [ - { - "url": "https://offset.earth/frankdejonge", - "type": "custom" - }, - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2022-01-31T19:41:04+00:00" - }, - { - "name": "league/mime-type-detection", - "version": "1.9.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/aa70e813a6ad3d1558fc927863d47309b4c23e69", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.2", - "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" - }, - "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.9.0" - }, - "funding": [ - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2021-11-21T11:48:40+00:00" - }, - { - "name": "monolog/monolog", - "version": "2.3.5", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd4380d6fc37626e2f799f29d91195040137eba9", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "provide": { - "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7", - "graylog2/gelf-php": "^1.4.2", - "mongodb/mongodb": "^1.8", - "php-amqplib/php-amqplib": "~2.4 || ^3", - "php-console/php-console": "^3.1.3", - "phpspec/prophecy": "^1.6.1", - "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5", - "predis/predis": "^1.1", - "rollbar/rollbar": "^1.3", - "ruflin/elastica": ">=0.90@dev", - "swiftmailer/swiftmailer": "^5.3|^6.0" - }, - "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", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "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": "2.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/2.3.5" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" - } - ], - "time": "2021-10-01T21:08:31+00:00" - }, - { - "name": "nesbot/carbon", - "version": "2.56.0", - "source": { - "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1.8 || ^8.0", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "doctrine/dbal": "^2.0 || ^3.0", - "doctrine/orm": "^2.7", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "phpmd/phpmd": "^2.9", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.54 || ^1.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.14", - "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://opencollective.com/Carbon", - "type": "open_collective" - }, - { - "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", - "type": "tidelift" - } - ], - "time": "2022-01-21T17:08:38+00:00" - }, - { - "name": "nette/schema", - "version": "v1.2.2", - "source": { - "type": "git", - "url": "https://github.com/nette/schema.git", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/9a39cef03a5b34c7de64f551538cbba05c2be5df", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df", - "shasum": "" - }, - "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": ">=7.1 <8.2" - }, - "require-dev": { - "nette/tester": "^2.3 || ^2.4", - "phpstan/phpstan-nette": "^0.12", - "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.2" - }, - "time": "2021-10-15T11:40:02+00:00" - }, - { - "name": "nette/utils", - "version": "v3.2.7", - "source": { - "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/0af4e3de4df9f1543534beab255ccf459e7a2c99", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99", - "shasum": "" - }, - "require": { - "php": ">=7.2 <8.2" - }, - "conflict": { - "nette/di": "<3.0.6" - }, - "require-dev": { - "nette/tester": "~2.0", - "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.3" - }, - "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()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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 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/v3.2.7" - }, - "time": "2022-01-24T11:29:14+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.13.2", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", - "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.13.2" - }, - "time": "2021-11-30T19:35:32+00:00" - }, - { - "name": "phpoption/phpoption", - "version": "1.8.1", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-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.8.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", - "type": "tidelift" - } - ], - "time": "2021-12-04T23:24:31+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.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.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": "http://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/tree/master" - }, - "time": "2020-06-29T06:28:15+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.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": "http://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/master" - }, - "time": "2019-04-30T12:38:16+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.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": "http://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/master" - }, - "time": "2016-08-06T14:39: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.1", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "570292577277f06f590635381a7f761a6cf4f026" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/570292577277f06f590635381a7f761a6cf4f026", - "reference": "570292577277f06f590635381a7f761a6cf4f026", - "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" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "3.17.05.02" - }, - "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.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." - }, - "bin": [ - "bin/psysh" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "0.11.x-dev" - } - }, - "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.1" - }, - "time": "2022-01-03T13:58:38+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": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/ramsey/collection.git", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "shasum": "" - }, - "require": { - "php": "^7.3 || ^8", - "symfony/polyfill-php81": "^1.23" - }, - "require-dev": { - "captainhook/captainhook": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "ergebnis/composer-normalize": "^2.6", - "fakerphp/faker": "^1.5", - "hamcrest/hamcrest-php": "^2", - "jangregor/phpstan-prophecy": "^0.8", - "mockery/mockery": "^1.3", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1", - "phpstan/phpstan": "^0.12.32", - "phpstan/phpstan-mockery": "^0.12.5", - "phpstan/phpstan-phpunit": "^0.12.11", - "phpunit/phpunit": "^8.5 || ^9", - "psy/psysh": "^0.10.4", - "slevomat/coding-standard": "^6.3", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.4" - }, - "type": "library", - "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/1.2.2" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "time": "2021-10-10T03:01:02+00:00" - }, - { - "name": "ramsey/uuid", - "version": "4.2.3", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "shasum": "" - }, - "require": { - "brick/math": "^0.8 || ^0.9", - "ext-json": "*", - "php": "^7.2 || ^8.0", - "ramsey/collection": "^1.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php80": "^1.14" - }, - "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", - "moontoast/math": "^1.1", - "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.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-mockery": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^8.5 || ^9", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" - }, - "suggest": { - "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-ctype": "Enables faster processing of character classification using ctype functions.", - "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": { - "branch-alias": { - "dev-main": "4.x-dev" - }, - "captainhook": { - "force-install": true - } - }, - "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "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.2.3" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2021-09-25T23:10:38+00:00" - }, - { - "name": "symfony/console", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/22e8efd019c3270c4f79376234a3f8752cd25490", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.4|^6.0" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/css-selector", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/1955d595c12c111629cc814d3f2a2ff13580508a", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a", - "shasum": "" - }, - "require": { - "php": ">=8.0.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/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-11-01T23:48:49+00:00" - }, - { - "name": "symfony/error-handler", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/20343b3bad7ebafa38138ddcb97290a24722b57b", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" - }, - "bin": [ - "Resources/bin/patch-type-declarations" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to manage errors and ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6472ea2dd415e925b90ca82be64b8bc6157f3934", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/event-dispatcher-contracts": "^2|^3" - }, - "conflict": { - "symfony/dependency-injection": "<5.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^5.4|^6.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/aa5422287b75594b90ee9cd807caf8f0df491385", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/event-dispatcher": "^1" - }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-07-15T12:33:35+00:00" - }, - { - "name": "symfony/finder", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/8661b74dbabc23223f38c9b99d3f8ade71170430", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ad157299ced81a637fade1efcadd688d6deba5c1", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1" - }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/cache": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0" - }, - "suggest": { - "symfony/mime": "To use the file extension guesser" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v6.0.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/error-handler": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", - "symfony/twig-bridge": "<5.4", - "symfony/validator": "<5.4", - "twig/twig": "<2.13" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/process": "^5.4|^6.0", - "symfony/routing": "^5.4|^6.0", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-29T18:12:46+00:00" - }, - { - "name": "symfony/mailer", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mailer.git", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "shasum": "" - }, - "require": { - "egulias/email-validator": "^2.1.10|^3", - "php": ">=8.0.2", - "psr/event-dispatcher": "^1", - "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3" - }, - "conflict": { - "symfony/http-kernel": "<5.4" - }, - "require-dev": { - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/messenger": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/mime", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/2cd9601efd040e56f43360daa68f3c6b0534923a", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "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" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "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.24.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": "2021-10-20T20:35:02+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-11-23T21:10:46+00:00" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44", - "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.23-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.24.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": "2021-09-14T14:02:44+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.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": "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.24.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": "2021-11-30T18:21:41+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-05-27T09:17:38+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:33+00:00" - }, - { - "name": "symfony/polyfill-php81", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:11+00:00" - }, - { - "name": "symfony/process", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/298ed357274c1868c20a0061df256a1250a6c4af", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/routing", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/yaml": "<5.4" - }, - "require-dev": { - "doctrine/annotations": "^1.12", - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/36715ebf9fb9db73db0cb24263c79077c6fe8603", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/container": "^2.0" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "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.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": "2021-11-04T17:53:12+00:00" - }, - { - "name": "symfony/string", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/522144f0c4c004c80d56fa47e40e17028e2eefc2", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.0" - }, - "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/translation-contracts": "^2.0|^3.0", - "symfony/var-exporter": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "files": [ - "Resources/functions.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 an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/translation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/71bb15335798f8c4da110911bcf2d2fead7a430d", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.3|^3.0" - }, - "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" - }, - "provide": { - "symfony/translation-implementation": "2.3|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-07T00:29:03+00:00" - }, - { - "name": "symfony/translation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "suggest": { - "symfony/translation-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - } - }, - "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.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": "2021-09-07T12:43:40+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7b701676fc64f9ef11f9b4870f16b48f66be4834", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<5.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-17T16:30:44+00:00" - }, - { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.4", - "source": { - "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" - } - ], - "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", - "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "support": { - "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" - }, - "time": "2021-12-08T09:12:39+00:00" - }, - { - "name": "vlucas/phpdotenv", - "version": "v5.4.1", - "source": { - "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", - "shasum": "" - }, - "require": { - "ext-pcre": "*", - "graham-campbell/result-type": "^1.0.2", - "php": "^7.1.3 || ^8.0", - "phpoption/phpoption": "^1.8", - "symfony/polyfill-ctype": "^1.23", - "symfony/polyfill-mbstring": "^1.23.1", - "symfony/polyfill-php80": "^1.23.1" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" - }, - "suggest": { - "ext-filter": "Required to use the boolean validator." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.4-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.4.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", - "type": "tidelift" - } - ], - "time": "2021-12-12T23:22:04+00:00" - }, - { - "name": "voku/portable-ascii", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/voku/portable-ascii.git", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/9bd89e83cecdf8c37b64909454249eaed98b2c89", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89", - "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.0" - }, - "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-01-24T18:59:03+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "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.10.0" - }, - "time": "2021-03-09T10:59:23+00:00" - } - ], - "packages-dev": [ - { - "name": "doctrine/instantiator", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.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%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2020-11-10T18:47:58+00:00" - }, - { - "name": "facade/ignition-contracts", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/facade/ignition-contracts.git", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^v2.15.8", - "phpunit/phpunit": "^9.3.11", - "vimeo/psalm": "^3.17.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Facade\\IgnitionContracts\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://flareapp.io", - "role": "Developer" - } - ], - "description": "Solution contracts for Ignition", - "homepage": "https://github.com/facade/ignition-contracts", - "keywords": [ - "contracts", - "flare", - "ignition" - ], - "support": { - "issues": "https://github.com/facade/ignition-contracts/issues", - "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" - }, - "time": "2020-10-16T08:27:54+00:00" - }, - { - "name": "fakerphp/faker", - "version": "v1.19.0", - "source": { - "type": "git", - "url": "https://github.com/FakerPHP/Faker.git", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^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": "*", - "symfony/phpunit-bridge": "^4.4 || ^5.2" - }, - "suggest": { - "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", - "ext-curl": "Required by Faker\\Provider\\Image to download images.", - "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", - "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.19-dev" - } - }, - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "François Zaninotto" - } - ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], - "support": { - "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0" - }, - "time": "2022-02-02T17:38:57+00:00" - }, - { - "name": "filp/whoops", - "version": "2.14.5", - "source": { - "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "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.14.5" - }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "time": "2022-01-07T12:00:00+00:00" - }, - { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "shasum": "" - }, - "require": { - "php": "^5.3|^7.0|^8.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" - }, - "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "classmap": [ - "hamcrest" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "This is the PHP port of Hamcrest Matchers", - "keywords": [ - "test" - ], - "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" - }, - "time": "2020-07-09T08:09:16+00:00" - }, - { - "name": "laravel/sail", - "version": "v1.13.2", - "source": { - "type": "git", - "url": "https://github.com/laravel/sail.git", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.0|^9.0", - "illuminate/contracts": "^8.0|^9.0", - "illuminate/support": "^8.0|^9.0", - "php": "^7.3|^8.0" - }, - "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": "2022-02-08T14:14:12+00:00" - }, - { - "name": "mockery/mockery", - "version": "1.5.0", - "source": { - "type": "git", - "url": "https://github.com/mockery/mockery.git", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "shasum": "" - }, - "require": { - "hamcrest/hamcrest-php": "^2.0.1", - "lib-pcre": ">=7.0", - "php": "^7.3 || ^8.0" - }, - "conflict": { - "phpunit/phpunit": "<8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-0": { - "Mockery": "library/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" - } - ], - "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": { - "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.5.0" - }, - "time": "2022-01-20T13:18:17+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.10.2", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "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.10.2" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2020-11-13T09:40:50+00:00" - }, - { - "name": "nunomaduro/collision", - "version": "v6.1.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/collision.git", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "shasum": "" - }, - "require": { - "facade/ignition-contracts": "^1.0.2", - "filp/whoops": "^2.14.5", - "php": "^8.0.0", - "symfony/console": "^6.0.2" - }, - "require-dev": { - "brianium/paratest": "^6.4.1", - "laravel/framework": "^9.0", - "nunomaduro/larastan": "^1.0.2", - "nunomaduro/mock-final-classes": "^1.1.0", - "orchestra/testbench": "^7.0.0", - "phpunit/phpunit": "^9.5.11" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "6.x-dev" - }, - "laravel": { - "providers": [ - "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" - ] - } - }, - "autoload": { - "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": "2022-01-18T17:49:08+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.1.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/15a90844ad40f127afd244c0cad228de2a80052a", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a", - "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.1.1" - }, - "time": "2022-02-07T21:56:48+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.6.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "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.6.0" - }, - "time": "2022-01-04T19:58:01+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" - }, - "time": "2021-12-08T12:19:24+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "9.2.10", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d5850aaf931743067f4bfc1ae4cbd06468400687", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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 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", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.10" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-05T09:12:13+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "3.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-02T12:48:52+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "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/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:58:55+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T05:33:50+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.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/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:16:10+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "9.5.13", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/597cb647654ede35e43b137926dfdfef0fb11743", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.3.1", - "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": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.7", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", - "sebastian/version": "^3.0.2" - }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.13" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-01-24T07:33:35+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:08:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "1.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:08:54+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:30:19+00:00" - }, - { - "name": "sebastian/comparator", - "version": "4.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:49:45+00:00" - }, - { - "name": "sebastian/complexity", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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 calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:52:27+00:00" - }, - { - "name": "sebastian/diff", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:10:38+00:00" - }, - { - "name": "sebastian/environment", - "version": "5.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-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": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:52:38+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "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", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-11-11T14:18:36+00:00" - }, - { - "name": "sebastian/global-state", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-11T13:31:12+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-28T06:42:11+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "http://www.github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:17:30+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:45:17+00:00" - }, - { - "name": "sebastian/type", - "version": "2.3.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-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/2.3.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-15T12:49:02+00:00" - }, - { - "name": "sebastian/version", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:39:44+00:00" - }, - { - "name": "spatie/backtrace", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/backtrace.git", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "ext-json": "*", - "phpunit/phpunit": "^9.3", - "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": { - "issues": "https://github.com/spatie/backtrace/issues", - "source": "https://github.com/spatie/backtrace/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/sponsors/spatie", - "type": "github" - }, - { - "url": "https://spatie.be/open-source/support-us", - "type": "other" - } - ], - "time": "2021-11-09T10:57:15+00:00" - }, - { - "name": "spatie/flare-client-php", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/flare-client-php.git", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "shasum": "" - }, - "require": { - "illuminate/pipeline": "^8.0|^9.0", - "php": "^8.0", - "spatie/backtrace": "^1.2", - "symfony/http-foundation": "^5.0|^6.0", - "symfony/mime": "^5.2|^6.0", - "symfony/process": "^5.2|^6.0", - "symfony/var-dumper": "^5.2|^6.0" - }, - "require-dev": { - "dms/phpunit-arraysubset-asserts": "^0.3.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/phpunit-snapshot-assertions": "^4.0" - }, - "type": "library", - "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.0.1" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2022-02-04T15:21:00+00:00" - }, - { - "name": "spatie/ignition", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/spatie/ignition.git", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/d2d5ba823af3004268556e87dfc94449e4159f5a", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "monolog/monolog": "^2.0", - "php": "^8.0", - "spatie/flare-client-php": "^1.0", - "symfony/console": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "mockery/mockery": "^1.4", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/ray": "^1.32", - "symfony/process": "^5.4|^6.0" - }, - "type": "library", - "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": "2022-01-19T12:57:41+00:00" - }, - { - "name": "spatie/laravel-ignition", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/68250225a9f83b086462c2af1b1139dfde48fbd2", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*", - "illuminate/support": "^8.77|^9.0", - "monolog/monolog": "^2.3", - "php": "^8.0", - "spatie/flare-client-php": "^1.0.1", - "spatie/ignition": "^1.0", - "symfony/console": "^5.0|^6.0", - "symfony/var-dumper": "^5.0|^6.0" - }, - "require-dev": { - "filp/whoops": "^2.14", - "livewire/livewire": "^2.8|dev-develop", - "mockery/mockery": "^1.4", - "nunomaduro/larastan": "^1.0", - "orchestra/testbench": "^6.23|^7.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/laravel-ray": "^1.27" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Spatie\\LaravelIgnition\\IgnitionServiceProvider" - ], - "aliases": { - "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" - } - } - }, - "autoload": { - "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": "2022-02-04T15:25:56+00:00" - }, - { - "name": "squizlabs/php_codesniffer", - "version": "3.6.2", - "source": { - "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", - "shasum": "" - }, - "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.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": "lead" - } - ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", - "keywords": [ - "phpcs", - "standards" - ], - "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" - }, - "time": "2021-12-12T21:44:58+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2021-07-28T10:34:58+00:00" - } - ], - "aliases": [], - "minimum-stability": "dev", - "stability-flags": [], - "prefer-stable": true, - "prefer-lowest": false, - "platform": { - "php": "^8.0" - }, - "platform-dev": [], - "plugin-api-version": "2.1.0" -} diff --git a/Chapter08/onlineStore/config/app.php b/Chapter08/onlineStore/config/app.php deleted file mode 100644 index 1941d7c..0000000 --- a/Chapter08/onlineStore/config/app.php +++ /dev/null @@ -1,197 +0,0 @@ - env('APP_NAME', 'Laravel'), - - /* - |-------------------------------------------------------------------------- - | Application Environment - |-------------------------------------------------------------------------- - | - | This value determines the "environment" your application is currently - | running in. This may determine how you prefer to configure various - | services the application utilizes. Set this in your ".env" file. - | - */ - - 'env' => env('APP_ENV', 'production'), - - /* - |-------------------------------------------------------------------------- - | Application Debug Mode - |-------------------------------------------------------------------------- - | - | When your application is in debug mode, detailed error messages with - | stack traces will be shown on every error that occurs within your - | application. If disabled, a simple generic error page is shown. - | - */ - - 'debug' => (bool) env('APP_DEBUG', false), - - /* - |-------------------------------------------------------------------------- - | Application URL - |-------------------------------------------------------------------------- - | - | This URL is used by the console to properly generate URLs when using - | the Artisan command line tool. You should set this to the root of - | your application so that it is used when running Artisan tasks. - | - */ - - 'url' => env('APP_URL', 'http://localhost'), - - 'asset_url' => env('ASSET_URL', null), - - /* - |-------------------------------------------------------------------------- - | 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', - - /* - |-------------------------------------------------------------------------- - | 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' => [ - - /* - * Laravel Framework Service Providers... - */ - Illuminate\Auth\AuthServiceProvider::class, - Illuminate\Broadcasting\BroadcastServiceProvider::class, - Illuminate\Bus\BusServiceProvider::class, - Illuminate\Cache\CacheServiceProvider::class, - Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, - Illuminate\Cookie\CookieServiceProvider::class, - Illuminate\Database\DatabaseServiceProvider::class, - Illuminate\Encryption\EncryptionServiceProvider::class, - Illuminate\Filesystem\FilesystemServiceProvider::class, - Illuminate\Foundation\Providers\FoundationServiceProvider::class, - Illuminate\Hashing\HashServiceProvider::class, - Illuminate\Mail\MailServiceProvider::class, - Illuminate\Notifications\NotificationServiceProvider::class, - Illuminate\Pagination\PaginationServiceProvider::class, - Illuminate\Pipeline\PipelineServiceProvider::class, - Illuminate\Queue\QueueServiceProvider::class, - Illuminate\Redis\RedisServiceProvider::class, - Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, - Illuminate\Session\SessionServiceProvider::class, - Illuminate\Translation\TranslationServiceProvider::class, - Illuminate\Validation\ValidationServiceProvider::class, - Illuminate\View\ViewServiceProvider::class, - - /* - * 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, - - ], - - /* - |-------------------------------------------------------------------------- - | 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([ - // ... - ])->toArray(), - -]; diff --git a/Chapter08/onlineStore/config/auth.php b/Chapter08/onlineStore/config/auth.php deleted file mode 100644 index d8c6cee..0000000 --- a/Chapter08/onlineStore/config/auth.php +++ /dev/null @@ -1,111 +0,0 @@ - [ - '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 expire 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. - | - */ - - 'passwords' => [ - 'users' => [ - 'provider' => 'users', - 'table' => 'password_resets', - '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/Chapter08/onlineStore/config/broadcasting.php b/Chapter08/onlineStore/config/broadcasting.php deleted file mode 100644 index 67fcbbd..0000000 --- a/Chapter08/onlineStore/config/broadcasting.php +++ /dev/null @@ -1,67 +0,0 @@ - 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'), - 'useTLS' => true, - ], - '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/Chapter08/onlineStore/config/cache.php b/Chapter08/onlineStore/config/cache.php deleted file mode 100644 index 8736c7a..0000000 --- a/Chapter08/onlineStore/config/cache.php +++ /dev/null @@ -1,110 +0,0 @@ - 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'), - ], - - '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 a RAM based store such as APC or Memcached, there might - | be other applications utilizing the same cache. So, we'll specify a - | value to get prefixed to all our keys so we can avoid collisions. - | - */ - - 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'), - -]; diff --git a/Chapter08/onlineStore/config/cors.php b/Chapter08/onlineStore/config/cors.php deleted file mode 100644 index 8a39e6d..0000000 --- a/Chapter08/onlineStore/config/cors.php +++ /dev/null @@ -1,34 +0,0 @@ - ['api/*', 'sanctum/csrf-cookie'], - - 'allowed_methods' => ['*'], - - 'allowed_origins' => ['*'], - - 'allowed_origins_patterns' => [], - - 'allowed_headers' => ['*'], - - 'exposed_headers' => [], - - 'max_age' => 0, - - 'supports_credentials' => false, - -]; diff --git a/Chapter08/onlineStore/config/database.php b/Chapter08/onlineStore/config/database.php deleted file mode 100644 index 0faebae..0000000 --- a/Chapter08/onlineStore/config/database.php +++ /dev/null @@ -1,147 +0,0 @@ - env('DB_CONNECTION', 'mysql'), - - /* - |-------------------------------------------------------------------------- - | Database Connections - |-------------------------------------------------------------------------- - | - | Here are each of the database connections setup for your application. - | Of course, examples of configuring each database platform that is - | supported by Laravel is shown below to make development simple. - | - | - | All database work in Laravel is done through the PHP PDO facilities - | so make sure you have the driver for your particular database of - | choice installed on your machine before you begin development. - | - */ - - 'connections' => [ - - 'sqlite' => [ - 'driver' => 'sqlite', - 'url' => env('DATABASE_URL'), - 'database' => env('DB_DATABASE', database_path('database.sqlite')), - 'prefix' => '', - 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), - ], - - 'mysql' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '3306'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'unix_socket' => env('DB_SOCKET', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - 'pgsql' => [ - 'driver' => 'pgsql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '5432'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - 'search_path' => 'public', - 'sslmode' => 'prefer', - ], - - 'sqlsrv' => [ - 'driver' => 'sqlsrv', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', 'localhost'), - 'port' => env('DB_PORT', '1433'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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'), - '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'), - 'password' => env('REDIS_PASSWORD'), - 'port' => env('REDIS_PORT', '6379'), - 'database' => env('REDIS_CACHE_DB', '1'), - ], - - ], - -]; diff --git a/Chapter08/onlineStore/config/filesystems.php b/Chapter08/onlineStore/config/filesystems.php deleted file mode 100644 index cf5abce..0000000 --- a/Chapter08/onlineStore/config/filesystems.php +++ /dev/null @@ -1,73 +0,0 @@ - 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 setup for each driver as an example of the required options. - | - | Supported Drivers: "local", "ftp", "sftp", "s3" - | - */ - - 'disks' => [ - - 'local' => [ - 'driver' => 'local', - 'root' => storage_path('app'), - ], - - 'public' => [ - 'driver' => 'local', - 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', - 'visibility' => 'public', - ], - - '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), - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter08/onlineStore/config/hashing.php b/Chapter08/onlineStore/config/hashing.php deleted file mode 100644 index bcd3be4..0000000 --- a/Chapter08/onlineStore/config/hashing.php +++ /dev/null @@ -1,52 +0,0 @@ - '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/Chapter08/onlineStore/config/logging.php b/Chapter08/onlineStore/config/logging.php deleted file mode 100644 index fefe088..0000000 --- a/Chapter08/onlineStore/config/logging.php +++ /dev/null @@ -1,119 +0,0 @@ - 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' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), - - /* - |-------------------------------------------------------------------------- - | 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'), - ], - - 'daily' => [ - 'driver' => 'daily', - 'path' => storage_path('logs/laravel.log'), - 'level' => env('LOG_LEVEL', 'debug'), - 'days' => 14, - ], - - 'slack' => [ - 'driver' => 'slack', - 'url' => env('LOG_SLACK_WEBHOOK_URL'), - 'username' => 'Laravel Log', - 'emoji' => ':boom:', - 'level' => env('LOG_LEVEL', 'critical'), - ], - - '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'), - ], - ], - - 'stderr' => [ - 'driver' => 'monolog', - 'level' => env('LOG_LEVEL', 'debug'), - 'handler' => StreamHandler::class, - 'formatter' => env('LOG_STDERR_FORMATTER'), - 'with' => [ - 'stream' => 'php://stderr', - ], - ], - - 'syslog' => [ - 'driver' => 'syslog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'errorlog' => [ - 'driver' => 'errorlog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'null' => [ - 'driver' => 'monolog', - 'handler' => NullHandler::class, - ], - - 'emergency' => [ - 'path' => storage_path('logs/laravel.log'), - ], - ], - -]; diff --git a/Chapter08/onlineStore/config/mail.php b/Chapter08/onlineStore/config/mail.php deleted file mode 100644 index 87b6fe3..0000000 --- a/Chapter08/onlineStore/config/mail.php +++ /dev/null @@ -1,117 +0,0 @@ - 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", - | "postmark", "log", "array", "failover" - | - */ - - 'mailers' => [ - 'smtp' => [ - 'transport' => 'smtp', - '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, - ], - - 'ses' => [ - 'transport' => 'ses', - ], - - 'mailgun' => [ - 'transport' => 'mailgun', - ], - - 'postmark' => [ - 'transport' => 'postmark', - ], - - 'sendmail' => [ - 'transport' => 'sendmail', - 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -t -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/Chapter08/onlineStore/config/queue.php b/Chapter08/onlineStore/config/queue.php deleted file mode 100644 index 25ea5a8..0000000 --- a/Chapter08/onlineStore/config/queue.php +++ /dev/null @@ -1,93 +0,0 @@ - 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, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter08/onlineStore/config/sanctum.php b/Chapter08/onlineStore/config/sanctum.php deleted file mode 100644 index 9281c92..0000000 --- a/Chapter08/onlineStore/config/sanctum.php +++ /dev/null @@ -1,65 +0,0 @@ - explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( - '%s%s', - 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', - env('APP_URL') ? ','.parse_url(env('APP_URL'), PHP_URL_HOST) : '' - ))), - - /* - |-------------------------------------------------------------------------- - | 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/Chapter08/onlineStore/config/services.php b/Chapter08/onlineStore/config/services.php deleted file mode 100644 index 2a1d616..0000000 --- a/Chapter08/onlineStore/config/services.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - 'domain' => env('MAILGUN_DOMAIN'), - 'secret' => env('MAILGUN_SECRET'), - 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), - ], - - '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/Chapter08/onlineStore/config/session.php b/Chapter08/onlineStore/config/session.php deleted file mode 100644 index 8fed97c..0000000 --- a/Chapter08/onlineStore/config/session.php +++ /dev/null @@ -1,201 +0,0 @@ - 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/Chapter08/onlineStore/config/view.php b/Chapter08/onlineStore/config/view.php deleted file mode 100644 index 22b8a18..0000000 --- a/Chapter08/onlineStore/config/view.php +++ /dev/null @@ -1,36 +0,0 @@ - [ - 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/Chapter08/onlineStore/database/.gitignore b/Chapter08/onlineStore/database/.gitignore deleted file mode 100644 index 9b19b93..0000000 --- a/Chapter08/onlineStore/database/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.sqlite* diff --git a/Chapter08/onlineStore/database/factories/UserFactory.php b/Chapter08/onlineStore/database/factories/UserFactory.php deleted file mode 100644 index d6ca926..0000000 --- a/Chapter08/onlineStore/database/factories/UserFactory.php +++ /dev/null @@ -1,42 +0,0 @@ - - */ -class UserFactory extends Factory -{ - /** - * Define the model's default state. - * - * @return array - */ - public function definition() - { - return [ - 'name' => $this->faker->name(), - 'email' => $this->faker->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. - * - * @return \Illuminate\Database\Eloquent\Factories\Factory - */ - public function unverified() - { - return $this->state(function (array $attributes) { - return [ - 'email_verified_at' => null, - ]; - }); - } -} diff --git a/Chapter08/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php b/Chapter08/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php deleted file mode 100644 index cf6b776..0000000 --- a/Chapter08/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->string('name'); - $table->string('email')->unique(); - $table->timestamp('email_verified_at')->nullable(); - $table->string('password'); - $table->rememberToken(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('users'); - } -}; diff --git a/Chapter08/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php b/Chapter08/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php deleted file mode 100644 index fcacb80..0000000 --- a/Chapter08/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php +++ /dev/null @@ -1,32 +0,0 @@ -string('email')->index(); - $table->string('token'); - $table->timestamp('created_at')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('password_resets'); - } -}; diff --git a/Chapter08/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/Chapter08/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php deleted file mode 100644 index 1719198..0000000 --- a/Chapter08/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php +++ /dev/null @@ -1,36 +0,0 @@ -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. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('failed_jobs'); - } -}; diff --git a/Chapter08/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/Chapter08/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php deleted file mode 100644 index fd235f8..0000000 --- a/Chapter08/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->morphs('tokenable'); - $table->string('name'); - $table->string('token', 64)->unique(); - $table->text('abilities')->nullable(); - $table->timestamp('last_used_at')->nullable(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('personal_access_tokens'); - } -}; diff --git a/Chapter08/onlineStore/database/seeders/DatabaseSeeder.php b/Chapter08/onlineStore/database/seeders/DatabaseSeeder.php deleted file mode 100644 index 71f673f..0000000 --- a/Chapter08/onlineStore/database/seeders/DatabaseSeeder.php +++ /dev/null @@ -1,19 +0,0 @@ -create(); - } -} diff --git a/Chapter08/onlineStore/lang/en.json b/Chapter08/onlineStore/lang/en.json deleted file mode 100644 index 577680d..0000000 --- a/Chapter08/onlineStore/lang/en.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "The :attribute must contain at least one letter.": "The :attribute must contain at least one letter.", - "The :attribute must contain at least one number.": "The :attribute must contain at least one number.", - "The :attribute must contain at least one symbol.": "The :attribute must contain at least one symbol.", - "The :attribute must contain at least one uppercase and one lowercase letter.": "The :attribute must contain at least one uppercase and one lowercase letter.", - "The given :attribute has appeared in a data leak. Please choose a different :attribute.": "The given :attribute has appeared in a data leak. Please choose a different :attribute." -} diff --git a/Chapter08/onlineStore/lang/en/auth.php b/Chapter08/onlineStore/lang/en/auth.php deleted file mode 100644 index 6598e2c..0000000 --- a/Chapter08/onlineStore/lang/en/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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/Chapter08/onlineStore/lang/en/pagination.php b/Chapter08/onlineStore/lang/en/pagination.php deleted file mode 100644 index d481411..0000000 --- a/Chapter08/onlineStore/lang/en/pagination.php +++ /dev/null @@ -1,19 +0,0 @@ - '« Previous', - 'next' => 'Next »', - -]; diff --git a/Chapter08/onlineStore/lang/en/passwords.php b/Chapter08/onlineStore/lang/en/passwords.php deleted file mode 100644 index 2345a56..0000000 --- a/Chapter08/onlineStore/lang/en/passwords.php +++ /dev/null @@ -1,22 +0,0 @@ - '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/Chapter08/onlineStore/lang/en/validation.php b/Chapter08/onlineStore/lang/en/validation.php deleted file mode 100644 index 783003c..0000000 --- a/Chapter08/onlineStore/lang/en/validation.php +++ /dev/null @@ -1,163 +0,0 @@ - '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' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - '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' => [ - 'numeric' => 'The :attribute must be greater than :value.', - 'file' => 'The :attribute must be greater than :value kilobytes.', - 'string' => 'The :attribute must be greater than :value characters.', - 'array' => 'The :attribute must have more than :value items.', - ], - 'gte' => [ - 'numeric' => 'The :attribute must be greater than or equal to :value.', - 'file' => 'The :attribute must be greater than or equal to :value kilobytes.', - 'string' => 'The :attribute must be greater than or equal to :value characters.', - 'array' => 'The :attribute must have :value items or more.', - ], - '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' => [ - 'numeric' => 'The :attribute must be less than :value.', - 'file' => 'The :attribute must be less than :value kilobytes.', - 'string' => 'The :attribute must be less than :value characters.', - 'array' => 'The :attribute must have less than :value items.', - ], - 'lte' => [ - 'numeric' => 'The :attribute must be less than or equal to :value.', - 'file' => 'The :attribute must be less than or equal to :value kilobytes.', - 'string' => 'The :attribute must be less than or equal to :value characters.', - 'array' => 'The :attribute must not have more than :value items.', - ], - 'mac_address' => 'The :attribute must be a valid MAC address.', - 'max' => [ - 'numeric' => 'The :attribute must not be greater than :max.', - 'file' => 'The :attribute must not be greater than :max kilobytes.', - 'string' => 'The :attribute must not be greater than :max characters.', - 'array' => 'The :attribute must not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - '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.', - 'password' => 'The password is incorrect.', - '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' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - '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/Chapter08/onlineStore/package.json b/Chapter08/onlineStore/package.json deleted file mode 100644 index 7a9aecd..0000000 --- a/Chapter08/onlineStore/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "private": true, - "scripts": { - "dev": "npm run development", - "development": "mix", - "watch": "mix watch", - "watch-poll": "mix watch -- --watch-options-poll=1000", - "hot": "mix watch --hot", - "prod": "npm run production", - "production": "mix --production" - }, - "devDependencies": { - "axios": "^0.25", - "laravel-mix": "^6.0.6", - "lodash": "^4.17.19", - "postcss": "^8.1.14" - } -} diff --git a/Chapter08/onlineStore/phpcs.xml b/Chapter08/onlineStore/phpcs.xml deleted file mode 100644 index a1cf2b6..0000000 --- a/Chapter08/onlineStore/phpcs.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - The coding standard for the Online Store project - - app/ - config/ - database/ - routes/ - */migrations/* - diff --git a/Chapter08/onlineStore/phpunit.xml b/Chapter08/onlineStore/phpunit.xml deleted file mode 100644 index 2ac86a1..0000000 --- a/Chapter08/onlineStore/phpunit.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - ./tests/Unit - - - ./tests/Feature - - - - - ./app - - - - - - - - - - - - - - diff --git a/Chapter08/onlineStore/public/.htaccess b/Chapter08/onlineStore/public/.htaccess deleted file mode 100644 index 3aec5e2..0000000 --- a/Chapter08/onlineStore/public/.htaccess +++ /dev/null @@ -1,21 +0,0 @@ - - - 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/Chapter08/onlineStore/public/css/app.css b/Chapter08/onlineStore/public/css/app.css deleted file mode 100644 index cabac36..0000000 --- a/Chapter08/onlineStore/public/css/app.css +++ /dev/null @@ -1,20 +0,0 @@ -.bg-secondary { - background-color: #2c3e50 !important; -} - -.copyright { - background-color: #1a252f; -} - -.bg-primary { - background-color: #1abc9c !important; -} - -nav{ - font-weight: 700; -} - -.img-card{ - height: 18vw; - object-fit: cover; -} diff --git a/Chapter08/onlineStore/public/favicon.ico b/Chapter08/onlineStore/public/favicon.ico deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter08/onlineStore/public/img/game.png b/Chapter08/onlineStore/public/img/game.png deleted file mode 100644 index 85420e8bbc16098bf26b4ee63bde0e91a19d1f2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25896 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 cz>% diff --git a/Chapter08/onlineStore/public/img/safe.png b/Chapter08/onlineStore/public/img/safe.png deleted file mode 100644 index 445942c707af53210931f9f4f99f6d3cb69e5d89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19240 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
w==XB0?3|p=#`o%NsudE(E-U#KS3Snw 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 o>ir+C;RN10sIS0&a;pmake(Kernel::class); - -$response = $kernel->handle( - $request = Request::capture() -)->send(); - -$kernel->terminate($request, $response); diff --git a/Chapter08/onlineStore/public/robots.txt b/Chapter08/onlineStore/public/robots.txt deleted file mode 100644 index eb05362..0000000 --- a/Chapter08/onlineStore/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: diff --git a/Chapter08/onlineStore/resources/css/app.css b/Chapter08/onlineStore/resources/css/app.css deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter08/onlineStore/resources/js/app.js b/Chapter08/onlineStore/resources/js/app.js deleted file mode 100644 index 40c55f6..0000000 --- a/Chapter08/onlineStore/resources/js/app.js +++ /dev/null @@ -1 +0,0 @@ -require('./bootstrap'); diff --git a/Chapter08/onlineStore/resources/js/bootstrap.js b/Chapter08/onlineStore/resources/js/bootstrap.js deleted file mode 100644 index 6922577..0000000 --- a/Chapter08/onlineStore/resources/js/bootstrap.js +++ /dev/null @@ -1,28 +0,0 @@ -window._ = require('lodash'); - -/** - * 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 = require('axios'); - -window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; - -/** - * 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'; - -// window.Pusher = require('pusher-js'); - -// window.Echo = new Echo({ -// broadcaster: 'pusher', -// key: process.env.MIX_PUSHER_APP_KEY, -// cluster: process.env.MIX_PUSHER_APP_CLUSTER, -// forceTLS: true -// }); diff --git a/Chapter08/onlineStore/resources/views/home/about.blade.php b/Chapter08/onlineStore/resources/views/home/about.blade.php deleted file mode 100644 index f79abf3..0000000 --- a/Chapter08/onlineStore/resources/views/home/about.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
-
-
-

{{ $viewData["description"] }}

-
-
-

{{ $viewData["author"] }}

-
-
-
-@endsection diff --git a/Chapter08/onlineStore/resources/views/home/index.blade.php b/Chapter08/onlineStore/resources/views/home/index.blade.php deleted file mode 100644 index 1affb20..0000000 --- a/Chapter08/onlineStore/resources/views/home/index.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('content') -
-
- -
-
- -
-
- -
-
-@endsection diff --git a/Chapter08/onlineStore/resources/views/layouts/app.blade.php b/Chapter08/onlineStore/resources/views/layouts/app.blade.php deleted file mode 100644 index cb97098..0000000 --- a/Chapter08/onlineStore/resources/views/layouts/app.blade.php +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - @yield('title', 'Online Store') - - - -
- -
-
-

@yield('subtitle', 'A Laravel Online Store')

-
-
- - -
- @yield('content') -
- - - - - - - diff --git a/Chapter08/onlineStore/resources/views/welcome.blade.php b/Chapter08/onlineStore/resources/views/welcome.blade.php deleted file mode 100644 index c587c72..0000000 --- a/Chapter08/onlineStore/resources/views/welcome.blade.php +++ /dev/null @@ -1,7 +0,0 @@ -@extends('layouts.app') -@section('title', 'Home Page - Online Store') -@section('content') -
- Welcome to the application -
-@endsection \ No newline at end of file diff --git a/Chapter08/onlineStore/routes/api.php b/Chapter08/onlineStore/routes/api.php deleted file mode 100644 index eb6fa48..0000000 --- a/Chapter08/onlineStore/routes/api.php +++ /dev/null @@ -1,19 +0,0 @@ -get('/user', function (Request $request) { - return $request->user(); -}); diff --git a/Chapter08/onlineStore/routes/channels.php b/Chapter08/onlineStore/routes/channels.php deleted file mode 100644 index 5d451e1..0000000 --- a/Chapter08/onlineStore/routes/channels.php +++ /dev/null @@ -1,18 +0,0 @@ -id === (int) $id; -}); diff --git a/Chapter08/onlineStore/routes/console.php b/Chapter08/onlineStore/routes/console.php deleted file mode 100644 index e05f4c9..0000000 --- a/Chapter08/onlineStore/routes/console.php +++ /dev/null @@ -1,19 +0,0 @@ -comment(Inspiring::quote()); -})->purpose('Display an inspiring quote'); diff --git a/Chapter08/onlineStore/routes/web.php b/Chapter08/onlineStore/routes/web.php deleted file mode 100644 index b1e2ba5..0000000 --- a/Chapter08/onlineStore/routes/web.php +++ /dev/null @@ -1,17 +0,0 @@ -name("home.index"); -Route::get('/about', 'App\Http\Controllers\HomeController@about')->name("home.about"); diff --git a/Chapter08/onlineStore/storage/app/.gitignore b/Chapter08/onlineStore/storage/app/.gitignore deleted file mode 100644 index 8f4803c..0000000 --- a/Chapter08/onlineStore/storage/app/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!public/ -!.gitignore diff --git a/Chapter08/onlineStore/storage/app/public/.gitignore b/Chapter08/onlineStore/storage/app/public/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter08/onlineStore/storage/app/public/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter08/onlineStore/storage/framework/.gitignore b/Chapter08/onlineStore/storage/framework/.gitignore deleted file mode 100644 index 05c4471..0000000 --- a/Chapter08/onlineStore/storage/framework/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -compiled.php -config.php -down -events.scanned.php -maintenance.php -routes.php -routes.scanned.php -schedule-* -services.json diff --git a/Chapter08/onlineStore/storage/framework/cache/.gitignore b/Chapter08/onlineStore/storage/framework/cache/.gitignore deleted file mode 100644 index 01e4a6c..0000000 --- a/Chapter08/onlineStore/storage/framework/cache/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!data/ -!.gitignore diff --git a/Chapter08/onlineStore/storage/framework/cache/data/.gitignore b/Chapter08/onlineStore/storage/framework/cache/data/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter08/onlineStore/storage/framework/cache/data/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter08/onlineStore/storage/framework/sessions/.gitignore b/Chapter08/onlineStore/storage/framework/sessions/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter08/onlineStore/storage/framework/sessions/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter08/onlineStore/storage/framework/testing/.gitignore b/Chapter08/onlineStore/storage/framework/testing/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter08/onlineStore/storage/framework/testing/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter08/onlineStore/storage/framework/views/.gitignore b/Chapter08/onlineStore/storage/framework/views/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter08/onlineStore/storage/framework/views/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter08/onlineStore/storage/logs/.gitignore b/Chapter08/onlineStore/storage/logs/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter08/onlineStore/storage/logs/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter08/onlineStore/tests/CreatesApplication.php b/Chapter08/onlineStore/tests/CreatesApplication.php deleted file mode 100644 index 547152f..0000000 --- a/Chapter08/onlineStore/tests/CreatesApplication.php +++ /dev/null @@ -1,22 +0,0 @@ -make(Kernel::class)->bootstrap(); - - return $app; - } -} diff --git a/Chapter08/onlineStore/tests/Feature/ExampleTest.php b/Chapter08/onlineStore/tests/Feature/ExampleTest.php deleted file mode 100644 index 78ccc21..0000000 --- a/Chapter08/onlineStore/tests/Feature/ExampleTest.php +++ /dev/null @@ -1,21 +0,0 @@ -get('/'); - - $response->assertStatus(200); - } -} diff --git a/Chapter08/onlineStore/tests/TestCase.php b/Chapter08/onlineStore/tests/TestCase.php deleted file mode 100644 index 2932d4a..0000000 --- a/Chapter08/onlineStore/tests/TestCase.php +++ /dev/null @@ -1,10 +0,0 @@ -assertTrue(true); - } -} diff --git a/Chapter08/onlineStore/webpack.mix.js b/Chapter08/onlineStore/webpack.mix.js deleted file mode 100644 index 2a22dc1..0000000 --- a/Chapter08/onlineStore/webpack.mix.js +++ /dev/null @@ -1,17 +0,0 @@ -const mix = require('laravel-mix'); - -/* - |-------------------------------------------------------------------------- - | Mix Asset Management - |-------------------------------------------------------------------------- - | - | Mix provides a clean, fluent API for defining some Webpack build steps - | for your Laravel applications. By default, we are compiling the CSS - | file for the application as well as bundling up all the JS files. - | - */ - -mix.js('resources/js/app.js', 'public/js') - .postCss('resources/css/app.css', 'public/css', [ - // - ]); diff --git a/Chapter09/onlineStore/.editorconfig b/Chapter09/onlineStore/.editorconfig deleted file mode 100644 index 1671c9b..0000000 --- a/Chapter09/onlineStore/.editorconfig +++ /dev/null @@ -1,18 +0,0 @@ -root = true - -[*] -charset = utf-8 -end_of_line = lf -insert_final_newline = true -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true - -[*.md] -trim_trailing_whitespace = false - -[*.{yml,yaml}] -indent_size = 2 - -[docker-compose.yml] -indent_size = 4 diff --git a/Chapter09/onlineStore/.env.example b/Chapter09/onlineStore/.env.example deleted file mode 100644 index 8510237..0000000 --- a/Chapter09/onlineStore/.env.example +++ /dev/null @@ -1,52 +0,0 @@ -APP_NAME=Laravel -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=laravel -DB_USERNAME=root -DB_PASSWORD= - -BROADCAST_DRIVER=log -CACHE_DRIVER=file -FILESYSTEM_DISK=local -QUEUE_CONNECTION=sync -SESSION_DRIVER=file -SESSION_LIFETIME=120 - -MEMCACHED_HOST=127.0.0.1 - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -MAIL_MAILER=smtp -MAIL_HOST=mailhog -MAIL_PORT=1025 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS=null -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_APP_CLUSTER=mt1 - -MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/Chapter09/onlineStore/.gitattributes b/Chapter09/onlineStore/.gitattributes deleted file mode 100644 index 510d996..0000000 --- a/Chapter09/onlineStore/.gitattributes +++ /dev/null @@ -1,10 +0,0 @@ -* text=auto - -*.blade.php diff=html -*.css diff=css -*.html diff=html -*.md diff=markdown -*.php diff=php - -/.github export-ignore -CHANGELOG.md export-ignore diff --git a/Chapter09/onlineStore/.gitignore b/Chapter09/onlineStore/.gitignore deleted file mode 100644 index eb003b0..0000000 --- a/Chapter09/onlineStore/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -/node_modules -/public/hot -/public/storage -/storage/*.key -/vendor -.env -.env.backup -.phpunit.result.cache -docker-compose.override.yml -Homestead.json -Homestead.yaml -npm-debug.log -yarn-error.log -/.idea -/.vscode diff --git a/Chapter09/onlineStore/.styleci.yml b/Chapter09/onlineStore/.styleci.yml deleted file mode 100644 index 679a631..0000000 --- a/Chapter09/onlineStore/.styleci.yml +++ /dev/null @@ -1,13 +0,0 @@ -php: - preset: laravel - version: 8 - disabled: - - no_unused_imports - finder: - not-name: - - index.php -js: - finder: - not-name: - - webpack.mix.js -css: true diff --git a/Chapter09/onlineStore/README.md b/Chapter09/onlineStore/README.md deleted file mode 100644 index f171eca..0000000 --- a/Chapter09/onlineStore/README.md +++ /dev/null @@ -1,64 +0,0 @@ -

- -

-Build Status -Total Downloads -Latest Stable Version -License -

- -## About Laravel - -Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as: - -- [Simple, fast routing engine](https://laravel.com/docs/routing). -- [Powerful dependency injection container](https://laravel.com/docs/container). -- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage. -- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent). -- Database agnostic [schema migrations](https://laravel.com/docs/migrations). -- [Robust background job processing](https://laravel.com/docs/queues). -- [Real-time event broadcasting](https://laravel.com/docs/broadcasting). - -Laravel is accessible, powerful, and provides tools required for large, robust applications. - -## Learning Laravel - -Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework. - -If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 2000 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library. - -## Laravel Sponsors - -We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell). - -### Premium Partners - -- **[Vehikl](https://vehikl.com/)** -- **[Tighten Co.](https://tighten.co)** -- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** -- **[64 Robots](https://64robots.com)** -- **[Cubet Techno Labs](https://cubettech.com)** -- **[Cyber-Duck](https://cyber-duck.co.uk)** -- **[Many](https://www.many.co.uk)** -- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)** -- **[DevSquad](https://devsquad.com)** -- **[Curotec](https://www.curotec.com/services/technologies/laravel/)** -- **[OP.GG](https://op.gg)** -- **[WebReinvent](https://webreinvent.com/?utm_source=laravel&utm_medium=github&utm_campaign=patreon-sponsors)** -- **[Lendio](https://lendio.com)** - -## Contributing - -Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions). - -## Code of Conduct - -In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). - -## Security Vulnerabilities - -If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed. - -## License - -The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). diff --git a/Chapter09/onlineStore/app/Console/Kernel.php b/Chapter09/onlineStore/app/Console/Kernel.php deleted file mode 100644 index d8bc1d2..0000000 --- a/Chapter09/onlineStore/app/Console/Kernel.php +++ /dev/null @@ -1,32 +0,0 @@ -command('inspire')->hourly(); - } - - /** - * Register the commands for the application. - * - * @return void - */ - protected function commands() - { - $this->load(__DIR__.'/Commands'); - - require base_path('routes/console.php'); - } -} diff --git a/Chapter09/onlineStore/app/Exceptions/Handler.php b/Chapter09/onlineStore/app/Exceptions/Handler.php deleted file mode 100644 index 8e7fbd1..0000000 --- a/Chapter09/onlineStore/app/Exceptions/Handler.php +++ /dev/null @@ -1,41 +0,0 @@ -> - */ - protected $dontReport = [ - // - ]; - - /** - * A list of the inputs that are never flashed for validation exceptions. - * - * @var array - */ - protected $dontFlash = [ - 'current_password', - 'password', - 'password_confirmation', - ]; - - /** - * Register the exception handling callbacks for the application. - * - * @return void - */ - public function register() - { - $this->reportable(function (Throwable $e) { - // - }); - } -} diff --git a/Chapter09/onlineStore/app/Http/Controllers/Controller.php b/Chapter09/onlineStore/app/Http/Controllers/Controller.php deleted file mode 100644 index a0a2a8a..0000000 --- a/Chapter09/onlineStore/app/Http/Controllers/Controller.php +++ /dev/null @@ -1,13 +0,0 @@ -with("viewData", $viewData); - } - - public function about() - { - $viewData = []; - $viewData["title"] = "About us - Online Store"; - $viewData["subtitle"] = "About us"; - $viewData["description"] = "This is an about page ..."; - $viewData["author"] = "Developed by: Your Name"; - return view('home.about')->with("viewData", $viewData); - } -} diff --git a/Chapter09/onlineStore/app/Http/Controllers/ProductController.php b/Chapter09/onlineStore/app/Http/Controllers/ProductController.php deleted file mode 100644 index 552a472..0000000 --- a/Chapter09/onlineStore/app/Http/Controllers/ProductController.php +++ /dev/null @@ -1,34 +0,0 @@ -"1", "name"=>"TV", "description"=>"Best TV", "image" => "game.png", "price"=>"1000"], - ["id"=>"2", "name"=>"iPhone", "description"=>"Best iPhone", "image" => "safe.png", "price"=>"999"], - ["id"=>"3", "name"=>"Chromecast", "description"=>"Best Chromecast", "image" => "submarine.png", "price"=>"30"], - ["id"=>"4", "name"=>"Glasses", "description"=>"Best Glasses", "image" => "game.png", "price"=>"100"] - ]; - - public function index() - { - $viewData = []; - $viewData["title"] = "Products - Online Store"; - $viewData["subtitle"] = "List of products"; - $viewData["products"] = ProductController::$products; - return view('product.index')->with("viewData", $viewData); - } - - public function show($id) - { - $viewData = []; - $product = ProductController::$products[$id-1]; - $viewData["title"] = $product["name"]." - Online Store"; - $viewData["subtitle"] = $product["name"]." - Product information"; - $viewData["product"] = $product; - return view('product.show')->with("viewData", $viewData); - } -} diff --git a/Chapter09/onlineStore/app/Http/Kernel.php b/Chapter09/onlineStore/app/Http/Kernel.php deleted file mode 100644 index d3722c2..0000000 --- a/Chapter09/onlineStore/app/Http/Kernel.php +++ /dev/null @@ -1,67 +0,0 @@ - - */ - protected $middleware = [ - // \App\Http\Middleware\TrustHosts::class, - \App\Http\Middleware\TrustProxies::class, - \Fruitcake\Cors\HandleCors::class, - \App\Http\Middleware\PreventRequestsDuringMaintenance::class, - \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, - \App\Http\Middleware\TrimStrings::class, - \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, - ]; - - /** - * The application's route middleware groups. - * - * @var array> - */ - protected $middlewareGroups = [ - 'web' => [ - \App\Http\Middleware\EncryptCookies::class, - \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, - \Illuminate\Session\Middleware\StartSession::class, - // \Illuminate\Session\Middleware\AuthenticateSession::class, - \Illuminate\View\Middleware\ShareErrorsFromSession::class, - \App\Http\Middleware\VerifyCsrfToken::class, - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - - 'api' => [ - // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, - 'throttle:api', - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - ]; - - /** - * The application's route middleware. - * - * These middleware may be assigned to groups or used individually. - * - * @var array - */ - protected $routeMiddleware = [ - 'auth' => \App\Http\Middleware\Authenticate::class, - 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::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, - 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, - 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, - 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, - ]; -} diff --git a/Chapter09/onlineStore/app/Http/Middleware/Authenticate.php b/Chapter09/onlineStore/app/Http/Middleware/Authenticate.php deleted file mode 100644 index 704089a..0000000 --- a/Chapter09/onlineStore/app/Http/Middleware/Authenticate.php +++ /dev/null @@ -1,21 +0,0 @@ -expectsJson()) { - return route('login'); - } - } -} diff --git a/Chapter09/onlineStore/app/Http/Middleware/EncryptCookies.php b/Chapter09/onlineStore/app/Http/Middleware/EncryptCookies.php deleted file mode 100644 index 867695b..0000000 --- a/Chapter09/onlineStore/app/Http/Middleware/EncryptCookies.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter09/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/Chapter09/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php deleted file mode 100644 index 74cbd9a..0000000 --- a/Chapter09/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter09/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php b/Chapter09/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php deleted file mode 100644 index a2813a0..0000000 --- a/Chapter09/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php +++ /dev/null @@ -1,32 +0,0 @@ -check()) { - return redirect(RouteServiceProvider::HOME); - } - } - - return $next($request); - } -} diff --git a/Chapter09/onlineStore/app/Http/Middleware/TrimStrings.php b/Chapter09/onlineStore/app/Http/Middleware/TrimStrings.php deleted file mode 100644 index 88cadca..0000000 --- a/Chapter09/onlineStore/app/Http/Middleware/TrimStrings.php +++ /dev/null @@ -1,19 +0,0 @@ - - */ - protected $except = [ - 'current_password', - 'password', - 'password_confirmation', - ]; -} diff --git a/Chapter09/onlineStore/app/Http/Middleware/TrustHosts.php b/Chapter09/onlineStore/app/Http/Middleware/TrustHosts.php deleted file mode 100644 index 7186414..0000000 --- a/Chapter09/onlineStore/app/Http/Middleware/TrustHosts.php +++ /dev/null @@ -1,20 +0,0 @@ - - */ - public function hosts() - { - return [ - $this->allSubdomainsOfApplicationUrl(), - ]; - } -} diff --git a/Chapter09/onlineStore/app/Http/Middleware/TrustProxies.php b/Chapter09/onlineStore/app/Http/Middleware/TrustProxies.php deleted file mode 100644 index 3391630..0000000 --- a/Chapter09/onlineStore/app/Http/Middleware/TrustProxies.php +++ /dev/null @@ -1,28 +0,0 @@ -|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/Chapter09/onlineStore/app/Http/Middleware/VerifyCsrfToken.php b/Chapter09/onlineStore/app/Http/Middleware/VerifyCsrfToken.php deleted file mode 100644 index 9e86521..0000000 --- a/Chapter09/onlineStore/app/Http/Middleware/VerifyCsrfToken.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter09/onlineStore/app/Models/User.php b/Chapter09/onlineStore/app/Models/User.php deleted file mode 100644 index 8996368..0000000 --- a/Chapter09/onlineStore/app/Models/User.php +++ /dev/null @@ -1,44 +0,0 @@ - - */ - 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', - ]; -} diff --git a/Chapter09/onlineStore/app/Providers/AppServiceProvider.php b/Chapter09/onlineStore/app/Providers/AppServiceProvider.php deleted file mode 100644 index ee8ca5b..0000000 --- a/Chapter09/onlineStore/app/Providers/AppServiceProvider.php +++ /dev/null @@ -1,28 +0,0 @@ - - */ - protected $policies = [ - // 'App\Models\Model' => 'App\Policies\ModelPolicy', - ]; - - /** - * Register any authentication / authorization services. - * - * @return void - */ - public function boot() - { - $this->registerPolicies(); - - // - } -} diff --git a/Chapter09/onlineStore/app/Providers/BroadcastServiceProvider.php b/Chapter09/onlineStore/app/Providers/BroadcastServiceProvider.php deleted file mode 100644 index 395c518..0000000 --- a/Chapter09/onlineStore/app/Providers/BroadcastServiceProvider.php +++ /dev/null @@ -1,21 +0,0 @@ -> - */ - protected $listen = [ - Registered::class => [ - SendEmailVerificationNotification::class, - ], - ]; - - /** - * Register any events for your application. - * - * @return void - */ - public function boot() - { - // - } -} diff --git a/Chapter09/onlineStore/app/Providers/RouteServiceProvider.php b/Chapter09/onlineStore/app/Providers/RouteServiceProvider.php deleted file mode 100644 index 7c17d1f..0000000 --- a/Chapter09/onlineStore/app/Providers/RouteServiceProvider.php +++ /dev/null @@ -1,63 +0,0 @@ -configureRateLimiting(); - - $this->routes(function () { - Route::prefix('api') - ->middleware('api') - ->namespace($this->namespace) - ->group(base_path('routes/api.php')); - - Route::middleware('web') - ->namespace($this->namespace) - ->group(base_path('routes/web.php')); - }); - } - - /** - * Configure the rate limiters for the application. - * - * @return void - */ - protected function configureRateLimiting() - { - RateLimiter::for('api', function (Request $request) { - return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); - }); - } -} diff --git a/Chapter09/onlineStore/artisan b/Chapter09/onlineStore/artisan deleted file mode 100644 index 67a3329..0000000 --- a/Chapter09/onlineStore/artisan +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env php -make(Illuminate\Contracts\Console\Kernel::class); - -$status = $kernel->handle( - $input = new Symfony\Component\Console\Input\ArgvInput, - new Symfony\Component\Console\Output\ConsoleOutput -); - -/* -|-------------------------------------------------------------------------- -| Shutdown The Application -|-------------------------------------------------------------------------- -| -| Once Artisan has finished running, we will fire off the shutdown events -| so that any final work may be done by the application before we shut -| down the process. This is the last thing to happen to the request. -| -*/ - -$kernel->terminate($input, $status); - -exit($status); diff --git a/Chapter09/onlineStore/bootstrap/app.php b/Chapter09/onlineStore/bootstrap/app.php deleted file mode 100644 index 037e17d..0000000 --- a/Chapter09/onlineStore/bootstrap/app.php +++ /dev/null @@ -1,55 +0,0 @@ -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/Chapter09/onlineStore/bootstrap/cache/.gitignore b/Chapter09/onlineStore/bootstrap/cache/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter09/onlineStore/bootstrap/cache/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter09/onlineStore/composer.json b/Chapter09/onlineStore/composer.json deleted file mode 100644 index f0f2eda..0000000 --- a/Chapter09/onlineStore/composer.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "name": "laravel/laravel", - "type": "project", - "description": "The Laravel Framework.", - "keywords": ["framework", "laravel"], - "license": "MIT", - "require": { - "php": "^8.0", - "fruitcake/laravel-cors": "^2.0.5", - "guzzlehttp/guzzle": "^7.2", - "laravel/framework": "^9.0", - "laravel/sanctum": "^2.14", - "laravel/tinker": "^2.7" - }, - "require-dev": { - "fakerphp/faker": "^1.9.1", - "laravel/sail": "^1.0.1", - "mockery/mockery": "^1.4.4", - "nunomaduro/collision": "^6.1", - "phpunit/phpunit": "^9.5.10", - "spatie/laravel-ignition": "^1.0", - "squizlabs/php_codesniffer": "^3.6" - }, - "autoload": { - "psr-4": { - "App\\": "app/", - "Database\\Factories\\": "database/factories/", - "Database\\Seeders\\": "database/seeders/" - } - }, - "autoload-dev": { - "psr-4": { - "Tests\\": "tests/" - } - }, - "scripts": { - "post-autoload-dump": [ - "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", - "@php artisan package:discover --ansi" - ], - "post-update-cmd": [ - "@php artisan vendor:publish --tag=laravel-assets --ansi --force" - ], - "post-root-package-install": [ - "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" - ], - "post-create-project-cmd": [ - "@php artisan key:generate --ansi" - ] - }, - "extra": { - "laravel": { - "dont-discover": [] - } - }, - "config": { - "optimize-autoloader": true, - "preferred-install": "dist", - "sort-packages": true - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/Chapter09/onlineStore/composer.lock b/Chapter09/onlineStore/composer.lock deleted file mode 100644 index b55e897..0000000 --- a/Chapter09/onlineStore/composer.lock +++ /dev/null @@ -1,7860 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "8bdcc31974d0d5a00db79c82827c8815", - "packages": [ - { - "name": "asm89/stack-cors", - "version": "v2.1.1", - "source": { - "type": "git", - "url": "https://github.com/asm89/stack-cors.git", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4|^5|^6" - }, - "require-dev": { - "phpunit/phpunit": "^7|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "psr-4": { - "Asm89\\Stack\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alexander", - "email": "iam.asm89@gmail.com" - } - ], - "description": "Cross-origin resource sharing library and stack middleware", - "homepage": "https://github.com/asm89/stack-cors", - "keywords": [ - "cors", - "stack" - ], - "support": { - "issues": "https://github.com/asm89/stack-cors/issues", - "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" - }, - "time": "2022-01-18T09:12:03+00:00" - }, - { - "name": "brick/math", - "version": "0.9.3", - "source": { - "type": "git", - "url": "https://github.com/brick/math.git", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", - "vimeo/psalm": "4.9.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Brick\\Math\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Arbitrary-precision arithmetic library", - "keywords": [ - "Arbitrary-precision", - "BigInteger", - "BigRational", - "arithmetic", - "bigdecimal", - "bignum", - "brick", - "math" - ], - "support": { - "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.9.3" - }, - "funding": [ - { - "url": "https://github.com/BenMorel", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/brick/math", - "type": "tidelift" - } - ], - "time": "2021-08-15T20:50:18+00:00" - }, - { - "name": "dflydev/dot-access-data", - "version": "v3.0.1", - "source": { - "type": "git", - "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c", - "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": "^3.14" - }, - "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.1" - }, - "time": "2021-08-13T13:06:58+00:00" - }, - { - "name": "doctrine/inflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "vimeo/psalm": "^4.10" - }, - "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.4" - }, - "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": "2021-10-22T20:16:43+00:00" - }, - { - "name": "doctrine/lexer", - "version": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" - } - }, - "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/1.2.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%2Flexer", - "type": "tidelift" - } - ], - "time": "2022-01-12T08:27:12+00:00" - }, - { - "name": "dragonmantank/cron-expression", - "version": "v3.3.1", - "source": { - "type": "git", - "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "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.1" - }, - "funding": [ - { - "url": "https://github.com/dragonmantank", - "type": "github" - } - ], - "time": "2022-01-18T15:43:28+00:00" - }, - { - "name": "egulias/email-validator", - "version": "3.1.2", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ee0db30118f661fb166bcffbf5d82032df484697", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^1.2", - "php": ">=7.2", - "symfony/polyfill-intl-idn": "^1.15" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^8.5.8|^9.3.3", - "vimeo/psalm": "^4" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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/3.1.2" - }, - "funding": [ - { - "url": "https://github.com/egulias", - "type": "github" - } - ], - "time": "2021-10-11T09:18:27+00:00" - }, - { - "name": "fruitcake/laravel-cors", - "version": "v2.0.5", - "source": { - "type": "git", - "url": "https://github.com/fruitcake/laravel-cors.git", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "shasum": "" - }, - "require": { - "asm89/stack-cors": "^2.0.1", - "illuminate/contracts": "^6|^7|^8|^9", - "illuminate/support": "^6|^7|^8|^9", - "php": ">=7.2", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4.3.4|^5|^6" - }, - "require-dev": { - "laravel/framework": "^6|^7.24|^8", - "orchestra/testbench-dusk": "^4|^5|^6|^7", - "phpunit/phpunit": "^6|^7|^8|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - }, - "laravel": { - "providers": [ - "Fruitcake\\Cors\\CorsServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Fruitcake\\Cors\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fruitcake", - "homepage": "https://fruitcake.nl" - }, - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", - "keywords": [ - "api", - "cors", - "crossdomain", - "laravel" - ], - "support": { - "issues": "https://github.com/fruitcake/laravel-cors/issues", - "source": "https://github.com/fruitcake/laravel-cors/tree/v2.0.5" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "time": "2022-01-03T14:53:04+00:00" - }, - { - "name": "graham-campbell/result-type", - "version": "v1.0.4", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "0690bde05318336c7221785f2a932467f98b64ca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/0690bde05318336c7221785f2a932467f98b64ca", - "reference": "0690bde05318336c7221785f2a932467f98b64ca", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "phpoption/phpoption": "^1.8" - }, - "require-dev": { - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", - "type": "tidelift" - } - ], - "time": "2021-11-21T21:41:47+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "7.4.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.8.3 || ^2.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.4.1", - "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.5 || ^9.3.5", - "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": { - "branch-alias": { - "dev-master": "7.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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.4.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": "2021-12-06T18:43:05+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "1.5.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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/1.5.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "time": "2021-10-22T20:56:57+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.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.4.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.8 || ^9.3.10" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "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.1.0" - }, - "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": "2021-10-06T17:43:30+00:00" - }, - { - "name": "laravel/framework", - "version": "v9.0.1", - "source": { - "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "shasum": "" - }, - "require": { - "doctrine/inflector": "^2.0", - "dragonmantank/cron-expression": "^3.1", - "egulias/email-validator": "^3.1", - "ext-mbstring": "*", - "ext-openssl": "*", - "laravel/serializable-closure": "^1.0", - "league/commonmark": "^2.2", - "league/flysystem": "^3.0", - "monolog/monolog": "^2.0", - "nesbot/carbon": "^2.53.1", - "php": "^8.0.2", - "psr/container": "^1.1.1|^2.0.1", - "psr/log": "^1.0|^2.0|^3.0", - "psr/simple-cache": "^1.0|^2.0|^3.0", - "ramsey/uuid": "^4.2.2", - "symfony/console": "^6.0", - "symfony/error-handler": "^6.0", - "symfony/finder": "^6.0", - "symfony/http-foundation": "^6.0", - "symfony/http-kernel": "^6.0", - "symfony/mailer": "^6.0", - "symfony/mime": "^6.0", - "symfony/process": "^6.0", - "symfony/routing": "^6.0", - "symfony/var-dumper": "^6.0", - "tijsverkoyen/css-to-inline-styles": "^2.2.2", - "vlucas/phpdotenv": "^5.4.1", - "voku/portable-ascii": "^2.0" - }, - "conflict": { - "tightenco/collect": "<5.5.33" - }, - "provide": { - "psr/container-implementation": "1.1|2.0", - "psr/simple-cache-implementation": "1.0|2.0|3.0" - }, - "replace": { - "illuminate/auth": "self.version", - "illuminate/broadcasting": "self.version", - "illuminate/bus": "self.version", - "illuminate/cache": "self.version", - "illuminate/collections": "self.version", - "illuminate/conditionable": "self.version", - "illuminate/config": "self.version", - "illuminate/console": "self.version", - "illuminate/container": "self.version", - "illuminate/contracts": "self.version", - "illuminate/cookie": "self.version", - "illuminate/database": "self.version", - "illuminate/encryption": "self.version", - "illuminate/events": "self.version", - "illuminate/filesystem": "self.version", - "illuminate/hashing": "self.version", - "illuminate/http": "self.version", - "illuminate/log": "self.version", - "illuminate/macroable": "self.version", - "illuminate/mail": "self.version", - "illuminate/notifications": "self.version", - "illuminate/pagination": "self.version", - "illuminate/pipeline": "self.version", - "illuminate/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": { - "aws/aws-sdk-php": "^3.198.1", - "doctrine/dbal": "^2.13.3|^3.1.4", - "fakerphp/faker": "^1.9.2", - "guzzlehttp/guzzle": "^7.2", - "league/flysystem-aws-s3-v3": "^3.0", - "league/flysystem-ftp": "^3.0", - "league/flysystem-sftp-v3": "^3.0", - "mockery/mockery": "^1.4.4", - "orchestra/testbench-core": "^7.0", - "pda/pheanstalk": "^4.0", - "phpstan/phpstan": "^1.0", - "phpunit/phpunit": "^9.5.8", - "predis/predis": "^1.1.9", - "symfony/amazon-mailer": "^6.0", - "symfony/cache": "^6.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.198.1).", - "brianium/paratest": "Required to run tests in parallel (^6.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", - "ext-bcmath": "Required to use the multiple_of validation rule.", - "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.", - "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.2).", - "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-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", - "mockery/mockery": "Required to use mocking (^1.4.4).", - "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).", - "predis/predis": "Required to use the predis connector (^1.1.9).", - "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.0).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^6.0).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.0).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.0).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.0).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.x-dev" - } - }, - "autoload": { - "files": [ - "src/Illuminate/Collections/helpers.php", - "src/Illuminate/Events/functions.php", - "src/Illuminate/Foundation/helpers.php", - "src/Illuminate/Support/helpers.php" - ], - "psr-4": { - "Illuminate\\": "src/Illuminate/", - "Illuminate\\Support\\": [ - "src/Illuminate/Macroable/", - "src/Illuminate/Collections/", - "src/Illuminate/Conditionable/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Laravel Framework.", - "homepage": "https://laravel.com", - "keywords": [ - "framework", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2022-02-09T15:00:05+00:00" - }, - { - "name": "laravel/sanctum", - "version": "v2.14.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/sanctum.git", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/0647a87140c7522e75826cffcadb3ad6e01f71e9", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/contracts": "^6.9|^7.0|^8.0|^9.0", - "illuminate/database": "^6.9|^7.0|^8.0|^9.0", - "illuminate/support": "^6.9|^7.0|^8.0|^9.0", - "php": "^7.2|^8.0" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0", - "phpunit/phpunit": "^8.0|^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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": "2022-01-12T15:07:43+00:00" - }, - { - "name": "laravel/serializable-closure", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/serializable-closure.git", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/65c9faf50d567b65d81764a44526545689e3fe63", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "pestphp/pest": "^1.18", - "phpstan/phpstan": "^0.12.98", - "symfony/var-dumper": "^5.3" - }, - "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": "2022-02-01T16:29:39+00:00" - }, - { - "name": "laravel/tinker", - "version": "v2.7.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/tinker.git", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/5f2f9815b7631b9f586a3de7933c25f9327d4073", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073", - "shasum": "" - }, - "require": { - "illuminate/console": "^6.0|^7.0|^8.0|^9.0", - "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.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", - "phpunit/phpunit": "^8.5.8|^9.3.3" - }, - "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.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.7.0" - }, - "time": "2022-01-10T08:52:49+00:00" - }, - { - "name": "league/commonmark", - "version": "2.2.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/commonmark.git", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "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.15" - }, - "require-dev": { - "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.0", - "commonmark/commonmark.js": "0.30.0", - "composer/package-versions-deprecated": "^1.8", - "erusev/parsedown": "^1.0", - "ext-json": "*", - "github/gfm": "0.29.0", - "michelf/php-markdown": "^1.4", - "phpstan/phpstan": "^0.12.88 || ^1.0.0", - "phpunit/phpunit": "^9.5.5", - "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", - "unleashedtech/php-coding-standard": "^3.1", - "vimeo/psalm": "^4.7.3" - }, - "suggest": { - "symfony/yaml": "v2.3+ required if using the Front Matter extension" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.3-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": "2022-01-25T14:37:33+00:00" - }, - { - "name": "league/config", - "version": "v1.1.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/config.git", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/config/zipball/a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^3.0.1", - "nette/schema": "^1.2", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.90", - "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": "2021-08-14T12:15:32+00:00" - }, - { - "name": "league/flysystem", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9f8b4260031bfef5497477da53dd57b2aaff0e06", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06", - "shasum": "" - }, - "require": { - "ext-json": "*", - "league/mime-type-detection": "^1.0.0", - "php": "^8.0.2" - }, - "conflict": { - "guzzlehttp/guzzle": "<7.0", - "guzzlehttp/ringphp": "<1.1.1", - "symfony/http-client": "<5.2" - }, - "require-dev": { - "async-aws/s3": "^1.5", - "async-aws/simple-s3": "^1.0", - "aws/aws-sdk-php": "^3.198.1", - "composer/semver": "^3.0", - "ext-fileinfo": "*", - "ext-ftp": "*", - "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.5", - "google/cloud-storage": "^1.23", - "phpseclib/phpseclib": "^2.0", - "phpstan/phpstan": "^0.12.26", - "phpunit/phpunit": "^9.5.11", - "sabre/dav": "^4.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.0.3" - }, - "funding": [ - { - "url": "https://offset.earth/frankdejonge", - "type": "custom" - }, - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2022-01-31T19:41:04+00:00" - }, - { - "name": "league/mime-type-detection", - "version": "1.9.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/aa70e813a6ad3d1558fc927863d47309b4c23e69", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.2", - "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" - }, - "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.9.0" - }, - "funding": [ - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2021-11-21T11:48:40+00:00" - }, - { - "name": "monolog/monolog", - "version": "2.3.5", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd4380d6fc37626e2f799f29d91195040137eba9", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "provide": { - "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7", - "graylog2/gelf-php": "^1.4.2", - "mongodb/mongodb": "^1.8", - "php-amqplib/php-amqplib": "~2.4 || ^3", - "php-console/php-console": "^3.1.3", - "phpspec/prophecy": "^1.6.1", - "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5", - "predis/predis": "^1.1", - "rollbar/rollbar": "^1.3", - "ruflin/elastica": ">=0.90@dev", - "swiftmailer/swiftmailer": "^5.3|^6.0" - }, - "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", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "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": "2.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/2.3.5" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" - } - ], - "time": "2021-10-01T21:08:31+00:00" - }, - { - "name": "nesbot/carbon", - "version": "2.56.0", - "source": { - "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1.8 || ^8.0", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "doctrine/dbal": "^2.0 || ^3.0", - "doctrine/orm": "^2.7", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "phpmd/phpmd": "^2.9", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.54 || ^1.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.14", - "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://opencollective.com/Carbon", - "type": "open_collective" - }, - { - "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", - "type": "tidelift" - } - ], - "time": "2022-01-21T17:08:38+00:00" - }, - { - "name": "nette/schema", - "version": "v1.2.2", - "source": { - "type": "git", - "url": "https://github.com/nette/schema.git", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/9a39cef03a5b34c7de64f551538cbba05c2be5df", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df", - "shasum": "" - }, - "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": ">=7.1 <8.2" - }, - "require-dev": { - "nette/tester": "^2.3 || ^2.4", - "phpstan/phpstan-nette": "^0.12", - "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.2" - }, - "time": "2021-10-15T11:40:02+00:00" - }, - { - "name": "nette/utils", - "version": "v3.2.7", - "source": { - "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/0af4e3de4df9f1543534beab255ccf459e7a2c99", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99", - "shasum": "" - }, - "require": { - "php": ">=7.2 <8.2" - }, - "conflict": { - "nette/di": "<3.0.6" - }, - "require-dev": { - "nette/tester": "~2.0", - "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.3" - }, - "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()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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 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/v3.2.7" - }, - "time": "2022-01-24T11:29:14+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.13.2", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", - "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.13.2" - }, - "time": "2021-11-30T19:35:32+00:00" - }, - { - "name": "phpoption/phpoption", - "version": "1.8.1", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-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.8.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", - "type": "tidelift" - } - ], - "time": "2021-12-04T23:24:31+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.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.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": "http://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/tree/master" - }, - "time": "2020-06-29T06:28:15+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.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": "http://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/master" - }, - "time": "2019-04-30T12:38:16+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.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": "http://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/master" - }, - "time": "2016-08-06T14:39: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.1", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "570292577277f06f590635381a7f761a6cf4f026" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/570292577277f06f590635381a7f761a6cf4f026", - "reference": "570292577277f06f590635381a7f761a6cf4f026", - "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" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "3.17.05.02" - }, - "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.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." - }, - "bin": [ - "bin/psysh" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "0.11.x-dev" - } - }, - "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.1" - }, - "time": "2022-01-03T13:58:38+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": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/ramsey/collection.git", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "shasum": "" - }, - "require": { - "php": "^7.3 || ^8", - "symfony/polyfill-php81": "^1.23" - }, - "require-dev": { - "captainhook/captainhook": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "ergebnis/composer-normalize": "^2.6", - "fakerphp/faker": "^1.5", - "hamcrest/hamcrest-php": "^2", - "jangregor/phpstan-prophecy": "^0.8", - "mockery/mockery": "^1.3", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1", - "phpstan/phpstan": "^0.12.32", - "phpstan/phpstan-mockery": "^0.12.5", - "phpstan/phpstan-phpunit": "^0.12.11", - "phpunit/phpunit": "^8.5 || ^9", - "psy/psysh": "^0.10.4", - "slevomat/coding-standard": "^6.3", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.4" - }, - "type": "library", - "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/1.2.2" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "time": "2021-10-10T03:01:02+00:00" - }, - { - "name": "ramsey/uuid", - "version": "4.2.3", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "shasum": "" - }, - "require": { - "brick/math": "^0.8 || ^0.9", - "ext-json": "*", - "php": "^7.2 || ^8.0", - "ramsey/collection": "^1.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php80": "^1.14" - }, - "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", - "moontoast/math": "^1.1", - "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.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-mockery": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^8.5 || ^9", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" - }, - "suggest": { - "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-ctype": "Enables faster processing of character classification using ctype functions.", - "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": { - "branch-alias": { - "dev-main": "4.x-dev" - }, - "captainhook": { - "force-install": true - } - }, - "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "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.2.3" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2021-09-25T23:10:38+00:00" - }, - { - "name": "symfony/console", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/22e8efd019c3270c4f79376234a3f8752cd25490", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.4|^6.0" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/css-selector", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/1955d595c12c111629cc814d3f2a2ff13580508a", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a", - "shasum": "" - }, - "require": { - "php": ">=8.0.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/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-11-01T23:48:49+00:00" - }, - { - "name": "symfony/error-handler", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/20343b3bad7ebafa38138ddcb97290a24722b57b", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" - }, - "bin": [ - "Resources/bin/patch-type-declarations" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to manage errors and ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6472ea2dd415e925b90ca82be64b8bc6157f3934", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/event-dispatcher-contracts": "^2|^3" - }, - "conflict": { - "symfony/dependency-injection": "<5.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^5.4|^6.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/aa5422287b75594b90ee9cd807caf8f0df491385", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/event-dispatcher": "^1" - }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-07-15T12:33:35+00:00" - }, - { - "name": "symfony/finder", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/8661b74dbabc23223f38c9b99d3f8ade71170430", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ad157299ced81a637fade1efcadd688d6deba5c1", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1" - }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/cache": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0" - }, - "suggest": { - "symfony/mime": "To use the file extension guesser" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v6.0.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/error-handler": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", - "symfony/twig-bridge": "<5.4", - "symfony/validator": "<5.4", - "twig/twig": "<2.13" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/process": "^5.4|^6.0", - "symfony/routing": "^5.4|^6.0", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-29T18:12:46+00:00" - }, - { - "name": "symfony/mailer", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mailer.git", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "shasum": "" - }, - "require": { - "egulias/email-validator": "^2.1.10|^3", - "php": ">=8.0.2", - "psr/event-dispatcher": "^1", - "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3" - }, - "conflict": { - "symfony/http-kernel": "<5.4" - }, - "require-dev": { - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/messenger": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/mime", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/2cd9601efd040e56f43360daa68f3c6b0534923a", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "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" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "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.24.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": "2021-10-20T20:35:02+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-11-23T21:10:46+00:00" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44", - "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.23-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.24.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": "2021-09-14T14:02:44+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.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": "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.24.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": "2021-11-30T18:21:41+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-05-27T09:17:38+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:33+00:00" - }, - { - "name": "symfony/polyfill-php81", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:11+00:00" - }, - { - "name": "symfony/process", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/298ed357274c1868c20a0061df256a1250a6c4af", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/routing", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/yaml": "<5.4" - }, - "require-dev": { - "doctrine/annotations": "^1.12", - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/36715ebf9fb9db73db0cb24263c79077c6fe8603", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/container": "^2.0" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "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.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": "2021-11-04T17:53:12+00:00" - }, - { - "name": "symfony/string", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/522144f0c4c004c80d56fa47e40e17028e2eefc2", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.0" - }, - "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/translation-contracts": "^2.0|^3.0", - "symfony/var-exporter": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "files": [ - "Resources/functions.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 an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/translation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/71bb15335798f8c4da110911bcf2d2fead7a430d", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.3|^3.0" - }, - "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" - }, - "provide": { - "symfony/translation-implementation": "2.3|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-07T00:29:03+00:00" - }, - { - "name": "symfony/translation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "suggest": { - "symfony/translation-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - } - }, - "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.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": "2021-09-07T12:43:40+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7b701676fc64f9ef11f9b4870f16b48f66be4834", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<5.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-17T16:30:44+00:00" - }, - { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.4", - "source": { - "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" - } - ], - "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", - "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "support": { - "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" - }, - "time": "2021-12-08T09:12:39+00:00" - }, - { - "name": "vlucas/phpdotenv", - "version": "v5.4.1", - "source": { - "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", - "shasum": "" - }, - "require": { - "ext-pcre": "*", - "graham-campbell/result-type": "^1.0.2", - "php": "^7.1.3 || ^8.0", - "phpoption/phpoption": "^1.8", - "symfony/polyfill-ctype": "^1.23", - "symfony/polyfill-mbstring": "^1.23.1", - "symfony/polyfill-php80": "^1.23.1" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" - }, - "suggest": { - "ext-filter": "Required to use the boolean validator." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.4-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.4.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", - "type": "tidelift" - } - ], - "time": "2021-12-12T23:22:04+00:00" - }, - { - "name": "voku/portable-ascii", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/voku/portable-ascii.git", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/9bd89e83cecdf8c37b64909454249eaed98b2c89", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89", - "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.0" - }, - "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-01-24T18:59:03+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "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.10.0" - }, - "time": "2021-03-09T10:59:23+00:00" - } - ], - "packages-dev": [ - { - "name": "doctrine/instantiator", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.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%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2020-11-10T18:47:58+00:00" - }, - { - "name": "facade/ignition-contracts", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/facade/ignition-contracts.git", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^v2.15.8", - "phpunit/phpunit": "^9.3.11", - "vimeo/psalm": "^3.17.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Facade\\IgnitionContracts\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://flareapp.io", - "role": "Developer" - } - ], - "description": "Solution contracts for Ignition", - "homepage": "https://github.com/facade/ignition-contracts", - "keywords": [ - "contracts", - "flare", - "ignition" - ], - "support": { - "issues": "https://github.com/facade/ignition-contracts/issues", - "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" - }, - "time": "2020-10-16T08:27:54+00:00" - }, - { - "name": "fakerphp/faker", - "version": "v1.19.0", - "source": { - "type": "git", - "url": "https://github.com/FakerPHP/Faker.git", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^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": "*", - "symfony/phpunit-bridge": "^4.4 || ^5.2" - }, - "suggest": { - "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", - "ext-curl": "Required by Faker\\Provider\\Image to download images.", - "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", - "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.19-dev" - } - }, - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "François Zaninotto" - } - ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], - "support": { - "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0" - }, - "time": "2022-02-02T17:38:57+00:00" - }, - { - "name": "filp/whoops", - "version": "2.14.5", - "source": { - "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "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.14.5" - }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "time": "2022-01-07T12:00:00+00:00" - }, - { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "shasum": "" - }, - "require": { - "php": "^5.3|^7.0|^8.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" - }, - "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "classmap": [ - "hamcrest" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "This is the PHP port of Hamcrest Matchers", - "keywords": [ - "test" - ], - "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" - }, - "time": "2020-07-09T08:09:16+00:00" - }, - { - "name": "laravel/sail", - "version": "v1.13.2", - "source": { - "type": "git", - "url": "https://github.com/laravel/sail.git", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.0|^9.0", - "illuminate/contracts": "^8.0|^9.0", - "illuminate/support": "^8.0|^9.0", - "php": "^7.3|^8.0" - }, - "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": "2022-02-08T14:14:12+00:00" - }, - { - "name": "mockery/mockery", - "version": "1.5.0", - "source": { - "type": "git", - "url": "https://github.com/mockery/mockery.git", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "shasum": "" - }, - "require": { - "hamcrest/hamcrest-php": "^2.0.1", - "lib-pcre": ">=7.0", - "php": "^7.3 || ^8.0" - }, - "conflict": { - "phpunit/phpunit": "<8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-0": { - "Mockery": "library/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" - } - ], - "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": { - "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.5.0" - }, - "time": "2022-01-20T13:18:17+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.10.2", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "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.10.2" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2020-11-13T09:40:50+00:00" - }, - { - "name": "nunomaduro/collision", - "version": "v6.1.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/collision.git", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "shasum": "" - }, - "require": { - "facade/ignition-contracts": "^1.0.2", - "filp/whoops": "^2.14.5", - "php": "^8.0.0", - "symfony/console": "^6.0.2" - }, - "require-dev": { - "brianium/paratest": "^6.4.1", - "laravel/framework": "^9.0", - "nunomaduro/larastan": "^1.0.2", - "nunomaduro/mock-final-classes": "^1.1.0", - "orchestra/testbench": "^7.0.0", - "phpunit/phpunit": "^9.5.11" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "6.x-dev" - }, - "laravel": { - "providers": [ - "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" - ] - } - }, - "autoload": { - "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": "2022-01-18T17:49:08+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.1.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/15a90844ad40f127afd244c0cad228de2a80052a", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a", - "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.1.1" - }, - "time": "2022-02-07T21:56:48+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.6.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "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.6.0" - }, - "time": "2022-01-04T19:58:01+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" - }, - "time": "2021-12-08T12:19:24+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "9.2.10", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d5850aaf931743067f4bfc1ae4cbd06468400687", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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 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", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.10" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-05T09:12:13+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "3.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-02T12:48:52+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "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/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:58:55+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T05:33:50+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.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/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:16:10+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "9.5.13", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/597cb647654ede35e43b137926dfdfef0fb11743", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.3.1", - "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": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.7", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", - "sebastian/version": "^3.0.2" - }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.13" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-01-24T07:33:35+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:08:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "1.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:08:54+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:30:19+00:00" - }, - { - "name": "sebastian/comparator", - "version": "4.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:49:45+00:00" - }, - { - "name": "sebastian/complexity", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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 calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:52:27+00:00" - }, - { - "name": "sebastian/diff", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:10:38+00:00" - }, - { - "name": "sebastian/environment", - "version": "5.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-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": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:52:38+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "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", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-11-11T14:18:36+00:00" - }, - { - "name": "sebastian/global-state", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-11T13:31:12+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-28T06:42:11+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "http://www.github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:17:30+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:45:17+00:00" - }, - { - "name": "sebastian/type", - "version": "2.3.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-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/2.3.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-15T12:49:02+00:00" - }, - { - "name": "sebastian/version", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:39:44+00:00" - }, - { - "name": "spatie/backtrace", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/backtrace.git", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "ext-json": "*", - "phpunit/phpunit": "^9.3", - "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": { - "issues": "https://github.com/spatie/backtrace/issues", - "source": "https://github.com/spatie/backtrace/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/sponsors/spatie", - "type": "github" - }, - { - "url": "https://spatie.be/open-source/support-us", - "type": "other" - } - ], - "time": "2021-11-09T10:57:15+00:00" - }, - { - "name": "spatie/flare-client-php", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/flare-client-php.git", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "shasum": "" - }, - "require": { - "illuminate/pipeline": "^8.0|^9.0", - "php": "^8.0", - "spatie/backtrace": "^1.2", - "symfony/http-foundation": "^5.0|^6.0", - "symfony/mime": "^5.2|^6.0", - "symfony/process": "^5.2|^6.0", - "symfony/var-dumper": "^5.2|^6.0" - }, - "require-dev": { - "dms/phpunit-arraysubset-asserts": "^0.3.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/phpunit-snapshot-assertions": "^4.0" - }, - "type": "library", - "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.0.1" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2022-02-04T15:21:00+00:00" - }, - { - "name": "spatie/ignition", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/spatie/ignition.git", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/d2d5ba823af3004268556e87dfc94449e4159f5a", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "monolog/monolog": "^2.0", - "php": "^8.0", - "spatie/flare-client-php": "^1.0", - "symfony/console": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "mockery/mockery": "^1.4", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/ray": "^1.32", - "symfony/process": "^5.4|^6.0" - }, - "type": "library", - "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": "2022-01-19T12:57:41+00:00" - }, - { - "name": "spatie/laravel-ignition", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/68250225a9f83b086462c2af1b1139dfde48fbd2", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*", - "illuminate/support": "^8.77|^9.0", - "monolog/monolog": "^2.3", - "php": "^8.0", - "spatie/flare-client-php": "^1.0.1", - "spatie/ignition": "^1.0", - "symfony/console": "^5.0|^6.0", - "symfony/var-dumper": "^5.0|^6.0" - }, - "require-dev": { - "filp/whoops": "^2.14", - "livewire/livewire": "^2.8|dev-develop", - "mockery/mockery": "^1.4", - "nunomaduro/larastan": "^1.0", - "orchestra/testbench": "^6.23|^7.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/laravel-ray": "^1.27" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Spatie\\LaravelIgnition\\IgnitionServiceProvider" - ], - "aliases": { - "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" - } - } - }, - "autoload": { - "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": "2022-02-04T15:25:56+00:00" - }, - { - "name": "squizlabs/php_codesniffer", - "version": "3.6.2", - "source": { - "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", - "shasum": "" - }, - "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.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": "lead" - } - ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", - "keywords": [ - "phpcs", - "standards" - ], - "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" - }, - "time": "2021-12-12T21:44:58+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2021-07-28T10:34:58+00:00" - } - ], - "aliases": [], - "minimum-stability": "dev", - "stability-flags": [], - "prefer-stable": true, - "prefer-lowest": false, - "platform": { - "php": "^8.0" - }, - "platform-dev": [], - "plugin-api-version": "2.1.0" -} diff --git a/Chapter09/onlineStore/config/app.php b/Chapter09/onlineStore/config/app.php deleted file mode 100644 index 1941d7c..0000000 --- a/Chapter09/onlineStore/config/app.php +++ /dev/null @@ -1,197 +0,0 @@ - env('APP_NAME', 'Laravel'), - - /* - |-------------------------------------------------------------------------- - | Application Environment - |-------------------------------------------------------------------------- - | - | This value determines the "environment" your application is currently - | running in. This may determine how you prefer to configure various - | services the application utilizes. Set this in your ".env" file. - | - */ - - 'env' => env('APP_ENV', 'production'), - - /* - |-------------------------------------------------------------------------- - | Application Debug Mode - |-------------------------------------------------------------------------- - | - | When your application is in debug mode, detailed error messages with - | stack traces will be shown on every error that occurs within your - | application. If disabled, a simple generic error page is shown. - | - */ - - 'debug' => (bool) env('APP_DEBUG', false), - - /* - |-------------------------------------------------------------------------- - | Application URL - |-------------------------------------------------------------------------- - | - | This URL is used by the console to properly generate URLs when using - | the Artisan command line tool. You should set this to the root of - | your application so that it is used when running Artisan tasks. - | - */ - - 'url' => env('APP_URL', 'http://localhost'), - - 'asset_url' => env('ASSET_URL', null), - - /* - |-------------------------------------------------------------------------- - | 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', - - /* - |-------------------------------------------------------------------------- - | 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' => [ - - /* - * Laravel Framework Service Providers... - */ - Illuminate\Auth\AuthServiceProvider::class, - Illuminate\Broadcasting\BroadcastServiceProvider::class, - Illuminate\Bus\BusServiceProvider::class, - Illuminate\Cache\CacheServiceProvider::class, - Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, - Illuminate\Cookie\CookieServiceProvider::class, - Illuminate\Database\DatabaseServiceProvider::class, - Illuminate\Encryption\EncryptionServiceProvider::class, - Illuminate\Filesystem\FilesystemServiceProvider::class, - Illuminate\Foundation\Providers\FoundationServiceProvider::class, - Illuminate\Hashing\HashServiceProvider::class, - Illuminate\Mail\MailServiceProvider::class, - Illuminate\Notifications\NotificationServiceProvider::class, - Illuminate\Pagination\PaginationServiceProvider::class, - Illuminate\Pipeline\PipelineServiceProvider::class, - Illuminate\Queue\QueueServiceProvider::class, - Illuminate\Redis\RedisServiceProvider::class, - Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, - Illuminate\Session\SessionServiceProvider::class, - Illuminate\Translation\TranslationServiceProvider::class, - Illuminate\Validation\ValidationServiceProvider::class, - Illuminate\View\ViewServiceProvider::class, - - /* - * 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, - - ], - - /* - |-------------------------------------------------------------------------- - | 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([ - // ... - ])->toArray(), - -]; diff --git a/Chapter09/onlineStore/config/auth.php b/Chapter09/onlineStore/config/auth.php deleted file mode 100644 index d8c6cee..0000000 --- a/Chapter09/onlineStore/config/auth.php +++ /dev/null @@ -1,111 +0,0 @@ - [ - '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 expire 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. - | - */ - - 'passwords' => [ - 'users' => [ - 'provider' => 'users', - 'table' => 'password_resets', - '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/Chapter09/onlineStore/config/broadcasting.php b/Chapter09/onlineStore/config/broadcasting.php deleted file mode 100644 index 67fcbbd..0000000 --- a/Chapter09/onlineStore/config/broadcasting.php +++ /dev/null @@ -1,67 +0,0 @@ - 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'), - 'useTLS' => true, - ], - '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/Chapter09/onlineStore/config/cache.php b/Chapter09/onlineStore/config/cache.php deleted file mode 100644 index 8736c7a..0000000 --- a/Chapter09/onlineStore/config/cache.php +++ /dev/null @@ -1,110 +0,0 @@ - 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'), - ], - - '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 a RAM based store such as APC or Memcached, there might - | be other applications utilizing the same cache. So, we'll specify a - | value to get prefixed to all our keys so we can avoid collisions. - | - */ - - 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'), - -]; diff --git a/Chapter09/onlineStore/config/cors.php b/Chapter09/onlineStore/config/cors.php deleted file mode 100644 index 8a39e6d..0000000 --- a/Chapter09/onlineStore/config/cors.php +++ /dev/null @@ -1,34 +0,0 @@ - ['api/*', 'sanctum/csrf-cookie'], - - 'allowed_methods' => ['*'], - - 'allowed_origins' => ['*'], - - 'allowed_origins_patterns' => [], - - 'allowed_headers' => ['*'], - - 'exposed_headers' => [], - - 'max_age' => 0, - - 'supports_credentials' => false, - -]; diff --git a/Chapter09/onlineStore/config/database.php b/Chapter09/onlineStore/config/database.php deleted file mode 100644 index 0faebae..0000000 --- a/Chapter09/onlineStore/config/database.php +++ /dev/null @@ -1,147 +0,0 @@ - env('DB_CONNECTION', 'mysql'), - - /* - |-------------------------------------------------------------------------- - | Database Connections - |-------------------------------------------------------------------------- - | - | Here are each of the database connections setup for your application. - | Of course, examples of configuring each database platform that is - | supported by Laravel is shown below to make development simple. - | - | - | All database work in Laravel is done through the PHP PDO facilities - | so make sure you have the driver for your particular database of - | choice installed on your machine before you begin development. - | - */ - - 'connections' => [ - - 'sqlite' => [ - 'driver' => 'sqlite', - 'url' => env('DATABASE_URL'), - 'database' => env('DB_DATABASE', database_path('database.sqlite')), - 'prefix' => '', - 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), - ], - - 'mysql' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '3306'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'unix_socket' => env('DB_SOCKET', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - 'pgsql' => [ - 'driver' => 'pgsql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '5432'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - 'search_path' => 'public', - 'sslmode' => 'prefer', - ], - - 'sqlsrv' => [ - 'driver' => 'sqlsrv', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', 'localhost'), - 'port' => env('DB_PORT', '1433'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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'), - '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'), - 'password' => env('REDIS_PASSWORD'), - 'port' => env('REDIS_PORT', '6379'), - 'database' => env('REDIS_CACHE_DB', '1'), - ], - - ], - -]; diff --git a/Chapter09/onlineStore/config/filesystems.php b/Chapter09/onlineStore/config/filesystems.php deleted file mode 100644 index cf5abce..0000000 --- a/Chapter09/onlineStore/config/filesystems.php +++ /dev/null @@ -1,73 +0,0 @@ - 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 setup for each driver as an example of the required options. - | - | Supported Drivers: "local", "ftp", "sftp", "s3" - | - */ - - 'disks' => [ - - 'local' => [ - 'driver' => 'local', - 'root' => storage_path('app'), - ], - - 'public' => [ - 'driver' => 'local', - 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', - 'visibility' => 'public', - ], - - '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), - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter09/onlineStore/config/hashing.php b/Chapter09/onlineStore/config/hashing.php deleted file mode 100644 index bcd3be4..0000000 --- a/Chapter09/onlineStore/config/hashing.php +++ /dev/null @@ -1,52 +0,0 @@ - '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/Chapter09/onlineStore/config/logging.php b/Chapter09/onlineStore/config/logging.php deleted file mode 100644 index fefe088..0000000 --- a/Chapter09/onlineStore/config/logging.php +++ /dev/null @@ -1,119 +0,0 @@ - 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' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), - - /* - |-------------------------------------------------------------------------- - | 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'), - ], - - 'daily' => [ - 'driver' => 'daily', - 'path' => storage_path('logs/laravel.log'), - 'level' => env('LOG_LEVEL', 'debug'), - 'days' => 14, - ], - - 'slack' => [ - 'driver' => 'slack', - 'url' => env('LOG_SLACK_WEBHOOK_URL'), - 'username' => 'Laravel Log', - 'emoji' => ':boom:', - 'level' => env('LOG_LEVEL', 'critical'), - ], - - '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'), - ], - ], - - 'stderr' => [ - 'driver' => 'monolog', - 'level' => env('LOG_LEVEL', 'debug'), - 'handler' => StreamHandler::class, - 'formatter' => env('LOG_STDERR_FORMATTER'), - 'with' => [ - 'stream' => 'php://stderr', - ], - ], - - 'syslog' => [ - 'driver' => 'syslog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'errorlog' => [ - 'driver' => 'errorlog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'null' => [ - 'driver' => 'monolog', - 'handler' => NullHandler::class, - ], - - 'emergency' => [ - 'path' => storage_path('logs/laravel.log'), - ], - ], - -]; diff --git a/Chapter09/onlineStore/config/mail.php b/Chapter09/onlineStore/config/mail.php deleted file mode 100644 index 87b6fe3..0000000 --- a/Chapter09/onlineStore/config/mail.php +++ /dev/null @@ -1,117 +0,0 @@ - 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", - | "postmark", "log", "array", "failover" - | - */ - - 'mailers' => [ - 'smtp' => [ - 'transport' => 'smtp', - '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, - ], - - 'ses' => [ - 'transport' => 'ses', - ], - - 'mailgun' => [ - 'transport' => 'mailgun', - ], - - 'postmark' => [ - 'transport' => 'postmark', - ], - - 'sendmail' => [ - 'transport' => 'sendmail', - 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -t -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/Chapter09/onlineStore/config/queue.php b/Chapter09/onlineStore/config/queue.php deleted file mode 100644 index 25ea5a8..0000000 --- a/Chapter09/onlineStore/config/queue.php +++ /dev/null @@ -1,93 +0,0 @@ - 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, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter09/onlineStore/config/sanctum.php b/Chapter09/onlineStore/config/sanctum.php deleted file mode 100644 index 9281c92..0000000 --- a/Chapter09/onlineStore/config/sanctum.php +++ /dev/null @@ -1,65 +0,0 @@ - explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( - '%s%s', - 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', - env('APP_URL') ? ','.parse_url(env('APP_URL'), PHP_URL_HOST) : '' - ))), - - /* - |-------------------------------------------------------------------------- - | 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/Chapter09/onlineStore/config/services.php b/Chapter09/onlineStore/config/services.php deleted file mode 100644 index 2a1d616..0000000 --- a/Chapter09/onlineStore/config/services.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - 'domain' => env('MAILGUN_DOMAIN'), - 'secret' => env('MAILGUN_SECRET'), - 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), - ], - - '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/Chapter09/onlineStore/config/session.php b/Chapter09/onlineStore/config/session.php deleted file mode 100644 index 8fed97c..0000000 --- a/Chapter09/onlineStore/config/session.php +++ /dev/null @@ -1,201 +0,0 @@ - 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/Chapter09/onlineStore/config/view.php b/Chapter09/onlineStore/config/view.php deleted file mode 100644 index 22b8a18..0000000 --- a/Chapter09/onlineStore/config/view.php +++ /dev/null @@ -1,36 +0,0 @@ - [ - 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/Chapter09/onlineStore/database/.gitignore b/Chapter09/onlineStore/database/.gitignore deleted file mode 100644 index 9b19b93..0000000 --- a/Chapter09/onlineStore/database/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.sqlite* diff --git a/Chapter09/onlineStore/database/factories/UserFactory.php b/Chapter09/onlineStore/database/factories/UserFactory.php deleted file mode 100644 index d6ca926..0000000 --- a/Chapter09/onlineStore/database/factories/UserFactory.php +++ /dev/null @@ -1,42 +0,0 @@ - - */ -class UserFactory extends Factory -{ - /** - * Define the model's default state. - * - * @return array - */ - public function definition() - { - return [ - 'name' => $this->faker->name(), - 'email' => $this->faker->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. - * - * @return \Illuminate\Database\Eloquent\Factories\Factory - */ - public function unverified() - { - return $this->state(function (array $attributes) { - return [ - 'email_verified_at' => null, - ]; - }); - } -} diff --git a/Chapter09/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php b/Chapter09/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php deleted file mode 100644 index cf6b776..0000000 --- a/Chapter09/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->string('name'); - $table->string('email')->unique(); - $table->timestamp('email_verified_at')->nullable(); - $table->string('password'); - $table->rememberToken(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('users'); - } -}; diff --git a/Chapter09/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php b/Chapter09/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php deleted file mode 100644 index fcacb80..0000000 --- a/Chapter09/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php +++ /dev/null @@ -1,32 +0,0 @@ -string('email')->index(); - $table->string('token'); - $table->timestamp('created_at')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('password_resets'); - } -}; diff --git a/Chapter09/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/Chapter09/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php deleted file mode 100644 index 1719198..0000000 --- a/Chapter09/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php +++ /dev/null @@ -1,36 +0,0 @@ -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. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('failed_jobs'); - } -}; diff --git a/Chapter09/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/Chapter09/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php deleted file mode 100644 index fd235f8..0000000 --- a/Chapter09/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->morphs('tokenable'); - $table->string('name'); - $table->string('token', 64)->unique(); - $table->text('abilities')->nullable(); - $table->timestamp('last_used_at')->nullable(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('personal_access_tokens'); - } -}; diff --git a/Chapter09/onlineStore/database/seeders/DatabaseSeeder.php b/Chapter09/onlineStore/database/seeders/DatabaseSeeder.php deleted file mode 100644 index 71f673f..0000000 --- a/Chapter09/onlineStore/database/seeders/DatabaseSeeder.php +++ /dev/null @@ -1,19 +0,0 @@ -create(); - } -} diff --git a/Chapter09/onlineStore/lang/en.json b/Chapter09/onlineStore/lang/en.json deleted file mode 100644 index 577680d..0000000 --- a/Chapter09/onlineStore/lang/en.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "The :attribute must contain at least one letter.": "The :attribute must contain at least one letter.", - "The :attribute must contain at least one number.": "The :attribute must contain at least one number.", - "The :attribute must contain at least one symbol.": "The :attribute must contain at least one symbol.", - "The :attribute must contain at least one uppercase and one lowercase letter.": "The :attribute must contain at least one uppercase and one lowercase letter.", - "The given :attribute has appeared in a data leak. Please choose a different :attribute.": "The given :attribute has appeared in a data leak. Please choose a different :attribute." -} diff --git a/Chapter09/onlineStore/lang/en/auth.php b/Chapter09/onlineStore/lang/en/auth.php deleted file mode 100644 index 6598e2c..0000000 --- a/Chapter09/onlineStore/lang/en/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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/Chapter09/onlineStore/lang/en/pagination.php b/Chapter09/onlineStore/lang/en/pagination.php deleted file mode 100644 index d481411..0000000 --- a/Chapter09/onlineStore/lang/en/pagination.php +++ /dev/null @@ -1,19 +0,0 @@ - '« Previous', - 'next' => 'Next »', - -]; diff --git a/Chapter09/onlineStore/lang/en/passwords.php b/Chapter09/onlineStore/lang/en/passwords.php deleted file mode 100644 index 2345a56..0000000 --- a/Chapter09/onlineStore/lang/en/passwords.php +++ /dev/null @@ -1,22 +0,0 @@ - '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/Chapter09/onlineStore/lang/en/validation.php b/Chapter09/onlineStore/lang/en/validation.php deleted file mode 100644 index 783003c..0000000 --- a/Chapter09/onlineStore/lang/en/validation.php +++ /dev/null @@ -1,163 +0,0 @@ - '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' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - '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' => [ - 'numeric' => 'The :attribute must be greater than :value.', - 'file' => 'The :attribute must be greater than :value kilobytes.', - 'string' => 'The :attribute must be greater than :value characters.', - 'array' => 'The :attribute must have more than :value items.', - ], - 'gte' => [ - 'numeric' => 'The :attribute must be greater than or equal to :value.', - 'file' => 'The :attribute must be greater than or equal to :value kilobytes.', - 'string' => 'The :attribute must be greater than or equal to :value characters.', - 'array' => 'The :attribute must have :value items or more.', - ], - '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' => [ - 'numeric' => 'The :attribute must be less than :value.', - 'file' => 'The :attribute must be less than :value kilobytes.', - 'string' => 'The :attribute must be less than :value characters.', - 'array' => 'The :attribute must have less than :value items.', - ], - 'lte' => [ - 'numeric' => 'The :attribute must be less than or equal to :value.', - 'file' => 'The :attribute must be less than or equal to :value kilobytes.', - 'string' => 'The :attribute must be less than or equal to :value characters.', - 'array' => 'The :attribute must not have more than :value items.', - ], - 'mac_address' => 'The :attribute must be a valid MAC address.', - 'max' => [ - 'numeric' => 'The :attribute must not be greater than :max.', - 'file' => 'The :attribute must not be greater than :max kilobytes.', - 'string' => 'The :attribute must not be greater than :max characters.', - 'array' => 'The :attribute must not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - '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.', - 'password' => 'The password is incorrect.', - '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' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - '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/Chapter09/onlineStore/package.json b/Chapter09/onlineStore/package.json deleted file mode 100644 index 7a9aecd..0000000 --- a/Chapter09/onlineStore/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "private": true, - "scripts": { - "dev": "npm run development", - "development": "mix", - "watch": "mix watch", - "watch-poll": "mix watch -- --watch-options-poll=1000", - "hot": "mix watch --hot", - "prod": "npm run production", - "production": "mix --production" - }, - "devDependencies": { - "axios": "^0.25", - "laravel-mix": "^6.0.6", - "lodash": "^4.17.19", - "postcss": "^8.1.14" - } -} diff --git a/Chapter09/onlineStore/phpcs.xml b/Chapter09/onlineStore/phpcs.xml deleted file mode 100644 index a1cf2b6..0000000 --- a/Chapter09/onlineStore/phpcs.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - The coding standard for the Online Store project - - app/ - config/ - database/ - routes/ - */migrations/* - diff --git a/Chapter09/onlineStore/phpunit.xml b/Chapter09/onlineStore/phpunit.xml deleted file mode 100644 index 2ac86a1..0000000 --- a/Chapter09/onlineStore/phpunit.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - ./tests/Unit - - - ./tests/Feature - - - - - ./app - - - - - - - - - - - - - - diff --git a/Chapter09/onlineStore/public/.htaccess b/Chapter09/onlineStore/public/.htaccess deleted file mode 100644 index 3aec5e2..0000000 --- a/Chapter09/onlineStore/public/.htaccess +++ /dev/null @@ -1,21 +0,0 @@ - - - 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/Chapter09/onlineStore/public/css/app.css b/Chapter09/onlineStore/public/css/app.css deleted file mode 100644 index cabac36..0000000 --- a/Chapter09/onlineStore/public/css/app.css +++ /dev/null @@ -1,20 +0,0 @@ -.bg-secondary { - background-color: #2c3e50 !important; -} - -.copyright { - background-color: #1a252f; -} - -.bg-primary { - background-color: #1abc9c !important; -} - -nav{ - font-weight: 700; -} - -.img-card{ - height: 18vw; - object-fit: cover; -} diff --git a/Chapter09/onlineStore/public/favicon.ico b/Chapter09/onlineStore/public/favicon.ico deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter09/onlineStore/public/img/game.png b/Chapter09/onlineStore/public/img/game.png deleted file mode 100644 index 85420e8bbc16098bf26b4ee63bde0e91a19d1f2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25896 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 cz>% diff --git a/Chapter09/onlineStore/public/img/safe.png b/Chapter09/onlineStore/public/img/safe.png deleted file mode 100644 index 445942c707af53210931f9f4f99f6d3cb69e5d89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19240 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
w==XB0?3|p=#`o%NsudE(E-U#KS3Snw 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 o>ir+C;RN10sIS0&a;pmake(Kernel::class); - -$response = $kernel->handle( - $request = Request::capture() -)->send(); - -$kernel->terminate($request, $response); diff --git a/Chapter09/onlineStore/public/robots.txt b/Chapter09/onlineStore/public/robots.txt deleted file mode 100644 index eb05362..0000000 --- a/Chapter09/onlineStore/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: diff --git a/Chapter09/onlineStore/resources/css/app.css b/Chapter09/onlineStore/resources/css/app.css deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter09/onlineStore/resources/js/app.js b/Chapter09/onlineStore/resources/js/app.js deleted file mode 100644 index 40c55f6..0000000 --- a/Chapter09/onlineStore/resources/js/app.js +++ /dev/null @@ -1 +0,0 @@ -require('./bootstrap'); diff --git a/Chapter09/onlineStore/resources/js/bootstrap.js b/Chapter09/onlineStore/resources/js/bootstrap.js deleted file mode 100644 index 6922577..0000000 --- a/Chapter09/onlineStore/resources/js/bootstrap.js +++ /dev/null @@ -1,28 +0,0 @@ -window._ = require('lodash'); - -/** - * 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 = require('axios'); - -window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; - -/** - * 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'; - -// window.Pusher = require('pusher-js'); - -// window.Echo = new Echo({ -// broadcaster: 'pusher', -// key: process.env.MIX_PUSHER_APP_KEY, -// cluster: process.env.MIX_PUSHER_APP_CLUSTER, -// forceTLS: true -// }); diff --git a/Chapter09/onlineStore/resources/views/home/about.blade.php b/Chapter09/onlineStore/resources/views/home/about.blade.php deleted file mode 100644 index f79abf3..0000000 --- a/Chapter09/onlineStore/resources/views/home/about.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
-
-
-

{{ $viewData["description"] }}

-
-
-

{{ $viewData["author"] }}

-
-
-
-@endsection diff --git a/Chapter09/onlineStore/resources/views/home/index.blade.php b/Chapter09/onlineStore/resources/views/home/index.blade.php deleted file mode 100644 index 1affb20..0000000 --- a/Chapter09/onlineStore/resources/views/home/index.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('content') -
-
- -
-
- -
-
- -
-
-@endsection diff --git a/Chapter09/onlineStore/resources/views/layouts/app.blade.php b/Chapter09/onlineStore/resources/views/layouts/app.blade.php deleted file mode 100644 index eee7fcb..0000000 --- a/Chapter09/onlineStore/resources/views/layouts/app.blade.php +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - @yield('title', 'Online Store') - - - -
- -
-
-

@yield('subtitle', 'A Laravel Online Store')

-
-
- - -
- @yield('content') -
- - - - - - - diff --git a/Chapter09/onlineStore/resources/views/product/index.blade.php b/Chapter09/onlineStore/resources/views/product/index.blade.php deleted file mode 100644 index 1f766f1..0000000 --- a/Chapter09/onlineStore/resources/views/product/index.blade.php +++ /dev/null @@ -1,18 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
- @foreach ($viewData["products"] as $product) -
- -
- @endforeach -
-@endsection diff --git a/Chapter09/onlineStore/resources/views/product/show.blade.php b/Chapter09/onlineStore/resources/views/product/show.blade.php deleted file mode 100644 index 01d056e..0000000 --- a/Chapter09/onlineStore/resources/views/product/show.blade.php +++ /dev/null @@ -1,21 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
-
-
- -
-
-
-
- {{ $viewData["product"]["name"] }} (${{ $viewData["product"]["price"] }}) -
-

{{ $viewData["product"]["description"] }}

-

Add to Cart

-
-
-
-
-@endsection diff --git a/Chapter09/onlineStore/resources/views/welcome.blade.php b/Chapter09/onlineStore/resources/views/welcome.blade.php deleted file mode 100644 index c587c72..0000000 --- a/Chapter09/onlineStore/resources/views/welcome.blade.php +++ /dev/null @@ -1,7 +0,0 @@ -@extends('layouts.app') -@section('title', 'Home Page - Online Store') -@section('content') -
- Welcome to the application -
-@endsection \ No newline at end of file diff --git a/Chapter09/onlineStore/routes/api.php b/Chapter09/onlineStore/routes/api.php deleted file mode 100644 index eb6fa48..0000000 --- a/Chapter09/onlineStore/routes/api.php +++ /dev/null @@ -1,19 +0,0 @@ -get('/user', function (Request $request) { - return $request->user(); -}); diff --git a/Chapter09/onlineStore/routes/channels.php b/Chapter09/onlineStore/routes/channels.php deleted file mode 100644 index 5d451e1..0000000 --- a/Chapter09/onlineStore/routes/channels.php +++ /dev/null @@ -1,18 +0,0 @@ -id === (int) $id; -}); diff --git a/Chapter09/onlineStore/routes/console.php b/Chapter09/onlineStore/routes/console.php deleted file mode 100644 index e05f4c9..0000000 --- a/Chapter09/onlineStore/routes/console.php +++ /dev/null @@ -1,19 +0,0 @@ -comment(Inspiring::quote()); -})->purpose('Display an inspiring quote'); diff --git a/Chapter09/onlineStore/routes/web.php b/Chapter09/onlineStore/routes/web.php deleted file mode 100644 index 0f5e40f..0000000 --- a/Chapter09/onlineStore/routes/web.php +++ /dev/null @@ -1,19 +0,0 @@ -name("home.index"); -Route::get('/about', 'App\Http\Controllers\HomeController@about')->name("home.about"); -Route::get('/products', 'App\Http\Controllers\ProductController@index')->name("product.index"); -Route::get('/products/{id}', 'App\Http\Controllers\ProductController@show')->name("product.show"); diff --git a/Chapter09/onlineStore/storage/app/.gitignore b/Chapter09/onlineStore/storage/app/.gitignore deleted file mode 100644 index 8f4803c..0000000 --- a/Chapter09/onlineStore/storage/app/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!public/ -!.gitignore diff --git a/Chapter09/onlineStore/storage/app/public/.gitignore b/Chapter09/onlineStore/storage/app/public/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter09/onlineStore/storage/app/public/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter09/onlineStore/storage/framework/.gitignore b/Chapter09/onlineStore/storage/framework/.gitignore deleted file mode 100644 index 05c4471..0000000 --- a/Chapter09/onlineStore/storage/framework/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -compiled.php -config.php -down -events.scanned.php -maintenance.php -routes.php -routes.scanned.php -schedule-* -services.json diff --git a/Chapter09/onlineStore/storage/framework/cache/.gitignore b/Chapter09/onlineStore/storage/framework/cache/.gitignore deleted file mode 100644 index 01e4a6c..0000000 --- a/Chapter09/onlineStore/storage/framework/cache/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!data/ -!.gitignore diff --git a/Chapter09/onlineStore/storage/framework/cache/data/.gitignore b/Chapter09/onlineStore/storage/framework/cache/data/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter09/onlineStore/storage/framework/cache/data/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter09/onlineStore/storage/framework/sessions/.gitignore b/Chapter09/onlineStore/storage/framework/sessions/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter09/onlineStore/storage/framework/sessions/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter09/onlineStore/storage/framework/testing/.gitignore b/Chapter09/onlineStore/storage/framework/testing/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter09/onlineStore/storage/framework/testing/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter09/onlineStore/storage/framework/views/.gitignore b/Chapter09/onlineStore/storage/framework/views/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter09/onlineStore/storage/framework/views/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter09/onlineStore/storage/logs/.gitignore b/Chapter09/onlineStore/storage/logs/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter09/onlineStore/storage/logs/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter09/onlineStore/tests/CreatesApplication.php b/Chapter09/onlineStore/tests/CreatesApplication.php deleted file mode 100644 index 547152f..0000000 --- a/Chapter09/onlineStore/tests/CreatesApplication.php +++ /dev/null @@ -1,22 +0,0 @@ -make(Kernel::class)->bootstrap(); - - return $app; - } -} diff --git a/Chapter09/onlineStore/tests/Feature/ExampleTest.php b/Chapter09/onlineStore/tests/Feature/ExampleTest.php deleted file mode 100644 index 78ccc21..0000000 --- a/Chapter09/onlineStore/tests/Feature/ExampleTest.php +++ /dev/null @@ -1,21 +0,0 @@ -get('/'); - - $response->assertStatus(200); - } -} diff --git a/Chapter09/onlineStore/tests/TestCase.php b/Chapter09/onlineStore/tests/TestCase.php deleted file mode 100644 index 2932d4a..0000000 --- a/Chapter09/onlineStore/tests/TestCase.php +++ /dev/null @@ -1,10 +0,0 @@ -assertTrue(true); - } -} diff --git a/Chapter09/onlineStore/webpack.mix.js b/Chapter09/onlineStore/webpack.mix.js deleted file mode 100644 index 2a22dc1..0000000 --- a/Chapter09/onlineStore/webpack.mix.js +++ /dev/null @@ -1,17 +0,0 @@ -const mix = require('laravel-mix'); - -/* - |-------------------------------------------------------------------------- - | Mix Asset Management - |-------------------------------------------------------------------------- - | - | Mix provides a clean, fluent API for defining some Webpack build steps - | for your Laravel applications. By default, we are compiling the CSS - | file for the application as well as bundling up all the JS files. - | - */ - -mix.js('resources/js/app.js', 'public/js') - .postCss('resources/css/app.css', 'public/css', [ - // - ]); diff --git a/Chapter11/onlineStore/.editorconfig b/Chapter11/onlineStore/.editorconfig deleted file mode 100644 index 1671c9b..0000000 --- a/Chapter11/onlineStore/.editorconfig +++ /dev/null @@ -1,18 +0,0 @@ -root = true - -[*] -charset = utf-8 -end_of_line = lf -insert_final_newline = true -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true - -[*.md] -trim_trailing_whitespace = false - -[*.{yml,yaml}] -indent_size = 2 - -[docker-compose.yml] -indent_size = 4 diff --git a/Chapter11/onlineStore/.env.example b/Chapter11/onlineStore/.env.example deleted file mode 100644 index 8510237..0000000 --- a/Chapter11/onlineStore/.env.example +++ /dev/null @@ -1,52 +0,0 @@ -APP_NAME=Laravel -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=laravel -DB_USERNAME=root -DB_PASSWORD= - -BROADCAST_DRIVER=log -CACHE_DRIVER=file -FILESYSTEM_DISK=local -QUEUE_CONNECTION=sync -SESSION_DRIVER=file -SESSION_LIFETIME=120 - -MEMCACHED_HOST=127.0.0.1 - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -MAIL_MAILER=smtp -MAIL_HOST=mailhog -MAIL_PORT=1025 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS=null -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_APP_CLUSTER=mt1 - -MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/Chapter11/onlineStore/.gitattributes b/Chapter11/onlineStore/.gitattributes deleted file mode 100644 index 510d996..0000000 --- a/Chapter11/onlineStore/.gitattributes +++ /dev/null @@ -1,10 +0,0 @@ -* text=auto - -*.blade.php diff=html -*.css diff=css -*.html diff=html -*.md diff=markdown -*.php diff=php - -/.github export-ignore -CHANGELOG.md export-ignore diff --git a/Chapter11/onlineStore/.gitignore b/Chapter11/onlineStore/.gitignore deleted file mode 100644 index eb003b0..0000000 --- a/Chapter11/onlineStore/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -/node_modules -/public/hot -/public/storage -/storage/*.key -/vendor -.env -.env.backup -.phpunit.result.cache -docker-compose.override.yml -Homestead.json -Homestead.yaml -npm-debug.log -yarn-error.log -/.idea -/.vscode diff --git a/Chapter11/onlineStore/.styleci.yml b/Chapter11/onlineStore/.styleci.yml deleted file mode 100644 index 679a631..0000000 --- a/Chapter11/onlineStore/.styleci.yml +++ /dev/null @@ -1,13 +0,0 @@ -php: - preset: laravel - version: 8 - disabled: - - no_unused_imports - finder: - not-name: - - index.php -js: - finder: - not-name: - - webpack.mix.js -css: true diff --git a/Chapter11/onlineStore/CHAPTER-11-SQL-QUERY.txt b/Chapter11/onlineStore/CHAPTER-11-SQL-QUERY.txt deleted file mode 100644 index da7a2a3..0000000 --- a/Chapter11/onlineStore/CHAPTER-11-SQL-QUERY.txt +++ /dev/null @@ -1,4 +0,0 @@ -INSERT INTO products (id, name, description, image, price, created_at, updated_at) VALUES (NULL, 'TV', 'Best TV', 'game.png', '1000', '2021-10-01 00:00:00', '2021-10-01 00:00:00'); -INSERT INTO products (id, name, description, image, price, created_at, updated_at) VALUES (NULL, 'iPhone', 'Best iPhone', 'safe.png', '999', '2021-10-01 00:00:00', '2021-10-01 00:00:00'); -INSERT INTO products (id, name, description, image, price, created_at, updated_at) VALUES (NULL, 'Chromecast', 'Best Chromecast', 'submarine.png', '30', '2021-10-01 00:00:00', '2021-10-01 00:00:00'); -INSERT INTO products (id, name, description, image, price, created_at, updated_at) VALUES (NULL, 'Glasses', 'Best Glasses', 'game.png', '100', '2021-10-01 00:00:00', '2021-10-01 00:00:00'); \ No newline at end of file diff --git a/Chapter11/onlineStore/README.md b/Chapter11/onlineStore/README.md deleted file mode 100644 index e118f46..0000000 --- a/Chapter11/onlineStore/README.md +++ /dev/null @@ -1,8 +0,0 @@ -## CHAPTER 11 - SQL QUERY - -``` -INSERT INTO products (id, name, description, image, price, created_at, updated_at) VALUES (NULL, 'TV', 'Best TV', 'game.png', '1000', '2021-10-01 00:00:00', '2021-10-01 00:00:00'); -INSERT INTO products (id, name, description, image, price, created_at, updated_at) VALUES (NULL, 'iPhone', 'Best iPhone', 'safe.png', '999', '2021-10-01 00:00:00', '2021-10-01 00:00:00'); -INSERT INTO products (id, name, description, image, price, created_at, updated_at) VALUES (NULL, 'Chromecast', 'Best Chromecast', 'submarine.png', '30', '2021-10-01 00:00:00', '2021-10-01 00:00:00'); -INSERT INTO products (id, name, description, image, price, created_at, updated_at) VALUES (NULL, 'Glasses', 'Best Glasses', 'game.png', '100', '2021-10-01 00:00:00', '2021-10-01 00:00:00'); -``` diff --git a/Chapter11/onlineStore/app/Console/Kernel.php b/Chapter11/onlineStore/app/Console/Kernel.php deleted file mode 100644 index d8bc1d2..0000000 --- a/Chapter11/onlineStore/app/Console/Kernel.php +++ /dev/null @@ -1,32 +0,0 @@ -command('inspire')->hourly(); - } - - /** - * Register the commands for the application. - * - * @return void - */ - protected function commands() - { - $this->load(__DIR__.'/Commands'); - - require base_path('routes/console.php'); - } -} diff --git a/Chapter11/onlineStore/app/Exceptions/Handler.php b/Chapter11/onlineStore/app/Exceptions/Handler.php deleted file mode 100644 index 8e7fbd1..0000000 --- a/Chapter11/onlineStore/app/Exceptions/Handler.php +++ /dev/null @@ -1,41 +0,0 @@ -> - */ - protected $dontReport = [ - // - ]; - - /** - * A list of the inputs that are never flashed for validation exceptions. - * - * @var array - */ - protected $dontFlash = [ - 'current_password', - 'password', - 'password_confirmation', - ]; - - /** - * Register the exception handling callbacks for the application. - * - * @return void - */ - public function register() - { - $this->reportable(function (Throwable $e) { - // - }); - } -} diff --git a/Chapter11/onlineStore/app/Http/Controllers/Controller.php b/Chapter11/onlineStore/app/Http/Controllers/Controller.php deleted file mode 100644 index a0a2a8a..0000000 --- a/Chapter11/onlineStore/app/Http/Controllers/Controller.php +++ /dev/null @@ -1,13 +0,0 @@ -with("viewData", $viewData); - } - - public function about() - { - $viewData = []; - $viewData["title"] = "About us - Online Store"; - $viewData["subtitle"] = "About us"; - $viewData["description"] = "This is an about page ..."; - $viewData["author"] = "Developed by: Your Name"; - return view('home.about')->with("viewData", $viewData); - } -} diff --git a/Chapter11/onlineStore/app/Http/Controllers/ProductController.php b/Chapter11/onlineStore/app/Http/Controllers/ProductController.php deleted file mode 100644 index 552a472..0000000 --- a/Chapter11/onlineStore/app/Http/Controllers/ProductController.php +++ /dev/null @@ -1,34 +0,0 @@ -"1", "name"=>"TV", "description"=>"Best TV", "image" => "game.png", "price"=>"1000"], - ["id"=>"2", "name"=>"iPhone", "description"=>"Best iPhone", "image" => "safe.png", "price"=>"999"], - ["id"=>"3", "name"=>"Chromecast", "description"=>"Best Chromecast", "image" => "submarine.png", "price"=>"30"], - ["id"=>"4", "name"=>"Glasses", "description"=>"Best Glasses", "image" => "game.png", "price"=>"100"] - ]; - - public function index() - { - $viewData = []; - $viewData["title"] = "Products - Online Store"; - $viewData["subtitle"] = "List of products"; - $viewData["products"] = ProductController::$products; - return view('product.index')->with("viewData", $viewData); - } - - public function show($id) - { - $viewData = []; - $product = ProductController::$products[$id-1]; - $viewData["title"] = $product["name"]." - Online Store"; - $viewData["subtitle"] = $product["name"]." - Product information"; - $viewData["product"] = $product; - return view('product.show')->with("viewData", $viewData); - } -} diff --git a/Chapter11/onlineStore/app/Http/Kernel.php b/Chapter11/onlineStore/app/Http/Kernel.php deleted file mode 100644 index d3722c2..0000000 --- a/Chapter11/onlineStore/app/Http/Kernel.php +++ /dev/null @@ -1,67 +0,0 @@ - - */ - protected $middleware = [ - // \App\Http\Middleware\TrustHosts::class, - \App\Http\Middleware\TrustProxies::class, - \Fruitcake\Cors\HandleCors::class, - \App\Http\Middleware\PreventRequestsDuringMaintenance::class, - \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, - \App\Http\Middleware\TrimStrings::class, - \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, - ]; - - /** - * The application's route middleware groups. - * - * @var array> - */ - protected $middlewareGroups = [ - 'web' => [ - \App\Http\Middleware\EncryptCookies::class, - \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, - \Illuminate\Session\Middleware\StartSession::class, - // \Illuminate\Session\Middleware\AuthenticateSession::class, - \Illuminate\View\Middleware\ShareErrorsFromSession::class, - \App\Http\Middleware\VerifyCsrfToken::class, - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - - 'api' => [ - // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, - 'throttle:api', - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - ]; - - /** - * The application's route middleware. - * - * These middleware may be assigned to groups or used individually. - * - * @var array - */ - protected $routeMiddleware = [ - 'auth' => \App\Http\Middleware\Authenticate::class, - 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::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, - 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, - 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, - 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, - ]; -} diff --git a/Chapter11/onlineStore/app/Http/Middleware/Authenticate.php b/Chapter11/onlineStore/app/Http/Middleware/Authenticate.php deleted file mode 100644 index 704089a..0000000 --- a/Chapter11/onlineStore/app/Http/Middleware/Authenticate.php +++ /dev/null @@ -1,21 +0,0 @@ -expectsJson()) { - return route('login'); - } - } -} diff --git a/Chapter11/onlineStore/app/Http/Middleware/EncryptCookies.php b/Chapter11/onlineStore/app/Http/Middleware/EncryptCookies.php deleted file mode 100644 index 867695b..0000000 --- a/Chapter11/onlineStore/app/Http/Middleware/EncryptCookies.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter11/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/Chapter11/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php deleted file mode 100644 index 74cbd9a..0000000 --- a/Chapter11/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter11/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php b/Chapter11/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php deleted file mode 100644 index a2813a0..0000000 --- a/Chapter11/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php +++ /dev/null @@ -1,32 +0,0 @@ -check()) { - return redirect(RouteServiceProvider::HOME); - } - } - - return $next($request); - } -} diff --git a/Chapter11/onlineStore/app/Http/Middleware/TrimStrings.php b/Chapter11/onlineStore/app/Http/Middleware/TrimStrings.php deleted file mode 100644 index 88cadca..0000000 --- a/Chapter11/onlineStore/app/Http/Middleware/TrimStrings.php +++ /dev/null @@ -1,19 +0,0 @@ - - */ - protected $except = [ - 'current_password', - 'password', - 'password_confirmation', - ]; -} diff --git a/Chapter11/onlineStore/app/Http/Middleware/TrustHosts.php b/Chapter11/onlineStore/app/Http/Middleware/TrustHosts.php deleted file mode 100644 index 7186414..0000000 --- a/Chapter11/onlineStore/app/Http/Middleware/TrustHosts.php +++ /dev/null @@ -1,20 +0,0 @@ - - */ - public function hosts() - { - return [ - $this->allSubdomainsOfApplicationUrl(), - ]; - } -} diff --git a/Chapter11/onlineStore/app/Http/Middleware/TrustProxies.php b/Chapter11/onlineStore/app/Http/Middleware/TrustProxies.php deleted file mode 100644 index 3391630..0000000 --- a/Chapter11/onlineStore/app/Http/Middleware/TrustProxies.php +++ /dev/null @@ -1,28 +0,0 @@ -|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/Chapter11/onlineStore/app/Http/Middleware/VerifyCsrfToken.php b/Chapter11/onlineStore/app/Http/Middleware/VerifyCsrfToken.php deleted file mode 100644 index 9e86521..0000000 --- a/Chapter11/onlineStore/app/Http/Middleware/VerifyCsrfToken.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter11/onlineStore/app/Models/User.php b/Chapter11/onlineStore/app/Models/User.php deleted file mode 100644 index 8996368..0000000 --- a/Chapter11/onlineStore/app/Models/User.php +++ /dev/null @@ -1,44 +0,0 @@ - - */ - 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', - ]; -} diff --git a/Chapter11/onlineStore/app/Providers/AppServiceProvider.php b/Chapter11/onlineStore/app/Providers/AppServiceProvider.php deleted file mode 100644 index ee8ca5b..0000000 --- a/Chapter11/onlineStore/app/Providers/AppServiceProvider.php +++ /dev/null @@ -1,28 +0,0 @@ - - */ - protected $policies = [ - // 'App\Models\Model' => 'App\Policies\ModelPolicy', - ]; - - /** - * Register any authentication / authorization services. - * - * @return void - */ - public function boot() - { - $this->registerPolicies(); - - // - } -} diff --git a/Chapter11/onlineStore/app/Providers/BroadcastServiceProvider.php b/Chapter11/onlineStore/app/Providers/BroadcastServiceProvider.php deleted file mode 100644 index 395c518..0000000 --- a/Chapter11/onlineStore/app/Providers/BroadcastServiceProvider.php +++ /dev/null @@ -1,21 +0,0 @@ -> - */ - protected $listen = [ - Registered::class => [ - SendEmailVerificationNotification::class, - ], - ]; - - /** - * Register any events for your application. - * - * @return void - */ - public function boot() - { - // - } -} diff --git a/Chapter11/onlineStore/app/Providers/RouteServiceProvider.php b/Chapter11/onlineStore/app/Providers/RouteServiceProvider.php deleted file mode 100644 index 7c17d1f..0000000 --- a/Chapter11/onlineStore/app/Providers/RouteServiceProvider.php +++ /dev/null @@ -1,63 +0,0 @@ -configureRateLimiting(); - - $this->routes(function () { - Route::prefix('api') - ->middleware('api') - ->namespace($this->namespace) - ->group(base_path('routes/api.php')); - - Route::middleware('web') - ->namespace($this->namespace) - ->group(base_path('routes/web.php')); - }); - } - - /** - * Configure the rate limiters for the application. - * - * @return void - */ - protected function configureRateLimiting() - { - RateLimiter::for('api', function (Request $request) { - return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); - }); - } -} diff --git a/Chapter11/onlineStore/artisan b/Chapter11/onlineStore/artisan deleted file mode 100644 index 67a3329..0000000 --- a/Chapter11/onlineStore/artisan +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env php -make(Illuminate\Contracts\Console\Kernel::class); - -$status = $kernel->handle( - $input = new Symfony\Component\Console\Input\ArgvInput, - new Symfony\Component\Console\Output\ConsoleOutput -); - -/* -|-------------------------------------------------------------------------- -| Shutdown The Application -|-------------------------------------------------------------------------- -| -| Once Artisan has finished running, we will fire off the shutdown events -| so that any final work may be done by the application before we shut -| down the process. This is the last thing to happen to the request. -| -*/ - -$kernel->terminate($input, $status); - -exit($status); diff --git a/Chapter11/onlineStore/bootstrap/app.php b/Chapter11/onlineStore/bootstrap/app.php deleted file mode 100644 index 037e17d..0000000 --- a/Chapter11/onlineStore/bootstrap/app.php +++ /dev/null @@ -1,55 +0,0 @@ -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/Chapter11/onlineStore/bootstrap/cache/.gitignore b/Chapter11/onlineStore/bootstrap/cache/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter11/onlineStore/bootstrap/cache/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter11/onlineStore/composer.json b/Chapter11/onlineStore/composer.json deleted file mode 100644 index f0f2eda..0000000 --- a/Chapter11/onlineStore/composer.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "name": "laravel/laravel", - "type": "project", - "description": "The Laravel Framework.", - "keywords": ["framework", "laravel"], - "license": "MIT", - "require": { - "php": "^8.0", - "fruitcake/laravel-cors": "^2.0.5", - "guzzlehttp/guzzle": "^7.2", - "laravel/framework": "^9.0", - "laravel/sanctum": "^2.14", - "laravel/tinker": "^2.7" - }, - "require-dev": { - "fakerphp/faker": "^1.9.1", - "laravel/sail": "^1.0.1", - "mockery/mockery": "^1.4.4", - "nunomaduro/collision": "^6.1", - "phpunit/phpunit": "^9.5.10", - "spatie/laravel-ignition": "^1.0", - "squizlabs/php_codesniffer": "^3.6" - }, - "autoload": { - "psr-4": { - "App\\": "app/", - "Database\\Factories\\": "database/factories/", - "Database\\Seeders\\": "database/seeders/" - } - }, - "autoload-dev": { - "psr-4": { - "Tests\\": "tests/" - } - }, - "scripts": { - "post-autoload-dump": [ - "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", - "@php artisan package:discover --ansi" - ], - "post-update-cmd": [ - "@php artisan vendor:publish --tag=laravel-assets --ansi --force" - ], - "post-root-package-install": [ - "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" - ], - "post-create-project-cmd": [ - "@php artisan key:generate --ansi" - ] - }, - "extra": { - "laravel": { - "dont-discover": [] - } - }, - "config": { - "optimize-autoloader": true, - "preferred-install": "dist", - "sort-packages": true - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/Chapter11/onlineStore/composer.lock b/Chapter11/onlineStore/composer.lock deleted file mode 100644 index b55e897..0000000 --- a/Chapter11/onlineStore/composer.lock +++ /dev/null @@ -1,7860 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "8bdcc31974d0d5a00db79c82827c8815", - "packages": [ - { - "name": "asm89/stack-cors", - "version": "v2.1.1", - "source": { - "type": "git", - "url": "https://github.com/asm89/stack-cors.git", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4|^5|^6" - }, - "require-dev": { - "phpunit/phpunit": "^7|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "psr-4": { - "Asm89\\Stack\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alexander", - "email": "iam.asm89@gmail.com" - } - ], - "description": "Cross-origin resource sharing library and stack middleware", - "homepage": "https://github.com/asm89/stack-cors", - "keywords": [ - "cors", - "stack" - ], - "support": { - "issues": "https://github.com/asm89/stack-cors/issues", - "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" - }, - "time": "2022-01-18T09:12:03+00:00" - }, - { - "name": "brick/math", - "version": "0.9.3", - "source": { - "type": "git", - "url": "https://github.com/brick/math.git", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", - "vimeo/psalm": "4.9.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Brick\\Math\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Arbitrary-precision arithmetic library", - "keywords": [ - "Arbitrary-precision", - "BigInteger", - "BigRational", - "arithmetic", - "bigdecimal", - "bignum", - "brick", - "math" - ], - "support": { - "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.9.3" - }, - "funding": [ - { - "url": "https://github.com/BenMorel", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/brick/math", - "type": "tidelift" - } - ], - "time": "2021-08-15T20:50:18+00:00" - }, - { - "name": "dflydev/dot-access-data", - "version": "v3.0.1", - "source": { - "type": "git", - "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c", - "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": "^3.14" - }, - "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.1" - }, - "time": "2021-08-13T13:06:58+00:00" - }, - { - "name": "doctrine/inflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "vimeo/psalm": "^4.10" - }, - "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.4" - }, - "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": "2021-10-22T20:16:43+00:00" - }, - { - "name": "doctrine/lexer", - "version": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" - } - }, - "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/1.2.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%2Flexer", - "type": "tidelift" - } - ], - "time": "2022-01-12T08:27:12+00:00" - }, - { - "name": "dragonmantank/cron-expression", - "version": "v3.3.1", - "source": { - "type": "git", - "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "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.1" - }, - "funding": [ - { - "url": "https://github.com/dragonmantank", - "type": "github" - } - ], - "time": "2022-01-18T15:43:28+00:00" - }, - { - "name": "egulias/email-validator", - "version": "3.1.2", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ee0db30118f661fb166bcffbf5d82032df484697", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^1.2", - "php": ">=7.2", - "symfony/polyfill-intl-idn": "^1.15" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^8.5.8|^9.3.3", - "vimeo/psalm": "^4" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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/3.1.2" - }, - "funding": [ - { - "url": "https://github.com/egulias", - "type": "github" - } - ], - "time": "2021-10-11T09:18:27+00:00" - }, - { - "name": "fruitcake/laravel-cors", - "version": "v2.0.5", - "source": { - "type": "git", - "url": "https://github.com/fruitcake/laravel-cors.git", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "shasum": "" - }, - "require": { - "asm89/stack-cors": "^2.0.1", - "illuminate/contracts": "^6|^7|^8|^9", - "illuminate/support": "^6|^7|^8|^9", - "php": ">=7.2", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4.3.4|^5|^6" - }, - "require-dev": { - "laravel/framework": "^6|^7.24|^8", - "orchestra/testbench-dusk": "^4|^5|^6|^7", - "phpunit/phpunit": "^6|^7|^8|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - }, - "laravel": { - "providers": [ - "Fruitcake\\Cors\\CorsServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Fruitcake\\Cors\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fruitcake", - "homepage": "https://fruitcake.nl" - }, - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", - "keywords": [ - "api", - "cors", - "crossdomain", - "laravel" - ], - "support": { - "issues": "https://github.com/fruitcake/laravel-cors/issues", - "source": "https://github.com/fruitcake/laravel-cors/tree/v2.0.5" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "time": "2022-01-03T14:53:04+00:00" - }, - { - "name": "graham-campbell/result-type", - "version": "v1.0.4", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "0690bde05318336c7221785f2a932467f98b64ca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/0690bde05318336c7221785f2a932467f98b64ca", - "reference": "0690bde05318336c7221785f2a932467f98b64ca", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "phpoption/phpoption": "^1.8" - }, - "require-dev": { - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", - "type": "tidelift" - } - ], - "time": "2021-11-21T21:41:47+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "7.4.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.8.3 || ^2.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.4.1", - "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.5 || ^9.3.5", - "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": { - "branch-alias": { - "dev-master": "7.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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.4.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": "2021-12-06T18:43:05+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "1.5.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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/1.5.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "time": "2021-10-22T20:56:57+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.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.4.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.8 || ^9.3.10" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "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.1.0" - }, - "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": "2021-10-06T17:43:30+00:00" - }, - { - "name": "laravel/framework", - "version": "v9.0.1", - "source": { - "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "shasum": "" - }, - "require": { - "doctrine/inflector": "^2.0", - "dragonmantank/cron-expression": "^3.1", - "egulias/email-validator": "^3.1", - "ext-mbstring": "*", - "ext-openssl": "*", - "laravel/serializable-closure": "^1.0", - "league/commonmark": "^2.2", - "league/flysystem": "^3.0", - "monolog/monolog": "^2.0", - "nesbot/carbon": "^2.53.1", - "php": "^8.0.2", - "psr/container": "^1.1.1|^2.0.1", - "psr/log": "^1.0|^2.0|^3.0", - "psr/simple-cache": "^1.0|^2.0|^3.0", - "ramsey/uuid": "^4.2.2", - "symfony/console": "^6.0", - "symfony/error-handler": "^6.0", - "symfony/finder": "^6.0", - "symfony/http-foundation": "^6.0", - "symfony/http-kernel": "^6.0", - "symfony/mailer": "^6.0", - "symfony/mime": "^6.0", - "symfony/process": "^6.0", - "symfony/routing": "^6.0", - "symfony/var-dumper": "^6.0", - "tijsverkoyen/css-to-inline-styles": "^2.2.2", - "vlucas/phpdotenv": "^5.4.1", - "voku/portable-ascii": "^2.0" - }, - "conflict": { - "tightenco/collect": "<5.5.33" - }, - "provide": { - "psr/container-implementation": "1.1|2.0", - "psr/simple-cache-implementation": "1.0|2.0|3.0" - }, - "replace": { - "illuminate/auth": "self.version", - "illuminate/broadcasting": "self.version", - "illuminate/bus": "self.version", - "illuminate/cache": "self.version", - "illuminate/collections": "self.version", - "illuminate/conditionable": "self.version", - "illuminate/config": "self.version", - "illuminate/console": "self.version", - "illuminate/container": "self.version", - "illuminate/contracts": "self.version", - "illuminate/cookie": "self.version", - "illuminate/database": "self.version", - "illuminate/encryption": "self.version", - "illuminate/events": "self.version", - "illuminate/filesystem": "self.version", - "illuminate/hashing": "self.version", - "illuminate/http": "self.version", - "illuminate/log": "self.version", - "illuminate/macroable": "self.version", - "illuminate/mail": "self.version", - "illuminate/notifications": "self.version", - "illuminate/pagination": "self.version", - "illuminate/pipeline": "self.version", - "illuminate/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": { - "aws/aws-sdk-php": "^3.198.1", - "doctrine/dbal": "^2.13.3|^3.1.4", - "fakerphp/faker": "^1.9.2", - "guzzlehttp/guzzle": "^7.2", - "league/flysystem-aws-s3-v3": "^3.0", - "league/flysystem-ftp": "^3.0", - "league/flysystem-sftp-v3": "^3.0", - "mockery/mockery": "^1.4.4", - "orchestra/testbench-core": "^7.0", - "pda/pheanstalk": "^4.0", - "phpstan/phpstan": "^1.0", - "phpunit/phpunit": "^9.5.8", - "predis/predis": "^1.1.9", - "symfony/amazon-mailer": "^6.0", - "symfony/cache": "^6.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.198.1).", - "brianium/paratest": "Required to run tests in parallel (^6.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", - "ext-bcmath": "Required to use the multiple_of validation rule.", - "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.", - "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.2).", - "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-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", - "mockery/mockery": "Required to use mocking (^1.4.4).", - "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).", - "predis/predis": "Required to use the predis connector (^1.1.9).", - "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.0).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^6.0).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.0).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.0).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.0).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.x-dev" - } - }, - "autoload": { - "files": [ - "src/Illuminate/Collections/helpers.php", - "src/Illuminate/Events/functions.php", - "src/Illuminate/Foundation/helpers.php", - "src/Illuminate/Support/helpers.php" - ], - "psr-4": { - "Illuminate\\": "src/Illuminate/", - "Illuminate\\Support\\": [ - "src/Illuminate/Macroable/", - "src/Illuminate/Collections/", - "src/Illuminate/Conditionable/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Laravel Framework.", - "homepage": "https://laravel.com", - "keywords": [ - "framework", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2022-02-09T15:00:05+00:00" - }, - { - "name": "laravel/sanctum", - "version": "v2.14.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/sanctum.git", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/0647a87140c7522e75826cffcadb3ad6e01f71e9", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/contracts": "^6.9|^7.0|^8.0|^9.0", - "illuminate/database": "^6.9|^7.0|^8.0|^9.0", - "illuminate/support": "^6.9|^7.0|^8.0|^9.0", - "php": "^7.2|^8.0" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0", - "phpunit/phpunit": "^8.0|^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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": "2022-01-12T15:07:43+00:00" - }, - { - "name": "laravel/serializable-closure", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/serializable-closure.git", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/65c9faf50d567b65d81764a44526545689e3fe63", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "pestphp/pest": "^1.18", - "phpstan/phpstan": "^0.12.98", - "symfony/var-dumper": "^5.3" - }, - "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": "2022-02-01T16:29:39+00:00" - }, - { - "name": "laravel/tinker", - "version": "v2.7.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/tinker.git", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/5f2f9815b7631b9f586a3de7933c25f9327d4073", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073", - "shasum": "" - }, - "require": { - "illuminate/console": "^6.0|^7.0|^8.0|^9.0", - "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.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", - "phpunit/phpunit": "^8.5.8|^9.3.3" - }, - "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.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.7.0" - }, - "time": "2022-01-10T08:52:49+00:00" - }, - { - "name": "league/commonmark", - "version": "2.2.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/commonmark.git", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "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.15" - }, - "require-dev": { - "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.0", - "commonmark/commonmark.js": "0.30.0", - "composer/package-versions-deprecated": "^1.8", - "erusev/parsedown": "^1.0", - "ext-json": "*", - "github/gfm": "0.29.0", - "michelf/php-markdown": "^1.4", - "phpstan/phpstan": "^0.12.88 || ^1.0.0", - "phpunit/phpunit": "^9.5.5", - "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", - "unleashedtech/php-coding-standard": "^3.1", - "vimeo/psalm": "^4.7.3" - }, - "suggest": { - "symfony/yaml": "v2.3+ required if using the Front Matter extension" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.3-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": "2022-01-25T14:37:33+00:00" - }, - { - "name": "league/config", - "version": "v1.1.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/config.git", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/config/zipball/a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^3.0.1", - "nette/schema": "^1.2", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.90", - "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": "2021-08-14T12:15:32+00:00" - }, - { - "name": "league/flysystem", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9f8b4260031bfef5497477da53dd57b2aaff0e06", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06", - "shasum": "" - }, - "require": { - "ext-json": "*", - "league/mime-type-detection": "^1.0.0", - "php": "^8.0.2" - }, - "conflict": { - "guzzlehttp/guzzle": "<7.0", - "guzzlehttp/ringphp": "<1.1.1", - "symfony/http-client": "<5.2" - }, - "require-dev": { - "async-aws/s3": "^1.5", - "async-aws/simple-s3": "^1.0", - "aws/aws-sdk-php": "^3.198.1", - "composer/semver": "^3.0", - "ext-fileinfo": "*", - "ext-ftp": "*", - "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.5", - "google/cloud-storage": "^1.23", - "phpseclib/phpseclib": "^2.0", - "phpstan/phpstan": "^0.12.26", - "phpunit/phpunit": "^9.5.11", - "sabre/dav": "^4.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.0.3" - }, - "funding": [ - { - "url": "https://offset.earth/frankdejonge", - "type": "custom" - }, - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2022-01-31T19:41:04+00:00" - }, - { - "name": "league/mime-type-detection", - "version": "1.9.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/aa70e813a6ad3d1558fc927863d47309b4c23e69", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.2", - "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" - }, - "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.9.0" - }, - "funding": [ - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2021-11-21T11:48:40+00:00" - }, - { - "name": "monolog/monolog", - "version": "2.3.5", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd4380d6fc37626e2f799f29d91195040137eba9", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "provide": { - "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7", - "graylog2/gelf-php": "^1.4.2", - "mongodb/mongodb": "^1.8", - "php-amqplib/php-amqplib": "~2.4 || ^3", - "php-console/php-console": "^3.1.3", - "phpspec/prophecy": "^1.6.1", - "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5", - "predis/predis": "^1.1", - "rollbar/rollbar": "^1.3", - "ruflin/elastica": ">=0.90@dev", - "swiftmailer/swiftmailer": "^5.3|^6.0" - }, - "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", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "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": "2.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/2.3.5" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" - } - ], - "time": "2021-10-01T21:08:31+00:00" - }, - { - "name": "nesbot/carbon", - "version": "2.56.0", - "source": { - "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1.8 || ^8.0", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "doctrine/dbal": "^2.0 || ^3.0", - "doctrine/orm": "^2.7", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "phpmd/phpmd": "^2.9", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.54 || ^1.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.14", - "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://opencollective.com/Carbon", - "type": "open_collective" - }, - { - "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", - "type": "tidelift" - } - ], - "time": "2022-01-21T17:08:38+00:00" - }, - { - "name": "nette/schema", - "version": "v1.2.2", - "source": { - "type": "git", - "url": "https://github.com/nette/schema.git", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/9a39cef03a5b34c7de64f551538cbba05c2be5df", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df", - "shasum": "" - }, - "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": ">=7.1 <8.2" - }, - "require-dev": { - "nette/tester": "^2.3 || ^2.4", - "phpstan/phpstan-nette": "^0.12", - "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.2" - }, - "time": "2021-10-15T11:40:02+00:00" - }, - { - "name": "nette/utils", - "version": "v3.2.7", - "source": { - "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/0af4e3de4df9f1543534beab255ccf459e7a2c99", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99", - "shasum": "" - }, - "require": { - "php": ">=7.2 <8.2" - }, - "conflict": { - "nette/di": "<3.0.6" - }, - "require-dev": { - "nette/tester": "~2.0", - "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.3" - }, - "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()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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 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/v3.2.7" - }, - "time": "2022-01-24T11:29:14+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.13.2", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", - "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.13.2" - }, - "time": "2021-11-30T19:35:32+00:00" - }, - { - "name": "phpoption/phpoption", - "version": "1.8.1", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-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.8.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", - "type": "tidelift" - } - ], - "time": "2021-12-04T23:24:31+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.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.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": "http://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/tree/master" - }, - "time": "2020-06-29T06:28:15+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.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": "http://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/master" - }, - "time": "2019-04-30T12:38:16+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.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": "http://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/master" - }, - "time": "2016-08-06T14:39: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.1", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "570292577277f06f590635381a7f761a6cf4f026" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/570292577277f06f590635381a7f761a6cf4f026", - "reference": "570292577277f06f590635381a7f761a6cf4f026", - "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" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "3.17.05.02" - }, - "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.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." - }, - "bin": [ - "bin/psysh" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "0.11.x-dev" - } - }, - "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.1" - }, - "time": "2022-01-03T13:58:38+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": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/ramsey/collection.git", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "shasum": "" - }, - "require": { - "php": "^7.3 || ^8", - "symfony/polyfill-php81": "^1.23" - }, - "require-dev": { - "captainhook/captainhook": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "ergebnis/composer-normalize": "^2.6", - "fakerphp/faker": "^1.5", - "hamcrest/hamcrest-php": "^2", - "jangregor/phpstan-prophecy": "^0.8", - "mockery/mockery": "^1.3", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1", - "phpstan/phpstan": "^0.12.32", - "phpstan/phpstan-mockery": "^0.12.5", - "phpstan/phpstan-phpunit": "^0.12.11", - "phpunit/phpunit": "^8.5 || ^9", - "psy/psysh": "^0.10.4", - "slevomat/coding-standard": "^6.3", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.4" - }, - "type": "library", - "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/1.2.2" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "time": "2021-10-10T03:01:02+00:00" - }, - { - "name": "ramsey/uuid", - "version": "4.2.3", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "shasum": "" - }, - "require": { - "brick/math": "^0.8 || ^0.9", - "ext-json": "*", - "php": "^7.2 || ^8.0", - "ramsey/collection": "^1.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php80": "^1.14" - }, - "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", - "moontoast/math": "^1.1", - "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.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-mockery": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^8.5 || ^9", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" - }, - "suggest": { - "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-ctype": "Enables faster processing of character classification using ctype functions.", - "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": { - "branch-alias": { - "dev-main": "4.x-dev" - }, - "captainhook": { - "force-install": true - } - }, - "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "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.2.3" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2021-09-25T23:10:38+00:00" - }, - { - "name": "symfony/console", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/22e8efd019c3270c4f79376234a3f8752cd25490", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.4|^6.0" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/css-selector", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/1955d595c12c111629cc814d3f2a2ff13580508a", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a", - "shasum": "" - }, - "require": { - "php": ">=8.0.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/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-11-01T23:48:49+00:00" - }, - { - "name": "symfony/error-handler", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/20343b3bad7ebafa38138ddcb97290a24722b57b", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" - }, - "bin": [ - "Resources/bin/patch-type-declarations" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to manage errors and ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6472ea2dd415e925b90ca82be64b8bc6157f3934", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/event-dispatcher-contracts": "^2|^3" - }, - "conflict": { - "symfony/dependency-injection": "<5.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^5.4|^6.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/aa5422287b75594b90ee9cd807caf8f0df491385", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/event-dispatcher": "^1" - }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-07-15T12:33:35+00:00" - }, - { - "name": "symfony/finder", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/8661b74dbabc23223f38c9b99d3f8ade71170430", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ad157299ced81a637fade1efcadd688d6deba5c1", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1" - }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/cache": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0" - }, - "suggest": { - "symfony/mime": "To use the file extension guesser" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v6.0.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/error-handler": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", - "symfony/twig-bridge": "<5.4", - "symfony/validator": "<5.4", - "twig/twig": "<2.13" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/process": "^5.4|^6.0", - "symfony/routing": "^5.4|^6.0", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-29T18:12:46+00:00" - }, - { - "name": "symfony/mailer", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mailer.git", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "shasum": "" - }, - "require": { - "egulias/email-validator": "^2.1.10|^3", - "php": ">=8.0.2", - "psr/event-dispatcher": "^1", - "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3" - }, - "conflict": { - "symfony/http-kernel": "<5.4" - }, - "require-dev": { - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/messenger": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/mime", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/2cd9601efd040e56f43360daa68f3c6b0534923a", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "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" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "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.24.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": "2021-10-20T20:35:02+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-11-23T21:10:46+00:00" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44", - "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.23-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.24.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": "2021-09-14T14:02:44+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.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": "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.24.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": "2021-11-30T18:21:41+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-05-27T09:17:38+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:33+00:00" - }, - { - "name": "symfony/polyfill-php81", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:11+00:00" - }, - { - "name": "symfony/process", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/298ed357274c1868c20a0061df256a1250a6c4af", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/routing", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/yaml": "<5.4" - }, - "require-dev": { - "doctrine/annotations": "^1.12", - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/36715ebf9fb9db73db0cb24263c79077c6fe8603", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/container": "^2.0" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "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.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": "2021-11-04T17:53:12+00:00" - }, - { - "name": "symfony/string", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/522144f0c4c004c80d56fa47e40e17028e2eefc2", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.0" - }, - "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/translation-contracts": "^2.0|^3.0", - "symfony/var-exporter": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "files": [ - "Resources/functions.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 an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/translation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/71bb15335798f8c4da110911bcf2d2fead7a430d", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.3|^3.0" - }, - "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" - }, - "provide": { - "symfony/translation-implementation": "2.3|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-07T00:29:03+00:00" - }, - { - "name": "symfony/translation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "suggest": { - "symfony/translation-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - } - }, - "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.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": "2021-09-07T12:43:40+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7b701676fc64f9ef11f9b4870f16b48f66be4834", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<5.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-17T16:30:44+00:00" - }, - { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.4", - "source": { - "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" - } - ], - "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", - "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "support": { - "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" - }, - "time": "2021-12-08T09:12:39+00:00" - }, - { - "name": "vlucas/phpdotenv", - "version": "v5.4.1", - "source": { - "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", - "shasum": "" - }, - "require": { - "ext-pcre": "*", - "graham-campbell/result-type": "^1.0.2", - "php": "^7.1.3 || ^8.0", - "phpoption/phpoption": "^1.8", - "symfony/polyfill-ctype": "^1.23", - "symfony/polyfill-mbstring": "^1.23.1", - "symfony/polyfill-php80": "^1.23.1" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" - }, - "suggest": { - "ext-filter": "Required to use the boolean validator." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.4-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.4.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", - "type": "tidelift" - } - ], - "time": "2021-12-12T23:22:04+00:00" - }, - { - "name": "voku/portable-ascii", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/voku/portable-ascii.git", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/9bd89e83cecdf8c37b64909454249eaed98b2c89", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89", - "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.0" - }, - "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-01-24T18:59:03+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "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.10.0" - }, - "time": "2021-03-09T10:59:23+00:00" - } - ], - "packages-dev": [ - { - "name": "doctrine/instantiator", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.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%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2020-11-10T18:47:58+00:00" - }, - { - "name": "facade/ignition-contracts", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/facade/ignition-contracts.git", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^v2.15.8", - "phpunit/phpunit": "^9.3.11", - "vimeo/psalm": "^3.17.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Facade\\IgnitionContracts\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://flareapp.io", - "role": "Developer" - } - ], - "description": "Solution contracts for Ignition", - "homepage": "https://github.com/facade/ignition-contracts", - "keywords": [ - "contracts", - "flare", - "ignition" - ], - "support": { - "issues": "https://github.com/facade/ignition-contracts/issues", - "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" - }, - "time": "2020-10-16T08:27:54+00:00" - }, - { - "name": "fakerphp/faker", - "version": "v1.19.0", - "source": { - "type": "git", - "url": "https://github.com/FakerPHP/Faker.git", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^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": "*", - "symfony/phpunit-bridge": "^4.4 || ^5.2" - }, - "suggest": { - "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", - "ext-curl": "Required by Faker\\Provider\\Image to download images.", - "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", - "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.19-dev" - } - }, - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "François Zaninotto" - } - ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], - "support": { - "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0" - }, - "time": "2022-02-02T17:38:57+00:00" - }, - { - "name": "filp/whoops", - "version": "2.14.5", - "source": { - "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "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.14.5" - }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "time": "2022-01-07T12:00:00+00:00" - }, - { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "shasum": "" - }, - "require": { - "php": "^5.3|^7.0|^8.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" - }, - "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "classmap": [ - "hamcrest" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "This is the PHP port of Hamcrest Matchers", - "keywords": [ - "test" - ], - "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" - }, - "time": "2020-07-09T08:09:16+00:00" - }, - { - "name": "laravel/sail", - "version": "v1.13.2", - "source": { - "type": "git", - "url": "https://github.com/laravel/sail.git", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.0|^9.0", - "illuminate/contracts": "^8.0|^9.0", - "illuminate/support": "^8.0|^9.0", - "php": "^7.3|^8.0" - }, - "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": "2022-02-08T14:14:12+00:00" - }, - { - "name": "mockery/mockery", - "version": "1.5.0", - "source": { - "type": "git", - "url": "https://github.com/mockery/mockery.git", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "shasum": "" - }, - "require": { - "hamcrest/hamcrest-php": "^2.0.1", - "lib-pcre": ">=7.0", - "php": "^7.3 || ^8.0" - }, - "conflict": { - "phpunit/phpunit": "<8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-0": { - "Mockery": "library/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" - } - ], - "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": { - "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.5.0" - }, - "time": "2022-01-20T13:18:17+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.10.2", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "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.10.2" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2020-11-13T09:40:50+00:00" - }, - { - "name": "nunomaduro/collision", - "version": "v6.1.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/collision.git", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "shasum": "" - }, - "require": { - "facade/ignition-contracts": "^1.0.2", - "filp/whoops": "^2.14.5", - "php": "^8.0.0", - "symfony/console": "^6.0.2" - }, - "require-dev": { - "brianium/paratest": "^6.4.1", - "laravel/framework": "^9.0", - "nunomaduro/larastan": "^1.0.2", - "nunomaduro/mock-final-classes": "^1.1.0", - "orchestra/testbench": "^7.0.0", - "phpunit/phpunit": "^9.5.11" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "6.x-dev" - }, - "laravel": { - "providers": [ - "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" - ] - } - }, - "autoload": { - "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": "2022-01-18T17:49:08+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.1.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/15a90844ad40f127afd244c0cad228de2a80052a", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a", - "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.1.1" - }, - "time": "2022-02-07T21:56:48+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.6.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "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.6.0" - }, - "time": "2022-01-04T19:58:01+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" - }, - "time": "2021-12-08T12:19:24+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "9.2.10", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d5850aaf931743067f4bfc1ae4cbd06468400687", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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 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", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.10" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-05T09:12:13+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "3.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-02T12:48:52+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "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/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:58:55+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T05:33:50+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.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/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:16:10+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "9.5.13", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/597cb647654ede35e43b137926dfdfef0fb11743", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.3.1", - "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": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.7", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", - "sebastian/version": "^3.0.2" - }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.13" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-01-24T07:33:35+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:08:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "1.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:08:54+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:30:19+00:00" - }, - { - "name": "sebastian/comparator", - "version": "4.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:49:45+00:00" - }, - { - "name": "sebastian/complexity", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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 calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:52:27+00:00" - }, - { - "name": "sebastian/diff", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:10:38+00:00" - }, - { - "name": "sebastian/environment", - "version": "5.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-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": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:52:38+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "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", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-11-11T14:18:36+00:00" - }, - { - "name": "sebastian/global-state", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-11T13:31:12+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-28T06:42:11+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "http://www.github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:17:30+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:45:17+00:00" - }, - { - "name": "sebastian/type", - "version": "2.3.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-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/2.3.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-15T12:49:02+00:00" - }, - { - "name": "sebastian/version", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:39:44+00:00" - }, - { - "name": "spatie/backtrace", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/backtrace.git", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "ext-json": "*", - "phpunit/phpunit": "^9.3", - "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": { - "issues": "https://github.com/spatie/backtrace/issues", - "source": "https://github.com/spatie/backtrace/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/sponsors/spatie", - "type": "github" - }, - { - "url": "https://spatie.be/open-source/support-us", - "type": "other" - } - ], - "time": "2021-11-09T10:57:15+00:00" - }, - { - "name": "spatie/flare-client-php", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/flare-client-php.git", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "shasum": "" - }, - "require": { - "illuminate/pipeline": "^8.0|^9.0", - "php": "^8.0", - "spatie/backtrace": "^1.2", - "symfony/http-foundation": "^5.0|^6.0", - "symfony/mime": "^5.2|^6.0", - "symfony/process": "^5.2|^6.0", - "symfony/var-dumper": "^5.2|^6.0" - }, - "require-dev": { - "dms/phpunit-arraysubset-asserts": "^0.3.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/phpunit-snapshot-assertions": "^4.0" - }, - "type": "library", - "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.0.1" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2022-02-04T15:21:00+00:00" - }, - { - "name": "spatie/ignition", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/spatie/ignition.git", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/d2d5ba823af3004268556e87dfc94449e4159f5a", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "monolog/monolog": "^2.0", - "php": "^8.0", - "spatie/flare-client-php": "^1.0", - "symfony/console": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "mockery/mockery": "^1.4", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/ray": "^1.32", - "symfony/process": "^5.4|^6.0" - }, - "type": "library", - "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": "2022-01-19T12:57:41+00:00" - }, - { - "name": "spatie/laravel-ignition", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/68250225a9f83b086462c2af1b1139dfde48fbd2", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*", - "illuminate/support": "^8.77|^9.0", - "monolog/monolog": "^2.3", - "php": "^8.0", - "spatie/flare-client-php": "^1.0.1", - "spatie/ignition": "^1.0", - "symfony/console": "^5.0|^6.0", - "symfony/var-dumper": "^5.0|^6.0" - }, - "require-dev": { - "filp/whoops": "^2.14", - "livewire/livewire": "^2.8|dev-develop", - "mockery/mockery": "^1.4", - "nunomaduro/larastan": "^1.0", - "orchestra/testbench": "^6.23|^7.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/laravel-ray": "^1.27" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Spatie\\LaravelIgnition\\IgnitionServiceProvider" - ], - "aliases": { - "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" - } - } - }, - "autoload": { - "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": "2022-02-04T15:25:56+00:00" - }, - { - "name": "squizlabs/php_codesniffer", - "version": "3.6.2", - "source": { - "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", - "shasum": "" - }, - "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.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": "lead" - } - ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", - "keywords": [ - "phpcs", - "standards" - ], - "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" - }, - "time": "2021-12-12T21:44:58+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2021-07-28T10:34:58+00:00" - } - ], - "aliases": [], - "minimum-stability": "dev", - "stability-flags": [], - "prefer-stable": true, - "prefer-lowest": false, - "platform": { - "php": "^8.0" - }, - "platform-dev": [], - "plugin-api-version": "2.1.0" -} diff --git a/Chapter11/onlineStore/config/app.php b/Chapter11/onlineStore/config/app.php deleted file mode 100644 index 1941d7c..0000000 --- a/Chapter11/onlineStore/config/app.php +++ /dev/null @@ -1,197 +0,0 @@ - env('APP_NAME', 'Laravel'), - - /* - |-------------------------------------------------------------------------- - | Application Environment - |-------------------------------------------------------------------------- - | - | This value determines the "environment" your application is currently - | running in. This may determine how you prefer to configure various - | services the application utilizes. Set this in your ".env" file. - | - */ - - 'env' => env('APP_ENV', 'production'), - - /* - |-------------------------------------------------------------------------- - | Application Debug Mode - |-------------------------------------------------------------------------- - | - | When your application is in debug mode, detailed error messages with - | stack traces will be shown on every error that occurs within your - | application. If disabled, a simple generic error page is shown. - | - */ - - 'debug' => (bool) env('APP_DEBUG', false), - - /* - |-------------------------------------------------------------------------- - | Application URL - |-------------------------------------------------------------------------- - | - | This URL is used by the console to properly generate URLs when using - | the Artisan command line tool. You should set this to the root of - | your application so that it is used when running Artisan tasks. - | - */ - - 'url' => env('APP_URL', 'http://localhost'), - - 'asset_url' => env('ASSET_URL', null), - - /* - |-------------------------------------------------------------------------- - | 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', - - /* - |-------------------------------------------------------------------------- - | 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' => [ - - /* - * Laravel Framework Service Providers... - */ - Illuminate\Auth\AuthServiceProvider::class, - Illuminate\Broadcasting\BroadcastServiceProvider::class, - Illuminate\Bus\BusServiceProvider::class, - Illuminate\Cache\CacheServiceProvider::class, - Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, - Illuminate\Cookie\CookieServiceProvider::class, - Illuminate\Database\DatabaseServiceProvider::class, - Illuminate\Encryption\EncryptionServiceProvider::class, - Illuminate\Filesystem\FilesystemServiceProvider::class, - Illuminate\Foundation\Providers\FoundationServiceProvider::class, - Illuminate\Hashing\HashServiceProvider::class, - Illuminate\Mail\MailServiceProvider::class, - Illuminate\Notifications\NotificationServiceProvider::class, - Illuminate\Pagination\PaginationServiceProvider::class, - Illuminate\Pipeline\PipelineServiceProvider::class, - Illuminate\Queue\QueueServiceProvider::class, - Illuminate\Redis\RedisServiceProvider::class, - Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, - Illuminate\Session\SessionServiceProvider::class, - Illuminate\Translation\TranslationServiceProvider::class, - Illuminate\Validation\ValidationServiceProvider::class, - Illuminate\View\ViewServiceProvider::class, - - /* - * 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, - - ], - - /* - |-------------------------------------------------------------------------- - | 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([ - // ... - ])->toArray(), - -]; diff --git a/Chapter11/onlineStore/config/auth.php b/Chapter11/onlineStore/config/auth.php deleted file mode 100644 index d8c6cee..0000000 --- a/Chapter11/onlineStore/config/auth.php +++ /dev/null @@ -1,111 +0,0 @@ - [ - '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 expire 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. - | - */ - - 'passwords' => [ - 'users' => [ - 'provider' => 'users', - 'table' => 'password_resets', - '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/Chapter11/onlineStore/config/broadcasting.php b/Chapter11/onlineStore/config/broadcasting.php deleted file mode 100644 index 67fcbbd..0000000 --- a/Chapter11/onlineStore/config/broadcasting.php +++ /dev/null @@ -1,67 +0,0 @@ - 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'), - 'useTLS' => true, - ], - '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/Chapter11/onlineStore/config/cache.php b/Chapter11/onlineStore/config/cache.php deleted file mode 100644 index 8736c7a..0000000 --- a/Chapter11/onlineStore/config/cache.php +++ /dev/null @@ -1,110 +0,0 @@ - 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'), - ], - - '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 a RAM based store such as APC or Memcached, there might - | be other applications utilizing the same cache. So, we'll specify a - | value to get prefixed to all our keys so we can avoid collisions. - | - */ - - 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'), - -]; diff --git a/Chapter11/onlineStore/config/cors.php b/Chapter11/onlineStore/config/cors.php deleted file mode 100644 index 8a39e6d..0000000 --- a/Chapter11/onlineStore/config/cors.php +++ /dev/null @@ -1,34 +0,0 @@ - ['api/*', 'sanctum/csrf-cookie'], - - 'allowed_methods' => ['*'], - - 'allowed_origins' => ['*'], - - 'allowed_origins_patterns' => [], - - 'allowed_headers' => ['*'], - - 'exposed_headers' => [], - - 'max_age' => 0, - - 'supports_credentials' => false, - -]; diff --git a/Chapter11/onlineStore/config/database.php b/Chapter11/onlineStore/config/database.php deleted file mode 100644 index 0faebae..0000000 --- a/Chapter11/onlineStore/config/database.php +++ /dev/null @@ -1,147 +0,0 @@ - env('DB_CONNECTION', 'mysql'), - - /* - |-------------------------------------------------------------------------- - | Database Connections - |-------------------------------------------------------------------------- - | - | Here are each of the database connections setup for your application. - | Of course, examples of configuring each database platform that is - | supported by Laravel is shown below to make development simple. - | - | - | All database work in Laravel is done through the PHP PDO facilities - | so make sure you have the driver for your particular database of - | choice installed on your machine before you begin development. - | - */ - - 'connections' => [ - - 'sqlite' => [ - 'driver' => 'sqlite', - 'url' => env('DATABASE_URL'), - 'database' => env('DB_DATABASE', database_path('database.sqlite')), - 'prefix' => '', - 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), - ], - - 'mysql' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '3306'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'unix_socket' => env('DB_SOCKET', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - 'pgsql' => [ - 'driver' => 'pgsql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '5432'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - 'search_path' => 'public', - 'sslmode' => 'prefer', - ], - - 'sqlsrv' => [ - 'driver' => 'sqlsrv', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', 'localhost'), - 'port' => env('DB_PORT', '1433'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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'), - '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'), - 'password' => env('REDIS_PASSWORD'), - 'port' => env('REDIS_PORT', '6379'), - 'database' => env('REDIS_CACHE_DB', '1'), - ], - - ], - -]; diff --git a/Chapter11/onlineStore/config/filesystems.php b/Chapter11/onlineStore/config/filesystems.php deleted file mode 100644 index cf5abce..0000000 --- a/Chapter11/onlineStore/config/filesystems.php +++ /dev/null @@ -1,73 +0,0 @@ - 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 setup for each driver as an example of the required options. - | - | Supported Drivers: "local", "ftp", "sftp", "s3" - | - */ - - 'disks' => [ - - 'local' => [ - 'driver' => 'local', - 'root' => storage_path('app'), - ], - - 'public' => [ - 'driver' => 'local', - 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', - 'visibility' => 'public', - ], - - '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), - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter11/onlineStore/config/hashing.php b/Chapter11/onlineStore/config/hashing.php deleted file mode 100644 index bcd3be4..0000000 --- a/Chapter11/onlineStore/config/hashing.php +++ /dev/null @@ -1,52 +0,0 @@ - '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/Chapter11/onlineStore/config/logging.php b/Chapter11/onlineStore/config/logging.php deleted file mode 100644 index fefe088..0000000 --- a/Chapter11/onlineStore/config/logging.php +++ /dev/null @@ -1,119 +0,0 @@ - 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' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), - - /* - |-------------------------------------------------------------------------- - | 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'), - ], - - 'daily' => [ - 'driver' => 'daily', - 'path' => storage_path('logs/laravel.log'), - 'level' => env('LOG_LEVEL', 'debug'), - 'days' => 14, - ], - - 'slack' => [ - 'driver' => 'slack', - 'url' => env('LOG_SLACK_WEBHOOK_URL'), - 'username' => 'Laravel Log', - 'emoji' => ':boom:', - 'level' => env('LOG_LEVEL', 'critical'), - ], - - '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'), - ], - ], - - 'stderr' => [ - 'driver' => 'monolog', - 'level' => env('LOG_LEVEL', 'debug'), - 'handler' => StreamHandler::class, - 'formatter' => env('LOG_STDERR_FORMATTER'), - 'with' => [ - 'stream' => 'php://stderr', - ], - ], - - 'syslog' => [ - 'driver' => 'syslog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'errorlog' => [ - 'driver' => 'errorlog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'null' => [ - 'driver' => 'monolog', - 'handler' => NullHandler::class, - ], - - 'emergency' => [ - 'path' => storage_path('logs/laravel.log'), - ], - ], - -]; diff --git a/Chapter11/onlineStore/config/mail.php b/Chapter11/onlineStore/config/mail.php deleted file mode 100644 index 87b6fe3..0000000 --- a/Chapter11/onlineStore/config/mail.php +++ /dev/null @@ -1,117 +0,0 @@ - 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", - | "postmark", "log", "array", "failover" - | - */ - - 'mailers' => [ - 'smtp' => [ - 'transport' => 'smtp', - '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, - ], - - 'ses' => [ - 'transport' => 'ses', - ], - - 'mailgun' => [ - 'transport' => 'mailgun', - ], - - 'postmark' => [ - 'transport' => 'postmark', - ], - - 'sendmail' => [ - 'transport' => 'sendmail', - 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -t -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/Chapter11/onlineStore/config/queue.php b/Chapter11/onlineStore/config/queue.php deleted file mode 100644 index 25ea5a8..0000000 --- a/Chapter11/onlineStore/config/queue.php +++ /dev/null @@ -1,93 +0,0 @@ - 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, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter11/onlineStore/config/sanctum.php b/Chapter11/onlineStore/config/sanctum.php deleted file mode 100644 index 9281c92..0000000 --- a/Chapter11/onlineStore/config/sanctum.php +++ /dev/null @@ -1,65 +0,0 @@ - explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( - '%s%s', - 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', - env('APP_URL') ? ','.parse_url(env('APP_URL'), PHP_URL_HOST) : '' - ))), - - /* - |-------------------------------------------------------------------------- - | 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/Chapter11/onlineStore/config/services.php b/Chapter11/onlineStore/config/services.php deleted file mode 100644 index 2a1d616..0000000 --- a/Chapter11/onlineStore/config/services.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - 'domain' => env('MAILGUN_DOMAIN'), - 'secret' => env('MAILGUN_SECRET'), - 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), - ], - - '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/Chapter11/onlineStore/config/session.php b/Chapter11/onlineStore/config/session.php deleted file mode 100644 index 8fed97c..0000000 --- a/Chapter11/onlineStore/config/session.php +++ /dev/null @@ -1,201 +0,0 @@ - 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/Chapter11/onlineStore/config/view.php b/Chapter11/onlineStore/config/view.php deleted file mode 100644 index 22b8a18..0000000 --- a/Chapter11/onlineStore/config/view.php +++ /dev/null @@ -1,36 +0,0 @@ - [ - 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/Chapter11/onlineStore/database/.gitignore b/Chapter11/onlineStore/database/.gitignore deleted file mode 100644 index 9b19b93..0000000 --- a/Chapter11/onlineStore/database/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.sqlite* diff --git a/Chapter11/onlineStore/database/factories/UserFactory.php b/Chapter11/onlineStore/database/factories/UserFactory.php deleted file mode 100644 index d6ca926..0000000 --- a/Chapter11/onlineStore/database/factories/UserFactory.php +++ /dev/null @@ -1,42 +0,0 @@ - - */ -class UserFactory extends Factory -{ - /** - * Define the model's default state. - * - * @return array - */ - public function definition() - { - return [ - 'name' => $this->faker->name(), - 'email' => $this->faker->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. - * - * @return \Illuminate\Database\Eloquent\Factories\Factory - */ - public function unverified() - { - return $this->state(function (array $attributes) { - return [ - 'email_verified_at' => null, - ]; - }); - } -} diff --git a/Chapter11/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php b/Chapter11/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php deleted file mode 100644 index cf6b776..0000000 --- a/Chapter11/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->string('name'); - $table->string('email')->unique(); - $table->timestamp('email_verified_at')->nullable(); - $table->string('password'); - $table->rememberToken(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('users'); - } -}; diff --git a/Chapter11/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php b/Chapter11/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php deleted file mode 100644 index fcacb80..0000000 --- a/Chapter11/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php +++ /dev/null @@ -1,32 +0,0 @@ -string('email')->index(); - $table->string('token'); - $table->timestamp('created_at')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('password_resets'); - } -}; diff --git a/Chapter11/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/Chapter11/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php deleted file mode 100644 index 1719198..0000000 --- a/Chapter11/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php +++ /dev/null @@ -1,36 +0,0 @@ -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. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('failed_jobs'); - } -}; diff --git a/Chapter11/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/Chapter11/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php deleted file mode 100644 index fd235f8..0000000 --- a/Chapter11/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->morphs('tokenable'); - $table->string('name'); - $table->string('token', 64)->unique(); - $table->text('abilities')->nullable(); - $table->timestamp('last_used_at')->nullable(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('personal_access_tokens'); - } -}; diff --git a/Chapter11/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php b/Chapter11/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php deleted file mode 100644 index 2eecdc2..0000000 --- a/Chapter11/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php +++ /dev/null @@ -1,35 +0,0 @@ -id(); - $table->string('name'); - $table->text('description'); - $table->string('image'); - $table->integer('price'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('products'); - } -}; diff --git a/Chapter11/onlineStore/database/seeders/DatabaseSeeder.php b/Chapter11/onlineStore/database/seeders/DatabaseSeeder.php deleted file mode 100644 index 71f673f..0000000 --- a/Chapter11/onlineStore/database/seeders/DatabaseSeeder.php +++ /dev/null @@ -1,19 +0,0 @@ -create(); - } -} diff --git a/Chapter11/onlineStore/lang/en.json b/Chapter11/onlineStore/lang/en.json deleted file mode 100644 index 577680d..0000000 --- a/Chapter11/onlineStore/lang/en.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "The :attribute must contain at least one letter.": "The :attribute must contain at least one letter.", - "The :attribute must contain at least one number.": "The :attribute must contain at least one number.", - "The :attribute must contain at least one symbol.": "The :attribute must contain at least one symbol.", - "The :attribute must contain at least one uppercase and one lowercase letter.": "The :attribute must contain at least one uppercase and one lowercase letter.", - "The given :attribute has appeared in a data leak. Please choose a different :attribute.": "The given :attribute has appeared in a data leak. Please choose a different :attribute." -} diff --git a/Chapter11/onlineStore/lang/en/auth.php b/Chapter11/onlineStore/lang/en/auth.php deleted file mode 100644 index 6598e2c..0000000 --- a/Chapter11/onlineStore/lang/en/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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/Chapter11/onlineStore/lang/en/pagination.php b/Chapter11/onlineStore/lang/en/pagination.php deleted file mode 100644 index d481411..0000000 --- a/Chapter11/onlineStore/lang/en/pagination.php +++ /dev/null @@ -1,19 +0,0 @@ - '« Previous', - 'next' => 'Next »', - -]; diff --git a/Chapter11/onlineStore/lang/en/passwords.php b/Chapter11/onlineStore/lang/en/passwords.php deleted file mode 100644 index 2345a56..0000000 --- a/Chapter11/onlineStore/lang/en/passwords.php +++ /dev/null @@ -1,22 +0,0 @@ - '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/Chapter11/onlineStore/lang/en/validation.php b/Chapter11/onlineStore/lang/en/validation.php deleted file mode 100644 index 783003c..0000000 --- a/Chapter11/onlineStore/lang/en/validation.php +++ /dev/null @@ -1,163 +0,0 @@ - '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' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - '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' => [ - 'numeric' => 'The :attribute must be greater than :value.', - 'file' => 'The :attribute must be greater than :value kilobytes.', - 'string' => 'The :attribute must be greater than :value characters.', - 'array' => 'The :attribute must have more than :value items.', - ], - 'gte' => [ - 'numeric' => 'The :attribute must be greater than or equal to :value.', - 'file' => 'The :attribute must be greater than or equal to :value kilobytes.', - 'string' => 'The :attribute must be greater than or equal to :value characters.', - 'array' => 'The :attribute must have :value items or more.', - ], - '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' => [ - 'numeric' => 'The :attribute must be less than :value.', - 'file' => 'The :attribute must be less than :value kilobytes.', - 'string' => 'The :attribute must be less than :value characters.', - 'array' => 'The :attribute must have less than :value items.', - ], - 'lte' => [ - 'numeric' => 'The :attribute must be less than or equal to :value.', - 'file' => 'The :attribute must be less than or equal to :value kilobytes.', - 'string' => 'The :attribute must be less than or equal to :value characters.', - 'array' => 'The :attribute must not have more than :value items.', - ], - 'mac_address' => 'The :attribute must be a valid MAC address.', - 'max' => [ - 'numeric' => 'The :attribute must not be greater than :max.', - 'file' => 'The :attribute must not be greater than :max kilobytes.', - 'string' => 'The :attribute must not be greater than :max characters.', - 'array' => 'The :attribute must not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - '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.', - 'password' => 'The password is incorrect.', - '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' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - '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/Chapter11/onlineStore/package.json b/Chapter11/onlineStore/package.json deleted file mode 100644 index 7a9aecd..0000000 --- a/Chapter11/onlineStore/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "private": true, - "scripts": { - "dev": "npm run development", - "development": "mix", - "watch": "mix watch", - "watch-poll": "mix watch -- --watch-options-poll=1000", - "hot": "mix watch --hot", - "prod": "npm run production", - "production": "mix --production" - }, - "devDependencies": { - "axios": "^0.25", - "laravel-mix": "^6.0.6", - "lodash": "^4.17.19", - "postcss": "^8.1.14" - } -} diff --git a/Chapter11/onlineStore/phpcs.xml b/Chapter11/onlineStore/phpcs.xml deleted file mode 100644 index a1cf2b6..0000000 --- a/Chapter11/onlineStore/phpcs.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - The coding standard for the Online Store project - - app/ - config/ - database/ - routes/ - */migrations/* - diff --git a/Chapter11/onlineStore/phpunit.xml b/Chapter11/onlineStore/phpunit.xml deleted file mode 100644 index 2ac86a1..0000000 --- a/Chapter11/onlineStore/phpunit.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - ./tests/Unit - - - ./tests/Feature - - - - - ./app - - - - - - - - - - - - - - diff --git a/Chapter11/onlineStore/public/.htaccess b/Chapter11/onlineStore/public/.htaccess deleted file mode 100644 index 3aec5e2..0000000 --- a/Chapter11/onlineStore/public/.htaccess +++ /dev/null @@ -1,21 +0,0 @@ - - - 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/Chapter11/onlineStore/public/css/app.css b/Chapter11/onlineStore/public/css/app.css deleted file mode 100644 index cabac36..0000000 --- a/Chapter11/onlineStore/public/css/app.css +++ /dev/null @@ -1,20 +0,0 @@ -.bg-secondary { - background-color: #2c3e50 !important; -} - -.copyright { - background-color: #1a252f; -} - -.bg-primary { - background-color: #1abc9c !important; -} - -nav{ - font-weight: 700; -} - -.img-card{ - height: 18vw; - object-fit: cover; -} diff --git a/Chapter11/onlineStore/public/favicon.ico b/Chapter11/onlineStore/public/favicon.ico deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter11/onlineStore/public/img/game.png b/Chapter11/onlineStore/public/img/game.png deleted file mode 100644 index 85420e8bbc16098bf26b4ee63bde0e91a19d1f2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25896 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 cz>% diff --git a/Chapter11/onlineStore/public/img/safe.png b/Chapter11/onlineStore/public/img/safe.png deleted file mode 100644 index 445942c707af53210931f9f4f99f6d3cb69e5d89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19240 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
w==XB0?3|p=#`o%NsudE(E-U#KS3Snw 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 o>ir+C;RN10sIS0&a;pmake(Kernel::class); - -$response = $kernel->handle( - $request = Request::capture() -)->send(); - -$kernel->terminate($request, $response); diff --git a/Chapter11/onlineStore/public/robots.txt b/Chapter11/onlineStore/public/robots.txt deleted file mode 100644 index eb05362..0000000 --- a/Chapter11/onlineStore/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: diff --git a/Chapter11/onlineStore/resources/css/app.css b/Chapter11/onlineStore/resources/css/app.css deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter11/onlineStore/resources/js/app.js b/Chapter11/onlineStore/resources/js/app.js deleted file mode 100644 index 40c55f6..0000000 --- a/Chapter11/onlineStore/resources/js/app.js +++ /dev/null @@ -1 +0,0 @@ -require('./bootstrap'); diff --git a/Chapter11/onlineStore/resources/js/bootstrap.js b/Chapter11/onlineStore/resources/js/bootstrap.js deleted file mode 100644 index 6922577..0000000 --- a/Chapter11/onlineStore/resources/js/bootstrap.js +++ /dev/null @@ -1,28 +0,0 @@ -window._ = require('lodash'); - -/** - * 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 = require('axios'); - -window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; - -/** - * 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'; - -// window.Pusher = require('pusher-js'); - -// window.Echo = new Echo({ -// broadcaster: 'pusher', -// key: process.env.MIX_PUSHER_APP_KEY, -// cluster: process.env.MIX_PUSHER_APP_CLUSTER, -// forceTLS: true -// }); diff --git a/Chapter11/onlineStore/resources/views/home/about.blade.php b/Chapter11/onlineStore/resources/views/home/about.blade.php deleted file mode 100644 index f79abf3..0000000 --- a/Chapter11/onlineStore/resources/views/home/about.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
-
-
-

{{ $viewData["description"] }}

-
-
-

{{ $viewData["author"] }}

-
-
-
-@endsection diff --git a/Chapter11/onlineStore/resources/views/home/index.blade.php b/Chapter11/onlineStore/resources/views/home/index.blade.php deleted file mode 100644 index 1affb20..0000000 --- a/Chapter11/onlineStore/resources/views/home/index.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('content') -
-
- -
-
- -
-
- -
-
-@endsection diff --git a/Chapter11/onlineStore/resources/views/layouts/app.blade.php b/Chapter11/onlineStore/resources/views/layouts/app.blade.php deleted file mode 100644 index eee7fcb..0000000 --- a/Chapter11/onlineStore/resources/views/layouts/app.blade.php +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - @yield('title', 'Online Store') - - - -
- -
-
-

@yield('subtitle', 'A Laravel Online Store')

-
-
- - -
- @yield('content') -
- - - - - - - diff --git a/Chapter11/onlineStore/resources/views/product/index.blade.php b/Chapter11/onlineStore/resources/views/product/index.blade.php deleted file mode 100644 index 1f766f1..0000000 --- a/Chapter11/onlineStore/resources/views/product/index.blade.php +++ /dev/null @@ -1,18 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
- @foreach ($viewData["products"] as $product) -
- -
- @endforeach -
-@endsection diff --git a/Chapter11/onlineStore/resources/views/product/show.blade.php b/Chapter11/onlineStore/resources/views/product/show.blade.php deleted file mode 100644 index 01d056e..0000000 --- a/Chapter11/onlineStore/resources/views/product/show.blade.php +++ /dev/null @@ -1,21 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
-
-
- -
-
-
-
- {{ $viewData["product"]["name"] }} (${{ $viewData["product"]["price"] }}) -
-

{{ $viewData["product"]["description"] }}

-

Add to Cart

-
-
-
-
-@endsection diff --git a/Chapter11/onlineStore/resources/views/welcome.blade.php b/Chapter11/onlineStore/resources/views/welcome.blade.php deleted file mode 100644 index c587c72..0000000 --- a/Chapter11/onlineStore/resources/views/welcome.blade.php +++ /dev/null @@ -1,7 +0,0 @@ -@extends('layouts.app') -@section('title', 'Home Page - Online Store') -@section('content') -
- Welcome to the application -
-@endsection \ No newline at end of file diff --git a/Chapter11/onlineStore/routes/api.php b/Chapter11/onlineStore/routes/api.php deleted file mode 100644 index eb6fa48..0000000 --- a/Chapter11/onlineStore/routes/api.php +++ /dev/null @@ -1,19 +0,0 @@ -get('/user', function (Request $request) { - return $request->user(); -}); diff --git a/Chapter11/onlineStore/routes/channels.php b/Chapter11/onlineStore/routes/channels.php deleted file mode 100644 index 5d451e1..0000000 --- a/Chapter11/onlineStore/routes/channels.php +++ /dev/null @@ -1,18 +0,0 @@ -id === (int) $id; -}); diff --git a/Chapter11/onlineStore/routes/console.php b/Chapter11/onlineStore/routes/console.php deleted file mode 100644 index e05f4c9..0000000 --- a/Chapter11/onlineStore/routes/console.php +++ /dev/null @@ -1,19 +0,0 @@ -comment(Inspiring::quote()); -})->purpose('Display an inspiring quote'); diff --git a/Chapter11/onlineStore/routes/web.php b/Chapter11/onlineStore/routes/web.php deleted file mode 100644 index 0f5e40f..0000000 --- a/Chapter11/onlineStore/routes/web.php +++ /dev/null @@ -1,19 +0,0 @@ -name("home.index"); -Route::get('/about', 'App\Http\Controllers\HomeController@about')->name("home.about"); -Route::get('/products', 'App\Http\Controllers\ProductController@index')->name("product.index"); -Route::get('/products/{id}', 'App\Http\Controllers\ProductController@show')->name("product.show"); diff --git a/Chapter11/onlineStore/storage/app/.gitignore b/Chapter11/onlineStore/storage/app/.gitignore deleted file mode 100644 index 8f4803c..0000000 --- a/Chapter11/onlineStore/storage/app/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!public/ -!.gitignore diff --git a/Chapter11/onlineStore/storage/app/public/.gitignore b/Chapter11/onlineStore/storage/app/public/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter11/onlineStore/storage/app/public/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter11/onlineStore/storage/framework/.gitignore b/Chapter11/onlineStore/storage/framework/.gitignore deleted file mode 100644 index 05c4471..0000000 --- a/Chapter11/onlineStore/storage/framework/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -compiled.php -config.php -down -events.scanned.php -maintenance.php -routes.php -routes.scanned.php -schedule-* -services.json diff --git a/Chapter11/onlineStore/storage/framework/cache/.gitignore b/Chapter11/onlineStore/storage/framework/cache/.gitignore deleted file mode 100644 index 01e4a6c..0000000 --- a/Chapter11/onlineStore/storage/framework/cache/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!data/ -!.gitignore diff --git a/Chapter11/onlineStore/storage/framework/cache/data/.gitignore b/Chapter11/onlineStore/storage/framework/cache/data/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter11/onlineStore/storage/framework/cache/data/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter11/onlineStore/storage/framework/sessions/.gitignore b/Chapter11/onlineStore/storage/framework/sessions/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter11/onlineStore/storage/framework/sessions/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter11/onlineStore/storage/framework/testing/.gitignore b/Chapter11/onlineStore/storage/framework/testing/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter11/onlineStore/storage/framework/testing/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter11/onlineStore/storage/framework/views/.gitignore b/Chapter11/onlineStore/storage/framework/views/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter11/onlineStore/storage/framework/views/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter11/onlineStore/storage/logs/.gitignore b/Chapter11/onlineStore/storage/logs/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter11/onlineStore/storage/logs/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter11/onlineStore/tests/CreatesApplication.php b/Chapter11/onlineStore/tests/CreatesApplication.php deleted file mode 100644 index 547152f..0000000 --- a/Chapter11/onlineStore/tests/CreatesApplication.php +++ /dev/null @@ -1,22 +0,0 @@ -make(Kernel::class)->bootstrap(); - - return $app; - } -} diff --git a/Chapter11/onlineStore/tests/Feature/ExampleTest.php b/Chapter11/onlineStore/tests/Feature/ExampleTest.php deleted file mode 100644 index 78ccc21..0000000 --- a/Chapter11/onlineStore/tests/Feature/ExampleTest.php +++ /dev/null @@ -1,21 +0,0 @@ -get('/'); - - $response->assertStatus(200); - } -} diff --git a/Chapter11/onlineStore/tests/TestCase.php b/Chapter11/onlineStore/tests/TestCase.php deleted file mode 100644 index 2932d4a..0000000 --- a/Chapter11/onlineStore/tests/TestCase.php +++ /dev/null @@ -1,10 +0,0 @@ -assertTrue(true); - } -} diff --git a/Chapter11/onlineStore/webpack.mix.js b/Chapter11/onlineStore/webpack.mix.js deleted file mode 100644 index 2a22dc1..0000000 --- a/Chapter11/onlineStore/webpack.mix.js +++ /dev/null @@ -1,17 +0,0 @@ -const mix = require('laravel-mix'); - -/* - |-------------------------------------------------------------------------- - | Mix Asset Management - |-------------------------------------------------------------------------- - | - | Mix provides a clean, fluent API for defining some Webpack build steps - | for your Laravel applications. By default, we are compiling the CSS - | file for the application as well as bundling up all the JS files. - | - */ - -mix.js('resources/js/app.js', 'public/js') - .postCss('resources/css/app.css', 'public/css', [ - // - ]); diff --git a/Chapter12/onlineStore/.editorconfig b/Chapter12/onlineStore/.editorconfig deleted file mode 100644 index 1671c9b..0000000 --- a/Chapter12/onlineStore/.editorconfig +++ /dev/null @@ -1,18 +0,0 @@ -root = true - -[*] -charset = utf-8 -end_of_line = lf -insert_final_newline = true -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true - -[*.md] -trim_trailing_whitespace = false - -[*.{yml,yaml}] -indent_size = 2 - -[docker-compose.yml] -indent_size = 4 diff --git a/Chapter12/onlineStore/.env.example b/Chapter12/onlineStore/.env.example deleted file mode 100644 index 8510237..0000000 --- a/Chapter12/onlineStore/.env.example +++ /dev/null @@ -1,52 +0,0 @@ -APP_NAME=Laravel -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=laravel -DB_USERNAME=root -DB_PASSWORD= - -BROADCAST_DRIVER=log -CACHE_DRIVER=file -FILESYSTEM_DISK=local -QUEUE_CONNECTION=sync -SESSION_DRIVER=file -SESSION_LIFETIME=120 - -MEMCACHED_HOST=127.0.0.1 - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -MAIL_MAILER=smtp -MAIL_HOST=mailhog -MAIL_PORT=1025 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS=null -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_APP_CLUSTER=mt1 - -MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/Chapter12/onlineStore/.gitattributes b/Chapter12/onlineStore/.gitattributes deleted file mode 100644 index 510d996..0000000 --- a/Chapter12/onlineStore/.gitattributes +++ /dev/null @@ -1,10 +0,0 @@ -* text=auto - -*.blade.php diff=html -*.css diff=css -*.html diff=html -*.md diff=markdown -*.php diff=php - -/.github export-ignore -CHANGELOG.md export-ignore diff --git a/Chapter12/onlineStore/.gitignore b/Chapter12/onlineStore/.gitignore deleted file mode 100644 index eb003b0..0000000 --- a/Chapter12/onlineStore/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -/node_modules -/public/hot -/public/storage -/storage/*.key -/vendor -.env -.env.backup -.phpunit.result.cache -docker-compose.override.yml -Homestead.json -Homestead.yaml -npm-debug.log -yarn-error.log -/.idea -/.vscode diff --git a/Chapter12/onlineStore/.styleci.yml b/Chapter12/onlineStore/.styleci.yml deleted file mode 100644 index 679a631..0000000 --- a/Chapter12/onlineStore/.styleci.yml +++ /dev/null @@ -1,13 +0,0 @@ -php: - preset: laravel - version: 8 - disabled: - - no_unused_imports - finder: - not-name: - - index.php -js: - finder: - not-name: - - webpack.mix.js -css: true diff --git a/Chapter12/onlineStore/README.md b/Chapter12/onlineStore/README.md deleted file mode 100644 index f171eca..0000000 --- a/Chapter12/onlineStore/README.md +++ /dev/null @@ -1,64 +0,0 @@ -

- -

-Build Status -Total Downloads -Latest Stable Version -License -

- -## About Laravel - -Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as: - -- [Simple, fast routing engine](https://laravel.com/docs/routing). -- [Powerful dependency injection container](https://laravel.com/docs/container). -- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage. -- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent). -- Database agnostic [schema migrations](https://laravel.com/docs/migrations). -- [Robust background job processing](https://laravel.com/docs/queues). -- [Real-time event broadcasting](https://laravel.com/docs/broadcasting). - -Laravel is accessible, powerful, and provides tools required for large, robust applications. - -## Learning Laravel - -Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework. - -If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 2000 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library. - -## Laravel Sponsors - -We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell). - -### Premium Partners - -- **[Vehikl](https://vehikl.com/)** -- **[Tighten Co.](https://tighten.co)** -- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** -- **[64 Robots](https://64robots.com)** -- **[Cubet Techno Labs](https://cubettech.com)** -- **[Cyber-Duck](https://cyber-duck.co.uk)** -- **[Many](https://www.many.co.uk)** -- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)** -- **[DevSquad](https://devsquad.com)** -- **[Curotec](https://www.curotec.com/services/technologies/laravel/)** -- **[OP.GG](https://op.gg)** -- **[WebReinvent](https://webreinvent.com/?utm_source=laravel&utm_medium=github&utm_campaign=patreon-sponsors)** -- **[Lendio](https://lendio.com)** - -## Contributing - -Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions). - -## Code of Conduct - -In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). - -## Security Vulnerabilities - -If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed. - -## License - -The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). diff --git a/Chapter12/onlineStore/app/Console/Kernel.php b/Chapter12/onlineStore/app/Console/Kernel.php deleted file mode 100644 index d8bc1d2..0000000 --- a/Chapter12/onlineStore/app/Console/Kernel.php +++ /dev/null @@ -1,32 +0,0 @@ -command('inspire')->hourly(); - } - - /** - * Register the commands for the application. - * - * @return void - */ - protected function commands() - { - $this->load(__DIR__.'/Commands'); - - require base_path('routes/console.php'); - } -} diff --git a/Chapter12/onlineStore/app/Exceptions/Handler.php b/Chapter12/onlineStore/app/Exceptions/Handler.php deleted file mode 100644 index 8e7fbd1..0000000 --- a/Chapter12/onlineStore/app/Exceptions/Handler.php +++ /dev/null @@ -1,41 +0,0 @@ -> - */ - protected $dontReport = [ - // - ]; - - /** - * A list of the inputs that are never flashed for validation exceptions. - * - * @var array - */ - protected $dontFlash = [ - 'current_password', - 'password', - 'password_confirmation', - ]; - - /** - * Register the exception handling callbacks for the application. - * - * @return void - */ - public function register() - { - $this->reportable(function (Throwable $e) { - // - }); - } -} diff --git a/Chapter12/onlineStore/app/Http/Controllers/Controller.php b/Chapter12/onlineStore/app/Http/Controllers/Controller.php deleted file mode 100644 index a0a2a8a..0000000 --- a/Chapter12/onlineStore/app/Http/Controllers/Controller.php +++ /dev/null @@ -1,13 +0,0 @@ -with("viewData", $viewData); - } - - public function about() - { - $viewData = []; - $viewData["title"] = "About us - Online Store"; - $viewData["subtitle"] = "About us"; - $viewData["description"] = "This is an about page ..."; - $viewData["author"] = "Developed by: Your Name"; - return view('home.about')->with("viewData", $viewData); - } -} diff --git a/Chapter12/onlineStore/app/Http/Controllers/ProductController.php b/Chapter12/onlineStore/app/Http/Controllers/ProductController.php deleted file mode 100644 index 552a472..0000000 --- a/Chapter12/onlineStore/app/Http/Controllers/ProductController.php +++ /dev/null @@ -1,34 +0,0 @@ -"1", "name"=>"TV", "description"=>"Best TV", "image" => "game.png", "price"=>"1000"], - ["id"=>"2", "name"=>"iPhone", "description"=>"Best iPhone", "image" => "safe.png", "price"=>"999"], - ["id"=>"3", "name"=>"Chromecast", "description"=>"Best Chromecast", "image" => "submarine.png", "price"=>"30"], - ["id"=>"4", "name"=>"Glasses", "description"=>"Best Glasses", "image" => "game.png", "price"=>"100"] - ]; - - public function index() - { - $viewData = []; - $viewData["title"] = "Products - Online Store"; - $viewData["subtitle"] = "List of products"; - $viewData["products"] = ProductController::$products; - return view('product.index')->with("viewData", $viewData); - } - - public function show($id) - { - $viewData = []; - $product = ProductController::$products[$id-1]; - $viewData["title"] = $product["name"]." - Online Store"; - $viewData["subtitle"] = $product["name"]." - Product information"; - $viewData["product"] = $product; - return view('product.show')->with("viewData", $viewData); - } -} diff --git a/Chapter12/onlineStore/app/Http/Kernel.php b/Chapter12/onlineStore/app/Http/Kernel.php deleted file mode 100644 index d3722c2..0000000 --- a/Chapter12/onlineStore/app/Http/Kernel.php +++ /dev/null @@ -1,67 +0,0 @@ - - */ - protected $middleware = [ - // \App\Http\Middleware\TrustHosts::class, - \App\Http\Middleware\TrustProxies::class, - \Fruitcake\Cors\HandleCors::class, - \App\Http\Middleware\PreventRequestsDuringMaintenance::class, - \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, - \App\Http\Middleware\TrimStrings::class, - \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, - ]; - - /** - * The application's route middleware groups. - * - * @var array> - */ - protected $middlewareGroups = [ - 'web' => [ - \App\Http\Middleware\EncryptCookies::class, - \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, - \Illuminate\Session\Middleware\StartSession::class, - // \Illuminate\Session\Middleware\AuthenticateSession::class, - \Illuminate\View\Middleware\ShareErrorsFromSession::class, - \App\Http\Middleware\VerifyCsrfToken::class, - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - - 'api' => [ - // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, - 'throttle:api', - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - ]; - - /** - * The application's route middleware. - * - * These middleware may be assigned to groups or used individually. - * - * @var array - */ - protected $routeMiddleware = [ - 'auth' => \App\Http\Middleware\Authenticate::class, - 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::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, - 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, - 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, - 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, - ]; -} diff --git a/Chapter12/onlineStore/app/Http/Middleware/Authenticate.php b/Chapter12/onlineStore/app/Http/Middleware/Authenticate.php deleted file mode 100644 index 704089a..0000000 --- a/Chapter12/onlineStore/app/Http/Middleware/Authenticate.php +++ /dev/null @@ -1,21 +0,0 @@ -expectsJson()) { - return route('login'); - } - } -} diff --git a/Chapter12/onlineStore/app/Http/Middleware/EncryptCookies.php b/Chapter12/onlineStore/app/Http/Middleware/EncryptCookies.php deleted file mode 100644 index 867695b..0000000 --- a/Chapter12/onlineStore/app/Http/Middleware/EncryptCookies.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter12/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/Chapter12/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php deleted file mode 100644 index 74cbd9a..0000000 --- a/Chapter12/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter12/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php b/Chapter12/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php deleted file mode 100644 index a2813a0..0000000 --- a/Chapter12/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php +++ /dev/null @@ -1,32 +0,0 @@ -check()) { - return redirect(RouteServiceProvider::HOME); - } - } - - return $next($request); - } -} diff --git a/Chapter12/onlineStore/app/Http/Middleware/TrimStrings.php b/Chapter12/onlineStore/app/Http/Middleware/TrimStrings.php deleted file mode 100644 index 88cadca..0000000 --- a/Chapter12/onlineStore/app/Http/Middleware/TrimStrings.php +++ /dev/null @@ -1,19 +0,0 @@ - - */ - protected $except = [ - 'current_password', - 'password', - 'password_confirmation', - ]; -} diff --git a/Chapter12/onlineStore/app/Http/Middleware/TrustHosts.php b/Chapter12/onlineStore/app/Http/Middleware/TrustHosts.php deleted file mode 100644 index 7186414..0000000 --- a/Chapter12/onlineStore/app/Http/Middleware/TrustHosts.php +++ /dev/null @@ -1,20 +0,0 @@ - - */ - public function hosts() - { - return [ - $this->allSubdomainsOfApplicationUrl(), - ]; - } -} diff --git a/Chapter12/onlineStore/app/Http/Middleware/TrustProxies.php b/Chapter12/onlineStore/app/Http/Middleware/TrustProxies.php deleted file mode 100644 index 3391630..0000000 --- a/Chapter12/onlineStore/app/Http/Middleware/TrustProxies.php +++ /dev/null @@ -1,28 +0,0 @@ -|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/Chapter12/onlineStore/app/Http/Middleware/VerifyCsrfToken.php b/Chapter12/onlineStore/app/Http/Middleware/VerifyCsrfToken.php deleted file mode 100644 index 9e86521..0000000 --- a/Chapter12/onlineStore/app/Http/Middleware/VerifyCsrfToken.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter12/onlineStore/app/Models/Product.php b/Chapter12/onlineStore/app/Models/Product.php deleted file mode 100644 index c428a88..0000000 --- a/Chapter12/onlineStore/app/Models/Product.php +++ /dev/null @@ -1,11 +0,0 @@ - - */ - 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', - ]; -} diff --git a/Chapter12/onlineStore/app/Providers/AppServiceProvider.php b/Chapter12/onlineStore/app/Providers/AppServiceProvider.php deleted file mode 100644 index ee8ca5b..0000000 --- a/Chapter12/onlineStore/app/Providers/AppServiceProvider.php +++ /dev/null @@ -1,28 +0,0 @@ - - */ - protected $policies = [ - // 'App\Models\Model' => 'App\Policies\ModelPolicy', - ]; - - /** - * Register any authentication / authorization services. - * - * @return void - */ - public function boot() - { - $this->registerPolicies(); - - // - } -} diff --git a/Chapter12/onlineStore/app/Providers/BroadcastServiceProvider.php b/Chapter12/onlineStore/app/Providers/BroadcastServiceProvider.php deleted file mode 100644 index 395c518..0000000 --- a/Chapter12/onlineStore/app/Providers/BroadcastServiceProvider.php +++ /dev/null @@ -1,21 +0,0 @@ -> - */ - protected $listen = [ - Registered::class => [ - SendEmailVerificationNotification::class, - ], - ]; - - /** - * Register any events for your application. - * - * @return void - */ - public function boot() - { - // - } -} diff --git a/Chapter12/onlineStore/app/Providers/RouteServiceProvider.php b/Chapter12/onlineStore/app/Providers/RouteServiceProvider.php deleted file mode 100644 index 7c17d1f..0000000 --- a/Chapter12/onlineStore/app/Providers/RouteServiceProvider.php +++ /dev/null @@ -1,63 +0,0 @@ -configureRateLimiting(); - - $this->routes(function () { - Route::prefix('api') - ->middleware('api') - ->namespace($this->namespace) - ->group(base_path('routes/api.php')); - - Route::middleware('web') - ->namespace($this->namespace) - ->group(base_path('routes/web.php')); - }); - } - - /** - * Configure the rate limiters for the application. - * - * @return void - */ - protected function configureRateLimiting() - { - RateLimiter::for('api', function (Request $request) { - return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); - }); - } -} diff --git a/Chapter12/onlineStore/artisan b/Chapter12/onlineStore/artisan deleted file mode 100644 index 67a3329..0000000 --- a/Chapter12/onlineStore/artisan +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env php -make(Illuminate\Contracts\Console\Kernel::class); - -$status = $kernel->handle( - $input = new Symfony\Component\Console\Input\ArgvInput, - new Symfony\Component\Console\Output\ConsoleOutput -); - -/* -|-------------------------------------------------------------------------- -| Shutdown The Application -|-------------------------------------------------------------------------- -| -| Once Artisan has finished running, we will fire off the shutdown events -| so that any final work may be done by the application before we shut -| down the process. This is the last thing to happen to the request. -| -*/ - -$kernel->terminate($input, $status); - -exit($status); diff --git a/Chapter12/onlineStore/bootstrap/app.php b/Chapter12/onlineStore/bootstrap/app.php deleted file mode 100644 index 037e17d..0000000 --- a/Chapter12/onlineStore/bootstrap/app.php +++ /dev/null @@ -1,55 +0,0 @@ -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/Chapter12/onlineStore/bootstrap/cache/.gitignore b/Chapter12/onlineStore/bootstrap/cache/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter12/onlineStore/bootstrap/cache/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter12/onlineStore/composer.json b/Chapter12/onlineStore/composer.json deleted file mode 100644 index f0f2eda..0000000 --- a/Chapter12/onlineStore/composer.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "name": "laravel/laravel", - "type": "project", - "description": "The Laravel Framework.", - "keywords": ["framework", "laravel"], - "license": "MIT", - "require": { - "php": "^8.0", - "fruitcake/laravel-cors": "^2.0.5", - "guzzlehttp/guzzle": "^7.2", - "laravel/framework": "^9.0", - "laravel/sanctum": "^2.14", - "laravel/tinker": "^2.7" - }, - "require-dev": { - "fakerphp/faker": "^1.9.1", - "laravel/sail": "^1.0.1", - "mockery/mockery": "^1.4.4", - "nunomaduro/collision": "^6.1", - "phpunit/phpunit": "^9.5.10", - "spatie/laravel-ignition": "^1.0", - "squizlabs/php_codesniffer": "^3.6" - }, - "autoload": { - "psr-4": { - "App\\": "app/", - "Database\\Factories\\": "database/factories/", - "Database\\Seeders\\": "database/seeders/" - } - }, - "autoload-dev": { - "psr-4": { - "Tests\\": "tests/" - } - }, - "scripts": { - "post-autoload-dump": [ - "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", - "@php artisan package:discover --ansi" - ], - "post-update-cmd": [ - "@php artisan vendor:publish --tag=laravel-assets --ansi --force" - ], - "post-root-package-install": [ - "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" - ], - "post-create-project-cmd": [ - "@php artisan key:generate --ansi" - ] - }, - "extra": { - "laravel": { - "dont-discover": [] - } - }, - "config": { - "optimize-autoloader": true, - "preferred-install": "dist", - "sort-packages": true - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/Chapter12/onlineStore/composer.lock b/Chapter12/onlineStore/composer.lock deleted file mode 100644 index b55e897..0000000 --- a/Chapter12/onlineStore/composer.lock +++ /dev/null @@ -1,7860 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "8bdcc31974d0d5a00db79c82827c8815", - "packages": [ - { - "name": "asm89/stack-cors", - "version": "v2.1.1", - "source": { - "type": "git", - "url": "https://github.com/asm89/stack-cors.git", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4|^5|^6" - }, - "require-dev": { - "phpunit/phpunit": "^7|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "psr-4": { - "Asm89\\Stack\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alexander", - "email": "iam.asm89@gmail.com" - } - ], - "description": "Cross-origin resource sharing library and stack middleware", - "homepage": "https://github.com/asm89/stack-cors", - "keywords": [ - "cors", - "stack" - ], - "support": { - "issues": "https://github.com/asm89/stack-cors/issues", - "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" - }, - "time": "2022-01-18T09:12:03+00:00" - }, - { - "name": "brick/math", - "version": "0.9.3", - "source": { - "type": "git", - "url": "https://github.com/brick/math.git", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", - "vimeo/psalm": "4.9.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Brick\\Math\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Arbitrary-precision arithmetic library", - "keywords": [ - "Arbitrary-precision", - "BigInteger", - "BigRational", - "arithmetic", - "bigdecimal", - "bignum", - "brick", - "math" - ], - "support": { - "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.9.3" - }, - "funding": [ - { - "url": "https://github.com/BenMorel", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/brick/math", - "type": "tidelift" - } - ], - "time": "2021-08-15T20:50:18+00:00" - }, - { - "name": "dflydev/dot-access-data", - "version": "v3.0.1", - "source": { - "type": "git", - "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c", - "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": "^3.14" - }, - "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.1" - }, - "time": "2021-08-13T13:06:58+00:00" - }, - { - "name": "doctrine/inflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "vimeo/psalm": "^4.10" - }, - "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.4" - }, - "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": "2021-10-22T20:16:43+00:00" - }, - { - "name": "doctrine/lexer", - "version": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" - } - }, - "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/1.2.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%2Flexer", - "type": "tidelift" - } - ], - "time": "2022-01-12T08:27:12+00:00" - }, - { - "name": "dragonmantank/cron-expression", - "version": "v3.3.1", - "source": { - "type": "git", - "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "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.1" - }, - "funding": [ - { - "url": "https://github.com/dragonmantank", - "type": "github" - } - ], - "time": "2022-01-18T15:43:28+00:00" - }, - { - "name": "egulias/email-validator", - "version": "3.1.2", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ee0db30118f661fb166bcffbf5d82032df484697", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^1.2", - "php": ">=7.2", - "symfony/polyfill-intl-idn": "^1.15" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^8.5.8|^9.3.3", - "vimeo/psalm": "^4" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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/3.1.2" - }, - "funding": [ - { - "url": "https://github.com/egulias", - "type": "github" - } - ], - "time": "2021-10-11T09:18:27+00:00" - }, - { - "name": "fruitcake/laravel-cors", - "version": "v2.0.5", - "source": { - "type": "git", - "url": "https://github.com/fruitcake/laravel-cors.git", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "shasum": "" - }, - "require": { - "asm89/stack-cors": "^2.0.1", - "illuminate/contracts": "^6|^7|^8|^9", - "illuminate/support": "^6|^7|^8|^9", - "php": ">=7.2", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4.3.4|^5|^6" - }, - "require-dev": { - "laravel/framework": "^6|^7.24|^8", - "orchestra/testbench-dusk": "^4|^5|^6|^7", - "phpunit/phpunit": "^6|^7|^8|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - }, - "laravel": { - "providers": [ - "Fruitcake\\Cors\\CorsServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Fruitcake\\Cors\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fruitcake", - "homepage": "https://fruitcake.nl" - }, - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", - "keywords": [ - "api", - "cors", - "crossdomain", - "laravel" - ], - "support": { - "issues": "https://github.com/fruitcake/laravel-cors/issues", - "source": "https://github.com/fruitcake/laravel-cors/tree/v2.0.5" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "time": "2022-01-03T14:53:04+00:00" - }, - { - "name": "graham-campbell/result-type", - "version": "v1.0.4", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "0690bde05318336c7221785f2a932467f98b64ca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/0690bde05318336c7221785f2a932467f98b64ca", - "reference": "0690bde05318336c7221785f2a932467f98b64ca", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "phpoption/phpoption": "^1.8" - }, - "require-dev": { - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", - "type": "tidelift" - } - ], - "time": "2021-11-21T21:41:47+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "7.4.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.8.3 || ^2.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.4.1", - "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.5 || ^9.3.5", - "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": { - "branch-alias": { - "dev-master": "7.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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.4.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": "2021-12-06T18:43:05+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "1.5.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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/1.5.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "time": "2021-10-22T20:56:57+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.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.4.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.8 || ^9.3.10" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "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.1.0" - }, - "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": "2021-10-06T17:43:30+00:00" - }, - { - "name": "laravel/framework", - "version": "v9.0.1", - "source": { - "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "shasum": "" - }, - "require": { - "doctrine/inflector": "^2.0", - "dragonmantank/cron-expression": "^3.1", - "egulias/email-validator": "^3.1", - "ext-mbstring": "*", - "ext-openssl": "*", - "laravel/serializable-closure": "^1.0", - "league/commonmark": "^2.2", - "league/flysystem": "^3.0", - "monolog/monolog": "^2.0", - "nesbot/carbon": "^2.53.1", - "php": "^8.0.2", - "psr/container": "^1.1.1|^2.0.1", - "psr/log": "^1.0|^2.0|^3.0", - "psr/simple-cache": "^1.0|^2.0|^3.0", - "ramsey/uuid": "^4.2.2", - "symfony/console": "^6.0", - "symfony/error-handler": "^6.0", - "symfony/finder": "^6.0", - "symfony/http-foundation": "^6.0", - "symfony/http-kernel": "^6.0", - "symfony/mailer": "^6.0", - "symfony/mime": "^6.0", - "symfony/process": "^6.0", - "symfony/routing": "^6.0", - "symfony/var-dumper": "^6.0", - "tijsverkoyen/css-to-inline-styles": "^2.2.2", - "vlucas/phpdotenv": "^5.4.1", - "voku/portable-ascii": "^2.0" - }, - "conflict": { - "tightenco/collect": "<5.5.33" - }, - "provide": { - "psr/container-implementation": "1.1|2.0", - "psr/simple-cache-implementation": "1.0|2.0|3.0" - }, - "replace": { - "illuminate/auth": "self.version", - "illuminate/broadcasting": "self.version", - "illuminate/bus": "self.version", - "illuminate/cache": "self.version", - "illuminate/collections": "self.version", - "illuminate/conditionable": "self.version", - "illuminate/config": "self.version", - "illuminate/console": "self.version", - "illuminate/container": "self.version", - "illuminate/contracts": "self.version", - "illuminate/cookie": "self.version", - "illuminate/database": "self.version", - "illuminate/encryption": "self.version", - "illuminate/events": "self.version", - "illuminate/filesystem": "self.version", - "illuminate/hashing": "self.version", - "illuminate/http": "self.version", - "illuminate/log": "self.version", - "illuminate/macroable": "self.version", - "illuminate/mail": "self.version", - "illuminate/notifications": "self.version", - "illuminate/pagination": "self.version", - "illuminate/pipeline": "self.version", - "illuminate/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": { - "aws/aws-sdk-php": "^3.198.1", - "doctrine/dbal": "^2.13.3|^3.1.4", - "fakerphp/faker": "^1.9.2", - "guzzlehttp/guzzle": "^7.2", - "league/flysystem-aws-s3-v3": "^3.0", - "league/flysystem-ftp": "^3.0", - "league/flysystem-sftp-v3": "^3.0", - "mockery/mockery": "^1.4.4", - "orchestra/testbench-core": "^7.0", - "pda/pheanstalk": "^4.0", - "phpstan/phpstan": "^1.0", - "phpunit/phpunit": "^9.5.8", - "predis/predis": "^1.1.9", - "symfony/amazon-mailer": "^6.0", - "symfony/cache": "^6.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.198.1).", - "brianium/paratest": "Required to run tests in parallel (^6.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", - "ext-bcmath": "Required to use the multiple_of validation rule.", - "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.", - "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.2).", - "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-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", - "mockery/mockery": "Required to use mocking (^1.4.4).", - "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).", - "predis/predis": "Required to use the predis connector (^1.1.9).", - "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.0).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^6.0).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.0).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.0).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.0).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.x-dev" - } - }, - "autoload": { - "files": [ - "src/Illuminate/Collections/helpers.php", - "src/Illuminate/Events/functions.php", - "src/Illuminate/Foundation/helpers.php", - "src/Illuminate/Support/helpers.php" - ], - "psr-4": { - "Illuminate\\": "src/Illuminate/", - "Illuminate\\Support\\": [ - "src/Illuminate/Macroable/", - "src/Illuminate/Collections/", - "src/Illuminate/Conditionable/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Laravel Framework.", - "homepage": "https://laravel.com", - "keywords": [ - "framework", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2022-02-09T15:00:05+00:00" - }, - { - "name": "laravel/sanctum", - "version": "v2.14.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/sanctum.git", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/0647a87140c7522e75826cffcadb3ad6e01f71e9", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/contracts": "^6.9|^7.0|^8.0|^9.0", - "illuminate/database": "^6.9|^7.0|^8.0|^9.0", - "illuminate/support": "^6.9|^7.0|^8.0|^9.0", - "php": "^7.2|^8.0" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0", - "phpunit/phpunit": "^8.0|^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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": "2022-01-12T15:07:43+00:00" - }, - { - "name": "laravel/serializable-closure", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/serializable-closure.git", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/65c9faf50d567b65d81764a44526545689e3fe63", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "pestphp/pest": "^1.18", - "phpstan/phpstan": "^0.12.98", - "symfony/var-dumper": "^5.3" - }, - "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": "2022-02-01T16:29:39+00:00" - }, - { - "name": "laravel/tinker", - "version": "v2.7.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/tinker.git", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/5f2f9815b7631b9f586a3de7933c25f9327d4073", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073", - "shasum": "" - }, - "require": { - "illuminate/console": "^6.0|^7.0|^8.0|^9.0", - "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.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", - "phpunit/phpunit": "^8.5.8|^9.3.3" - }, - "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.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.7.0" - }, - "time": "2022-01-10T08:52:49+00:00" - }, - { - "name": "league/commonmark", - "version": "2.2.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/commonmark.git", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "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.15" - }, - "require-dev": { - "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.0", - "commonmark/commonmark.js": "0.30.0", - "composer/package-versions-deprecated": "^1.8", - "erusev/parsedown": "^1.0", - "ext-json": "*", - "github/gfm": "0.29.0", - "michelf/php-markdown": "^1.4", - "phpstan/phpstan": "^0.12.88 || ^1.0.0", - "phpunit/phpunit": "^9.5.5", - "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", - "unleashedtech/php-coding-standard": "^3.1", - "vimeo/psalm": "^4.7.3" - }, - "suggest": { - "symfony/yaml": "v2.3+ required if using the Front Matter extension" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.3-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": "2022-01-25T14:37:33+00:00" - }, - { - "name": "league/config", - "version": "v1.1.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/config.git", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/config/zipball/a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^3.0.1", - "nette/schema": "^1.2", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.90", - "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": "2021-08-14T12:15:32+00:00" - }, - { - "name": "league/flysystem", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9f8b4260031bfef5497477da53dd57b2aaff0e06", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06", - "shasum": "" - }, - "require": { - "ext-json": "*", - "league/mime-type-detection": "^1.0.0", - "php": "^8.0.2" - }, - "conflict": { - "guzzlehttp/guzzle": "<7.0", - "guzzlehttp/ringphp": "<1.1.1", - "symfony/http-client": "<5.2" - }, - "require-dev": { - "async-aws/s3": "^1.5", - "async-aws/simple-s3": "^1.0", - "aws/aws-sdk-php": "^3.198.1", - "composer/semver": "^3.0", - "ext-fileinfo": "*", - "ext-ftp": "*", - "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.5", - "google/cloud-storage": "^1.23", - "phpseclib/phpseclib": "^2.0", - "phpstan/phpstan": "^0.12.26", - "phpunit/phpunit": "^9.5.11", - "sabre/dav": "^4.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.0.3" - }, - "funding": [ - { - "url": "https://offset.earth/frankdejonge", - "type": "custom" - }, - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2022-01-31T19:41:04+00:00" - }, - { - "name": "league/mime-type-detection", - "version": "1.9.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/aa70e813a6ad3d1558fc927863d47309b4c23e69", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.2", - "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" - }, - "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.9.0" - }, - "funding": [ - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2021-11-21T11:48:40+00:00" - }, - { - "name": "monolog/monolog", - "version": "2.3.5", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd4380d6fc37626e2f799f29d91195040137eba9", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "provide": { - "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7", - "graylog2/gelf-php": "^1.4.2", - "mongodb/mongodb": "^1.8", - "php-amqplib/php-amqplib": "~2.4 || ^3", - "php-console/php-console": "^3.1.3", - "phpspec/prophecy": "^1.6.1", - "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5", - "predis/predis": "^1.1", - "rollbar/rollbar": "^1.3", - "ruflin/elastica": ">=0.90@dev", - "swiftmailer/swiftmailer": "^5.3|^6.0" - }, - "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", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "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": "2.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/2.3.5" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" - } - ], - "time": "2021-10-01T21:08:31+00:00" - }, - { - "name": "nesbot/carbon", - "version": "2.56.0", - "source": { - "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1.8 || ^8.0", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "doctrine/dbal": "^2.0 || ^3.0", - "doctrine/orm": "^2.7", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "phpmd/phpmd": "^2.9", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.54 || ^1.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.14", - "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://opencollective.com/Carbon", - "type": "open_collective" - }, - { - "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", - "type": "tidelift" - } - ], - "time": "2022-01-21T17:08:38+00:00" - }, - { - "name": "nette/schema", - "version": "v1.2.2", - "source": { - "type": "git", - "url": "https://github.com/nette/schema.git", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/9a39cef03a5b34c7de64f551538cbba05c2be5df", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df", - "shasum": "" - }, - "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": ">=7.1 <8.2" - }, - "require-dev": { - "nette/tester": "^2.3 || ^2.4", - "phpstan/phpstan-nette": "^0.12", - "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.2" - }, - "time": "2021-10-15T11:40:02+00:00" - }, - { - "name": "nette/utils", - "version": "v3.2.7", - "source": { - "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/0af4e3de4df9f1543534beab255ccf459e7a2c99", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99", - "shasum": "" - }, - "require": { - "php": ">=7.2 <8.2" - }, - "conflict": { - "nette/di": "<3.0.6" - }, - "require-dev": { - "nette/tester": "~2.0", - "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.3" - }, - "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()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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 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/v3.2.7" - }, - "time": "2022-01-24T11:29:14+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.13.2", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", - "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.13.2" - }, - "time": "2021-11-30T19:35:32+00:00" - }, - { - "name": "phpoption/phpoption", - "version": "1.8.1", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-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.8.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", - "type": "tidelift" - } - ], - "time": "2021-12-04T23:24:31+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.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.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": "http://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/tree/master" - }, - "time": "2020-06-29T06:28:15+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.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": "http://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/master" - }, - "time": "2019-04-30T12:38:16+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.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": "http://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/master" - }, - "time": "2016-08-06T14:39: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.1", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "570292577277f06f590635381a7f761a6cf4f026" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/570292577277f06f590635381a7f761a6cf4f026", - "reference": "570292577277f06f590635381a7f761a6cf4f026", - "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" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "3.17.05.02" - }, - "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.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." - }, - "bin": [ - "bin/psysh" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "0.11.x-dev" - } - }, - "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.1" - }, - "time": "2022-01-03T13:58:38+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": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/ramsey/collection.git", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "shasum": "" - }, - "require": { - "php": "^7.3 || ^8", - "symfony/polyfill-php81": "^1.23" - }, - "require-dev": { - "captainhook/captainhook": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "ergebnis/composer-normalize": "^2.6", - "fakerphp/faker": "^1.5", - "hamcrest/hamcrest-php": "^2", - "jangregor/phpstan-prophecy": "^0.8", - "mockery/mockery": "^1.3", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1", - "phpstan/phpstan": "^0.12.32", - "phpstan/phpstan-mockery": "^0.12.5", - "phpstan/phpstan-phpunit": "^0.12.11", - "phpunit/phpunit": "^8.5 || ^9", - "psy/psysh": "^0.10.4", - "slevomat/coding-standard": "^6.3", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.4" - }, - "type": "library", - "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/1.2.2" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "time": "2021-10-10T03:01:02+00:00" - }, - { - "name": "ramsey/uuid", - "version": "4.2.3", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "shasum": "" - }, - "require": { - "brick/math": "^0.8 || ^0.9", - "ext-json": "*", - "php": "^7.2 || ^8.0", - "ramsey/collection": "^1.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php80": "^1.14" - }, - "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", - "moontoast/math": "^1.1", - "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.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-mockery": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^8.5 || ^9", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" - }, - "suggest": { - "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-ctype": "Enables faster processing of character classification using ctype functions.", - "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": { - "branch-alias": { - "dev-main": "4.x-dev" - }, - "captainhook": { - "force-install": true - } - }, - "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "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.2.3" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2021-09-25T23:10:38+00:00" - }, - { - "name": "symfony/console", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/22e8efd019c3270c4f79376234a3f8752cd25490", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.4|^6.0" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/css-selector", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/1955d595c12c111629cc814d3f2a2ff13580508a", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a", - "shasum": "" - }, - "require": { - "php": ">=8.0.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/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-11-01T23:48:49+00:00" - }, - { - "name": "symfony/error-handler", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/20343b3bad7ebafa38138ddcb97290a24722b57b", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" - }, - "bin": [ - "Resources/bin/patch-type-declarations" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to manage errors and ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6472ea2dd415e925b90ca82be64b8bc6157f3934", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/event-dispatcher-contracts": "^2|^3" - }, - "conflict": { - "symfony/dependency-injection": "<5.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^5.4|^6.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/aa5422287b75594b90ee9cd807caf8f0df491385", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/event-dispatcher": "^1" - }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-07-15T12:33:35+00:00" - }, - { - "name": "symfony/finder", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/8661b74dbabc23223f38c9b99d3f8ade71170430", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ad157299ced81a637fade1efcadd688d6deba5c1", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1" - }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/cache": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0" - }, - "suggest": { - "symfony/mime": "To use the file extension guesser" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v6.0.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/error-handler": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", - "symfony/twig-bridge": "<5.4", - "symfony/validator": "<5.4", - "twig/twig": "<2.13" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/process": "^5.4|^6.0", - "symfony/routing": "^5.4|^6.0", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-29T18:12:46+00:00" - }, - { - "name": "symfony/mailer", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mailer.git", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "shasum": "" - }, - "require": { - "egulias/email-validator": "^2.1.10|^3", - "php": ">=8.0.2", - "psr/event-dispatcher": "^1", - "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3" - }, - "conflict": { - "symfony/http-kernel": "<5.4" - }, - "require-dev": { - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/messenger": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/mime", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/2cd9601efd040e56f43360daa68f3c6b0534923a", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "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" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "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.24.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": "2021-10-20T20:35:02+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-11-23T21:10:46+00:00" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44", - "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.23-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.24.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": "2021-09-14T14:02:44+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.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": "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.24.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": "2021-11-30T18:21:41+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-05-27T09:17:38+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:33+00:00" - }, - { - "name": "symfony/polyfill-php81", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:11+00:00" - }, - { - "name": "symfony/process", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/298ed357274c1868c20a0061df256a1250a6c4af", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/routing", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/yaml": "<5.4" - }, - "require-dev": { - "doctrine/annotations": "^1.12", - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/36715ebf9fb9db73db0cb24263c79077c6fe8603", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/container": "^2.0" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "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.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": "2021-11-04T17:53:12+00:00" - }, - { - "name": "symfony/string", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/522144f0c4c004c80d56fa47e40e17028e2eefc2", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.0" - }, - "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/translation-contracts": "^2.0|^3.0", - "symfony/var-exporter": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "files": [ - "Resources/functions.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 an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/translation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/71bb15335798f8c4da110911bcf2d2fead7a430d", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.3|^3.0" - }, - "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" - }, - "provide": { - "symfony/translation-implementation": "2.3|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-07T00:29:03+00:00" - }, - { - "name": "symfony/translation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "suggest": { - "symfony/translation-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - } - }, - "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.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": "2021-09-07T12:43:40+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7b701676fc64f9ef11f9b4870f16b48f66be4834", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<5.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-17T16:30:44+00:00" - }, - { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.4", - "source": { - "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" - } - ], - "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", - "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "support": { - "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" - }, - "time": "2021-12-08T09:12:39+00:00" - }, - { - "name": "vlucas/phpdotenv", - "version": "v5.4.1", - "source": { - "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", - "shasum": "" - }, - "require": { - "ext-pcre": "*", - "graham-campbell/result-type": "^1.0.2", - "php": "^7.1.3 || ^8.0", - "phpoption/phpoption": "^1.8", - "symfony/polyfill-ctype": "^1.23", - "symfony/polyfill-mbstring": "^1.23.1", - "symfony/polyfill-php80": "^1.23.1" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" - }, - "suggest": { - "ext-filter": "Required to use the boolean validator." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.4-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.4.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", - "type": "tidelift" - } - ], - "time": "2021-12-12T23:22:04+00:00" - }, - { - "name": "voku/portable-ascii", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/voku/portable-ascii.git", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/9bd89e83cecdf8c37b64909454249eaed98b2c89", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89", - "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.0" - }, - "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-01-24T18:59:03+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "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.10.0" - }, - "time": "2021-03-09T10:59:23+00:00" - } - ], - "packages-dev": [ - { - "name": "doctrine/instantiator", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.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%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2020-11-10T18:47:58+00:00" - }, - { - "name": "facade/ignition-contracts", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/facade/ignition-contracts.git", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^v2.15.8", - "phpunit/phpunit": "^9.3.11", - "vimeo/psalm": "^3.17.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Facade\\IgnitionContracts\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://flareapp.io", - "role": "Developer" - } - ], - "description": "Solution contracts for Ignition", - "homepage": "https://github.com/facade/ignition-contracts", - "keywords": [ - "contracts", - "flare", - "ignition" - ], - "support": { - "issues": "https://github.com/facade/ignition-contracts/issues", - "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" - }, - "time": "2020-10-16T08:27:54+00:00" - }, - { - "name": "fakerphp/faker", - "version": "v1.19.0", - "source": { - "type": "git", - "url": "https://github.com/FakerPHP/Faker.git", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^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": "*", - "symfony/phpunit-bridge": "^4.4 || ^5.2" - }, - "suggest": { - "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", - "ext-curl": "Required by Faker\\Provider\\Image to download images.", - "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", - "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.19-dev" - } - }, - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "François Zaninotto" - } - ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], - "support": { - "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0" - }, - "time": "2022-02-02T17:38:57+00:00" - }, - { - "name": "filp/whoops", - "version": "2.14.5", - "source": { - "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "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.14.5" - }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "time": "2022-01-07T12:00:00+00:00" - }, - { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "shasum": "" - }, - "require": { - "php": "^5.3|^7.0|^8.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" - }, - "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "classmap": [ - "hamcrest" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "This is the PHP port of Hamcrest Matchers", - "keywords": [ - "test" - ], - "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" - }, - "time": "2020-07-09T08:09:16+00:00" - }, - { - "name": "laravel/sail", - "version": "v1.13.2", - "source": { - "type": "git", - "url": "https://github.com/laravel/sail.git", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.0|^9.0", - "illuminate/contracts": "^8.0|^9.0", - "illuminate/support": "^8.0|^9.0", - "php": "^7.3|^8.0" - }, - "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": "2022-02-08T14:14:12+00:00" - }, - { - "name": "mockery/mockery", - "version": "1.5.0", - "source": { - "type": "git", - "url": "https://github.com/mockery/mockery.git", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "shasum": "" - }, - "require": { - "hamcrest/hamcrest-php": "^2.0.1", - "lib-pcre": ">=7.0", - "php": "^7.3 || ^8.0" - }, - "conflict": { - "phpunit/phpunit": "<8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-0": { - "Mockery": "library/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" - } - ], - "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": { - "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.5.0" - }, - "time": "2022-01-20T13:18:17+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.10.2", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "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.10.2" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2020-11-13T09:40:50+00:00" - }, - { - "name": "nunomaduro/collision", - "version": "v6.1.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/collision.git", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "shasum": "" - }, - "require": { - "facade/ignition-contracts": "^1.0.2", - "filp/whoops": "^2.14.5", - "php": "^8.0.0", - "symfony/console": "^6.0.2" - }, - "require-dev": { - "brianium/paratest": "^6.4.1", - "laravel/framework": "^9.0", - "nunomaduro/larastan": "^1.0.2", - "nunomaduro/mock-final-classes": "^1.1.0", - "orchestra/testbench": "^7.0.0", - "phpunit/phpunit": "^9.5.11" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "6.x-dev" - }, - "laravel": { - "providers": [ - "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" - ] - } - }, - "autoload": { - "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": "2022-01-18T17:49:08+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.1.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/15a90844ad40f127afd244c0cad228de2a80052a", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a", - "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.1.1" - }, - "time": "2022-02-07T21:56:48+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.6.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "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.6.0" - }, - "time": "2022-01-04T19:58:01+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" - }, - "time": "2021-12-08T12:19:24+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "9.2.10", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d5850aaf931743067f4bfc1ae4cbd06468400687", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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 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", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.10" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-05T09:12:13+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "3.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-02T12:48:52+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "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/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:58:55+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T05:33:50+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.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/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:16:10+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "9.5.13", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/597cb647654ede35e43b137926dfdfef0fb11743", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.3.1", - "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": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.7", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", - "sebastian/version": "^3.0.2" - }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.13" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-01-24T07:33:35+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:08:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "1.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:08:54+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:30:19+00:00" - }, - { - "name": "sebastian/comparator", - "version": "4.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:49:45+00:00" - }, - { - "name": "sebastian/complexity", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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 calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:52:27+00:00" - }, - { - "name": "sebastian/diff", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:10:38+00:00" - }, - { - "name": "sebastian/environment", - "version": "5.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-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": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:52:38+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "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", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-11-11T14:18:36+00:00" - }, - { - "name": "sebastian/global-state", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-11T13:31:12+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-28T06:42:11+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "http://www.github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:17:30+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:45:17+00:00" - }, - { - "name": "sebastian/type", - "version": "2.3.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-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/2.3.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-15T12:49:02+00:00" - }, - { - "name": "sebastian/version", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:39:44+00:00" - }, - { - "name": "spatie/backtrace", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/backtrace.git", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "ext-json": "*", - "phpunit/phpunit": "^9.3", - "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": { - "issues": "https://github.com/spatie/backtrace/issues", - "source": "https://github.com/spatie/backtrace/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/sponsors/spatie", - "type": "github" - }, - { - "url": "https://spatie.be/open-source/support-us", - "type": "other" - } - ], - "time": "2021-11-09T10:57:15+00:00" - }, - { - "name": "spatie/flare-client-php", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/flare-client-php.git", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "shasum": "" - }, - "require": { - "illuminate/pipeline": "^8.0|^9.0", - "php": "^8.0", - "spatie/backtrace": "^1.2", - "symfony/http-foundation": "^5.0|^6.0", - "symfony/mime": "^5.2|^6.0", - "symfony/process": "^5.2|^6.0", - "symfony/var-dumper": "^5.2|^6.0" - }, - "require-dev": { - "dms/phpunit-arraysubset-asserts": "^0.3.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/phpunit-snapshot-assertions": "^4.0" - }, - "type": "library", - "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.0.1" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2022-02-04T15:21:00+00:00" - }, - { - "name": "spatie/ignition", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/spatie/ignition.git", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/d2d5ba823af3004268556e87dfc94449e4159f5a", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "monolog/monolog": "^2.0", - "php": "^8.0", - "spatie/flare-client-php": "^1.0", - "symfony/console": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "mockery/mockery": "^1.4", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/ray": "^1.32", - "symfony/process": "^5.4|^6.0" - }, - "type": "library", - "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": "2022-01-19T12:57:41+00:00" - }, - { - "name": "spatie/laravel-ignition", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/68250225a9f83b086462c2af1b1139dfde48fbd2", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*", - "illuminate/support": "^8.77|^9.0", - "monolog/monolog": "^2.3", - "php": "^8.0", - "spatie/flare-client-php": "^1.0.1", - "spatie/ignition": "^1.0", - "symfony/console": "^5.0|^6.0", - "symfony/var-dumper": "^5.0|^6.0" - }, - "require-dev": { - "filp/whoops": "^2.14", - "livewire/livewire": "^2.8|dev-develop", - "mockery/mockery": "^1.4", - "nunomaduro/larastan": "^1.0", - "orchestra/testbench": "^6.23|^7.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/laravel-ray": "^1.27" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Spatie\\LaravelIgnition\\IgnitionServiceProvider" - ], - "aliases": { - "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" - } - } - }, - "autoload": { - "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": "2022-02-04T15:25:56+00:00" - }, - { - "name": "squizlabs/php_codesniffer", - "version": "3.6.2", - "source": { - "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", - "shasum": "" - }, - "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.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": "lead" - } - ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", - "keywords": [ - "phpcs", - "standards" - ], - "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" - }, - "time": "2021-12-12T21:44:58+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2021-07-28T10:34:58+00:00" - } - ], - "aliases": [], - "minimum-stability": "dev", - "stability-flags": [], - "prefer-stable": true, - "prefer-lowest": false, - "platform": { - "php": "^8.0" - }, - "platform-dev": [], - "plugin-api-version": "2.1.0" -} diff --git a/Chapter12/onlineStore/config/app.php b/Chapter12/onlineStore/config/app.php deleted file mode 100644 index 1941d7c..0000000 --- a/Chapter12/onlineStore/config/app.php +++ /dev/null @@ -1,197 +0,0 @@ - env('APP_NAME', 'Laravel'), - - /* - |-------------------------------------------------------------------------- - | Application Environment - |-------------------------------------------------------------------------- - | - | This value determines the "environment" your application is currently - | running in. This may determine how you prefer to configure various - | services the application utilizes. Set this in your ".env" file. - | - */ - - 'env' => env('APP_ENV', 'production'), - - /* - |-------------------------------------------------------------------------- - | Application Debug Mode - |-------------------------------------------------------------------------- - | - | When your application is in debug mode, detailed error messages with - | stack traces will be shown on every error that occurs within your - | application. If disabled, a simple generic error page is shown. - | - */ - - 'debug' => (bool) env('APP_DEBUG', false), - - /* - |-------------------------------------------------------------------------- - | Application URL - |-------------------------------------------------------------------------- - | - | This URL is used by the console to properly generate URLs when using - | the Artisan command line tool. You should set this to the root of - | your application so that it is used when running Artisan tasks. - | - */ - - 'url' => env('APP_URL', 'http://localhost'), - - 'asset_url' => env('ASSET_URL', null), - - /* - |-------------------------------------------------------------------------- - | 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', - - /* - |-------------------------------------------------------------------------- - | 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' => [ - - /* - * Laravel Framework Service Providers... - */ - Illuminate\Auth\AuthServiceProvider::class, - Illuminate\Broadcasting\BroadcastServiceProvider::class, - Illuminate\Bus\BusServiceProvider::class, - Illuminate\Cache\CacheServiceProvider::class, - Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, - Illuminate\Cookie\CookieServiceProvider::class, - Illuminate\Database\DatabaseServiceProvider::class, - Illuminate\Encryption\EncryptionServiceProvider::class, - Illuminate\Filesystem\FilesystemServiceProvider::class, - Illuminate\Foundation\Providers\FoundationServiceProvider::class, - Illuminate\Hashing\HashServiceProvider::class, - Illuminate\Mail\MailServiceProvider::class, - Illuminate\Notifications\NotificationServiceProvider::class, - Illuminate\Pagination\PaginationServiceProvider::class, - Illuminate\Pipeline\PipelineServiceProvider::class, - Illuminate\Queue\QueueServiceProvider::class, - Illuminate\Redis\RedisServiceProvider::class, - Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, - Illuminate\Session\SessionServiceProvider::class, - Illuminate\Translation\TranslationServiceProvider::class, - Illuminate\Validation\ValidationServiceProvider::class, - Illuminate\View\ViewServiceProvider::class, - - /* - * 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, - - ], - - /* - |-------------------------------------------------------------------------- - | 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([ - // ... - ])->toArray(), - -]; diff --git a/Chapter12/onlineStore/config/auth.php b/Chapter12/onlineStore/config/auth.php deleted file mode 100644 index d8c6cee..0000000 --- a/Chapter12/onlineStore/config/auth.php +++ /dev/null @@ -1,111 +0,0 @@ - [ - '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 expire 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. - | - */ - - 'passwords' => [ - 'users' => [ - 'provider' => 'users', - 'table' => 'password_resets', - '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/Chapter12/onlineStore/config/broadcasting.php b/Chapter12/onlineStore/config/broadcasting.php deleted file mode 100644 index 67fcbbd..0000000 --- a/Chapter12/onlineStore/config/broadcasting.php +++ /dev/null @@ -1,67 +0,0 @@ - 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'), - 'useTLS' => true, - ], - '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/Chapter12/onlineStore/config/cache.php b/Chapter12/onlineStore/config/cache.php deleted file mode 100644 index 8736c7a..0000000 --- a/Chapter12/onlineStore/config/cache.php +++ /dev/null @@ -1,110 +0,0 @@ - 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'), - ], - - '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 a RAM based store such as APC or Memcached, there might - | be other applications utilizing the same cache. So, we'll specify a - | value to get prefixed to all our keys so we can avoid collisions. - | - */ - - 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'), - -]; diff --git a/Chapter12/onlineStore/config/cors.php b/Chapter12/onlineStore/config/cors.php deleted file mode 100644 index 8a39e6d..0000000 --- a/Chapter12/onlineStore/config/cors.php +++ /dev/null @@ -1,34 +0,0 @@ - ['api/*', 'sanctum/csrf-cookie'], - - 'allowed_methods' => ['*'], - - 'allowed_origins' => ['*'], - - 'allowed_origins_patterns' => [], - - 'allowed_headers' => ['*'], - - 'exposed_headers' => [], - - 'max_age' => 0, - - 'supports_credentials' => false, - -]; diff --git a/Chapter12/onlineStore/config/database.php b/Chapter12/onlineStore/config/database.php deleted file mode 100644 index 0faebae..0000000 --- a/Chapter12/onlineStore/config/database.php +++ /dev/null @@ -1,147 +0,0 @@ - env('DB_CONNECTION', 'mysql'), - - /* - |-------------------------------------------------------------------------- - | Database Connections - |-------------------------------------------------------------------------- - | - | Here are each of the database connections setup for your application. - | Of course, examples of configuring each database platform that is - | supported by Laravel is shown below to make development simple. - | - | - | All database work in Laravel is done through the PHP PDO facilities - | so make sure you have the driver for your particular database of - | choice installed on your machine before you begin development. - | - */ - - 'connections' => [ - - 'sqlite' => [ - 'driver' => 'sqlite', - 'url' => env('DATABASE_URL'), - 'database' => env('DB_DATABASE', database_path('database.sqlite')), - 'prefix' => '', - 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), - ], - - 'mysql' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '3306'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'unix_socket' => env('DB_SOCKET', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - 'pgsql' => [ - 'driver' => 'pgsql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '5432'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - 'search_path' => 'public', - 'sslmode' => 'prefer', - ], - - 'sqlsrv' => [ - 'driver' => 'sqlsrv', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', 'localhost'), - 'port' => env('DB_PORT', '1433'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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'), - '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'), - 'password' => env('REDIS_PASSWORD'), - 'port' => env('REDIS_PORT', '6379'), - 'database' => env('REDIS_CACHE_DB', '1'), - ], - - ], - -]; diff --git a/Chapter12/onlineStore/config/filesystems.php b/Chapter12/onlineStore/config/filesystems.php deleted file mode 100644 index cf5abce..0000000 --- a/Chapter12/onlineStore/config/filesystems.php +++ /dev/null @@ -1,73 +0,0 @@ - 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 setup for each driver as an example of the required options. - | - | Supported Drivers: "local", "ftp", "sftp", "s3" - | - */ - - 'disks' => [ - - 'local' => [ - 'driver' => 'local', - 'root' => storage_path('app'), - ], - - 'public' => [ - 'driver' => 'local', - 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', - 'visibility' => 'public', - ], - - '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), - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter12/onlineStore/config/hashing.php b/Chapter12/onlineStore/config/hashing.php deleted file mode 100644 index bcd3be4..0000000 --- a/Chapter12/onlineStore/config/hashing.php +++ /dev/null @@ -1,52 +0,0 @@ - '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/Chapter12/onlineStore/config/logging.php b/Chapter12/onlineStore/config/logging.php deleted file mode 100644 index fefe088..0000000 --- a/Chapter12/onlineStore/config/logging.php +++ /dev/null @@ -1,119 +0,0 @@ - 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' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), - - /* - |-------------------------------------------------------------------------- - | 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'), - ], - - 'daily' => [ - 'driver' => 'daily', - 'path' => storage_path('logs/laravel.log'), - 'level' => env('LOG_LEVEL', 'debug'), - 'days' => 14, - ], - - 'slack' => [ - 'driver' => 'slack', - 'url' => env('LOG_SLACK_WEBHOOK_URL'), - 'username' => 'Laravel Log', - 'emoji' => ':boom:', - 'level' => env('LOG_LEVEL', 'critical'), - ], - - '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'), - ], - ], - - 'stderr' => [ - 'driver' => 'monolog', - 'level' => env('LOG_LEVEL', 'debug'), - 'handler' => StreamHandler::class, - 'formatter' => env('LOG_STDERR_FORMATTER'), - 'with' => [ - 'stream' => 'php://stderr', - ], - ], - - 'syslog' => [ - 'driver' => 'syslog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'errorlog' => [ - 'driver' => 'errorlog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'null' => [ - 'driver' => 'monolog', - 'handler' => NullHandler::class, - ], - - 'emergency' => [ - 'path' => storage_path('logs/laravel.log'), - ], - ], - -]; diff --git a/Chapter12/onlineStore/config/mail.php b/Chapter12/onlineStore/config/mail.php deleted file mode 100644 index 87b6fe3..0000000 --- a/Chapter12/onlineStore/config/mail.php +++ /dev/null @@ -1,117 +0,0 @@ - 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", - | "postmark", "log", "array", "failover" - | - */ - - 'mailers' => [ - 'smtp' => [ - 'transport' => 'smtp', - '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, - ], - - 'ses' => [ - 'transport' => 'ses', - ], - - 'mailgun' => [ - 'transport' => 'mailgun', - ], - - 'postmark' => [ - 'transport' => 'postmark', - ], - - 'sendmail' => [ - 'transport' => 'sendmail', - 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -t -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/Chapter12/onlineStore/config/queue.php b/Chapter12/onlineStore/config/queue.php deleted file mode 100644 index 25ea5a8..0000000 --- a/Chapter12/onlineStore/config/queue.php +++ /dev/null @@ -1,93 +0,0 @@ - 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, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter12/onlineStore/config/sanctum.php b/Chapter12/onlineStore/config/sanctum.php deleted file mode 100644 index 9281c92..0000000 --- a/Chapter12/onlineStore/config/sanctum.php +++ /dev/null @@ -1,65 +0,0 @@ - explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( - '%s%s', - 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', - env('APP_URL') ? ','.parse_url(env('APP_URL'), PHP_URL_HOST) : '' - ))), - - /* - |-------------------------------------------------------------------------- - | 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/Chapter12/onlineStore/config/services.php b/Chapter12/onlineStore/config/services.php deleted file mode 100644 index 2a1d616..0000000 --- a/Chapter12/onlineStore/config/services.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - 'domain' => env('MAILGUN_DOMAIN'), - 'secret' => env('MAILGUN_SECRET'), - 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), - ], - - '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/Chapter12/onlineStore/config/session.php b/Chapter12/onlineStore/config/session.php deleted file mode 100644 index 8fed97c..0000000 --- a/Chapter12/onlineStore/config/session.php +++ /dev/null @@ -1,201 +0,0 @@ - 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/Chapter12/onlineStore/config/view.php b/Chapter12/onlineStore/config/view.php deleted file mode 100644 index 22b8a18..0000000 --- a/Chapter12/onlineStore/config/view.php +++ /dev/null @@ -1,36 +0,0 @@ - [ - 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/Chapter12/onlineStore/database/.gitignore b/Chapter12/onlineStore/database/.gitignore deleted file mode 100644 index 9b19b93..0000000 --- a/Chapter12/onlineStore/database/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.sqlite* diff --git a/Chapter12/onlineStore/database/factories/UserFactory.php b/Chapter12/onlineStore/database/factories/UserFactory.php deleted file mode 100644 index d6ca926..0000000 --- a/Chapter12/onlineStore/database/factories/UserFactory.php +++ /dev/null @@ -1,42 +0,0 @@ - - */ -class UserFactory extends Factory -{ - /** - * Define the model's default state. - * - * @return array - */ - public function definition() - { - return [ - 'name' => $this->faker->name(), - 'email' => $this->faker->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. - * - * @return \Illuminate\Database\Eloquent\Factories\Factory - */ - public function unverified() - { - return $this->state(function (array $attributes) { - return [ - 'email_verified_at' => null, - ]; - }); - } -} diff --git a/Chapter12/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php b/Chapter12/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php deleted file mode 100644 index cf6b776..0000000 --- a/Chapter12/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->string('name'); - $table->string('email')->unique(); - $table->timestamp('email_verified_at')->nullable(); - $table->string('password'); - $table->rememberToken(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('users'); - } -}; diff --git a/Chapter12/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php b/Chapter12/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php deleted file mode 100644 index fcacb80..0000000 --- a/Chapter12/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php +++ /dev/null @@ -1,32 +0,0 @@ -string('email')->index(); - $table->string('token'); - $table->timestamp('created_at')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('password_resets'); - } -}; diff --git a/Chapter12/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/Chapter12/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php deleted file mode 100644 index 1719198..0000000 --- a/Chapter12/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php +++ /dev/null @@ -1,36 +0,0 @@ -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. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('failed_jobs'); - } -}; diff --git a/Chapter12/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/Chapter12/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php deleted file mode 100644 index fd235f8..0000000 --- a/Chapter12/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->morphs('tokenable'); - $table->string('name'); - $table->string('token', 64)->unique(); - $table->text('abilities')->nullable(); - $table->timestamp('last_used_at')->nullable(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('personal_access_tokens'); - } -}; diff --git a/Chapter12/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php b/Chapter12/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php deleted file mode 100644 index 2eecdc2..0000000 --- a/Chapter12/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php +++ /dev/null @@ -1,35 +0,0 @@ -id(); - $table->string('name'); - $table->text('description'); - $table->string('image'); - $table->integer('price'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('products'); - } -}; diff --git a/Chapter12/onlineStore/database/seeders/DatabaseSeeder.php b/Chapter12/onlineStore/database/seeders/DatabaseSeeder.php deleted file mode 100644 index 71f673f..0000000 --- a/Chapter12/onlineStore/database/seeders/DatabaseSeeder.php +++ /dev/null @@ -1,19 +0,0 @@ -create(); - } -} diff --git a/Chapter12/onlineStore/lang/en.json b/Chapter12/onlineStore/lang/en.json deleted file mode 100644 index 577680d..0000000 --- a/Chapter12/onlineStore/lang/en.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "The :attribute must contain at least one letter.": "The :attribute must contain at least one letter.", - "The :attribute must contain at least one number.": "The :attribute must contain at least one number.", - "The :attribute must contain at least one symbol.": "The :attribute must contain at least one symbol.", - "The :attribute must contain at least one uppercase and one lowercase letter.": "The :attribute must contain at least one uppercase and one lowercase letter.", - "The given :attribute has appeared in a data leak. Please choose a different :attribute.": "The given :attribute has appeared in a data leak. Please choose a different :attribute." -} diff --git a/Chapter12/onlineStore/lang/en/auth.php b/Chapter12/onlineStore/lang/en/auth.php deleted file mode 100644 index 6598e2c..0000000 --- a/Chapter12/onlineStore/lang/en/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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/Chapter12/onlineStore/lang/en/pagination.php b/Chapter12/onlineStore/lang/en/pagination.php deleted file mode 100644 index d481411..0000000 --- a/Chapter12/onlineStore/lang/en/pagination.php +++ /dev/null @@ -1,19 +0,0 @@ - '« Previous', - 'next' => 'Next »', - -]; diff --git a/Chapter12/onlineStore/lang/en/passwords.php b/Chapter12/onlineStore/lang/en/passwords.php deleted file mode 100644 index 2345a56..0000000 --- a/Chapter12/onlineStore/lang/en/passwords.php +++ /dev/null @@ -1,22 +0,0 @@ - '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/Chapter12/onlineStore/lang/en/validation.php b/Chapter12/onlineStore/lang/en/validation.php deleted file mode 100644 index 783003c..0000000 --- a/Chapter12/onlineStore/lang/en/validation.php +++ /dev/null @@ -1,163 +0,0 @@ - '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' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - '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' => [ - 'numeric' => 'The :attribute must be greater than :value.', - 'file' => 'The :attribute must be greater than :value kilobytes.', - 'string' => 'The :attribute must be greater than :value characters.', - 'array' => 'The :attribute must have more than :value items.', - ], - 'gte' => [ - 'numeric' => 'The :attribute must be greater than or equal to :value.', - 'file' => 'The :attribute must be greater than or equal to :value kilobytes.', - 'string' => 'The :attribute must be greater than or equal to :value characters.', - 'array' => 'The :attribute must have :value items or more.', - ], - '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' => [ - 'numeric' => 'The :attribute must be less than :value.', - 'file' => 'The :attribute must be less than :value kilobytes.', - 'string' => 'The :attribute must be less than :value characters.', - 'array' => 'The :attribute must have less than :value items.', - ], - 'lte' => [ - 'numeric' => 'The :attribute must be less than or equal to :value.', - 'file' => 'The :attribute must be less than or equal to :value kilobytes.', - 'string' => 'The :attribute must be less than or equal to :value characters.', - 'array' => 'The :attribute must not have more than :value items.', - ], - 'mac_address' => 'The :attribute must be a valid MAC address.', - 'max' => [ - 'numeric' => 'The :attribute must not be greater than :max.', - 'file' => 'The :attribute must not be greater than :max kilobytes.', - 'string' => 'The :attribute must not be greater than :max characters.', - 'array' => 'The :attribute must not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - '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.', - 'password' => 'The password is incorrect.', - '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' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - '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/Chapter12/onlineStore/package.json b/Chapter12/onlineStore/package.json deleted file mode 100644 index 7a9aecd..0000000 --- a/Chapter12/onlineStore/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "private": true, - "scripts": { - "dev": "npm run development", - "development": "mix", - "watch": "mix watch", - "watch-poll": "mix watch -- --watch-options-poll=1000", - "hot": "mix watch --hot", - "prod": "npm run production", - "production": "mix --production" - }, - "devDependencies": { - "axios": "^0.25", - "laravel-mix": "^6.0.6", - "lodash": "^4.17.19", - "postcss": "^8.1.14" - } -} diff --git a/Chapter12/onlineStore/phpcs.xml b/Chapter12/onlineStore/phpcs.xml deleted file mode 100644 index a1cf2b6..0000000 --- a/Chapter12/onlineStore/phpcs.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - The coding standard for the Online Store project - - app/ - config/ - database/ - routes/ - */migrations/* - diff --git a/Chapter12/onlineStore/phpunit.xml b/Chapter12/onlineStore/phpunit.xml deleted file mode 100644 index 2ac86a1..0000000 --- a/Chapter12/onlineStore/phpunit.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - ./tests/Unit - - - ./tests/Feature - - - - - ./app - - - - - - - - - - - - - - diff --git a/Chapter12/onlineStore/public/.htaccess b/Chapter12/onlineStore/public/.htaccess deleted file mode 100644 index 3aec5e2..0000000 --- a/Chapter12/onlineStore/public/.htaccess +++ /dev/null @@ -1,21 +0,0 @@ - - - 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/Chapter12/onlineStore/public/css/app.css b/Chapter12/onlineStore/public/css/app.css deleted file mode 100644 index cabac36..0000000 --- a/Chapter12/onlineStore/public/css/app.css +++ /dev/null @@ -1,20 +0,0 @@ -.bg-secondary { - background-color: #2c3e50 !important; -} - -.copyright { - background-color: #1a252f; -} - -.bg-primary { - background-color: #1abc9c !important; -} - -nav{ - font-weight: 700; -} - -.img-card{ - height: 18vw; - object-fit: cover; -} diff --git a/Chapter12/onlineStore/public/favicon.ico b/Chapter12/onlineStore/public/favicon.ico deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter12/onlineStore/public/img/game.png b/Chapter12/onlineStore/public/img/game.png deleted file mode 100644 index 85420e8bbc16098bf26b4ee63bde0e91a19d1f2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25896 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 cz>% diff --git a/Chapter12/onlineStore/public/img/safe.png b/Chapter12/onlineStore/public/img/safe.png deleted file mode 100644 index 445942c707af53210931f9f4f99f6d3cb69e5d89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19240 zcmcG$WmHse)Hkf6f+(ScNTUb?(jg6!BS;M;DbfQ72qGOSC5?2~(A^yh(m8Y^-90n| z&o%%1em}nJeZIV|HH&f1Ialnxubsbr{FN1z0)gS96-$ zp4IuJyY`*Y>6dib+W_gw3gbzJCF`EUiWfmv_IvF^+r}S_8XhlF-;K4W;EsJ=!u{Zm z@g?0-gVTvg+3)A&>{~Go1SQjd?#mLCY;30|$$pb<*D@0+;Wn@M=oNr_lz9BT`8@!sYom=skJ z#xB_%G{rBu9%KkN>}Lzepv#ci$)zjzUEWl{_J)14mKoqCkXM@fkXVPPnOsO_USm`I z5Z|XT-)+{5k*KHh_qjaqq{ZMyA+H`N0tpjLU`?g-$4%8E$O7xL z-~_|bE=a6DLLM0rG(I)VVLO|%H@9{-ygu!pf4Z34rf}PU`0bA{p#jmWU6=d3512G0 zsPS@9nbnH1=XY@sZ>|#KdvA6TPbD6W;*dMi1^K?c2p*>y@h1S+iiIu*>$8B#EW*+%h0ur^{wIN^#llD<^0+d#yrFEH@c5SGSj6ESg?OOepi6%}m+-z&s0^ z2J`*rD!mUGc}va^EsgV@ zEcAF53tX^v%Q)QVn8(b!@hdw5H*@>FzWdp$V&NxEFmkXca~@up+v-xW*w>36>8XLg z010(c2w7wGK4f|7G&zZnV4wD1~(7h2hntA?n#=b;2h;L-LdZaDuN9-O_ z^!E&i2_?np!A?@OfRwK#duTm+Ira-RSuA3}f_eJNFo#Kw-giR*%vs7Qs&d}K=t=7v z-ud>T&BkM-E(84BNFm9puT-YROan%NPWDEiO41HKeDbBxx0xLJdWvWvKm8kZwh6Jz)Y;pW zQ?Zj)%=1(f`YPllo(nIIP-0gJO-;vY+FH+)X$Q+If+Y61U=Q&7|1zxGYRjZO4GvYi z?qlpn7vEfs9{kE1`sU>xpQn`6MA&qFJP=~}+=n^?j2&_x2FF&&7)$`q6Ci1Ecdp#b zp9A7g%;t7o#fTm)PWsKO5)Xzyg$c|+!7@4w279ssP_{s&fU{eb4T($$!Bc|7J4=lcgP0a}3H5&^dtz8#;EJqFoDDI0Y#BE3TL`%l%FuNsUpB^w-7Hhot)^l75Ufu6%{}A`m>2St zFb5oyCGu!>M}L`j*>2r?g}ZK&opoqND@l22)h4iIRlGozz}>^%=LIUv^f(( z8v=GO435IiVupGOSpM0A=GN=8)0+tKbV5ro>w@Yh9Hxp;PQ+lc{znR<{zp&l(U^U- z0h~Kd7Ia?-z3I3y4ujCkobijH32sa;+H2I`ij(<#IQ3Dw{^xn|H{})f+hjmaK2a6) zwT~;wJsiYfVETrfk|)ZB_#XYJ&GiMZYJ6(tg|!fxD)SbrY`Xrb+i@TQtsKiA8Abi;J};US60QaTqo7e)A!OGSS+FKMbRW!13Y`Rq;R8 z(oLpnaB^OUiuHWxCy35-Pb%`gxMXBtxPL$B_q)LDf13v{G9w)O=3P5llAv;>qA?Oo zm*7aEe8#C!RX;dzXJyj|&~rVdqCR}r*2|Y`1p3K49)y%)cE-lWf2E^d(*<2uGZx*T z3HsVDSd!5ZjLR^1{3L2HLrLslqY zR;Z>`@aTGZ^A`=;ZLt%698y|y!jb5{-e@Rr`ChEChXN=e`_3=Tr-yqtr(!`He`4~` zH{(6kji?x-g@j~54riW9=AO8R!_@=5p@}u+{9#&wOH9Hi3#Zu(7#V7*e*gw}?l1cF zLPDP4`f&T-&B2a;N*@aTF9JIJ$=cwo*wcY$8QI$U%2xPVRn^&<*c%omW%Enw=JbXK z`2u}-2$?P%yYO^7cfeetEtRb}idb2JEyDl51Ts7l|a zA3|W%=>6rsg+HUQt4MAF-RrsY%TLd6FAb2c6Yrm(0oT5+F59~)E!=n10-8yFeaswOQ~c&p3k0S7B=}hLmCe;`r%;UFqSNvrJial7<`Ox; zxafL?ocnYL)MVHRJ$VBl%YlfKGf&_3w#`zbUA8cw-`n)9zVt6`@&!ub)Cz^?nQ5AQ zA>9btpqB4$8{F*eBL4U1#XR|M@A(MFYugeaVAOa~{?$*sVeno+ce?^J7U{WKu91hA z{ngB&Y-}twT*IsAtBKyLw=)CJ)fm#`4y=Kc;L#(`iWs%`f}5#ihc3%XN(i6lZgE>( zFU}f0;15*J>;w}^)P=9>avrtM2h(rQGDXQ9!l$m**NCE4-q`YE0 zVz(wm)(H$vOfswL;;E<|YO^}tnC{FWWXUoNJQ*ewdmvZc*)*QqoU#>aJ4%`~XzYH) zOL#Z^NAlq;@-*9PXP(a3?a2OiB8p;>Y!0$+?PT-JVh z7v$_u_|2y@abBOGV0$c-LtMBCvOESxwbxsrGDJ5;<}?aX^t>U|a$`Sf31t>i6%|&S z_q%B5H^)zu{Fa&q8-=?`yEK<_Kjb((DGBEUNBReSd;=QRl=8zA=FH<0UfMpKWxRcG zzXd{xiunWda|%(k6#D>v(-&um`W`|!{)xZV64RtQA$at6@%LiST^(ROy_3dI2ST&< zXCtAii*98yA@|d8%bZ18AQ>ZHlx|{{zlOcEOLKLORPc-|NWOS`=vxRZVKr&qHP9~! z4M!J&6%1hZm#Z?iBCR{+8T}^>u{6&yN zi}aU!;VusB=#|)NO=<-%vCHZDa2E^zM0IfJt|ZFd!<^T;mE}n5VxZ?;qc0xlEHS+t zCB{Ky=#`xcoqO^Ib|Z2hhr{zPD{2E8fONN=ulK z+Nuq^(NMgF=!3hb%6Dp8UlA%0Eg12GurqV{jod+C@nFg4XB6h}w}UKG z6{Dl0wY37yJhz`Tx2w{t!Mi@B;2RJ>S=pA{^SC(RBl3*@($*X55r6E!XH}>X0ga%; z3r2|Nj7hAl?#KZ1!Us$iFmB<#+?7BY<>(JAg{^R-5~84wWztSxZK(wnFsokz^=n{L z4X(ZnMj-#eZ1{jmDH;$vcaeKN=(=PBl^Ye^s}Yu4z8YZspJmuq6++2;sH5_3U*8-< z9rVJX=TTu&!yLg(;o%SBaS(*uxton;81Z-TpAXJWj!Gt!5myzDY0Yuer8Wr!IwoZx z%S0mu^Ltu#qJTh>Z)M{17&GkoTH$4d80h3K`l`8)e@xu)LusD2kMpRxq;Bkok&(M%%ov0c<~s? z-G)wS%c$zSd>$mh=MFffI`QZ;5=b26Qdz6Nw>R6`=%@0_%>qD1eAzV%hD?haAP{>^ z!rdOd#6vajw5G;tC4mV)Z`r$|^-+cH)X|5Qc`{MHc7Ypx|D`PAatavO2*OBF5UVf= zA2=4_Ai&sB{n1ETwa{p)mky|l$K1J88Dfovp`tN83X~$`P55|Sxf#gKO^ZwwEp6RL z`qjS3^Is#R?{esGkT-{7HNrn1vm*X>VNO})i}cO<4ar+**X9EXf~$6$8QTu3a7b=c zm$3{K8cHohdi@9=zZ>yOS=KjiXyrQxu2rsq*zttUhVW@mdGm#|>#4}8H<@5`Pc1!d zc%SK>u!ozQTf;T`+PjTLrHAU7ap1rWx@;s?6Hjg>!TbAKWFTsRRA_eZ9kPFT zM*fUylmWLol7c3*J(N_=oJO(GHnN5zA(_l+6LoKz&2wFnX6ib|-QB(Q#fydaHfQZ$ zCGrXi3t8FOW8P)%_eFaO+D%&l*I0Fq3lLf)tK#Wg6Go0-pknK`y)t3&I7Y?DkSos*m z>KWH(8YNG!mPU>_v(EZw%LHnOKPOQ;)$9j&xs~XplEyvJzG_t3b9H<`(x6=bMWB}; zepG%<=A=H2V)$sZ#~-vr&RaYOAh@Qn)x-i^+UhvpHi-?01?9>ip9w3q73e+<@dp4a z?Yg@WLvrVv9EkyO-M`*0bBf8^Iq$)=LdnjDcs{pMEu_irRqx%hcuy!}yNCY`m(+lG zrUom=NSy3tspxS{pV)1+@{G=J&r==c6^I8!QAKv^-=dvC_L_+Z6*RNk~4d||NHS)tDdQaI}J~PRT8`toY z{OksE)wM^zqf%yyc^c3b6-6Q~Ui=`&q=vusWgbNEw=WQ=e~OI{<=(wBY2MhdT6lu@ zG|x_X1suR^;L7)lUM1VXQ{-xO3pJv!8rgMorl3N!YPD&L7_#kS0y>3J!^?uAA`7CI zGA%0>S8(k3TM}*gl)$h*6+Mp4l$kouZ&Xvkse!`|h7wpZ#ZN^*Ol*og(V8qN-uxHy zY8!Q0uaK!{Q8~5RZCKr4U3fa8k+z68y7#bHBnPt2)@-*fy0kuR;Y=eb%^lafP+Gcg zhLN7k#^$dVm#rqGdNvC!LjN)YH=hD=*aYN%6;v_Gnjr1x=htB;prCB8S+m^Y^OUVQ zi(L<&O|97hTbk_U&L{bCYuDmWVqAjpvm$tJ>V10Hb-fjI>vFsS<9PX2PHwi-7Zw)M z(&$#+IQj&Bu0BClR`RY4TO)T6%Zaj4!FG(wJ0kX1;XcKDxiK@ohXq z_MM(VFk{`j9*EvieQ4d&y?Aj+=>(NR4V$@!+KP$_6VKHB<^}dvvB@u^Cb<I-UN zlHWR-lUhjty`-r*VI-$;mc9RNpTlIOEQl(9n=U9^u)W9eJi^B0^1gchXj@wwT9`{% z{xYXWrScKp%unV!buCWLhQ?M_R^0xkTyZZbHpidmMD`p}r0-tt|NHYtduo|WC^n`@y^n)xzjjkEdvn1z%UEPS+G zc!b@H59#Le7*eTWvNue37fEDV$6r80Nz2^=Z z@85r^otZtIDNn)n^Yg*BiL)js{m94Q4I6?@im>=UVYIZgjFVs8t>2rw3H8RFR>D!| z!9k!P`IC=@pdpkSHuSnDHu82V);a0oWSMIqW928-{he%MYs>Pv7A_(uQ=F_#gs-AK zy7tKG;;}LeSi|XO!BX3rY{VqII0*W`AmDY5za_$^HsZ4RSVoq?weK-hqe<#3UJK-b z?TJAT6IMxC4W={|0>0l`g0g<5QizP4_GMn2WM^y8L5-xz#s zLi`t$^8ECB5Az&V-u6JOYQ83yU15tbFE@i(fp*Iub=l0xqqw-dEN^WEAvCacb1Z6m zKqxb~8Ch?{+1m##O!VH9i=Q${Ee{Q;)E2WR^x>P7KWEBw9D2hiQrKiu#mv?CRPxn| zU8yo8rl&DcYKx$z!S;7lEF}lCGoWjxiyR}qVb0qCIqDMyJ`vWF1=kT(lsA~)E_X!L zNHQTLW7OiSlkwk-OBwZO?n&`W{G8>-GPc8yl1PFZu%fKRaE(ruuALkw-X1r*?QUAxV}Q(+U@-8zkxJ>3P^@C{(wa z5aK>+!8O{H)pxD-jPeSMtm|IjHWR|^}=*kO_{04_~Cez&z+p6 zkga~Kq0LFrFm({>nDcz~BhO=%5UvyD{xUx6m>}DjsVVV93uwXq1QtdRdjcU z!)PU`MLsg)L7QqyIJgAKlRI91&jSavqFhzC{%E~aXfG1_f==9*aLoQkP?gu7@%`BY zvS>c3Tzfb?r}ln-4g^0mxC@c9>Hng66h7Nnb{=I#s?rlI(E1NQUaEB6}pEmu%y!Ov*#xhLp35T)_ndi@RdU^|R%BT|K zdAxImZ?8;^<}=BrUP0ZF*c*6(uFg5PIj}D7nnCfzRMp91DM%SI>BV?H=(+B7N?l zIK?Z$3U!R9*4t-ve`fd#SE8$TFkYuzW+X}uiuW6-cv`I%vLJUS=LA^o107?_{;xuz z48=Br@f8&*P>t89se@|Q!OiP|y0lt-%)IyFyF|u|J_H|=%LsWF+MP!`vl$lA<%NsC9AsZ%g8Nm?vA~> z{ARHSd~tM|^JSCln}ya^SjJBMQFwHsRT;dtUnS47ii_DJx*mPPnXfKMm3R;o6ts;_ zOyj`5kKOw2G9z^=dmR4EXZdaK^2KqabN)$ZG$Zo(Aa~_(anbOM{KUEWGToJ0u?c1TQ*!-(NUYy`_wL<;PQ<93$zJ5-6n$Mo1LYki?ZjEOtEf&OuJCS(JfD&fvEd4YJUNVM6M>g*;z2V_-6+Ht1Yn#>|d8}z5NIe zZ--1Lp%dXsW93x)CoRqR(efL>Gh9^Bq?^abj~|_!_(QNgd+;yhGVS(7cXL!dTptB< z!P#OS-c&BzOLPmD8K6beYOLQe&jw{IpmB>mehZW1GA8ux>NWToxgzd>%t<*Y(2z(J z`!jIk;o-Gyl_0t#T^W&B4pw`wZ;NHLBRWD>+S@M(qH#_+s(#s8=I7IetrqJSi}}Kt zF4svHX@?Wi*JfUX%DnuBXQ#lxK)O(BdKO>CpsbxeSSJ=a6x5F3)nT8C^cts7 zVI4)3`_z5uFdF+|r6waUxS!EFsgTSN+**Ub$re6t-f+dAjG*WX zbx31)_hIKiH$WU9yCz^+J`#^KK2Fwa*;fnfU6$6>)xDg+BOoYVYeqn)`GhM<1Nb8z zU=!izdh}}%rzRxlRXR!@vUaTg=%xYdk88QQ66JH=OW#cH%H2pyhY=aMQ!M=b`?q-B zQNQXmnjFWE7@vi5Zgt+fb#5+oy3Ea{52R>ca@w`3`wT9vuC7j1e0O~}Vo^DZ&rZHI zY5$~9zll?oQ@87@1)4A!qQORj$N@M?W+nv^wpV5RvSx4*CNynpkrmSzs?g>IN;y_{5 zBlLQ4RdBtU5$U?uSPfle=2aFl<60=u35Pm9OafkIqp%YesBzuJJt!I{b=97HNx;kJ z<(#qdZbfW4K1x#H3ABF3>~eK>P&ANa<8qWit6XtX`f7Xfwo#jKV5-M6<(A z^V}T$am))RyGp>xK2+ea{y|5HQJf_urlM&{N=jN61$Ct4n3DRPck_#I9G~BuNq7M$ zzcgj|Xm2vS8#W^6GRS=C1rthiLOgTqh|ngH0q1T#ov@*9j}rj%VEmM6d;t2}va(#rl++oxfh3rU*~Ylw-vBY%(`Dw{P1CjxewTWceno z=Na$1tzVh2<3pL8rjDg^8|+3FSd|@PYOAh)Z5LShe@Zth6D5dWkp>>mu0unq>Tj+u zCAWqCT__vX&NMckSS~2Je=+^pfNk!E=SQsQ&>;b@ThArMNQv7R47BP=3SLdSkQ%iwhet~B=?i){gpu2vt1V<}SXN$$SyG%_ z=a%a3USICb>n3l|I`iCJDJ?DSyRot_8pW3`OrQqG;)60pSe#78Nd#x7=$v4YV zS5ZOyvK%lTD65^)H|E4|V%}@y(Onc46nH3~C9J1toFsaY?CjJ!SI~vN7U4<1j-
w==XB0?3|p=#`o%NsudE(E-U#KS3Snw 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 o>ir+C;RN10sIS0&a;pmake(Kernel::class); - -$response = $kernel->handle( - $request = Request::capture() -)->send(); - -$kernel->terminate($request, $response); diff --git a/Chapter12/onlineStore/public/robots.txt b/Chapter12/onlineStore/public/robots.txt deleted file mode 100644 index eb05362..0000000 --- a/Chapter12/onlineStore/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: diff --git a/Chapter12/onlineStore/resources/css/app.css b/Chapter12/onlineStore/resources/css/app.css deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter12/onlineStore/resources/js/app.js b/Chapter12/onlineStore/resources/js/app.js deleted file mode 100644 index 40c55f6..0000000 --- a/Chapter12/onlineStore/resources/js/app.js +++ /dev/null @@ -1 +0,0 @@ -require('./bootstrap'); diff --git a/Chapter12/onlineStore/resources/js/bootstrap.js b/Chapter12/onlineStore/resources/js/bootstrap.js deleted file mode 100644 index 6922577..0000000 --- a/Chapter12/onlineStore/resources/js/bootstrap.js +++ /dev/null @@ -1,28 +0,0 @@ -window._ = require('lodash'); - -/** - * 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 = require('axios'); - -window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; - -/** - * 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'; - -// window.Pusher = require('pusher-js'); - -// window.Echo = new Echo({ -// broadcaster: 'pusher', -// key: process.env.MIX_PUSHER_APP_KEY, -// cluster: process.env.MIX_PUSHER_APP_CLUSTER, -// forceTLS: true -// }); diff --git a/Chapter12/onlineStore/resources/views/home/about.blade.php b/Chapter12/onlineStore/resources/views/home/about.blade.php deleted file mode 100644 index f79abf3..0000000 --- a/Chapter12/onlineStore/resources/views/home/about.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
-
-
-

{{ $viewData["description"] }}

-
-
-

{{ $viewData["author"] }}

-
-
-
-@endsection diff --git a/Chapter12/onlineStore/resources/views/home/index.blade.php b/Chapter12/onlineStore/resources/views/home/index.blade.php deleted file mode 100644 index 1affb20..0000000 --- a/Chapter12/onlineStore/resources/views/home/index.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('content') -
-
- -
-
- -
-
- -
-
-@endsection diff --git a/Chapter12/onlineStore/resources/views/layouts/app.blade.php b/Chapter12/onlineStore/resources/views/layouts/app.blade.php deleted file mode 100644 index eee7fcb..0000000 --- a/Chapter12/onlineStore/resources/views/layouts/app.blade.php +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - @yield('title', 'Online Store') - - - -
- -
-
-

@yield('subtitle', 'A Laravel Online Store')

-
-
- - -
- @yield('content') -
- - - - - - - diff --git a/Chapter12/onlineStore/resources/views/product/index.blade.php b/Chapter12/onlineStore/resources/views/product/index.blade.php deleted file mode 100644 index 1f766f1..0000000 --- a/Chapter12/onlineStore/resources/views/product/index.blade.php +++ /dev/null @@ -1,18 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
- @foreach ($viewData["products"] as $product) -
- -
- @endforeach -
-@endsection diff --git a/Chapter12/onlineStore/resources/views/product/show.blade.php b/Chapter12/onlineStore/resources/views/product/show.blade.php deleted file mode 100644 index 01d056e..0000000 --- a/Chapter12/onlineStore/resources/views/product/show.blade.php +++ /dev/null @@ -1,21 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
-
-
- -
-
-
-
- {{ $viewData["product"]["name"] }} (${{ $viewData["product"]["price"] }}) -
-

{{ $viewData["product"]["description"] }}

-

Add to Cart

-
-
-
-
-@endsection diff --git a/Chapter12/onlineStore/resources/views/welcome.blade.php b/Chapter12/onlineStore/resources/views/welcome.blade.php deleted file mode 100644 index c587c72..0000000 --- a/Chapter12/onlineStore/resources/views/welcome.blade.php +++ /dev/null @@ -1,7 +0,0 @@ -@extends('layouts.app') -@section('title', 'Home Page - Online Store') -@section('content') -
- Welcome to the application -
-@endsection \ No newline at end of file diff --git a/Chapter12/onlineStore/routes/api.php b/Chapter12/onlineStore/routes/api.php deleted file mode 100644 index eb6fa48..0000000 --- a/Chapter12/onlineStore/routes/api.php +++ /dev/null @@ -1,19 +0,0 @@ -get('/user', function (Request $request) { - return $request->user(); -}); diff --git a/Chapter12/onlineStore/routes/channels.php b/Chapter12/onlineStore/routes/channels.php deleted file mode 100644 index 5d451e1..0000000 --- a/Chapter12/onlineStore/routes/channels.php +++ /dev/null @@ -1,18 +0,0 @@ -id === (int) $id; -}); diff --git a/Chapter12/onlineStore/routes/console.php b/Chapter12/onlineStore/routes/console.php deleted file mode 100644 index e05f4c9..0000000 --- a/Chapter12/onlineStore/routes/console.php +++ /dev/null @@ -1,19 +0,0 @@ -comment(Inspiring::quote()); -})->purpose('Display an inspiring quote'); diff --git a/Chapter12/onlineStore/routes/web.php b/Chapter12/onlineStore/routes/web.php deleted file mode 100644 index 0f5e40f..0000000 --- a/Chapter12/onlineStore/routes/web.php +++ /dev/null @@ -1,19 +0,0 @@ -name("home.index"); -Route::get('/about', 'App\Http\Controllers\HomeController@about')->name("home.about"); -Route::get('/products', 'App\Http\Controllers\ProductController@index')->name("product.index"); -Route::get('/products/{id}', 'App\Http\Controllers\ProductController@show')->name("product.show"); diff --git a/Chapter12/onlineStore/storage/app/.gitignore b/Chapter12/onlineStore/storage/app/.gitignore deleted file mode 100644 index 8f4803c..0000000 --- a/Chapter12/onlineStore/storage/app/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!public/ -!.gitignore diff --git a/Chapter12/onlineStore/storage/app/public/.gitignore b/Chapter12/onlineStore/storage/app/public/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter12/onlineStore/storage/app/public/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter12/onlineStore/storage/framework/.gitignore b/Chapter12/onlineStore/storage/framework/.gitignore deleted file mode 100644 index 05c4471..0000000 --- a/Chapter12/onlineStore/storage/framework/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -compiled.php -config.php -down -events.scanned.php -maintenance.php -routes.php -routes.scanned.php -schedule-* -services.json diff --git a/Chapter12/onlineStore/storage/framework/cache/.gitignore b/Chapter12/onlineStore/storage/framework/cache/.gitignore deleted file mode 100644 index 01e4a6c..0000000 --- a/Chapter12/onlineStore/storage/framework/cache/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!data/ -!.gitignore diff --git a/Chapter12/onlineStore/storage/framework/cache/data/.gitignore b/Chapter12/onlineStore/storage/framework/cache/data/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter12/onlineStore/storage/framework/cache/data/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter12/onlineStore/storage/framework/sessions/.gitignore b/Chapter12/onlineStore/storage/framework/sessions/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter12/onlineStore/storage/framework/sessions/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter12/onlineStore/storage/framework/testing/.gitignore b/Chapter12/onlineStore/storage/framework/testing/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter12/onlineStore/storage/framework/testing/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter12/onlineStore/storage/framework/views/.gitignore b/Chapter12/onlineStore/storage/framework/views/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter12/onlineStore/storage/framework/views/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter12/onlineStore/storage/logs/.gitignore b/Chapter12/onlineStore/storage/logs/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter12/onlineStore/storage/logs/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter12/onlineStore/tests/CreatesApplication.php b/Chapter12/onlineStore/tests/CreatesApplication.php deleted file mode 100644 index 547152f..0000000 --- a/Chapter12/onlineStore/tests/CreatesApplication.php +++ /dev/null @@ -1,22 +0,0 @@ -make(Kernel::class)->bootstrap(); - - return $app; - } -} diff --git a/Chapter12/onlineStore/tests/Feature/ExampleTest.php b/Chapter12/onlineStore/tests/Feature/ExampleTest.php deleted file mode 100644 index 78ccc21..0000000 --- a/Chapter12/onlineStore/tests/Feature/ExampleTest.php +++ /dev/null @@ -1,21 +0,0 @@ -get('/'); - - $response->assertStatus(200); - } -} diff --git a/Chapter12/onlineStore/tests/TestCase.php b/Chapter12/onlineStore/tests/TestCase.php deleted file mode 100644 index 2932d4a..0000000 --- a/Chapter12/onlineStore/tests/TestCase.php +++ /dev/null @@ -1,10 +0,0 @@ -assertTrue(true); - } -} diff --git a/Chapter12/onlineStore/webpack.mix.js b/Chapter12/onlineStore/webpack.mix.js deleted file mode 100644 index 2a22dc1..0000000 --- a/Chapter12/onlineStore/webpack.mix.js +++ /dev/null @@ -1,17 +0,0 @@ -const mix = require('laravel-mix'); - -/* - |-------------------------------------------------------------------------- - | Mix Asset Management - |-------------------------------------------------------------------------- - | - | Mix provides a clean, fluent API for defining some Webpack build steps - | for your Laravel applications. By default, we are compiling the CSS - | file for the application as well as bundling up all the JS files. - | - */ - -mix.js('resources/js/app.js', 'public/js') - .postCss('resources/css/app.css', 'public/css', [ - // - ]); diff --git a/Chapter13/onlineStore/.editorconfig b/Chapter13/onlineStore/.editorconfig deleted file mode 100644 index 1671c9b..0000000 --- a/Chapter13/onlineStore/.editorconfig +++ /dev/null @@ -1,18 +0,0 @@ -root = true - -[*] -charset = utf-8 -end_of_line = lf -insert_final_newline = true -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true - -[*.md] -trim_trailing_whitespace = false - -[*.{yml,yaml}] -indent_size = 2 - -[docker-compose.yml] -indent_size = 4 diff --git a/Chapter13/onlineStore/.env.example b/Chapter13/onlineStore/.env.example deleted file mode 100644 index 8510237..0000000 --- a/Chapter13/onlineStore/.env.example +++ /dev/null @@ -1,52 +0,0 @@ -APP_NAME=Laravel -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=laravel -DB_USERNAME=root -DB_PASSWORD= - -BROADCAST_DRIVER=log -CACHE_DRIVER=file -FILESYSTEM_DISK=local -QUEUE_CONNECTION=sync -SESSION_DRIVER=file -SESSION_LIFETIME=120 - -MEMCACHED_HOST=127.0.0.1 - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -MAIL_MAILER=smtp -MAIL_HOST=mailhog -MAIL_PORT=1025 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS=null -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_APP_CLUSTER=mt1 - -MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/Chapter13/onlineStore/.gitattributes b/Chapter13/onlineStore/.gitattributes deleted file mode 100644 index 510d996..0000000 --- a/Chapter13/onlineStore/.gitattributes +++ /dev/null @@ -1,10 +0,0 @@ -* text=auto - -*.blade.php diff=html -*.css diff=css -*.html diff=html -*.md diff=markdown -*.php diff=php - -/.github export-ignore -CHANGELOG.md export-ignore diff --git a/Chapter13/onlineStore/.gitignore b/Chapter13/onlineStore/.gitignore deleted file mode 100644 index eb003b0..0000000 --- a/Chapter13/onlineStore/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -/node_modules -/public/hot -/public/storage -/storage/*.key -/vendor -.env -.env.backup -.phpunit.result.cache -docker-compose.override.yml -Homestead.json -Homestead.yaml -npm-debug.log -yarn-error.log -/.idea -/.vscode diff --git a/Chapter13/onlineStore/.styleci.yml b/Chapter13/onlineStore/.styleci.yml deleted file mode 100644 index 679a631..0000000 --- a/Chapter13/onlineStore/.styleci.yml +++ /dev/null @@ -1,13 +0,0 @@ -php: - preset: laravel - version: 8 - disabled: - - no_unused_imports - finder: - not-name: - - index.php -js: - finder: - not-name: - - webpack.mix.js -css: true diff --git a/Chapter13/onlineStore/README.md b/Chapter13/onlineStore/README.md deleted file mode 100644 index f171eca..0000000 --- a/Chapter13/onlineStore/README.md +++ /dev/null @@ -1,64 +0,0 @@ -

- -

-Build Status -Total Downloads -Latest Stable Version -License -

- -## About Laravel - -Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as: - -- [Simple, fast routing engine](https://laravel.com/docs/routing). -- [Powerful dependency injection container](https://laravel.com/docs/container). -- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage. -- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent). -- Database agnostic [schema migrations](https://laravel.com/docs/migrations). -- [Robust background job processing](https://laravel.com/docs/queues). -- [Real-time event broadcasting](https://laravel.com/docs/broadcasting). - -Laravel is accessible, powerful, and provides tools required for large, robust applications. - -## Learning Laravel - -Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework. - -If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 2000 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library. - -## Laravel Sponsors - -We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell). - -### Premium Partners - -- **[Vehikl](https://vehikl.com/)** -- **[Tighten Co.](https://tighten.co)** -- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** -- **[64 Robots](https://64robots.com)** -- **[Cubet Techno Labs](https://cubettech.com)** -- **[Cyber-Duck](https://cyber-duck.co.uk)** -- **[Many](https://www.many.co.uk)** -- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)** -- **[DevSquad](https://devsquad.com)** -- **[Curotec](https://www.curotec.com/services/technologies/laravel/)** -- **[OP.GG](https://op.gg)** -- **[WebReinvent](https://webreinvent.com/?utm_source=laravel&utm_medium=github&utm_campaign=patreon-sponsors)** -- **[Lendio](https://lendio.com)** - -## Contributing - -Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions). - -## Code of Conduct - -In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). - -## Security Vulnerabilities - -If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed. - -## License - -The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). diff --git a/Chapter13/onlineStore/app/Console/Kernel.php b/Chapter13/onlineStore/app/Console/Kernel.php deleted file mode 100644 index d8bc1d2..0000000 --- a/Chapter13/onlineStore/app/Console/Kernel.php +++ /dev/null @@ -1,32 +0,0 @@ -command('inspire')->hourly(); - } - - /** - * Register the commands for the application. - * - * @return void - */ - protected function commands() - { - $this->load(__DIR__.'/Commands'); - - require base_path('routes/console.php'); - } -} diff --git a/Chapter13/onlineStore/app/Exceptions/Handler.php b/Chapter13/onlineStore/app/Exceptions/Handler.php deleted file mode 100644 index 8e7fbd1..0000000 --- a/Chapter13/onlineStore/app/Exceptions/Handler.php +++ /dev/null @@ -1,41 +0,0 @@ -> - */ - protected $dontReport = [ - // - ]; - - /** - * A list of the inputs that are never flashed for validation exceptions. - * - * @var array - */ - protected $dontFlash = [ - 'current_password', - 'password', - 'password_confirmation', - ]; - - /** - * Register the exception handling callbacks for the application. - * - * @return void - */ - public function register() - { - $this->reportable(function (Throwable $e) { - // - }); - } -} diff --git a/Chapter13/onlineStore/app/Http/Controllers/Controller.php b/Chapter13/onlineStore/app/Http/Controllers/Controller.php deleted file mode 100644 index a0a2a8a..0000000 --- a/Chapter13/onlineStore/app/Http/Controllers/Controller.php +++ /dev/null @@ -1,13 +0,0 @@ -with("viewData", $viewData); - } - - public function about() - { - $viewData = []; - $viewData["title"] = "About us - Online Store"; - $viewData["subtitle"] = "About us"; - $viewData["description"] = "This is an about page ..."; - $viewData["author"] = "Developed by: Your Name"; - return view('home.about')->with("viewData", $viewData); - } -} diff --git a/Chapter13/onlineStore/app/Http/Controllers/ProductController.php b/Chapter13/onlineStore/app/Http/Controllers/ProductController.php deleted file mode 100644 index 5e0f7a3..0000000 --- a/Chapter13/onlineStore/app/Http/Controllers/ProductController.php +++ /dev/null @@ -1,29 +0,0 @@ -with("viewData", $viewData); - } - - public function show($id) - { - $viewData = []; - $product = Product::findOrFail($id); - $viewData["title"] = $product["name"]." - Online Store"; - $viewData["subtitle"] = $product["name"]." - Product information"; - $viewData["product"] = $product; - return view('product.show')->with("viewData", $viewData); - } -} diff --git a/Chapter13/onlineStore/app/Http/Kernel.php b/Chapter13/onlineStore/app/Http/Kernel.php deleted file mode 100644 index d3722c2..0000000 --- a/Chapter13/onlineStore/app/Http/Kernel.php +++ /dev/null @@ -1,67 +0,0 @@ - - */ - protected $middleware = [ - // \App\Http\Middleware\TrustHosts::class, - \App\Http\Middleware\TrustProxies::class, - \Fruitcake\Cors\HandleCors::class, - \App\Http\Middleware\PreventRequestsDuringMaintenance::class, - \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, - \App\Http\Middleware\TrimStrings::class, - \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, - ]; - - /** - * The application's route middleware groups. - * - * @var array> - */ - protected $middlewareGroups = [ - 'web' => [ - \App\Http\Middleware\EncryptCookies::class, - \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, - \Illuminate\Session\Middleware\StartSession::class, - // \Illuminate\Session\Middleware\AuthenticateSession::class, - \Illuminate\View\Middleware\ShareErrorsFromSession::class, - \App\Http\Middleware\VerifyCsrfToken::class, - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - - 'api' => [ - // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, - 'throttle:api', - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - ]; - - /** - * The application's route middleware. - * - * These middleware may be assigned to groups or used individually. - * - * @var array - */ - protected $routeMiddleware = [ - 'auth' => \App\Http\Middleware\Authenticate::class, - 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::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, - 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, - 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, - 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, - ]; -} diff --git a/Chapter13/onlineStore/app/Http/Middleware/Authenticate.php b/Chapter13/onlineStore/app/Http/Middleware/Authenticate.php deleted file mode 100644 index 704089a..0000000 --- a/Chapter13/onlineStore/app/Http/Middleware/Authenticate.php +++ /dev/null @@ -1,21 +0,0 @@ -expectsJson()) { - return route('login'); - } - } -} diff --git a/Chapter13/onlineStore/app/Http/Middleware/EncryptCookies.php b/Chapter13/onlineStore/app/Http/Middleware/EncryptCookies.php deleted file mode 100644 index 867695b..0000000 --- a/Chapter13/onlineStore/app/Http/Middleware/EncryptCookies.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter13/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/Chapter13/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php deleted file mode 100644 index 74cbd9a..0000000 --- a/Chapter13/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter13/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php b/Chapter13/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php deleted file mode 100644 index a2813a0..0000000 --- a/Chapter13/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php +++ /dev/null @@ -1,32 +0,0 @@ -check()) { - return redirect(RouteServiceProvider::HOME); - } - } - - return $next($request); - } -} diff --git a/Chapter13/onlineStore/app/Http/Middleware/TrimStrings.php b/Chapter13/onlineStore/app/Http/Middleware/TrimStrings.php deleted file mode 100644 index 88cadca..0000000 --- a/Chapter13/onlineStore/app/Http/Middleware/TrimStrings.php +++ /dev/null @@ -1,19 +0,0 @@ - - */ - protected $except = [ - 'current_password', - 'password', - 'password_confirmation', - ]; -} diff --git a/Chapter13/onlineStore/app/Http/Middleware/TrustHosts.php b/Chapter13/onlineStore/app/Http/Middleware/TrustHosts.php deleted file mode 100644 index 7186414..0000000 --- a/Chapter13/onlineStore/app/Http/Middleware/TrustHosts.php +++ /dev/null @@ -1,20 +0,0 @@ - - */ - public function hosts() - { - return [ - $this->allSubdomainsOfApplicationUrl(), - ]; - } -} diff --git a/Chapter13/onlineStore/app/Http/Middleware/TrustProxies.php b/Chapter13/onlineStore/app/Http/Middleware/TrustProxies.php deleted file mode 100644 index 3391630..0000000 --- a/Chapter13/onlineStore/app/Http/Middleware/TrustProxies.php +++ /dev/null @@ -1,28 +0,0 @@ -|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/Chapter13/onlineStore/app/Http/Middleware/VerifyCsrfToken.php b/Chapter13/onlineStore/app/Http/Middleware/VerifyCsrfToken.php deleted file mode 100644 index 9e86521..0000000 --- a/Chapter13/onlineStore/app/Http/Middleware/VerifyCsrfToken.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter13/onlineStore/app/Models/Product.php b/Chapter13/onlineStore/app/Models/Product.php deleted file mode 100644 index c428a88..0000000 --- a/Chapter13/onlineStore/app/Models/Product.php +++ /dev/null @@ -1,11 +0,0 @@ - - */ - 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', - ]; -} diff --git a/Chapter13/onlineStore/app/Providers/AppServiceProvider.php b/Chapter13/onlineStore/app/Providers/AppServiceProvider.php deleted file mode 100644 index ee8ca5b..0000000 --- a/Chapter13/onlineStore/app/Providers/AppServiceProvider.php +++ /dev/null @@ -1,28 +0,0 @@ - - */ - protected $policies = [ - // 'App\Models\Model' => 'App\Policies\ModelPolicy', - ]; - - /** - * Register any authentication / authorization services. - * - * @return void - */ - public function boot() - { - $this->registerPolicies(); - - // - } -} diff --git a/Chapter13/onlineStore/app/Providers/BroadcastServiceProvider.php b/Chapter13/onlineStore/app/Providers/BroadcastServiceProvider.php deleted file mode 100644 index 395c518..0000000 --- a/Chapter13/onlineStore/app/Providers/BroadcastServiceProvider.php +++ /dev/null @@ -1,21 +0,0 @@ -> - */ - protected $listen = [ - Registered::class => [ - SendEmailVerificationNotification::class, - ], - ]; - - /** - * Register any events for your application. - * - * @return void - */ - public function boot() - { - // - } -} diff --git a/Chapter13/onlineStore/app/Providers/RouteServiceProvider.php b/Chapter13/onlineStore/app/Providers/RouteServiceProvider.php deleted file mode 100644 index 7c17d1f..0000000 --- a/Chapter13/onlineStore/app/Providers/RouteServiceProvider.php +++ /dev/null @@ -1,63 +0,0 @@ -configureRateLimiting(); - - $this->routes(function () { - Route::prefix('api') - ->middleware('api') - ->namespace($this->namespace) - ->group(base_path('routes/api.php')); - - Route::middleware('web') - ->namespace($this->namespace) - ->group(base_path('routes/web.php')); - }); - } - - /** - * Configure the rate limiters for the application. - * - * @return void - */ - protected function configureRateLimiting() - { - RateLimiter::for('api', function (Request $request) { - return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); - }); - } -} diff --git a/Chapter13/onlineStore/artisan b/Chapter13/onlineStore/artisan deleted file mode 100644 index 67a3329..0000000 --- a/Chapter13/onlineStore/artisan +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env php -make(Illuminate\Contracts\Console\Kernel::class); - -$status = $kernel->handle( - $input = new Symfony\Component\Console\Input\ArgvInput, - new Symfony\Component\Console\Output\ConsoleOutput -); - -/* -|-------------------------------------------------------------------------- -| Shutdown The Application -|-------------------------------------------------------------------------- -| -| Once Artisan has finished running, we will fire off the shutdown events -| so that any final work may be done by the application before we shut -| down the process. This is the last thing to happen to the request. -| -*/ - -$kernel->terminate($input, $status); - -exit($status); diff --git a/Chapter13/onlineStore/bootstrap/app.php b/Chapter13/onlineStore/bootstrap/app.php deleted file mode 100644 index 037e17d..0000000 --- a/Chapter13/onlineStore/bootstrap/app.php +++ /dev/null @@ -1,55 +0,0 @@ -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/Chapter13/onlineStore/bootstrap/cache/.gitignore b/Chapter13/onlineStore/bootstrap/cache/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter13/onlineStore/bootstrap/cache/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter13/onlineStore/composer.json b/Chapter13/onlineStore/composer.json deleted file mode 100644 index f0f2eda..0000000 --- a/Chapter13/onlineStore/composer.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "name": "laravel/laravel", - "type": "project", - "description": "The Laravel Framework.", - "keywords": ["framework", "laravel"], - "license": "MIT", - "require": { - "php": "^8.0", - "fruitcake/laravel-cors": "^2.0.5", - "guzzlehttp/guzzle": "^7.2", - "laravel/framework": "^9.0", - "laravel/sanctum": "^2.14", - "laravel/tinker": "^2.7" - }, - "require-dev": { - "fakerphp/faker": "^1.9.1", - "laravel/sail": "^1.0.1", - "mockery/mockery": "^1.4.4", - "nunomaduro/collision": "^6.1", - "phpunit/phpunit": "^9.5.10", - "spatie/laravel-ignition": "^1.0", - "squizlabs/php_codesniffer": "^3.6" - }, - "autoload": { - "psr-4": { - "App\\": "app/", - "Database\\Factories\\": "database/factories/", - "Database\\Seeders\\": "database/seeders/" - } - }, - "autoload-dev": { - "psr-4": { - "Tests\\": "tests/" - } - }, - "scripts": { - "post-autoload-dump": [ - "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", - "@php artisan package:discover --ansi" - ], - "post-update-cmd": [ - "@php artisan vendor:publish --tag=laravel-assets --ansi --force" - ], - "post-root-package-install": [ - "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" - ], - "post-create-project-cmd": [ - "@php artisan key:generate --ansi" - ] - }, - "extra": { - "laravel": { - "dont-discover": [] - } - }, - "config": { - "optimize-autoloader": true, - "preferred-install": "dist", - "sort-packages": true - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/Chapter13/onlineStore/composer.lock b/Chapter13/onlineStore/composer.lock deleted file mode 100644 index b55e897..0000000 --- a/Chapter13/onlineStore/composer.lock +++ /dev/null @@ -1,7860 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "8bdcc31974d0d5a00db79c82827c8815", - "packages": [ - { - "name": "asm89/stack-cors", - "version": "v2.1.1", - "source": { - "type": "git", - "url": "https://github.com/asm89/stack-cors.git", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4|^5|^6" - }, - "require-dev": { - "phpunit/phpunit": "^7|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "psr-4": { - "Asm89\\Stack\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alexander", - "email": "iam.asm89@gmail.com" - } - ], - "description": "Cross-origin resource sharing library and stack middleware", - "homepage": "https://github.com/asm89/stack-cors", - "keywords": [ - "cors", - "stack" - ], - "support": { - "issues": "https://github.com/asm89/stack-cors/issues", - "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" - }, - "time": "2022-01-18T09:12:03+00:00" - }, - { - "name": "brick/math", - "version": "0.9.3", - "source": { - "type": "git", - "url": "https://github.com/brick/math.git", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", - "vimeo/psalm": "4.9.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Brick\\Math\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Arbitrary-precision arithmetic library", - "keywords": [ - "Arbitrary-precision", - "BigInteger", - "BigRational", - "arithmetic", - "bigdecimal", - "bignum", - "brick", - "math" - ], - "support": { - "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.9.3" - }, - "funding": [ - { - "url": "https://github.com/BenMorel", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/brick/math", - "type": "tidelift" - } - ], - "time": "2021-08-15T20:50:18+00:00" - }, - { - "name": "dflydev/dot-access-data", - "version": "v3.0.1", - "source": { - "type": "git", - "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c", - "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": "^3.14" - }, - "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.1" - }, - "time": "2021-08-13T13:06:58+00:00" - }, - { - "name": "doctrine/inflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "vimeo/psalm": "^4.10" - }, - "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.4" - }, - "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": "2021-10-22T20:16:43+00:00" - }, - { - "name": "doctrine/lexer", - "version": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" - } - }, - "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/1.2.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%2Flexer", - "type": "tidelift" - } - ], - "time": "2022-01-12T08:27:12+00:00" - }, - { - "name": "dragonmantank/cron-expression", - "version": "v3.3.1", - "source": { - "type": "git", - "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "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.1" - }, - "funding": [ - { - "url": "https://github.com/dragonmantank", - "type": "github" - } - ], - "time": "2022-01-18T15:43:28+00:00" - }, - { - "name": "egulias/email-validator", - "version": "3.1.2", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ee0db30118f661fb166bcffbf5d82032df484697", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^1.2", - "php": ">=7.2", - "symfony/polyfill-intl-idn": "^1.15" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^8.5.8|^9.3.3", - "vimeo/psalm": "^4" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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/3.1.2" - }, - "funding": [ - { - "url": "https://github.com/egulias", - "type": "github" - } - ], - "time": "2021-10-11T09:18:27+00:00" - }, - { - "name": "fruitcake/laravel-cors", - "version": "v2.0.5", - "source": { - "type": "git", - "url": "https://github.com/fruitcake/laravel-cors.git", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "shasum": "" - }, - "require": { - "asm89/stack-cors": "^2.0.1", - "illuminate/contracts": "^6|^7|^8|^9", - "illuminate/support": "^6|^7|^8|^9", - "php": ">=7.2", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4.3.4|^5|^6" - }, - "require-dev": { - "laravel/framework": "^6|^7.24|^8", - "orchestra/testbench-dusk": "^4|^5|^6|^7", - "phpunit/phpunit": "^6|^7|^8|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - }, - "laravel": { - "providers": [ - "Fruitcake\\Cors\\CorsServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Fruitcake\\Cors\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fruitcake", - "homepage": "https://fruitcake.nl" - }, - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", - "keywords": [ - "api", - "cors", - "crossdomain", - "laravel" - ], - "support": { - "issues": "https://github.com/fruitcake/laravel-cors/issues", - "source": "https://github.com/fruitcake/laravel-cors/tree/v2.0.5" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "time": "2022-01-03T14:53:04+00:00" - }, - { - "name": "graham-campbell/result-type", - "version": "v1.0.4", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "0690bde05318336c7221785f2a932467f98b64ca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/0690bde05318336c7221785f2a932467f98b64ca", - "reference": "0690bde05318336c7221785f2a932467f98b64ca", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "phpoption/phpoption": "^1.8" - }, - "require-dev": { - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", - "type": "tidelift" - } - ], - "time": "2021-11-21T21:41:47+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "7.4.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.8.3 || ^2.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.4.1", - "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.5 || ^9.3.5", - "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": { - "branch-alias": { - "dev-master": "7.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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.4.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": "2021-12-06T18:43:05+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "1.5.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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/1.5.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "time": "2021-10-22T20:56:57+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.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.4.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.8 || ^9.3.10" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "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.1.0" - }, - "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": "2021-10-06T17:43:30+00:00" - }, - { - "name": "laravel/framework", - "version": "v9.0.1", - "source": { - "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "shasum": "" - }, - "require": { - "doctrine/inflector": "^2.0", - "dragonmantank/cron-expression": "^3.1", - "egulias/email-validator": "^3.1", - "ext-mbstring": "*", - "ext-openssl": "*", - "laravel/serializable-closure": "^1.0", - "league/commonmark": "^2.2", - "league/flysystem": "^3.0", - "monolog/monolog": "^2.0", - "nesbot/carbon": "^2.53.1", - "php": "^8.0.2", - "psr/container": "^1.1.1|^2.0.1", - "psr/log": "^1.0|^2.0|^3.0", - "psr/simple-cache": "^1.0|^2.0|^3.0", - "ramsey/uuid": "^4.2.2", - "symfony/console": "^6.0", - "symfony/error-handler": "^6.0", - "symfony/finder": "^6.0", - "symfony/http-foundation": "^6.0", - "symfony/http-kernel": "^6.0", - "symfony/mailer": "^6.0", - "symfony/mime": "^6.0", - "symfony/process": "^6.0", - "symfony/routing": "^6.0", - "symfony/var-dumper": "^6.0", - "tijsverkoyen/css-to-inline-styles": "^2.2.2", - "vlucas/phpdotenv": "^5.4.1", - "voku/portable-ascii": "^2.0" - }, - "conflict": { - "tightenco/collect": "<5.5.33" - }, - "provide": { - "psr/container-implementation": "1.1|2.0", - "psr/simple-cache-implementation": "1.0|2.0|3.0" - }, - "replace": { - "illuminate/auth": "self.version", - "illuminate/broadcasting": "self.version", - "illuminate/bus": "self.version", - "illuminate/cache": "self.version", - "illuminate/collections": "self.version", - "illuminate/conditionable": "self.version", - "illuminate/config": "self.version", - "illuminate/console": "self.version", - "illuminate/container": "self.version", - "illuminate/contracts": "self.version", - "illuminate/cookie": "self.version", - "illuminate/database": "self.version", - "illuminate/encryption": "self.version", - "illuminate/events": "self.version", - "illuminate/filesystem": "self.version", - "illuminate/hashing": "self.version", - "illuminate/http": "self.version", - "illuminate/log": "self.version", - "illuminate/macroable": "self.version", - "illuminate/mail": "self.version", - "illuminate/notifications": "self.version", - "illuminate/pagination": "self.version", - "illuminate/pipeline": "self.version", - "illuminate/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": { - "aws/aws-sdk-php": "^3.198.1", - "doctrine/dbal": "^2.13.3|^3.1.4", - "fakerphp/faker": "^1.9.2", - "guzzlehttp/guzzle": "^7.2", - "league/flysystem-aws-s3-v3": "^3.0", - "league/flysystem-ftp": "^3.0", - "league/flysystem-sftp-v3": "^3.0", - "mockery/mockery": "^1.4.4", - "orchestra/testbench-core": "^7.0", - "pda/pheanstalk": "^4.0", - "phpstan/phpstan": "^1.0", - "phpunit/phpunit": "^9.5.8", - "predis/predis": "^1.1.9", - "symfony/amazon-mailer": "^6.0", - "symfony/cache": "^6.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.198.1).", - "brianium/paratest": "Required to run tests in parallel (^6.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", - "ext-bcmath": "Required to use the multiple_of validation rule.", - "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.", - "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.2).", - "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-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", - "mockery/mockery": "Required to use mocking (^1.4.4).", - "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).", - "predis/predis": "Required to use the predis connector (^1.1.9).", - "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.0).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^6.0).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.0).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.0).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.0).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.x-dev" - } - }, - "autoload": { - "files": [ - "src/Illuminate/Collections/helpers.php", - "src/Illuminate/Events/functions.php", - "src/Illuminate/Foundation/helpers.php", - "src/Illuminate/Support/helpers.php" - ], - "psr-4": { - "Illuminate\\": "src/Illuminate/", - "Illuminate\\Support\\": [ - "src/Illuminate/Macroable/", - "src/Illuminate/Collections/", - "src/Illuminate/Conditionable/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Laravel Framework.", - "homepage": "https://laravel.com", - "keywords": [ - "framework", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2022-02-09T15:00:05+00:00" - }, - { - "name": "laravel/sanctum", - "version": "v2.14.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/sanctum.git", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/0647a87140c7522e75826cffcadb3ad6e01f71e9", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/contracts": "^6.9|^7.0|^8.0|^9.0", - "illuminate/database": "^6.9|^7.0|^8.0|^9.0", - "illuminate/support": "^6.9|^7.0|^8.0|^9.0", - "php": "^7.2|^8.0" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0", - "phpunit/phpunit": "^8.0|^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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": "2022-01-12T15:07:43+00:00" - }, - { - "name": "laravel/serializable-closure", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/serializable-closure.git", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/65c9faf50d567b65d81764a44526545689e3fe63", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "pestphp/pest": "^1.18", - "phpstan/phpstan": "^0.12.98", - "symfony/var-dumper": "^5.3" - }, - "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": "2022-02-01T16:29:39+00:00" - }, - { - "name": "laravel/tinker", - "version": "v2.7.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/tinker.git", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/5f2f9815b7631b9f586a3de7933c25f9327d4073", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073", - "shasum": "" - }, - "require": { - "illuminate/console": "^6.0|^7.0|^8.0|^9.0", - "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.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", - "phpunit/phpunit": "^8.5.8|^9.3.3" - }, - "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.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.7.0" - }, - "time": "2022-01-10T08:52:49+00:00" - }, - { - "name": "league/commonmark", - "version": "2.2.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/commonmark.git", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "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.15" - }, - "require-dev": { - "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.0", - "commonmark/commonmark.js": "0.30.0", - "composer/package-versions-deprecated": "^1.8", - "erusev/parsedown": "^1.0", - "ext-json": "*", - "github/gfm": "0.29.0", - "michelf/php-markdown": "^1.4", - "phpstan/phpstan": "^0.12.88 || ^1.0.0", - "phpunit/phpunit": "^9.5.5", - "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", - "unleashedtech/php-coding-standard": "^3.1", - "vimeo/psalm": "^4.7.3" - }, - "suggest": { - "symfony/yaml": "v2.3+ required if using the Front Matter extension" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.3-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": "2022-01-25T14:37:33+00:00" - }, - { - "name": "league/config", - "version": "v1.1.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/config.git", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/config/zipball/a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^3.0.1", - "nette/schema": "^1.2", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.90", - "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": "2021-08-14T12:15:32+00:00" - }, - { - "name": "league/flysystem", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9f8b4260031bfef5497477da53dd57b2aaff0e06", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06", - "shasum": "" - }, - "require": { - "ext-json": "*", - "league/mime-type-detection": "^1.0.0", - "php": "^8.0.2" - }, - "conflict": { - "guzzlehttp/guzzle": "<7.0", - "guzzlehttp/ringphp": "<1.1.1", - "symfony/http-client": "<5.2" - }, - "require-dev": { - "async-aws/s3": "^1.5", - "async-aws/simple-s3": "^1.0", - "aws/aws-sdk-php": "^3.198.1", - "composer/semver": "^3.0", - "ext-fileinfo": "*", - "ext-ftp": "*", - "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.5", - "google/cloud-storage": "^1.23", - "phpseclib/phpseclib": "^2.0", - "phpstan/phpstan": "^0.12.26", - "phpunit/phpunit": "^9.5.11", - "sabre/dav": "^4.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.0.3" - }, - "funding": [ - { - "url": "https://offset.earth/frankdejonge", - "type": "custom" - }, - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2022-01-31T19:41:04+00:00" - }, - { - "name": "league/mime-type-detection", - "version": "1.9.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/aa70e813a6ad3d1558fc927863d47309b4c23e69", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.2", - "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" - }, - "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.9.0" - }, - "funding": [ - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2021-11-21T11:48:40+00:00" - }, - { - "name": "monolog/monolog", - "version": "2.3.5", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd4380d6fc37626e2f799f29d91195040137eba9", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "provide": { - "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7", - "graylog2/gelf-php": "^1.4.2", - "mongodb/mongodb": "^1.8", - "php-amqplib/php-amqplib": "~2.4 || ^3", - "php-console/php-console": "^3.1.3", - "phpspec/prophecy": "^1.6.1", - "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5", - "predis/predis": "^1.1", - "rollbar/rollbar": "^1.3", - "ruflin/elastica": ">=0.90@dev", - "swiftmailer/swiftmailer": "^5.3|^6.0" - }, - "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", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "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": "2.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/2.3.5" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" - } - ], - "time": "2021-10-01T21:08:31+00:00" - }, - { - "name": "nesbot/carbon", - "version": "2.56.0", - "source": { - "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1.8 || ^8.0", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "doctrine/dbal": "^2.0 || ^3.0", - "doctrine/orm": "^2.7", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "phpmd/phpmd": "^2.9", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.54 || ^1.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.14", - "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://opencollective.com/Carbon", - "type": "open_collective" - }, - { - "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", - "type": "tidelift" - } - ], - "time": "2022-01-21T17:08:38+00:00" - }, - { - "name": "nette/schema", - "version": "v1.2.2", - "source": { - "type": "git", - "url": "https://github.com/nette/schema.git", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/9a39cef03a5b34c7de64f551538cbba05c2be5df", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df", - "shasum": "" - }, - "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": ">=7.1 <8.2" - }, - "require-dev": { - "nette/tester": "^2.3 || ^2.4", - "phpstan/phpstan-nette": "^0.12", - "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.2" - }, - "time": "2021-10-15T11:40:02+00:00" - }, - { - "name": "nette/utils", - "version": "v3.2.7", - "source": { - "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/0af4e3de4df9f1543534beab255ccf459e7a2c99", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99", - "shasum": "" - }, - "require": { - "php": ">=7.2 <8.2" - }, - "conflict": { - "nette/di": "<3.0.6" - }, - "require-dev": { - "nette/tester": "~2.0", - "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.3" - }, - "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()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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 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/v3.2.7" - }, - "time": "2022-01-24T11:29:14+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.13.2", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", - "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.13.2" - }, - "time": "2021-11-30T19:35:32+00:00" - }, - { - "name": "phpoption/phpoption", - "version": "1.8.1", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-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.8.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", - "type": "tidelift" - } - ], - "time": "2021-12-04T23:24:31+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.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.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": "http://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/tree/master" - }, - "time": "2020-06-29T06:28:15+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.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": "http://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/master" - }, - "time": "2019-04-30T12:38:16+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.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": "http://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/master" - }, - "time": "2016-08-06T14:39: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.1", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "570292577277f06f590635381a7f761a6cf4f026" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/570292577277f06f590635381a7f761a6cf4f026", - "reference": "570292577277f06f590635381a7f761a6cf4f026", - "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" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "3.17.05.02" - }, - "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.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." - }, - "bin": [ - "bin/psysh" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "0.11.x-dev" - } - }, - "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.1" - }, - "time": "2022-01-03T13:58:38+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": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/ramsey/collection.git", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "shasum": "" - }, - "require": { - "php": "^7.3 || ^8", - "symfony/polyfill-php81": "^1.23" - }, - "require-dev": { - "captainhook/captainhook": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "ergebnis/composer-normalize": "^2.6", - "fakerphp/faker": "^1.5", - "hamcrest/hamcrest-php": "^2", - "jangregor/phpstan-prophecy": "^0.8", - "mockery/mockery": "^1.3", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1", - "phpstan/phpstan": "^0.12.32", - "phpstan/phpstan-mockery": "^0.12.5", - "phpstan/phpstan-phpunit": "^0.12.11", - "phpunit/phpunit": "^8.5 || ^9", - "psy/psysh": "^0.10.4", - "slevomat/coding-standard": "^6.3", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.4" - }, - "type": "library", - "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/1.2.2" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "time": "2021-10-10T03:01:02+00:00" - }, - { - "name": "ramsey/uuid", - "version": "4.2.3", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "shasum": "" - }, - "require": { - "brick/math": "^0.8 || ^0.9", - "ext-json": "*", - "php": "^7.2 || ^8.0", - "ramsey/collection": "^1.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php80": "^1.14" - }, - "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", - "moontoast/math": "^1.1", - "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.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-mockery": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^8.5 || ^9", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" - }, - "suggest": { - "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-ctype": "Enables faster processing of character classification using ctype functions.", - "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": { - "branch-alias": { - "dev-main": "4.x-dev" - }, - "captainhook": { - "force-install": true - } - }, - "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "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.2.3" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2021-09-25T23:10:38+00:00" - }, - { - "name": "symfony/console", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/22e8efd019c3270c4f79376234a3f8752cd25490", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.4|^6.0" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/css-selector", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/1955d595c12c111629cc814d3f2a2ff13580508a", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a", - "shasum": "" - }, - "require": { - "php": ">=8.0.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/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-11-01T23:48:49+00:00" - }, - { - "name": "symfony/error-handler", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/20343b3bad7ebafa38138ddcb97290a24722b57b", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" - }, - "bin": [ - "Resources/bin/patch-type-declarations" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to manage errors and ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6472ea2dd415e925b90ca82be64b8bc6157f3934", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/event-dispatcher-contracts": "^2|^3" - }, - "conflict": { - "symfony/dependency-injection": "<5.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^5.4|^6.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/aa5422287b75594b90ee9cd807caf8f0df491385", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/event-dispatcher": "^1" - }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-07-15T12:33:35+00:00" - }, - { - "name": "symfony/finder", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/8661b74dbabc23223f38c9b99d3f8ade71170430", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ad157299ced81a637fade1efcadd688d6deba5c1", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1" - }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/cache": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0" - }, - "suggest": { - "symfony/mime": "To use the file extension guesser" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v6.0.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/error-handler": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", - "symfony/twig-bridge": "<5.4", - "symfony/validator": "<5.4", - "twig/twig": "<2.13" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/process": "^5.4|^6.0", - "symfony/routing": "^5.4|^6.0", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-29T18:12:46+00:00" - }, - { - "name": "symfony/mailer", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mailer.git", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "shasum": "" - }, - "require": { - "egulias/email-validator": "^2.1.10|^3", - "php": ">=8.0.2", - "psr/event-dispatcher": "^1", - "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3" - }, - "conflict": { - "symfony/http-kernel": "<5.4" - }, - "require-dev": { - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/messenger": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/mime", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/2cd9601efd040e56f43360daa68f3c6b0534923a", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "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" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "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.24.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": "2021-10-20T20:35:02+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-11-23T21:10:46+00:00" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44", - "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.23-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.24.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": "2021-09-14T14:02:44+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.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": "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.24.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": "2021-11-30T18:21:41+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-05-27T09:17:38+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:33+00:00" - }, - { - "name": "symfony/polyfill-php81", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:11+00:00" - }, - { - "name": "symfony/process", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/298ed357274c1868c20a0061df256a1250a6c4af", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/routing", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/yaml": "<5.4" - }, - "require-dev": { - "doctrine/annotations": "^1.12", - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/36715ebf9fb9db73db0cb24263c79077c6fe8603", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/container": "^2.0" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "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.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": "2021-11-04T17:53:12+00:00" - }, - { - "name": "symfony/string", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/522144f0c4c004c80d56fa47e40e17028e2eefc2", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.0" - }, - "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/translation-contracts": "^2.0|^3.0", - "symfony/var-exporter": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "files": [ - "Resources/functions.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 an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/translation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/71bb15335798f8c4da110911bcf2d2fead7a430d", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.3|^3.0" - }, - "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" - }, - "provide": { - "symfony/translation-implementation": "2.3|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-07T00:29:03+00:00" - }, - { - "name": "symfony/translation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "suggest": { - "symfony/translation-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - } - }, - "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.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": "2021-09-07T12:43:40+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7b701676fc64f9ef11f9b4870f16b48f66be4834", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<5.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-17T16:30:44+00:00" - }, - { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.4", - "source": { - "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" - } - ], - "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", - "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "support": { - "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" - }, - "time": "2021-12-08T09:12:39+00:00" - }, - { - "name": "vlucas/phpdotenv", - "version": "v5.4.1", - "source": { - "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", - "shasum": "" - }, - "require": { - "ext-pcre": "*", - "graham-campbell/result-type": "^1.0.2", - "php": "^7.1.3 || ^8.0", - "phpoption/phpoption": "^1.8", - "symfony/polyfill-ctype": "^1.23", - "symfony/polyfill-mbstring": "^1.23.1", - "symfony/polyfill-php80": "^1.23.1" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" - }, - "suggest": { - "ext-filter": "Required to use the boolean validator." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.4-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.4.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", - "type": "tidelift" - } - ], - "time": "2021-12-12T23:22:04+00:00" - }, - { - "name": "voku/portable-ascii", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/voku/portable-ascii.git", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/9bd89e83cecdf8c37b64909454249eaed98b2c89", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89", - "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.0" - }, - "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-01-24T18:59:03+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "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.10.0" - }, - "time": "2021-03-09T10:59:23+00:00" - } - ], - "packages-dev": [ - { - "name": "doctrine/instantiator", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.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%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2020-11-10T18:47:58+00:00" - }, - { - "name": "facade/ignition-contracts", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/facade/ignition-contracts.git", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^v2.15.8", - "phpunit/phpunit": "^9.3.11", - "vimeo/psalm": "^3.17.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Facade\\IgnitionContracts\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://flareapp.io", - "role": "Developer" - } - ], - "description": "Solution contracts for Ignition", - "homepage": "https://github.com/facade/ignition-contracts", - "keywords": [ - "contracts", - "flare", - "ignition" - ], - "support": { - "issues": "https://github.com/facade/ignition-contracts/issues", - "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" - }, - "time": "2020-10-16T08:27:54+00:00" - }, - { - "name": "fakerphp/faker", - "version": "v1.19.0", - "source": { - "type": "git", - "url": "https://github.com/FakerPHP/Faker.git", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^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": "*", - "symfony/phpunit-bridge": "^4.4 || ^5.2" - }, - "suggest": { - "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", - "ext-curl": "Required by Faker\\Provider\\Image to download images.", - "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", - "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.19-dev" - } - }, - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "François Zaninotto" - } - ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], - "support": { - "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0" - }, - "time": "2022-02-02T17:38:57+00:00" - }, - { - "name": "filp/whoops", - "version": "2.14.5", - "source": { - "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "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.14.5" - }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "time": "2022-01-07T12:00:00+00:00" - }, - { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "shasum": "" - }, - "require": { - "php": "^5.3|^7.0|^8.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" - }, - "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "classmap": [ - "hamcrest" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "This is the PHP port of Hamcrest Matchers", - "keywords": [ - "test" - ], - "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" - }, - "time": "2020-07-09T08:09:16+00:00" - }, - { - "name": "laravel/sail", - "version": "v1.13.2", - "source": { - "type": "git", - "url": "https://github.com/laravel/sail.git", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.0|^9.0", - "illuminate/contracts": "^8.0|^9.0", - "illuminate/support": "^8.0|^9.0", - "php": "^7.3|^8.0" - }, - "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": "2022-02-08T14:14:12+00:00" - }, - { - "name": "mockery/mockery", - "version": "1.5.0", - "source": { - "type": "git", - "url": "https://github.com/mockery/mockery.git", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "shasum": "" - }, - "require": { - "hamcrest/hamcrest-php": "^2.0.1", - "lib-pcre": ">=7.0", - "php": "^7.3 || ^8.0" - }, - "conflict": { - "phpunit/phpunit": "<8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-0": { - "Mockery": "library/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" - } - ], - "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": { - "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.5.0" - }, - "time": "2022-01-20T13:18:17+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.10.2", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "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.10.2" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2020-11-13T09:40:50+00:00" - }, - { - "name": "nunomaduro/collision", - "version": "v6.1.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/collision.git", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "shasum": "" - }, - "require": { - "facade/ignition-contracts": "^1.0.2", - "filp/whoops": "^2.14.5", - "php": "^8.0.0", - "symfony/console": "^6.0.2" - }, - "require-dev": { - "brianium/paratest": "^6.4.1", - "laravel/framework": "^9.0", - "nunomaduro/larastan": "^1.0.2", - "nunomaduro/mock-final-classes": "^1.1.0", - "orchestra/testbench": "^7.0.0", - "phpunit/phpunit": "^9.5.11" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "6.x-dev" - }, - "laravel": { - "providers": [ - "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" - ] - } - }, - "autoload": { - "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": "2022-01-18T17:49:08+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.1.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/15a90844ad40f127afd244c0cad228de2a80052a", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a", - "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.1.1" - }, - "time": "2022-02-07T21:56:48+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.6.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "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.6.0" - }, - "time": "2022-01-04T19:58:01+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" - }, - "time": "2021-12-08T12:19:24+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "9.2.10", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d5850aaf931743067f4bfc1ae4cbd06468400687", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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 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", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.10" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-05T09:12:13+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "3.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-02T12:48:52+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "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/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:58:55+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T05:33:50+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.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/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:16:10+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "9.5.13", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/597cb647654ede35e43b137926dfdfef0fb11743", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.3.1", - "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": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.7", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", - "sebastian/version": "^3.0.2" - }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.13" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-01-24T07:33:35+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:08:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "1.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:08:54+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:30:19+00:00" - }, - { - "name": "sebastian/comparator", - "version": "4.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:49:45+00:00" - }, - { - "name": "sebastian/complexity", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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 calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:52:27+00:00" - }, - { - "name": "sebastian/diff", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:10:38+00:00" - }, - { - "name": "sebastian/environment", - "version": "5.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-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": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:52:38+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "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", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-11-11T14:18:36+00:00" - }, - { - "name": "sebastian/global-state", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-11T13:31:12+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-28T06:42:11+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "http://www.github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:17:30+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:45:17+00:00" - }, - { - "name": "sebastian/type", - "version": "2.3.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-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/2.3.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-15T12:49:02+00:00" - }, - { - "name": "sebastian/version", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:39:44+00:00" - }, - { - "name": "spatie/backtrace", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/backtrace.git", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "ext-json": "*", - "phpunit/phpunit": "^9.3", - "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": { - "issues": "https://github.com/spatie/backtrace/issues", - "source": "https://github.com/spatie/backtrace/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/sponsors/spatie", - "type": "github" - }, - { - "url": "https://spatie.be/open-source/support-us", - "type": "other" - } - ], - "time": "2021-11-09T10:57:15+00:00" - }, - { - "name": "spatie/flare-client-php", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/flare-client-php.git", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "shasum": "" - }, - "require": { - "illuminate/pipeline": "^8.0|^9.0", - "php": "^8.0", - "spatie/backtrace": "^1.2", - "symfony/http-foundation": "^5.0|^6.0", - "symfony/mime": "^5.2|^6.0", - "symfony/process": "^5.2|^6.0", - "symfony/var-dumper": "^5.2|^6.0" - }, - "require-dev": { - "dms/phpunit-arraysubset-asserts": "^0.3.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/phpunit-snapshot-assertions": "^4.0" - }, - "type": "library", - "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.0.1" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2022-02-04T15:21:00+00:00" - }, - { - "name": "spatie/ignition", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/spatie/ignition.git", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/d2d5ba823af3004268556e87dfc94449e4159f5a", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "monolog/monolog": "^2.0", - "php": "^8.0", - "spatie/flare-client-php": "^1.0", - "symfony/console": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "mockery/mockery": "^1.4", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/ray": "^1.32", - "symfony/process": "^5.4|^6.0" - }, - "type": "library", - "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": "2022-01-19T12:57:41+00:00" - }, - { - "name": "spatie/laravel-ignition", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/68250225a9f83b086462c2af1b1139dfde48fbd2", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*", - "illuminate/support": "^8.77|^9.0", - "monolog/monolog": "^2.3", - "php": "^8.0", - "spatie/flare-client-php": "^1.0.1", - "spatie/ignition": "^1.0", - "symfony/console": "^5.0|^6.0", - "symfony/var-dumper": "^5.0|^6.0" - }, - "require-dev": { - "filp/whoops": "^2.14", - "livewire/livewire": "^2.8|dev-develop", - "mockery/mockery": "^1.4", - "nunomaduro/larastan": "^1.0", - "orchestra/testbench": "^6.23|^7.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/laravel-ray": "^1.27" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Spatie\\LaravelIgnition\\IgnitionServiceProvider" - ], - "aliases": { - "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" - } - } - }, - "autoload": { - "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": "2022-02-04T15:25:56+00:00" - }, - { - "name": "squizlabs/php_codesniffer", - "version": "3.6.2", - "source": { - "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", - "shasum": "" - }, - "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.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": "lead" - } - ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", - "keywords": [ - "phpcs", - "standards" - ], - "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" - }, - "time": "2021-12-12T21:44:58+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2021-07-28T10:34:58+00:00" - } - ], - "aliases": [], - "minimum-stability": "dev", - "stability-flags": [], - "prefer-stable": true, - "prefer-lowest": false, - "platform": { - "php": "^8.0" - }, - "platform-dev": [], - "plugin-api-version": "2.1.0" -} diff --git a/Chapter13/onlineStore/config/app.php b/Chapter13/onlineStore/config/app.php deleted file mode 100644 index 1941d7c..0000000 --- a/Chapter13/onlineStore/config/app.php +++ /dev/null @@ -1,197 +0,0 @@ - env('APP_NAME', 'Laravel'), - - /* - |-------------------------------------------------------------------------- - | Application Environment - |-------------------------------------------------------------------------- - | - | This value determines the "environment" your application is currently - | running in. This may determine how you prefer to configure various - | services the application utilizes. Set this in your ".env" file. - | - */ - - 'env' => env('APP_ENV', 'production'), - - /* - |-------------------------------------------------------------------------- - | Application Debug Mode - |-------------------------------------------------------------------------- - | - | When your application is in debug mode, detailed error messages with - | stack traces will be shown on every error that occurs within your - | application. If disabled, a simple generic error page is shown. - | - */ - - 'debug' => (bool) env('APP_DEBUG', false), - - /* - |-------------------------------------------------------------------------- - | Application URL - |-------------------------------------------------------------------------- - | - | This URL is used by the console to properly generate URLs when using - | the Artisan command line tool. You should set this to the root of - | your application so that it is used when running Artisan tasks. - | - */ - - 'url' => env('APP_URL', 'http://localhost'), - - 'asset_url' => env('ASSET_URL', null), - - /* - |-------------------------------------------------------------------------- - | 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', - - /* - |-------------------------------------------------------------------------- - | 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' => [ - - /* - * Laravel Framework Service Providers... - */ - Illuminate\Auth\AuthServiceProvider::class, - Illuminate\Broadcasting\BroadcastServiceProvider::class, - Illuminate\Bus\BusServiceProvider::class, - Illuminate\Cache\CacheServiceProvider::class, - Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, - Illuminate\Cookie\CookieServiceProvider::class, - Illuminate\Database\DatabaseServiceProvider::class, - Illuminate\Encryption\EncryptionServiceProvider::class, - Illuminate\Filesystem\FilesystemServiceProvider::class, - Illuminate\Foundation\Providers\FoundationServiceProvider::class, - Illuminate\Hashing\HashServiceProvider::class, - Illuminate\Mail\MailServiceProvider::class, - Illuminate\Notifications\NotificationServiceProvider::class, - Illuminate\Pagination\PaginationServiceProvider::class, - Illuminate\Pipeline\PipelineServiceProvider::class, - Illuminate\Queue\QueueServiceProvider::class, - Illuminate\Redis\RedisServiceProvider::class, - Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, - Illuminate\Session\SessionServiceProvider::class, - Illuminate\Translation\TranslationServiceProvider::class, - Illuminate\Validation\ValidationServiceProvider::class, - Illuminate\View\ViewServiceProvider::class, - - /* - * 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, - - ], - - /* - |-------------------------------------------------------------------------- - | 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([ - // ... - ])->toArray(), - -]; diff --git a/Chapter13/onlineStore/config/auth.php b/Chapter13/onlineStore/config/auth.php deleted file mode 100644 index d8c6cee..0000000 --- a/Chapter13/onlineStore/config/auth.php +++ /dev/null @@ -1,111 +0,0 @@ - [ - '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 expire 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. - | - */ - - 'passwords' => [ - 'users' => [ - 'provider' => 'users', - 'table' => 'password_resets', - '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/Chapter13/onlineStore/config/broadcasting.php b/Chapter13/onlineStore/config/broadcasting.php deleted file mode 100644 index 67fcbbd..0000000 --- a/Chapter13/onlineStore/config/broadcasting.php +++ /dev/null @@ -1,67 +0,0 @@ - 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'), - 'useTLS' => true, - ], - '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/Chapter13/onlineStore/config/cache.php b/Chapter13/onlineStore/config/cache.php deleted file mode 100644 index 8736c7a..0000000 --- a/Chapter13/onlineStore/config/cache.php +++ /dev/null @@ -1,110 +0,0 @@ - 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'), - ], - - '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 a RAM based store such as APC or Memcached, there might - | be other applications utilizing the same cache. So, we'll specify a - | value to get prefixed to all our keys so we can avoid collisions. - | - */ - - 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'), - -]; diff --git a/Chapter13/onlineStore/config/cors.php b/Chapter13/onlineStore/config/cors.php deleted file mode 100644 index 8a39e6d..0000000 --- a/Chapter13/onlineStore/config/cors.php +++ /dev/null @@ -1,34 +0,0 @@ - ['api/*', 'sanctum/csrf-cookie'], - - 'allowed_methods' => ['*'], - - 'allowed_origins' => ['*'], - - 'allowed_origins_patterns' => [], - - 'allowed_headers' => ['*'], - - 'exposed_headers' => [], - - 'max_age' => 0, - - 'supports_credentials' => false, - -]; diff --git a/Chapter13/onlineStore/config/database.php b/Chapter13/onlineStore/config/database.php deleted file mode 100644 index 0faebae..0000000 --- a/Chapter13/onlineStore/config/database.php +++ /dev/null @@ -1,147 +0,0 @@ - env('DB_CONNECTION', 'mysql'), - - /* - |-------------------------------------------------------------------------- - | Database Connections - |-------------------------------------------------------------------------- - | - | Here are each of the database connections setup for your application. - | Of course, examples of configuring each database platform that is - | supported by Laravel is shown below to make development simple. - | - | - | All database work in Laravel is done through the PHP PDO facilities - | so make sure you have the driver for your particular database of - | choice installed on your machine before you begin development. - | - */ - - 'connections' => [ - - 'sqlite' => [ - 'driver' => 'sqlite', - 'url' => env('DATABASE_URL'), - 'database' => env('DB_DATABASE', database_path('database.sqlite')), - 'prefix' => '', - 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), - ], - - 'mysql' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '3306'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'unix_socket' => env('DB_SOCKET', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - 'pgsql' => [ - 'driver' => 'pgsql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '5432'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - 'search_path' => 'public', - 'sslmode' => 'prefer', - ], - - 'sqlsrv' => [ - 'driver' => 'sqlsrv', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', 'localhost'), - 'port' => env('DB_PORT', '1433'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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'), - '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'), - 'password' => env('REDIS_PASSWORD'), - 'port' => env('REDIS_PORT', '6379'), - 'database' => env('REDIS_CACHE_DB', '1'), - ], - - ], - -]; diff --git a/Chapter13/onlineStore/config/filesystems.php b/Chapter13/onlineStore/config/filesystems.php deleted file mode 100644 index cf5abce..0000000 --- a/Chapter13/onlineStore/config/filesystems.php +++ /dev/null @@ -1,73 +0,0 @@ - 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 setup for each driver as an example of the required options. - | - | Supported Drivers: "local", "ftp", "sftp", "s3" - | - */ - - 'disks' => [ - - 'local' => [ - 'driver' => 'local', - 'root' => storage_path('app'), - ], - - 'public' => [ - 'driver' => 'local', - 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', - 'visibility' => 'public', - ], - - '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), - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter13/onlineStore/config/hashing.php b/Chapter13/onlineStore/config/hashing.php deleted file mode 100644 index bcd3be4..0000000 --- a/Chapter13/onlineStore/config/hashing.php +++ /dev/null @@ -1,52 +0,0 @@ - '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/Chapter13/onlineStore/config/logging.php b/Chapter13/onlineStore/config/logging.php deleted file mode 100644 index fefe088..0000000 --- a/Chapter13/onlineStore/config/logging.php +++ /dev/null @@ -1,119 +0,0 @@ - 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' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), - - /* - |-------------------------------------------------------------------------- - | 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'), - ], - - 'daily' => [ - 'driver' => 'daily', - 'path' => storage_path('logs/laravel.log'), - 'level' => env('LOG_LEVEL', 'debug'), - 'days' => 14, - ], - - 'slack' => [ - 'driver' => 'slack', - 'url' => env('LOG_SLACK_WEBHOOK_URL'), - 'username' => 'Laravel Log', - 'emoji' => ':boom:', - 'level' => env('LOG_LEVEL', 'critical'), - ], - - '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'), - ], - ], - - 'stderr' => [ - 'driver' => 'monolog', - 'level' => env('LOG_LEVEL', 'debug'), - 'handler' => StreamHandler::class, - 'formatter' => env('LOG_STDERR_FORMATTER'), - 'with' => [ - 'stream' => 'php://stderr', - ], - ], - - 'syslog' => [ - 'driver' => 'syslog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'errorlog' => [ - 'driver' => 'errorlog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'null' => [ - 'driver' => 'monolog', - 'handler' => NullHandler::class, - ], - - 'emergency' => [ - 'path' => storage_path('logs/laravel.log'), - ], - ], - -]; diff --git a/Chapter13/onlineStore/config/mail.php b/Chapter13/onlineStore/config/mail.php deleted file mode 100644 index 87b6fe3..0000000 --- a/Chapter13/onlineStore/config/mail.php +++ /dev/null @@ -1,117 +0,0 @@ - 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", - | "postmark", "log", "array", "failover" - | - */ - - 'mailers' => [ - 'smtp' => [ - 'transport' => 'smtp', - '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, - ], - - 'ses' => [ - 'transport' => 'ses', - ], - - 'mailgun' => [ - 'transport' => 'mailgun', - ], - - 'postmark' => [ - 'transport' => 'postmark', - ], - - 'sendmail' => [ - 'transport' => 'sendmail', - 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -t -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/Chapter13/onlineStore/config/queue.php b/Chapter13/onlineStore/config/queue.php deleted file mode 100644 index 25ea5a8..0000000 --- a/Chapter13/onlineStore/config/queue.php +++ /dev/null @@ -1,93 +0,0 @@ - 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, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter13/onlineStore/config/sanctum.php b/Chapter13/onlineStore/config/sanctum.php deleted file mode 100644 index 9281c92..0000000 --- a/Chapter13/onlineStore/config/sanctum.php +++ /dev/null @@ -1,65 +0,0 @@ - explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( - '%s%s', - 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', - env('APP_URL') ? ','.parse_url(env('APP_URL'), PHP_URL_HOST) : '' - ))), - - /* - |-------------------------------------------------------------------------- - | 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/Chapter13/onlineStore/config/services.php b/Chapter13/onlineStore/config/services.php deleted file mode 100644 index 2a1d616..0000000 --- a/Chapter13/onlineStore/config/services.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - 'domain' => env('MAILGUN_DOMAIN'), - 'secret' => env('MAILGUN_SECRET'), - 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), - ], - - '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/Chapter13/onlineStore/config/session.php b/Chapter13/onlineStore/config/session.php deleted file mode 100644 index 8fed97c..0000000 --- a/Chapter13/onlineStore/config/session.php +++ /dev/null @@ -1,201 +0,0 @@ - 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/Chapter13/onlineStore/config/view.php b/Chapter13/onlineStore/config/view.php deleted file mode 100644 index 22b8a18..0000000 --- a/Chapter13/onlineStore/config/view.php +++ /dev/null @@ -1,36 +0,0 @@ - [ - 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/Chapter13/onlineStore/database/.gitignore b/Chapter13/onlineStore/database/.gitignore deleted file mode 100644 index 9b19b93..0000000 --- a/Chapter13/onlineStore/database/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.sqlite* diff --git a/Chapter13/onlineStore/database/factories/UserFactory.php b/Chapter13/onlineStore/database/factories/UserFactory.php deleted file mode 100644 index d6ca926..0000000 --- a/Chapter13/onlineStore/database/factories/UserFactory.php +++ /dev/null @@ -1,42 +0,0 @@ - - */ -class UserFactory extends Factory -{ - /** - * Define the model's default state. - * - * @return array - */ - public function definition() - { - return [ - 'name' => $this->faker->name(), - 'email' => $this->faker->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. - * - * @return \Illuminate\Database\Eloquent\Factories\Factory - */ - public function unverified() - { - return $this->state(function (array $attributes) { - return [ - 'email_verified_at' => null, - ]; - }); - } -} diff --git a/Chapter13/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php b/Chapter13/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php deleted file mode 100644 index cf6b776..0000000 --- a/Chapter13/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->string('name'); - $table->string('email')->unique(); - $table->timestamp('email_verified_at')->nullable(); - $table->string('password'); - $table->rememberToken(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('users'); - } -}; diff --git a/Chapter13/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php b/Chapter13/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php deleted file mode 100644 index fcacb80..0000000 --- a/Chapter13/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php +++ /dev/null @@ -1,32 +0,0 @@ -string('email')->index(); - $table->string('token'); - $table->timestamp('created_at')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('password_resets'); - } -}; diff --git a/Chapter13/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/Chapter13/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php deleted file mode 100644 index 1719198..0000000 --- a/Chapter13/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php +++ /dev/null @@ -1,36 +0,0 @@ -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. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('failed_jobs'); - } -}; diff --git a/Chapter13/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/Chapter13/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php deleted file mode 100644 index fd235f8..0000000 --- a/Chapter13/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->morphs('tokenable'); - $table->string('name'); - $table->string('token', 64)->unique(); - $table->text('abilities')->nullable(); - $table->timestamp('last_used_at')->nullable(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('personal_access_tokens'); - } -}; diff --git a/Chapter13/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php b/Chapter13/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php deleted file mode 100644 index 2eecdc2..0000000 --- a/Chapter13/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php +++ /dev/null @@ -1,35 +0,0 @@ -id(); - $table->string('name'); - $table->text('description'); - $table->string('image'); - $table->integer('price'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('products'); - } -}; diff --git a/Chapter13/onlineStore/database/seeders/DatabaseSeeder.php b/Chapter13/onlineStore/database/seeders/DatabaseSeeder.php deleted file mode 100644 index 71f673f..0000000 --- a/Chapter13/onlineStore/database/seeders/DatabaseSeeder.php +++ /dev/null @@ -1,19 +0,0 @@ -create(); - } -} diff --git a/Chapter13/onlineStore/lang/en.json b/Chapter13/onlineStore/lang/en.json deleted file mode 100644 index 577680d..0000000 --- a/Chapter13/onlineStore/lang/en.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "The :attribute must contain at least one letter.": "The :attribute must contain at least one letter.", - "The :attribute must contain at least one number.": "The :attribute must contain at least one number.", - "The :attribute must contain at least one symbol.": "The :attribute must contain at least one symbol.", - "The :attribute must contain at least one uppercase and one lowercase letter.": "The :attribute must contain at least one uppercase and one lowercase letter.", - "The given :attribute has appeared in a data leak. Please choose a different :attribute.": "The given :attribute has appeared in a data leak. Please choose a different :attribute." -} diff --git a/Chapter13/onlineStore/lang/en/auth.php b/Chapter13/onlineStore/lang/en/auth.php deleted file mode 100644 index 6598e2c..0000000 --- a/Chapter13/onlineStore/lang/en/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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/Chapter13/onlineStore/lang/en/pagination.php b/Chapter13/onlineStore/lang/en/pagination.php deleted file mode 100644 index d481411..0000000 --- a/Chapter13/onlineStore/lang/en/pagination.php +++ /dev/null @@ -1,19 +0,0 @@ - '« Previous', - 'next' => 'Next »', - -]; diff --git a/Chapter13/onlineStore/lang/en/passwords.php b/Chapter13/onlineStore/lang/en/passwords.php deleted file mode 100644 index 2345a56..0000000 --- a/Chapter13/onlineStore/lang/en/passwords.php +++ /dev/null @@ -1,22 +0,0 @@ - '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/Chapter13/onlineStore/lang/en/validation.php b/Chapter13/onlineStore/lang/en/validation.php deleted file mode 100644 index 783003c..0000000 --- a/Chapter13/onlineStore/lang/en/validation.php +++ /dev/null @@ -1,163 +0,0 @@ - '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' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - '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' => [ - 'numeric' => 'The :attribute must be greater than :value.', - 'file' => 'The :attribute must be greater than :value kilobytes.', - 'string' => 'The :attribute must be greater than :value characters.', - 'array' => 'The :attribute must have more than :value items.', - ], - 'gte' => [ - 'numeric' => 'The :attribute must be greater than or equal to :value.', - 'file' => 'The :attribute must be greater than or equal to :value kilobytes.', - 'string' => 'The :attribute must be greater than or equal to :value characters.', - 'array' => 'The :attribute must have :value items or more.', - ], - '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' => [ - 'numeric' => 'The :attribute must be less than :value.', - 'file' => 'The :attribute must be less than :value kilobytes.', - 'string' => 'The :attribute must be less than :value characters.', - 'array' => 'The :attribute must have less than :value items.', - ], - 'lte' => [ - 'numeric' => 'The :attribute must be less than or equal to :value.', - 'file' => 'The :attribute must be less than or equal to :value kilobytes.', - 'string' => 'The :attribute must be less than or equal to :value characters.', - 'array' => 'The :attribute must not have more than :value items.', - ], - 'mac_address' => 'The :attribute must be a valid MAC address.', - 'max' => [ - 'numeric' => 'The :attribute must not be greater than :max.', - 'file' => 'The :attribute must not be greater than :max kilobytes.', - 'string' => 'The :attribute must not be greater than :max characters.', - 'array' => 'The :attribute must not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - '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.', - 'password' => 'The password is incorrect.', - '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' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - '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/Chapter13/onlineStore/package.json b/Chapter13/onlineStore/package.json deleted file mode 100644 index 7a9aecd..0000000 --- a/Chapter13/onlineStore/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "private": true, - "scripts": { - "dev": "npm run development", - "development": "mix", - "watch": "mix watch", - "watch-poll": "mix watch -- --watch-options-poll=1000", - "hot": "mix watch --hot", - "prod": "npm run production", - "production": "mix --production" - }, - "devDependencies": { - "axios": "^0.25", - "laravel-mix": "^6.0.6", - "lodash": "^4.17.19", - "postcss": "^8.1.14" - } -} diff --git a/Chapter13/onlineStore/phpcs.xml b/Chapter13/onlineStore/phpcs.xml deleted file mode 100644 index a1cf2b6..0000000 --- a/Chapter13/onlineStore/phpcs.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - The coding standard for the Online Store project - - app/ - config/ - database/ - routes/ - */migrations/* - diff --git a/Chapter13/onlineStore/phpunit.xml b/Chapter13/onlineStore/phpunit.xml deleted file mode 100644 index 2ac86a1..0000000 --- a/Chapter13/onlineStore/phpunit.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - ./tests/Unit - - - ./tests/Feature - - - - - ./app - - - - - - - - - - - - - - diff --git a/Chapter13/onlineStore/public/.htaccess b/Chapter13/onlineStore/public/.htaccess deleted file mode 100644 index 3aec5e2..0000000 --- a/Chapter13/onlineStore/public/.htaccess +++ /dev/null @@ -1,21 +0,0 @@ - - - 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/Chapter13/onlineStore/public/css/app.css b/Chapter13/onlineStore/public/css/app.css deleted file mode 100644 index cabac36..0000000 --- a/Chapter13/onlineStore/public/css/app.css +++ /dev/null @@ -1,20 +0,0 @@ -.bg-secondary { - background-color: #2c3e50 !important; -} - -.copyright { - background-color: #1a252f; -} - -.bg-primary { - background-color: #1abc9c !important; -} - -nav{ - font-weight: 700; -} - -.img-card{ - height: 18vw; - object-fit: cover; -} diff --git a/Chapter13/onlineStore/public/favicon.ico b/Chapter13/onlineStore/public/favicon.ico deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter13/onlineStore/public/img/game.png b/Chapter13/onlineStore/public/img/game.png deleted file mode 100644 index 85420e8bbc16098bf26b4ee63bde0e91a19d1f2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25896 zcmb@tcQ~9;*FK6Ai69A*=pxZO(R-rKsKX$7MD&)ZQHMkcAsB-gz4zXNAcBa|d-MpS z*U|gg-tYacbN>5X=Q`&f<9f>8Yp-&zd#$~nP)&6u5+Z6MJUl!Sh_bvE9^SP;JUoK1 zTLj?BDvTfx{7|_nymZxevUK$@bGE>H{>JIG#bbzrnU#f>h1na=cbyiJczACx5c%iu z_Y>>Wx8G0g`)-|%ixg+}P*ZtEZwEj4@MBc$&mVtn`4bqYThYB z!jdb#>e}j)yHzVI&QRwqa#F~|%vYAG{)enlWqD!t((-&orup~`QCNQ3#Y+Vw#^e6VcC~R|8@HdkgO;+yCCeGo$$5TmF1k>iEyC|9SU6xBm0)|MAxU=NbPa=l>gF{!cUh z|G)hI$Bh5CX3|(*0+kCD$~YSwo4L4VNY^vT3{w%{T>cRy57=n9=KN4f;1kxMo(@Gc zneTB?uj5)j3^2-YJ|aa60xSc(n zpkvflu4;7ad?1GG7}GWc1D_COcEud3K^&4|ab&1JUd&~|r5CHHfy!5| z%E~$u+RT+uXKW(rnA;{DG zwaMEo&yJV(Nw9`pz|+Ci*=0Q>)T@=u0{NP8Cin8oz-~$TE-HU_`1G0JGt&ByE76KeR&b;Q4pEqhhJ(+Jr#(eFT@r`|Zu`G)C#;l`@+(#v!+E9|BD+*P&}{ zp=tx64L_ZfiL>ul4MHemmA(3Xt|cE`4YB9ww6H)D{p?LYhkCZtS7BNKhfKk%kX!zp zv)tx8r*{ynAwZM=kc*NwqSv<{}e>IKts8DJ3zP zA~RB8@-}dOS(|A(`l;Ou0ofnW5Y0QVjxdjKlh`8}_ zezsfWBJ0&2xUxkZP_ zghT!$3IHCDg9*@{zos;pZrGBWD+WvqGKifgY~SG;x!yQl@%G;%OQjSc`&8@GZTo2h zqU-T}j7>|lYKJCXwlA#xgIa_MsO_+0^=EXOIEL{KJU$Muu^B`bm&MJO?tA+L-QL&3Z} zx+AtU^oZu{zWJ!##Nsa}^y#9)VNLm$WO*&1xHN)cnmB0&uV6|dDb|5&F?H>jFDo%P zq1k%u0=kj0GFjj{a0XXuIsGR3k$8D>>YQMwB(Y}$Cv%}ScgZ36z~a7U&otm3WR1A= z2c)j1lB4{)2QNE%KW{ovTnU@jc=3CsFND-FOkI;AZ<7iA$~2|nppoG~wfUWMk4ett zHLzIpj=YuhBQHy*1ttajRAuXtU+Z+o!XWE)cLaP zNw&(t?gItQ&)042)@2SfcWh`Q^Io?((d>^0KU`;T85VOnY2BSCFJ_=Od?pLK7W=7j zB>*!7?DBRQ5*(7DrA#JOp61>JE44dLIXGURM8EjCJZCeuBW8uc;v3F4jQIqbcwea~ za5-M7J({whNq?_*v|YmB(Xf$=xV4{qfujXeM?eiodH_XF#j||Nc-UA3?VbJ(O-b1mDXJAad@XmMR1nhL}SUU_>|qrPk8B&(@{&lHch@+O}c(%@&nmz7%X=pP>npS{iqrRb-diSyqq zb0#nNQK{`_`(a*cV>kQ#9$kdrG4;;mmp*Y6)gk?shQXqGQU6BS~N*kd^a(%F1ARVaf!9$B^Io zQZzO`koOrjfE$ewd3?GCU?J_{2ng3l;zu1Vh&-zjvI3P+X)lX=xqdUDIAN5?(=B;f zP5|uGufVN8dAwa0sgrANk4_IlB4;SY&OhxheI2=uV&Kk{tpgBzmWb_8&d7t#<9`nG z+|Vvo?<{jhU!GN9ev;ckGJM! z>5G{HE*Aji0joO+{ksTqpYXc+yimS+RCZ!hJ9Yl2M^BtydQM^z(UEC22v@ASlUes<2O}gi3%~DhK4hL&(Z__y(S>n6jaqC5O6_1jlCcPS{0@|Q?(%o z`xFODvxcBnpt9VWIfDG8guw9PKhJLZ*Ght%m^R))#@UQlt*GA+Aqj-Rj~Fl`9Ok;Y zgs0GQoh2=e3Df48_G>p!>$W7wgM$8N{Q^V_Hi#oO2!%gm(?SgV7U~)h4RbQy>iiLp z?By#;Fua9YMmX8Es1NTX03tpPC8!r}dczz^0PZls(wOSkTe|hOmBMvQZ!N&CRx58$ z693rl8(xBFH;m|cXQq~M**_XEXc$^Po?$IADTmFUK#j1cdRrj7{?(1w;1!Bzp%r~Z zQ97fJUhl--ltd3|9#}q&1U~4`M1%?*LNzA(vD+6V6EObw+A?S47s4VToyY%~aA8a1 z!=)_Q4d+4ZEv;LeyLoVy|183J7oe{t7k-`d8#^kx9YedamstX4jjUk8g*bWr_S?T( z4ZPWQADqompHG>cU&$UNAAofE`Xr&0kG^c!elAK0z#|wLTG(|TRH{YwQ>K;7#N zhKfSVuSi@A%NVOpIwl&bo)##0C4UcSrep#Du+K6T2A_>c>A-D^8-YR>FBK4)djIVyWM6dkK^L5nNj4`d8I1k1`NKlGCXOD6ETB^sEGh^ZQFB}ud9R+Fps?MX_Aw2 z`KpU72rZY(d+v%#t6_7w!A1xVdvE=@np%~xhrKvdYReIl-RX@xRgGHF6be3AYHsm#}d`gO)yq3@&g z$j5n}l0EhHF^tk7p?v5P^oiQ!wL3Qnvw@;C9sX=xKOs(IeYpNq+A!dhtg{EJvI)JN zk5uzE?wVY?hQ2Nx`V$u`rur;|ozBAf{Arwq<`tdN!2*a)pv5z`=%26r0-%tLBpF_@ zGG`MX_;X`lMFJg%NrE=ewnT@oiIlTj-_+7qqecVFRl0H*cqqtQgg<#TN&7#}yYyP+ zu406fjeeF$X86<<&q?(((WzbF_WmA4-=~>e7Y@f!6^DAgQcZsxMt&@P#3*$u!n@^jKi*9D4t8Rx~+9tn0LxX37#Lah0;v~?E)KbZS$guk{V&NJR>e;qz; zn&i+k@jgLBDDi`Uy&&hP!cE{8_JG?aR9z>5{Nb?q%Ney`ej9_+$$-H1cbDJ)z&w8; z1)vyKjl#m%2(7V4Nq{X~95$kg&N?zTp86RMY>g*7NV0Kfa+Gt?-O7~3=8JGi(Vnr6 z)`sYkstRNDvLy`>ZAT;ghk%l{H%?aX4Qr?4b7b1WV&11DE-4MGZ=37-%5oIM1*V4Rp$M@pba-6i&Y)fWB6mzjIz6jT2paWvoB*Z zbG2?MSrGp2uxXkAL zfS=sF)||#-+XuN#?$!s?+|hIq#6j>b%Ucd%>e5%0&y}zoHTb@PLYip-RTrb=lXLQz%6J|3Hm&#K=T5D%!ga@?3Kc!Km{GMW&K`Q_~fo9>UTD-Df@DDHh&g2excd z^$;;27K!v})4EzJ)R@zY_Tr{n*IkBfz_KbpR6i8$617Wh><)kO~z`HbrJbBbQ?44V8)^ah=Uce(v zmMTu#6G43t(3x|l=w6ZL3xSL%SxJG#9njxu{2SVIIk~r z9$#fZw7!`N2SrTRSC<;4DRH+v*~iaWM8%x@IGqR89ymiXFp z${SVkgi?a8KE3&t^F2UEeqKv=x-*a6Mr+^P$yDLmfK&d@Q+8yx=(0c38^E49K{8C# zwa2P4nTM`D2V7fy0wGVsO z=q^{dDVG*MbYJ<(z$j3V@6G&%VDKlHVcw(nVpex@fdy0s6Pb<=W#CAtRsr+{vSAqA`Keprb-OFxK zWdZ5_$*Irs;~>0^R_hvT9Xj8=+Z=~Q8nxXq=;|HsF3)FyR8yh4ffBUKQC!y;^ zbw+!0ompbu?14Onx^sR%6FrSzGxqEt2c9*7!o)ZO?#BjiG+PPadnT72!iUa|oUsYh zojut&tm!LE=-k_DA0}D5t14`fypF92*57H$%EGjSFAvZK73BMPtq+}(^nmr8kCIZ^PqyCwUPl>S*GjB=#R~QyCM9U#pG4_gaB}P z%mY;zm*5wWg%{T6`eP^v_MV>Bt1l{#Jo-sjd`F>kD%C(D)3T0DGao!+og?Fnj#$^! zw|&E!ex6);WAV55#FBTiJwCJ%P|S3v)Z5LnjIw$an^4oI_3P;`y#9Cyo{SV35EbYG z!>P{(Obz$C(%wd$N-SYKm~S_~7%bgQyp^?GT>#vXi49$d1C6%wTh!9 zPhK5Xp?5OLh5*cl&3LZ9^ydr1{8&tt&0conx%BJHCT7>pSWPbeY&x}EeBxG`XBqI~ zZOL6a&@wqtRM#Sv&HhwOIU(JgJ1$c7N~YYpnO0DPu&1%aqLz7TjR*j~w!ApgND;i| zzl`qj1Mk2z=MkK$X}4*57@Q*>%6$C+NP+TKESd zDsb7kEaev7GGXC*0ACoo^}Q$jp;C>b7vk$G1-uKGD)!?JE|1G@BfVRX^6pDEW=(F; zv4Y>s;lcNx;fuHp#Eg>Sa*c!zS=_a3?ERFQt@s>E44lP#y*?1Sz*kvCUck`655}g> zU!Tdir}@r+YrHnsikwAL;c6g%(0|pul_%}QFw#7EW7Ryu zYC*sdmZto5lNOa1IgLos?97@l@bWTsX0&FVSF%3Kum-u}a|IGGtyN+MdH0Y!*7@rb z{Zcs%sRDoa@ZRu8zOYqS2JfD9q?_0aaDARFuLP)c5AY?d0<6;v-d=w=kI#AIMu8o$ zow2S%bc{WISlFVV0+w^vt#?Q*vf%NEP(uu`zpabh0&$Q(bPW57lsvBrjKV=a^bB^R zLOsul;D0Xcee&GPBee~V_;NH(K{4Vlwhz=?P!=dqz#MLwswvYX59Y52Z@LC=(!&XB zg_7Jz$))zwR&U7sKp-PbtPc2~VEMuDzw3GgK*-4m&{at;a#>XZ z4fc_%r`6ZZb>{4C@)e9<4ePVs@Pp3yn@MSrDOp~RaCTg@%`4-qXZ zVLbIFR(!i$*(+(DlCNNuzIiFfJ#Ky~$t-uL$-e!Tfa}E``B_P5j}T0cj$P>BUFrfVgD09kmY z?fPM4rOIu5hS3x$jcp)JO}w7GmWwF5e2v0e{dSJOD>NCyyWW)3i*-KnxmXv8ob7ks z@IPNXkFNXNReD+IqtiD2c@YA?uBMA!mb$!PMnaiWYHspC`C_9mliww?1mZc)Q3G;- z+=oFcM7nJsQ*S4(@rag2_if$zQZ0@s2#AX~D5lvn%^KaPO{CU?>@r+zlazkPL4#>( zYHD(fo*d49+rU4jCs~$KNN&EzcYQAbnTTEcZkI`>%8V@0_lkTtgoCf-as|SGRbVHX zR&0R+R+`6wqu(#3LZX%q{y5EO*I6{JEh17G!yRY7dsk9Iqs zT;{J@dK6dwOsNoLwra6rRO69kyWC}?t~LLF#LdmkvU2>5z_@+6MJO$4NHDK_3gp3= znB&oQ2-c3Hcg5Mw)J4sW*0QHZZ(?GsNI$ca{1$UG0?Kl5?DP3^(|b|UJkP|o8TJTY znujyd$_CHZgqOd+ma$+7{{XCf9B3H?D>k<_PFDGsJGl|Jg_LIYfZ|n8Zs3eBAZ8Es z?2LpOGjeiR&LtDDSPOQO&a|#~xR3IKD=RBq@s&loYa(OG_N$26bf?yT+b2ODpR$7V z){BIRKm_0P?syPi(fb8W$?@B=b=ORLG5&9LZH;8-;ZSxqv)E4{ zI63i6UX{l^anO$}g-Pwn`I8k62X5k<`G0_3)VAfV{vexPeqfnwz=;_&i*-qizjkjh zWD16!pdvTw>&1^-UeA$yDLCz~c)2>iV3pc8Hat8$Geb`r!fRYF$j_gUPH6gMC2)AcP+^@@-L#EO5J^Z63ObGk#9a_;V!%y z_v1+JY#B+&$dj{=03Mttd|tE$_m5E%v7}@)XrrW#h+%jVt^DujLaLp<*yLAs7qf7c zW3lGu5ACntHB5I#@2!tlu84198{NlecG6cEL~iCDb80q%G{n*3Kk)sATFscDBSgev z<~6^EyO(52Z+(5eSM=p0tya7NY;SpS2tXJYTAWI}8{IVOjin3?rq;$v<0)6&8;p74 zPw=QoLm;VnMxk~Y(!=_b8=FW&sO8%i}dZV-5)RG&-aI9EazBbVlgZU|%AIMUH<{8DKiIHQAo*;+bVWg9SJdv@xuaX?W@`(5V)HM8 zCD-%ZD#exG9t8z;Dm+B({%XDt<%ZjrN&4lD?@bQw?(g0W+?(vH>~*ZIt*No3r>Blk z#I}BQ*BlnW8b3w_YejFO_xJZhM<7d!i^MyS01^_CVs9rCKiu8c_~o2jBmk=iVDAF7 zfncPbOt3Lugtg=BA6vec#k$zcs=7L{-HX3-qB#?Iw?k_NiAl1_UdEbue{O#=RyA&K zH(C^Zr?~lS>0;~BZM*Fbg}J3xXXRZ`DD{{2vYi`=#Sn8q;J7?o->+Ya$Kj~RU&JIC zxZ523AXr}Mga&JMX5t(TgpioiuKArKA889KSkP|frT$E$3a_*xm1Xhj?M${O2X@c- zr+<^V)}@e|NJJ&cKj4YyG$xDf8jgc^(KpK{3)07^V=IJjR+5C+T2YKp7>Z60hXBoNlV&N8K6! z8?;sZzU}r(EUe|{rl?OPMtR4a4qr0#t|eo(Cv$QX3r7sXlsTN9WY0^VD$Q44E6I`B zliDF1`0>O^u)qtXPRJkjl4Xb>C2@s;cD?HHhLcS6Ed<$^7ILd8%MMgYh z(Gu|u;(lkkqi3{nkhGsc0OBOm}ZDW~b<45yY2n zA#>AD$Cxf`w`8gYi3L~w_jIOpOJhzos%|y<>;mAMNt|PjWD)XDRwW+VMO?3zC)2q& z-W$3^BF}W)j<(HOPkX|kn<%_oCdu0=a^A!jNu^8Noz3^o|VCIoTT&&8( z<|tv8>c7X{dpV7bkdHWQMuY$`96Bh&m9G_$E5AZ^A}(p4tI~5 zFUP*G=;|I_(WrC@`>yC%Tua=sxZtNnB{hadvS~%d*AXbYF%ySa_@K!XBNnTkLl@g3 zb~xn64*l`Y;TCkI|L}Jvt7A4XacnA|Be^Ut9iXYr}e z1RDNCt=k=GH{;URK^|FHRdcZK5Wf|wujHIOd$BQ#WMePa^2?U*lwWEZl;Dl$e5x7A z5Ggf!urZ0P!D#E0us3Vb?_Hd3sW>`tv#0inh>Lq|PQ8RoKG#7fC)0)V7a5LCPdD<6 z(fe4qr(GW>HVlQ*M|2w#e|Pq;rGFp|5VHDWnTm)p`Hy3&%xPjm%rXuqpuPAk>Rtln zl;={i$NDT{c1S~}xQdixXb@W)`l~DU**G~B3^#juF*~cNn9Rb$EjCZQbK%PD|7(dd zf_lcuB^JTqVfVgy1x`>-#=uO?Q4ZuBhmoyfZtGyw$c$H^-nlr9Y<)pyB}^l;foyCW zyGP>t8q6!a>_q7uL9%9U_EHa9S6BI%ocuI0K*Z}JrSF@>o_g+&j1lj6>S65QDaC^m9M8W?#w;@jlit0{856drYQq+r zTW`_za6cOEd6z|a-Z*x?hVaRwzA}W=1L?3Y3R^J2M9OFAU{Kk_*%1z&>)OOJhFZqm zLKEGN?ucxT^MPOnmC5#X)t#Z6qaF>0y1r@Ttm>3Apf!yM?k6m%TdiVb);u^kVCxd5 z(&e&Cl{}Vu$LidZg(roSJeB6pT|M`viS~{<)sT!bYyVz|{MG+d=?lG>v-~AQuw`i% z!sNSI$B-l;l5?Tk^3AnbXksnt@Pg;_oc3JivNe@LbT5)5i8!G8qM1oeOr6?I!LdQf zV!c)Ts18KkqNb>+COQ?t$bTfaS-)07MH86>p2 z`PExZ&=`6lV%2%S7pZsO4qCV50m%r8c^Ow>Zv|CUZNn^_#Us@KJz}n8*<1n<mrfRW=YF2=!`U303!H~*B+_ov5WVPxa5l(Iqh#INpF$H(vu|bM$bv&c3jf~Q_iE&AIzpb&)!L6|SpI4p z)Q{$gG$^4fn?5SXj$OujWW!HCvak$iQl`dEoBD-n$B3_B;>lmy;H+4*v&@#$3aUOVX7H#WOZ9gAj*W&&r-}gcXcz#MsgM7Wy&to$ z=S$tru`xcb&;EyK6{UCT=UR7iaw3_cE~F=%pt^#y7A*UAR6HBnZCteDf!#8^?32rJ z7*+@R<^^5xivYe|Rc%8}rf{VEXN7<9gZbPx_8nj7Fn-FI(gh@_RQvClI z8G4NVa>6o5>?wFQ6WY$&1fLJV{P+Bd;Z233Z&|nekx5JAYl9nA@?<@clN;)L@+z;O zOfb3ceJ6lyTQbN z&`fqdncQr`gZo-*U1tmHT^0G zSrdfLR|i&96}_hmRHkC&KdX;hq&WXJ%;vQ=mB-v03uZ*30 zq$US~;s!YJGw_=b890Et!yF8y%zi64Hux`xQ|39+di1YOBK~>Jq+?ING^i2ucn;p! zu1AUZ{f)hbVg$`M!I}zv6h!4D`n#%41Pv`MQ)o_CX2+Mtdhf#$;@t$)kjm$FByPsk z@7y#qKml{__ccJ3KlH$ab4(lc;nI_o97K)GFt4R&n!h3~r9)7BXk1fVEuuaGk$)CY zbhVygrFgc$*q)5Jw_npi1AlJLOo|B>-!(EiIx)WTt}dx_^08;5wsfkKEk=T$Ki@3= z!vZYZSFqJ>VI|vjbkb?Y^yARiyfd&5=h{|(ez1U0%!CDpz0hL{ZaP0GThuV0uHS5G zYSKAvVNRzeE_M#O@cXzhFfafs9V_gNL3Pm4(yqrZMgPL|dTE=7U?&3l8#+V>!NDCt zO{-hOCp0S)0jO#P&f1UCwMm-QwD5_d;E7`ObM^At9E# zOfU7zI-LkXd||T$1w5iL44@Nlk?q=-?IXW(Fb>@$ZY!>T{jUIpwMX)ngANQ8*DQ0o zGv0ElZp7!?hP96OIeAlG8cDm2UvBQjIv7i=IV4W0A4BU5OifMA&12BM3o7^jJyR{w zQfR)E){p>4 zHC0txQJYSz^Zwys2jNGP>M~mCy_t1#R^DVUnP8T}+Jvo5n>r`MhTKit%*;V!lM6`> zM!)y(Uk<(v{=s2o!H`D+&YprDu1eH{WZmf>268x`hmRh`$HhVKN5{`I#g2}QK-OP{ z=g%DZG~o!pU60JwMp{EF|D~6YH+yZIwY``K_6#l1`0fj7l6LW3x;Exvo1z3Vj-lb? zAc>n!4hM^+K>G=#{`7^p9Idy%SJAVuC(GgLW9xRH$EuoApH=9of>T{wT>NfQI=jWY zQi+r>efjd6>k2Z*uO3(R4>T;_1MfPe)?D=ks z2Avew(!${>uW3_}Cl~2;f_NU|j8M2-W@aXU;v!Z{-L)S-eiYo9(BR^^#O~~R&hDm{ z>vvX!A`bTUP|fd#@6qhOeKK9DMXhA#Vy6j)wSHVDqkcDLdFh|)AQQWWxuvD$yLZv^ zS!Ybaah{dgpcg#p*dR3R-`g>hq`GO__i;+jd3EH?Lf+U~PZ`g1=Xo}82o5;^>$)7L zk;o@%$l2jxxR}zXf~vBz$H!mgvbzO{-*N>N8`iGRG;&UVI3SbTT}#stE-y=(5(OwT zVA#TPm+GpsKCvcB3U($mokQbb$M*)yq_pS_?i%l|D9gvCb>ADT*g5vGFnkFoSl*m& z&@=9rp6mB+*LS+y{xfn4(fQ7MK%NDhjU}UcJ8pcYJsIaS&VQy|- z+IVm>s3mPKo`|OQ*qC6R9hsF+Ns;V~i+lL+3HQeeq0c4t;mgpEj~<5M-j=dXM@m|2 zYsaumLLoajlV#Fmp}$XIV!wMfXzUzPy{_yb74B}Y-1fXUhX)%k9}=uiD|yuTox#<< z`|av*!{IE#R7pum-P6_5^4EsD%K{4SiB@2~<2YWSfGu*5Eex}a6smCi} zzr*$MW(TJqy~pAaGNrBVqMqR4V!kSsnpIl+HSYGwT)qg1q`7rH1#!`CfDRIK8#E^QI9hljnZ$*KbBex! z+OE>wL9Ya~FlZSVWV{cOrZnjL#_MTSor4Y+31(CS72^v{6VwKaI&i(D;bfJ=!orA5H9Fdu zE5N}fvPyeHVk}{vnxU>iQ*vOu^h|R#Mv<|;*LgZQuD*K-@%MYWwVgOIE_t;HF_$a5 zHg!?sbuQ*B&WP97>yD{eh5>0wdqd{ChgLNnlDCBg%>#Q~MYybq3!&9fR-zVBi)^x-`M8TuQI zIr(fFmKukIn@TZm$?%6qv3yVwDUhh4N-O@H2(s9thO#nEI*Z@kC;y;hn(-o$xw{~G zxP3g2y%LW%XX0L@sy1$Hro;_4{*hFsRu^&HhxWX(%Amg*qUg*FjiYOAW?v34%Ot#crSC-(fhucJ)Qu}wcQF>&*zdz_ij zDPhSL%IEku=Te2^OJ01}%h3Z=ddBOwZ~0t?aw#*|W%DsN{7{pNFqMF9As`1W2~ohjUJNyg-`dl}2BZUUXL zlWx&=nsiYc@|~QJa;rhr{`mWsCSlUw1v=s^l^+r6Qj$p$9i|F+@ ztol9H_7Au46ZbcWvoO|ebW*r3xzpQ^MO9VR(t#Xg!7lTe*a}x!J3GVCQw{ASn^yiS zSkCYPN8D4ERf`)}o&5%{hduH!_1@V3H$7r^dN6H*LZTj7*G_tJV!d^v`fywH8deCz zWkJLzE8pFw?U9!?#p&7deN)<2F{Ryxf)Ls631@cC`sT~v*nIK#HqM(zT`E?J3xrrQ zZR19l^J)?a4~bFJL@jEbu@XSJ7o(N3&-6(4s{6HhV`ZFVuQqsN6g`TA1_Th@6wKk6 zWXa33I{=v5y>yXwbfg_>BGWJ5e=#yKVF_PkrHmg^L)H9nTdUXRkr6{2pFZkq5_U1e zs*N^K%S@DC(v9gx1q&!baZu1vTxL0)XluX79CeM9XBJkvH}NOMa0$;PZ7Om!xnz0l{C_>+Aaz1 zb+lAeboBJS_ek`N@gJ`nem(njiS}Ia)_-x9-MJfivC^$FYkJzh1?5v)7zhXm0BTy; zlRUo|>2MiRy9m&VFDcW`bb#nvs_|4IWmE^SyHTR_)2FxW_rme zq<1Iig|>D)uhF;1kfY&zkFDm*CY{|pBQ@!|2*sx%x|?Q#wbCauGbyM&_xG#cud4~w z?gxFmbXnM!Dz;-r#vPnL0QC{6rOCK7J*@{zDPsZCz%#^AQ1-K}0-v<@+8N5@M$^e{ zLPYd(wUeFQbiG^Gq|@C;7py>GAPP|g*u=>cv(>@fzUH*EGSA&bAv#6HypdKzQ$!s>o5 zH)LKKNJ&X?S^70xYI>hI7{m%A_;O5P`^$i~9dBKdxnk?wc0qh(L}wJsC^B1KmA_mU zPHc75@EI@Cjma0SmLENaaFL~?y7o91uCCP8C_Jx)-viy} z^Yj`^bRK8j1)sb77!aNpBk{X_u8{Khrrn4(nX%$E9?U~L9Ryta80>fr2fA`+D!dU+ zVB#|9UPQqXk@C!u7(J?A&JXPvM<(uM+8UymJDCZ&ATgb5BG~jOuEf``U*p;znPR5e z{)~-@@bN|QJT*}bLmnrHA0?MLG1h&9?&yI}KouZdlynp?u)(m(@ua%@Y!4w0!ix`A zVon@SMn`Mf`kLM@dq3)Zc+@{*acTD~$niT5zoWJF@}F{ZDx8tF_K-vEG}`R>X?Eq- z;@I=c0FjA*FPtZBt#Vo8n|~TP(EGtJuKFLg@BV1Y8OFl#6*EVWzE3h?CA$A2y1M%D zjOLL`Ny$mgMz1RKUXLh1T%dzWUub*2r=8ckO#^daB+VQzMxH9LXVlH>ZLzj)9^|cH z7?^+9dp&0O6@0*vPrzl%i67JXMmSOB5!LO??6{`kC=xZ_FR0CC30uXblJK|3b&VHPO z!((87`&XLH(;&@gvtj$*m6Pf+w)4Hcz2n{a43V7N;Yc9?fq#d*VD~=uq#UY*vrgB?)i;T*5Z4|8*K-JeDDi$?(>7ZJ%L^c5y z&`G#ch=fX?ERX%_=ol+C9UCbB^_su0w>L$~dvidk`D8@{Q9v*r;b|mrmlq zcCqgAKPdn~uZ^`2ghdqi65%Vf*n3fQWDOV_^1iR5RzzYejm-PlA{RdJ;tr z_x6;@gxU_P>n~33b{;w*PD8iwdqwZFk{9Z$wqT+q2$b737vLkB_2W#vC_3dRd1R;2FtbDs(jktRT14|!wpV;yQ77NnKq_-G)Twe@kbQ<20`L4p7AwFTsQ;d<5gAD9 z9@6^m80Q*lvNAk8V(q5wq6FJ~wtLRj^(jR{ByLXJHtv2;f!PxGV*SZaQ}s3DRMj&h zl;_?+oeKQ)ibRAu`~5=kWGiG2B;hRbP-gHL{Gx;y>-*s2Ax}Fy?S{)2I4!7y@KVZX z^$qE&F8juOPqq44=!d>3q0(+0j8l{~QDtG%en~3tw)$#G17lr-%q~Wo^Ma_b?^{@} zo(ts-uwN0coii~Jl9`ms&rGLEMHB@8LL19O&27Qpd(6rQzE{+eCd;j_Clddz!!nSa z{bO)YOGPFB*W9s>bg2i&PM?OWvEg4jjMTU8!n2VNEq}|+JA#9Q1*UXY(0w+ShusF7 z7jGD!D)qSS+cBI>FQ~AvCfrx3z6;_7^F4qrOeH((^sVCj0HYlSa8|M|=!rnrlv-(p z+Fr7Ux>#~A*mXpSheCIn_D2nIFDGl4gcE157&DH+?d=hZ*a`dI7r13Fy?G@GU46|L zxJ{S7^T#fg|3-@qnL-PU`b`|ruGu-ANv;d1kr^m#>dA$+Z$6cAQ`nKOGcyX4`(79rafzPL2J{g>3B$)3D+;z%;PE8 z!H1U1+WlqZKzlCMR}D^zH*}BkI?}%sS_iuVOsz)Do;3iHdTpM2?_cS?S#rW>tq-Gz zV@^nP)6SyXt~bIqhztmXW%zc(K!Y=gT0-H=&4*pbZ;>Me0kXGEzc8uamY*vdw-;_? z@W~v=TNqXrrRDCrGi*lI_;&6Ei^T5S4PPHu4W+S`90q<5M7+5Yc)o;Cc#fHPm7&kggHDp3f06P!=rAA6)s zrV}6Nd?yq6NE?056nUX_C>+ZfylG>6+TL@G{m!(Nu_Bznni0&OW!Ax+cyV&6(ivY^ z(6AXiBXf?>E@3bI2l7MvG5Pg^I*Y0t4j&XXcP876e#L;{pl(YSPfK1MQ!=5f)Q;p9P|blZ z-rA@eE6=fY$4MeuqRC@!9q6WMdo_7oM5r{nFq?~uV~LB*;TiAD)t2QfLN4I52v(j- zW@2YI6)k==4LFSQc-_pz3_E|-@n~d;(LWQDPv4V>TZwgJMY&arpI}74DkTzucF+r_ zn-Mf8B)N8M;a+`l+~J@V+c4c!k?S|xG}0&<3o))*Sc%RlbVMcb(++BP5r#*DvX@j z|2oxnh^LK-(J+53NfPA^nYt<%8WypPHTL6L!Qk5qCRcah@oX}@$-a6k-!y7Fkf35w zZ`|$74JtG-nV#O`5&$Q%L}8-}ltT7Xu$mAT@nmp3rmdmR?_exASiQ(z#CYXj`{!Ks zM#G||m`{&E0vZwYs;;edns9Zf=Tac!4h&3})U^i9c64GQC>>NFVMvL}&B8aIc%Py@ z<07XVuBw2~A_)XrU*m#F?x*q}nGAbHv@C@EsegLVgOdv-#p^h+d&bZWdeP`vjzgS) zo{aysrq#`yTnlh`czHlVk!3hOYT8jGv8S-t)3ka^LhVBI-S*$Zup<;xE#xuJg1WtM z;`b8d!)dS=pqIi_AgP-WlV|PV&{YcAnyTXm?C^=Xy6?Fy_5W4cRmMf#wChDtWTiwJ z38j`&8flbVdXW&6kZycPmqrDYa0Ql@Ub>{aM38Qf4(aYjIJ3`tzMQY``Sjo4?#%4W zJ$>KTb^Y%xU78siTPi8>2WEDcUYi^@KIA=I&rmKN$wV_TzOLldY~+kq>au$G?sTg% z=%4{vlNJ)%C>H<@(+CG}-B7Kc**|ISP`J3f^m=&0SbPLb13W<ksW(Q+&QP2(>Bcu~?!W0w~WMwJzkRFm6@;eGReiEi& zRUd2If5XJDV`F2ZLhmsjvZtUwn_;< zUU5ry@~+li+XrFIe&Dy9KVga!oAz64KeO4+jLA*v6C=9^@ZQc#mvVhEwR=RYQRLG{p?SS_>|s!1dbsO;*k_%kcJY#%7^eoa9$qQq@I7-pN3kR6TGr zP#SsVz~I9qMs2=F@%|QAz+Zt1jZI$QpxKw_U}YgEOB}G`n!H;L;5g`vA|2L&>gsAN zI`or$n&o3GZHZD4j|R{y9+M7l1L1AH`ooZc#p!@dJ!+&GQ~E?_A6UR3&Sj9Vs)d7Un~&mh_MUII5{@}$9pyMnvB z`@PA_{YY{BCaQQ%DQot`vBcBaPfs0Ti)v6kc>!lq16SVb)k~JlL9oACS^OBQGkyy& z-8Qh$BuR&crI@bE6fi!jtC1tcpU-uBiO$V{Ngo*jyi3dzb$3@Jvtaag@pjz-(HRW` z!^uTV@Z^4cGdSPJ>83vUuvq_zSr(knR2$y^u<{4zK9%c@!4dosgEcryUn~~+Vhbc_ z;^Q@n%HE@${j)e74MOA|CB}!v9Lk%N1v-D9`ezB5Kj_+7q@)*{vnz6ROETzB(13Ij zq6D1CEFN!-w5(1B|K|_Yi2bu zPpAL1X-G;yNIR1~xA9n%(gNR!xdfKJ;6Q>A#a(Z^nO`3BfZhk*VyF8Isr5stHDjgo z&z_6T(`s(P(8nn2BNcE=Dsi~4o#HYHll9rJ&z0)7`Tj3#ZyB9)yq@Ey-twjTazC4I zK+F-Tf(~aJ@9%G-#SHW92x@EQCcY|C;j!sy z2_YdN+L)7;qa*u14?1&v4hya*J$3ayuw1|uR5JO+#M}i#MTKaCi+weJHi#UM*UhlQ z)8vfg1rpJJ)rtZwcE;CdP?CuH0}7de0aer=&z7>(+eYQ|9;@HfER~f*WCy!-Co6X< z7LOPY`UeJz9cQ=VikPU&%FCme^?j5UvRR2Gz$NL}qw0IqdeMyfbRj__@Y6^-Eh>&j zSOr=P>?Yvl%=iQPfAF8Y@q2O+3O!;{IeV`rOv1%$zJLEZzo3`4Xeo7J3wBk{HBHI2 z>iT+buwwJSZnhE_{ry|FIVmGbIj?O1IJvQ7iYDHIP6uj{gkl!OJvs`G)kdWZjFmWS;7oK@A@ z!kVVzfN*@D4T!#$^`sT~RJyIZ%^1N%Yu1{_o%e9P&ew8FUvfEA))p5R+g0~lly)%L z)Hah!#(taVysk=5hjVhrzHS~>r;L!*C8COg=m(n14lP}1`^uF9#%uun$YxdAZr<$3 z$i!oSr6z^voJf>RZgmPJgp!Pq3r2Pa_ih{|iMhL0Uwk?U)G$N}fPK0wP0z*6?YKQW zJ;PAmMH|Ey;FT6Sr%R5AVzA(>_HGE)T?P?}Z88Japq;(FYxQe6y9#t|Zc$Op_bxQj z8*FwHHLl8M4DMD|u3Qp(l^!Y$kejR)~`kp~K^H2|d$d}~&fPnwt%$G#W4}n5b z`Pqc&(E2a+_1({UT+v|Oj+xDk>fnbXe<@U_PN4vBMBBiCE^*&u6rkRo<#rPTbgbqA z-VgKX!lm9PIeNSTHr9j{*I8dZeLLys#oV}97NWyOY_@jPYx$&CmmEjiiPzCXCK&s_1JOW+9t(3EJR8cPK9tV)n3Y`JRe09B-A^Epy^ zvG(=&{M+`UDDusvb0@Y3i{u)u2|WP9+8tMF?lUFLICpX(POrY7rCN2R(~;h0)la2w z?s^W)`gW)B2y7ifvnPAAKrl#^qZG(e%v+?)FMk!==26L~X z*I&fKek|{LqX#lRY6}E8%O_No21ZAt-3CVeisV@b*m7NFRAKifgfuvS6qU`{(uO_j zeVe$SIX|70m#|QM2ejqzC^wG4Uim&$GFjar&z=&UFWvUO-;oU zOlsN?$n{WE-i}n6$v+-LqGp&Z#k7ItCoXt#lxT;)|Ou7_(sFZ(r@5?k`i{c7|26Xp1wd(b-|hQ4og zR*A2=d~nvA_#$HJyQDJQ#HywznxK>5Tz@?!i%)@?$AS!KvaP;hTF5@JTWuE>p-M@{ zuprS+?caX$*CpCoHfG@Fv{Cb5SsP=FD?@wcySA3R&$VRfd;0MVy3pYS*1iP<K3^@(d4T_{^1HEXc;iOM>Z8{bDC^D zTCG4TIv_Zvc_$duyyy7vS*3`bu`#1ei1ElInAjj>#4B*Q{EXu*mg(r$?m`zJO&{QZ z6i)>A<3TfDR(m*Z3>Cl+2-| z#KU$Ot+N(a3nst@k6r{!TNw0{kX@@Ry!3ZxWY*WNhOi|?({C-6OoO2Bfg4)EP+Aj>GRnOrNzrvXxV3*k2ee&O*cCm z{HjN6rc2C~EiG62`|*o@zq<8g8lW|fj&i8UIC;^32T7xZ0{r%Q{v&L)boxNxqYvx; zi_SOX^TvzQx}n>T&(e5wdNv|t(1VC& z4IK){PRV1&xx12QcmvLkP8itLOvy@qaiSCOQ;o=Ql>eRAwF@MX1Gv1-YgJq8;8VZ$ zwS@>-!UMzLv`=z0iH&CKHND1&@``M;DneSJ*q-I_@#^3ZOeaS!JxU?T_t-fp>k1~y z-+M3ZCC^j(VxRZ_mTXbqT+1#B7s32}`ap`^C^Jk<>lHs%-SZaHLe@O`6~=Q2ga*&x&&RJGY#u_%f!VjfIyx7 zJhE;1n#w22sU1za`~-ko{d1fni&N`IyXHN8oBQiY_j}|6iKz{G*6}#m9_37LzkK=f z&h4Xj5sU-Q3vGmAZc`Y(z_vgpsgvK~!i~S~h5xy?!S$%3O#|ORYG@FGqUR%Z5u3x+&HNAKKlXrz#4>)0fKt5R?Scm_+Zu5 zQNM)q1{rB4@xB$Fl|-F&zdJ2pSmgCBOilIKnkWZ@)2)_?B&*}Vz4|q9i|ma3GnA>C zz>Kn>qxFz$qP!ZYlzHNv$YihG7wdRgY<+*p4=WI5Ud}GMce+2TNwgkUv0c7-6{TTe(DW4*dIuq0b~W(LKYW4dOeXL_5rvjOH0dFuWacz4u%esMzZX$ zKa*oAZGw?J9N}Q4@t-!IIfEY@xodB1fGwAx{<0_ggv-}v3sttU6HI3vka!6Q1xn0` z@%z2Ky>LbD&KITn1z37}MTHWHeb0g7K@uUu8O7aE3szpOAFw3=YRVnI+8yW%Akrif zY1E~i;ATK-^aL+Ok;$w)2}r)CnU{7{i2rsOTd~bON(V@eit8sA%$VCBQcqdpM%N?y zb3!lB{no`l`2c1k{X9Iy8dav-*oA&7c-86j`+rHETKqsSORURRO=R&`*|8`-RGS2j zk5^6s7a8Pe?VI!onodAis2D%5=BA=cNQ>M^=Q2%NVaxN%m;a^S_UF0zHY3dj$KQd< z7O+eCAPrs}%c(J-w#Lkg@`jmIO;*Dl|G_LRezl&IN^r+Av(wJU2~&Zr3R>n_xBxvF zf&7OYq-!wI??UdUu_x%u>Owf2)u&ay$<*e^?d#cC9 z)_inIPoSST^_dF?GMP&np;kM=Js)N~@*FO;@l zx6Jz2DIKFw-mV6^R~c_j6(&w!4Ga|()5sL_xMIoK-x~2HM;Sy^MbK#LE!Va}d$4P= zgxww3i@diJw|W*yO7v2>PF_m+&#%~TH#&$jCWS(o3S5A;r0>u}H>GPdp5m;AT6p2VsqGrB zcqsHqz=>L*VxJOT{~8 zl0X0f9?PQ#dX@kQjJ^r6lH+*8Isp7D@yEE9ix6oR0-(V6-_- z8GkYW3FB6wPDoI9{vIyG{E_x!RjdFnL(@|aNJ=MQFZP35MO^A3MB}#Rcu6KbK=N6x zL!`~`f@?P0CJ_{p(RP&#GQ@o!z5~(d!KyD<^p}O#uR;7oDL_;Bjf7{_9zr1GTp%ag zHbi<0C@?fvi-DGs0}ZkvcSwpMh(2WFW2Fl~x+o4H?IJYx6(15Dz#RkXw%<(u5F+gg zjvy)2GzvH=Zv{fIDiAwQxZQ!mEHKfcLas)RB0C-kcwgor+zM~{)xpU-*|Fjn&xl^S z4K(9IkY77rVCP*4OU|Y5$;=^lw3A&HT$(FXV}rfRHl0yyJleC?@Spxyt~n zKVXk-j%k0{-dAf{kibSUpko=^Sh-_eAa()aP}DxtI!jL8M+Um%JTrNEV(0=ig<6x+q!W;gs?Vk@zkiLjre{_~j?D`m=6 z`GN@YRfR)d9#Gt%=nk;v9D^jdIiwjTSk}y~&Xs!`eTX{{>8LxvE_(b;rWT?bI8BUE z4-@4;{b-&VkGDeDA%beT&vFQ`rokZu*O&Zkyp%S$VEYXwkS3m5z}~D|(l4HcobfK! zq*kFLDv)8;(P|)0)_)5WH_R%!3dYOf`(6)7c_0y>m*IFLyMJ`DLTu#h?8W~5(S>DH zuP?q2V)H@E-K8H?c9p1W?q>Eau77}oGR4TKa?_NA+>e7*`v`sS7I@iwb$Zz*K% z^g?js6TSniVu$kh3eu zRv1~#R)(~;h&V1Ul%+q!GRB70HYM1o!ZzfKwtVPwe3yvm$RxjD{2~3=snDAyWSz}$ zb?K<5UHBk5zvNm+OS&IE;ZNA2si4E_Zi>*G8g6emob&K_p&4Zn6)g-4kl0_+q0c3w zOXN7A((r(_EvW{t?k8**EqiwQaZ4$U;Lbg8; zVri5pV*9|)1bQE>s{9F&{dDCRr*-kQ*-w~CNK{$3N|qav4Up$RYcJGuqY{;vj9MLSovD*!Q404mt~g=J<>; zq=b>EpaAL6_jnb458m0){e*d$vDk}wk;TUH%s=hF`4c8SmHtHshqYFB3MtMRU@j``K_|Q{`7$xg{7N`kX z(ztE;kQxrI8%%}i4IeKNC@Kyq1^s?Ndh|t@Bt1m|2b<~;mLiM83!U6RT*UdQgO(_f z{e*40p+!hR>-z270Eseecs!)qqo*t8h9g9p=z-{0gM{5Y=yq= z%dsMsw;f<;?av3&so)c@G;NpoQrJzw5G+W&!^Us?vtz77hwFpQnss zN=}LRkx_sx7(XAg#m`?<6@nLa@A1l8geMW`Np#>}!a1kgU}#! zXZ9RC#$?>nH$4V})3YUN%mq?h3NdVtE$+J89|zQ%nUft)Ep0C53F0+N$Jx=3>WI-k zHk83JA@CF!z3Qv;CX(@vpy=Vf1WZ#&G^F!~uN>~^C!uvw- z+airH9VcKAwcgm?;N4n)jO8LWZ^0B`wni4`0z4ZNX^%p0ll`=rdYS9}t5kposU!ao zZ|B#=tYV|keZmIO^PmC0DbQ%;^46nMzf`}DQafMvVEnskx_6;Qh z>It}h;EjEgoA(#lFQH}Dl>2;=%g;YQZ zLYp$?B&}QCb1bQV`(U=55e(F^%v!{#YW(k^QQg4n%h$ugjJx;+ZDGm1mvdo<$h%+) z_ygSh%ysQyEAfJd;$WOri(k|I!}Rl_5=X8Pik1LVfs|7(qmP3x)mFqhoTbKJib&R3 z3(SR!!Z$Q4z#2w)3oUmE&avY#>FTl|TS}oqLHSC;TT_%bT-aY7IvK#|D%VoIMi*}C z4xK#>UY6h3o{*8sy%v>lYdH2+7zb@*%}Nlsj+OL%>v9p2?n_OWsl#R+K(K}3mce0J z5|Th0dRDnPEF4uM`ZRd7br#xMH_;dSpx)14Qn~aI%^Wha52aA{8N$^IG4?VzAQ%PYD?yoPj25d*5r!?19+(hj6k#}4HA-Jd4OPlb5Qr&}qsD$)Op-1|a|w^o ztRblXmh@eZo}=$JYizL5dJ(HCJec6tPuN%Ahz5aolapKQnQDVIfPI(>YR$oBeQN4? zU(PgyRE4`Q^v59$+uB~U>PkdJjE~k1h8tUUtYNAwU6lG`>h)6(X>k16dyZgj=@JJE zj(9Yk+9usaq#vr(AOBS9#QmwaE?DQ#TdQ&85-rbhM zA^7;QdqNau>x($309~<0Cx0;+6bu-3@cXYoVF^U%f=k5c5yqUIj3m8@-X_$6f#K?C zc&=?K+fv{TF!{#X-NZ!^@@b_Ru73wUX9&z} zx!9cw2Sr6I3tJniH`u9@f{F%@QBI5Sy%rOyqs|?6vgQrgp0ep56@!;Dj1b=8!7;>x zsW*GFLDp5xWgsqbtm zY!oSZ@N`;+bqqHSbg`=w_O+BmCQom{C-#f3N()})zPs*|BtjYcTVyaAPH<`qpdy6R z{5agrwmcX*c8OfBeT74_J|xMU5}O}-;}-cJ>kW<6YdUM{A1)46R~bOVyocCfRqDs- zvS)VR$)68-9nZRwf!)Rg6WkAmQ0uw8HQsLzcbHnrKMZW`B1L1=YT^8c=NS)*VK;$F9~||yQdKeUElWncOS~GSopDq5m#*2iS6GfNrz;R@j29a zoVWkZnQg3=GE^sIki7qQW%uSrPHjZN$$jU|>8iaqhdDjhl?8&mdq$E~KktG+%KY&c z*UL(R-0w4-0K6Z=1ibiy7rgP}zkC97{G0#(^917tg3bTmJVAs0&G-L#0#ib;`D3Bi cz>% diff --git a/Chapter13/onlineStore/public/img/safe.png b/Chapter13/onlineStore/public/img/safe.png deleted file mode 100644 index 445942c707af53210931f9f4f99f6d3cb69e5d89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19240 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
w==XB0?3|p=#`o%NsudE(E-U#KS3Snw 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 o>ir+C;RN10sIS0&a;pmake(Kernel::class); - -$response = $kernel->handle( - $request = Request::capture() -)->send(); - -$kernel->terminate($request, $response); diff --git a/Chapter13/onlineStore/public/robots.txt b/Chapter13/onlineStore/public/robots.txt deleted file mode 100644 index eb05362..0000000 --- a/Chapter13/onlineStore/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: diff --git a/Chapter13/onlineStore/resources/css/app.css b/Chapter13/onlineStore/resources/css/app.css deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter13/onlineStore/resources/js/app.js b/Chapter13/onlineStore/resources/js/app.js deleted file mode 100644 index 40c55f6..0000000 --- a/Chapter13/onlineStore/resources/js/app.js +++ /dev/null @@ -1 +0,0 @@ -require('./bootstrap'); diff --git a/Chapter13/onlineStore/resources/js/bootstrap.js b/Chapter13/onlineStore/resources/js/bootstrap.js deleted file mode 100644 index 6922577..0000000 --- a/Chapter13/onlineStore/resources/js/bootstrap.js +++ /dev/null @@ -1,28 +0,0 @@ -window._ = require('lodash'); - -/** - * 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 = require('axios'); - -window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; - -/** - * 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'; - -// window.Pusher = require('pusher-js'); - -// window.Echo = new Echo({ -// broadcaster: 'pusher', -// key: process.env.MIX_PUSHER_APP_KEY, -// cluster: process.env.MIX_PUSHER_APP_CLUSTER, -// forceTLS: true -// }); diff --git a/Chapter13/onlineStore/resources/views/home/about.blade.php b/Chapter13/onlineStore/resources/views/home/about.blade.php deleted file mode 100644 index f79abf3..0000000 --- a/Chapter13/onlineStore/resources/views/home/about.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
-
-
-

{{ $viewData["description"] }}

-
-
-

{{ $viewData["author"] }}

-
-
-
-@endsection diff --git a/Chapter13/onlineStore/resources/views/home/index.blade.php b/Chapter13/onlineStore/resources/views/home/index.blade.php deleted file mode 100644 index 1affb20..0000000 --- a/Chapter13/onlineStore/resources/views/home/index.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('content') -
-
- -
-
- -
-
- -
-
-@endsection diff --git a/Chapter13/onlineStore/resources/views/layouts/app.blade.php b/Chapter13/onlineStore/resources/views/layouts/app.blade.php deleted file mode 100644 index eee7fcb..0000000 --- a/Chapter13/onlineStore/resources/views/layouts/app.blade.php +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - @yield('title', 'Online Store') - - - -
- -
-
-

@yield('subtitle', 'A Laravel Online Store')

-
-
- - -
- @yield('content') -
- - - - - - - diff --git a/Chapter13/onlineStore/resources/views/product/index.blade.php b/Chapter13/onlineStore/resources/views/product/index.blade.php deleted file mode 100644 index 1f766f1..0000000 --- a/Chapter13/onlineStore/resources/views/product/index.blade.php +++ /dev/null @@ -1,18 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
- @foreach ($viewData["products"] as $product) -
- -
- @endforeach -
-@endsection diff --git a/Chapter13/onlineStore/resources/views/product/show.blade.php b/Chapter13/onlineStore/resources/views/product/show.blade.php deleted file mode 100644 index 01d056e..0000000 --- a/Chapter13/onlineStore/resources/views/product/show.blade.php +++ /dev/null @@ -1,21 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
-
-
- -
-
-
-
- {{ $viewData["product"]["name"] }} (${{ $viewData["product"]["price"] }}) -
-

{{ $viewData["product"]["description"] }}

-

Add to Cart

-
-
-
-
-@endsection diff --git a/Chapter13/onlineStore/resources/views/welcome.blade.php b/Chapter13/onlineStore/resources/views/welcome.blade.php deleted file mode 100644 index c587c72..0000000 --- a/Chapter13/onlineStore/resources/views/welcome.blade.php +++ /dev/null @@ -1,7 +0,0 @@ -@extends('layouts.app') -@section('title', 'Home Page - Online Store') -@section('content') -
- Welcome to the application -
-@endsection \ No newline at end of file diff --git a/Chapter13/onlineStore/routes/api.php b/Chapter13/onlineStore/routes/api.php deleted file mode 100644 index eb6fa48..0000000 --- a/Chapter13/onlineStore/routes/api.php +++ /dev/null @@ -1,19 +0,0 @@ -get('/user', function (Request $request) { - return $request->user(); -}); diff --git a/Chapter13/onlineStore/routes/channels.php b/Chapter13/onlineStore/routes/channels.php deleted file mode 100644 index 5d451e1..0000000 --- a/Chapter13/onlineStore/routes/channels.php +++ /dev/null @@ -1,18 +0,0 @@ -id === (int) $id; -}); diff --git a/Chapter13/onlineStore/routes/console.php b/Chapter13/onlineStore/routes/console.php deleted file mode 100644 index e05f4c9..0000000 --- a/Chapter13/onlineStore/routes/console.php +++ /dev/null @@ -1,19 +0,0 @@ -comment(Inspiring::quote()); -})->purpose('Display an inspiring quote'); diff --git a/Chapter13/onlineStore/routes/web.php b/Chapter13/onlineStore/routes/web.php deleted file mode 100644 index 0f5e40f..0000000 --- a/Chapter13/onlineStore/routes/web.php +++ /dev/null @@ -1,19 +0,0 @@ -name("home.index"); -Route::get('/about', 'App\Http\Controllers\HomeController@about')->name("home.about"); -Route::get('/products', 'App\Http\Controllers\ProductController@index')->name("product.index"); -Route::get('/products/{id}', 'App\Http\Controllers\ProductController@show')->name("product.show"); diff --git a/Chapter13/onlineStore/storage/app/.gitignore b/Chapter13/onlineStore/storage/app/.gitignore deleted file mode 100644 index 8f4803c..0000000 --- a/Chapter13/onlineStore/storage/app/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!public/ -!.gitignore diff --git a/Chapter13/onlineStore/storage/app/public/.gitignore b/Chapter13/onlineStore/storage/app/public/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter13/onlineStore/storage/app/public/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter13/onlineStore/storage/framework/.gitignore b/Chapter13/onlineStore/storage/framework/.gitignore deleted file mode 100644 index 05c4471..0000000 --- a/Chapter13/onlineStore/storage/framework/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -compiled.php -config.php -down -events.scanned.php -maintenance.php -routes.php -routes.scanned.php -schedule-* -services.json diff --git a/Chapter13/onlineStore/storage/framework/cache/.gitignore b/Chapter13/onlineStore/storage/framework/cache/.gitignore deleted file mode 100644 index 01e4a6c..0000000 --- a/Chapter13/onlineStore/storage/framework/cache/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!data/ -!.gitignore diff --git a/Chapter13/onlineStore/storage/framework/cache/data/.gitignore b/Chapter13/onlineStore/storage/framework/cache/data/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter13/onlineStore/storage/framework/cache/data/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter13/onlineStore/storage/framework/sessions/.gitignore b/Chapter13/onlineStore/storage/framework/sessions/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter13/onlineStore/storage/framework/sessions/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter13/onlineStore/storage/framework/testing/.gitignore b/Chapter13/onlineStore/storage/framework/testing/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter13/onlineStore/storage/framework/testing/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter13/onlineStore/storage/framework/views/.gitignore b/Chapter13/onlineStore/storage/framework/views/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter13/onlineStore/storage/framework/views/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter13/onlineStore/storage/logs/.gitignore b/Chapter13/onlineStore/storage/logs/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter13/onlineStore/storage/logs/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter13/onlineStore/tests/CreatesApplication.php b/Chapter13/onlineStore/tests/CreatesApplication.php deleted file mode 100644 index 547152f..0000000 --- a/Chapter13/onlineStore/tests/CreatesApplication.php +++ /dev/null @@ -1,22 +0,0 @@ -make(Kernel::class)->bootstrap(); - - return $app; - } -} diff --git a/Chapter13/onlineStore/tests/Feature/ExampleTest.php b/Chapter13/onlineStore/tests/Feature/ExampleTest.php deleted file mode 100644 index 78ccc21..0000000 --- a/Chapter13/onlineStore/tests/Feature/ExampleTest.php +++ /dev/null @@ -1,21 +0,0 @@ -get('/'); - - $response->assertStatus(200); - } -} diff --git a/Chapter13/onlineStore/tests/TestCase.php b/Chapter13/onlineStore/tests/TestCase.php deleted file mode 100644 index 2932d4a..0000000 --- a/Chapter13/onlineStore/tests/TestCase.php +++ /dev/null @@ -1,10 +0,0 @@ -assertTrue(true); - } -} diff --git a/Chapter13/onlineStore/webpack.mix.js b/Chapter13/onlineStore/webpack.mix.js deleted file mode 100644 index 2a22dc1..0000000 --- a/Chapter13/onlineStore/webpack.mix.js +++ /dev/null @@ -1,17 +0,0 @@ -const mix = require('laravel-mix'); - -/* - |-------------------------------------------------------------------------- - | Mix Asset Management - |-------------------------------------------------------------------------- - | - | Mix provides a clean, fluent API for defining some Webpack build steps - | for your Laravel applications. By default, we are compiling the CSS - | file for the application as well as bundling up all the JS files. - | - */ - -mix.js('resources/js/app.js', 'public/js') - .postCss('resources/css/app.css', 'public/css', [ - // - ]); diff --git a/Chapter14/onlineStore/.editorconfig b/Chapter14/onlineStore/.editorconfig deleted file mode 100644 index 1671c9b..0000000 --- a/Chapter14/onlineStore/.editorconfig +++ /dev/null @@ -1,18 +0,0 @@ -root = true - -[*] -charset = utf-8 -end_of_line = lf -insert_final_newline = true -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true - -[*.md] -trim_trailing_whitespace = false - -[*.{yml,yaml}] -indent_size = 2 - -[docker-compose.yml] -indent_size = 4 diff --git a/Chapter14/onlineStore/.env.example b/Chapter14/onlineStore/.env.example deleted file mode 100644 index 8510237..0000000 --- a/Chapter14/onlineStore/.env.example +++ /dev/null @@ -1,52 +0,0 @@ -APP_NAME=Laravel -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=laravel -DB_USERNAME=root -DB_PASSWORD= - -BROADCAST_DRIVER=log -CACHE_DRIVER=file -FILESYSTEM_DISK=local -QUEUE_CONNECTION=sync -SESSION_DRIVER=file -SESSION_LIFETIME=120 - -MEMCACHED_HOST=127.0.0.1 - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -MAIL_MAILER=smtp -MAIL_HOST=mailhog -MAIL_PORT=1025 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS=null -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_APP_CLUSTER=mt1 - -MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/Chapter14/onlineStore/.gitattributes b/Chapter14/onlineStore/.gitattributes deleted file mode 100644 index 510d996..0000000 --- a/Chapter14/onlineStore/.gitattributes +++ /dev/null @@ -1,10 +0,0 @@ -* text=auto - -*.blade.php diff=html -*.css diff=css -*.html diff=html -*.md diff=markdown -*.php diff=php - -/.github export-ignore -CHANGELOG.md export-ignore diff --git a/Chapter14/onlineStore/.gitignore b/Chapter14/onlineStore/.gitignore deleted file mode 100644 index eb003b0..0000000 --- a/Chapter14/onlineStore/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -/node_modules -/public/hot -/public/storage -/storage/*.key -/vendor -.env -.env.backup -.phpunit.result.cache -docker-compose.override.yml -Homestead.json -Homestead.yaml -npm-debug.log -yarn-error.log -/.idea -/.vscode diff --git a/Chapter14/onlineStore/.styleci.yml b/Chapter14/onlineStore/.styleci.yml deleted file mode 100644 index 679a631..0000000 --- a/Chapter14/onlineStore/.styleci.yml +++ /dev/null @@ -1,13 +0,0 @@ -php: - preset: laravel - version: 8 - disabled: - - no_unused_imports - finder: - not-name: - - index.php -js: - finder: - not-name: - - webpack.mix.js -css: true diff --git a/Chapter14/onlineStore/README.md b/Chapter14/onlineStore/README.md deleted file mode 100644 index f171eca..0000000 --- a/Chapter14/onlineStore/README.md +++ /dev/null @@ -1,64 +0,0 @@ -

- -

-Build Status -Total Downloads -Latest Stable Version -License -

- -## About Laravel - -Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as: - -- [Simple, fast routing engine](https://laravel.com/docs/routing). -- [Powerful dependency injection container](https://laravel.com/docs/container). -- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage. -- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent). -- Database agnostic [schema migrations](https://laravel.com/docs/migrations). -- [Robust background job processing](https://laravel.com/docs/queues). -- [Real-time event broadcasting](https://laravel.com/docs/broadcasting). - -Laravel is accessible, powerful, and provides tools required for large, robust applications. - -## Learning Laravel - -Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework. - -If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 2000 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library. - -## Laravel Sponsors - -We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell). - -### Premium Partners - -- **[Vehikl](https://vehikl.com/)** -- **[Tighten Co.](https://tighten.co)** -- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** -- **[64 Robots](https://64robots.com)** -- **[Cubet Techno Labs](https://cubettech.com)** -- **[Cyber-Duck](https://cyber-duck.co.uk)** -- **[Many](https://www.many.co.uk)** -- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)** -- **[DevSquad](https://devsquad.com)** -- **[Curotec](https://www.curotec.com/services/technologies/laravel/)** -- **[OP.GG](https://op.gg)** -- **[WebReinvent](https://webreinvent.com/?utm_source=laravel&utm_medium=github&utm_campaign=patreon-sponsors)** -- **[Lendio](https://lendio.com)** - -## Contributing - -Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions). - -## Code of Conduct - -In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). - -## Security Vulnerabilities - -If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed. - -## License - -The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). diff --git a/Chapter14/onlineStore/app/Console/Kernel.php b/Chapter14/onlineStore/app/Console/Kernel.php deleted file mode 100644 index d8bc1d2..0000000 --- a/Chapter14/onlineStore/app/Console/Kernel.php +++ /dev/null @@ -1,32 +0,0 @@ -command('inspire')->hourly(); - } - - /** - * Register the commands for the application. - * - * @return void - */ - protected function commands() - { - $this->load(__DIR__.'/Commands'); - - require base_path('routes/console.php'); - } -} diff --git a/Chapter14/onlineStore/app/Exceptions/Handler.php b/Chapter14/onlineStore/app/Exceptions/Handler.php deleted file mode 100644 index 8e7fbd1..0000000 --- a/Chapter14/onlineStore/app/Exceptions/Handler.php +++ /dev/null @@ -1,41 +0,0 @@ -> - */ - protected $dontReport = [ - // - ]; - - /** - * A list of the inputs that are never flashed for validation exceptions. - * - * @var array - */ - protected $dontFlash = [ - 'current_password', - 'password', - 'password_confirmation', - ]; - - /** - * Register the exception handling callbacks for the application. - * - * @return void - */ - public function register() - { - $this->reportable(function (Throwable $e) { - // - }); - } -} diff --git a/Chapter14/onlineStore/app/Http/Controllers/Controller.php b/Chapter14/onlineStore/app/Http/Controllers/Controller.php deleted file mode 100644 index a0a2a8a..0000000 --- a/Chapter14/onlineStore/app/Http/Controllers/Controller.php +++ /dev/null @@ -1,13 +0,0 @@ -with("viewData", $viewData); - } - - public function about() - { - $viewData = []; - $viewData["title"] = "About us - Online Store"; - $viewData["subtitle"] = "About us"; - $viewData["description"] = "This is an about page ..."; - $viewData["author"] = "Developed by: Your Name"; - return view('home.about')->with("viewData", $viewData); - } -} diff --git a/Chapter14/onlineStore/app/Http/Controllers/ProductController.php b/Chapter14/onlineStore/app/Http/Controllers/ProductController.php deleted file mode 100644 index d27a3a3..0000000 --- a/Chapter14/onlineStore/app/Http/Controllers/ProductController.php +++ /dev/null @@ -1,29 +0,0 @@ -with("viewData", $viewData); - } - - public function show($id) - { - $viewData = []; - $product = Product::findOrFail($id); - $viewData["title"] = $product->getName()." - Online Store"; - $viewData["subtitle"] = $product->getName()." - Product information"; - $viewData["product"] = $product; - return view('product.show')->with("viewData", $viewData); - } -} diff --git a/Chapter14/onlineStore/app/Http/Kernel.php b/Chapter14/onlineStore/app/Http/Kernel.php deleted file mode 100644 index d3722c2..0000000 --- a/Chapter14/onlineStore/app/Http/Kernel.php +++ /dev/null @@ -1,67 +0,0 @@ - - */ - protected $middleware = [ - // \App\Http\Middleware\TrustHosts::class, - \App\Http\Middleware\TrustProxies::class, - \Fruitcake\Cors\HandleCors::class, - \App\Http\Middleware\PreventRequestsDuringMaintenance::class, - \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, - \App\Http\Middleware\TrimStrings::class, - \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, - ]; - - /** - * The application's route middleware groups. - * - * @var array> - */ - protected $middlewareGroups = [ - 'web' => [ - \App\Http\Middleware\EncryptCookies::class, - \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, - \Illuminate\Session\Middleware\StartSession::class, - // \Illuminate\Session\Middleware\AuthenticateSession::class, - \Illuminate\View\Middleware\ShareErrorsFromSession::class, - \App\Http\Middleware\VerifyCsrfToken::class, - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - - 'api' => [ - // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, - 'throttle:api', - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - ]; - - /** - * The application's route middleware. - * - * These middleware may be assigned to groups or used individually. - * - * @var array - */ - protected $routeMiddleware = [ - 'auth' => \App\Http\Middleware\Authenticate::class, - 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::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, - 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, - 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, - 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, - ]; -} diff --git a/Chapter14/onlineStore/app/Http/Middleware/Authenticate.php b/Chapter14/onlineStore/app/Http/Middleware/Authenticate.php deleted file mode 100644 index 704089a..0000000 --- a/Chapter14/onlineStore/app/Http/Middleware/Authenticate.php +++ /dev/null @@ -1,21 +0,0 @@ -expectsJson()) { - return route('login'); - } - } -} diff --git a/Chapter14/onlineStore/app/Http/Middleware/EncryptCookies.php b/Chapter14/onlineStore/app/Http/Middleware/EncryptCookies.php deleted file mode 100644 index 867695b..0000000 --- a/Chapter14/onlineStore/app/Http/Middleware/EncryptCookies.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter14/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/Chapter14/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php deleted file mode 100644 index 74cbd9a..0000000 --- a/Chapter14/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter14/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php b/Chapter14/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php deleted file mode 100644 index a2813a0..0000000 --- a/Chapter14/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php +++ /dev/null @@ -1,32 +0,0 @@ -check()) { - return redirect(RouteServiceProvider::HOME); - } - } - - return $next($request); - } -} diff --git a/Chapter14/onlineStore/app/Http/Middleware/TrimStrings.php b/Chapter14/onlineStore/app/Http/Middleware/TrimStrings.php deleted file mode 100644 index 88cadca..0000000 --- a/Chapter14/onlineStore/app/Http/Middleware/TrimStrings.php +++ /dev/null @@ -1,19 +0,0 @@ - - */ - protected $except = [ - 'current_password', - 'password', - 'password_confirmation', - ]; -} diff --git a/Chapter14/onlineStore/app/Http/Middleware/TrustHosts.php b/Chapter14/onlineStore/app/Http/Middleware/TrustHosts.php deleted file mode 100644 index 7186414..0000000 --- a/Chapter14/onlineStore/app/Http/Middleware/TrustHosts.php +++ /dev/null @@ -1,20 +0,0 @@ - - */ - public function hosts() - { - return [ - $this->allSubdomainsOfApplicationUrl(), - ]; - } -} diff --git a/Chapter14/onlineStore/app/Http/Middleware/TrustProxies.php b/Chapter14/onlineStore/app/Http/Middleware/TrustProxies.php deleted file mode 100644 index 3391630..0000000 --- a/Chapter14/onlineStore/app/Http/Middleware/TrustProxies.php +++ /dev/null @@ -1,28 +0,0 @@ -|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/Chapter14/onlineStore/app/Http/Middleware/VerifyCsrfToken.php b/Chapter14/onlineStore/app/Http/Middleware/VerifyCsrfToken.php deleted file mode 100644 index 9e86521..0000000 --- a/Chapter14/onlineStore/app/Http/Middleware/VerifyCsrfToken.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter14/onlineStore/app/Models/Product.php b/Chapter14/onlineStore/app/Models/Product.php deleted file mode 100644 index 84efbb6..0000000 --- a/Chapter14/onlineStore/app/Models/Product.php +++ /dev/null @@ -1,89 +0,0 @@ -attributes['id'] - int - contains the product primary key (id) - * $this->attributes['name'] - string - contains the product name - * $this->attributes['description'] - string - contains the product description - * $this->attributes['image'] - string - contains the product image - * $this->attributes['price'] - int - contains the product price - * $this->attributes['created_at'] - timestamp - contains the product creation date - * $this->attributes['updated_at'] - timestamp - contains the product update date - */ - - public function getId() - { - return $this->attributes['id']; - } - - public function setId($id) - { - $this->attributes['id'] = $id; - } - - public function getName() - { - return $this->attributes['name']; - } - - public function setName($name) - { - $this->attributes['name'] = $name; - } - - public function getDescription() - { - return $this->attributes['description']; - } - - public function setDescription($description) - { - $this->attributes['description'] = $description; - } - - public function getImage() - { - return $this->attributes['image']; - } - - public function setImage($image) - { - $this->attributes['image'] = $image; - } - - public function getPrice() - { - return $this->attributes['price']; - } - - public function setPrice($price) - { - $this->attributes['price'] = $price; - } - - public function getCreatedAt() - { - return $this->attributes['created_at']; - } - - public function setCreatedAt($createdAt) - { - $this->attributes['created_at'] = $createdAt; - } - - public function getUpdatedAt() - { - return $this->attributes['updated_at']; - } - - public function setUpdatedAt($updatedAt) - { - $this->attributes['updated_at'] = $updatedAt; - } -} diff --git a/Chapter14/onlineStore/app/Models/User.php b/Chapter14/onlineStore/app/Models/User.php deleted file mode 100644 index 8996368..0000000 --- a/Chapter14/onlineStore/app/Models/User.php +++ /dev/null @@ -1,44 +0,0 @@ - - */ - 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', - ]; -} diff --git a/Chapter14/onlineStore/app/Providers/AppServiceProvider.php b/Chapter14/onlineStore/app/Providers/AppServiceProvider.php deleted file mode 100644 index ee8ca5b..0000000 --- a/Chapter14/onlineStore/app/Providers/AppServiceProvider.php +++ /dev/null @@ -1,28 +0,0 @@ - - */ - protected $policies = [ - // 'App\Models\Model' => 'App\Policies\ModelPolicy', - ]; - - /** - * Register any authentication / authorization services. - * - * @return void - */ - public function boot() - { - $this->registerPolicies(); - - // - } -} diff --git a/Chapter14/onlineStore/app/Providers/BroadcastServiceProvider.php b/Chapter14/onlineStore/app/Providers/BroadcastServiceProvider.php deleted file mode 100644 index 395c518..0000000 --- a/Chapter14/onlineStore/app/Providers/BroadcastServiceProvider.php +++ /dev/null @@ -1,21 +0,0 @@ -> - */ - protected $listen = [ - Registered::class => [ - SendEmailVerificationNotification::class, - ], - ]; - - /** - * Register any events for your application. - * - * @return void - */ - public function boot() - { - // - } -} diff --git a/Chapter14/onlineStore/app/Providers/RouteServiceProvider.php b/Chapter14/onlineStore/app/Providers/RouteServiceProvider.php deleted file mode 100644 index 7c17d1f..0000000 --- a/Chapter14/onlineStore/app/Providers/RouteServiceProvider.php +++ /dev/null @@ -1,63 +0,0 @@ -configureRateLimiting(); - - $this->routes(function () { - Route::prefix('api') - ->middleware('api') - ->namespace($this->namespace) - ->group(base_path('routes/api.php')); - - Route::middleware('web') - ->namespace($this->namespace) - ->group(base_path('routes/web.php')); - }); - } - - /** - * Configure the rate limiters for the application. - * - * @return void - */ - protected function configureRateLimiting() - { - RateLimiter::for('api', function (Request $request) { - return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); - }); - } -} diff --git a/Chapter14/onlineStore/artisan b/Chapter14/onlineStore/artisan deleted file mode 100644 index 67a3329..0000000 --- a/Chapter14/onlineStore/artisan +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env php -make(Illuminate\Contracts\Console\Kernel::class); - -$status = $kernel->handle( - $input = new Symfony\Component\Console\Input\ArgvInput, - new Symfony\Component\Console\Output\ConsoleOutput -); - -/* -|-------------------------------------------------------------------------- -| Shutdown The Application -|-------------------------------------------------------------------------- -| -| Once Artisan has finished running, we will fire off the shutdown events -| so that any final work may be done by the application before we shut -| down the process. This is the last thing to happen to the request. -| -*/ - -$kernel->terminate($input, $status); - -exit($status); diff --git a/Chapter14/onlineStore/bootstrap/app.php b/Chapter14/onlineStore/bootstrap/app.php deleted file mode 100644 index 037e17d..0000000 --- a/Chapter14/onlineStore/bootstrap/app.php +++ /dev/null @@ -1,55 +0,0 @@ -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/Chapter14/onlineStore/bootstrap/cache/.gitignore b/Chapter14/onlineStore/bootstrap/cache/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter14/onlineStore/bootstrap/cache/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter14/onlineStore/composer.json b/Chapter14/onlineStore/composer.json deleted file mode 100644 index f0f2eda..0000000 --- a/Chapter14/onlineStore/composer.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "name": "laravel/laravel", - "type": "project", - "description": "The Laravel Framework.", - "keywords": ["framework", "laravel"], - "license": "MIT", - "require": { - "php": "^8.0", - "fruitcake/laravel-cors": "^2.0.5", - "guzzlehttp/guzzle": "^7.2", - "laravel/framework": "^9.0", - "laravel/sanctum": "^2.14", - "laravel/tinker": "^2.7" - }, - "require-dev": { - "fakerphp/faker": "^1.9.1", - "laravel/sail": "^1.0.1", - "mockery/mockery": "^1.4.4", - "nunomaduro/collision": "^6.1", - "phpunit/phpunit": "^9.5.10", - "spatie/laravel-ignition": "^1.0", - "squizlabs/php_codesniffer": "^3.6" - }, - "autoload": { - "psr-4": { - "App\\": "app/", - "Database\\Factories\\": "database/factories/", - "Database\\Seeders\\": "database/seeders/" - } - }, - "autoload-dev": { - "psr-4": { - "Tests\\": "tests/" - } - }, - "scripts": { - "post-autoload-dump": [ - "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", - "@php artisan package:discover --ansi" - ], - "post-update-cmd": [ - "@php artisan vendor:publish --tag=laravel-assets --ansi --force" - ], - "post-root-package-install": [ - "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" - ], - "post-create-project-cmd": [ - "@php artisan key:generate --ansi" - ] - }, - "extra": { - "laravel": { - "dont-discover": [] - } - }, - "config": { - "optimize-autoloader": true, - "preferred-install": "dist", - "sort-packages": true - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/Chapter14/onlineStore/composer.lock b/Chapter14/onlineStore/composer.lock deleted file mode 100644 index b55e897..0000000 --- a/Chapter14/onlineStore/composer.lock +++ /dev/null @@ -1,7860 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "8bdcc31974d0d5a00db79c82827c8815", - "packages": [ - { - "name": "asm89/stack-cors", - "version": "v2.1.1", - "source": { - "type": "git", - "url": "https://github.com/asm89/stack-cors.git", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4|^5|^6" - }, - "require-dev": { - "phpunit/phpunit": "^7|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "psr-4": { - "Asm89\\Stack\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alexander", - "email": "iam.asm89@gmail.com" - } - ], - "description": "Cross-origin resource sharing library and stack middleware", - "homepage": "https://github.com/asm89/stack-cors", - "keywords": [ - "cors", - "stack" - ], - "support": { - "issues": "https://github.com/asm89/stack-cors/issues", - "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" - }, - "time": "2022-01-18T09:12:03+00:00" - }, - { - "name": "brick/math", - "version": "0.9.3", - "source": { - "type": "git", - "url": "https://github.com/brick/math.git", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", - "vimeo/psalm": "4.9.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Brick\\Math\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Arbitrary-precision arithmetic library", - "keywords": [ - "Arbitrary-precision", - "BigInteger", - "BigRational", - "arithmetic", - "bigdecimal", - "bignum", - "brick", - "math" - ], - "support": { - "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.9.3" - }, - "funding": [ - { - "url": "https://github.com/BenMorel", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/brick/math", - "type": "tidelift" - } - ], - "time": "2021-08-15T20:50:18+00:00" - }, - { - "name": "dflydev/dot-access-data", - "version": "v3.0.1", - "source": { - "type": "git", - "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c", - "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": "^3.14" - }, - "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.1" - }, - "time": "2021-08-13T13:06:58+00:00" - }, - { - "name": "doctrine/inflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "vimeo/psalm": "^4.10" - }, - "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.4" - }, - "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": "2021-10-22T20:16:43+00:00" - }, - { - "name": "doctrine/lexer", - "version": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" - } - }, - "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/1.2.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%2Flexer", - "type": "tidelift" - } - ], - "time": "2022-01-12T08:27:12+00:00" - }, - { - "name": "dragonmantank/cron-expression", - "version": "v3.3.1", - "source": { - "type": "git", - "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "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.1" - }, - "funding": [ - { - "url": "https://github.com/dragonmantank", - "type": "github" - } - ], - "time": "2022-01-18T15:43:28+00:00" - }, - { - "name": "egulias/email-validator", - "version": "3.1.2", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ee0db30118f661fb166bcffbf5d82032df484697", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^1.2", - "php": ">=7.2", - "symfony/polyfill-intl-idn": "^1.15" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^8.5.8|^9.3.3", - "vimeo/psalm": "^4" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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/3.1.2" - }, - "funding": [ - { - "url": "https://github.com/egulias", - "type": "github" - } - ], - "time": "2021-10-11T09:18:27+00:00" - }, - { - "name": "fruitcake/laravel-cors", - "version": "v2.0.5", - "source": { - "type": "git", - "url": "https://github.com/fruitcake/laravel-cors.git", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "shasum": "" - }, - "require": { - "asm89/stack-cors": "^2.0.1", - "illuminate/contracts": "^6|^7|^8|^9", - "illuminate/support": "^6|^7|^8|^9", - "php": ">=7.2", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4.3.4|^5|^6" - }, - "require-dev": { - "laravel/framework": "^6|^7.24|^8", - "orchestra/testbench-dusk": "^4|^5|^6|^7", - "phpunit/phpunit": "^6|^7|^8|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - }, - "laravel": { - "providers": [ - "Fruitcake\\Cors\\CorsServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Fruitcake\\Cors\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fruitcake", - "homepage": "https://fruitcake.nl" - }, - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", - "keywords": [ - "api", - "cors", - "crossdomain", - "laravel" - ], - "support": { - "issues": "https://github.com/fruitcake/laravel-cors/issues", - "source": "https://github.com/fruitcake/laravel-cors/tree/v2.0.5" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "time": "2022-01-03T14:53:04+00:00" - }, - { - "name": "graham-campbell/result-type", - "version": "v1.0.4", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "0690bde05318336c7221785f2a932467f98b64ca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/0690bde05318336c7221785f2a932467f98b64ca", - "reference": "0690bde05318336c7221785f2a932467f98b64ca", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "phpoption/phpoption": "^1.8" - }, - "require-dev": { - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", - "type": "tidelift" - } - ], - "time": "2021-11-21T21:41:47+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "7.4.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.8.3 || ^2.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.4.1", - "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.5 || ^9.3.5", - "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": { - "branch-alias": { - "dev-master": "7.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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.4.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": "2021-12-06T18:43:05+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "1.5.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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/1.5.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "time": "2021-10-22T20:56:57+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.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.4.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.8 || ^9.3.10" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "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.1.0" - }, - "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": "2021-10-06T17:43:30+00:00" - }, - { - "name": "laravel/framework", - "version": "v9.0.1", - "source": { - "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "shasum": "" - }, - "require": { - "doctrine/inflector": "^2.0", - "dragonmantank/cron-expression": "^3.1", - "egulias/email-validator": "^3.1", - "ext-mbstring": "*", - "ext-openssl": "*", - "laravel/serializable-closure": "^1.0", - "league/commonmark": "^2.2", - "league/flysystem": "^3.0", - "monolog/monolog": "^2.0", - "nesbot/carbon": "^2.53.1", - "php": "^8.0.2", - "psr/container": "^1.1.1|^2.0.1", - "psr/log": "^1.0|^2.0|^3.0", - "psr/simple-cache": "^1.0|^2.0|^3.0", - "ramsey/uuid": "^4.2.2", - "symfony/console": "^6.0", - "symfony/error-handler": "^6.0", - "symfony/finder": "^6.0", - "symfony/http-foundation": "^6.0", - "symfony/http-kernel": "^6.0", - "symfony/mailer": "^6.0", - "symfony/mime": "^6.0", - "symfony/process": "^6.0", - "symfony/routing": "^6.0", - "symfony/var-dumper": "^6.0", - "tijsverkoyen/css-to-inline-styles": "^2.2.2", - "vlucas/phpdotenv": "^5.4.1", - "voku/portable-ascii": "^2.0" - }, - "conflict": { - "tightenco/collect": "<5.5.33" - }, - "provide": { - "psr/container-implementation": "1.1|2.0", - "psr/simple-cache-implementation": "1.0|2.0|3.0" - }, - "replace": { - "illuminate/auth": "self.version", - "illuminate/broadcasting": "self.version", - "illuminate/bus": "self.version", - "illuminate/cache": "self.version", - "illuminate/collections": "self.version", - "illuminate/conditionable": "self.version", - "illuminate/config": "self.version", - "illuminate/console": "self.version", - "illuminate/container": "self.version", - "illuminate/contracts": "self.version", - "illuminate/cookie": "self.version", - "illuminate/database": "self.version", - "illuminate/encryption": "self.version", - "illuminate/events": "self.version", - "illuminate/filesystem": "self.version", - "illuminate/hashing": "self.version", - "illuminate/http": "self.version", - "illuminate/log": "self.version", - "illuminate/macroable": "self.version", - "illuminate/mail": "self.version", - "illuminate/notifications": "self.version", - "illuminate/pagination": "self.version", - "illuminate/pipeline": "self.version", - "illuminate/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": { - "aws/aws-sdk-php": "^3.198.1", - "doctrine/dbal": "^2.13.3|^3.1.4", - "fakerphp/faker": "^1.9.2", - "guzzlehttp/guzzle": "^7.2", - "league/flysystem-aws-s3-v3": "^3.0", - "league/flysystem-ftp": "^3.0", - "league/flysystem-sftp-v3": "^3.0", - "mockery/mockery": "^1.4.4", - "orchestra/testbench-core": "^7.0", - "pda/pheanstalk": "^4.0", - "phpstan/phpstan": "^1.0", - "phpunit/phpunit": "^9.5.8", - "predis/predis": "^1.1.9", - "symfony/amazon-mailer": "^6.0", - "symfony/cache": "^6.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.198.1).", - "brianium/paratest": "Required to run tests in parallel (^6.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", - "ext-bcmath": "Required to use the multiple_of validation rule.", - "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.", - "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.2).", - "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-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", - "mockery/mockery": "Required to use mocking (^1.4.4).", - "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).", - "predis/predis": "Required to use the predis connector (^1.1.9).", - "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.0).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^6.0).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.0).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.0).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.0).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.x-dev" - } - }, - "autoload": { - "files": [ - "src/Illuminate/Collections/helpers.php", - "src/Illuminate/Events/functions.php", - "src/Illuminate/Foundation/helpers.php", - "src/Illuminate/Support/helpers.php" - ], - "psr-4": { - "Illuminate\\": "src/Illuminate/", - "Illuminate\\Support\\": [ - "src/Illuminate/Macroable/", - "src/Illuminate/Collections/", - "src/Illuminate/Conditionable/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Laravel Framework.", - "homepage": "https://laravel.com", - "keywords": [ - "framework", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2022-02-09T15:00:05+00:00" - }, - { - "name": "laravel/sanctum", - "version": "v2.14.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/sanctum.git", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/0647a87140c7522e75826cffcadb3ad6e01f71e9", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/contracts": "^6.9|^7.0|^8.0|^9.0", - "illuminate/database": "^6.9|^7.0|^8.0|^9.0", - "illuminate/support": "^6.9|^7.0|^8.0|^9.0", - "php": "^7.2|^8.0" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0", - "phpunit/phpunit": "^8.0|^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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": "2022-01-12T15:07:43+00:00" - }, - { - "name": "laravel/serializable-closure", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/serializable-closure.git", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/65c9faf50d567b65d81764a44526545689e3fe63", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "pestphp/pest": "^1.18", - "phpstan/phpstan": "^0.12.98", - "symfony/var-dumper": "^5.3" - }, - "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": "2022-02-01T16:29:39+00:00" - }, - { - "name": "laravel/tinker", - "version": "v2.7.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/tinker.git", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/5f2f9815b7631b9f586a3de7933c25f9327d4073", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073", - "shasum": "" - }, - "require": { - "illuminate/console": "^6.0|^7.0|^8.0|^9.0", - "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.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", - "phpunit/phpunit": "^8.5.8|^9.3.3" - }, - "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.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.7.0" - }, - "time": "2022-01-10T08:52:49+00:00" - }, - { - "name": "league/commonmark", - "version": "2.2.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/commonmark.git", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "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.15" - }, - "require-dev": { - "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.0", - "commonmark/commonmark.js": "0.30.0", - "composer/package-versions-deprecated": "^1.8", - "erusev/parsedown": "^1.0", - "ext-json": "*", - "github/gfm": "0.29.0", - "michelf/php-markdown": "^1.4", - "phpstan/phpstan": "^0.12.88 || ^1.0.0", - "phpunit/phpunit": "^9.5.5", - "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", - "unleashedtech/php-coding-standard": "^3.1", - "vimeo/psalm": "^4.7.3" - }, - "suggest": { - "symfony/yaml": "v2.3+ required if using the Front Matter extension" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.3-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": "2022-01-25T14:37:33+00:00" - }, - { - "name": "league/config", - "version": "v1.1.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/config.git", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/config/zipball/a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^3.0.1", - "nette/schema": "^1.2", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.90", - "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": "2021-08-14T12:15:32+00:00" - }, - { - "name": "league/flysystem", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9f8b4260031bfef5497477da53dd57b2aaff0e06", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06", - "shasum": "" - }, - "require": { - "ext-json": "*", - "league/mime-type-detection": "^1.0.0", - "php": "^8.0.2" - }, - "conflict": { - "guzzlehttp/guzzle": "<7.0", - "guzzlehttp/ringphp": "<1.1.1", - "symfony/http-client": "<5.2" - }, - "require-dev": { - "async-aws/s3": "^1.5", - "async-aws/simple-s3": "^1.0", - "aws/aws-sdk-php": "^3.198.1", - "composer/semver": "^3.0", - "ext-fileinfo": "*", - "ext-ftp": "*", - "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.5", - "google/cloud-storage": "^1.23", - "phpseclib/phpseclib": "^2.0", - "phpstan/phpstan": "^0.12.26", - "phpunit/phpunit": "^9.5.11", - "sabre/dav": "^4.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.0.3" - }, - "funding": [ - { - "url": "https://offset.earth/frankdejonge", - "type": "custom" - }, - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2022-01-31T19:41:04+00:00" - }, - { - "name": "league/mime-type-detection", - "version": "1.9.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/aa70e813a6ad3d1558fc927863d47309b4c23e69", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.2", - "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" - }, - "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.9.0" - }, - "funding": [ - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2021-11-21T11:48:40+00:00" - }, - { - "name": "monolog/monolog", - "version": "2.3.5", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd4380d6fc37626e2f799f29d91195040137eba9", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "provide": { - "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7", - "graylog2/gelf-php": "^1.4.2", - "mongodb/mongodb": "^1.8", - "php-amqplib/php-amqplib": "~2.4 || ^3", - "php-console/php-console": "^3.1.3", - "phpspec/prophecy": "^1.6.1", - "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5", - "predis/predis": "^1.1", - "rollbar/rollbar": "^1.3", - "ruflin/elastica": ">=0.90@dev", - "swiftmailer/swiftmailer": "^5.3|^6.0" - }, - "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", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "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": "2.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/2.3.5" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" - } - ], - "time": "2021-10-01T21:08:31+00:00" - }, - { - "name": "nesbot/carbon", - "version": "2.56.0", - "source": { - "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1.8 || ^8.0", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "doctrine/dbal": "^2.0 || ^3.0", - "doctrine/orm": "^2.7", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "phpmd/phpmd": "^2.9", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.54 || ^1.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.14", - "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://opencollective.com/Carbon", - "type": "open_collective" - }, - { - "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", - "type": "tidelift" - } - ], - "time": "2022-01-21T17:08:38+00:00" - }, - { - "name": "nette/schema", - "version": "v1.2.2", - "source": { - "type": "git", - "url": "https://github.com/nette/schema.git", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/9a39cef03a5b34c7de64f551538cbba05c2be5df", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df", - "shasum": "" - }, - "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": ">=7.1 <8.2" - }, - "require-dev": { - "nette/tester": "^2.3 || ^2.4", - "phpstan/phpstan-nette": "^0.12", - "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.2" - }, - "time": "2021-10-15T11:40:02+00:00" - }, - { - "name": "nette/utils", - "version": "v3.2.7", - "source": { - "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/0af4e3de4df9f1543534beab255ccf459e7a2c99", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99", - "shasum": "" - }, - "require": { - "php": ">=7.2 <8.2" - }, - "conflict": { - "nette/di": "<3.0.6" - }, - "require-dev": { - "nette/tester": "~2.0", - "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.3" - }, - "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()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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 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/v3.2.7" - }, - "time": "2022-01-24T11:29:14+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.13.2", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", - "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.13.2" - }, - "time": "2021-11-30T19:35:32+00:00" - }, - { - "name": "phpoption/phpoption", - "version": "1.8.1", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-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.8.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", - "type": "tidelift" - } - ], - "time": "2021-12-04T23:24:31+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.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.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": "http://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/tree/master" - }, - "time": "2020-06-29T06:28:15+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.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": "http://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/master" - }, - "time": "2019-04-30T12:38:16+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.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": "http://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/master" - }, - "time": "2016-08-06T14:39: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.1", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "570292577277f06f590635381a7f761a6cf4f026" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/570292577277f06f590635381a7f761a6cf4f026", - "reference": "570292577277f06f590635381a7f761a6cf4f026", - "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" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "3.17.05.02" - }, - "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.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." - }, - "bin": [ - "bin/psysh" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "0.11.x-dev" - } - }, - "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.1" - }, - "time": "2022-01-03T13:58:38+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": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/ramsey/collection.git", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "shasum": "" - }, - "require": { - "php": "^7.3 || ^8", - "symfony/polyfill-php81": "^1.23" - }, - "require-dev": { - "captainhook/captainhook": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "ergebnis/composer-normalize": "^2.6", - "fakerphp/faker": "^1.5", - "hamcrest/hamcrest-php": "^2", - "jangregor/phpstan-prophecy": "^0.8", - "mockery/mockery": "^1.3", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1", - "phpstan/phpstan": "^0.12.32", - "phpstan/phpstan-mockery": "^0.12.5", - "phpstan/phpstan-phpunit": "^0.12.11", - "phpunit/phpunit": "^8.5 || ^9", - "psy/psysh": "^0.10.4", - "slevomat/coding-standard": "^6.3", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.4" - }, - "type": "library", - "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/1.2.2" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "time": "2021-10-10T03:01:02+00:00" - }, - { - "name": "ramsey/uuid", - "version": "4.2.3", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "shasum": "" - }, - "require": { - "brick/math": "^0.8 || ^0.9", - "ext-json": "*", - "php": "^7.2 || ^8.0", - "ramsey/collection": "^1.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php80": "^1.14" - }, - "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", - "moontoast/math": "^1.1", - "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.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-mockery": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^8.5 || ^9", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" - }, - "suggest": { - "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-ctype": "Enables faster processing of character classification using ctype functions.", - "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": { - "branch-alias": { - "dev-main": "4.x-dev" - }, - "captainhook": { - "force-install": true - } - }, - "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "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.2.3" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2021-09-25T23:10:38+00:00" - }, - { - "name": "symfony/console", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/22e8efd019c3270c4f79376234a3f8752cd25490", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.4|^6.0" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/css-selector", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/1955d595c12c111629cc814d3f2a2ff13580508a", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a", - "shasum": "" - }, - "require": { - "php": ">=8.0.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/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-11-01T23:48:49+00:00" - }, - { - "name": "symfony/error-handler", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/20343b3bad7ebafa38138ddcb97290a24722b57b", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" - }, - "bin": [ - "Resources/bin/patch-type-declarations" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to manage errors and ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6472ea2dd415e925b90ca82be64b8bc6157f3934", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/event-dispatcher-contracts": "^2|^3" - }, - "conflict": { - "symfony/dependency-injection": "<5.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^5.4|^6.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/aa5422287b75594b90ee9cd807caf8f0df491385", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/event-dispatcher": "^1" - }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-07-15T12:33:35+00:00" - }, - { - "name": "symfony/finder", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/8661b74dbabc23223f38c9b99d3f8ade71170430", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ad157299ced81a637fade1efcadd688d6deba5c1", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1" - }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/cache": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0" - }, - "suggest": { - "symfony/mime": "To use the file extension guesser" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v6.0.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/error-handler": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", - "symfony/twig-bridge": "<5.4", - "symfony/validator": "<5.4", - "twig/twig": "<2.13" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/process": "^5.4|^6.0", - "symfony/routing": "^5.4|^6.0", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-29T18:12:46+00:00" - }, - { - "name": "symfony/mailer", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mailer.git", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "shasum": "" - }, - "require": { - "egulias/email-validator": "^2.1.10|^3", - "php": ">=8.0.2", - "psr/event-dispatcher": "^1", - "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3" - }, - "conflict": { - "symfony/http-kernel": "<5.4" - }, - "require-dev": { - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/messenger": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/mime", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/2cd9601efd040e56f43360daa68f3c6b0534923a", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "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" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "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.24.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": "2021-10-20T20:35:02+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-11-23T21:10:46+00:00" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44", - "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.23-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.24.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": "2021-09-14T14:02:44+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.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": "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.24.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": "2021-11-30T18:21:41+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-05-27T09:17:38+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:33+00:00" - }, - { - "name": "symfony/polyfill-php81", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:11+00:00" - }, - { - "name": "symfony/process", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/298ed357274c1868c20a0061df256a1250a6c4af", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/routing", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/yaml": "<5.4" - }, - "require-dev": { - "doctrine/annotations": "^1.12", - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/36715ebf9fb9db73db0cb24263c79077c6fe8603", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/container": "^2.0" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "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.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": "2021-11-04T17:53:12+00:00" - }, - { - "name": "symfony/string", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/522144f0c4c004c80d56fa47e40e17028e2eefc2", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.0" - }, - "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/translation-contracts": "^2.0|^3.0", - "symfony/var-exporter": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "files": [ - "Resources/functions.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 an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/translation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/71bb15335798f8c4da110911bcf2d2fead7a430d", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.3|^3.0" - }, - "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" - }, - "provide": { - "symfony/translation-implementation": "2.3|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-07T00:29:03+00:00" - }, - { - "name": "symfony/translation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "suggest": { - "symfony/translation-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - } - }, - "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.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": "2021-09-07T12:43:40+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7b701676fc64f9ef11f9b4870f16b48f66be4834", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<5.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-17T16:30:44+00:00" - }, - { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.4", - "source": { - "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" - } - ], - "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", - "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "support": { - "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" - }, - "time": "2021-12-08T09:12:39+00:00" - }, - { - "name": "vlucas/phpdotenv", - "version": "v5.4.1", - "source": { - "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", - "shasum": "" - }, - "require": { - "ext-pcre": "*", - "graham-campbell/result-type": "^1.0.2", - "php": "^7.1.3 || ^8.0", - "phpoption/phpoption": "^1.8", - "symfony/polyfill-ctype": "^1.23", - "symfony/polyfill-mbstring": "^1.23.1", - "symfony/polyfill-php80": "^1.23.1" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" - }, - "suggest": { - "ext-filter": "Required to use the boolean validator." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.4-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.4.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", - "type": "tidelift" - } - ], - "time": "2021-12-12T23:22:04+00:00" - }, - { - "name": "voku/portable-ascii", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/voku/portable-ascii.git", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/9bd89e83cecdf8c37b64909454249eaed98b2c89", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89", - "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.0" - }, - "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-01-24T18:59:03+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "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.10.0" - }, - "time": "2021-03-09T10:59:23+00:00" - } - ], - "packages-dev": [ - { - "name": "doctrine/instantiator", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.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%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2020-11-10T18:47:58+00:00" - }, - { - "name": "facade/ignition-contracts", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/facade/ignition-contracts.git", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^v2.15.8", - "phpunit/phpunit": "^9.3.11", - "vimeo/psalm": "^3.17.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Facade\\IgnitionContracts\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://flareapp.io", - "role": "Developer" - } - ], - "description": "Solution contracts for Ignition", - "homepage": "https://github.com/facade/ignition-contracts", - "keywords": [ - "contracts", - "flare", - "ignition" - ], - "support": { - "issues": "https://github.com/facade/ignition-contracts/issues", - "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" - }, - "time": "2020-10-16T08:27:54+00:00" - }, - { - "name": "fakerphp/faker", - "version": "v1.19.0", - "source": { - "type": "git", - "url": "https://github.com/FakerPHP/Faker.git", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^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": "*", - "symfony/phpunit-bridge": "^4.4 || ^5.2" - }, - "suggest": { - "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", - "ext-curl": "Required by Faker\\Provider\\Image to download images.", - "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", - "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.19-dev" - } - }, - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "François Zaninotto" - } - ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], - "support": { - "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0" - }, - "time": "2022-02-02T17:38:57+00:00" - }, - { - "name": "filp/whoops", - "version": "2.14.5", - "source": { - "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "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.14.5" - }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "time": "2022-01-07T12:00:00+00:00" - }, - { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "shasum": "" - }, - "require": { - "php": "^5.3|^7.0|^8.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" - }, - "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "classmap": [ - "hamcrest" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "This is the PHP port of Hamcrest Matchers", - "keywords": [ - "test" - ], - "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" - }, - "time": "2020-07-09T08:09:16+00:00" - }, - { - "name": "laravel/sail", - "version": "v1.13.2", - "source": { - "type": "git", - "url": "https://github.com/laravel/sail.git", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.0|^9.0", - "illuminate/contracts": "^8.0|^9.0", - "illuminate/support": "^8.0|^9.0", - "php": "^7.3|^8.0" - }, - "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": "2022-02-08T14:14:12+00:00" - }, - { - "name": "mockery/mockery", - "version": "1.5.0", - "source": { - "type": "git", - "url": "https://github.com/mockery/mockery.git", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "shasum": "" - }, - "require": { - "hamcrest/hamcrest-php": "^2.0.1", - "lib-pcre": ">=7.0", - "php": "^7.3 || ^8.0" - }, - "conflict": { - "phpunit/phpunit": "<8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-0": { - "Mockery": "library/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" - } - ], - "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": { - "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.5.0" - }, - "time": "2022-01-20T13:18:17+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.10.2", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "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.10.2" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2020-11-13T09:40:50+00:00" - }, - { - "name": "nunomaduro/collision", - "version": "v6.1.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/collision.git", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "shasum": "" - }, - "require": { - "facade/ignition-contracts": "^1.0.2", - "filp/whoops": "^2.14.5", - "php": "^8.0.0", - "symfony/console": "^6.0.2" - }, - "require-dev": { - "brianium/paratest": "^6.4.1", - "laravel/framework": "^9.0", - "nunomaduro/larastan": "^1.0.2", - "nunomaduro/mock-final-classes": "^1.1.0", - "orchestra/testbench": "^7.0.0", - "phpunit/phpunit": "^9.5.11" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "6.x-dev" - }, - "laravel": { - "providers": [ - "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" - ] - } - }, - "autoload": { - "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": "2022-01-18T17:49:08+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.1.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/15a90844ad40f127afd244c0cad228de2a80052a", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a", - "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.1.1" - }, - "time": "2022-02-07T21:56:48+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.6.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "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.6.0" - }, - "time": "2022-01-04T19:58:01+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" - }, - "time": "2021-12-08T12:19:24+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "9.2.10", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d5850aaf931743067f4bfc1ae4cbd06468400687", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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 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", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.10" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-05T09:12:13+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "3.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-02T12:48:52+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "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/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:58:55+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T05:33:50+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.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/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:16:10+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "9.5.13", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/597cb647654ede35e43b137926dfdfef0fb11743", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.3.1", - "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": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.7", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", - "sebastian/version": "^3.0.2" - }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.13" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-01-24T07:33:35+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:08:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "1.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:08:54+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:30:19+00:00" - }, - { - "name": "sebastian/comparator", - "version": "4.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:49:45+00:00" - }, - { - "name": "sebastian/complexity", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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 calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:52:27+00:00" - }, - { - "name": "sebastian/diff", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:10:38+00:00" - }, - { - "name": "sebastian/environment", - "version": "5.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-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": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:52:38+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "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", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-11-11T14:18:36+00:00" - }, - { - "name": "sebastian/global-state", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-11T13:31:12+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-28T06:42:11+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "http://www.github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:17:30+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:45:17+00:00" - }, - { - "name": "sebastian/type", - "version": "2.3.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-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/2.3.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-15T12:49:02+00:00" - }, - { - "name": "sebastian/version", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:39:44+00:00" - }, - { - "name": "spatie/backtrace", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/backtrace.git", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "ext-json": "*", - "phpunit/phpunit": "^9.3", - "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": { - "issues": "https://github.com/spatie/backtrace/issues", - "source": "https://github.com/spatie/backtrace/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/sponsors/spatie", - "type": "github" - }, - { - "url": "https://spatie.be/open-source/support-us", - "type": "other" - } - ], - "time": "2021-11-09T10:57:15+00:00" - }, - { - "name": "spatie/flare-client-php", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/flare-client-php.git", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "shasum": "" - }, - "require": { - "illuminate/pipeline": "^8.0|^9.0", - "php": "^8.0", - "spatie/backtrace": "^1.2", - "symfony/http-foundation": "^5.0|^6.0", - "symfony/mime": "^5.2|^6.0", - "symfony/process": "^5.2|^6.0", - "symfony/var-dumper": "^5.2|^6.0" - }, - "require-dev": { - "dms/phpunit-arraysubset-asserts": "^0.3.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/phpunit-snapshot-assertions": "^4.0" - }, - "type": "library", - "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.0.1" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2022-02-04T15:21:00+00:00" - }, - { - "name": "spatie/ignition", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/spatie/ignition.git", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/d2d5ba823af3004268556e87dfc94449e4159f5a", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "monolog/monolog": "^2.0", - "php": "^8.0", - "spatie/flare-client-php": "^1.0", - "symfony/console": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "mockery/mockery": "^1.4", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/ray": "^1.32", - "symfony/process": "^5.4|^6.0" - }, - "type": "library", - "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": "2022-01-19T12:57:41+00:00" - }, - { - "name": "spatie/laravel-ignition", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/68250225a9f83b086462c2af1b1139dfde48fbd2", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*", - "illuminate/support": "^8.77|^9.0", - "monolog/monolog": "^2.3", - "php": "^8.0", - "spatie/flare-client-php": "^1.0.1", - "spatie/ignition": "^1.0", - "symfony/console": "^5.0|^6.0", - "symfony/var-dumper": "^5.0|^6.0" - }, - "require-dev": { - "filp/whoops": "^2.14", - "livewire/livewire": "^2.8|dev-develop", - "mockery/mockery": "^1.4", - "nunomaduro/larastan": "^1.0", - "orchestra/testbench": "^6.23|^7.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/laravel-ray": "^1.27" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Spatie\\LaravelIgnition\\IgnitionServiceProvider" - ], - "aliases": { - "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" - } - } - }, - "autoload": { - "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": "2022-02-04T15:25:56+00:00" - }, - { - "name": "squizlabs/php_codesniffer", - "version": "3.6.2", - "source": { - "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", - "shasum": "" - }, - "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.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": "lead" - } - ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", - "keywords": [ - "phpcs", - "standards" - ], - "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" - }, - "time": "2021-12-12T21:44:58+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2021-07-28T10:34:58+00:00" - } - ], - "aliases": [], - "minimum-stability": "dev", - "stability-flags": [], - "prefer-stable": true, - "prefer-lowest": false, - "platform": { - "php": "^8.0" - }, - "platform-dev": [], - "plugin-api-version": "2.1.0" -} diff --git a/Chapter14/onlineStore/config/app.php b/Chapter14/onlineStore/config/app.php deleted file mode 100644 index 1941d7c..0000000 --- a/Chapter14/onlineStore/config/app.php +++ /dev/null @@ -1,197 +0,0 @@ - env('APP_NAME', 'Laravel'), - - /* - |-------------------------------------------------------------------------- - | Application Environment - |-------------------------------------------------------------------------- - | - | This value determines the "environment" your application is currently - | running in. This may determine how you prefer to configure various - | services the application utilizes. Set this in your ".env" file. - | - */ - - 'env' => env('APP_ENV', 'production'), - - /* - |-------------------------------------------------------------------------- - | Application Debug Mode - |-------------------------------------------------------------------------- - | - | When your application is in debug mode, detailed error messages with - | stack traces will be shown on every error that occurs within your - | application. If disabled, a simple generic error page is shown. - | - */ - - 'debug' => (bool) env('APP_DEBUG', false), - - /* - |-------------------------------------------------------------------------- - | Application URL - |-------------------------------------------------------------------------- - | - | This URL is used by the console to properly generate URLs when using - | the Artisan command line tool. You should set this to the root of - | your application so that it is used when running Artisan tasks. - | - */ - - 'url' => env('APP_URL', 'http://localhost'), - - 'asset_url' => env('ASSET_URL', null), - - /* - |-------------------------------------------------------------------------- - | 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', - - /* - |-------------------------------------------------------------------------- - | 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' => [ - - /* - * Laravel Framework Service Providers... - */ - Illuminate\Auth\AuthServiceProvider::class, - Illuminate\Broadcasting\BroadcastServiceProvider::class, - Illuminate\Bus\BusServiceProvider::class, - Illuminate\Cache\CacheServiceProvider::class, - Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, - Illuminate\Cookie\CookieServiceProvider::class, - Illuminate\Database\DatabaseServiceProvider::class, - Illuminate\Encryption\EncryptionServiceProvider::class, - Illuminate\Filesystem\FilesystemServiceProvider::class, - Illuminate\Foundation\Providers\FoundationServiceProvider::class, - Illuminate\Hashing\HashServiceProvider::class, - Illuminate\Mail\MailServiceProvider::class, - Illuminate\Notifications\NotificationServiceProvider::class, - Illuminate\Pagination\PaginationServiceProvider::class, - Illuminate\Pipeline\PipelineServiceProvider::class, - Illuminate\Queue\QueueServiceProvider::class, - Illuminate\Redis\RedisServiceProvider::class, - Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, - Illuminate\Session\SessionServiceProvider::class, - Illuminate\Translation\TranslationServiceProvider::class, - Illuminate\Validation\ValidationServiceProvider::class, - Illuminate\View\ViewServiceProvider::class, - - /* - * 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, - - ], - - /* - |-------------------------------------------------------------------------- - | 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([ - // ... - ])->toArray(), - -]; diff --git a/Chapter14/onlineStore/config/auth.php b/Chapter14/onlineStore/config/auth.php deleted file mode 100644 index d8c6cee..0000000 --- a/Chapter14/onlineStore/config/auth.php +++ /dev/null @@ -1,111 +0,0 @@ - [ - '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 expire 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. - | - */ - - 'passwords' => [ - 'users' => [ - 'provider' => 'users', - 'table' => 'password_resets', - '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/Chapter14/onlineStore/config/broadcasting.php b/Chapter14/onlineStore/config/broadcasting.php deleted file mode 100644 index 67fcbbd..0000000 --- a/Chapter14/onlineStore/config/broadcasting.php +++ /dev/null @@ -1,67 +0,0 @@ - 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'), - 'useTLS' => true, - ], - '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/Chapter14/onlineStore/config/cache.php b/Chapter14/onlineStore/config/cache.php deleted file mode 100644 index 8736c7a..0000000 --- a/Chapter14/onlineStore/config/cache.php +++ /dev/null @@ -1,110 +0,0 @@ - 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'), - ], - - '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 a RAM based store such as APC or Memcached, there might - | be other applications utilizing the same cache. So, we'll specify a - | value to get prefixed to all our keys so we can avoid collisions. - | - */ - - 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'), - -]; diff --git a/Chapter14/onlineStore/config/cors.php b/Chapter14/onlineStore/config/cors.php deleted file mode 100644 index 8a39e6d..0000000 --- a/Chapter14/onlineStore/config/cors.php +++ /dev/null @@ -1,34 +0,0 @@ - ['api/*', 'sanctum/csrf-cookie'], - - 'allowed_methods' => ['*'], - - 'allowed_origins' => ['*'], - - 'allowed_origins_patterns' => [], - - 'allowed_headers' => ['*'], - - 'exposed_headers' => [], - - 'max_age' => 0, - - 'supports_credentials' => false, - -]; diff --git a/Chapter14/onlineStore/config/database.php b/Chapter14/onlineStore/config/database.php deleted file mode 100644 index 0faebae..0000000 --- a/Chapter14/onlineStore/config/database.php +++ /dev/null @@ -1,147 +0,0 @@ - env('DB_CONNECTION', 'mysql'), - - /* - |-------------------------------------------------------------------------- - | Database Connections - |-------------------------------------------------------------------------- - | - | Here are each of the database connections setup for your application. - | Of course, examples of configuring each database platform that is - | supported by Laravel is shown below to make development simple. - | - | - | All database work in Laravel is done through the PHP PDO facilities - | so make sure you have the driver for your particular database of - | choice installed on your machine before you begin development. - | - */ - - 'connections' => [ - - 'sqlite' => [ - 'driver' => 'sqlite', - 'url' => env('DATABASE_URL'), - 'database' => env('DB_DATABASE', database_path('database.sqlite')), - 'prefix' => '', - 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), - ], - - 'mysql' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '3306'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'unix_socket' => env('DB_SOCKET', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - 'pgsql' => [ - 'driver' => 'pgsql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '5432'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - 'search_path' => 'public', - 'sslmode' => 'prefer', - ], - - 'sqlsrv' => [ - 'driver' => 'sqlsrv', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', 'localhost'), - 'port' => env('DB_PORT', '1433'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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'), - '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'), - 'password' => env('REDIS_PASSWORD'), - 'port' => env('REDIS_PORT', '6379'), - 'database' => env('REDIS_CACHE_DB', '1'), - ], - - ], - -]; diff --git a/Chapter14/onlineStore/config/filesystems.php b/Chapter14/onlineStore/config/filesystems.php deleted file mode 100644 index cf5abce..0000000 --- a/Chapter14/onlineStore/config/filesystems.php +++ /dev/null @@ -1,73 +0,0 @@ - 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 setup for each driver as an example of the required options. - | - | Supported Drivers: "local", "ftp", "sftp", "s3" - | - */ - - 'disks' => [ - - 'local' => [ - 'driver' => 'local', - 'root' => storage_path('app'), - ], - - 'public' => [ - 'driver' => 'local', - 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', - 'visibility' => 'public', - ], - - '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), - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter14/onlineStore/config/hashing.php b/Chapter14/onlineStore/config/hashing.php deleted file mode 100644 index bcd3be4..0000000 --- a/Chapter14/onlineStore/config/hashing.php +++ /dev/null @@ -1,52 +0,0 @@ - '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/Chapter14/onlineStore/config/logging.php b/Chapter14/onlineStore/config/logging.php deleted file mode 100644 index fefe088..0000000 --- a/Chapter14/onlineStore/config/logging.php +++ /dev/null @@ -1,119 +0,0 @@ - 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' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), - - /* - |-------------------------------------------------------------------------- - | 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'), - ], - - 'daily' => [ - 'driver' => 'daily', - 'path' => storage_path('logs/laravel.log'), - 'level' => env('LOG_LEVEL', 'debug'), - 'days' => 14, - ], - - 'slack' => [ - 'driver' => 'slack', - 'url' => env('LOG_SLACK_WEBHOOK_URL'), - 'username' => 'Laravel Log', - 'emoji' => ':boom:', - 'level' => env('LOG_LEVEL', 'critical'), - ], - - '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'), - ], - ], - - 'stderr' => [ - 'driver' => 'monolog', - 'level' => env('LOG_LEVEL', 'debug'), - 'handler' => StreamHandler::class, - 'formatter' => env('LOG_STDERR_FORMATTER'), - 'with' => [ - 'stream' => 'php://stderr', - ], - ], - - 'syslog' => [ - 'driver' => 'syslog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'errorlog' => [ - 'driver' => 'errorlog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'null' => [ - 'driver' => 'monolog', - 'handler' => NullHandler::class, - ], - - 'emergency' => [ - 'path' => storage_path('logs/laravel.log'), - ], - ], - -]; diff --git a/Chapter14/onlineStore/config/mail.php b/Chapter14/onlineStore/config/mail.php deleted file mode 100644 index 87b6fe3..0000000 --- a/Chapter14/onlineStore/config/mail.php +++ /dev/null @@ -1,117 +0,0 @@ - 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", - | "postmark", "log", "array", "failover" - | - */ - - 'mailers' => [ - 'smtp' => [ - 'transport' => 'smtp', - '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, - ], - - 'ses' => [ - 'transport' => 'ses', - ], - - 'mailgun' => [ - 'transport' => 'mailgun', - ], - - 'postmark' => [ - 'transport' => 'postmark', - ], - - 'sendmail' => [ - 'transport' => 'sendmail', - 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -t -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/Chapter14/onlineStore/config/queue.php b/Chapter14/onlineStore/config/queue.php deleted file mode 100644 index 25ea5a8..0000000 --- a/Chapter14/onlineStore/config/queue.php +++ /dev/null @@ -1,93 +0,0 @@ - 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, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter14/onlineStore/config/sanctum.php b/Chapter14/onlineStore/config/sanctum.php deleted file mode 100644 index 9281c92..0000000 --- a/Chapter14/onlineStore/config/sanctum.php +++ /dev/null @@ -1,65 +0,0 @@ - explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( - '%s%s', - 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', - env('APP_URL') ? ','.parse_url(env('APP_URL'), PHP_URL_HOST) : '' - ))), - - /* - |-------------------------------------------------------------------------- - | 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/Chapter14/onlineStore/config/services.php b/Chapter14/onlineStore/config/services.php deleted file mode 100644 index 2a1d616..0000000 --- a/Chapter14/onlineStore/config/services.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - 'domain' => env('MAILGUN_DOMAIN'), - 'secret' => env('MAILGUN_SECRET'), - 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), - ], - - '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/Chapter14/onlineStore/config/session.php b/Chapter14/onlineStore/config/session.php deleted file mode 100644 index 8fed97c..0000000 --- a/Chapter14/onlineStore/config/session.php +++ /dev/null @@ -1,201 +0,0 @@ - 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/Chapter14/onlineStore/config/view.php b/Chapter14/onlineStore/config/view.php deleted file mode 100644 index 22b8a18..0000000 --- a/Chapter14/onlineStore/config/view.php +++ /dev/null @@ -1,36 +0,0 @@ - [ - 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/Chapter14/onlineStore/database/.gitignore b/Chapter14/onlineStore/database/.gitignore deleted file mode 100644 index 9b19b93..0000000 --- a/Chapter14/onlineStore/database/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.sqlite* diff --git a/Chapter14/onlineStore/database/factories/UserFactory.php b/Chapter14/onlineStore/database/factories/UserFactory.php deleted file mode 100644 index d6ca926..0000000 --- a/Chapter14/onlineStore/database/factories/UserFactory.php +++ /dev/null @@ -1,42 +0,0 @@ - - */ -class UserFactory extends Factory -{ - /** - * Define the model's default state. - * - * @return array - */ - public function definition() - { - return [ - 'name' => $this->faker->name(), - 'email' => $this->faker->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. - * - * @return \Illuminate\Database\Eloquent\Factories\Factory - */ - public function unverified() - { - return $this->state(function (array $attributes) { - return [ - 'email_verified_at' => null, - ]; - }); - } -} diff --git a/Chapter14/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php b/Chapter14/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php deleted file mode 100644 index cf6b776..0000000 --- a/Chapter14/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->string('name'); - $table->string('email')->unique(); - $table->timestamp('email_verified_at')->nullable(); - $table->string('password'); - $table->rememberToken(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('users'); - } -}; diff --git a/Chapter14/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php b/Chapter14/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php deleted file mode 100644 index fcacb80..0000000 --- a/Chapter14/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php +++ /dev/null @@ -1,32 +0,0 @@ -string('email')->index(); - $table->string('token'); - $table->timestamp('created_at')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('password_resets'); - } -}; diff --git a/Chapter14/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/Chapter14/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php deleted file mode 100644 index 1719198..0000000 --- a/Chapter14/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php +++ /dev/null @@ -1,36 +0,0 @@ -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. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('failed_jobs'); - } -}; diff --git a/Chapter14/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/Chapter14/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php deleted file mode 100644 index fd235f8..0000000 --- a/Chapter14/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->morphs('tokenable'); - $table->string('name'); - $table->string('token', 64)->unique(); - $table->text('abilities')->nullable(); - $table->timestamp('last_used_at')->nullable(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('personal_access_tokens'); - } -}; diff --git a/Chapter14/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php b/Chapter14/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php deleted file mode 100644 index 2eecdc2..0000000 --- a/Chapter14/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php +++ /dev/null @@ -1,35 +0,0 @@ -id(); - $table->string('name'); - $table->text('description'); - $table->string('image'); - $table->integer('price'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('products'); - } -}; diff --git a/Chapter14/onlineStore/database/seeders/DatabaseSeeder.php b/Chapter14/onlineStore/database/seeders/DatabaseSeeder.php deleted file mode 100644 index 71f673f..0000000 --- a/Chapter14/onlineStore/database/seeders/DatabaseSeeder.php +++ /dev/null @@ -1,19 +0,0 @@ -create(); - } -} diff --git a/Chapter14/onlineStore/lang/en.json b/Chapter14/onlineStore/lang/en.json deleted file mode 100644 index 577680d..0000000 --- a/Chapter14/onlineStore/lang/en.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "The :attribute must contain at least one letter.": "The :attribute must contain at least one letter.", - "The :attribute must contain at least one number.": "The :attribute must contain at least one number.", - "The :attribute must contain at least one symbol.": "The :attribute must contain at least one symbol.", - "The :attribute must contain at least one uppercase and one lowercase letter.": "The :attribute must contain at least one uppercase and one lowercase letter.", - "The given :attribute has appeared in a data leak. Please choose a different :attribute.": "The given :attribute has appeared in a data leak. Please choose a different :attribute." -} diff --git a/Chapter14/onlineStore/lang/en/auth.php b/Chapter14/onlineStore/lang/en/auth.php deleted file mode 100644 index 6598e2c..0000000 --- a/Chapter14/onlineStore/lang/en/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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/Chapter14/onlineStore/lang/en/pagination.php b/Chapter14/onlineStore/lang/en/pagination.php deleted file mode 100644 index d481411..0000000 --- a/Chapter14/onlineStore/lang/en/pagination.php +++ /dev/null @@ -1,19 +0,0 @@ - '« Previous', - 'next' => 'Next »', - -]; diff --git a/Chapter14/onlineStore/lang/en/passwords.php b/Chapter14/onlineStore/lang/en/passwords.php deleted file mode 100644 index 2345a56..0000000 --- a/Chapter14/onlineStore/lang/en/passwords.php +++ /dev/null @@ -1,22 +0,0 @@ - '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/Chapter14/onlineStore/lang/en/validation.php b/Chapter14/onlineStore/lang/en/validation.php deleted file mode 100644 index 783003c..0000000 --- a/Chapter14/onlineStore/lang/en/validation.php +++ /dev/null @@ -1,163 +0,0 @@ - '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' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - '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' => [ - 'numeric' => 'The :attribute must be greater than :value.', - 'file' => 'The :attribute must be greater than :value kilobytes.', - 'string' => 'The :attribute must be greater than :value characters.', - 'array' => 'The :attribute must have more than :value items.', - ], - 'gte' => [ - 'numeric' => 'The :attribute must be greater than or equal to :value.', - 'file' => 'The :attribute must be greater than or equal to :value kilobytes.', - 'string' => 'The :attribute must be greater than or equal to :value characters.', - 'array' => 'The :attribute must have :value items or more.', - ], - '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' => [ - 'numeric' => 'The :attribute must be less than :value.', - 'file' => 'The :attribute must be less than :value kilobytes.', - 'string' => 'The :attribute must be less than :value characters.', - 'array' => 'The :attribute must have less than :value items.', - ], - 'lte' => [ - 'numeric' => 'The :attribute must be less than or equal to :value.', - 'file' => 'The :attribute must be less than or equal to :value kilobytes.', - 'string' => 'The :attribute must be less than or equal to :value characters.', - 'array' => 'The :attribute must not have more than :value items.', - ], - 'mac_address' => 'The :attribute must be a valid MAC address.', - 'max' => [ - 'numeric' => 'The :attribute must not be greater than :max.', - 'file' => 'The :attribute must not be greater than :max kilobytes.', - 'string' => 'The :attribute must not be greater than :max characters.', - 'array' => 'The :attribute must not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - '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.', - 'password' => 'The password is incorrect.', - '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' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - '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/Chapter14/onlineStore/package.json b/Chapter14/onlineStore/package.json deleted file mode 100644 index 7a9aecd..0000000 --- a/Chapter14/onlineStore/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "private": true, - "scripts": { - "dev": "npm run development", - "development": "mix", - "watch": "mix watch", - "watch-poll": "mix watch -- --watch-options-poll=1000", - "hot": "mix watch --hot", - "prod": "npm run production", - "production": "mix --production" - }, - "devDependencies": { - "axios": "^0.25", - "laravel-mix": "^6.0.6", - "lodash": "^4.17.19", - "postcss": "^8.1.14" - } -} diff --git a/Chapter14/onlineStore/phpcs.xml b/Chapter14/onlineStore/phpcs.xml deleted file mode 100644 index a1cf2b6..0000000 --- a/Chapter14/onlineStore/phpcs.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - The coding standard for the Online Store project - - app/ - config/ - database/ - routes/ - */migrations/* - diff --git a/Chapter14/onlineStore/phpunit.xml b/Chapter14/onlineStore/phpunit.xml deleted file mode 100644 index 2ac86a1..0000000 --- a/Chapter14/onlineStore/phpunit.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - ./tests/Unit - - - ./tests/Feature - - - - - ./app - - - - - - - - - - - - - - diff --git a/Chapter14/onlineStore/public/.htaccess b/Chapter14/onlineStore/public/.htaccess deleted file mode 100644 index 3aec5e2..0000000 --- a/Chapter14/onlineStore/public/.htaccess +++ /dev/null @@ -1,21 +0,0 @@ - - - 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/Chapter14/onlineStore/public/css/app.css b/Chapter14/onlineStore/public/css/app.css deleted file mode 100644 index cabac36..0000000 --- a/Chapter14/onlineStore/public/css/app.css +++ /dev/null @@ -1,20 +0,0 @@ -.bg-secondary { - background-color: #2c3e50 !important; -} - -.copyright { - background-color: #1a252f; -} - -.bg-primary { - background-color: #1abc9c !important; -} - -nav{ - font-weight: 700; -} - -.img-card{ - height: 18vw; - object-fit: cover; -} diff --git a/Chapter14/onlineStore/public/favicon.ico b/Chapter14/onlineStore/public/favicon.ico deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter14/onlineStore/public/img/game.png b/Chapter14/onlineStore/public/img/game.png deleted file mode 100644 index 85420e8bbc16098bf26b4ee63bde0e91a19d1f2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25896 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 cz>% diff --git a/Chapter14/onlineStore/public/img/safe.png b/Chapter14/onlineStore/public/img/safe.png deleted file mode 100644 index 445942c707af53210931f9f4f99f6d3cb69e5d89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19240 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
w==XB0?3|p=#`o%NsudE(E-U#KS3Snw z;4wZCaSDCwf?7xR$-V`njZ0H2I+y>dL?+!C^E$@XAGyl_w(QawTwCkFeo~RiRD_JK zz1UV4OE9~UAlK2>4hUbTrkI2lrYUSUK9e4rmH5EF3JH}tii>~MdO>7UajV)JW+e07 z`kC_G-`39da7nWdMQI#rV)qy$x_GLq;Ka9EL;dLMmUJ^A%GR3ECk?A7rA;k74i!~=pkR=E$gZUR>ybJfV7Ju^oUxA^-R{S08UV8-_w54i)Z z_;V0ZVm->XmT`@Ur?Z}Qi(u&sYV zr%NY>qeWM|Sf-OL8?<<)QjP}O>rg@=M6=;il8;0HNzcyCtYs@c;M9N&A#!Q!^q2nR zODjL9Z-))F3Sv{K8QHEVatzAGs5+3P`QCLL?29C*2zpH|)3aiS<4M=P^LoObo8Onm z`EsXvyrUca@bO8A(C&opR#TNh2UKP&RD(H+!R}__b_={?Eb<=M`YJ0c>uhX-<<>i% z$n;HBJ+xxNxJg631YX26k* z3{P;1>T5@e92Rk4@Ek!TxIR^iMK%zUQO0o)6HvGpT2zvMu&&07etk64+1Y7TJv$c8 z8M%?-QH})I&Kcg);9R z^P*JSe0+>LLU^kiuI3zctURDEzE0*hq#Y)eTGJEpWNN?-^v zin6Jh8QqzLVTtvwoicK@$lef2fuSstko2~+lZm$LPMIxpL1|aQg4Z>VpE7%T!+vfe zY<&o0=(U9=Y%W0TxiwzgQAgO`-tM5I$%Atv$T8T?hR|hu8os;9_FZ)OA4Ap-qrBB= zNl15!)Q|!}?z?m}8ck;xyke&?Ktw}B(|pt~6cO`XLjIGr%k{NSf%Dn^0tkL)srP@+ zU%GBIh`w4myz&KBdjA8;ra=0i(L(@B$|?B@H~P4UH0r>w$yG^HCL<$@oiM>y)@{9* z(*EgBh4TjaTX~ww>K7Gt(-)_+btK|_kuDQy;DTKrgyt>wEGi5aR=hSbF_F{}T5aq) zP+MCYM)rhM#*ZQnI$9AXo-pAn%Gw;k71x!U3+KL*bPUR}9*yoBITGvW43bL!s(pcC z{pPuuy4Xgh@-*(^s6JE6@Uh+9rnO{UHpZYl;AR*!2dvNm7w6*QQYS%*z)HR-B{_Mn ztjEpmYnB#|U6@|dP&jn2sb1{(ORd^9kU+ZvCAvKu^qR;r^40qydZQhbLqSU2R-?GS zzRub<<3fxo1JTzpfE}9APBYHkOeR3oI(1aTIc z>r>8YWu?B8t*x!8sSMdpk|X`IGAc^`@BjI2YikY7J1HoMw6Kz{V~jmc)U9_Y1mzg) zTi!6iotZXSpTQo%*MHW#qh85sZ$J3YlPE0JEp%Ww{?O>cn-#Gon7r_wciq?*X=%2?WQ+XU>#e`~?z!$&KHrJ&?Ig#yXPUNXE zpSy`VNLQ3K%+%7?RaMp1ZI;bk&b=X1-vNG$|HY{2_@8f@5MtmZE~-n7h6EX}yX^<( zTFOq!-v-WK*f`r9g3v|R+#FPzc)XELtS1$9byKA%RT7y~#q{^ZZ1xr(ALO|M+xms{ zDd{0MH&vkSc#&S-G{nKms?frspKXjUHYs^boS+55(<@483)9xFv)dRNT3ob% zntoAIQY!vyHsw^Si!WO`Tdcwqqvtp6vt^v7>9&{TSmB>{BAakq`pvtEG=3S2O6^Wb zsz9l>^YbOg*~%q0gC0Y6?G^nC- zzsEKD>XYdF;7k_bKQ_HOVs|lqe*T$G()brIUL+)>hR_HMjgOB%e44G4W06vUp}yiXSPLS=IlAAkH=FB7SSgWB)lN=X?ho;4Z%C<4`SKgg~H&v@?b&p1r$#%B3rhAp>blG?&`0IdA z>!@u7@BJ+b4EZ*?V&N-A(jJMT+m{*%NSLoSpV((c+8|6i00i;=jz-qj@5m|OuY;`5 zC(rLQ>d%+iR%qvLQ)yCEru@~NAsw^Hz5YvKH9Nu;fJUmgM+K5pdv+aF^NXC6|=DW5juxu z=1SbsoB7=1M?!8x+6b%eP?waoe+RQ9#Uw)HBs9N-FdV|OzKR@I-d{^&XJcWR&*S8x zG%HocF)#Cf>6aJPebtw6sWmT3DT|0$Z|xd8Me>o$hz&yL{|#Uk5=s5l+*+5eq&QNe z(7I}K^t6gk@LqOvbF-+o9yp%J7q!kus~&=j2+e2DHx5NzhQ{ANVU0@f*jwvr^-73k zk1Ey);USigL~kFvqk>QNyl_*ZhlL~`Ze=A(d`tn}vV=#SyW#V0m4w!plGIjk)EZ`+ zOCUxCmBlgT3S0xuzl)#AE+71%3-=Ycm zT`<@0wM=0D=rMAf;Qhq=M*XK3FG2ps9wgGVH!$kswUbC&4Y6#v4j`AK(=aXCRFmu{arYm|IdXiD)@Dvb;a5y z0;-PTiNd_HBr?|WeX%c#W=amZ!h4-NlTokUTLkZ|P1^H(0+1*3-IbPHAEE;Ge3^1r z_lr*zIpUZni-k^!-1&H7i!3TZCZZ?tLgrMqc)&QHCdd+R1$lM6)q}@&GU*LW)j3)r zaf&T*YPBKrbGO3X(+kmyw1QD*CKQaO?v}3>|#>!IJ-gV*zze4=LE6ZF{n;>;6;@`;p$sK zUc{=W#GUBG9G{wPO`QYXufY_PAQYRKnMwHUbdJ5kKbC^a+G#2)W{@CTRZQen;wK{5 zA(lHTUfNtPXIUW=N|u@3C}Q=}I3C94cXk?hHLkm~J~*h1*52J~zVSe~dRuGj>9G>y zmY=)vXJJ)^%hV6873c?ekyG*tjM+QRD3DvQbn$RsQ-6KO{$2QbG#910TLV+h++!L4Y4>tPO8nH~W=}{0 zYm^)xUsX`?{LT?39GW5Ai=SYrIBF5EV)pk<&!?#v)MXd@@2R-|>=^$~xX4LZS2XF< z>c6>O%b2{xyBM}U-TJYfwd8@dR`H@SJZ3nE@%<0c6ioA@KATA&jFt&8g$U6sLjIq} zw*-ZCwYB3D5_%pz@|NP|;24~-JAf6jj%CN)qTpw0dlgaO>;m|0|1~A0GDF0(nb=04X4%=<`KlKNS5<>ULdI^Kc)WR1 z22T6WeZ3y|sijD@-u7#?28+^Crv)jyS0g((h#FU4bU?I2-lzp#C_piRToT`G$!(X zHs&JQUk()cw^E^PiUUKIk~)c({wreewjDc9&rbCfI|1$OjT3+WKY#vYIVOr#AQzp0 z&$;h?{6ZO_OqP7UUTRcZT6$fFw>zCyRi~}1*{R>$gqCVqpvt(-|3opP2`YMbUp`>~ zheQY*%tQdQCzYE#_!W@;FEvW7Qv;+At6ACDOz+=s@8}?~s(`;nd&7p80Q}=;26E`) zS5A~YAT9-k5P&=&tTaQ*RoDjl`dC?53aoX$iv`SLD+Q-jY)*&z`TCZb4i4j{$yLt) zJ$TTA03iKW*!XNh!jwZgI3Ygg=ilW`L27l~li)Cs?u1IzjsNZ-a6)d>7UI_Uj9;sm zv&9H~WG*Z$Vq;|`32fW{+VQBdX>n*!c{q^I$}{icOHjMOn|FEkKHoUxdK(-LKm|kN z*)u8-S^11O9j*3(bSzL;D!KN*gC30V4VWlNdEfWr!O7Y|8p*Ez@V!gV=>>j$OoDmf5VBtw5O9cueh9dsg#v%4_SrZMc+qigGXoSaHCm`2=04Onvn{ zn3JK9#!c*$EXm2e`Q{=%Hyn~@>kXSgg0_lmLU=@zepP7y>JgGTZQ+t|WHaFr5kn%V zX)xJb_g&o2{@@RtShzy3I9Px^#^Dm8fXZr^A?nB?{E!yCqVyyI(fT~2) z*Urky*2vD?-B-x%>~leV$#{nswP?djb-xIzo|UPJRFa(EK(Uf1bRwU*qtSo~`T6)JZqmHUGK5eD|6!b>Vg^Kw&Bl$ zmODV%2y94EKu-%^= z*=CVeDm{480+B`3`{BO=j`aBzyWJYwFP;D|I-HQ;VCmcnEcCyHm+5`)5Km`^Ua4HXC%&C@FxBQNiatx|{;sI4sYymjPEJEJACw_ExqWzOm#I6aOV=zKB~$wufGUn- zs>BL5ZpEKxiX56aX*#?h>PbaOWEK(<%E*o>oSYN+s5pSKEMz?cQ~{95$H*JsFun@9 zyL}d!PkxyHOxE$B7dGXNrJf@DK84CBARsuknE+7dSY%j2b#=JJd+$v_wW;p!{euch z*hlL+q)J&2LHfd?vTlWaJew2fdl~_*y3&lRxx%Qv`CWoX+XqW9E=(!h$awmZi?SXd zccA<6D3th4();{TP{*j#!NQ!kNI8N%t{>$q62KN$@Vq89Q664~=|$LC|J_K0E22lF zV6ed`VVA3-`V)9|P~9rx-pYFo4UN{6U{1us)}P@u_V%E$<7>$Qu27(o=v_AoiLyA6 zB%>C`?K3k}(9`2r4yn?)wk$D$v#&EgQj1V!B_xNGd2{K3dLZE;oKYY4L|PgkA{tkA zHV`hJ>**3{0QPKmtC9zxBx=)yz$Wc#3n<@^1arvA0p!NGUP|0#(*#j!fDGA761KjT zf=qeGQHhOV#6SBG|CZBDWUP=f&vJxS|@E#_;Wx5RcF*iZ%|wETSnCw zAOv5j)p1Zb5nC`4FAlj)GIk{;Ep6>^=zsqWm#Eaj3X}Y8AKA7wiAiKO-wN5 z+V1an%hLhs@2dN~J}=xq89b!c02W57@4WIj7=cO!`PlOWz9_6NqP!X917^_WcBWo= zHl%aPgzYlem%ta;mTpIDAQ6@S0Hkk4fAhPzj8$5WGe-s3y@>)@9a#sU3?L#RmM$(X zCMMDXVUNqut%U@#nyGE#;(Y zEKp+OYLtCfRgX@Z8esf3UZ8W3XnA}AGRf|IL28W;|$%yPU4SZHQ!wG!H(#dfN? zXejH6_Y?_mA?qa_K`ko(eQ~^QXddQ=CP_yYc0gFA9z@Q2K(V-F&{Bl^of=f756>Iy z-edwK{{v%522gQ;bRtlqI)Hf++}n>OSY{fWhYgi-6v0E^c|x8%Wf&js;Ryt=xT7Wj zg(8*HT6wdVkenP1-4IX1#UshJ1Dy-2`N-lXi#0(*P>BIMiPcpqexRPCW*!?gm~XBO5?a^!5hXr9!>CRm&j&p7|Rf;LdGl{eMixWlU{0LF4r@8*^AGf=zmWUhWMURUXT0sC5p763D9?*f;ROX=_1TD3Zd z<2+%xHJ`kp=k(waQqTQGgoWm!A;`377xqupCWp*d`{iL!8WQ!wmz9jfcc`lB%7##( zEdM2QRef{l0k!CQjnj|fC)UcZp}0OREiFF`Gq8Gf0EkkNBLbtSnL(xP((}p%8;yOm z^+{BpEhdWI%47~`WBX3f!+A81{%MzLBvGULDZ`vw*vZwYQIuP?P=kbFhlp7Q0T5Yf zl1+!*FHVfpBck(1-B*$OB`Zl1W`!CFeQOFu*$NU-a0)>2b%+;=z)*qSLbp;y3qpFj zUQBR9OszcY{>{8nyAkX(d?q-fNKT5(Czcm$y})K_b2Co@-eOlN=(*Gm(nrzf#|xgV z`o5mpP3q8ww&atNp|iYuQW7RPI~kD(Wd;MQr$sZ=K6or+KgKEF&iJNHao;Ck+yDS1gs7KMqd zgUYqfoS{j?tnusZC_mP~U5B9gi1c;FvN7UMci_W^3j@^EZvbwWEeMRyC_CdAUXk^~O!V3} zeZpmUa$YR5Z?}|N`LB!8Y%ij15kPZ#P1^#4K|t8x_{F1p1LwJUa|ZEk*+Xo0Q47M+ z5MN*4`-OJ%)4)cU9Cf`e8r7*<$=1qQl#tE_h}1O4jm9a3vwLD03x$5bLWDt8MQc5r zoScm9N7_m#mVSXYg8RUL03{)&fiFZ3{)xD0V#5ctwX|e+43z-(%BVK+HBx8x(~VIN zGccf!8tkvVqmmuay{D(4K_R|k06RuXvL_DwCy+hN+Whh8^euocx6o9}x;`A$&Y6kC zdeHDx{Vx3wkn_$s>?|dPRg$(4>)JUYJ;&v$Y2rHx1uIhFHgY7l{fUDMxSS$m>zt2F zT}WLed@wB%s1p>D-Qx)O*s<|_YgQrB^lBz!cHnSnx`2MzR+^PJ@_O|yUorYOr(?tj z^b{BkTz3&^6aUQBE{vY)I+l_+CSm5psGWn8N%otnQjNcAmD+gDY62OmIW-c;nSe}m zCx8Z`mn)1>Se)vZqTiU$+qGa+ga(N;nU6QWqwP>0{tjp@R86^|G8txFyQvFjrSaV9Xu zytN;A@3lbwP5=dfY06U*pbZ^Lkho_u1k?h(F6H=6kEz(8d|A~WojAq+9En7`i9`Rl z?f#lipBWGjErPbXtL|5!f7ic-&Q%@TXjt_|7(RUX@DSbzY8&tPX!eygD z!^(60t5v9x+TOfl!_556cO}bA6(oPWsgDGml*-CyI6|vJcZysjbj{Sr(eD#x1sR;7 z?U~T+<Ss-;B+_vn6KGAbvK zXCuJJAGq^)z$hyDyzB$EOBlhVxf#+?E?!j0J~Oue6TBDctI3HCXvnZL%gA&RPO97v*VvaVMTgKu`HDlLz>bH{}sJtlib@lnyyA+yeF(J)G; zr=lzec|Yi3Ds0@s#}z8HeV{$H`DV#g>_F#fxmSLpTjC3^C_?_#_gScZRrZ-gZ;J5J zQcmf|&S$&LmzC4(9WVW_13hn)6jHDah(Q3-#P4#FcItA)56JK?zt-YL1b`D=$LY=c z5eqJ4&z`}E8Fy=l5vEAb%k0qRizU}aOHgE~1JShNJlP&v_#$n(=;ZX6wP03=gQKLO z;nTsF=L?4GdwVq9S#{N?3-vc_GP0;iG3OQuMeyL5ur`Ys4d|>D@ks3WQcf2hZ9(KN z>4=Yy=kp1a78s&b*kW2)8PjKS# zdm&BbXBy+~nRC!;Kh2b;3Xem=Z*iSC1p*pEboftcYP{xer#C`pZF{J%E3_%sg*Np$ zi!?HOpAX)q4~lAFeWyCiDb@W(54?#^#D9M>ctgRP2XZODc|DBs$NbK-U9Rsjh)m_Gns!V?4SGrM!br1mr%G$9UN2wOBV z{)?87ro-H0Wq^kLi29*0DjQckIfB%3(z0--n2zL|~;RBK%m}%`tfSLNcM@?HN zgh%qj?%OJOkpf(MMC%4L(0&Bb2M?_eXkLHXd=6W3_(u!c`^1lOcy(zjWk&*RK7amS zqGAd1#@!5=T_0h5|2J~F@jdP*J`jaCC8N?6^5#^h`?hw^T?Tj{Xs5&U^+mh=F#gHV zPeG5n^YIQ*h0i(Ozokdpe%3B<&~a-iNAy>ZM{mQ$_P;*$10n_U%`GAO)n${++oeZW zj$(&xHrFqPqf!flp7|*9gMRpTDb7ejm7js2TX&LO%z1Y)BmJ8Lw<)n8-IW~o>Z8Ty z*My_>VS`Kx2gj`o1~GqjLT0o%fz@#p%Go4&QUJMNNyj z(F&DVEGe(w177+svzulAcVCtQ0CeYVV0ZWLQ}&t5r42-=``KFEcA5@gWb-wFS@Xr_ zi!qx!KrOB(#Z5P(Td@@tRzTyf9G2krOk0=dF*M~YKV>!(0z6g}b7a}P6I%S?lB6Ga zyFn<%t?P~VD=J?XK?ML3gEtNcxTzBlYS<{z;Bk)BH4nZ3E%L=2`40qt>%Ls)1&!Kk zpb-r{Gt5pQja&HDob7abJh`O!35py@hF3FJM>7cM-L0M=0iv4#3Wx zP9g2^Yr-F8JFPE!6{mEY?bm0`>nHBu?Pp7&c zG6$Uzu)tmUrMTVCX5gOl01=flppF1=_jm{o@Jxb^M&Mp0WBK}66;(sSFTnm@)-)mD z4DcVNm&N}3Yo0yXvPfasx!5^1-?IHX76O+!83GTJF!tZ4I7w)?#4lhE$}kdmMuCG0 zt0Cz04KdeC{toCmjI6jIKOL2iTA=OwJ+EH zJ`w=b_hnOv-QBK*)7Arfi4VeaG`!MpoDl|!$Ig7{@_WX7;8`ID_5t@Y0k^iz1{TH( z-p^~+p0Ww(`v<_lK5`%cw8}~N(~I|ZRR>=!F?kM5mHB)AEsz6lzh~uhan|I$C<0p4 z5#3_*Yh(L8<3&^M0-IS!K!a(TAV-_cnx!$X_Q&1(wOBkE{Ox9I(vb z0xc~oc9P(oXu=ZA?X)zwW1eC|8~9KW;N19v*(<*U_wUU#UOuH`o9{2+IUy$&0867U z(||Es4csV^yR=heYcuHh72u&40a73-6Wbr0rx*Ns1YCF4u{2}b<>PWy=aZIxEPD6o z3D8C9enP-N;shSO!C6^iJJrr$?anRct#>NlslS#qQMm{lS8xEP5RYZRyd>c1KYx$R zqm`EacSW7jJLavA-J^aaK=vchk|l;S=G9iz-U|NVX7DzGfp=$dt=6Szbrw)S{RlPa zjq>sLjk`Yee$@15MZlbRnF(~h%x|GX868VrA1u+z{}fydit^u=s z*OwKw1%`|Q+aix$|4OrLXS7Y&B^b@U*V0<+$>|A3hs_mB*0Epkc3(WN+`A4~u{kj1 zmc4U-yYk`eI|Zg)YbQ=Sa_ww~B&Xo!2stYe-j92}bSKUQ_WY}?fuY90V6`esr7+Nm(c$3WFl3~~RpHLB3~f@Pxe$0ih*B5 z?h@MWYEG8!UM8**^QN`S7URI+nC&Q64S(4=09${5S?bbv5Q1{3I2${&peWv zEa=0jK<6?1a#fe}2Xv$^a??Y5!*k&IA|u^FKrXo%^4m|IYp24gDYQ_#Zm|{}A)P+wuQC z`~ROE|KF1lk#JT_p`Bpzb#8`;*RoLqXCTK^-R!hcapkqp4 z>(O-kqk+OgR>vsyGA3Md$sKe%K$H%SRx3~YpQSM~Zt{2DrX-=Fn8-9s?br(ctQfhP zhUI-v`-CcHVobOsCVCz?3(>QJUn3;J#b5Pf+tE!ZU@X+f2J=FMdO!iJ*N9-DKK?p6!IwrYT=yX21!gP zV0E(D97q};S>D;P!p_O$l&Qeup6eVT?2*8=Im6w_gaANgynBNW+w-7il&PQC5sk!+JX(IxRf|nI%!wZ!OzlW*5Xz?vEX{HZvyEG11)T9m7 zXAzWe<-w(b3zt$;j}yeNh!y+u%RX@wN0)$WJY|!m5wu27Z?_dSH_rmM*d4&*W|SDD zjYB?8AaZcu)z4OHY%QzZHGJ}A7kZTsghHpY4FD0i$gP1gQF3vEYQ?Z0>rF*phL_Fj){XJ(8Iu zFg5q%M>>E%WA9+&8>u4ZcVZ^H(su=7{DgAoz$|T+Fg6J^i*LIMB1C2*w91a6HN9hF z`V?XLKN-hZIZVho{UPR_iA?#GlZ?&M~Tb3)r=w{B0Yqb8#wtmqC|+t#%bI zT;w4XV8>w+;Ee7@l1YL;NCZdLHqT%8QZA-DVgZ{ay-470PHUN{ML{Lk^aV7%{Y~sm zXw}RuyYOW`PfHqM;RvpuxOn(3OWq6iUps<10E7gY5|U=#O_a#J!9wO3MwEfLTcfsL z1#ONiU}>X0o{2bKEFh+c4bvJEu^15xxg600&oFhX9&6ecF^_lhUY39}13;F;=MjH< zCL*-)^>CM6YxGU5-|6@$6e@&{q)ZCC2-+)}F={_wcH6E}!|g;NU93ySJA>~#y+xYt z6Q{}*k+(;fmKvtb&A&KUb<;BH;E-2=3*%`6Z~t9(;D|>+|7V6q8;+vV>FjEAJ$mAh zAq|fVs4Z;>@W>t*FI}5@Rs5CiT;$zA-}35TT%1FAk8xmp?bc08sm&wC6)tk?Z+6AO z2lV2g6qVdwgszh~MFRkD`2hb3!;r3;U6%I?U7iXeHuJOyxgo$AK0<_jGeGD`A$}Jd zhyzb8fKZCX7pOn2`0hG1UL(og%Ou6+`4QfN5DG-O1(gv-G!T-y%c*litcj2#4=+{+ zjIwy-u#weU#gniK{RHUHa|d2V_Da-Jc^2Vq(fhE^(EOe3@1nvzm5G7HX}JLi`LeVt ze51|fY1VIhmv+BrhQ&5aMvK|98*DmGeV8B)FZUykepnw+mRvu9z@t4c#kMYegHF*6 zL!~vXWV?UPRSjpsz%=`K}s|y`O_rSjb z2Z^Swz@5au*mqe^-8q+Ii#5>>j`s^Wf?@z||CHLJxf(^@jf$dY9Lyyu;{c4-dZo=u( zAq1l5b#AWVUZ@}95CA;i1a z90O-&_=kI4DC546>mT;zZUnCe-0Cwu~6AU{to(QRsG7gfTtsJ8F0y9e+w z+ehXEY$l!arsH~Y@ej31M4rdf-N&{sMZ+^47HV5V%5e0}=)kcCB`YEZdi=BhK*)8% z`v_GqG%`39>g3XMLw&pq3YEd@-MR!04-Zf_f|$b(iG;d8xh9f-GHc0cp&nBk8>qf} zycw|=g2#)(6jCpK!8YL5Yx2fdmedm<68AH8!6mAAmR|xK0~{qg7IgVlahhrk?-vf3 zm3%k@y%Z{Xc6IOeHk6Ti0Yy@3{i!5So0SjHUHl4g*oGY(_6KfUjSWfFt!<-5RU|K5tD`B$^*ZhY}Ac#&K9dl&%^kILFFTT@p-Krzy%w$KS5=xXO}qlDBs5@BmU z2ZXiq<>uB`Ii@V7kg3*7L}T;6tMOIw>f{6P)YqbyNR0OKZ)oaiJ294dd8DJz~P zs#z?eu#LKx-LkSG#qtwaeAa9gyyb|ktY_u+x4Y40Bwo`-p23v>lukM9O^%RJfqdQ0 zS=8yYPt?_ZLPVOwlprse@o|S$`&jz-e#e!YAc06(%Rkx9zz($S+hYcto_B4M-8rhm ze)!%FCALldC)@G`2^%WvzX1=fYN3J&2zS%W*?zBAZ*J(rL&e~(E1ny@#@?24<#Sdh zGboNN05@5_l(FPDEh?a@u5Vw3L9YKT7WxI)Hzp|Mk8M<*;%*bnOwZCRk2R=zot^QM z#5I?gug<=bVxdo0*O#|M04Rw%##ReuAP@YUeTY;W+Ddw>Wg&+FuTxtBjEc-FkBO2b&% zB9x?JH#0C7;XLRJaeXnjj$49|sYBIstR{ZaLGe#1VJ>sijg20PSvURK{@?uf{k;-) zTAf%%p@e4-@#CV5#4gQ(q$9-}J_pOAlAbT5R+~qCogW7CkVXc4B^~`3szM=C1GdT( z|FhG;;8jSmsx+E&;8`aHaSc+w&gpTby>BOO!|IAmv2CJoxkkO-q zf7{tQaNTEM0g?T<^yU?%rVnrc%Jb*jmH2Lm?dtRemb~JWDKbvXSi@ZK`yVt&7iYh* zqSMj~cCP%y*r|)?H^uc0{^>o^HRiS~s7&!Izib071He<{WQq{o8H>Uny!TjdG4u*8 zIC6kkyA0Q4mk%)e<#i>wxOTiH^K7!dOv+c^#X70ZNzXSB(owfiHFa?cf)PQNN+jlMWhiXB*Y{AFKb`TtO zd}-XM&x;FW&_I2xy`ASRKnLOe+%ATrN6mUMWKC zd1ukJOQbRB?QGcfsT@w8YG!qqApAe5H*J0QDy8vTfDQ+#ih0`BPqrFD5tXVD9TalF zUED-Mdi^okgG&;eFo=I<=jq_)$|3;<;!~TSjdqD8oJ?@RVR>A?DMu7SvV7L)#~{|o zv!X3qYQX0d?3F7Os7^J}@UjM>7Y(rbyo_C6R8z`Mio=CtU~NEy(@DPXo&tAjzd+j_J9^J=gqPm)y1mb>It-EONiCVRA_G{ zO&rGbOvIB?q@adqMgelh4_q?1o%E_QLStlkz?#%E)sXrDeHEs-3~q=JSrn{;SN2!{ z&OlXzEfJ7S=a->Ty&+3SA4}JfRc7Ca<^&h2h}vJYLH22bNC4OblDC;Q-(pCCcodc7 zi4)$7b$NSp&EgQea6_sWF;ji9i9mV22lp1bp%*OI+F4eb|~hqiArrAdTXNSqgYS zCx(GkBaaw4NR)Xua8#Zez*h_!QV-ywXi?#4L)3qj2V-^9R=?Zia6*GCRs@W7d5EP7 z94mSZ7&zbkD?s6BLmry#1QwvXt}4WEY=Y;RQMd@xy_1T{6F`hjGG8&MwqJ4TLlv~} zzD#&v;p=VQs=$6S!g$+dSN(Jukg?+;s{@&X`o#lp829GC%NY;*`RS!)YA?3LV&@ip zz_m9j7%&;UPtc_M1gBmB?0TE8!+|Q3j{S*5PtTp*n!2ffYI2^UhVyzB3|DLbkl5L9 zPu$kgl2RFq5siL1?L*bg_7fKlj}f;wO~rZ5F&(tL$8Dgb8282o3dp1m1ab|=)kHP_jkYT1VTY7F;L4y0lt7oOZsFs z&^MtD7T4UW6KlJwQrppW6F1p*%JcX=tCbT0-&sm89w8GZ$lY`0mB$g7G#8WkDDQ^| zt9)It<9B;oC-#F9zBgY=!L9i#x7|PA$xN5-2}CIg5kEa?SvED&@QRx-Ir+0fGhWX6 z?k}ZyDx`U^b63hSu7AIbVS@lLd6{71Na-Gakz(V7i_AUu;f@ykhF`uf9ElFvnp~ zUY+Ou^GA4hi@T)znZ^us@1m>geqMc(W@?4hpXk^8Lf6296-N7B&;lh3IUeg;IBWhdW7I^tMhb-sY$4~UqG?AQdjE4CS_lOZB zuH8(RVT)}l7PRZ!-i`Jj2+~2p*p(ov#OTEk8Ae74C+)i%}E>clCDqgAa z6ZTsVpIBs3H^#<$?&)|X#aJBhf_^J!`$#;=+LFf1c{W?+y0V@owN{)Q-c0@9x;0Lk zt-^f>H`Sz##DHoQ`=o!Co9_ctR}$f}nXg;FE^peTo6ht@@Ai9!7VFP>H&&>xE`8V91L@bkXZxX*=Vpj{>35 zp6OhH=$SP~ZP(KZ;NB9fKh><#mVbw(i4aOysC(*r6QoF4A*$``Rtcp`%f}W3Mj|j$ zzc9`LFrJ@Qt&@8@-+a2yeV!hU8`oDzL+xY$A;MtKDMX4rC@dnI?ct!t&H46G$X&qjg7B_P~asF*u){+s0`JbY>`?`r#nqPP5ZlCOo~Ze7cc7FD}4C1r8TlKdr3 z{k`>P;a^Rf%zbFS^WoFYnK8Vd_FJ)1;F-6NmGw_ikpkY@C|1DQ z0JE`WF1Yl7!sOvmMBOSaqg1J#Ck=qBO-tu!i8+%RnJcD@yI|BBftsob!>NS@)Zu_Nk~3WW$fz|@Y%pemr!cIa-0XLeEP&o6R0AP zU4G}>rLt_H{n~BsGogfz38R23NsCa)W~1xJz=`oov_qlSv0qC`K1Amy0SsB_D*grV zS?UP5^aQ|HTue}M7fl(a1Zq{x6~JB~;tN2;*#X1j($R(qBCxP}?dieA^qdG_7a0@4 zReno!-(EGoOn#idt(BIQ8E@adSllv%%>>}GxD(!h@es)kur>H)VnS_(*H3ZR$=54i z%(?9Zx=eo|q}nd+e`M+uuaEBDh_p`vp)Ym)^ihrhcEnxu{zC#!ZVC|a-;Z$q7oF%Y zxFiKA|MK?>nsz9%lnJkWAK=>=qf6vE=>azA-GIPtk0m$hUHZTG33 zBsnW|_<gGFQGYCz+kqI`8TKY=K&1Ej=iVNM4RgqlPg%c(-?50f-H+YhMg>{V~$mHX@x45vt>dTp4HH^7xtbUQrj zOhc}0&T&v{@z!MYeX<f-Y3X@P98#)||nS1UAe^k<|G*`XzxM>!Kg?qVH9%vQ(>ZL#d46zulRF zqo?zpQFnIRUm2?O>!lr4b^pl;=`%8{n#C#EcP0#gVuobg4bn(dk?V}Q#-(*jxcFJ| ztSS9`QcaQiC4edkHlkmd9m?;Yrq}O3nky%D%_J?w9z<#~ac0PZfCyj)z-(G<)<1L? zcdd(oN@yS;RydT!SFXeG4 zqjhokcOJ{Fqzd@>bjrAuNHF+qu>!&F&Cj>ocBiKmNsyIcQ*C)9hJ!5}&2+dS>Bq66;0nU%$b$}X}v zxp8TJD6OEHHfrHIuM@L-GK ze@#_&)y}L6q)5ttpq-?l)v9PD;#B?%0?j(5RaPwKp!!61luZJF{y%4o7Dd(I&%*USZgnf zlF^I_-TVGa{T|RUFIcX{g_w~qqk4UECdi9#&x_BG-@O&a{nPG!N7iY2U0d>pgpXbg z&mvAFFOgX84?wTHI#`<;1Z}QZCeQNg)=UuDccj=Vqbj-I%D@BR1zkBW4H4j<=MB!e ztP;x(i$N0)QeP49@MNy9`?CFedZK+x{Q&_CxdJCP7R!=$$8gZFxKtsfV2f@*g_rqH zFjN9Izj3fOaBX;2%M5fsB#_ZYw2u4;>QE#2NUoX}V)1#HY~IUo2=xW2Bz*=Y@Apu) zng-q{Trd32LdaVH(iuEu24seM%{$4v5CYEK!NZ0{f%g!nb9aKnF&+7^p1Ht*)9AD6 zR+^{Bsu3aI+4J=|+nt7@mzlKO0Ir+@JPk)ZEd`p9lq2%`c9Z4+8yXQ>RuhrPxEI29 ze$z1!{PcIFW9LO3Y=B~UQc+h;B#Ei@a_=o5^Rmn0vfCf=pV@^P2s35FDhK^#e(GL; z-1A-Q@6}cwmfAuloP>?!a7t>Dh4+^Mv?gg_d)#>XvYFRfW4&0YXRA7$Sd2^sZ^-y^(4F@*rPvfAZo?;|0%^WHs)#jWet z+ybH;LT+3_=O~A{ojx|L>ecu*!J-p9p@8U>1y*=Ej1QK)GwVt$hf}$$U8hXhNOOER z@p<};m5qDq8>GFiK~GmyPN%I0R2Xq%3xxDQ<=iCNx%@#-5^|+I@b^+2kc2H)pm)2$ zdC86X!Icbt0c!Neoc)T!2*^!yl{No@+?z+NoY#%_YDUjCkGCdvIiU=BX8@(M&XjK% zkA+WmDvN7;8F@*ryjz4JmE?dl&2VVUg4IZ!g4T9Vjyu>GCaPbFy-?C|9(qP(ZgiC_ z4CMdxH1uZIS*e8dChi8p`F+ZKoA8N%@q#=j&jYfs+j~0+_`u8@s&@Dg72~WTTC>bg zvzg+FueB&Ch0QVql#yKL=a+xnotAM@3qEVbh5VAu`w5(PHD-c1hJbfDL&PKt7Vb)7 zTp0gD3B<2s_QYx#mdGvOHl+Mr0LpdTi7KVMI~3gz9ceC zsfOEgiT8!hPN{vcG106P>YXV{w!mz%IKUjZ$!PUAf^3=;kkxfOP5FS&tiy#hQlR-3 zI=A2(dtCS*GI~Md#a8F;fkI=Tmb5qFVNYQ|U+HHfeTNFz{pxz^Gtj*YzWf2QotB|} zcF8XpkltAcH0P(veK^}u5!0f3>1d?$j}x$$ia}vly8?;UfTiNN;C^Y+u*40;k#xkc z0;Pqal;HOl*kT41Qs>_0ep~i8cUU@-xXSEtfR$FJ7_0VuP4XMDnKc;g<`tN42S~OA zuC*hP6(yV=aj39pk4`q;$c z&3#gLF@e|&bl{gR0plDdpak7wks~uWH<{3T7RLr^eW(8MF;KAu7!WnTti?YCXjZ6j zTf*?BdA0iFgG9Z~|vq+d6({Du`QH^8&D2d0n8wO>|4t zhp9d4Lo?UJ4a5@Nv_Hc8uO-lPn$#VtO6JctImrthE@jdY@!Oq~1u~x3cfqKDkQVqJ z=)^K4fP-)tEnJF|k&x`>4v?#qFM%Ww**l{fyK-Yw+_8-LL`EMPZl8U$6c>T4NcEL~&N)|r@V6cbZ~*kFbICr&a(~xocfKh*ROz^( z_|vmtXY$AdBW`Yp7}=XK#J%)-y!?FTzHUq)kVsNRR5tetib(|5Ud;51HuLZA3jmQ5 zu-O6TRe|q3x(!hSZ|3aJCfrP(L1mR(#)^5JF(hih2AO+U`xf_U?Ra<3G-{&y`$cA@ z1hIMMvNX2ReC7o#p)m~es)%NS|Fs>y2iL*yW7@0t7b4B~3uYtc2wbC|-{rD3+$B7| z-%UrIL4HGMP^ZJu?5yFq_b`K#=!TQnm7X5@MS$*_om_d}!?*ni1=5t)wYZ?lay@(r z_bN1>y^f+;L4Krf9jzJc_M?8f2+}w!7d+q(q!5(_@yy|a&GYHwqO|l>ltx;DB2QN+ zffb}=PbgKI#M2ZE4h~9HZ@u;+xz8b$F^jt;fFy%rrS4xF=y8l$P9!`RB=Af17fMPN z0YB&bPP$d!>Wr3P3xPZ@F6xsMZhlO23J6dH<~rVuj2sOcg@#mTXU`su{;3_@ag~ma zRg8;P82ntjrIOT<5bry8Y_7%&YH1~I<;xu60apzZT#aRul%~g(ceG^1{oSZdIs&LZ#l7QREO9%Yy-qyI9lp1Py{W!U9=gm4vTu?n2M&Cge|_1chBpw^ z9!t@DjTagsjW!jkpJOhxHa@v2dz>_4t3jnNZNclc0)uWsWZT2XX(qp*mE5BioEMV{6R5#Ca^Ke-t zYu%spe+&(<-}BlE5MeyAjZd`BwpmxaaK9d7gbn%y(csy}85~DoUWiu?I6zkzPQ9)x zvwfR9i_f2Ag#y->8vI=ILPp__vt70=o7uqx&A(`gu@iM|1|B)5ZiRFF?#IE`3^Nui zskFECNh=ZAM*(!`&4a=omH$%E^C$zrEEg%HG=L!oa}YN5Cnt| z%6;nXwTM%Oa@aor5v^#EQ;Xye%DggL;@2^yKlg{ zuRW9tvUyca|9mX7x`Wl;V7GR;RC4hUx&~;qn6GeQcP2l8`WUz4s`P;Z+Fv4;v$p3` z3F%0h%`7GAk*3!VkQXx#@pRZt-Od=h}7Bkc|`vpVu&0__4ByoR$2g6=Vl?q`#DTdsT z;krwy(L1s!hkaf4wCt*Thh`Zu-AgyQ>Ml^}DL)4Ha&l});jB1G zvQfHJk<5TS!m#+>;nvM^cK$Vl)MS%dm{}s8GQqar3VCZ{WxoBy3t~Th#BK>(1jr{W zg{AQRINI0E5>G6dz7t}%yPTleV#eQgieGZ0-u|E>L&Cxp5P4`$`RpJt5u-SDb8E0ZK?pF}a;AZIa$HCf!o-1S{KAv->p{h0jpR-Rt^af~x zWo5}TSMC$Jj)7Sgrm2`t&G)lX4=xk00%<hipp-)w)`d~QC^3@!+!q8ACspw*s?0nl7PVUc!UMuA@P?nI|^D_Hx zz;2-=a|tDVrM37`EA8c%EvgLRh{-PNv}Qn}j67RW)SP=2@t*`Miy?Z{fL?cXfXhq< zdopnEsWI5b%;HsI(7oR|xutIqs5@fNIDTbniK#c?GZno@8006} zcX1pE=9r0^UHjoz)~U4EVCYS|F0WOlPoSOO-2url0fa-=dh^cZVj4($S1U(SCOm3< zn>GVPTnd?GRtIJ;l8;oKp1n}GzVB_Uwyca^G1T8)s;NmBENsQN&DA!%m2(WJIX&Nc zv}MY&8V0}48*m!M=L`;=+&?iIju(gi7S~B1b*smZi&n(MR7|oXgW6xie8*rZ6LY8r z)9paszO}b+U+aji0GgffwXT9?tOu&a$A7$-V5#7(BIiMA^Bqylx077{BH;4$?^3x~ znsOtoO37SrUp-;x&lY`!R;&QuCtm;Cvo90ae@V8N=Nu?z6LwH$m0%)#W2aG-E2NMB z|3=39eRiq)F9s#y!Xsdy3E}EM+911$)%PhF4Ntr&PN?B`tQy!Xrr{`RLMrg7yV`N} z2htBPBFy=0-_Z8q;RQucTE@0ldkupf9hz~2?2ErhYccTr8`iF)62()`i~VM@w1n8W zRP^@eTN(x(*}Wpj(KcK3$nlsWDjz(a&j)fWDkX>`#GPW4c(bmU^d2lzC2M+$4ZDwy zqdQK6rCI~ezTVr#5v`c5o_+CroDE)ny3btXZ#aH~(ZMKsi|Ql4a+2cUxy6+ZNc@rJns%&hdRc zUYh@g(Eqyji8*SFgwI7NFyYocoPs%|JGdmbB%KmB5^%GYTh~_anfmN04AVOUmhYV0 zS3(zY)Z(R0T_=0<>U-vB+)+ofD}+@?@c&sX?5X(VG)z~V4jQv^aT;i5V)tDzNB-(Q zZ8?&!fpFTfdu|kmjIJvMQ0e_U*lXTq-`ZA@`%nHK89I@|Xu<(O5%3+gocIWuNT2`V zD0~oFkjx^dQ9AE>(%V~a9=qx{@@s|P-5{`UYFjpGxJ*c&Q26}*^oyw_7tbdmHYeJO zBaI>ZlsPrhgl`@!>c40~39=k<{c09!P39y%9j+$pR%68Y7*rMkXY4r!lyr?=LhdK5 zGeGgA_ycgKHxeRR#n7-MTf--{HOFRq?!Ji*j(=D898#v`k#Z2fYOxn`>W7_ngq{65 zuR5f+lj)z6F?ZuYuTDh227Yd z4rlD>NMUA2VPQ`gckJGuD)?hEcKjwImWZI17_hEQ^a|G(!_*L0SYL(g-_MXqr;Au6 zrVN(%Gv^lXBJjdwz|rE?WJnHv+`fo57`g5E-t4qMd|(AjxkETG+jRCTsEwQWtL zKuth!uDx2akZo7rF>fa6u|AjUr8Jl+!AW3?wS#9b%ND*C1D^kvdSpk72K&H6pg)e; zc$*u)Ze3?kkkqE5&VICz;IL7ArJ2E9`un>HhuyIC7CKoKRtu2I-ks_^COWzKT4{~- zZ%8)8MRvy{nc3IgP`L`!?6_|22@MM-cf7KL?fn85^ILTr}Ih0Ssjb& zt*#L#X2xHO;xP`GKhx5tpn-e1p>3QkRZ?=sr(Y&JYZ6-e{{$`js&rdds)_GXpI?M4 zMs`n5?ah_*)ndF&kZy5(*ck%pUatAw+DEv#-+U7=THdIrk*&M}+AMwZO9yKF%q&}u z%L9+=&2t{Q^69PC|3=D3v6H{i_f?e^q#yX4?kf%=ZG#I_{#3UbRZNci3NDBY76^Bx zO#+!zI!?2Ct8Dxn81i1^LXkq-2Rh;G9hOwxNl3z{hc`3G&PM(IqLt7l<0xl<) z@*qE#c24eZ?Qd>}+@6!s$x}o~_}>6mx_N+@cY+{CS6?2aiW#1tYNa_ynjrNUF&K?= zl~s4?$EtawEdwkLLSkTxXYhK^b)-?GCZG!TZV$~KrJ??|w|#a|Q|h&b8`US=rZ3aG zPFFM)q_pBY=NPkxkt(7j!b3KXK(JsAA++FWz2AAN)?9SJdXir^XDN@ZzrOD<;_C2GE`nYdee ze&$AExT%EhNu1;LnTin3;FV}PCQ8D%t(&v78DhHQVz|fJt6K4$YF4i2OHWUCvsxQ% zz3cxpdrs|c+*mVW59;>^G$+F5#(!V0t^pDJhN82j4*-a+b0@*`Z^uIJJ13+5sG5(t z0;|c}Ph}-C>W}Ea4IFjaGAxP&);(wd_E`I)YWIdmmb;#$hTUs@HI58cmMglO>%B%C zmXPk@iMA60LH0W1h_WQkm0W3#wJLhr=pp1xbQ$;goq=B0^__*}vB{-du#%t2CO7IR zq~Nme`gr*~0xvUAmh3Qf@knsn(Ek>y#$t2>-8T>n8qDDt33& z+}82&8kVH-Tnznr*P z=A2%8X}GO*eo(xwALlnS{D8*^>(WxiXGlVx9WR#&o9~2g*-ixJMnKS7=Cqwa$=it~ z*Mr8m`Y>FfypFEp$96NU-O2|G#)#3nbDix0-zCMS{xrdY6sfOU0VAceP^G73D+6yQ zndiYVzpHe}^O4W}zMeHcvI*{xZRxr8-DMFzLEYtaf6-WrZrol@I({X-3IF)n+ZfQu z-}@RtPlGODP417rOOA+vp}kcj2L;9)WBO*Fw<+b6kR6t8m zGGPi*&>Tr(O5WB|L^&sxr!GqGlXx7R+BqcXo(ue4`wpl~o#XEzD(fy*fWs;nw{gUdu69Bq7)-iJI{jrede@yS>l3`s-0JJ2&ls@4<^ zq4zOkKP4=bxcPV%E@IjzQ-UQ9&;21M;PhFi;b}+e`MP%~(2+61md^9NRMv2px({Jg ziVC5AJdV2_r~Td?-ET^3 zE$iG55i&ExQg!+Te!q0)ewg*xyS+x?h?)f|<}Q9~IUPdntyYKoS9!r+br?HI$5py> zbUA2BcP91Vviz5>tjgAqv0kjX>nF?JuN#)(6ECc=g$F#`?Nn-d>NUWlm1}J4|Mp$; z817>co25{F7L_oR-}*`4EPm=&pScWdsJ>?HipVKOdlwHW>&dwTE;Yp+M9PAo=R_cv zr*$s~lTkxOa((Dg&TW^MhZbQ$LO32!FaGAB+K^3*$uqZ<{d9Co`O}#fFN10SvW3cR zWTa9Ed>y*Xrxz%m%t}1T%UNmrngfWcGDoQ<^y4eiKmog$IhQ_K$zkwNcmo54bkskU zp>tz%kBuKu!;U<dwyH=-C}nzdXxpQZrq%$dXev~VKtu-$!o<$E+|-$zLNA%BprSr z)UMq|AK={{rm!-hV0^!2sBRLWAQRlW^=tvX**qo0k*t$A|5gW4-sl|nSJN~onD)ui zK#%&9K(d_e@UO>1fbXG%hMdzY*ZaR-=<-RO5u3VDTi zEJfwE6N{-%;U@iI7TQa6I$S+l1(XiW1Jp#vgpe~LJyzbKZI=B@4W7`y7L`D786=UK zIv!Yx@tM`S}b95@J6hr{WeS@RVCkjK{cEh4%9A(YoId7R?YXe!hpNQrKs= z*U@nXH&DJmP2-HfHJkF!P`T}h)fQg~4Lj1q`N>lLab-3sG@P^zVVDLeGn1GNAwAx$ z`v_9Sf1as|*^l_F+nt`p#^w=X4xdnV))O+rOC(dHEe+_(zdVS?#cNDObHTDf!4 zlwHo2>zZ|~yU_9{3*jo_);9h*`v?ZQLbpmeEaO$#zLJ?O&&q2(Q=|t@_Fd^<`Koo61JdPwa7z%TBfehhiVm=mpM%G z(4q0V?cNWiY9^Ni8cIr7(4st;GOVYk6?c7kj|YpCF|`hU9fhg1T;g_hO;AN0?|i!y z_Z$GdQb8*pdwBFZkFMC$I)15zP8^h}xCO=zVsOS%W20B_`aEAb!sh7{I^9vX(`8jh zad1|k3AmY>m$D>e5LZxje_>!D3A(}zPILa^TiVU)Ql07O7eO7vN`+&uu>L&9C4f|5 zO&{uj=dba^Kx$F!Zpa?x;iiq7uU8QzcELvJQc6OPQ`>K)XyNNe8`) zD$1|<#Rqs-7FcLZY08~>)RY*LjZ&>v<81%Y=*&7nX2yu^ozItJO_)o4LIM>7K~cEw z5XItgg8uSC?H$yXwTMD_=(DWYH3UQ)P^gW_yYWgO!Q!8~p50WbL28PuSf7wjGg1t} z5|yiC@m3G3?$Csg+`eG@^HxdfCKt!aQCOli9^y;o&7|IW7z2-lhn6(xjC+hm}bgEF<{lkyM6QWo^kD?Byh*o{Zf6a!)D&_;z2FT=VA-d1(%aJ(6W9 zo@F^$bnbldBIg7B_qC5zzk(?XD|Qq4*Jga|*bt?B^|DGHs{zP`%W3-m6|!B9KJ#~D zk+m_m3p})T8nl0PuvgB0`S)*onUt5HE>ql48K=#uN=1#pVyDI6rXJUBo7CZ9L+K3m zn)T!l5Fe>CbJc21Lpy1AvHGt26i^$8n*X(t;=(YOYnU3^t@-8CPo&uJ>i|YCX|^_% zlhp&34Vy=u$!Mf1C{b|Fx(lvJWj(0cUW}mrhkNhNOciL-Mk(_VDlg9Jx0X$w-*N~@WCWA7RQOyEWr|B=ai^zbzvL8=Nm#o5AY6k6` z6h$@`t08Od(qdf+KRv7`A&dauK0)m-)bQ1)=-8-)PQ*Oge{9~-u*pe733PC%@a2%B zn4_|~9)xA*7!QEwGsCw3N(F`bHBYF9Jn)(eMuGO>D6F?t8$qF4Y;-SRQV#HNEbuG zjY!w7;rc%6^yy?#a3WYoDryNGYf}|BC&QasYBn{$xa{0AZ0pD|r$RTcL=J^oGSwlkeq^rCEF@fB*Qxq5-?V zZ6#DvWHX|Fk3#3bTvZ{}7)b6+VNchIflZu#D%lPOGV1Q0H<4UIY+k@yzi=fe;sKBG zcrwDCAg=eX8NW0sf54tX(Wt<_RBI1xZjaqAuotlQFYA;L_09~-DJJzZq5r@5`v*fW zJY$3u&#yYbm$lB6e=~>m-ZMwQ`eT?WuQvo{@ z_e#$`&Ze%+i)IgUOx|${&-UZ3R)1l_tFSst$p?<}=iI25iX!QWRUVBs0pKHwzGTTsusJ_~CD{SNJdxy%wD;RF91- zB61Gpm`r_hLTW4sxTIyG;cuV-+&Y%^HhJfORnApPy%|O1J!hh>$_3FIU`b#elQ?X0UrV6p6S@nj%*N|0U+NBU1N`C4p}xesk0rkoCUgFKTEDT zc$UCi&*p><-E;dnbP#*|eX6MUvQvl{vkKd`lTCBmfEJyEVt!uQAr$L~nS5eR%evf~ zBAM5U1KWmk{~Bi6=q8qpaqzlj(vSAYU7djw zQEc?owa}~eJw`yz22e0IKAj5N$X3Yoqc5MMEU0nNiyGbpYF_V2ayaNh3g$E%9Ht%K zYS8-*^4HpFrH*N_^Wndehi*(6x52xvdek@Vgq@WZeCo~Qnqf!~Cm_l<{$^s~HpG)pdPIgtYMN<8S74w(#vAT-g>) zO^mN*rlS!P%53tIknCj=Kh95v*&Z4W?=EeZCA-uvsUlgyl%v-iwCduH~29u3RJdSPyE{TSPQQ$rqREoFN*tHSu@7jM)Fyg7cd^GTI9%;ifR^QidZ-ov$f&WB|yA# z0dr0N$mEpxZOP(kiXh+orfp&Pye5^vAXQ)0MS;utjxXhJvoWz*z35F|^;~`AYAeg- z-968dctei!q4N}9o)z#qG>2T>D)dUlWLyzGcYd$BXJk?9>O4=vs^-<)_m~dT(9$i@ zr`5VwK2|ZtC6zwf;;>+9!blFz>>Rq?&6o(M$rTlDe13xCxBwUw3sXoR^w@bj+ft)- z-?Ff=$$#AWip0Z&mHK*S0aJ{)uf~66Jk7e|eoy#SE)yPFe{@=LSLP1e&SVReKiDcq z)1#qbBpUk#Kfi1`0AFzC@*f{>;c~y7BT2y$L(6a)I=pLOtdyaGyCdRS-X%MH;=YG^ zpS0i*Fj$FH=8IB7D%&_k%vBjUbK>&8yw!+MNtX@M341X6$0WPh$S;Zfb;EVwB86Vx zbPfVZ))%e5Rz_grw{pZ5%F|5Ep@V3{)zw=bEgGCuLuwI`Ra={XZl~oA+E)GWmAXA$ zVU~8u2kAU8fKV#%e^SgY(m1qS@8hiQ`I_bvXA*+rqV_gEFo#NY&dEjF!EaEAXT)u= z5JW6bP^16NMEm?HBlHhqT|>=T7eu7q9{2`xYL_r@1*pSQnVV)<({zWn56$t0iz5k4 zuvq`Q#q_FY#RMfu7f}=qxmP{^$(-n8@BDcYd3M8skBXQ4umZ##6v#2X>X|Pg{eaCs zjikUBE~;0yOTT;~9OHF!ass4wg0GGCh0P>2im6zvSAdT_z6?pjs@?NTLm;3#?Y9sQ zrGQVXEVagUdpZR%tkvY0@vUaV;;YfzX${WyY0p!_q3S;6RiN41IgcmxSIm)lkL`c? z!(M05aA{>pboA-!NWGcyDj%ru7_tIqc3O9FlU3H&tB?m{Og9jiyIEQYruEcpt2}|= z&)SR8+bM{0^`-r{qqcDZ2YoLmZdOQ3EhL)VFq#c!KwXfGfvD!Y_Z0o0cz1U#ExT@* z*YQL7)K?q5EIY^>aW;(jX|m~$ zii;O_mU@x@+>`kPh>QqJCJnuBWPnED;h;u1&SO_f@}kL;P|Y&pFL3Ebx5l z$0po0KX2p7ZaENoXx~M&tgCap6R;3Gmb7eAUTyLKn7ot%(&N^#;0N3iaV|>?^J3nV z>=!BH3N*Wv(G>X<@u4c;1&RXx+BqTcpW~s&q26YCC7`$^ibq-ZlHEMOi zr0Fe0UsPl&lYt!*2r0+%=H_Dqr;X#hM?P>4-u!$S zyA)dm4|JW7lyl8&sG7%!6XGeYyh{)61r*oa?%>N+$F@9vEQhF(t<{pFF7UJgn-j97 zUqsvW#e&yc(xQp04Xm1Ve!&I{!MHo&m1D$iWNKADyQNVznTyFo{RC|en7i4)MVqe( z;qiNioFl&4dBZ;Vr{CZYFA!E`s)w%oUWv_rM*}z05j|Hm^d8Yh8+fvZ-bwHv zkL^yXXuk`5;&I%XPMYx#4Y;HI~*;C#5x_#`txZ6EL zkmI(Y?V2%5+Z!hFM_c_KS*oC+$ggvgRT~reS->Z_COAQVejuo(FRd$<23_P~)T|!J zNBZ_UTBd}qAExaI@@92mDLi^gMKmyNc|>4`qR^{M9&t7$6@tLLaJ!k*7Z3XNx#14nef9%aUGs zLT2kT{YR(^uvE39)=Rx5(6GcBYX4^OUio%!%gAeVx|5b zDMMa%bIUnyZj#<`najD{hyAsn3>Ga|8nVjw0lI`3w$t}2wHs2EKIwZXzT-;rJ@57Y zHAlN4aFDB?yq?(#vXkJGw?bwK*7Drgb>dY&hvmh}{aGzoM3VhDxHVOXGM|&^v<&gvjUI}2 zR%^nf1OIf=AIc1wsb=J6r- z0Y|_Tig1dHNhjoRy;V+HA!*-C3!0ifIno&N46gtkKKpi#(}{56?vITJd9%Vfs=Xtc ztfvRVjaZ}aiV7{RJTOZ0!;-|yYrLLkDZXHG#F`l1f zHua-Dkjm)>P5eGIzF$;mFx6waG;zke3kRo0j8P;*LK}IDAs3K;HG+TI%mTyZOl8qf zUwj3uB78ol9_4CNJ)C`Ax3ZqzkiRe@FD+wVC7}ESzdap(Fy*~Bpl?cd9Ht~;en&|l zFZhS0X2)4S`gho|)$}U!g&1b#^98m$@6VC9G{o69&M%Jx?h$6!R}$;)>DJd8rW8oF zx+9SHUHbg5vLe7HHQ2(c3Yf}lc?n<)^SG_qqa3<>_s{u&8TShqJMGPT{o6TiCztrS z6+Y*!ncY;rFXSKb1C1{RBYPi$${HakjDqt#amTyPHks zK+|8z);&I_n86%wB@wsY*u@YD&HmvwEQJz?J*`;ZlP4@@mK{Fr{O7HyiM!Tw#I_oW zmx{%;y!_Q@{ta%X-KqA2_p-McW4QYEXvR3oXQ=n1ST`v|ezDTek0vF)ng$Rby0y`L0i!P{iaFQb0;wdrh7<3U2k)a)sP&$PpL}0$%;X(s`5XQb^~O8 z6dm4U$<7YZ5BLXo_~bvIxH%{N2f>xzi97smVz`)moTSE;?P8VrJl@8VMPr__rvkIW z>n9lB%FB>isZCH;r!XJ{0E!$iIN60|rdiSa&ES*ee4b)3y{3tTZ#u^XSiF=KcyzR@ z_t{<-=JL*)$ALn%60;?|Icv(gv2L@Y3p$Oi!OOo7@${*9l^y_xWjh4l!DcCmM28@?{||&w0{j4GTNNlIcuWK_PH@8pfei<8 zOd)|d6(Lh%5(yj`SgsK3v<5o_V#onhiOnL4+nhp5L&6Q7`!E3Wm(mF=9AyGA>SqyS zN?*di8bmeyA7TO_@YeN^0z0X@-{w z5HY~?1K<>e%tRM$xKtlu2rv@vr5_0J08PFexgTh=4THeN!E{OawB#_i%sQnb4XKqW z?^{^|-cW7PX~?V>ni+zM2X*ts-}^g}3Xntikrg#U^=WkAWyVAH>PT<6UhMQLnonAL zNf1qK8z2Q5#iI&HYNsQ26G=@Bfxn!uRV4K#s3^}1Vok4aU)Lf68m zeC753;Rbc#VUV%jdLN)(d(CXBPCIUh!99Y8V!=c6Sih-BLr}>EC@oWp`NlBBeOj_Lm4W?$RnW$cb7!tk_NC)qRc!$dnE{#I{Lt$fr0j2y(j3TBqBjmeS z00+e+7^*O$9@+Jj6?D%yN6p0aqQceMMuJh^ty>Wf=P*C0U%dqG>I=6h!^<^Nt}23p z0J(KD8qmYS?~;de0tOo|@l7+<&2=|0jtK;_Bm%KyVw1o}qgQ}jOmb0y)AbR7#@9cc z!64+ig&Th^0mT6!{VVwy4N)&7+L-Y+kJ z#mT@y`fy;n@~>Ya9Nc$W^GlJX@B!f5fC8Z2wSlpjoxOg()@_m&OxzbCNgbtF7=8ov zLhHlHrSNz$!n2XneL?_}$FH4T-97Cd9spo{T1DEt(gOpxK+kqR_^wT%>{)w{>*-(Sfc?gz% zP#!k@!!l8IC=7&dJSjYyFJL)%EO~Y^K;ODSH17W&8Sxok*jCf#GnyiZ zBApttz`o8gc={9T3}PZmuyQyA4#Gy|g|d?W0%|KR_t5g3h3)@dF2&xV{&Cv`N_v&9 zU!P=U`ht;c?N_Y*+i#ye{LN0-9?x_%qVM#@ZE(Nky8gG$vrnsmXorq{+*Lz*I z(Zm&l>mPT1?IB0=rP%Hr{a!u}?#QvqHF0|j^@MTv!tedM*0n5~PK^81PmBBf0!sbz z39RTf7FIO9lQWxnTsi7zWKMoNyu1>foM%L(!amq0$3FfsyDWC!6Vf!Gd_UurlEVPM zWXW=Rhy`8S&aIiTzpAA76#o7GOlmT)ICy6W_i?SHlIWp9P1?iYfGNHGn}{bg9Bnz{CxWUZ z@uM{zvuD5RDit3@8hscW*IUOYSa72g0`wX}ygjg%K`~1oe{{x1_fIS;z9KFcW~$Pi zvv_oiS5^4-7b#!gT~qh&;&A3#EgI>o-!s<7y~PfUX4R2#T+LB3y{!0dJ1CwzWhLHQ zvtguFQ*kI*Vt=*yR~{C11+8$Yv8kzat6E(j|3Q!o+}}^$jk=?$NsZ-cV78%YajYZ3 z^S4EY%}H~fPn;nAA1i)Nm`1H0{Vf~BCj@b$QP3pl4e}RyKmI2BIMn_8wy9AXh`B3$ zKd}G>OIs~4{`f7}|Lb>^>92(sBJD-Vdr~=9Kd#+cPVzE83ep{`T(*O~(93_T6fFbK zv&Eu%CrNCef76Aai%x$_ly+wz?u_k^BQ6UC{&$o9wG7dY@?_=9%16YAEu z86dNNo}Q44o$NGyLD~&Nk+BDUwDo$E^bCj_U3R$eV7**ewjLrY?_VP6(_|^jqd+7= zPBv;JJC>92oQ;2xt@^{0_ntZ0grB$LgtfU#*b&K++PN05Nz_}#0-9(pUqM5TugvoT zE~9t6v#z64>qOv@aOn5?{Bs0$K4@iV=h0}M$k~N%SZBf1yR5m<%FF;!vI@70Ih{^#^o_y> zx_rkY-5$QJxD(J71@4|Gr^oolpsiKQ*`8CoT*lC^-=}8p=*p(JZE`yliv4;OcEBw* zv>@dAev<{fq3Wo%f&iJPxt!N!Ks*PS^A~_`{=dC;10Xt~{{Q7_14!zG`v04&2*9=z o>ir+C;RN10sIS0&a;pmake(Kernel::class); - -$response = $kernel->handle( - $request = Request::capture() -)->send(); - -$kernel->terminate($request, $response); diff --git a/Chapter14/onlineStore/public/robots.txt b/Chapter14/onlineStore/public/robots.txt deleted file mode 100644 index eb05362..0000000 --- a/Chapter14/onlineStore/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: diff --git a/Chapter14/onlineStore/resources/css/app.css b/Chapter14/onlineStore/resources/css/app.css deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter14/onlineStore/resources/js/app.js b/Chapter14/onlineStore/resources/js/app.js deleted file mode 100644 index 40c55f6..0000000 --- a/Chapter14/onlineStore/resources/js/app.js +++ /dev/null @@ -1 +0,0 @@ -require('./bootstrap'); diff --git a/Chapter14/onlineStore/resources/js/bootstrap.js b/Chapter14/onlineStore/resources/js/bootstrap.js deleted file mode 100644 index 6922577..0000000 --- a/Chapter14/onlineStore/resources/js/bootstrap.js +++ /dev/null @@ -1,28 +0,0 @@ -window._ = require('lodash'); - -/** - * 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 = require('axios'); - -window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; - -/** - * 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'; - -// window.Pusher = require('pusher-js'); - -// window.Echo = new Echo({ -// broadcaster: 'pusher', -// key: process.env.MIX_PUSHER_APP_KEY, -// cluster: process.env.MIX_PUSHER_APP_CLUSTER, -// forceTLS: true -// }); diff --git a/Chapter14/onlineStore/resources/views/home/about.blade.php b/Chapter14/onlineStore/resources/views/home/about.blade.php deleted file mode 100644 index f79abf3..0000000 --- a/Chapter14/onlineStore/resources/views/home/about.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
-
-
-

{{ $viewData["description"] }}

-
-
-

{{ $viewData["author"] }}

-
-
-
-@endsection diff --git a/Chapter14/onlineStore/resources/views/home/index.blade.php b/Chapter14/onlineStore/resources/views/home/index.blade.php deleted file mode 100644 index 1affb20..0000000 --- a/Chapter14/onlineStore/resources/views/home/index.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('content') -
-
- -
-
- -
-
- -
-
-@endsection diff --git a/Chapter14/onlineStore/resources/views/layouts/app.blade.php b/Chapter14/onlineStore/resources/views/layouts/app.blade.php deleted file mode 100644 index eee7fcb..0000000 --- a/Chapter14/onlineStore/resources/views/layouts/app.blade.php +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - @yield('title', 'Online Store') - - - -
- -
-
-

@yield('subtitle', 'A Laravel Online Store')

-
-
- - -
- @yield('content') -
- - - - - - - diff --git a/Chapter14/onlineStore/resources/views/product/index.blade.php b/Chapter14/onlineStore/resources/views/product/index.blade.php deleted file mode 100644 index c82528a..0000000 --- a/Chapter14/onlineStore/resources/views/product/index.blade.php +++ /dev/null @@ -1,18 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
- @foreach ($viewData["products"] as $product) - - @endforeach -
-@endsection diff --git a/Chapter14/onlineStore/resources/views/product/show.blade.php b/Chapter14/onlineStore/resources/views/product/show.blade.php deleted file mode 100644 index 0adad34..0000000 --- a/Chapter14/onlineStore/resources/views/product/show.blade.php +++ /dev/null @@ -1,21 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
-
-
- getImage()) }}" class="img-fluid rounded-start"> -
-
-
-
- {{ $viewData["product"]->getName() }} (${{ $viewData["product"]->getPrice() }}) -
-

{{ $viewData["product"]->getDescription() }}

-

Add to Cart

-
-
-
-
-@endsection diff --git a/Chapter14/onlineStore/resources/views/welcome.blade.php b/Chapter14/onlineStore/resources/views/welcome.blade.php deleted file mode 100644 index c587c72..0000000 --- a/Chapter14/onlineStore/resources/views/welcome.blade.php +++ /dev/null @@ -1,7 +0,0 @@ -@extends('layouts.app') -@section('title', 'Home Page - Online Store') -@section('content') -
- Welcome to the application -
-@endsection \ No newline at end of file diff --git a/Chapter14/onlineStore/routes/api.php b/Chapter14/onlineStore/routes/api.php deleted file mode 100644 index eb6fa48..0000000 --- a/Chapter14/onlineStore/routes/api.php +++ /dev/null @@ -1,19 +0,0 @@ -get('/user', function (Request $request) { - return $request->user(); -}); diff --git a/Chapter14/onlineStore/routes/channels.php b/Chapter14/onlineStore/routes/channels.php deleted file mode 100644 index 5d451e1..0000000 --- a/Chapter14/onlineStore/routes/channels.php +++ /dev/null @@ -1,18 +0,0 @@ -id === (int) $id; -}); diff --git a/Chapter14/onlineStore/routes/console.php b/Chapter14/onlineStore/routes/console.php deleted file mode 100644 index e05f4c9..0000000 --- a/Chapter14/onlineStore/routes/console.php +++ /dev/null @@ -1,19 +0,0 @@ -comment(Inspiring::quote()); -})->purpose('Display an inspiring quote'); diff --git a/Chapter14/onlineStore/routes/web.php b/Chapter14/onlineStore/routes/web.php deleted file mode 100644 index 0f5e40f..0000000 --- a/Chapter14/onlineStore/routes/web.php +++ /dev/null @@ -1,19 +0,0 @@ -name("home.index"); -Route::get('/about', 'App\Http\Controllers\HomeController@about')->name("home.about"); -Route::get('/products', 'App\Http\Controllers\ProductController@index')->name("product.index"); -Route::get('/products/{id}', 'App\Http\Controllers\ProductController@show')->name("product.show"); diff --git a/Chapter14/onlineStore/storage/app/.gitignore b/Chapter14/onlineStore/storage/app/.gitignore deleted file mode 100644 index 8f4803c..0000000 --- a/Chapter14/onlineStore/storage/app/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!public/ -!.gitignore diff --git a/Chapter14/onlineStore/storage/app/public/.gitignore b/Chapter14/onlineStore/storage/app/public/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter14/onlineStore/storage/app/public/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter14/onlineStore/storage/framework/.gitignore b/Chapter14/onlineStore/storage/framework/.gitignore deleted file mode 100644 index 05c4471..0000000 --- a/Chapter14/onlineStore/storage/framework/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -compiled.php -config.php -down -events.scanned.php -maintenance.php -routes.php -routes.scanned.php -schedule-* -services.json diff --git a/Chapter14/onlineStore/storage/framework/cache/.gitignore b/Chapter14/onlineStore/storage/framework/cache/.gitignore deleted file mode 100644 index 01e4a6c..0000000 --- a/Chapter14/onlineStore/storage/framework/cache/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!data/ -!.gitignore diff --git a/Chapter14/onlineStore/storage/framework/cache/data/.gitignore b/Chapter14/onlineStore/storage/framework/cache/data/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter14/onlineStore/storage/framework/cache/data/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter14/onlineStore/storage/framework/sessions/.gitignore b/Chapter14/onlineStore/storage/framework/sessions/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter14/onlineStore/storage/framework/sessions/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter14/onlineStore/storage/framework/testing/.gitignore b/Chapter14/onlineStore/storage/framework/testing/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter14/onlineStore/storage/framework/testing/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter14/onlineStore/storage/framework/views/.gitignore b/Chapter14/onlineStore/storage/framework/views/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter14/onlineStore/storage/framework/views/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter14/onlineStore/storage/logs/.gitignore b/Chapter14/onlineStore/storage/logs/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter14/onlineStore/storage/logs/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter14/onlineStore/tests/CreatesApplication.php b/Chapter14/onlineStore/tests/CreatesApplication.php deleted file mode 100644 index 547152f..0000000 --- a/Chapter14/onlineStore/tests/CreatesApplication.php +++ /dev/null @@ -1,22 +0,0 @@ -make(Kernel::class)->bootstrap(); - - return $app; - } -} diff --git a/Chapter14/onlineStore/tests/Feature/ExampleTest.php b/Chapter14/onlineStore/tests/Feature/ExampleTest.php deleted file mode 100644 index 78ccc21..0000000 --- a/Chapter14/onlineStore/tests/Feature/ExampleTest.php +++ /dev/null @@ -1,21 +0,0 @@ -get('/'); - - $response->assertStatus(200); - } -} diff --git a/Chapter14/onlineStore/tests/TestCase.php b/Chapter14/onlineStore/tests/TestCase.php deleted file mode 100644 index 2932d4a..0000000 --- a/Chapter14/onlineStore/tests/TestCase.php +++ /dev/null @@ -1,10 +0,0 @@ -assertTrue(true); - } -} diff --git a/Chapter14/onlineStore/webpack.mix.js b/Chapter14/onlineStore/webpack.mix.js deleted file mode 100644 index 2a22dc1..0000000 --- a/Chapter14/onlineStore/webpack.mix.js +++ /dev/null @@ -1,17 +0,0 @@ -const mix = require('laravel-mix'); - -/* - |-------------------------------------------------------------------------- - | Mix Asset Management - |-------------------------------------------------------------------------- - | - | Mix provides a clean, fluent API for defining some Webpack build steps - | for your Laravel applications. By default, we are compiling the CSS - | file for the application as well as bundling up all the JS files. - | - */ - -mix.js('resources/js/app.js', 'public/js') - .postCss('resources/css/app.css', 'public/css', [ - // - ]); diff --git a/Chapter15/onlineStore/.editorconfig b/Chapter15/onlineStore/.editorconfig deleted file mode 100644 index 1671c9b..0000000 --- a/Chapter15/onlineStore/.editorconfig +++ /dev/null @@ -1,18 +0,0 @@ -root = true - -[*] -charset = utf-8 -end_of_line = lf -insert_final_newline = true -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true - -[*.md] -trim_trailing_whitespace = false - -[*.{yml,yaml}] -indent_size = 2 - -[docker-compose.yml] -indent_size = 4 diff --git a/Chapter15/onlineStore/.env.example b/Chapter15/onlineStore/.env.example deleted file mode 100644 index 8510237..0000000 --- a/Chapter15/onlineStore/.env.example +++ /dev/null @@ -1,52 +0,0 @@ -APP_NAME=Laravel -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=laravel -DB_USERNAME=root -DB_PASSWORD= - -BROADCAST_DRIVER=log -CACHE_DRIVER=file -FILESYSTEM_DISK=local -QUEUE_CONNECTION=sync -SESSION_DRIVER=file -SESSION_LIFETIME=120 - -MEMCACHED_HOST=127.0.0.1 - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -MAIL_MAILER=smtp -MAIL_HOST=mailhog -MAIL_PORT=1025 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS=null -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_APP_CLUSTER=mt1 - -MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/Chapter15/onlineStore/.gitattributes b/Chapter15/onlineStore/.gitattributes deleted file mode 100644 index 510d996..0000000 --- a/Chapter15/onlineStore/.gitattributes +++ /dev/null @@ -1,10 +0,0 @@ -* text=auto - -*.blade.php diff=html -*.css diff=css -*.html diff=html -*.md diff=markdown -*.php diff=php - -/.github export-ignore -CHANGELOG.md export-ignore diff --git a/Chapter15/onlineStore/.gitignore b/Chapter15/onlineStore/.gitignore deleted file mode 100644 index eb003b0..0000000 --- a/Chapter15/onlineStore/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -/node_modules -/public/hot -/public/storage -/storage/*.key -/vendor -.env -.env.backup -.phpunit.result.cache -docker-compose.override.yml -Homestead.json -Homestead.yaml -npm-debug.log -yarn-error.log -/.idea -/.vscode diff --git a/Chapter15/onlineStore/.styleci.yml b/Chapter15/onlineStore/.styleci.yml deleted file mode 100644 index 679a631..0000000 --- a/Chapter15/onlineStore/.styleci.yml +++ /dev/null @@ -1,13 +0,0 @@ -php: - preset: laravel - version: 8 - disabled: - - no_unused_imports - finder: - not-name: - - index.php -js: - finder: - not-name: - - webpack.mix.js -css: true diff --git a/Chapter15/onlineStore/README.md b/Chapter15/onlineStore/README.md deleted file mode 100644 index f171eca..0000000 --- a/Chapter15/onlineStore/README.md +++ /dev/null @@ -1,64 +0,0 @@ -

- -

-Build Status -Total Downloads -Latest Stable Version -License -

- -## About Laravel - -Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as: - -- [Simple, fast routing engine](https://laravel.com/docs/routing). -- [Powerful dependency injection container](https://laravel.com/docs/container). -- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage. -- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent). -- Database agnostic [schema migrations](https://laravel.com/docs/migrations). -- [Robust background job processing](https://laravel.com/docs/queues). -- [Real-time event broadcasting](https://laravel.com/docs/broadcasting). - -Laravel is accessible, powerful, and provides tools required for large, robust applications. - -## Learning Laravel - -Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework. - -If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 2000 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library. - -## Laravel Sponsors - -We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell). - -### Premium Partners - -- **[Vehikl](https://vehikl.com/)** -- **[Tighten Co.](https://tighten.co)** -- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** -- **[64 Robots](https://64robots.com)** -- **[Cubet Techno Labs](https://cubettech.com)** -- **[Cyber-Duck](https://cyber-duck.co.uk)** -- **[Many](https://www.many.co.uk)** -- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)** -- **[DevSquad](https://devsquad.com)** -- **[Curotec](https://www.curotec.com/services/technologies/laravel/)** -- **[OP.GG](https://op.gg)** -- **[WebReinvent](https://webreinvent.com/?utm_source=laravel&utm_medium=github&utm_campaign=patreon-sponsors)** -- **[Lendio](https://lendio.com)** - -## Contributing - -Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions). - -## Code of Conduct - -In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). - -## Security Vulnerabilities - -If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed. - -## License - -The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). diff --git a/Chapter15/onlineStore/app/Console/Kernel.php b/Chapter15/onlineStore/app/Console/Kernel.php deleted file mode 100644 index d8bc1d2..0000000 --- a/Chapter15/onlineStore/app/Console/Kernel.php +++ /dev/null @@ -1,32 +0,0 @@ -command('inspire')->hourly(); - } - - /** - * Register the commands for the application. - * - * @return void - */ - protected function commands() - { - $this->load(__DIR__.'/Commands'); - - require base_path('routes/console.php'); - } -} diff --git a/Chapter15/onlineStore/app/Exceptions/Handler.php b/Chapter15/onlineStore/app/Exceptions/Handler.php deleted file mode 100644 index 8e7fbd1..0000000 --- a/Chapter15/onlineStore/app/Exceptions/Handler.php +++ /dev/null @@ -1,41 +0,0 @@ -> - */ - protected $dontReport = [ - // - ]; - - /** - * A list of the inputs that are never flashed for validation exceptions. - * - * @var array - */ - protected $dontFlash = [ - 'current_password', - 'password', - 'password_confirmation', - ]; - - /** - * Register the exception handling callbacks for the application. - * - * @return void - */ - public function register() - { - $this->reportable(function (Throwable $e) { - // - }); - } -} diff --git a/Chapter15/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php b/Chapter15/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php deleted file mode 100644 index cd78cb3..0000000 --- a/Chapter15/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php +++ /dev/null @@ -1,16 +0,0 @@ -with("viewData", $viewData); - } -} diff --git a/Chapter15/onlineStore/app/Http/Controllers/Controller.php b/Chapter15/onlineStore/app/Http/Controllers/Controller.php deleted file mode 100644 index a0a2a8a..0000000 --- a/Chapter15/onlineStore/app/Http/Controllers/Controller.php +++ /dev/null @@ -1,13 +0,0 @@ -with("viewData", $viewData); - } - - public function about() - { - $viewData = []; - $viewData["title"] = "About us - Online Store"; - $viewData["subtitle"] = "About us"; - $viewData["description"] = "This is an about page ..."; - $viewData["author"] = "Developed by: Your Name"; - return view('home.about')->with("viewData", $viewData); - } -} diff --git a/Chapter15/onlineStore/app/Http/Controllers/ProductController.php b/Chapter15/onlineStore/app/Http/Controllers/ProductController.php deleted file mode 100644 index d27a3a3..0000000 --- a/Chapter15/onlineStore/app/Http/Controllers/ProductController.php +++ /dev/null @@ -1,29 +0,0 @@ -with("viewData", $viewData); - } - - public function show($id) - { - $viewData = []; - $product = Product::findOrFail($id); - $viewData["title"] = $product->getName()." - Online Store"; - $viewData["subtitle"] = $product->getName()." - Product information"; - $viewData["product"] = $product; - return view('product.show')->with("viewData", $viewData); - } -} diff --git a/Chapter15/onlineStore/app/Http/Kernel.php b/Chapter15/onlineStore/app/Http/Kernel.php deleted file mode 100644 index d3722c2..0000000 --- a/Chapter15/onlineStore/app/Http/Kernel.php +++ /dev/null @@ -1,67 +0,0 @@ - - */ - protected $middleware = [ - // \App\Http\Middleware\TrustHosts::class, - \App\Http\Middleware\TrustProxies::class, - \Fruitcake\Cors\HandleCors::class, - \App\Http\Middleware\PreventRequestsDuringMaintenance::class, - \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, - \App\Http\Middleware\TrimStrings::class, - \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, - ]; - - /** - * The application's route middleware groups. - * - * @var array> - */ - protected $middlewareGroups = [ - 'web' => [ - \App\Http\Middleware\EncryptCookies::class, - \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, - \Illuminate\Session\Middleware\StartSession::class, - // \Illuminate\Session\Middleware\AuthenticateSession::class, - \Illuminate\View\Middleware\ShareErrorsFromSession::class, - \App\Http\Middleware\VerifyCsrfToken::class, - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - - 'api' => [ - // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, - 'throttle:api', - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - ]; - - /** - * The application's route middleware. - * - * These middleware may be assigned to groups or used individually. - * - * @var array - */ - protected $routeMiddleware = [ - 'auth' => \App\Http\Middleware\Authenticate::class, - 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::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, - 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, - 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, - 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, - ]; -} diff --git a/Chapter15/onlineStore/app/Http/Middleware/Authenticate.php b/Chapter15/onlineStore/app/Http/Middleware/Authenticate.php deleted file mode 100644 index 704089a..0000000 --- a/Chapter15/onlineStore/app/Http/Middleware/Authenticate.php +++ /dev/null @@ -1,21 +0,0 @@ -expectsJson()) { - return route('login'); - } - } -} diff --git a/Chapter15/onlineStore/app/Http/Middleware/EncryptCookies.php b/Chapter15/onlineStore/app/Http/Middleware/EncryptCookies.php deleted file mode 100644 index 867695b..0000000 --- a/Chapter15/onlineStore/app/Http/Middleware/EncryptCookies.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter15/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/Chapter15/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php deleted file mode 100644 index 74cbd9a..0000000 --- a/Chapter15/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter15/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php b/Chapter15/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php deleted file mode 100644 index a2813a0..0000000 --- a/Chapter15/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php +++ /dev/null @@ -1,32 +0,0 @@ -check()) { - return redirect(RouteServiceProvider::HOME); - } - } - - return $next($request); - } -} diff --git a/Chapter15/onlineStore/app/Http/Middleware/TrimStrings.php b/Chapter15/onlineStore/app/Http/Middleware/TrimStrings.php deleted file mode 100644 index 88cadca..0000000 --- a/Chapter15/onlineStore/app/Http/Middleware/TrimStrings.php +++ /dev/null @@ -1,19 +0,0 @@ - - */ - protected $except = [ - 'current_password', - 'password', - 'password_confirmation', - ]; -} diff --git a/Chapter15/onlineStore/app/Http/Middleware/TrustHosts.php b/Chapter15/onlineStore/app/Http/Middleware/TrustHosts.php deleted file mode 100644 index 7186414..0000000 --- a/Chapter15/onlineStore/app/Http/Middleware/TrustHosts.php +++ /dev/null @@ -1,20 +0,0 @@ - - */ - public function hosts() - { - return [ - $this->allSubdomainsOfApplicationUrl(), - ]; - } -} diff --git a/Chapter15/onlineStore/app/Http/Middleware/TrustProxies.php b/Chapter15/onlineStore/app/Http/Middleware/TrustProxies.php deleted file mode 100644 index 3391630..0000000 --- a/Chapter15/onlineStore/app/Http/Middleware/TrustProxies.php +++ /dev/null @@ -1,28 +0,0 @@ -|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/Chapter15/onlineStore/app/Http/Middleware/VerifyCsrfToken.php b/Chapter15/onlineStore/app/Http/Middleware/VerifyCsrfToken.php deleted file mode 100644 index 9e86521..0000000 --- a/Chapter15/onlineStore/app/Http/Middleware/VerifyCsrfToken.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter15/onlineStore/app/Models/Product.php b/Chapter15/onlineStore/app/Models/Product.php deleted file mode 100644 index 84efbb6..0000000 --- a/Chapter15/onlineStore/app/Models/Product.php +++ /dev/null @@ -1,89 +0,0 @@ -attributes['id'] - int - contains the product primary key (id) - * $this->attributes['name'] - string - contains the product name - * $this->attributes['description'] - string - contains the product description - * $this->attributes['image'] - string - contains the product image - * $this->attributes['price'] - int - contains the product price - * $this->attributes['created_at'] - timestamp - contains the product creation date - * $this->attributes['updated_at'] - timestamp - contains the product update date - */ - - public function getId() - { - return $this->attributes['id']; - } - - public function setId($id) - { - $this->attributes['id'] = $id; - } - - public function getName() - { - return $this->attributes['name']; - } - - public function setName($name) - { - $this->attributes['name'] = $name; - } - - public function getDescription() - { - return $this->attributes['description']; - } - - public function setDescription($description) - { - $this->attributes['description'] = $description; - } - - public function getImage() - { - return $this->attributes['image']; - } - - public function setImage($image) - { - $this->attributes['image'] = $image; - } - - public function getPrice() - { - return $this->attributes['price']; - } - - public function setPrice($price) - { - $this->attributes['price'] = $price; - } - - public function getCreatedAt() - { - return $this->attributes['created_at']; - } - - public function setCreatedAt($createdAt) - { - $this->attributes['created_at'] = $createdAt; - } - - public function getUpdatedAt() - { - return $this->attributes['updated_at']; - } - - public function setUpdatedAt($updatedAt) - { - $this->attributes['updated_at'] = $updatedAt; - } -} diff --git a/Chapter15/onlineStore/app/Models/User.php b/Chapter15/onlineStore/app/Models/User.php deleted file mode 100644 index 8996368..0000000 --- a/Chapter15/onlineStore/app/Models/User.php +++ /dev/null @@ -1,44 +0,0 @@ - - */ - 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', - ]; -} diff --git a/Chapter15/onlineStore/app/Providers/AppServiceProvider.php b/Chapter15/onlineStore/app/Providers/AppServiceProvider.php deleted file mode 100644 index ee8ca5b..0000000 --- a/Chapter15/onlineStore/app/Providers/AppServiceProvider.php +++ /dev/null @@ -1,28 +0,0 @@ - - */ - protected $policies = [ - // 'App\Models\Model' => 'App\Policies\ModelPolicy', - ]; - - /** - * Register any authentication / authorization services. - * - * @return void - */ - public function boot() - { - $this->registerPolicies(); - - // - } -} diff --git a/Chapter15/onlineStore/app/Providers/BroadcastServiceProvider.php b/Chapter15/onlineStore/app/Providers/BroadcastServiceProvider.php deleted file mode 100644 index 395c518..0000000 --- a/Chapter15/onlineStore/app/Providers/BroadcastServiceProvider.php +++ /dev/null @@ -1,21 +0,0 @@ -> - */ - protected $listen = [ - Registered::class => [ - SendEmailVerificationNotification::class, - ], - ]; - - /** - * Register any events for your application. - * - * @return void - */ - public function boot() - { - // - } -} diff --git a/Chapter15/onlineStore/app/Providers/RouteServiceProvider.php b/Chapter15/onlineStore/app/Providers/RouteServiceProvider.php deleted file mode 100644 index 7c17d1f..0000000 --- a/Chapter15/onlineStore/app/Providers/RouteServiceProvider.php +++ /dev/null @@ -1,63 +0,0 @@ -configureRateLimiting(); - - $this->routes(function () { - Route::prefix('api') - ->middleware('api') - ->namespace($this->namespace) - ->group(base_path('routes/api.php')); - - Route::middleware('web') - ->namespace($this->namespace) - ->group(base_path('routes/web.php')); - }); - } - - /** - * Configure the rate limiters for the application. - * - * @return void - */ - protected function configureRateLimiting() - { - RateLimiter::for('api', function (Request $request) { - return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); - }); - } -} diff --git a/Chapter15/onlineStore/artisan b/Chapter15/onlineStore/artisan deleted file mode 100644 index 67a3329..0000000 --- a/Chapter15/onlineStore/artisan +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env php -make(Illuminate\Contracts\Console\Kernel::class); - -$status = $kernel->handle( - $input = new Symfony\Component\Console\Input\ArgvInput, - new Symfony\Component\Console\Output\ConsoleOutput -); - -/* -|-------------------------------------------------------------------------- -| Shutdown The Application -|-------------------------------------------------------------------------- -| -| Once Artisan has finished running, we will fire off the shutdown events -| so that any final work may be done by the application before we shut -| down the process. This is the last thing to happen to the request. -| -*/ - -$kernel->terminate($input, $status); - -exit($status); diff --git a/Chapter15/onlineStore/bootstrap/app.php b/Chapter15/onlineStore/bootstrap/app.php deleted file mode 100644 index 037e17d..0000000 --- a/Chapter15/onlineStore/bootstrap/app.php +++ /dev/null @@ -1,55 +0,0 @@ -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/Chapter15/onlineStore/bootstrap/cache/.gitignore b/Chapter15/onlineStore/bootstrap/cache/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter15/onlineStore/bootstrap/cache/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter15/onlineStore/composer.json b/Chapter15/onlineStore/composer.json deleted file mode 100644 index f0f2eda..0000000 --- a/Chapter15/onlineStore/composer.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "name": "laravel/laravel", - "type": "project", - "description": "The Laravel Framework.", - "keywords": ["framework", "laravel"], - "license": "MIT", - "require": { - "php": "^8.0", - "fruitcake/laravel-cors": "^2.0.5", - "guzzlehttp/guzzle": "^7.2", - "laravel/framework": "^9.0", - "laravel/sanctum": "^2.14", - "laravel/tinker": "^2.7" - }, - "require-dev": { - "fakerphp/faker": "^1.9.1", - "laravel/sail": "^1.0.1", - "mockery/mockery": "^1.4.4", - "nunomaduro/collision": "^6.1", - "phpunit/phpunit": "^9.5.10", - "spatie/laravel-ignition": "^1.0", - "squizlabs/php_codesniffer": "^3.6" - }, - "autoload": { - "psr-4": { - "App\\": "app/", - "Database\\Factories\\": "database/factories/", - "Database\\Seeders\\": "database/seeders/" - } - }, - "autoload-dev": { - "psr-4": { - "Tests\\": "tests/" - } - }, - "scripts": { - "post-autoload-dump": [ - "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", - "@php artisan package:discover --ansi" - ], - "post-update-cmd": [ - "@php artisan vendor:publish --tag=laravel-assets --ansi --force" - ], - "post-root-package-install": [ - "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" - ], - "post-create-project-cmd": [ - "@php artisan key:generate --ansi" - ] - }, - "extra": { - "laravel": { - "dont-discover": [] - } - }, - "config": { - "optimize-autoloader": true, - "preferred-install": "dist", - "sort-packages": true - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/Chapter15/onlineStore/composer.lock b/Chapter15/onlineStore/composer.lock deleted file mode 100644 index b55e897..0000000 --- a/Chapter15/onlineStore/composer.lock +++ /dev/null @@ -1,7860 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "8bdcc31974d0d5a00db79c82827c8815", - "packages": [ - { - "name": "asm89/stack-cors", - "version": "v2.1.1", - "source": { - "type": "git", - "url": "https://github.com/asm89/stack-cors.git", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4|^5|^6" - }, - "require-dev": { - "phpunit/phpunit": "^7|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "psr-4": { - "Asm89\\Stack\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alexander", - "email": "iam.asm89@gmail.com" - } - ], - "description": "Cross-origin resource sharing library and stack middleware", - "homepage": "https://github.com/asm89/stack-cors", - "keywords": [ - "cors", - "stack" - ], - "support": { - "issues": "https://github.com/asm89/stack-cors/issues", - "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" - }, - "time": "2022-01-18T09:12:03+00:00" - }, - { - "name": "brick/math", - "version": "0.9.3", - "source": { - "type": "git", - "url": "https://github.com/brick/math.git", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", - "vimeo/psalm": "4.9.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Brick\\Math\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Arbitrary-precision arithmetic library", - "keywords": [ - "Arbitrary-precision", - "BigInteger", - "BigRational", - "arithmetic", - "bigdecimal", - "bignum", - "brick", - "math" - ], - "support": { - "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.9.3" - }, - "funding": [ - { - "url": "https://github.com/BenMorel", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/brick/math", - "type": "tidelift" - } - ], - "time": "2021-08-15T20:50:18+00:00" - }, - { - "name": "dflydev/dot-access-data", - "version": "v3.0.1", - "source": { - "type": "git", - "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c", - "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": "^3.14" - }, - "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.1" - }, - "time": "2021-08-13T13:06:58+00:00" - }, - { - "name": "doctrine/inflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "vimeo/psalm": "^4.10" - }, - "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.4" - }, - "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": "2021-10-22T20:16:43+00:00" - }, - { - "name": "doctrine/lexer", - "version": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" - } - }, - "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/1.2.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%2Flexer", - "type": "tidelift" - } - ], - "time": "2022-01-12T08:27:12+00:00" - }, - { - "name": "dragonmantank/cron-expression", - "version": "v3.3.1", - "source": { - "type": "git", - "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "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.1" - }, - "funding": [ - { - "url": "https://github.com/dragonmantank", - "type": "github" - } - ], - "time": "2022-01-18T15:43:28+00:00" - }, - { - "name": "egulias/email-validator", - "version": "3.1.2", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ee0db30118f661fb166bcffbf5d82032df484697", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^1.2", - "php": ">=7.2", - "symfony/polyfill-intl-idn": "^1.15" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^8.5.8|^9.3.3", - "vimeo/psalm": "^4" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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/3.1.2" - }, - "funding": [ - { - "url": "https://github.com/egulias", - "type": "github" - } - ], - "time": "2021-10-11T09:18:27+00:00" - }, - { - "name": "fruitcake/laravel-cors", - "version": "v2.0.5", - "source": { - "type": "git", - "url": "https://github.com/fruitcake/laravel-cors.git", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "shasum": "" - }, - "require": { - "asm89/stack-cors": "^2.0.1", - "illuminate/contracts": "^6|^7|^8|^9", - "illuminate/support": "^6|^7|^8|^9", - "php": ">=7.2", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4.3.4|^5|^6" - }, - "require-dev": { - "laravel/framework": "^6|^7.24|^8", - "orchestra/testbench-dusk": "^4|^5|^6|^7", - "phpunit/phpunit": "^6|^7|^8|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - }, - "laravel": { - "providers": [ - "Fruitcake\\Cors\\CorsServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Fruitcake\\Cors\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fruitcake", - "homepage": "https://fruitcake.nl" - }, - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", - "keywords": [ - "api", - "cors", - "crossdomain", - "laravel" - ], - "support": { - "issues": "https://github.com/fruitcake/laravel-cors/issues", - "source": "https://github.com/fruitcake/laravel-cors/tree/v2.0.5" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "time": "2022-01-03T14:53:04+00:00" - }, - { - "name": "graham-campbell/result-type", - "version": "v1.0.4", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "0690bde05318336c7221785f2a932467f98b64ca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/0690bde05318336c7221785f2a932467f98b64ca", - "reference": "0690bde05318336c7221785f2a932467f98b64ca", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "phpoption/phpoption": "^1.8" - }, - "require-dev": { - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", - "type": "tidelift" - } - ], - "time": "2021-11-21T21:41:47+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "7.4.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.8.3 || ^2.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.4.1", - "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.5 || ^9.3.5", - "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": { - "branch-alias": { - "dev-master": "7.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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.4.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": "2021-12-06T18:43:05+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "1.5.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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/1.5.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "time": "2021-10-22T20:56:57+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.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.4.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.8 || ^9.3.10" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "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.1.0" - }, - "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": "2021-10-06T17:43:30+00:00" - }, - { - "name": "laravel/framework", - "version": "v9.0.1", - "source": { - "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "shasum": "" - }, - "require": { - "doctrine/inflector": "^2.0", - "dragonmantank/cron-expression": "^3.1", - "egulias/email-validator": "^3.1", - "ext-mbstring": "*", - "ext-openssl": "*", - "laravel/serializable-closure": "^1.0", - "league/commonmark": "^2.2", - "league/flysystem": "^3.0", - "monolog/monolog": "^2.0", - "nesbot/carbon": "^2.53.1", - "php": "^8.0.2", - "psr/container": "^1.1.1|^2.0.1", - "psr/log": "^1.0|^2.0|^3.0", - "psr/simple-cache": "^1.0|^2.0|^3.0", - "ramsey/uuid": "^4.2.2", - "symfony/console": "^6.0", - "symfony/error-handler": "^6.0", - "symfony/finder": "^6.0", - "symfony/http-foundation": "^6.0", - "symfony/http-kernel": "^6.0", - "symfony/mailer": "^6.0", - "symfony/mime": "^6.0", - "symfony/process": "^6.0", - "symfony/routing": "^6.0", - "symfony/var-dumper": "^6.0", - "tijsverkoyen/css-to-inline-styles": "^2.2.2", - "vlucas/phpdotenv": "^5.4.1", - "voku/portable-ascii": "^2.0" - }, - "conflict": { - "tightenco/collect": "<5.5.33" - }, - "provide": { - "psr/container-implementation": "1.1|2.0", - "psr/simple-cache-implementation": "1.0|2.0|3.0" - }, - "replace": { - "illuminate/auth": "self.version", - "illuminate/broadcasting": "self.version", - "illuminate/bus": "self.version", - "illuminate/cache": "self.version", - "illuminate/collections": "self.version", - "illuminate/conditionable": "self.version", - "illuminate/config": "self.version", - "illuminate/console": "self.version", - "illuminate/container": "self.version", - "illuminate/contracts": "self.version", - "illuminate/cookie": "self.version", - "illuminate/database": "self.version", - "illuminate/encryption": "self.version", - "illuminate/events": "self.version", - "illuminate/filesystem": "self.version", - "illuminate/hashing": "self.version", - "illuminate/http": "self.version", - "illuminate/log": "self.version", - "illuminate/macroable": "self.version", - "illuminate/mail": "self.version", - "illuminate/notifications": "self.version", - "illuminate/pagination": "self.version", - "illuminate/pipeline": "self.version", - "illuminate/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": { - "aws/aws-sdk-php": "^3.198.1", - "doctrine/dbal": "^2.13.3|^3.1.4", - "fakerphp/faker": "^1.9.2", - "guzzlehttp/guzzle": "^7.2", - "league/flysystem-aws-s3-v3": "^3.0", - "league/flysystem-ftp": "^3.0", - "league/flysystem-sftp-v3": "^3.0", - "mockery/mockery": "^1.4.4", - "orchestra/testbench-core": "^7.0", - "pda/pheanstalk": "^4.0", - "phpstan/phpstan": "^1.0", - "phpunit/phpunit": "^9.5.8", - "predis/predis": "^1.1.9", - "symfony/amazon-mailer": "^6.0", - "symfony/cache": "^6.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.198.1).", - "brianium/paratest": "Required to run tests in parallel (^6.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", - "ext-bcmath": "Required to use the multiple_of validation rule.", - "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.", - "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.2).", - "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-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", - "mockery/mockery": "Required to use mocking (^1.4.4).", - "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).", - "predis/predis": "Required to use the predis connector (^1.1.9).", - "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.0).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^6.0).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.0).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.0).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.0).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.x-dev" - } - }, - "autoload": { - "files": [ - "src/Illuminate/Collections/helpers.php", - "src/Illuminate/Events/functions.php", - "src/Illuminate/Foundation/helpers.php", - "src/Illuminate/Support/helpers.php" - ], - "psr-4": { - "Illuminate\\": "src/Illuminate/", - "Illuminate\\Support\\": [ - "src/Illuminate/Macroable/", - "src/Illuminate/Collections/", - "src/Illuminate/Conditionable/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Laravel Framework.", - "homepage": "https://laravel.com", - "keywords": [ - "framework", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2022-02-09T15:00:05+00:00" - }, - { - "name": "laravel/sanctum", - "version": "v2.14.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/sanctum.git", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/0647a87140c7522e75826cffcadb3ad6e01f71e9", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/contracts": "^6.9|^7.0|^8.0|^9.0", - "illuminate/database": "^6.9|^7.0|^8.0|^9.0", - "illuminate/support": "^6.9|^7.0|^8.0|^9.0", - "php": "^7.2|^8.0" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0", - "phpunit/phpunit": "^8.0|^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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": "2022-01-12T15:07:43+00:00" - }, - { - "name": "laravel/serializable-closure", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/serializable-closure.git", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/65c9faf50d567b65d81764a44526545689e3fe63", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "pestphp/pest": "^1.18", - "phpstan/phpstan": "^0.12.98", - "symfony/var-dumper": "^5.3" - }, - "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": "2022-02-01T16:29:39+00:00" - }, - { - "name": "laravel/tinker", - "version": "v2.7.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/tinker.git", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/5f2f9815b7631b9f586a3de7933c25f9327d4073", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073", - "shasum": "" - }, - "require": { - "illuminate/console": "^6.0|^7.0|^8.0|^9.0", - "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.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", - "phpunit/phpunit": "^8.5.8|^9.3.3" - }, - "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.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.7.0" - }, - "time": "2022-01-10T08:52:49+00:00" - }, - { - "name": "league/commonmark", - "version": "2.2.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/commonmark.git", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "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.15" - }, - "require-dev": { - "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.0", - "commonmark/commonmark.js": "0.30.0", - "composer/package-versions-deprecated": "^1.8", - "erusev/parsedown": "^1.0", - "ext-json": "*", - "github/gfm": "0.29.0", - "michelf/php-markdown": "^1.4", - "phpstan/phpstan": "^0.12.88 || ^1.0.0", - "phpunit/phpunit": "^9.5.5", - "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", - "unleashedtech/php-coding-standard": "^3.1", - "vimeo/psalm": "^4.7.3" - }, - "suggest": { - "symfony/yaml": "v2.3+ required if using the Front Matter extension" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.3-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": "2022-01-25T14:37:33+00:00" - }, - { - "name": "league/config", - "version": "v1.1.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/config.git", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/config/zipball/a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^3.0.1", - "nette/schema": "^1.2", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.90", - "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": "2021-08-14T12:15:32+00:00" - }, - { - "name": "league/flysystem", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9f8b4260031bfef5497477da53dd57b2aaff0e06", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06", - "shasum": "" - }, - "require": { - "ext-json": "*", - "league/mime-type-detection": "^1.0.0", - "php": "^8.0.2" - }, - "conflict": { - "guzzlehttp/guzzle": "<7.0", - "guzzlehttp/ringphp": "<1.1.1", - "symfony/http-client": "<5.2" - }, - "require-dev": { - "async-aws/s3": "^1.5", - "async-aws/simple-s3": "^1.0", - "aws/aws-sdk-php": "^3.198.1", - "composer/semver": "^3.0", - "ext-fileinfo": "*", - "ext-ftp": "*", - "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.5", - "google/cloud-storage": "^1.23", - "phpseclib/phpseclib": "^2.0", - "phpstan/phpstan": "^0.12.26", - "phpunit/phpunit": "^9.5.11", - "sabre/dav": "^4.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.0.3" - }, - "funding": [ - { - "url": "https://offset.earth/frankdejonge", - "type": "custom" - }, - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2022-01-31T19:41:04+00:00" - }, - { - "name": "league/mime-type-detection", - "version": "1.9.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/aa70e813a6ad3d1558fc927863d47309b4c23e69", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.2", - "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" - }, - "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.9.0" - }, - "funding": [ - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2021-11-21T11:48:40+00:00" - }, - { - "name": "monolog/monolog", - "version": "2.3.5", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd4380d6fc37626e2f799f29d91195040137eba9", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "provide": { - "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7", - "graylog2/gelf-php": "^1.4.2", - "mongodb/mongodb": "^1.8", - "php-amqplib/php-amqplib": "~2.4 || ^3", - "php-console/php-console": "^3.1.3", - "phpspec/prophecy": "^1.6.1", - "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5", - "predis/predis": "^1.1", - "rollbar/rollbar": "^1.3", - "ruflin/elastica": ">=0.90@dev", - "swiftmailer/swiftmailer": "^5.3|^6.0" - }, - "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", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "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": "2.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/2.3.5" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" - } - ], - "time": "2021-10-01T21:08:31+00:00" - }, - { - "name": "nesbot/carbon", - "version": "2.56.0", - "source": { - "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1.8 || ^8.0", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "doctrine/dbal": "^2.0 || ^3.0", - "doctrine/orm": "^2.7", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "phpmd/phpmd": "^2.9", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.54 || ^1.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.14", - "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://opencollective.com/Carbon", - "type": "open_collective" - }, - { - "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", - "type": "tidelift" - } - ], - "time": "2022-01-21T17:08:38+00:00" - }, - { - "name": "nette/schema", - "version": "v1.2.2", - "source": { - "type": "git", - "url": "https://github.com/nette/schema.git", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/9a39cef03a5b34c7de64f551538cbba05c2be5df", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df", - "shasum": "" - }, - "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": ">=7.1 <8.2" - }, - "require-dev": { - "nette/tester": "^2.3 || ^2.4", - "phpstan/phpstan-nette": "^0.12", - "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.2" - }, - "time": "2021-10-15T11:40:02+00:00" - }, - { - "name": "nette/utils", - "version": "v3.2.7", - "source": { - "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/0af4e3de4df9f1543534beab255ccf459e7a2c99", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99", - "shasum": "" - }, - "require": { - "php": ">=7.2 <8.2" - }, - "conflict": { - "nette/di": "<3.0.6" - }, - "require-dev": { - "nette/tester": "~2.0", - "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.3" - }, - "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()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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 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/v3.2.7" - }, - "time": "2022-01-24T11:29:14+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.13.2", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", - "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.13.2" - }, - "time": "2021-11-30T19:35:32+00:00" - }, - { - "name": "phpoption/phpoption", - "version": "1.8.1", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-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.8.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", - "type": "tidelift" - } - ], - "time": "2021-12-04T23:24:31+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.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.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": "http://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/tree/master" - }, - "time": "2020-06-29T06:28:15+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.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": "http://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/master" - }, - "time": "2019-04-30T12:38:16+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.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": "http://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/master" - }, - "time": "2016-08-06T14:39: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.1", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "570292577277f06f590635381a7f761a6cf4f026" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/570292577277f06f590635381a7f761a6cf4f026", - "reference": "570292577277f06f590635381a7f761a6cf4f026", - "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" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "3.17.05.02" - }, - "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.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." - }, - "bin": [ - "bin/psysh" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "0.11.x-dev" - } - }, - "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.1" - }, - "time": "2022-01-03T13:58:38+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": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/ramsey/collection.git", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "shasum": "" - }, - "require": { - "php": "^7.3 || ^8", - "symfony/polyfill-php81": "^1.23" - }, - "require-dev": { - "captainhook/captainhook": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "ergebnis/composer-normalize": "^2.6", - "fakerphp/faker": "^1.5", - "hamcrest/hamcrest-php": "^2", - "jangregor/phpstan-prophecy": "^0.8", - "mockery/mockery": "^1.3", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1", - "phpstan/phpstan": "^0.12.32", - "phpstan/phpstan-mockery": "^0.12.5", - "phpstan/phpstan-phpunit": "^0.12.11", - "phpunit/phpunit": "^8.5 || ^9", - "psy/psysh": "^0.10.4", - "slevomat/coding-standard": "^6.3", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.4" - }, - "type": "library", - "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/1.2.2" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "time": "2021-10-10T03:01:02+00:00" - }, - { - "name": "ramsey/uuid", - "version": "4.2.3", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "shasum": "" - }, - "require": { - "brick/math": "^0.8 || ^0.9", - "ext-json": "*", - "php": "^7.2 || ^8.0", - "ramsey/collection": "^1.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php80": "^1.14" - }, - "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", - "moontoast/math": "^1.1", - "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.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-mockery": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^8.5 || ^9", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" - }, - "suggest": { - "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-ctype": "Enables faster processing of character classification using ctype functions.", - "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": { - "branch-alias": { - "dev-main": "4.x-dev" - }, - "captainhook": { - "force-install": true - } - }, - "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "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.2.3" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2021-09-25T23:10:38+00:00" - }, - { - "name": "symfony/console", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/22e8efd019c3270c4f79376234a3f8752cd25490", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.4|^6.0" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/css-selector", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/1955d595c12c111629cc814d3f2a2ff13580508a", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a", - "shasum": "" - }, - "require": { - "php": ">=8.0.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/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-11-01T23:48:49+00:00" - }, - { - "name": "symfony/error-handler", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/20343b3bad7ebafa38138ddcb97290a24722b57b", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" - }, - "bin": [ - "Resources/bin/patch-type-declarations" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to manage errors and ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6472ea2dd415e925b90ca82be64b8bc6157f3934", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/event-dispatcher-contracts": "^2|^3" - }, - "conflict": { - "symfony/dependency-injection": "<5.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^5.4|^6.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/aa5422287b75594b90ee9cd807caf8f0df491385", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/event-dispatcher": "^1" - }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-07-15T12:33:35+00:00" - }, - { - "name": "symfony/finder", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/8661b74dbabc23223f38c9b99d3f8ade71170430", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ad157299ced81a637fade1efcadd688d6deba5c1", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1" - }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/cache": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0" - }, - "suggest": { - "symfony/mime": "To use the file extension guesser" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v6.0.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/error-handler": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", - "symfony/twig-bridge": "<5.4", - "symfony/validator": "<5.4", - "twig/twig": "<2.13" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/process": "^5.4|^6.0", - "symfony/routing": "^5.4|^6.0", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-29T18:12:46+00:00" - }, - { - "name": "symfony/mailer", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mailer.git", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "shasum": "" - }, - "require": { - "egulias/email-validator": "^2.1.10|^3", - "php": ">=8.0.2", - "psr/event-dispatcher": "^1", - "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3" - }, - "conflict": { - "symfony/http-kernel": "<5.4" - }, - "require-dev": { - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/messenger": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/mime", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/2cd9601efd040e56f43360daa68f3c6b0534923a", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "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" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "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.24.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": "2021-10-20T20:35:02+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-11-23T21:10:46+00:00" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44", - "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.23-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.24.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": "2021-09-14T14:02:44+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.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": "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.24.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": "2021-11-30T18:21:41+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-05-27T09:17:38+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:33+00:00" - }, - { - "name": "symfony/polyfill-php81", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:11+00:00" - }, - { - "name": "symfony/process", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/298ed357274c1868c20a0061df256a1250a6c4af", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/routing", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/yaml": "<5.4" - }, - "require-dev": { - "doctrine/annotations": "^1.12", - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/36715ebf9fb9db73db0cb24263c79077c6fe8603", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/container": "^2.0" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "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.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": "2021-11-04T17:53:12+00:00" - }, - { - "name": "symfony/string", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/522144f0c4c004c80d56fa47e40e17028e2eefc2", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.0" - }, - "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/translation-contracts": "^2.0|^3.0", - "symfony/var-exporter": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "files": [ - "Resources/functions.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 an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/translation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/71bb15335798f8c4da110911bcf2d2fead7a430d", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.3|^3.0" - }, - "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" - }, - "provide": { - "symfony/translation-implementation": "2.3|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-07T00:29:03+00:00" - }, - { - "name": "symfony/translation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "suggest": { - "symfony/translation-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - } - }, - "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.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": "2021-09-07T12:43:40+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7b701676fc64f9ef11f9b4870f16b48f66be4834", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<5.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-17T16:30:44+00:00" - }, - { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.4", - "source": { - "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" - } - ], - "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", - "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "support": { - "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" - }, - "time": "2021-12-08T09:12:39+00:00" - }, - { - "name": "vlucas/phpdotenv", - "version": "v5.4.1", - "source": { - "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", - "shasum": "" - }, - "require": { - "ext-pcre": "*", - "graham-campbell/result-type": "^1.0.2", - "php": "^7.1.3 || ^8.0", - "phpoption/phpoption": "^1.8", - "symfony/polyfill-ctype": "^1.23", - "symfony/polyfill-mbstring": "^1.23.1", - "symfony/polyfill-php80": "^1.23.1" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" - }, - "suggest": { - "ext-filter": "Required to use the boolean validator." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.4-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.4.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", - "type": "tidelift" - } - ], - "time": "2021-12-12T23:22:04+00:00" - }, - { - "name": "voku/portable-ascii", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/voku/portable-ascii.git", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/9bd89e83cecdf8c37b64909454249eaed98b2c89", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89", - "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.0" - }, - "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-01-24T18:59:03+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "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.10.0" - }, - "time": "2021-03-09T10:59:23+00:00" - } - ], - "packages-dev": [ - { - "name": "doctrine/instantiator", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.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%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2020-11-10T18:47:58+00:00" - }, - { - "name": "facade/ignition-contracts", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/facade/ignition-contracts.git", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^v2.15.8", - "phpunit/phpunit": "^9.3.11", - "vimeo/psalm": "^3.17.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Facade\\IgnitionContracts\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://flareapp.io", - "role": "Developer" - } - ], - "description": "Solution contracts for Ignition", - "homepage": "https://github.com/facade/ignition-contracts", - "keywords": [ - "contracts", - "flare", - "ignition" - ], - "support": { - "issues": "https://github.com/facade/ignition-contracts/issues", - "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" - }, - "time": "2020-10-16T08:27:54+00:00" - }, - { - "name": "fakerphp/faker", - "version": "v1.19.0", - "source": { - "type": "git", - "url": "https://github.com/FakerPHP/Faker.git", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^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": "*", - "symfony/phpunit-bridge": "^4.4 || ^5.2" - }, - "suggest": { - "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", - "ext-curl": "Required by Faker\\Provider\\Image to download images.", - "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", - "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.19-dev" - } - }, - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "François Zaninotto" - } - ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], - "support": { - "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0" - }, - "time": "2022-02-02T17:38:57+00:00" - }, - { - "name": "filp/whoops", - "version": "2.14.5", - "source": { - "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "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.14.5" - }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "time": "2022-01-07T12:00:00+00:00" - }, - { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "shasum": "" - }, - "require": { - "php": "^5.3|^7.0|^8.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" - }, - "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "classmap": [ - "hamcrest" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "This is the PHP port of Hamcrest Matchers", - "keywords": [ - "test" - ], - "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" - }, - "time": "2020-07-09T08:09:16+00:00" - }, - { - "name": "laravel/sail", - "version": "v1.13.2", - "source": { - "type": "git", - "url": "https://github.com/laravel/sail.git", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.0|^9.0", - "illuminate/contracts": "^8.0|^9.0", - "illuminate/support": "^8.0|^9.0", - "php": "^7.3|^8.0" - }, - "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": "2022-02-08T14:14:12+00:00" - }, - { - "name": "mockery/mockery", - "version": "1.5.0", - "source": { - "type": "git", - "url": "https://github.com/mockery/mockery.git", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "shasum": "" - }, - "require": { - "hamcrest/hamcrest-php": "^2.0.1", - "lib-pcre": ">=7.0", - "php": "^7.3 || ^8.0" - }, - "conflict": { - "phpunit/phpunit": "<8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-0": { - "Mockery": "library/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" - } - ], - "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": { - "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.5.0" - }, - "time": "2022-01-20T13:18:17+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.10.2", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "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.10.2" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2020-11-13T09:40:50+00:00" - }, - { - "name": "nunomaduro/collision", - "version": "v6.1.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/collision.git", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "shasum": "" - }, - "require": { - "facade/ignition-contracts": "^1.0.2", - "filp/whoops": "^2.14.5", - "php": "^8.0.0", - "symfony/console": "^6.0.2" - }, - "require-dev": { - "brianium/paratest": "^6.4.1", - "laravel/framework": "^9.0", - "nunomaduro/larastan": "^1.0.2", - "nunomaduro/mock-final-classes": "^1.1.0", - "orchestra/testbench": "^7.0.0", - "phpunit/phpunit": "^9.5.11" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "6.x-dev" - }, - "laravel": { - "providers": [ - "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" - ] - } - }, - "autoload": { - "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": "2022-01-18T17:49:08+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.1.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/15a90844ad40f127afd244c0cad228de2a80052a", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a", - "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.1.1" - }, - "time": "2022-02-07T21:56:48+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.6.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "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.6.0" - }, - "time": "2022-01-04T19:58:01+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" - }, - "time": "2021-12-08T12:19:24+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "9.2.10", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d5850aaf931743067f4bfc1ae4cbd06468400687", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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 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", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.10" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-05T09:12:13+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "3.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-02T12:48:52+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "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/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:58:55+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T05:33:50+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.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/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:16:10+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "9.5.13", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/597cb647654ede35e43b137926dfdfef0fb11743", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.3.1", - "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": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.7", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", - "sebastian/version": "^3.0.2" - }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.13" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-01-24T07:33:35+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:08:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "1.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:08:54+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:30:19+00:00" - }, - { - "name": "sebastian/comparator", - "version": "4.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:49:45+00:00" - }, - { - "name": "sebastian/complexity", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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 calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:52:27+00:00" - }, - { - "name": "sebastian/diff", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:10:38+00:00" - }, - { - "name": "sebastian/environment", - "version": "5.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-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": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:52:38+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "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", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-11-11T14:18:36+00:00" - }, - { - "name": "sebastian/global-state", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-11T13:31:12+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-28T06:42:11+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "http://www.github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:17:30+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:45:17+00:00" - }, - { - "name": "sebastian/type", - "version": "2.3.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-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/2.3.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-15T12:49:02+00:00" - }, - { - "name": "sebastian/version", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:39:44+00:00" - }, - { - "name": "spatie/backtrace", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/backtrace.git", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "ext-json": "*", - "phpunit/phpunit": "^9.3", - "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": { - "issues": "https://github.com/spatie/backtrace/issues", - "source": "https://github.com/spatie/backtrace/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/sponsors/spatie", - "type": "github" - }, - { - "url": "https://spatie.be/open-source/support-us", - "type": "other" - } - ], - "time": "2021-11-09T10:57:15+00:00" - }, - { - "name": "spatie/flare-client-php", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/flare-client-php.git", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "shasum": "" - }, - "require": { - "illuminate/pipeline": "^8.0|^9.0", - "php": "^8.0", - "spatie/backtrace": "^1.2", - "symfony/http-foundation": "^5.0|^6.0", - "symfony/mime": "^5.2|^6.0", - "symfony/process": "^5.2|^6.0", - "symfony/var-dumper": "^5.2|^6.0" - }, - "require-dev": { - "dms/phpunit-arraysubset-asserts": "^0.3.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/phpunit-snapshot-assertions": "^4.0" - }, - "type": "library", - "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.0.1" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2022-02-04T15:21:00+00:00" - }, - { - "name": "spatie/ignition", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/spatie/ignition.git", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/d2d5ba823af3004268556e87dfc94449e4159f5a", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "monolog/monolog": "^2.0", - "php": "^8.0", - "spatie/flare-client-php": "^1.0", - "symfony/console": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "mockery/mockery": "^1.4", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/ray": "^1.32", - "symfony/process": "^5.4|^6.0" - }, - "type": "library", - "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": "2022-01-19T12:57:41+00:00" - }, - { - "name": "spatie/laravel-ignition", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/68250225a9f83b086462c2af1b1139dfde48fbd2", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*", - "illuminate/support": "^8.77|^9.0", - "monolog/monolog": "^2.3", - "php": "^8.0", - "spatie/flare-client-php": "^1.0.1", - "spatie/ignition": "^1.0", - "symfony/console": "^5.0|^6.0", - "symfony/var-dumper": "^5.0|^6.0" - }, - "require-dev": { - "filp/whoops": "^2.14", - "livewire/livewire": "^2.8|dev-develop", - "mockery/mockery": "^1.4", - "nunomaduro/larastan": "^1.0", - "orchestra/testbench": "^6.23|^7.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/laravel-ray": "^1.27" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Spatie\\LaravelIgnition\\IgnitionServiceProvider" - ], - "aliases": { - "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" - } - } - }, - "autoload": { - "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": "2022-02-04T15:25:56+00:00" - }, - { - "name": "squizlabs/php_codesniffer", - "version": "3.6.2", - "source": { - "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", - "shasum": "" - }, - "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.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": "lead" - } - ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", - "keywords": [ - "phpcs", - "standards" - ], - "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" - }, - "time": "2021-12-12T21:44:58+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2021-07-28T10:34:58+00:00" - } - ], - "aliases": [], - "minimum-stability": "dev", - "stability-flags": [], - "prefer-stable": true, - "prefer-lowest": false, - "platform": { - "php": "^8.0" - }, - "platform-dev": [], - "plugin-api-version": "2.1.0" -} diff --git a/Chapter15/onlineStore/config/app.php b/Chapter15/onlineStore/config/app.php deleted file mode 100644 index 1941d7c..0000000 --- a/Chapter15/onlineStore/config/app.php +++ /dev/null @@ -1,197 +0,0 @@ - env('APP_NAME', 'Laravel'), - - /* - |-------------------------------------------------------------------------- - | Application Environment - |-------------------------------------------------------------------------- - | - | This value determines the "environment" your application is currently - | running in. This may determine how you prefer to configure various - | services the application utilizes. Set this in your ".env" file. - | - */ - - 'env' => env('APP_ENV', 'production'), - - /* - |-------------------------------------------------------------------------- - | Application Debug Mode - |-------------------------------------------------------------------------- - | - | When your application is in debug mode, detailed error messages with - | stack traces will be shown on every error that occurs within your - | application. If disabled, a simple generic error page is shown. - | - */ - - 'debug' => (bool) env('APP_DEBUG', false), - - /* - |-------------------------------------------------------------------------- - | Application URL - |-------------------------------------------------------------------------- - | - | This URL is used by the console to properly generate URLs when using - | the Artisan command line tool. You should set this to the root of - | your application so that it is used when running Artisan tasks. - | - */ - - 'url' => env('APP_URL', 'http://localhost'), - - 'asset_url' => env('ASSET_URL', null), - - /* - |-------------------------------------------------------------------------- - | 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', - - /* - |-------------------------------------------------------------------------- - | 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' => [ - - /* - * Laravel Framework Service Providers... - */ - Illuminate\Auth\AuthServiceProvider::class, - Illuminate\Broadcasting\BroadcastServiceProvider::class, - Illuminate\Bus\BusServiceProvider::class, - Illuminate\Cache\CacheServiceProvider::class, - Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, - Illuminate\Cookie\CookieServiceProvider::class, - Illuminate\Database\DatabaseServiceProvider::class, - Illuminate\Encryption\EncryptionServiceProvider::class, - Illuminate\Filesystem\FilesystemServiceProvider::class, - Illuminate\Foundation\Providers\FoundationServiceProvider::class, - Illuminate\Hashing\HashServiceProvider::class, - Illuminate\Mail\MailServiceProvider::class, - Illuminate\Notifications\NotificationServiceProvider::class, - Illuminate\Pagination\PaginationServiceProvider::class, - Illuminate\Pipeline\PipelineServiceProvider::class, - Illuminate\Queue\QueueServiceProvider::class, - Illuminate\Redis\RedisServiceProvider::class, - Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, - Illuminate\Session\SessionServiceProvider::class, - Illuminate\Translation\TranslationServiceProvider::class, - Illuminate\Validation\ValidationServiceProvider::class, - Illuminate\View\ViewServiceProvider::class, - - /* - * 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, - - ], - - /* - |-------------------------------------------------------------------------- - | 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([ - // ... - ])->toArray(), - -]; diff --git a/Chapter15/onlineStore/config/auth.php b/Chapter15/onlineStore/config/auth.php deleted file mode 100644 index d8c6cee..0000000 --- a/Chapter15/onlineStore/config/auth.php +++ /dev/null @@ -1,111 +0,0 @@ - [ - '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 expire 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. - | - */ - - 'passwords' => [ - 'users' => [ - 'provider' => 'users', - 'table' => 'password_resets', - '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/Chapter15/onlineStore/config/broadcasting.php b/Chapter15/onlineStore/config/broadcasting.php deleted file mode 100644 index 67fcbbd..0000000 --- a/Chapter15/onlineStore/config/broadcasting.php +++ /dev/null @@ -1,67 +0,0 @@ - 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'), - 'useTLS' => true, - ], - '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/Chapter15/onlineStore/config/cache.php b/Chapter15/onlineStore/config/cache.php deleted file mode 100644 index 8736c7a..0000000 --- a/Chapter15/onlineStore/config/cache.php +++ /dev/null @@ -1,110 +0,0 @@ - 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'), - ], - - '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 a RAM based store such as APC or Memcached, there might - | be other applications utilizing the same cache. So, we'll specify a - | value to get prefixed to all our keys so we can avoid collisions. - | - */ - - 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'), - -]; diff --git a/Chapter15/onlineStore/config/cors.php b/Chapter15/onlineStore/config/cors.php deleted file mode 100644 index 8a39e6d..0000000 --- a/Chapter15/onlineStore/config/cors.php +++ /dev/null @@ -1,34 +0,0 @@ - ['api/*', 'sanctum/csrf-cookie'], - - 'allowed_methods' => ['*'], - - 'allowed_origins' => ['*'], - - 'allowed_origins_patterns' => [], - - 'allowed_headers' => ['*'], - - 'exposed_headers' => [], - - 'max_age' => 0, - - 'supports_credentials' => false, - -]; diff --git a/Chapter15/onlineStore/config/database.php b/Chapter15/onlineStore/config/database.php deleted file mode 100644 index 0faebae..0000000 --- a/Chapter15/onlineStore/config/database.php +++ /dev/null @@ -1,147 +0,0 @@ - env('DB_CONNECTION', 'mysql'), - - /* - |-------------------------------------------------------------------------- - | Database Connections - |-------------------------------------------------------------------------- - | - | Here are each of the database connections setup for your application. - | Of course, examples of configuring each database platform that is - | supported by Laravel is shown below to make development simple. - | - | - | All database work in Laravel is done through the PHP PDO facilities - | so make sure you have the driver for your particular database of - | choice installed on your machine before you begin development. - | - */ - - 'connections' => [ - - 'sqlite' => [ - 'driver' => 'sqlite', - 'url' => env('DATABASE_URL'), - 'database' => env('DB_DATABASE', database_path('database.sqlite')), - 'prefix' => '', - 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), - ], - - 'mysql' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '3306'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'unix_socket' => env('DB_SOCKET', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - 'pgsql' => [ - 'driver' => 'pgsql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '5432'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - 'search_path' => 'public', - 'sslmode' => 'prefer', - ], - - 'sqlsrv' => [ - 'driver' => 'sqlsrv', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', 'localhost'), - 'port' => env('DB_PORT', '1433'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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'), - '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'), - 'password' => env('REDIS_PASSWORD'), - 'port' => env('REDIS_PORT', '6379'), - 'database' => env('REDIS_CACHE_DB', '1'), - ], - - ], - -]; diff --git a/Chapter15/onlineStore/config/filesystems.php b/Chapter15/onlineStore/config/filesystems.php deleted file mode 100644 index cf5abce..0000000 --- a/Chapter15/onlineStore/config/filesystems.php +++ /dev/null @@ -1,73 +0,0 @@ - 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 setup for each driver as an example of the required options. - | - | Supported Drivers: "local", "ftp", "sftp", "s3" - | - */ - - 'disks' => [ - - 'local' => [ - 'driver' => 'local', - 'root' => storage_path('app'), - ], - - 'public' => [ - 'driver' => 'local', - 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', - 'visibility' => 'public', - ], - - '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), - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter15/onlineStore/config/hashing.php b/Chapter15/onlineStore/config/hashing.php deleted file mode 100644 index bcd3be4..0000000 --- a/Chapter15/onlineStore/config/hashing.php +++ /dev/null @@ -1,52 +0,0 @@ - '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/Chapter15/onlineStore/config/logging.php b/Chapter15/onlineStore/config/logging.php deleted file mode 100644 index fefe088..0000000 --- a/Chapter15/onlineStore/config/logging.php +++ /dev/null @@ -1,119 +0,0 @@ - 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' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), - - /* - |-------------------------------------------------------------------------- - | 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'), - ], - - 'daily' => [ - 'driver' => 'daily', - 'path' => storage_path('logs/laravel.log'), - 'level' => env('LOG_LEVEL', 'debug'), - 'days' => 14, - ], - - 'slack' => [ - 'driver' => 'slack', - 'url' => env('LOG_SLACK_WEBHOOK_URL'), - 'username' => 'Laravel Log', - 'emoji' => ':boom:', - 'level' => env('LOG_LEVEL', 'critical'), - ], - - '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'), - ], - ], - - 'stderr' => [ - 'driver' => 'monolog', - 'level' => env('LOG_LEVEL', 'debug'), - 'handler' => StreamHandler::class, - 'formatter' => env('LOG_STDERR_FORMATTER'), - 'with' => [ - 'stream' => 'php://stderr', - ], - ], - - 'syslog' => [ - 'driver' => 'syslog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'errorlog' => [ - 'driver' => 'errorlog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'null' => [ - 'driver' => 'monolog', - 'handler' => NullHandler::class, - ], - - 'emergency' => [ - 'path' => storage_path('logs/laravel.log'), - ], - ], - -]; diff --git a/Chapter15/onlineStore/config/mail.php b/Chapter15/onlineStore/config/mail.php deleted file mode 100644 index 87b6fe3..0000000 --- a/Chapter15/onlineStore/config/mail.php +++ /dev/null @@ -1,117 +0,0 @@ - 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", - | "postmark", "log", "array", "failover" - | - */ - - 'mailers' => [ - 'smtp' => [ - 'transport' => 'smtp', - '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, - ], - - 'ses' => [ - 'transport' => 'ses', - ], - - 'mailgun' => [ - 'transport' => 'mailgun', - ], - - 'postmark' => [ - 'transport' => 'postmark', - ], - - 'sendmail' => [ - 'transport' => 'sendmail', - 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -t -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/Chapter15/onlineStore/config/queue.php b/Chapter15/onlineStore/config/queue.php deleted file mode 100644 index 25ea5a8..0000000 --- a/Chapter15/onlineStore/config/queue.php +++ /dev/null @@ -1,93 +0,0 @@ - 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, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter15/onlineStore/config/sanctum.php b/Chapter15/onlineStore/config/sanctum.php deleted file mode 100644 index 9281c92..0000000 --- a/Chapter15/onlineStore/config/sanctum.php +++ /dev/null @@ -1,65 +0,0 @@ - explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( - '%s%s', - 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', - env('APP_URL') ? ','.parse_url(env('APP_URL'), PHP_URL_HOST) : '' - ))), - - /* - |-------------------------------------------------------------------------- - | 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/Chapter15/onlineStore/config/services.php b/Chapter15/onlineStore/config/services.php deleted file mode 100644 index 2a1d616..0000000 --- a/Chapter15/onlineStore/config/services.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - 'domain' => env('MAILGUN_DOMAIN'), - 'secret' => env('MAILGUN_SECRET'), - 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), - ], - - '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/Chapter15/onlineStore/config/session.php b/Chapter15/onlineStore/config/session.php deleted file mode 100644 index 8fed97c..0000000 --- a/Chapter15/onlineStore/config/session.php +++ /dev/null @@ -1,201 +0,0 @@ - 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/Chapter15/onlineStore/config/view.php b/Chapter15/onlineStore/config/view.php deleted file mode 100644 index 22b8a18..0000000 --- a/Chapter15/onlineStore/config/view.php +++ /dev/null @@ -1,36 +0,0 @@ - [ - 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/Chapter15/onlineStore/database/.gitignore b/Chapter15/onlineStore/database/.gitignore deleted file mode 100644 index 9b19b93..0000000 --- a/Chapter15/onlineStore/database/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.sqlite* diff --git a/Chapter15/onlineStore/database/factories/UserFactory.php b/Chapter15/onlineStore/database/factories/UserFactory.php deleted file mode 100644 index d6ca926..0000000 --- a/Chapter15/onlineStore/database/factories/UserFactory.php +++ /dev/null @@ -1,42 +0,0 @@ - - */ -class UserFactory extends Factory -{ - /** - * Define the model's default state. - * - * @return array - */ - public function definition() - { - return [ - 'name' => $this->faker->name(), - 'email' => $this->faker->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. - * - * @return \Illuminate\Database\Eloquent\Factories\Factory - */ - public function unverified() - { - return $this->state(function (array $attributes) { - return [ - 'email_verified_at' => null, - ]; - }); - } -} diff --git a/Chapter15/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php b/Chapter15/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php deleted file mode 100644 index cf6b776..0000000 --- a/Chapter15/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->string('name'); - $table->string('email')->unique(); - $table->timestamp('email_verified_at')->nullable(); - $table->string('password'); - $table->rememberToken(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('users'); - } -}; diff --git a/Chapter15/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php b/Chapter15/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php deleted file mode 100644 index fcacb80..0000000 --- a/Chapter15/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php +++ /dev/null @@ -1,32 +0,0 @@ -string('email')->index(); - $table->string('token'); - $table->timestamp('created_at')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('password_resets'); - } -}; diff --git a/Chapter15/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/Chapter15/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php deleted file mode 100644 index 1719198..0000000 --- a/Chapter15/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php +++ /dev/null @@ -1,36 +0,0 @@ -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. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('failed_jobs'); - } -}; diff --git a/Chapter15/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/Chapter15/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php deleted file mode 100644 index fd235f8..0000000 --- a/Chapter15/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->morphs('tokenable'); - $table->string('name'); - $table->string('token', 64)->unique(); - $table->text('abilities')->nullable(); - $table->timestamp('last_used_at')->nullable(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('personal_access_tokens'); - } -}; diff --git a/Chapter15/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php b/Chapter15/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php deleted file mode 100644 index 2eecdc2..0000000 --- a/Chapter15/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php +++ /dev/null @@ -1,35 +0,0 @@ -id(); - $table->string('name'); - $table->text('description'); - $table->string('image'); - $table->integer('price'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('products'); - } -}; diff --git a/Chapter15/onlineStore/database/seeders/DatabaseSeeder.php b/Chapter15/onlineStore/database/seeders/DatabaseSeeder.php deleted file mode 100644 index 71f673f..0000000 --- a/Chapter15/onlineStore/database/seeders/DatabaseSeeder.php +++ /dev/null @@ -1,19 +0,0 @@ -create(); - } -} diff --git a/Chapter15/onlineStore/lang/en.json b/Chapter15/onlineStore/lang/en.json deleted file mode 100644 index 577680d..0000000 --- a/Chapter15/onlineStore/lang/en.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "The :attribute must contain at least one letter.": "The :attribute must contain at least one letter.", - "The :attribute must contain at least one number.": "The :attribute must contain at least one number.", - "The :attribute must contain at least one symbol.": "The :attribute must contain at least one symbol.", - "The :attribute must contain at least one uppercase and one lowercase letter.": "The :attribute must contain at least one uppercase and one lowercase letter.", - "The given :attribute has appeared in a data leak. Please choose a different :attribute.": "The given :attribute has appeared in a data leak. Please choose a different :attribute." -} diff --git a/Chapter15/onlineStore/lang/en/auth.php b/Chapter15/onlineStore/lang/en/auth.php deleted file mode 100644 index 6598e2c..0000000 --- a/Chapter15/onlineStore/lang/en/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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/Chapter15/onlineStore/lang/en/pagination.php b/Chapter15/onlineStore/lang/en/pagination.php deleted file mode 100644 index d481411..0000000 --- a/Chapter15/onlineStore/lang/en/pagination.php +++ /dev/null @@ -1,19 +0,0 @@ - '« Previous', - 'next' => 'Next »', - -]; diff --git a/Chapter15/onlineStore/lang/en/passwords.php b/Chapter15/onlineStore/lang/en/passwords.php deleted file mode 100644 index 2345a56..0000000 --- a/Chapter15/onlineStore/lang/en/passwords.php +++ /dev/null @@ -1,22 +0,0 @@ - '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/Chapter15/onlineStore/lang/en/validation.php b/Chapter15/onlineStore/lang/en/validation.php deleted file mode 100644 index 783003c..0000000 --- a/Chapter15/onlineStore/lang/en/validation.php +++ /dev/null @@ -1,163 +0,0 @@ - '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' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - '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' => [ - 'numeric' => 'The :attribute must be greater than :value.', - 'file' => 'The :attribute must be greater than :value kilobytes.', - 'string' => 'The :attribute must be greater than :value characters.', - 'array' => 'The :attribute must have more than :value items.', - ], - 'gte' => [ - 'numeric' => 'The :attribute must be greater than or equal to :value.', - 'file' => 'The :attribute must be greater than or equal to :value kilobytes.', - 'string' => 'The :attribute must be greater than or equal to :value characters.', - 'array' => 'The :attribute must have :value items or more.', - ], - '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' => [ - 'numeric' => 'The :attribute must be less than :value.', - 'file' => 'The :attribute must be less than :value kilobytes.', - 'string' => 'The :attribute must be less than :value characters.', - 'array' => 'The :attribute must have less than :value items.', - ], - 'lte' => [ - 'numeric' => 'The :attribute must be less than or equal to :value.', - 'file' => 'The :attribute must be less than or equal to :value kilobytes.', - 'string' => 'The :attribute must be less than or equal to :value characters.', - 'array' => 'The :attribute must not have more than :value items.', - ], - 'mac_address' => 'The :attribute must be a valid MAC address.', - 'max' => [ - 'numeric' => 'The :attribute must not be greater than :max.', - 'file' => 'The :attribute must not be greater than :max kilobytes.', - 'string' => 'The :attribute must not be greater than :max characters.', - 'array' => 'The :attribute must not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - '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.', - 'password' => 'The password is incorrect.', - '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' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - '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/Chapter15/onlineStore/package.json b/Chapter15/onlineStore/package.json deleted file mode 100644 index 7a9aecd..0000000 --- a/Chapter15/onlineStore/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "private": true, - "scripts": { - "dev": "npm run development", - "development": "mix", - "watch": "mix watch", - "watch-poll": "mix watch -- --watch-options-poll=1000", - "hot": "mix watch --hot", - "prod": "npm run production", - "production": "mix --production" - }, - "devDependencies": { - "axios": "^0.25", - "laravel-mix": "^6.0.6", - "lodash": "^4.17.19", - "postcss": "^8.1.14" - } -} diff --git a/Chapter15/onlineStore/phpcs.xml b/Chapter15/onlineStore/phpcs.xml deleted file mode 100644 index a1cf2b6..0000000 --- a/Chapter15/onlineStore/phpcs.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - The coding standard for the Online Store project - - app/ - config/ - database/ - routes/ - */migrations/* - diff --git a/Chapter15/onlineStore/phpunit.xml b/Chapter15/onlineStore/phpunit.xml deleted file mode 100644 index 2ac86a1..0000000 --- a/Chapter15/onlineStore/phpunit.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - ./tests/Unit - - - ./tests/Feature - - - - - ./app - - - - - - - - - - - - - - diff --git a/Chapter15/onlineStore/public/.htaccess b/Chapter15/onlineStore/public/.htaccess deleted file mode 100644 index 3aec5e2..0000000 --- a/Chapter15/onlineStore/public/.htaccess +++ /dev/null @@ -1,21 +0,0 @@ - - - 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/Chapter15/onlineStore/public/css/admin.css b/Chapter15/onlineStore/public/css/admin.css deleted file mode 100644 index d9495a1..0000000 --- a/Chapter15/onlineStore/public/css/admin.css +++ /dev/null @@ -1,33 +0,0 @@ -.copyright { - background-color: #1a252f; -} - -.fixed { - -ms-flex: 0 0 250px; - flex: 0 0 250px; -} - -.content-grey { - background-color: #f8f9fc; -} - -hr { - margin-top: 0.8em; - margin-bottom: 0.8em; -} - -.img-profile { - height: 2rem; - width: 2rem; -} - -.profile-font { - color: #858796 !important; - font-size: 80%; - font-weight: 400; -} - -.card-header { - background-color: #f8f9fc; - border-bottom: 1px solid #e3e6f0; -} diff --git a/Chapter15/onlineStore/public/css/app.css b/Chapter15/onlineStore/public/css/app.css deleted file mode 100644 index cabac36..0000000 --- a/Chapter15/onlineStore/public/css/app.css +++ /dev/null @@ -1,20 +0,0 @@ -.bg-secondary { - background-color: #2c3e50 !important; -} - -.copyright { - background-color: #1a252f; -} - -.bg-primary { - background-color: #1abc9c !important; -} - -nav{ - font-weight: 700; -} - -.img-card{ - height: 18vw; - object-fit: cover; -} diff --git a/Chapter15/onlineStore/public/favicon.ico b/Chapter15/onlineStore/public/favicon.ico deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter15/onlineStore/public/img/game.png b/Chapter15/onlineStore/public/img/game.png deleted file mode 100644 index 85420e8bbc16098bf26b4ee63bde0e91a19d1f2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25896 zcmb@tcQ~9;*FK6Ai69A*=pxZO(R-rKsKX$7MD&)ZQHMkcAsB-gz4zXNAcBa|d-MpS z*U|gg-tYacbN>5X=Q`&f<9f>8Yp-&zd#$~nP)&6u5+Z6MJUl!Sh_bvE9^SP;JUoK1 zTLj?BDvTfx{7|_nymZxevUK$@bGE>H{>JIG#bbzrnU#f>h1na=cbyiJczACx5c%iu z_Y>>Wx8G0g`)-|%ixg+}P*ZtEZwEj4@MBc$&mVtn`4bqYThYB z!jdb#>e}j)yHzVI&QRwqa#F~|%vYAG{)enlWqD!t((-&orup~`QCNQ3#Y+Vw#^e6VcC~R|8@HdkgO;+yCCeGo$$5TmF1k>iEyC|9SU6xBm0)|MAxU=NbPa=l>gF{!cUh z|G)hI$Bh5CX3|(*0+kCD$~YSwo4L4VNY^vT3{w%{T>cRy57=n9=KN4f;1kxMo(@Gc zneTB?uj5)j3^2-YJ|aa60xSc(n zpkvflu4;7ad?1GG7}GWc1D_COcEud3K^&4|ab&1JUd&~|r5CHHfy!5| z%E~$u+RT+uXKW(rnA;{DG zwaMEo&yJV(Nw9`pz|+Ci*=0Q>)T@=u0{NP8Cin8oz-~$TE-HU_`1G0JGt&ByE76KeR&b;Q4pEqhhJ(+Jr#(eFT@r`|Zu`G)C#;l`@+(#v!+E9|BD+*P&}{ zp=tx64L_ZfiL>ul4MHemmA(3Xt|cE`4YB9ww6H)D{p?LYhkCZtS7BNKhfKk%kX!zp zv)tx8r*{ynAwZM=kc*NwqSv<{}e>IKts8DJ3zP zA~RB8@-}dOS(|A(`l;Ou0ofnW5Y0QVjxdjKlh`8}_ zezsfWBJ0&2xUxkZP_ zghT!$3IHCDg9*@{zos;pZrGBWD+WvqGKifgY~SG;x!yQl@%G;%OQjSc`&8@GZTo2h zqU-T}j7>|lYKJCXwlA#xgIa_MsO_+0^=EXOIEL{KJU$Muu^B`bm&MJO?tA+L-QL&3Z} zx+AtU^oZu{zWJ!##Nsa}^y#9)VNLm$WO*&1xHN)cnmB0&uV6|dDb|5&F?H>jFDo%P zq1k%u0=kj0GFjj{a0XXuIsGR3k$8D>>YQMwB(Y}$Cv%}ScgZ36z~a7U&otm3WR1A= z2c)j1lB4{)2QNE%KW{ovTnU@jc=3CsFND-FOkI;AZ<7iA$~2|nppoG~wfUWMk4ett zHLzIpj=YuhBQHy*1ttajRAuXtU+Z+o!XWE)cLaP zNw&(t?gItQ&)042)@2SfcWh`Q^Io?((d>^0KU`;T85VOnY2BSCFJ_=Od?pLK7W=7j zB>*!7?DBRQ5*(7DrA#JOp61>JE44dLIXGURM8EjCJZCeuBW8uc;v3F4jQIqbcwea~ za5-M7J({whNq?_*v|YmB(Xf$=xV4{qfujXeM?eiodH_XF#j||Nc-UA3?VbJ(O-b1mDXJAad@XmMR1nhL}SUU_>|qrPk8B&(@{&lHch@+O}c(%@&nmz7%X=pP>npS{iqrRb-diSyqq zb0#nNQK{`_`(a*cV>kQ#9$kdrG4;;mmp*Y6)gk?shQXqGQU6BS~N*kd^a(%F1ARVaf!9$B^Io zQZzO`koOrjfE$ewd3?GCU?J_{2ng3l;zu1Vh&-zjvI3P+X)lX=xqdUDIAN5?(=B;f zP5|uGufVN8dAwa0sgrANk4_IlB4;SY&OhxheI2=uV&Kk{tpgBzmWb_8&d7t#<9`nG z+|Vvo?<{jhU!GN9ev;ckGJM! z>5G{HE*Aji0joO+{ksTqpYXc+yimS+RCZ!hJ9Yl2M^BtydQM^z(UEC22v@ASlUes<2O}gi3%~DhK4hL&(Z__y(S>n6jaqC5O6_1jlCcPS{0@|Q?(%o z`xFODvxcBnpt9VWIfDG8guw9PKhJLZ*Ght%m^R))#@UQlt*GA+Aqj-Rj~Fl`9Ok;Y zgs0GQoh2=e3Df48_G>p!>$W7wgM$8N{Q^V_Hi#oO2!%gm(?SgV7U~)h4RbQy>iiLp z?By#;Fua9YMmX8Es1NTX03tpPC8!r}dczz^0PZls(wOSkTe|hOmBMvQZ!N&CRx58$ z693rl8(xBFH;m|cXQq~M**_XEXc$^Po?$IADTmFUK#j1cdRrj7{?(1w;1!Bzp%r~Z zQ97fJUhl--ltd3|9#}q&1U~4`M1%?*LNzA(vD+6V6EObw+A?S47s4VToyY%~aA8a1 z!=)_Q4d+4ZEv;LeyLoVy|183J7oe{t7k-`d8#^kx9YedamstX4jjUk8g*bWr_S?T( z4ZPWQADqompHG>cU&$UNAAofE`Xr&0kG^c!elAK0z#|wLTG(|TRH{YwQ>K;7#N zhKfSVuSi@A%NVOpIwl&bo)##0C4UcSrep#Du+K6T2A_>c>A-D^8-YR>FBK4)djIVyWM6dkK^L5nNj4`d8I1k1`NKlGCXOD6ETB^sEGh^ZQFB}ud9R+Fps?MX_Aw2 z`KpU72rZY(d+v%#t6_7w!A1xVdvE=@np%~xhrKvdYReIl-RX@xRgGHF6be3AYHsm#}d`gO)yq3@&g z$j5n}l0EhHF^tk7p?v5P^oiQ!wL3Qnvw@;C9sX=xKOs(IeYpNq+A!dhtg{EJvI)JN zk5uzE?wVY?hQ2Nx`V$u`rur;|ozBAf{Arwq<`tdN!2*a)pv5z`=%26r0-%tLBpF_@ zGG`MX_;X`lMFJg%NrE=ewnT@oiIlTj-_+7qqecVFRl0H*cqqtQgg<#TN&7#}yYyP+ zu406fjeeF$X86<<&q?(((WzbF_WmA4-=~>e7Y@f!6^DAgQcZsxMt&@P#3*$u!n@^jKi*9D4t8Rx~+9tn0LxX37#Lah0;v~?E)KbZS$guk{V&NJR>e;qz; zn&i+k@jgLBDDi`Uy&&hP!cE{8_JG?aR9z>5{Nb?q%Ney`ej9_+$$-H1cbDJ)z&w8; z1)vyKjl#m%2(7V4Nq{X~95$kg&N?zTp86RMY>g*7NV0Kfa+Gt?-O7~3=8JGi(Vnr6 z)`sYkstRNDvLy`>ZAT;ghk%l{H%?aX4Qr?4b7b1WV&11DE-4MGZ=37-%5oIM1*V4Rp$M@pba-6i&Y)fWB6mzjIz6jT2paWvoB*Z zbG2?MSrGp2uxXkAL zfS=sF)||#-+XuN#?$!s?+|hIq#6j>b%Ucd%>e5%0&y}zoHTb@PLYip-RTrb=lXLQz%6J|3Hm&#K=T5D%!ga@?3Kc!Km{GMW&K`Q_~fo9>UTD-Df@DDHh&g2excd z^$;;27K!v})4EzJ)R@zY_Tr{n*IkBfz_KbpR6i8$617Wh><)kO~z`HbrJbBbQ?44V8)^ah=Uce(v zmMTu#6G43t(3x|l=w6ZL3xSL%SxJG#9njxu{2SVIIk~r z9$#fZw7!`N2SrTRSC<;4DRH+v*~iaWM8%x@IGqR89ymiXFp z${SVkgi?a8KE3&t^F2UEeqKv=x-*a6Mr+^P$yDLmfK&d@Q+8yx=(0c38^E49K{8C# zwa2P4nTM`D2V7fy0wGVsO z=q^{dDVG*MbYJ<(z$j3V@6G&%VDKlHVcw(nVpex@fdy0s6Pb<=W#CAtRsr+{vSAqA`Keprb-OFxK zWdZ5_$*Irs;~>0^R_hvT9Xj8=+Z=~Q8nxXq=;|HsF3)FyR8yh4ffBUKQC!y;^ zbw+!0ompbu?14Onx^sR%6FrSzGxqEt2c9*7!o)ZO?#BjiG+PPadnT72!iUa|oUsYh zojut&tm!LE=-k_DA0}D5t14`fypF92*57H$%EGjSFAvZK73BMPtq+}(^nmr8kCIZ^PqyCwUPl>S*GjB=#R~QyCM9U#pG4_gaB}P z%mY;zm*5wWg%{T6`eP^v_MV>Bt1l{#Jo-sjd`F>kD%C(D)3T0DGao!+og?Fnj#$^! zw|&E!ex6);WAV55#FBTiJwCJ%P|S3v)Z5LnjIw$an^4oI_3P;`y#9Cyo{SV35EbYG z!>P{(Obz$C(%wd$N-SYKm~S_~7%bgQyp^?GT>#vXi49$d1C6%wTh!9 zPhK5Xp?5OLh5*cl&3LZ9^ydr1{8&tt&0conx%BJHCT7>pSWPbeY&x}EeBxG`XBqI~ zZOL6a&@wqtRM#Sv&HhwOIU(JgJ1$c7N~YYpnO0DPu&1%aqLz7TjR*j~w!ApgND;i| zzl`qj1Mk2z=MkK$X}4*57@Q*>%6$C+NP+TKESd zDsb7kEaev7GGXC*0ACoo^}Q$jp;C>b7vk$G1-uKGD)!?JE|1G@BfVRX^6pDEW=(F; zv4Y>s;lcNx;fuHp#Eg>Sa*c!zS=_a3?ERFQt@s>E44lP#y*?1Sz*kvCUck`655}g> zU!Tdir}@r+YrHnsikwAL;c6g%(0|pul_%}QFw#7EW7Ryu zYC*sdmZto5lNOa1IgLos?97@l@bWTsX0&FVSF%3Kum-u}a|IGGtyN+MdH0Y!*7@rb z{Zcs%sRDoa@ZRu8zOYqS2JfD9q?_0aaDARFuLP)c5AY?d0<6;v-d=w=kI#AIMu8o$ zow2S%bc{WISlFVV0+w^vt#?Q*vf%NEP(uu`zpabh0&$Q(bPW57lsvBrjKV=a^bB^R zLOsul;D0Xcee&GPBee~V_;NH(K{4Vlwhz=?P!=dqz#MLwswvYX59Y52Z@LC=(!&XB zg_7Jz$))zwR&U7sKp-PbtPc2~VEMuDzw3GgK*-4m&{at;a#>XZ z4fc_%r`6ZZb>{4C@)e9<4ePVs@Pp3yn@MSrDOp~RaCTg@%`4-qXZ zVLbIFR(!i$*(+(DlCNNuzIiFfJ#Ky~$t-uL$-e!Tfa}E``B_P5j}T0cj$P>BUFrfVgD09kmY z?fPM4rOIu5hS3x$jcp)JO}w7GmWwF5e2v0e{dSJOD>NCyyWW)3i*-KnxmXv8ob7ks z@IPNXkFNXNReD+IqtiD2c@YA?uBMA!mb$!PMnaiWYHspC`C_9mliww?1mZc)Q3G;- z+=oFcM7nJsQ*S4(@rag2_if$zQZ0@s2#AX~D5lvn%^KaPO{CU?>@r+zlazkPL4#>( zYHD(fo*d49+rU4jCs~$KNN&EzcYQAbnTTEcZkI`>%8V@0_lkTtgoCf-as|SGRbVHX zR&0R+R+`6wqu(#3LZX%q{y5EO*I6{JEh17G!yRY7dsk9Iqs zT;{J@dK6dwOsNoLwra6rRO69kyWC}?t~LLF#LdmkvU2>5z_@+6MJO$4NHDK_3gp3= znB&oQ2-c3Hcg5Mw)J4sW*0QHZZ(?GsNI$ca{1$UG0?Kl5?DP3^(|b|UJkP|o8TJTY znujyd$_CHZgqOd+ma$+7{{XCf9B3H?D>k<_PFDGsJGl|Jg_LIYfZ|n8Zs3eBAZ8Es z?2LpOGjeiR&LtDDSPOQO&a|#~xR3IKD=RBq@s&loYa(OG_N$26bf?yT+b2ODpR$7V z){BIRKm_0P?syPi(fb8W$?@B=b=ORLG5&9LZH;8-;ZSxqv)E4{ zI63i6UX{l^anO$}g-Pwn`I8k62X5k<`G0_3)VAfV{vexPeqfnwz=;_&i*-qizjkjh zWD16!pdvTw>&1^-UeA$yDLCz~c)2>iV3pc8Hat8$Geb`r!fRYF$j_gUPH6gMC2)AcP+^@@-L#EO5J^Z63ObGk#9a_;V!%y z_v1+JY#B+&$dj{=03Mttd|tE$_m5E%v7}@)XrrW#h+%jVt^DujLaLp<*yLAs7qf7c zW3lGu5ACntHB5I#@2!tlu84198{NlecG6cEL~iCDb80q%G{n*3Kk)sATFscDBSgev z<~6^EyO(52Z+(5eSM=p0tya7NY;SpS2tXJYTAWI}8{IVOjin3?rq;$v<0)6&8;p74 zPw=QoLm;VnMxk~Y(!=_b8=FW&sO8%i}dZV-5)RG&-aI9EazBbVlgZU|%AIMUH<{8DKiIHQAo*;+bVWg9SJdv@xuaX?W@`(5V)HM8 zCD-%ZD#exG9t8z;Dm+B({%XDt<%ZjrN&4lD?@bQw?(g0W+?(vH>~*ZIt*No3r>Blk z#I}BQ*BlnW8b3w_YejFO_xJZhM<7d!i^MyS01^_CVs9rCKiu8c_~o2jBmk=iVDAF7 zfncPbOt3Lugtg=BA6vec#k$zcs=7L{-HX3-qB#?Iw?k_NiAl1_UdEbue{O#=RyA&K zH(C^Zr?~lS>0;~BZM*Fbg}J3xXXRZ`DD{{2vYi`=#Sn8q;J7?o->+Ya$Kj~RU&JIC zxZ523AXr}Mga&JMX5t(TgpioiuKArKA889KSkP|frT$E$3a_*xm1Xhj?M${O2X@c- zr+<^V)}@e|NJJ&cKj4YyG$xDf8jgc^(KpK{3)07^V=IJjR+5C+T2YKp7>Z60hXBoNlV&N8K6! z8?;sZzU}r(EUe|{rl?OPMtR4a4qr0#t|eo(Cv$QX3r7sXlsTN9WY0^VD$Q44E6I`B zliDF1`0>O^u)qtXPRJkjl4Xb>C2@s;cD?HHhLcS6Ed<$^7ILd8%MMgYh z(Gu|u;(lkkqi3{nkhGsc0OBOm}ZDW~b<45yY2n zA#>AD$Cxf`w`8gYi3L~w_jIOpOJhzos%|y<>;mAMNt|PjWD)XDRwW+VMO?3zC)2q& z-W$3^BF}W)j<(HOPkX|kn<%_oCdu0=a^A!jNu^8Noz3^o|VCIoTT&&8( z<|tv8>c7X{dpV7bkdHWQMuY$`96Bh&m9G_$E5AZ^A}(p4tI~5 zFUP*G=;|I_(WrC@`>yC%Tua=sxZtNnB{hadvS~%d*AXbYF%ySa_@K!XBNnTkLl@g3 zb~xn64*l`Y;TCkI|L}Jvt7A4XacnA|Be^Ut9iXYr}e z1RDNCt=k=GH{;URK^|FHRdcZK5Wf|wujHIOd$BQ#WMePa^2?U*lwWEZl;Dl$e5x7A z5Ggf!urZ0P!D#E0us3Vb?_Hd3sW>`tv#0inh>Lq|PQ8RoKG#7fC)0)V7a5LCPdD<6 z(fe4qr(GW>HVlQ*M|2w#e|Pq;rGFp|5VHDWnTm)p`Hy3&%xPjm%rXuqpuPAk>Rtln zl;={i$NDT{c1S~}xQdixXb@W)`l~DU**G~B3^#juF*~cNn9Rb$EjCZQbK%PD|7(dd zf_lcuB^JTqVfVgy1x`>-#=uO?Q4ZuBhmoyfZtGyw$c$H^-nlr9Y<)pyB}^l;foyCW zyGP>t8q6!a>_q7uL9%9U_EHa9S6BI%ocuI0K*Z}JrSF@>o_g+&j1lj6>S65QDaC^m9M8W?#w;@jlit0{856drYQq+r zTW`_za6cOEd6z|a-Z*x?hVaRwzA}W=1L?3Y3R^J2M9OFAU{Kk_*%1z&>)OOJhFZqm zLKEGN?ucxT^MPOnmC5#X)t#Z6qaF>0y1r@Ttm>3Apf!yM?k6m%TdiVb);u^kVCxd5 z(&e&Cl{}Vu$LidZg(roSJeB6pT|M`viS~{<)sT!bYyVz|{MG+d=?lG>v-~AQuw`i% z!sNSI$B-l;l5?Tk^3AnbXksnt@Pg;_oc3JivNe@LbT5)5i8!G8qM1oeOr6?I!LdQf zV!c)Ts18KkqNb>+COQ?t$bTfaS-)07MH86>p2 z`PExZ&=`6lV%2%S7pZsO4qCV50m%r8c^Ow>Zv|CUZNn^_#Us@KJz}n8*<1n<mrfRW=YF2=!`U303!H~*B+_ov5WVPxa5l(Iqh#INpF$H(vu|bM$bv&c3jf~Q_iE&AIzpb&)!L6|SpI4p z)Q{$gG$^4fn?5SXj$OujWW!HCvak$iQl`dEoBD-n$B3_B;>lmy;H+4*v&@#$3aUOVX7H#WOZ9gAj*W&&r-}gcXcz#MsgM7Wy&to$ z=S$tru`xcb&;EyK6{UCT=UR7iaw3_cE~F=%pt^#y7A*UAR6HBnZCteDf!#8^?32rJ z7*+@R<^^5xivYe|Rc%8}rf{VEXN7<9gZbPx_8nj7Fn-FI(gh@_RQvClI z8G4NVa>6o5>?wFQ6WY$&1fLJV{P+Bd;Z233Z&|nekx5JAYl9nA@?<@clN;)L@+z;O zOfb3ceJ6lyTQbN z&`fqdncQr`gZo-*U1tmHT^0G zSrdfLR|i&96}_hmRHkC&KdX;hq&WXJ%;vQ=mB-v03uZ*30 zq$US~;s!YJGw_=b890Et!yF8y%zi64Hux`xQ|39+di1YOBK~>Jq+?ING^i2ucn;p! zu1AUZ{f)hbVg$`M!I}zv6h!4D`n#%41Pv`MQ)o_CX2+Mtdhf#$;@t$)kjm$FByPsk z@7y#qKml{__ccJ3KlH$ab4(lc;nI_o97K)GFt4R&n!h3~r9)7BXk1fVEuuaGk$)CY zbhVygrFgc$*q)5Jw_npi1AlJLOo|B>-!(EiIx)WTt}dx_^08;5wsfkKEk=T$Ki@3= z!vZYZSFqJ>VI|vjbkb?Y^yARiyfd&5=h{|(ez1U0%!CDpz0hL{ZaP0GThuV0uHS5G zYSKAvVNRzeE_M#O@cXzhFfafs9V_gNL3Pm4(yqrZMgPL|dTE=7U?&3l8#+V>!NDCt zO{-hOCp0S)0jO#P&f1UCwMm-QwD5_d;E7`ObM^At9E# zOfU7zI-LkXd||T$1w5iL44@Nlk?q=-?IXW(Fb>@$ZY!>T{jUIpwMX)ngANQ8*DQ0o zGv0ElZp7!?hP96OIeAlG8cDm2UvBQjIv7i=IV4W0A4BU5OifMA&12BM3o7^jJyR{w zQfR)E){p>4 zHC0txQJYSz^Zwys2jNGP>M~mCy_t1#R^DVUnP8T}+Jvo5n>r`MhTKit%*;V!lM6`> zM!)y(Uk<(v{=s2o!H`D+&YprDu1eH{WZmf>268x`hmRh`$HhVKN5{`I#g2}QK-OP{ z=g%DZG~o!pU60JwMp{EF|D~6YH+yZIwY``K_6#l1`0fj7l6LW3x;Exvo1z3Vj-lb? zAc>n!4hM^+K>G=#{`7^p9Idy%SJAVuC(GgLW9xRH$EuoApH=9of>T{wT>NfQI=jWY zQi+r>efjd6>k2Z*uO3(R4>T;_1MfPe)?D=ks z2Avew(!${>uW3_}Cl~2;f_NU|j8M2-W@aXU;v!Z{-L)S-eiYo9(BR^^#O~~R&hDm{ z>vvX!A`bTUP|fd#@6qhOeKK9DMXhA#Vy6j)wSHVDqkcDLdFh|)AQQWWxuvD$yLZv^ zS!Ybaah{dgpcg#p*dR3R-`g>hq`GO__i;+jd3EH?Lf+U~PZ`g1=Xo}82o5;^>$)7L zk;o@%$l2jxxR}zXf~vBz$H!mgvbzO{-*N>N8`iGRG;&UVI3SbTT}#stE-y=(5(OwT zVA#TPm+GpsKCvcB3U($mokQbb$M*)yq_pS_?i%l|D9gvCb>ADT*g5vGFnkFoSl*m& z&@=9rp6mB+*LS+y{xfn4(fQ7MK%NDhjU}UcJ8pcYJsIaS&VQy|- z+IVm>s3mPKo`|OQ*qC6R9hsF+Ns;V~i+lL+3HQeeq0c4t;mgpEj~<5M-j=dXM@m|2 zYsaumLLoajlV#Fmp}$XIV!wMfXzUzPy{_yb74B}Y-1fXUhX)%k9}=uiD|yuTox#<< z`|av*!{IE#R7pum-P6_5^4EsD%K{4SiB@2~<2YWSfGu*5Eex}a6smCi} zzr*$MW(TJqy~pAaGNrBVqMqR4V!kSsnpIl+HSYGwT)qg1q`7rH1#!`CfDRIK8#E^QI9hljnZ$*KbBex! z+OE>wL9Ya~FlZSVWV{cOrZnjL#_MTSor4Y+31(CS72^v{6VwKaI&i(D;bfJ=!orA5H9Fdu zE5N}fvPyeHVk}{vnxU>iQ*vOu^h|R#Mv<|;*LgZQuD*K-@%MYWwVgOIE_t;HF_$a5 zHg!?sbuQ*B&WP97>yD{eh5>0wdqd{ChgLNnlDCBg%>#Q~MYybq3!&9fR-zVBi)^x-`M8TuQI zIr(fFmKukIn@TZm$?%6qv3yVwDUhh4N-O@H2(s9thO#nEI*Z@kC;y;hn(-o$xw{~G zxP3g2y%LW%XX0L@sy1$Hro;_4{*hFsRu^&HhxWX(%Amg*qUg*FjiYOAW?v34%Ot#crSC-(fhucJ)Qu}wcQF>&*zdz_ij zDPhSL%IEku=Te2^OJ01}%h3Z=ddBOwZ~0t?aw#*|W%DsN{7{pNFqMF9As`1W2~ohjUJNyg-`dl}2BZUUXL zlWx&=nsiYc@|~QJa;rhr{`mWsCSlUw1v=s^l^+r6Qj$p$9i|F+@ ztol9H_7Au46ZbcWvoO|ebW*r3xzpQ^MO9VR(t#Xg!7lTe*a}x!J3GVCQw{ASn^yiS zSkCYPN8D4ERf`)}o&5%{hduH!_1@V3H$7r^dN6H*LZTj7*G_tJV!d^v`fywH8deCz zWkJLzE8pFw?U9!?#p&7deN)<2F{Ryxf)Ls631@cC`sT~v*nIK#HqM(zT`E?J3xrrQ zZR19l^J)?a4~bFJL@jEbu@XSJ7o(N3&-6(4s{6HhV`ZFVuQqsN6g`TA1_Th@6wKk6 zWXa33I{=v5y>yXwbfg_>BGWJ5e=#yKVF_PkrHmg^L)H9nTdUXRkr6{2pFZkq5_U1e zs*N^K%S@DC(v9gx1q&!baZu1vTxL0)XluX79CeM9XBJkvH}NOMa0$;PZ7Om!xnz0l{C_>+Aaz1 zb+lAeboBJS_ek`N@gJ`nem(njiS}Ia)_-x9-MJfivC^$FYkJzh1?5v)7zhXm0BTy; zlRUo|>2MiRy9m&VFDcW`bb#nvs_|4IWmE^SyHTR_)2FxW_rme zq<1Iig|>D)uhF;1kfY&zkFDm*CY{|pBQ@!|2*sx%x|?Q#wbCauGbyM&_xG#cud4~w z?gxFmbXnM!Dz;-r#vPnL0QC{6rOCK7J*@{zDPsZCz%#^AQ1-K}0-v<@+8N5@M$^e{ zLPYd(wUeFQbiG^Gq|@C;7py>GAPP|g*u=>cv(>@fzUH*EGSA&bAv#6HypdKzQ$!s>o5 zH)LKKNJ&X?S^70xYI>hI7{m%A_;O5P`^$i~9dBKdxnk?wc0qh(L}wJsC^B1KmA_mU zPHc75@EI@Cjma0SmLENaaFL~?y7o91uCCP8C_Jx)-viy} z^Yj`^bRK8j1)sb77!aNpBk{X_u8{Khrrn4(nX%$E9?U~L9Ryta80>fr2fA`+D!dU+ zVB#|9UPQqXk@C!u7(J?A&JXPvM<(uM+8UymJDCZ&ATgb5BG~jOuEf``U*p;znPR5e z{)~-@@bN|QJT*}bLmnrHA0?MLG1h&9?&yI}KouZdlynp?u)(m(@ua%@Y!4w0!ix`A zVon@SMn`Mf`kLM@dq3)Zc+@{*acTD~$niT5zoWJF@}F{ZDx8tF_K-vEG}`R>X?Eq- z;@I=c0FjA*FPtZBt#Vo8n|~TP(EGtJuKFLg@BV1Y8OFl#6*EVWzE3h?CA$A2y1M%D zjOLL`Ny$mgMz1RKUXLh1T%dzWUub*2r=8ckO#^daB+VQzMxH9LXVlH>ZLzj)9^|cH z7?^+9dp&0O6@0*vPrzl%i67JXMmSOB5!LO??6{`kC=xZ_FR0CC30uXblJK|3b&VHPO z!((87`&XLH(;&@gvtj$*m6Pf+w)4Hcz2n{a43V7N;Yc9?fq#d*VD~=uq#UY*vrgB?)i;T*5Z4|8*K-JeDDi$?(>7ZJ%L^c5y z&`G#ch=fX?ERX%_=ol+C9UCbB^_su0w>L$~dvidk`D8@{Q9v*r;b|mrmlq zcCqgAKPdn~uZ^`2ghdqi65%Vf*n3fQWDOV_^1iR5RzzYejm-PlA{RdJ;tr z_x6;@gxU_P>n~33b{;w*PD8iwdqwZFk{9Z$wqT+q2$b737vLkB_2W#vC_3dRd1R;2FtbDs(jktRT14|!wpV;yQ77NnKq_-G)Twe@kbQ<20`L4p7AwFTsQ;d<5gAD9 z9@6^m80Q*lvNAk8V(q5wq6FJ~wtLRj^(jR{ByLXJHtv2;f!PxGV*SZaQ}s3DRMj&h zl;_?+oeKQ)ibRAu`~5=kWGiG2B;hRbP-gHL{Gx;y>-*s2Ax}Fy?S{)2I4!7y@KVZX z^$qE&F8juOPqq44=!d>3q0(+0j8l{~QDtG%en~3tw)$#G17lr-%q~Wo^Ma_b?^{@} zo(ts-uwN0coii~Jl9`ms&rGLEMHB@8LL19O&27Qpd(6rQzE{+eCd;j_Clddz!!nSa z{bO)YOGPFB*W9s>bg2i&PM?OWvEg4jjMTU8!n2VNEq}|+JA#9Q1*UXY(0w+ShusF7 z7jGD!D)qSS+cBI>FQ~AvCfrx3z6;_7^F4qrOeH((^sVCj0HYlSa8|M|=!rnrlv-(p z+Fr7Ux>#~A*mXpSheCIn_D2nIFDGl4gcE157&DH+?d=hZ*a`dI7r13Fy?G@GU46|L zxJ{S7^T#fg|3-@qnL-PU`b`|ruGu-ANv;d1kr^m#>dA$+Z$6cAQ`nKOGcyX4`(79rafzPL2J{g>3B$)3D+;z%;PE8 z!H1U1+WlqZKzlCMR}D^zH*}BkI?}%sS_iuVOsz)Do;3iHdTpM2?_cS?S#rW>tq-Gz zV@^nP)6SyXt~bIqhztmXW%zc(K!Y=gT0-H=&4*pbZ;>Me0kXGEzc8uamY*vdw-;_? z@W~v=TNqXrrRDCrGi*lI_;&6Ei^T5S4PPHu4W+S`90q<5M7+5Yc)o;Cc#fHPm7&kggHDp3f06P!=rAA6)s zrV}6Nd?yq6NE?056nUX_C>+ZfylG>6+TL@G{m!(Nu_Bznni0&OW!Ax+cyV&6(ivY^ z(6AXiBXf?>E@3bI2l7MvG5Pg^I*Y0t4j&XXcP876e#L;{pl(YSPfK1MQ!=5f)Q;p9P|blZ z-rA@eE6=fY$4MeuqRC@!9q6WMdo_7oM5r{nFq?~uV~LB*;TiAD)t2QfLN4I52v(j- zW@2YI6)k==4LFSQc-_pz3_E|-@n~d;(LWQDPv4V>TZwgJMY&arpI}74DkTzucF+r_ zn-Mf8B)N8M;a+`l+~J@V+c4c!k?S|xG}0&<3o))*Sc%RlbVMcb(++BP5r#*DvX@j z|2oxnh^LK-(J+53NfPA^nYt<%8WypPHTL6L!Qk5qCRcah@oX}@$-a6k-!y7Fkf35w zZ`|$74JtG-nV#O`5&$Q%L}8-}ltT7Xu$mAT@nmp3rmdmR?_exASiQ(z#CYXj`{!Ks zM#G||m`{&E0vZwYs;;edns9Zf=Tac!4h&3})U^i9c64GQC>>NFVMvL}&B8aIc%Py@ z<07XVuBw2~A_)XrU*m#F?x*q}nGAbHv@C@EsegLVgOdv-#p^h+d&bZWdeP`vjzgS) zo{aysrq#`yTnlh`czHlVk!3hOYT8jGv8S-t)3ka^LhVBI-S*$Zup<;xE#xuJg1WtM z;`b8d!)dS=pqIi_AgP-WlV|PV&{YcAnyTXm?C^=Xy6?Fy_5W4cRmMf#wChDtWTiwJ z38j`&8flbVdXW&6kZycPmqrDYa0Ql@Ub>{aM38Qf4(aYjIJ3`tzMQY``Sjo4?#%4W zJ$>KTb^Y%xU78siTPi8>2WEDcUYi^@KIA=I&rmKN$wV_TzOLldY~+kq>au$G?sTg% z=%4{vlNJ)%C>H<@(+CG}-B7Kc**|ISP`J3f^m=&0SbPLb13W<ksW(Q+&QP2(>Bcu~?!W0w~WMwJzkRFm6@;eGReiEi& zRUd2If5XJDV`F2ZLhmsjvZtUwn_;< zUU5ry@~+li+XrFIe&Dy9KVga!oAz64KeO4+jLA*v6C=9^@ZQc#mvVhEwR=RYQRLG{p?SS_>|s!1dbsO;*k_%kcJY#%7^eoa9$qQq@I7-pN3kR6TGr zP#SsVz~I9qMs2=F@%|QAz+Zt1jZI$QpxKw_U}YgEOB}G`n!H;L;5g`vA|2L&>gsAN zI`or$n&o3GZHZD4j|R{y9+M7l1L1AH`ooZc#p!@dJ!+&GQ~E?_A6UR3&Sj9Vs)d7Un~&mh_MUII5{@}$9pyMnvB z`@PA_{YY{BCaQQ%DQot`vBcBaPfs0Ti)v6kc>!lq16SVb)k~JlL9oACS^OBQGkyy& z-8Qh$BuR&crI@bE6fi!jtC1tcpU-uBiO$V{Ngo*jyi3dzb$3@Jvtaag@pjz-(HRW` z!^uTV@Z^4cGdSPJ>83vUuvq_zSr(knR2$y^u<{4zK9%c@!4dosgEcryUn~~+Vhbc_ z;^Q@n%HE@${j)e74MOA|CB}!v9Lk%N1v-D9`ezB5Kj_+7q@)*{vnz6ROETzB(13Ij zq6D1CEFN!-w5(1B|K|_Yi2bu zPpAL1X-G;yNIR1~xA9n%(gNR!xdfKJ;6Q>A#a(Z^nO`3BfZhk*VyF8Isr5stHDjgo z&z_6T(`s(P(8nn2BNcE=Dsi~4o#HYHll9rJ&z0)7`Tj3#ZyB9)yq@Ey-twjTazC4I zK+F-Tf(~aJ@9%G-#SHW92x@EQCcY|C;j!sy z2_YdN+L)7;qa*u14?1&v4hya*J$3ayuw1|uR5JO+#M}i#MTKaCi+weJHi#UM*UhlQ z)8vfg1rpJJ)rtZwcE;CdP?CuH0}7de0aer=&z7>(+eYQ|9;@HfER~f*WCy!-Co6X< z7LOPY`UeJz9cQ=VikPU&%FCme^?j5UvRR2Gz$NL}qw0IqdeMyfbRj__@Y6^-Eh>&j zSOr=P>?Yvl%=iQPfAF8Y@q2O+3O!;{IeV`rOv1%$zJLEZzo3`4Xeo7J3wBk{HBHI2 z>iT+buwwJSZnhE_{ry|FIVmGbIj?O1IJvQ7iYDHIP6uj{gkl!OJvs`G)kdWZjFmWS;7oK@A@ z!kVVzfN*@D4T!#$^`sT~RJyIZ%^1N%Yu1{_o%e9P&ew8FUvfEA))p5R+g0~lly)%L z)Hah!#(taVysk=5hjVhrzHS~>r;L!*C8COg=m(n14lP}1`^uF9#%uun$YxdAZr<$3 z$i!oSr6z^voJf>RZgmPJgp!Pq3r2Pa_ih{|iMhL0Uwk?U)G$N}fPK0wP0z*6?YKQW zJ;PAmMH|Ey;FT6Sr%R5AVzA(>_HGE)T?P?}Z88Japq;(FYxQe6y9#t|Zc$Op_bxQj z8*FwHHLl8M4DMD|u3Qp(l^!Y$kejR)~`kp~K^H2|d$d}~&fPnwt%$G#W4}n5b z`Pqc&(E2a+_1({UT+v|Oj+xDk>fnbXe<@U_PN4vBMBBiCE^*&u6rkRo<#rPTbgbqA z-VgKX!lm9PIeNSTHr9j{*I8dZeLLys#oV}97NWyOY_@jPYx$&CmmEjiiPzCXCK&s_1JOW+9t(3EJR8cPK9tV)n3Y`JRe09B-A^Epy^ zvG(=&{M+`UDDusvb0@Y3i{u)u2|WP9+8tMF?lUFLICpX(POrY7rCN2R(~;h0)la2w z?s^W)`gW)B2y7ifvnPAAKrl#^qZG(e%v+?)FMk!==26L~X z*I&fKek|{LqX#lRY6}E8%O_No21ZAt-3CVeisV@b*m7NFRAKifgfuvS6qU`{(uO_j zeVe$SIX|70m#|QM2ejqzC^wG4Uim&$GFjar&z=&UFWvUO-;oU zOlsN?$n{WE-i}n6$v+-LqGp&Z#k7ItCoXt#lxT;)|Ou7_(sFZ(r@5?k`i{c7|26Xp1wd(b-|hQ4og zR*A2=d~nvA_#$HJyQDJQ#HywznxK>5Tz@?!i%)@?$AS!KvaP;hTF5@JTWuE>p-M@{ zuprS+?caX$*CpCoHfG@Fv{Cb5SsP=FD?@wcySA3R&$VRfd;0MVy3pYS*1iP<K3^@(d4T_{^1HEXc;iOM>Z8{bDC^D zTCG4TIv_Zvc_$duyyy7vS*3`bu`#1ei1ElInAjj>#4B*Q{EXu*mg(r$?m`zJO&{QZ z6i)>A<3TfDR(m*Z3>Cl+2-| z#KU$Ot+N(a3nst@k6r{!TNw0{kX@@Ry!3ZxWY*WNhOi|?({C-6OoO2Bfg4)EP+Aj>GRnOrNzrvXxV3*k2ee&O*cCm z{HjN6rc2C~EiG62`|*o@zq<8g8lW|fj&i8UIC;^32T7xZ0{r%Q{v&L)boxNxqYvx; zi_SOX^TvzQx}n>T&(e5wdNv|t(1VC& z4IK){PRV1&xx12QcmvLkP8itLOvy@qaiSCOQ;o=Ql>eRAwF@MX1Gv1-YgJq8;8VZ$ zwS@>-!UMzLv`=z0iH&CKHND1&@``M;DneSJ*q-I_@#^3ZOeaS!JxU?T_t-fp>k1~y z-+M3ZCC^j(VxRZ_mTXbqT+1#B7s32}`ap`^C^Jk<>lHs%-SZaHLe@O`6~=Q2ga*&x&&RJGY#u_%f!VjfIyx7 zJhE;1n#w22sU1za`~-ko{d1fni&N`IyXHN8oBQiY_j}|6iKz{G*6}#m9_37LzkK=f z&h4Xj5sU-Q3vGmAZc`Y(z_vgpsgvK~!i~S~h5xy?!S$%3O#|ORYG@FGqUR%Z5u3x+&HNAKKlXrz#4>)0fKt5R?Scm_+Zu5 zQNM)q1{rB4@xB$Fl|-F&zdJ2pSmgCBOilIKnkWZ@)2)_?B&*}Vz4|q9i|ma3GnA>C zz>Kn>qxFz$qP!ZYlzHNv$YihG7wdRgY<+*p4=WI5Ud}GMce+2TNwgkUv0c7-6{TTe(DW4*dIuq0b~W(LKYW4dOeXL_5rvjOH0dFuWacz4u%esMzZX$ zKa*oAZGw?J9N}Q4@t-!IIfEY@xodB1fGwAx{<0_ggv-}v3sttU6HI3vka!6Q1xn0` z@%z2Ky>LbD&KITn1z37}MTHWHeb0g7K@uUu8O7aE3szpOAFw3=YRVnI+8yW%Akrif zY1E~i;ATK-^aL+Ok;$w)2}r)CnU{7{i2rsOTd~bON(V@eit8sA%$VCBQcqdpM%N?y zb3!lB{no`l`2c1k{X9Iy8dav-*oA&7c-86j`+rHETKqsSORURRO=R&`*|8`-RGS2j zk5^6s7a8Pe?VI!onodAis2D%5=BA=cNQ>M^=Q2%NVaxN%m;a^S_UF0zHY3dj$KQd< z7O+eCAPrs}%c(J-w#Lkg@`jmIO;*Dl|G_LRezl&IN^r+Av(wJU2~&Zr3R>n_xBxvF zf&7OYq-!wI??UdUu_x%u>Owf2)u&ay$<*e^?d#cC9 z)_inIPoSST^_dF?GMP&np;kM=Js)N~@*FO;@l zx6Jz2DIKFw-mV6^R~c_j6(&w!4Ga|()5sL_xMIoK-x~2HM;Sy^MbK#LE!Va}d$4P= zgxww3i@diJw|W*yO7v2>PF_m+&#%~TH#&$jCWS(o3S5A;r0>u}H>GPdp5m;AT6p2VsqGrB zcqsHqz=>L*VxJOT{~8 zl0X0f9?PQ#dX@kQjJ^r6lH+*8Isp7D@yEE9ix6oR0-(V6-_- z8GkYW3FB6wPDoI9{vIyG{E_x!RjdFnL(@|aNJ=MQFZP35MO^A3MB}#Rcu6KbK=N6x zL!`~`f@?P0CJ_{p(RP&#GQ@o!z5~(d!KyD<^p}O#uR;7oDL_;Bjf7{_9zr1GTp%ag zHbi<0C@?fvi-DGs0}ZkvcSwpMh(2WFW2Fl~x+o4H?IJYx6(15Dz#RkXw%<(u5F+gg zjvy)2GzvH=Zv{fIDiAwQxZQ!mEHKfcLas)RB0C-kcwgor+zM~{)xpU-*|Fjn&xl^S z4K(9IkY77rVCP*4OU|Y5$;=^lw3A&HT$(FXV}rfRHl0yyJleC?@Spxyt~n zKVXk-j%k0{-dAf{kibSUpko=^Sh-_eAa()aP}DxtI!jL8M+Um%JTrNEV(0=ig<6x+q!W;gs?Vk@zkiLjre{_~j?D`m=6 z`GN@YRfR)d9#Gt%=nk;v9D^jdIiwjTSk}y~&Xs!`eTX{{>8LxvE_(b;rWT?bI8BUE z4-@4;{b-&VkGDeDA%beT&vFQ`rokZu*O&Zkyp%S$VEYXwkS3m5z}~D|(l4HcobfK! zq*kFLDv)8;(P|)0)_)5WH_R%!3dYOf`(6)7c_0y>m*IFLyMJ`DLTu#h?8W~5(S>DH zuP?q2V)H@E-K8H?c9p1W?q>Eau77}oGR4TKa?_NA+>e7*`v`sS7I@iwb$Zz*K% z^g?js6TSniVu$kh3eu zRv1~#R)(~;h&V1Ul%+q!GRB70HYM1o!ZzfKwtVPwe3yvm$RxjD{2~3=snDAyWSz}$ zb?K<5UHBk5zvNm+OS&IE;ZNA2si4E_Zi>*G8g6emob&K_p&4Zn6)g-4kl0_+q0c3w zOXN7A((r(_EvW{t?k8**EqiwQaZ4$U;Lbg8; zVri5pV*9|)1bQE>s{9F&{dDCRr*-kQ*-w~CNK{$3N|qav4Up$RYcJGuqY{;vj9MLSovD*!Q404mt~g=J<>; zq=b>EpaAL6_jnb458m0){e*d$vDk}wk;TUH%s=hF`4c8SmHtHshqYFB3MtMRU@j``K_|Q{`7$xg{7N`kX z(ztE;kQxrI8%%}i4IeKNC@Kyq1^s?Ndh|t@Bt1m|2b<~;mLiM83!U6RT*UdQgO(_f z{e*40p+!hR>-z270Eseecs!)qqo*t8h9g9p=z-{0gM{5Y=yq= z%dsMsw;f<;?av3&so)c@G;NpoQrJzw5G+W&!^Us?vtz77hwFpQnss zN=}LRkx_sx7(XAg#m`?<6@nLa@A1l8geMW`Np#>}!a1kgU}#! zXZ9RC#$?>nH$4V})3YUN%mq?h3NdVtE$+J89|zQ%nUft)Ep0C53F0+N$Jx=3>WI-k zHk83JA@CF!z3Qv;CX(@vpy=Vf1WZ#&G^F!~uN>~^C!uvw- z+airH9VcKAwcgm?;N4n)jO8LWZ^0B`wni4`0z4ZNX^%p0ll`=rdYS9}t5kposU!ao zZ|B#=tYV|keZmIO^PmC0DbQ%;^46nMzf`}DQafMvVEnskx_6;Qh z>It}h;EjEgoA(#lFQH}Dl>2;=%g;YQZ zLYp$?B&}QCb1bQV`(U=55e(F^%v!{#YW(k^QQg4n%h$ugjJx;+ZDGm1mvdo<$h%+) z_ygSh%ysQyEAfJd;$WOri(k|I!}Rl_5=X8Pik1LVfs|7(qmP3x)mFqhoTbKJib&R3 z3(SR!!Z$Q4z#2w)3oUmE&avY#>FTl|TS}oqLHSC;TT_%bT-aY7IvK#|D%VoIMi*}C z4xK#>UY6h3o{*8sy%v>lYdH2+7zb@*%}Nlsj+OL%>v9p2?n_OWsl#R+K(K}3mce0J z5|Th0dRDnPEF4uM`ZRd7br#xMH_;dSpx)14Qn~aI%^Wha52aA{8N$^IG4?VzAQ%PYD?yoPj25d*5r!?19+(hj6k#}4HA-Jd4OPlb5Qr&}qsD$)Op-1|a|w^o ztRblXmh@eZo}=$JYizL5dJ(HCJec6tPuN%Ahz5aolapKQnQDVIfPI(>YR$oBeQN4? zU(PgyRE4`Q^v59$+uB~U>PkdJjE~k1h8tUUtYNAwU6lG`>h)6(X>k16dyZgj=@JJE zj(9Yk+9usaq#vr(AOBS9#QmwaE?DQ#TdQ&85-rbhM zA^7;QdqNau>x($309~<0Cx0;+6bu-3@cXYoVF^U%f=k5c5yqUIj3m8@-X_$6f#K?C zc&=?K+fv{TF!{#X-NZ!^@@b_Ru73wUX9&z} zx!9cw2Sr6I3tJniH`u9@f{F%@QBI5Sy%rOyqs|?6vgQrgp0ep56@!;Dj1b=8!7;>x zsW*GFLDp5xWgsqbtm zY!oSZ@N`;+bqqHSbg`=w_O+BmCQom{C-#f3N()})zPs*|BtjYcTVyaAPH<`qpdy6R z{5agrwmcX*c8OfBeT74_J|xMU5}O}-;}-cJ>kW<6YdUM{A1)46R~bOVyocCfRqDs- zvS)VR$)68-9nZRwf!)Rg6WkAmQ0uw8HQsLzcbHnrKMZW`B1L1=YT^8c=NS)*VK;$F9~||yQdKeUElWncOS~GSopDq5m#*2iS6GfNrz;R@j29a zoVWkZnQg3=GE^sIki7qQW%uSrPHjZN$$jU|>8iaqhdDjhl?8&mdq$E~KktG+%KY&c z*UL(R-0w4-0K6Z=1ibiy7rgP}zkC97{G0#(^917tg3bTmJVAs0&G-L#0#ib;`D3Bi cz>% diff --git a/Chapter15/onlineStore/public/img/safe.png b/Chapter15/onlineStore/public/img/safe.png deleted file mode 100644 index 445942c707af53210931f9f4f99f6d3cb69e5d89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19240 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
w==XB0?3|p=#`o%NsudE(E-U#KS3Snw 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 o>ir+C;RN10sIS0&a;p - - - - - - - - - - - - - - - - - - diff --git a/Chapter15/onlineStore/public/index.php b/Chapter15/onlineStore/public/index.php deleted file mode 100644 index 1d69f3a..0000000 --- a/Chapter15/onlineStore/public/index.php +++ /dev/null @@ -1,55 +0,0 @@ -make(Kernel::class); - -$response = $kernel->handle( - $request = Request::capture() -)->send(); - -$kernel->terminate($request, $response); diff --git a/Chapter15/onlineStore/public/robots.txt b/Chapter15/onlineStore/public/robots.txt deleted file mode 100644 index eb05362..0000000 --- a/Chapter15/onlineStore/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: diff --git a/Chapter15/onlineStore/resources/css/app.css b/Chapter15/onlineStore/resources/css/app.css deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter15/onlineStore/resources/js/app.js b/Chapter15/onlineStore/resources/js/app.js deleted file mode 100644 index 40c55f6..0000000 --- a/Chapter15/onlineStore/resources/js/app.js +++ /dev/null @@ -1 +0,0 @@ -require('./bootstrap'); diff --git a/Chapter15/onlineStore/resources/js/bootstrap.js b/Chapter15/onlineStore/resources/js/bootstrap.js deleted file mode 100644 index 6922577..0000000 --- a/Chapter15/onlineStore/resources/js/bootstrap.js +++ /dev/null @@ -1,28 +0,0 @@ -window._ = require('lodash'); - -/** - * 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 = require('axios'); - -window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; - -/** - * 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'; - -// window.Pusher = require('pusher-js'); - -// window.Echo = new Echo({ -// broadcaster: 'pusher', -// key: process.env.MIX_PUSHER_APP_KEY, -// cluster: process.env.MIX_PUSHER_APP_CLUSTER, -// forceTLS: true -// }); diff --git a/Chapter15/onlineStore/resources/views/admin/home/index.blade.php b/Chapter15/onlineStore/resources/views/admin/home/index.blade.php deleted file mode 100644 index a2b4868..0000000 --- a/Chapter15/onlineStore/resources/views/admin/home/index.blade.php +++ /dev/null @@ -1,12 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
-
- Admin Panel - Home Page -
-
- Welcome to the Admin Panel, use the sidebar to navigate between the different options. -
-
-@endsection diff --git a/Chapter15/onlineStore/resources/views/home/about.blade.php b/Chapter15/onlineStore/resources/views/home/about.blade.php deleted file mode 100644 index f79abf3..0000000 --- a/Chapter15/onlineStore/resources/views/home/about.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
-
-
-

{{ $viewData["description"] }}

-
-
-

{{ $viewData["author"] }}

-
-
-
-@endsection diff --git a/Chapter15/onlineStore/resources/views/home/index.blade.php b/Chapter15/onlineStore/resources/views/home/index.blade.php deleted file mode 100644 index 1affb20..0000000 --- a/Chapter15/onlineStore/resources/views/home/index.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('content') -
-
- -
-
- -
-
- -
-
-@endsection diff --git a/Chapter15/onlineStore/resources/views/layouts/admin.blade.php b/Chapter15/onlineStore/resources/views/layouts/admin.blade.php deleted file mode 100644 index 3219fd1..0000000 --- a/Chapter15/onlineStore/resources/views/layouts/admin.blade.php +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - @yield('title', 'Admin - Online Store') - - - -
- - - -
- - -
- @yield('content') -
-
-
- - - - - - - - - diff --git a/Chapter15/onlineStore/resources/views/layouts/app.blade.php b/Chapter15/onlineStore/resources/views/layouts/app.blade.php deleted file mode 100644 index eee7fcb..0000000 --- a/Chapter15/onlineStore/resources/views/layouts/app.blade.php +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - @yield('title', 'Online Store') - - - - - -
-
-

@yield('subtitle', 'A Laravel Online Store')

-
-
- - -
- @yield('content') -
- - - - - - - diff --git a/Chapter15/onlineStore/resources/views/product/index.blade.php b/Chapter15/onlineStore/resources/views/product/index.blade.php deleted file mode 100644 index c82528a..0000000 --- a/Chapter15/onlineStore/resources/views/product/index.blade.php +++ /dev/null @@ -1,18 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
- @foreach ($viewData["products"] as $product) - - @endforeach -
-@endsection diff --git a/Chapter15/onlineStore/resources/views/product/show.blade.php b/Chapter15/onlineStore/resources/views/product/show.blade.php deleted file mode 100644 index 0adad34..0000000 --- a/Chapter15/onlineStore/resources/views/product/show.blade.php +++ /dev/null @@ -1,21 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
-
-
- getImage()) }}" class="img-fluid rounded-start"> -
-
-
-
- {{ $viewData["product"]->getName() }} (${{ $viewData["product"]->getPrice() }}) -
-

{{ $viewData["product"]->getDescription() }}

-

Add to Cart

-
-
-
-
-@endsection diff --git a/Chapter15/onlineStore/resources/views/welcome.blade.php b/Chapter15/onlineStore/resources/views/welcome.blade.php deleted file mode 100644 index c587c72..0000000 --- a/Chapter15/onlineStore/resources/views/welcome.blade.php +++ /dev/null @@ -1,7 +0,0 @@ -@extends('layouts.app') -@section('title', 'Home Page - Online Store') -@section('content') -
- Welcome to the application -
-@endsection \ No newline at end of file diff --git a/Chapter15/onlineStore/routes/api.php b/Chapter15/onlineStore/routes/api.php deleted file mode 100644 index eb6fa48..0000000 --- a/Chapter15/onlineStore/routes/api.php +++ /dev/null @@ -1,19 +0,0 @@ -get('/user', function (Request $request) { - return $request->user(); -}); diff --git a/Chapter15/onlineStore/routes/channels.php b/Chapter15/onlineStore/routes/channels.php deleted file mode 100644 index 5d451e1..0000000 --- a/Chapter15/onlineStore/routes/channels.php +++ /dev/null @@ -1,18 +0,0 @@ -id === (int) $id; -}); diff --git a/Chapter15/onlineStore/routes/console.php b/Chapter15/onlineStore/routes/console.php deleted file mode 100644 index e05f4c9..0000000 --- a/Chapter15/onlineStore/routes/console.php +++ /dev/null @@ -1,19 +0,0 @@ -comment(Inspiring::quote()); -})->purpose('Display an inspiring quote'); diff --git a/Chapter15/onlineStore/routes/web.php b/Chapter15/onlineStore/routes/web.php deleted file mode 100644 index 27bc46a..0000000 --- a/Chapter15/onlineStore/routes/web.php +++ /dev/null @@ -1,20 +0,0 @@ -name("home.index"); -Route::get('/about', 'App\Http\Controllers\HomeController@about')->name("home.about"); -Route::get('/products', 'App\Http\Controllers\ProductController@index')->name("product.index"); -Route::get('/products/{id}', 'App\Http\Controllers\ProductController@show')->name("product.show"); -Route::get('/admin', 'App\Http\Controllers\Admin\AdminHomeController@index')->name("admin.home.index"); diff --git a/Chapter15/onlineStore/storage/app/.gitignore b/Chapter15/onlineStore/storage/app/.gitignore deleted file mode 100644 index 8f4803c..0000000 --- a/Chapter15/onlineStore/storage/app/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!public/ -!.gitignore diff --git a/Chapter15/onlineStore/storage/app/public/.gitignore b/Chapter15/onlineStore/storage/app/public/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter15/onlineStore/storage/app/public/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter15/onlineStore/storage/framework/.gitignore b/Chapter15/onlineStore/storage/framework/.gitignore deleted file mode 100644 index 05c4471..0000000 --- a/Chapter15/onlineStore/storage/framework/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -compiled.php -config.php -down -events.scanned.php -maintenance.php -routes.php -routes.scanned.php -schedule-* -services.json diff --git a/Chapter15/onlineStore/storage/framework/cache/.gitignore b/Chapter15/onlineStore/storage/framework/cache/.gitignore deleted file mode 100644 index 01e4a6c..0000000 --- a/Chapter15/onlineStore/storage/framework/cache/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!data/ -!.gitignore diff --git a/Chapter15/onlineStore/storage/framework/cache/data/.gitignore b/Chapter15/onlineStore/storage/framework/cache/data/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter15/onlineStore/storage/framework/cache/data/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter15/onlineStore/storage/framework/sessions/.gitignore b/Chapter15/onlineStore/storage/framework/sessions/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter15/onlineStore/storage/framework/sessions/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter15/onlineStore/storage/framework/testing/.gitignore b/Chapter15/onlineStore/storage/framework/testing/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter15/onlineStore/storage/framework/testing/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter15/onlineStore/storage/framework/views/.gitignore b/Chapter15/onlineStore/storage/framework/views/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter15/onlineStore/storage/framework/views/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter15/onlineStore/storage/logs/.gitignore b/Chapter15/onlineStore/storage/logs/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter15/onlineStore/storage/logs/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter15/onlineStore/tests/CreatesApplication.php b/Chapter15/onlineStore/tests/CreatesApplication.php deleted file mode 100644 index 547152f..0000000 --- a/Chapter15/onlineStore/tests/CreatesApplication.php +++ /dev/null @@ -1,22 +0,0 @@ -make(Kernel::class)->bootstrap(); - - return $app; - } -} diff --git a/Chapter15/onlineStore/tests/Feature/ExampleTest.php b/Chapter15/onlineStore/tests/Feature/ExampleTest.php deleted file mode 100644 index 78ccc21..0000000 --- a/Chapter15/onlineStore/tests/Feature/ExampleTest.php +++ /dev/null @@ -1,21 +0,0 @@ -get('/'); - - $response->assertStatus(200); - } -} diff --git a/Chapter15/onlineStore/tests/TestCase.php b/Chapter15/onlineStore/tests/TestCase.php deleted file mode 100644 index 2932d4a..0000000 --- a/Chapter15/onlineStore/tests/TestCase.php +++ /dev/null @@ -1,10 +0,0 @@ -assertTrue(true); - } -} diff --git a/Chapter15/onlineStore/webpack.mix.js b/Chapter15/onlineStore/webpack.mix.js deleted file mode 100644 index 2a22dc1..0000000 --- a/Chapter15/onlineStore/webpack.mix.js +++ /dev/null @@ -1,17 +0,0 @@ -const mix = require('laravel-mix'); - -/* - |-------------------------------------------------------------------------- - | Mix Asset Management - |-------------------------------------------------------------------------- - | - | Mix provides a clean, fluent API for defining some Webpack build steps - | for your Laravel applications. By default, we are compiling the CSS - | file for the application as well as bundling up all the JS files. - | - */ - -mix.js('resources/js/app.js', 'public/js') - .postCss('resources/css/app.css', 'public/css', [ - // - ]); diff --git a/Chapter16/onlineStore/.editorconfig b/Chapter16/onlineStore/.editorconfig deleted file mode 100644 index 1671c9b..0000000 --- a/Chapter16/onlineStore/.editorconfig +++ /dev/null @@ -1,18 +0,0 @@ -root = true - -[*] -charset = utf-8 -end_of_line = lf -insert_final_newline = true -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true - -[*.md] -trim_trailing_whitespace = false - -[*.{yml,yaml}] -indent_size = 2 - -[docker-compose.yml] -indent_size = 4 diff --git a/Chapter16/onlineStore/.env.example b/Chapter16/onlineStore/.env.example deleted file mode 100644 index 8510237..0000000 --- a/Chapter16/onlineStore/.env.example +++ /dev/null @@ -1,52 +0,0 @@ -APP_NAME=Laravel -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=laravel -DB_USERNAME=root -DB_PASSWORD= - -BROADCAST_DRIVER=log -CACHE_DRIVER=file -FILESYSTEM_DISK=local -QUEUE_CONNECTION=sync -SESSION_DRIVER=file -SESSION_LIFETIME=120 - -MEMCACHED_HOST=127.0.0.1 - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -MAIL_MAILER=smtp -MAIL_HOST=mailhog -MAIL_PORT=1025 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS=null -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_APP_CLUSTER=mt1 - -MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/Chapter16/onlineStore/.gitattributes b/Chapter16/onlineStore/.gitattributes deleted file mode 100644 index 510d996..0000000 --- a/Chapter16/onlineStore/.gitattributes +++ /dev/null @@ -1,10 +0,0 @@ -* text=auto - -*.blade.php diff=html -*.css diff=css -*.html diff=html -*.md diff=markdown -*.php diff=php - -/.github export-ignore -CHANGELOG.md export-ignore diff --git a/Chapter16/onlineStore/.gitignore b/Chapter16/onlineStore/.gitignore deleted file mode 100644 index eb003b0..0000000 --- a/Chapter16/onlineStore/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -/node_modules -/public/hot -/public/storage -/storage/*.key -/vendor -.env -.env.backup -.phpunit.result.cache -docker-compose.override.yml -Homestead.json -Homestead.yaml -npm-debug.log -yarn-error.log -/.idea -/.vscode diff --git a/Chapter16/onlineStore/.styleci.yml b/Chapter16/onlineStore/.styleci.yml deleted file mode 100644 index 679a631..0000000 --- a/Chapter16/onlineStore/.styleci.yml +++ /dev/null @@ -1,13 +0,0 @@ -php: - preset: laravel - version: 8 - disabled: - - no_unused_imports - finder: - not-name: - - index.php -js: - finder: - not-name: - - webpack.mix.js -css: true diff --git a/Chapter16/onlineStore/README.md b/Chapter16/onlineStore/README.md deleted file mode 100644 index f171eca..0000000 --- a/Chapter16/onlineStore/README.md +++ /dev/null @@ -1,64 +0,0 @@ -

- -

-Build Status -Total Downloads -Latest Stable Version -License -

- -## About Laravel - -Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as: - -- [Simple, fast routing engine](https://laravel.com/docs/routing). -- [Powerful dependency injection container](https://laravel.com/docs/container). -- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage. -- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent). -- Database agnostic [schema migrations](https://laravel.com/docs/migrations). -- [Robust background job processing](https://laravel.com/docs/queues). -- [Real-time event broadcasting](https://laravel.com/docs/broadcasting). - -Laravel is accessible, powerful, and provides tools required for large, robust applications. - -## Learning Laravel - -Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework. - -If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 2000 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library. - -## Laravel Sponsors - -We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell). - -### Premium Partners - -- **[Vehikl](https://vehikl.com/)** -- **[Tighten Co.](https://tighten.co)** -- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** -- **[64 Robots](https://64robots.com)** -- **[Cubet Techno Labs](https://cubettech.com)** -- **[Cyber-Duck](https://cyber-duck.co.uk)** -- **[Many](https://www.many.co.uk)** -- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)** -- **[DevSquad](https://devsquad.com)** -- **[Curotec](https://www.curotec.com/services/technologies/laravel/)** -- **[OP.GG](https://op.gg)** -- **[WebReinvent](https://webreinvent.com/?utm_source=laravel&utm_medium=github&utm_campaign=patreon-sponsors)** -- **[Lendio](https://lendio.com)** - -## Contributing - -Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions). - -## Code of Conduct - -In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). - -## Security Vulnerabilities - -If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed. - -## License - -The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). diff --git a/Chapter16/onlineStore/app/Console/Kernel.php b/Chapter16/onlineStore/app/Console/Kernel.php deleted file mode 100644 index d8bc1d2..0000000 --- a/Chapter16/onlineStore/app/Console/Kernel.php +++ /dev/null @@ -1,32 +0,0 @@ -command('inspire')->hourly(); - } - - /** - * Register the commands for the application. - * - * @return void - */ - protected function commands() - { - $this->load(__DIR__.'/Commands'); - - require base_path('routes/console.php'); - } -} diff --git a/Chapter16/onlineStore/app/Exceptions/Handler.php b/Chapter16/onlineStore/app/Exceptions/Handler.php deleted file mode 100644 index 8e7fbd1..0000000 --- a/Chapter16/onlineStore/app/Exceptions/Handler.php +++ /dev/null @@ -1,41 +0,0 @@ -> - */ - protected $dontReport = [ - // - ]; - - /** - * A list of the inputs that are never flashed for validation exceptions. - * - * @var array - */ - protected $dontFlash = [ - 'current_password', - 'password', - 'password_confirmation', - ]; - - /** - * Register the exception handling callbacks for the application. - * - * @return void - */ - public function register() - { - $this->reportable(function (Throwable $e) { - // - }); - } -} diff --git a/Chapter16/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php b/Chapter16/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php deleted file mode 100644 index cd78cb3..0000000 --- a/Chapter16/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php +++ /dev/null @@ -1,16 +0,0 @@ -with("viewData", $viewData); - } -} diff --git a/Chapter16/onlineStore/app/Http/Controllers/Admin/AdminProductController.php b/Chapter16/onlineStore/app/Http/Controllers/Admin/AdminProductController.php deleted file mode 100644 index b190204..0000000 --- a/Chapter16/onlineStore/app/Http/Controllers/Admin/AdminProductController.php +++ /dev/null @@ -1,18 +0,0 @@ -with("viewData", $viewData); - } -} diff --git a/Chapter16/onlineStore/app/Http/Controllers/Controller.php b/Chapter16/onlineStore/app/Http/Controllers/Controller.php deleted file mode 100644 index a0a2a8a..0000000 --- a/Chapter16/onlineStore/app/Http/Controllers/Controller.php +++ /dev/null @@ -1,13 +0,0 @@ -with("viewData", $viewData); - } - - public function about() - { - $viewData = []; - $viewData["title"] = "About us - Online Store"; - $viewData["subtitle"] = "About us"; - $viewData["description"] = "This is an about page ..."; - $viewData["author"] = "Developed by: Your Name"; - return view('home.about')->with("viewData", $viewData); - } -} diff --git a/Chapter16/onlineStore/app/Http/Controllers/ProductController.php b/Chapter16/onlineStore/app/Http/Controllers/ProductController.php deleted file mode 100644 index d27a3a3..0000000 --- a/Chapter16/onlineStore/app/Http/Controllers/ProductController.php +++ /dev/null @@ -1,29 +0,0 @@ -with("viewData", $viewData); - } - - public function show($id) - { - $viewData = []; - $product = Product::findOrFail($id); - $viewData["title"] = $product->getName()." - Online Store"; - $viewData["subtitle"] = $product->getName()." - Product information"; - $viewData["product"] = $product; - return view('product.show')->with("viewData", $viewData); - } -} diff --git a/Chapter16/onlineStore/app/Http/Kernel.php b/Chapter16/onlineStore/app/Http/Kernel.php deleted file mode 100644 index d3722c2..0000000 --- a/Chapter16/onlineStore/app/Http/Kernel.php +++ /dev/null @@ -1,67 +0,0 @@ - - */ - protected $middleware = [ - // \App\Http\Middleware\TrustHosts::class, - \App\Http\Middleware\TrustProxies::class, - \Fruitcake\Cors\HandleCors::class, - \App\Http\Middleware\PreventRequestsDuringMaintenance::class, - \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, - \App\Http\Middleware\TrimStrings::class, - \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, - ]; - - /** - * The application's route middleware groups. - * - * @var array> - */ - protected $middlewareGroups = [ - 'web' => [ - \App\Http\Middleware\EncryptCookies::class, - \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, - \Illuminate\Session\Middleware\StartSession::class, - // \Illuminate\Session\Middleware\AuthenticateSession::class, - \Illuminate\View\Middleware\ShareErrorsFromSession::class, - \App\Http\Middleware\VerifyCsrfToken::class, - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - - 'api' => [ - // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, - 'throttle:api', - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - ]; - - /** - * The application's route middleware. - * - * These middleware may be assigned to groups or used individually. - * - * @var array - */ - protected $routeMiddleware = [ - 'auth' => \App\Http\Middleware\Authenticate::class, - 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::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, - 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, - 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, - 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, - ]; -} diff --git a/Chapter16/onlineStore/app/Http/Middleware/Authenticate.php b/Chapter16/onlineStore/app/Http/Middleware/Authenticate.php deleted file mode 100644 index 704089a..0000000 --- a/Chapter16/onlineStore/app/Http/Middleware/Authenticate.php +++ /dev/null @@ -1,21 +0,0 @@ -expectsJson()) { - return route('login'); - } - } -} diff --git a/Chapter16/onlineStore/app/Http/Middleware/EncryptCookies.php b/Chapter16/onlineStore/app/Http/Middleware/EncryptCookies.php deleted file mode 100644 index 867695b..0000000 --- a/Chapter16/onlineStore/app/Http/Middleware/EncryptCookies.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter16/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/Chapter16/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php deleted file mode 100644 index 74cbd9a..0000000 --- a/Chapter16/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter16/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php b/Chapter16/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php deleted file mode 100644 index a2813a0..0000000 --- a/Chapter16/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php +++ /dev/null @@ -1,32 +0,0 @@ -check()) { - return redirect(RouteServiceProvider::HOME); - } - } - - return $next($request); - } -} diff --git a/Chapter16/onlineStore/app/Http/Middleware/TrimStrings.php b/Chapter16/onlineStore/app/Http/Middleware/TrimStrings.php deleted file mode 100644 index 88cadca..0000000 --- a/Chapter16/onlineStore/app/Http/Middleware/TrimStrings.php +++ /dev/null @@ -1,19 +0,0 @@ - - */ - protected $except = [ - 'current_password', - 'password', - 'password_confirmation', - ]; -} diff --git a/Chapter16/onlineStore/app/Http/Middleware/TrustHosts.php b/Chapter16/onlineStore/app/Http/Middleware/TrustHosts.php deleted file mode 100644 index 7186414..0000000 --- a/Chapter16/onlineStore/app/Http/Middleware/TrustHosts.php +++ /dev/null @@ -1,20 +0,0 @@ - - */ - public function hosts() - { - return [ - $this->allSubdomainsOfApplicationUrl(), - ]; - } -} diff --git a/Chapter16/onlineStore/app/Http/Middleware/TrustProxies.php b/Chapter16/onlineStore/app/Http/Middleware/TrustProxies.php deleted file mode 100644 index 3391630..0000000 --- a/Chapter16/onlineStore/app/Http/Middleware/TrustProxies.php +++ /dev/null @@ -1,28 +0,0 @@ -|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/Chapter16/onlineStore/app/Http/Middleware/VerifyCsrfToken.php b/Chapter16/onlineStore/app/Http/Middleware/VerifyCsrfToken.php deleted file mode 100644 index 9e86521..0000000 --- a/Chapter16/onlineStore/app/Http/Middleware/VerifyCsrfToken.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter16/onlineStore/app/Models/Product.php b/Chapter16/onlineStore/app/Models/Product.php deleted file mode 100644 index 84efbb6..0000000 --- a/Chapter16/onlineStore/app/Models/Product.php +++ /dev/null @@ -1,89 +0,0 @@ -attributes['id'] - int - contains the product primary key (id) - * $this->attributes['name'] - string - contains the product name - * $this->attributes['description'] - string - contains the product description - * $this->attributes['image'] - string - contains the product image - * $this->attributes['price'] - int - contains the product price - * $this->attributes['created_at'] - timestamp - contains the product creation date - * $this->attributes['updated_at'] - timestamp - contains the product update date - */ - - public function getId() - { - return $this->attributes['id']; - } - - public function setId($id) - { - $this->attributes['id'] = $id; - } - - public function getName() - { - return $this->attributes['name']; - } - - public function setName($name) - { - $this->attributes['name'] = $name; - } - - public function getDescription() - { - return $this->attributes['description']; - } - - public function setDescription($description) - { - $this->attributes['description'] = $description; - } - - public function getImage() - { - return $this->attributes['image']; - } - - public function setImage($image) - { - $this->attributes['image'] = $image; - } - - public function getPrice() - { - return $this->attributes['price']; - } - - public function setPrice($price) - { - $this->attributes['price'] = $price; - } - - public function getCreatedAt() - { - return $this->attributes['created_at']; - } - - public function setCreatedAt($createdAt) - { - $this->attributes['created_at'] = $createdAt; - } - - public function getUpdatedAt() - { - return $this->attributes['updated_at']; - } - - public function setUpdatedAt($updatedAt) - { - $this->attributes['updated_at'] = $updatedAt; - } -} diff --git a/Chapter16/onlineStore/app/Models/User.php b/Chapter16/onlineStore/app/Models/User.php deleted file mode 100644 index 8996368..0000000 --- a/Chapter16/onlineStore/app/Models/User.php +++ /dev/null @@ -1,44 +0,0 @@ - - */ - 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', - ]; -} diff --git a/Chapter16/onlineStore/app/Providers/AppServiceProvider.php b/Chapter16/onlineStore/app/Providers/AppServiceProvider.php deleted file mode 100644 index ee8ca5b..0000000 --- a/Chapter16/onlineStore/app/Providers/AppServiceProvider.php +++ /dev/null @@ -1,28 +0,0 @@ - - */ - protected $policies = [ - // 'App\Models\Model' => 'App\Policies\ModelPolicy', - ]; - - /** - * Register any authentication / authorization services. - * - * @return void - */ - public function boot() - { - $this->registerPolicies(); - - // - } -} diff --git a/Chapter16/onlineStore/app/Providers/BroadcastServiceProvider.php b/Chapter16/onlineStore/app/Providers/BroadcastServiceProvider.php deleted file mode 100644 index 395c518..0000000 --- a/Chapter16/onlineStore/app/Providers/BroadcastServiceProvider.php +++ /dev/null @@ -1,21 +0,0 @@ -> - */ - protected $listen = [ - Registered::class => [ - SendEmailVerificationNotification::class, - ], - ]; - - /** - * Register any events for your application. - * - * @return void - */ - public function boot() - { - // - } -} diff --git a/Chapter16/onlineStore/app/Providers/RouteServiceProvider.php b/Chapter16/onlineStore/app/Providers/RouteServiceProvider.php deleted file mode 100644 index 7c17d1f..0000000 --- a/Chapter16/onlineStore/app/Providers/RouteServiceProvider.php +++ /dev/null @@ -1,63 +0,0 @@ -configureRateLimiting(); - - $this->routes(function () { - Route::prefix('api') - ->middleware('api') - ->namespace($this->namespace) - ->group(base_path('routes/api.php')); - - Route::middleware('web') - ->namespace($this->namespace) - ->group(base_path('routes/web.php')); - }); - } - - /** - * Configure the rate limiters for the application. - * - * @return void - */ - protected function configureRateLimiting() - { - RateLimiter::for('api', function (Request $request) { - return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); - }); - } -} diff --git a/Chapter16/onlineStore/artisan b/Chapter16/onlineStore/artisan deleted file mode 100644 index 67a3329..0000000 --- a/Chapter16/onlineStore/artisan +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env php -make(Illuminate\Contracts\Console\Kernel::class); - -$status = $kernel->handle( - $input = new Symfony\Component\Console\Input\ArgvInput, - new Symfony\Component\Console\Output\ConsoleOutput -); - -/* -|-------------------------------------------------------------------------- -| Shutdown The Application -|-------------------------------------------------------------------------- -| -| Once Artisan has finished running, we will fire off the shutdown events -| so that any final work may be done by the application before we shut -| down the process. This is the last thing to happen to the request. -| -*/ - -$kernel->terminate($input, $status); - -exit($status); diff --git a/Chapter16/onlineStore/bootstrap/app.php b/Chapter16/onlineStore/bootstrap/app.php deleted file mode 100644 index 037e17d..0000000 --- a/Chapter16/onlineStore/bootstrap/app.php +++ /dev/null @@ -1,55 +0,0 @@ -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/Chapter16/onlineStore/bootstrap/cache/.gitignore b/Chapter16/onlineStore/bootstrap/cache/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter16/onlineStore/bootstrap/cache/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter16/onlineStore/composer.json b/Chapter16/onlineStore/composer.json deleted file mode 100644 index f0f2eda..0000000 --- a/Chapter16/onlineStore/composer.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "name": "laravel/laravel", - "type": "project", - "description": "The Laravel Framework.", - "keywords": ["framework", "laravel"], - "license": "MIT", - "require": { - "php": "^8.0", - "fruitcake/laravel-cors": "^2.0.5", - "guzzlehttp/guzzle": "^7.2", - "laravel/framework": "^9.0", - "laravel/sanctum": "^2.14", - "laravel/tinker": "^2.7" - }, - "require-dev": { - "fakerphp/faker": "^1.9.1", - "laravel/sail": "^1.0.1", - "mockery/mockery": "^1.4.4", - "nunomaduro/collision": "^6.1", - "phpunit/phpunit": "^9.5.10", - "spatie/laravel-ignition": "^1.0", - "squizlabs/php_codesniffer": "^3.6" - }, - "autoload": { - "psr-4": { - "App\\": "app/", - "Database\\Factories\\": "database/factories/", - "Database\\Seeders\\": "database/seeders/" - } - }, - "autoload-dev": { - "psr-4": { - "Tests\\": "tests/" - } - }, - "scripts": { - "post-autoload-dump": [ - "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", - "@php artisan package:discover --ansi" - ], - "post-update-cmd": [ - "@php artisan vendor:publish --tag=laravel-assets --ansi --force" - ], - "post-root-package-install": [ - "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" - ], - "post-create-project-cmd": [ - "@php artisan key:generate --ansi" - ] - }, - "extra": { - "laravel": { - "dont-discover": [] - } - }, - "config": { - "optimize-autoloader": true, - "preferred-install": "dist", - "sort-packages": true - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/Chapter16/onlineStore/composer.lock b/Chapter16/onlineStore/composer.lock deleted file mode 100644 index b55e897..0000000 --- a/Chapter16/onlineStore/composer.lock +++ /dev/null @@ -1,7860 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "8bdcc31974d0d5a00db79c82827c8815", - "packages": [ - { - "name": "asm89/stack-cors", - "version": "v2.1.1", - "source": { - "type": "git", - "url": "https://github.com/asm89/stack-cors.git", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4|^5|^6" - }, - "require-dev": { - "phpunit/phpunit": "^7|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "psr-4": { - "Asm89\\Stack\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alexander", - "email": "iam.asm89@gmail.com" - } - ], - "description": "Cross-origin resource sharing library and stack middleware", - "homepage": "https://github.com/asm89/stack-cors", - "keywords": [ - "cors", - "stack" - ], - "support": { - "issues": "https://github.com/asm89/stack-cors/issues", - "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" - }, - "time": "2022-01-18T09:12:03+00:00" - }, - { - "name": "brick/math", - "version": "0.9.3", - "source": { - "type": "git", - "url": "https://github.com/brick/math.git", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", - "vimeo/psalm": "4.9.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Brick\\Math\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Arbitrary-precision arithmetic library", - "keywords": [ - "Arbitrary-precision", - "BigInteger", - "BigRational", - "arithmetic", - "bigdecimal", - "bignum", - "brick", - "math" - ], - "support": { - "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.9.3" - }, - "funding": [ - { - "url": "https://github.com/BenMorel", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/brick/math", - "type": "tidelift" - } - ], - "time": "2021-08-15T20:50:18+00:00" - }, - { - "name": "dflydev/dot-access-data", - "version": "v3.0.1", - "source": { - "type": "git", - "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c", - "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": "^3.14" - }, - "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.1" - }, - "time": "2021-08-13T13:06:58+00:00" - }, - { - "name": "doctrine/inflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "vimeo/psalm": "^4.10" - }, - "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.4" - }, - "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": "2021-10-22T20:16:43+00:00" - }, - { - "name": "doctrine/lexer", - "version": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" - } - }, - "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/1.2.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%2Flexer", - "type": "tidelift" - } - ], - "time": "2022-01-12T08:27:12+00:00" - }, - { - "name": "dragonmantank/cron-expression", - "version": "v3.3.1", - "source": { - "type": "git", - "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "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.1" - }, - "funding": [ - { - "url": "https://github.com/dragonmantank", - "type": "github" - } - ], - "time": "2022-01-18T15:43:28+00:00" - }, - { - "name": "egulias/email-validator", - "version": "3.1.2", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ee0db30118f661fb166bcffbf5d82032df484697", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^1.2", - "php": ">=7.2", - "symfony/polyfill-intl-idn": "^1.15" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^8.5.8|^9.3.3", - "vimeo/psalm": "^4" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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/3.1.2" - }, - "funding": [ - { - "url": "https://github.com/egulias", - "type": "github" - } - ], - "time": "2021-10-11T09:18:27+00:00" - }, - { - "name": "fruitcake/laravel-cors", - "version": "v2.0.5", - "source": { - "type": "git", - "url": "https://github.com/fruitcake/laravel-cors.git", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "shasum": "" - }, - "require": { - "asm89/stack-cors": "^2.0.1", - "illuminate/contracts": "^6|^7|^8|^9", - "illuminate/support": "^6|^7|^8|^9", - "php": ">=7.2", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4.3.4|^5|^6" - }, - "require-dev": { - "laravel/framework": "^6|^7.24|^8", - "orchestra/testbench-dusk": "^4|^5|^6|^7", - "phpunit/phpunit": "^6|^7|^8|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - }, - "laravel": { - "providers": [ - "Fruitcake\\Cors\\CorsServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Fruitcake\\Cors\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fruitcake", - "homepage": "https://fruitcake.nl" - }, - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", - "keywords": [ - "api", - "cors", - "crossdomain", - "laravel" - ], - "support": { - "issues": "https://github.com/fruitcake/laravel-cors/issues", - "source": "https://github.com/fruitcake/laravel-cors/tree/v2.0.5" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "time": "2022-01-03T14:53:04+00:00" - }, - { - "name": "graham-campbell/result-type", - "version": "v1.0.4", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "0690bde05318336c7221785f2a932467f98b64ca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/0690bde05318336c7221785f2a932467f98b64ca", - "reference": "0690bde05318336c7221785f2a932467f98b64ca", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "phpoption/phpoption": "^1.8" - }, - "require-dev": { - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", - "type": "tidelift" - } - ], - "time": "2021-11-21T21:41:47+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "7.4.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.8.3 || ^2.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.4.1", - "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.5 || ^9.3.5", - "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": { - "branch-alias": { - "dev-master": "7.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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.4.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": "2021-12-06T18:43:05+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "1.5.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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/1.5.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "time": "2021-10-22T20:56:57+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.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.4.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.8 || ^9.3.10" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "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.1.0" - }, - "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": "2021-10-06T17:43:30+00:00" - }, - { - "name": "laravel/framework", - "version": "v9.0.1", - "source": { - "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "shasum": "" - }, - "require": { - "doctrine/inflector": "^2.0", - "dragonmantank/cron-expression": "^3.1", - "egulias/email-validator": "^3.1", - "ext-mbstring": "*", - "ext-openssl": "*", - "laravel/serializable-closure": "^1.0", - "league/commonmark": "^2.2", - "league/flysystem": "^3.0", - "monolog/monolog": "^2.0", - "nesbot/carbon": "^2.53.1", - "php": "^8.0.2", - "psr/container": "^1.1.1|^2.0.1", - "psr/log": "^1.0|^2.0|^3.0", - "psr/simple-cache": "^1.0|^2.0|^3.0", - "ramsey/uuid": "^4.2.2", - "symfony/console": "^6.0", - "symfony/error-handler": "^6.0", - "symfony/finder": "^6.0", - "symfony/http-foundation": "^6.0", - "symfony/http-kernel": "^6.0", - "symfony/mailer": "^6.0", - "symfony/mime": "^6.0", - "symfony/process": "^6.0", - "symfony/routing": "^6.0", - "symfony/var-dumper": "^6.0", - "tijsverkoyen/css-to-inline-styles": "^2.2.2", - "vlucas/phpdotenv": "^5.4.1", - "voku/portable-ascii": "^2.0" - }, - "conflict": { - "tightenco/collect": "<5.5.33" - }, - "provide": { - "psr/container-implementation": "1.1|2.0", - "psr/simple-cache-implementation": "1.0|2.0|3.0" - }, - "replace": { - "illuminate/auth": "self.version", - "illuminate/broadcasting": "self.version", - "illuminate/bus": "self.version", - "illuminate/cache": "self.version", - "illuminate/collections": "self.version", - "illuminate/conditionable": "self.version", - "illuminate/config": "self.version", - "illuminate/console": "self.version", - "illuminate/container": "self.version", - "illuminate/contracts": "self.version", - "illuminate/cookie": "self.version", - "illuminate/database": "self.version", - "illuminate/encryption": "self.version", - "illuminate/events": "self.version", - "illuminate/filesystem": "self.version", - "illuminate/hashing": "self.version", - "illuminate/http": "self.version", - "illuminate/log": "self.version", - "illuminate/macroable": "self.version", - "illuminate/mail": "self.version", - "illuminate/notifications": "self.version", - "illuminate/pagination": "self.version", - "illuminate/pipeline": "self.version", - "illuminate/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": { - "aws/aws-sdk-php": "^3.198.1", - "doctrine/dbal": "^2.13.3|^3.1.4", - "fakerphp/faker": "^1.9.2", - "guzzlehttp/guzzle": "^7.2", - "league/flysystem-aws-s3-v3": "^3.0", - "league/flysystem-ftp": "^3.0", - "league/flysystem-sftp-v3": "^3.0", - "mockery/mockery": "^1.4.4", - "orchestra/testbench-core": "^7.0", - "pda/pheanstalk": "^4.0", - "phpstan/phpstan": "^1.0", - "phpunit/phpunit": "^9.5.8", - "predis/predis": "^1.1.9", - "symfony/amazon-mailer": "^6.0", - "symfony/cache": "^6.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.198.1).", - "brianium/paratest": "Required to run tests in parallel (^6.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", - "ext-bcmath": "Required to use the multiple_of validation rule.", - "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.", - "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.2).", - "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-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", - "mockery/mockery": "Required to use mocking (^1.4.4).", - "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).", - "predis/predis": "Required to use the predis connector (^1.1.9).", - "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.0).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^6.0).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.0).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.0).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.0).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.x-dev" - } - }, - "autoload": { - "files": [ - "src/Illuminate/Collections/helpers.php", - "src/Illuminate/Events/functions.php", - "src/Illuminate/Foundation/helpers.php", - "src/Illuminate/Support/helpers.php" - ], - "psr-4": { - "Illuminate\\": "src/Illuminate/", - "Illuminate\\Support\\": [ - "src/Illuminate/Macroable/", - "src/Illuminate/Collections/", - "src/Illuminate/Conditionable/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Laravel Framework.", - "homepage": "https://laravel.com", - "keywords": [ - "framework", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2022-02-09T15:00:05+00:00" - }, - { - "name": "laravel/sanctum", - "version": "v2.14.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/sanctum.git", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/0647a87140c7522e75826cffcadb3ad6e01f71e9", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/contracts": "^6.9|^7.0|^8.0|^9.0", - "illuminate/database": "^6.9|^7.0|^8.0|^9.0", - "illuminate/support": "^6.9|^7.0|^8.0|^9.0", - "php": "^7.2|^8.0" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0", - "phpunit/phpunit": "^8.0|^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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": "2022-01-12T15:07:43+00:00" - }, - { - "name": "laravel/serializable-closure", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/serializable-closure.git", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/65c9faf50d567b65d81764a44526545689e3fe63", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "pestphp/pest": "^1.18", - "phpstan/phpstan": "^0.12.98", - "symfony/var-dumper": "^5.3" - }, - "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": "2022-02-01T16:29:39+00:00" - }, - { - "name": "laravel/tinker", - "version": "v2.7.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/tinker.git", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/5f2f9815b7631b9f586a3de7933c25f9327d4073", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073", - "shasum": "" - }, - "require": { - "illuminate/console": "^6.0|^7.0|^8.0|^9.0", - "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.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", - "phpunit/phpunit": "^8.5.8|^9.3.3" - }, - "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.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.7.0" - }, - "time": "2022-01-10T08:52:49+00:00" - }, - { - "name": "league/commonmark", - "version": "2.2.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/commonmark.git", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "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.15" - }, - "require-dev": { - "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.0", - "commonmark/commonmark.js": "0.30.0", - "composer/package-versions-deprecated": "^1.8", - "erusev/parsedown": "^1.0", - "ext-json": "*", - "github/gfm": "0.29.0", - "michelf/php-markdown": "^1.4", - "phpstan/phpstan": "^0.12.88 || ^1.0.0", - "phpunit/phpunit": "^9.5.5", - "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", - "unleashedtech/php-coding-standard": "^3.1", - "vimeo/psalm": "^4.7.3" - }, - "suggest": { - "symfony/yaml": "v2.3+ required if using the Front Matter extension" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.3-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": "2022-01-25T14:37:33+00:00" - }, - { - "name": "league/config", - "version": "v1.1.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/config.git", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/config/zipball/a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^3.0.1", - "nette/schema": "^1.2", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.90", - "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": "2021-08-14T12:15:32+00:00" - }, - { - "name": "league/flysystem", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9f8b4260031bfef5497477da53dd57b2aaff0e06", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06", - "shasum": "" - }, - "require": { - "ext-json": "*", - "league/mime-type-detection": "^1.0.0", - "php": "^8.0.2" - }, - "conflict": { - "guzzlehttp/guzzle": "<7.0", - "guzzlehttp/ringphp": "<1.1.1", - "symfony/http-client": "<5.2" - }, - "require-dev": { - "async-aws/s3": "^1.5", - "async-aws/simple-s3": "^1.0", - "aws/aws-sdk-php": "^3.198.1", - "composer/semver": "^3.0", - "ext-fileinfo": "*", - "ext-ftp": "*", - "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.5", - "google/cloud-storage": "^1.23", - "phpseclib/phpseclib": "^2.0", - "phpstan/phpstan": "^0.12.26", - "phpunit/phpunit": "^9.5.11", - "sabre/dav": "^4.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.0.3" - }, - "funding": [ - { - "url": "https://offset.earth/frankdejonge", - "type": "custom" - }, - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2022-01-31T19:41:04+00:00" - }, - { - "name": "league/mime-type-detection", - "version": "1.9.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/aa70e813a6ad3d1558fc927863d47309b4c23e69", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.2", - "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" - }, - "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.9.0" - }, - "funding": [ - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2021-11-21T11:48:40+00:00" - }, - { - "name": "monolog/monolog", - "version": "2.3.5", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd4380d6fc37626e2f799f29d91195040137eba9", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "provide": { - "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7", - "graylog2/gelf-php": "^1.4.2", - "mongodb/mongodb": "^1.8", - "php-amqplib/php-amqplib": "~2.4 || ^3", - "php-console/php-console": "^3.1.3", - "phpspec/prophecy": "^1.6.1", - "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5", - "predis/predis": "^1.1", - "rollbar/rollbar": "^1.3", - "ruflin/elastica": ">=0.90@dev", - "swiftmailer/swiftmailer": "^5.3|^6.0" - }, - "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", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "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": "2.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/2.3.5" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" - } - ], - "time": "2021-10-01T21:08:31+00:00" - }, - { - "name": "nesbot/carbon", - "version": "2.56.0", - "source": { - "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1.8 || ^8.0", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "doctrine/dbal": "^2.0 || ^3.0", - "doctrine/orm": "^2.7", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "phpmd/phpmd": "^2.9", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.54 || ^1.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.14", - "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://opencollective.com/Carbon", - "type": "open_collective" - }, - { - "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", - "type": "tidelift" - } - ], - "time": "2022-01-21T17:08:38+00:00" - }, - { - "name": "nette/schema", - "version": "v1.2.2", - "source": { - "type": "git", - "url": "https://github.com/nette/schema.git", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/9a39cef03a5b34c7de64f551538cbba05c2be5df", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df", - "shasum": "" - }, - "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": ">=7.1 <8.2" - }, - "require-dev": { - "nette/tester": "^2.3 || ^2.4", - "phpstan/phpstan-nette": "^0.12", - "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.2" - }, - "time": "2021-10-15T11:40:02+00:00" - }, - { - "name": "nette/utils", - "version": "v3.2.7", - "source": { - "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/0af4e3de4df9f1543534beab255ccf459e7a2c99", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99", - "shasum": "" - }, - "require": { - "php": ">=7.2 <8.2" - }, - "conflict": { - "nette/di": "<3.0.6" - }, - "require-dev": { - "nette/tester": "~2.0", - "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.3" - }, - "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()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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 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/v3.2.7" - }, - "time": "2022-01-24T11:29:14+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.13.2", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", - "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.13.2" - }, - "time": "2021-11-30T19:35:32+00:00" - }, - { - "name": "phpoption/phpoption", - "version": "1.8.1", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-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.8.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", - "type": "tidelift" - } - ], - "time": "2021-12-04T23:24:31+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.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.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": "http://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/tree/master" - }, - "time": "2020-06-29T06:28:15+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.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": "http://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/master" - }, - "time": "2019-04-30T12:38:16+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.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": "http://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/master" - }, - "time": "2016-08-06T14:39: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.1", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "570292577277f06f590635381a7f761a6cf4f026" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/570292577277f06f590635381a7f761a6cf4f026", - "reference": "570292577277f06f590635381a7f761a6cf4f026", - "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" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "3.17.05.02" - }, - "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.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." - }, - "bin": [ - "bin/psysh" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "0.11.x-dev" - } - }, - "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.1" - }, - "time": "2022-01-03T13:58:38+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": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/ramsey/collection.git", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "shasum": "" - }, - "require": { - "php": "^7.3 || ^8", - "symfony/polyfill-php81": "^1.23" - }, - "require-dev": { - "captainhook/captainhook": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "ergebnis/composer-normalize": "^2.6", - "fakerphp/faker": "^1.5", - "hamcrest/hamcrest-php": "^2", - "jangregor/phpstan-prophecy": "^0.8", - "mockery/mockery": "^1.3", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1", - "phpstan/phpstan": "^0.12.32", - "phpstan/phpstan-mockery": "^0.12.5", - "phpstan/phpstan-phpunit": "^0.12.11", - "phpunit/phpunit": "^8.5 || ^9", - "psy/psysh": "^0.10.4", - "slevomat/coding-standard": "^6.3", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.4" - }, - "type": "library", - "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/1.2.2" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "time": "2021-10-10T03:01:02+00:00" - }, - { - "name": "ramsey/uuid", - "version": "4.2.3", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "shasum": "" - }, - "require": { - "brick/math": "^0.8 || ^0.9", - "ext-json": "*", - "php": "^7.2 || ^8.0", - "ramsey/collection": "^1.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php80": "^1.14" - }, - "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", - "moontoast/math": "^1.1", - "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.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-mockery": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^8.5 || ^9", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" - }, - "suggest": { - "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-ctype": "Enables faster processing of character classification using ctype functions.", - "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": { - "branch-alias": { - "dev-main": "4.x-dev" - }, - "captainhook": { - "force-install": true - } - }, - "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "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.2.3" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2021-09-25T23:10:38+00:00" - }, - { - "name": "symfony/console", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/22e8efd019c3270c4f79376234a3f8752cd25490", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.4|^6.0" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/css-selector", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/1955d595c12c111629cc814d3f2a2ff13580508a", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a", - "shasum": "" - }, - "require": { - "php": ">=8.0.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/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-11-01T23:48:49+00:00" - }, - { - "name": "symfony/error-handler", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/20343b3bad7ebafa38138ddcb97290a24722b57b", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" - }, - "bin": [ - "Resources/bin/patch-type-declarations" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to manage errors and ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6472ea2dd415e925b90ca82be64b8bc6157f3934", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/event-dispatcher-contracts": "^2|^3" - }, - "conflict": { - "symfony/dependency-injection": "<5.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^5.4|^6.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/aa5422287b75594b90ee9cd807caf8f0df491385", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/event-dispatcher": "^1" - }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-07-15T12:33:35+00:00" - }, - { - "name": "symfony/finder", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/8661b74dbabc23223f38c9b99d3f8ade71170430", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ad157299ced81a637fade1efcadd688d6deba5c1", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1" - }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/cache": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0" - }, - "suggest": { - "symfony/mime": "To use the file extension guesser" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v6.0.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/error-handler": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", - "symfony/twig-bridge": "<5.4", - "symfony/validator": "<5.4", - "twig/twig": "<2.13" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/process": "^5.4|^6.0", - "symfony/routing": "^5.4|^6.0", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-29T18:12:46+00:00" - }, - { - "name": "symfony/mailer", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mailer.git", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "shasum": "" - }, - "require": { - "egulias/email-validator": "^2.1.10|^3", - "php": ">=8.0.2", - "psr/event-dispatcher": "^1", - "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3" - }, - "conflict": { - "symfony/http-kernel": "<5.4" - }, - "require-dev": { - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/messenger": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/mime", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/2cd9601efd040e56f43360daa68f3c6b0534923a", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "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" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "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.24.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": "2021-10-20T20:35:02+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-11-23T21:10:46+00:00" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44", - "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.23-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.24.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": "2021-09-14T14:02:44+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.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": "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.24.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": "2021-11-30T18:21:41+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-05-27T09:17:38+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:33+00:00" - }, - { - "name": "symfony/polyfill-php81", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:11+00:00" - }, - { - "name": "symfony/process", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/298ed357274c1868c20a0061df256a1250a6c4af", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/routing", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/yaml": "<5.4" - }, - "require-dev": { - "doctrine/annotations": "^1.12", - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/36715ebf9fb9db73db0cb24263c79077c6fe8603", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/container": "^2.0" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "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.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": "2021-11-04T17:53:12+00:00" - }, - { - "name": "symfony/string", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/522144f0c4c004c80d56fa47e40e17028e2eefc2", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.0" - }, - "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/translation-contracts": "^2.0|^3.0", - "symfony/var-exporter": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "files": [ - "Resources/functions.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 an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/translation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/71bb15335798f8c4da110911bcf2d2fead7a430d", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.3|^3.0" - }, - "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" - }, - "provide": { - "symfony/translation-implementation": "2.3|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-07T00:29:03+00:00" - }, - { - "name": "symfony/translation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "suggest": { - "symfony/translation-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - } - }, - "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.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": "2021-09-07T12:43:40+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7b701676fc64f9ef11f9b4870f16b48f66be4834", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<5.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-17T16:30:44+00:00" - }, - { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.4", - "source": { - "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" - } - ], - "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", - "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "support": { - "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" - }, - "time": "2021-12-08T09:12:39+00:00" - }, - { - "name": "vlucas/phpdotenv", - "version": "v5.4.1", - "source": { - "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", - "shasum": "" - }, - "require": { - "ext-pcre": "*", - "graham-campbell/result-type": "^1.0.2", - "php": "^7.1.3 || ^8.0", - "phpoption/phpoption": "^1.8", - "symfony/polyfill-ctype": "^1.23", - "symfony/polyfill-mbstring": "^1.23.1", - "symfony/polyfill-php80": "^1.23.1" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" - }, - "suggest": { - "ext-filter": "Required to use the boolean validator." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.4-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.4.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", - "type": "tidelift" - } - ], - "time": "2021-12-12T23:22:04+00:00" - }, - { - "name": "voku/portable-ascii", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/voku/portable-ascii.git", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/9bd89e83cecdf8c37b64909454249eaed98b2c89", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89", - "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.0" - }, - "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-01-24T18:59:03+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "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.10.0" - }, - "time": "2021-03-09T10:59:23+00:00" - } - ], - "packages-dev": [ - { - "name": "doctrine/instantiator", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.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%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2020-11-10T18:47:58+00:00" - }, - { - "name": "facade/ignition-contracts", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/facade/ignition-contracts.git", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^v2.15.8", - "phpunit/phpunit": "^9.3.11", - "vimeo/psalm": "^3.17.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Facade\\IgnitionContracts\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://flareapp.io", - "role": "Developer" - } - ], - "description": "Solution contracts for Ignition", - "homepage": "https://github.com/facade/ignition-contracts", - "keywords": [ - "contracts", - "flare", - "ignition" - ], - "support": { - "issues": "https://github.com/facade/ignition-contracts/issues", - "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" - }, - "time": "2020-10-16T08:27:54+00:00" - }, - { - "name": "fakerphp/faker", - "version": "v1.19.0", - "source": { - "type": "git", - "url": "https://github.com/FakerPHP/Faker.git", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^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": "*", - "symfony/phpunit-bridge": "^4.4 || ^5.2" - }, - "suggest": { - "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", - "ext-curl": "Required by Faker\\Provider\\Image to download images.", - "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", - "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.19-dev" - } - }, - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "François Zaninotto" - } - ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], - "support": { - "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0" - }, - "time": "2022-02-02T17:38:57+00:00" - }, - { - "name": "filp/whoops", - "version": "2.14.5", - "source": { - "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "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.14.5" - }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "time": "2022-01-07T12:00:00+00:00" - }, - { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "shasum": "" - }, - "require": { - "php": "^5.3|^7.0|^8.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" - }, - "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "classmap": [ - "hamcrest" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "This is the PHP port of Hamcrest Matchers", - "keywords": [ - "test" - ], - "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" - }, - "time": "2020-07-09T08:09:16+00:00" - }, - { - "name": "laravel/sail", - "version": "v1.13.2", - "source": { - "type": "git", - "url": "https://github.com/laravel/sail.git", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.0|^9.0", - "illuminate/contracts": "^8.0|^9.0", - "illuminate/support": "^8.0|^9.0", - "php": "^7.3|^8.0" - }, - "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": "2022-02-08T14:14:12+00:00" - }, - { - "name": "mockery/mockery", - "version": "1.5.0", - "source": { - "type": "git", - "url": "https://github.com/mockery/mockery.git", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "shasum": "" - }, - "require": { - "hamcrest/hamcrest-php": "^2.0.1", - "lib-pcre": ">=7.0", - "php": "^7.3 || ^8.0" - }, - "conflict": { - "phpunit/phpunit": "<8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-0": { - "Mockery": "library/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" - } - ], - "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": { - "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.5.0" - }, - "time": "2022-01-20T13:18:17+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.10.2", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "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.10.2" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2020-11-13T09:40:50+00:00" - }, - { - "name": "nunomaduro/collision", - "version": "v6.1.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/collision.git", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "shasum": "" - }, - "require": { - "facade/ignition-contracts": "^1.0.2", - "filp/whoops": "^2.14.5", - "php": "^8.0.0", - "symfony/console": "^6.0.2" - }, - "require-dev": { - "brianium/paratest": "^6.4.1", - "laravel/framework": "^9.0", - "nunomaduro/larastan": "^1.0.2", - "nunomaduro/mock-final-classes": "^1.1.0", - "orchestra/testbench": "^7.0.0", - "phpunit/phpunit": "^9.5.11" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "6.x-dev" - }, - "laravel": { - "providers": [ - "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" - ] - } - }, - "autoload": { - "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": "2022-01-18T17:49:08+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.1.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/15a90844ad40f127afd244c0cad228de2a80052a", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a", - "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.1.1" - }, - "time": "2022-02-07T21:56:48+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.6.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "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.6.0" - }, - "time": "2022-01-04T19:58:01+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" - }, - "time": "2021-12-08T12:19:24+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "9.2.10", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d5850aaf931743067f4bfc1ae4cbd06468400687", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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 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", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.10" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-05T09:12:13+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "3.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-02T12:48:52+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "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/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:58:55+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T05:33:50+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.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/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:16:10+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "9.5.13", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/597cb647654ede35e43b137926dfdfef0fb11743", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.3.1", - "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": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.7", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", - "sebastian/version": "^3.0.2" - }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.13" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-01-24T07:33:35+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:08:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "1.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:08:54+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:30:19+00:00" - }, - { - "name": "sebastian/comparator", - "version": "4.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:49:45+00:00" - }, - { - "name": "sebastian/complexity", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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 calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:52:27+00:00" - }, - { - "name": "sebastian/diff", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:10:38+00:00" - }, - { - "name": "sebastian/environment", - "version": "5.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-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": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:52:38+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "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", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-11-11T14:18:36+00:00" - }, - { - "name": "sebastian/global-state", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-11T13:31:12+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-28T06:42:11+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "http://www.github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:17:30+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:45:17+00:00" - }, - { - "name": "sebastian/type", - "version": "2.3.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-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/2.3.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-15T12:49:02+00:00" - }, - { - "name": "sebastian/version", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:39:44+00:00" - }, - { - "name": "spatie/backtrace", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/backtrace.git", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "ext-json": "*", - "phpunit/phpunit": "^9.3", - "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": { - "issues": "https://github.com/spatie/backtrace/issues", - "source": "https://github.com/spatie/backtrace/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/sponsors/spatie", - "type": "github" - }, - { - "url": "https://spatie.be/open-source/support-us", - "type": "other" - } - ], - "time": "2021-11-09T10:57:15+00:00" - }, - { - "name": "spatie/flare-client-php", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/flare-client-php.git", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "shasum": "" - }, - "require": { - "illuminate/pipeline": "^8.0|^9.0", - "php": "^8.0", - "spatie/backtrace": "^1.2", - "symfony/http-foundation": "^5.0|^6.0", - "symfony/mime": "^5.2|^6.0", - "symfony/process": "^5.2|^6.0", - "symfony/var-dumper": "^5.2|^6.0" - }, - "require-dev": { - "dms/phpunit-arraysubset-asserts": "^0.3.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/phpunit-snapshot-assertions": "^4.0" - }, - "type": "library", - "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.0.1" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2022-02-04T15:21:00+00:00" - }, - { - "name": "spatie/ignition", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/spatie/ignition.git", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/d2d5ba823af3004268556e87dfc94449e4159f5a", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "monolog/monolog": "^2.0", - "php": "^8.0", - "spatie/flare-client-php": "^1.0", - "symfony/console": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "mockery/mockery": "^1.4", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/ray": "^1.32", - "symfony/process": "^5.4|^6.0" - }, - "type": "library", - "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": "2022-01-19T12:57:41+00:00" - }, - { - "name": "spatie/laravel-ignition", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/68250225a9f83b086462c2af1b1139dfde48fbd2", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*", - "illuminate/support": "^8.77|^9.0", - "monolog/monolog": "^2.3", - "php": "^8.0", - "spatie/flare-client-php": "^1.0.1", - "spatie/ignition": "^1.0", - "symfony/console": "^5.0|^6.0", - "symfony/var-dumper": "^5.0|^6.0" - }, - "require-dev": { - "filp/whoops": "^2.14", - "livewire/livewire": "^2.8|dev-develop", - "mockery/mockery": "^1.4", - "nunomaduro/larastan": "^1.0", - "orchestra/testbench": "^6.23|^7.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/laravel-ray": "^1.27" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Spatie\\LaravelIgnition\\IgnitionServiceProvider" - ], - "aliases": { - "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" - } - } - }, - "autoload": { - "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": "2022-02-04T15:25:56+00:00" - }, - { - "name": "squizlabs/php_codesniffer", - "version": "3.6.2", - "source": { - "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", - "shasum": "" - }, - "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.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": "lead" - } - ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", - "keywords": [ - "phpcs", - "standards" - ], - "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" - }, - "time": "2021-12-12T21:44:58+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2021-07-28T10:34:58+00:00" - } - ], - "aliases": [], - "minimum-stability": "dev", - "stability-flags": [], - "prefer-stable": true, - "prefer-lowest": false, - "platform": { - "php": "^8.0" - }, - "platform-dev": [], - "plugin-api-version": "2.1.0" -} diff --git a/Chapter16/onlineStore/config/app.php b/Chapter16/onlineStore/config/app.php deleted file mode 100644 index 1941d7c..0000000 --- a/Chapter16/onlineStore/config/app.php +++ /dev/null @@ -1,197 +0,0 @@ - env('APP_NAME', 'Laravel'), - - /* - |-------------------------------------------------------------------------- - | Application Environment - |-------------------------------------------------------------------------- - | - | This value determines the "environment" your application is currently - | running in. This may determine how you prefer to configure various - | services the application utilizes. Set this in your ".env" file. - | - */ - - 'env' => env('APP_ENV', 'production'), - - /* - |-------------------------------------------------------------------------- - | Application Debug Mode - |-------------------------------------------------------------------------- - | - | When your application is in debug mode, detailed error messages with - | stack traces will be shown on every error that occurs within your - | application. If disabled, a simple generic error page is shown. - | - */ - - 'debug' => (bool) env('APP_DEBUG', false), - - /* - |-------------------------------------------------------------------------- - | Application URL - |-------------------------------------------------------------------------- - | - | This URL is used by the console to properly generate URLs when using - | the Artisan command line tool. You should set this to the root of - | your application so that it is used when running Artisan tasks. - | - */ - - 'url' => env('APP_URL', 'http://localhost'), - - 'asset_url' => env('ASSET_URL', null), - - /* - |-------------------------------------------------------------------------- - | 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', - - /* - |-------------------------------------------------------------------------- - | 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' => [ - - /* - * Laravel Framework Service Providers... - */ - Illuminate\Auth\AuthServiceProvider::class, - Illuminate\Broadcasting\BroadcastServiceProvider::class, - Illuminate\Bus\BusServiceProvider::class, - Illuminate\Cache\CacheServiceProvider::class, - Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, - Illuminate\Cookie\CookieServiceProvider::class, - Illuminate\Database\DatabaseServiceProvider::class, - Illuminate\Encryption\EncryptionServiceProvider::class, - Illuminate\Filesystem\FilesystemServiceProvider::class, - Illuminate\Foundation\Providers\FoundationServiceProvider::class, - Illuminate\Hashing\HashServiceProvider::class, - Illuminate\Mail\MailServiceProvider::class, - Illuminate\Notifications\NotificationServiceProvider::class, - Illuminate\Pagination\PaginationServiceProvider::class, - Illuminate\Pipeline\PipelineServiceProvider::class, - Illuminate\Queue\QueueServiceProvider::class, - Illuminate\Redis\RedisServiceProvider::class, - Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, - Illuminate\Session\SessionServiceProvider::class, - Illuminate\Translation\TranslationServiceProvider::class, - Illuminate\Validation\ValidationServiceProvider::class, - Illuminate\View\ViewServiceProvider::class, - - /* - * 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, - - ], - - /* - |-------------------------------------------------------------------------- - | 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([ - // ... - ])->toArray(), - -]; diff --git a/Chapter16/onlineStore/config/auth.php b/Chapter16/onlineStore/config/auth.php deleted file mode 100644 index d8c6cee..0000000 --- a/Chapter16/onlineStore/config/auth.php +++ /dev/null @@ -1,111 +0,0 @@ - [ - '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 expire 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. - | - */ - - 'passwords' => [ - 'users' => [ - 'provider' => 'users', - 'table' => 'password_resets', - '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/Chapter16/onlineStore/config/broadcasting.php b/Chapter16/onlineStore/config/broadcasting.php deleted file mode 100644 index 67fcbbd..0000000 --- a/Chapter16/onlineStore/config/broadcasting.php +++ /dev/null @@ -1,67 +0,0 @@ - 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'), - 'useTLS' => true, - ], - '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/Chapter16/onlineStore/config/cache.php b/Chapter16/onlineStore/config/cache.php deleted file mode 100644 index 8736c7a..0000000 --- a/Chapter16/onlineStore/config/cache.php +++ /dev/null @@ -1,110 +0,0 @@ - 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'), - ], - - '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 a RAM based store such as APC or Memcached, there might - | be other applications utilizing the same cache. So, we'll specify a - | value to get prefixed to all our keys so we can avoid collisions. - | - */ - - 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'), - -]; diff --git a/Chapter16/onlineStore/config/cors.php b/Chapter16/onlineStore/config/cors.php deleted file mode 100644 index 8a39e6d..0000000 --- a/Chapter16/onlineStore/config/cors.php +++ /dev/null @@ -1,34 +0,0 @@ - ['api/*', 'sanctum/csrf-cookie'], - - 'allowed_methods' => ['*'], - - 'allowed_origins' => ['*'], - - 'allowed_origins_patterns' => [], - - 'allowed_headers' => ['*'], - - 'exposed_headers' => [], - - 'max_age' => 0, - - 'supports_credentials' => false, - -]; diff --git a/Chapter16/onlineStore/config/database.php b/Chapter16/onlineStore/config/database.php deleted file mode 100644 index 0faebae..0000000 --- a/Chapter16/onlineStore/config/database.php +++ /dev/null @@ -1,147 +0,0 @@ - env('DB_CONNECTION', 'mysql'), - - /* - |-------------------------------------------------------------------------- - | Database Connections - |-------------------------------------------------------------------------- - | - | Here are each of the database connections setup for your application. - | Of course, examples of configuring each database platform that is - | supported by Laravel is shown below to make development simple. - | - | - | All database work in Laravel is done through the PHP PDO facilities - | so make sure you have the driver for your particular database of - | choice installed on your machine before you begin development. - | - */ - - 'connections' => [ - - 'sqlite' => [ - 'driver' => 'sqlite', - 'url' => env('DATABASE_URL'), - 'database' => env('DB_DATABASE', database_path('database.sqlite')), - 'prefix' => '', - 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), - ], - - 'mysql' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '3306'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'unix_socket' => env('DB_SOCKET', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - 'pgsql' => [ - 'driver' => 'pgsql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '5432'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - 'search_path' => 'public', - 'sslmode' => 'prefer', - ], - - 'sqlsrv' => [ - 'driver' => 'sqlsrv', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', 'localhost'), - 'port' => env('DB_PORT', '1433'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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'), - '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'), - 'password' => env('REDIS_PASSWORD'), - 'port' => env('REDIS_PORT', '6379'), - 'database' => env('REDIS_CACHE_DB', '1'), - ], - - ], - -]; diff --git a/Chapter16/onlineStore/config/filesystems.php b/Chapter16/onlineStore/config/filesystems.php deleted file mode 100644 index cf5abce..0000000 --- a/Chapter16/onlineStore/config/filesystems.php +++ /dev/null @@ -1,73 +0,0 @@ - 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 setup for each driver as an example of the required options. - | - | Supported Drivers: "local", "ftp", "sftp", "s3" - | - */ - - 'disks' => [ - - 'local' => [ - 'driver' => 'local', - 'root' => storage_path('app'), - ], - - 'public' => [ - 'driver' => 'local', - 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', - 'visibility' => 'public', - ], - - '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), - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter16/onlineStore/config/hashing.php b/Chapter16/onlineStore/config/hashing.php deleted file mode 100644 index bcd3be4..0000000 --- a/Chapter16/onlineStore/config/hashing.php +++ /dev/null @@ -1,52 +0,0 @@ - '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/Chapter16/onlineStore/config/logging.php b/Chapter16/onlineStore/config/logging.php deleted file mode 100644 index fefe088..0000000 --- a/Chapter16/onlineStore/config/logging.php +++ /dev/null @@ -1,119 +0,0 @@ - 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' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), - - /* - |-------------------------------------------------------------------------- - | 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'), - ], - - 'daily' => [ - 'driver' => 'daily', - 'path' => storage_path('logs/laravel.log'), - 'level' => env('LOG_LEVEL', 'debug'), - 'days' => 14, - ], - - 'slack' => [ - 'driver' => 'slack', - 'url' => env('LOG_SLACK_WEBHOOK_URL'), - 'username' => 'Laravel Log', - 'emoji' => ':boom:', - 'level' => env('LOG_LEVEL', 'critical'), - ], - - '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'), - ], - ], - - 'stderr' => [ - 'driver' => 'monolog', - 'level' => env('LOG_LEVEL', 'debug'), - 'handler' => StreamHandler::class, - 'formatter' => env('LOG_STDERR_FORMATTER'), - 'with' => [ - 'stream' => 'php://stderr', - ], - ], - - 'syslog' => [ - 'driver' => 'syslog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'errorlog' => [ - 'driver' => 'errorlog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'null' => [ - 'driver' => 'monolog', - 'handler' => NullHandler::class, - ], - - 'emergency' => [ - 'path' => storage_path('logs/laravel.log'), - ], - ], - -]; diff --git a/Chapter16/onlineStore/config/mail.php b/Chapter16/onlineStore/config/mail.php deleted file mode 100644 index 87b6fe3..0000000 --- a/Chapter16/onlineStore/config/mail.php +++ /dev/null @@ -1,117 +0,0 @@ - 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", - | "postmark", "log", "array", "failover" - | - */ - - 'mailers' => [ - 'smtp' => [ - 'transport' => 'smtp', - '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, - ], - - 'ses' => [ - 'transport' => 'ses', - ], - - 'mailgun' => [ - 'transport' => 'mailgun', - ], - - 'postmark' => [ - 'transport' => 'postmark', - ], - - 'sendmail' => [ - 'transport' => 'sendmail', - 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -t -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/Chapter16/onlineStore/config/queue.php b/Chapter16/onlineStore/config/queue.php deleted file mode 100644 index 25ea5a8..0000000 --- a/Chapter16/onlineStore/config/queue.php +++ /dev/null @@ -1,93 +0,0 @@ - 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, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter16/onlineStore/config/sanctum.php b/Chapter16/onlineStore/config/sanctum.php deleted file mode 100644 index 9281c92..0000000 --- a/Chapter16/onlineStore/config/sanctum.php +++ /dev/null @@ -1,65 +0,0 @@ - explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( - '%s%s', - 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', - env('APP_URL') ? ','.parse_url(env('APP_URL'), PHP_URL_HOST) : '' - ))), - - /* - |-------------------------------------------------------------------------- - | 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/Chapter16/onlineStore/config/services.php b/Chapter16/onlineStore/config/services.php deleted file mode 100644 index 2a1d616..0000000 --- a/Chapter16/onlineStore/config/services.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - 'domain' => env('MAILGUN_DOMAIN'), - 'secret' => env('MAILGUN_SECRET'), - 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), - ], - - '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/Chapter16/onlineStore/config/session.php b/Chapter16/onlineStore/config/session.php deleted file mode 100644 index 8fed97c..0000000 --- a/Chapter16/onlineStore/config/session.php +++ /dev/null @@ -1,201 +0,0 @@ - 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/Chapter16/onlineStore/config/view.php b/Chapter16/onlineStore/config/view.php deleted file mode 100644 index 22b8a18..0000000 --- a/Chapter16/onlineStore/config/view.php +++ /dev/null @@ -1,36 +0,0 @@ - [ - 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/Chapter16/onlineStore/database/.gitignore b/Chapter16/onlineStore/database/.gitignore deleted file mode 100644 index 9b19b93..0000000 --- a/Chapter16/onlineStore/database/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.sqlite* diff --git a/Chapter16/onlineStore/database/factories/UserFactory.php b/Chapter16/onlineStore/database/factories/UserFactory.php deleted file mode 100644 index d6ca926..0000000 --- a/Chapter16/onlineStore/database/factories/UserFactory.php +++ /dev/null @@ -1,42 +0,0 @@ - - */ -class UserFactory extends Factory -{ - /** - * Define the model's default state. - * - * @return array - */ - public function definition() - { - return [ - 'name' => $this->faker->name(), - 'email' => $this->faker->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. - * - * @return \Illuminate\Database\Eloquent\Factories\Factory - */ - public function unverified() - { - return $this->state(function (array $attributes) { - return [ - 'email_verified_at' => null, - ]; - }); - } -} diff --git a/Chapter16/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php b/Chapter16/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php deleted file mode 100644 index cf6b776..0000000 --- a/Chapter16/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->string('name'); - $table->string('email')->unique(); - $table->timestamp('email_verified_at')->nullable(); - $table->string('password'); - $table->rememberToken(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('users'); - } -}; diff --git a/Chapter16/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php b/Chapter16/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php deleted file mode 100644 index fcacb80..0000000 --- a/Chapter16/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php +++ /dev/null @@ -1,32 +0,0 @@ -string('email')->index(); - $table->string('token'); - $table->timestamp('created_at')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('password_resets'); - } -}; diff --git a/Chapter16/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/Chapter16/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php deleted file mode 100644 index 1719198..0000000 --- a/Chapter16/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php +++ /dev/null @@ -1,36 +0,0 @@ -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. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('failed_jobs'); - } -}; diff --git a/Chapter16/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/Chapter16/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php deleted file mode 100644 index fd235f8..0000000 --- a/Chapter16/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->morphs('tokenable'); - $table->string('name'); - $table->string('token', 64)->unique(); - $table->text('abilities')->nullable(); - $table->timestamp('last_used_at')->nullable(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('personal_access_tokens'); - } -}; diff --git a/Chapter16/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php b/Chapter16/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php deleted file mode 100644 index 2eecdc2..0000000 --- a/Chapter16/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php +++ /dev/null @@ -1,35 +0,0 @@ -id(); - $table->string('name'); - $table->text('description'); - $table->string('image'); - $table->integer('price'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('products'); - } -}; diff --git a/Chapter16/onlineStore/database/seeders/DatabaseSeeder.php b/Chapter16/onlineStore/database/seeders/DatabaseSeeder.php deleted file mode 100644 index 71f673f..0000000 --- a/Chapter16/onlineStore/database/seeders/DatabaseSeeder.php +++ /dev/null @@ -1,19 +0,0 @@ -create(); - } -} diff --git a/Chapter16/onlineStore/lang/en.json b/Chapter16/onlineStore/lang/en.json deleted file mode 100644 index 577680d..0000000 --- a/Chapter16/onlineStore/lang/en.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "The :attribute must contain at least one letter.": "The :attribute must contain at least one letter.", - "The :attribute must contain at least one number.": "The :attribute must contain at least one number.", - "The :attribute must contain at least one symbol.": "The :attribute must contain at least one symbol.", - "The :attribute must contain at least one uppercase and one lowercase letter.": "The :attribute must contain at least one uppercase and one lowercase letter.", - "The given :attribute has appeared in a data leak. Please choose a different :attribute.": "The given :attribute has appeared in a data leak. Please choose a different :attribute." -} diff --git a/Chapter16/onlineStore/lang/en/auth.php b/Chapter16/onlineStore/lang/en/auth.php deleted file mode 100644 index 6598e2c..0000000 --- a/Chapter16/onlineStore/lang/en/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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/Chapter16/onlineStore/lang/en/pagination.php b/Chapter16/onlineStore/lang/en/pagination.php deleted file mode 100644 index d481411..0000000 --- a/Chapter16/onlineStore/lang/en/pagination.php +++ /dev/null @@ -1,19 +0,0 @@ - '« Previous', - 'next' => 'Next »', - -]; diff --git a/Chapter16/onlineStore/lang/en/passwords.php b/Chapter16/onlineStore/lang/en/passwords.php deleted file mode 100644 index 2345a56..0000000 --- a/Chapter16/onlineStore/lang/en/passwords.php +++ /dev/null @@ -1,22 +0,0 @@ - '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/Chapter16/onlineStore/lang/en/validation.php b/Chapter16/onlineStore/lang/en/validation.php deleted file mode 100644 index 783003c..0000000 --- a/Chapter16/onlineStore/lang/en/validation.php +++ /dev/null @@ -1,163 +0,0 @@ - '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' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - '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' => [ - 'numeric' => 'The :attribute must be greater than :value.', - 'file' => 'The :attribute must be greater than :value kilobytes.', - 'string' => 'The :attribute must be greater than :value characters.', - 'array' => 'The :attribute must have more than :value items.', - ], - 'gte' => [ - 'numeric' => 'The :attribute must be greater than or equal to :value.', - 'file' => 'The :attribute must be greater than or equal to :value kilobytes.', - 'string' => 'The :attribute must be greater than or equal to :value characters.', - 'array' => 'The :attribute must have :value items or more.', - ], - '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' => [ - 'numeric' => 'The :attribute must be less than :value.', - 'file' => 'The :attribute must be less than :value kilobytes.', - 'string' => 'The :attribute must be less than :value characters.', - 'array' => 'The :attribute must have less than :value items.', - ], - 'lte' => [ - 'numeric' => 'The :attribute must be less than or equal to :value.', - 'file' => 'The :attribute must be less than or equal to :value kilobytes.', - 'string' => 'The :attribute must be less than or equal to :value characters.', - 'array' => 'The :attribute must not have more than :value items.', - ], - 'mac_address' => 'The :attribute must be a valid MAC address.', - 'max' => [ - 'numeric' => 'The :attribute must not be greater than :max.', - 'file' => 'The :attribute must not be greater than :max kilobytes.', - 'string' => 'The :attribute must not be greater than :max characters.', - 'array' => 'The :attribute must not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - '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.', - 'password' => 'The password is incorrect.', - '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' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - '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/Chapter16/onlineStore/package.json b/Chapter16/onlineStore/package.json deleted file mode 100644 index 7a9aecd..0000000 --- a/Chapter16/onlineStore/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "private": true, - "scripts": { - "dev": "npm run development", - "development": "mix", - "watch": "mix watch", - "watch-poll": "mix watch -- --watch-options-poll=1000", - "hot": "mix watch --hot", - "prod": "npm run production", - "production": "mix --production" - }, - "devDependencies": { - "axios": "^0.25", - "laravel-mix": "^6.0.6", - "lodash": "^4.17.19", - "postcss": "^8.1.14" - } -} diff --git a/Chapter16/onlineStore/phpcs.xml b/Chapter16/onlineStore/phpcs.xml deleted file mode 100644 index a1cf2b6..0000000 --- a/Chapter16/onlineStore/phpcs.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - The coding standard for the Online Store project - - app/ - config/ - database/ - routes/ - */migrations/* - diff --git a/Chapter16/onlineStore/phpunit.xml b/Chapter16/onlineStore/phpunit.xml deleted file mode 100644 index 2ac86a1..0000000 --- a/Chapter16/onlineStore/phpunit.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - ./tests/Unit - - - ./tests/Feature - - - - - ./app - - - - - - - - - - - - - - diff --git a/Chapter16/onlineStore/public/.htaccess b/Chapter16/onlineStore/public/.htaccess deleted file mode 100644 index 3aec5e2..0000000 --- a/Chapter16/onlineStore/public/.htaccess +++ /dev/null @@ -1,21 +0,0 @@ - - - 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/Chapter16/onlineStore/public/css/admin.css b/Chapter16/onlineStore/public/css/admin.css deleted file mode 100644 index d9495a1..0000000 --- a/Chapter16/onlineStore/public/css/admin.css +++ /dev/null @@ -1,33 +0,0 @@ -.copyright { - background-color: #1a252f; -} - -.fixed { - -ms-flex: 0 0 250px; - flex: 0 0 250px; -} - -.content-grey { - background-color: #f8f9fc; -} - -hr { - margin-top: 0.8em; - margin-bottom: 0.8em; -} - -.img-profile { - height: 2rem; - width: 2rem; -} - -.profile-font { - color: #858796 !important; - font-size: 80%; - font-weight: 400; -} - -.card-header { - background-color: #f8f9fc; - border-bottom: 1px solid #e3e6f0; -} diff --git a/Chapter16/onlineStore/public/css/app.css b/Chapter16/onlineStore/public/css/app.css deleted file mode 100644 index cabac36..0000000 --- a/Chapter16/onlineStore/public/css/app.css +++ /dev/null @@ -1,20 +0,0 @@ -.bg-secondary { - background-color: #2c3e50 !important; -} - -.copyright { - background-color: #1a252f; -} - -.bg-primary { - background-color: #1abc9c !important; -} - -nav{ - font-weight: 700; -} - -.img-card{ - height: 18vw; - object-fit: cover; -} diff --git a/Chapter16/onlineStore/public/favicon.ico b/Chapter16/onlineStore/public/favicon.ico deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter16/onlineStore/public/img/game.png b/Chapter16/onlineStore/public/img/game.png deleted file mode 100644 index 85420e8bbc16098bf26b4ee63bde0e91a19d1f2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25896 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 cz>% diff --git a/Chapter16/onlineStore/public/img/safe.png b/Chapter16/onlineStore/public/img/safe.png deleted file mode 100644 index 445942c707af53210931f9f4f99f6d3cb69e5d89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19240 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
w==XB0?3|p=#`o%NsudE(E-U#KS3Snw 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 o>ir+C;RN10sIS0&a;p - - - - - - - - - - - - - - - - - - diff --git a/Chapter16/onlineStore/public/index.php b/Chapter16/onlineStore/public/index.php deleted file mode 100644 index 1d69f3a..0000000 --- a/Chapter16/onlineStore/public/index.php +++ /dev/null @@ -1,55 +0,0 @@ -make(Kernel::class); - -$response = $kernel->handle( - $request = Request::capture() -)->send(); - -$kernel->terminate($request, $response); diff --git a/Chapter16/onlineStore/public/robots.txt b/Chapter16/onlineStore/public/robots.txt deleted file mode 100644 index eb05362..0000000 --- a/Chapter16/onlineStore/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: diff --git a/Chapter16/onlineStore/resources/css/app.css b/Chapter16/onlineStore/resources/css/app.css deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter16/onlineStore/resources/js/app.js b/Chapter16/onlineStore/resources/js/app.js deleted file mode 100644 index 40c55f6..0000000 --- a/Chapter16/onlineStore/resources/js/app.js +++ /dev/null @@ -1 +0,0 @@ -require('./bootstrap'); diff --git a/Chapter16/onlineStore/resources/js/bootstrap.js b/Chapter16/onlineStore/resources/js/bootstrap.js deleted file mode 100644 index 6922577..0000000 --- a/Chapter16/onlineStore/resources/js/bootstrap.js +++ /dev/null @@ -1,28 +0,0 @@ -window._ = require('lodash'); - -/** - * 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 = require('axios'); - -window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; - -/** - * 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'; - -// window.Pusher = require('pusher-js'); - -// window.Echo = new Echo({ -// broadcaster: 'pusher', -// key: process.env.MIX_PUSHER_APP_KEY, -// cluster: process.env.MIX_PUSHER_APP_CLUSTER, -// forceTLS: true -// }); diff --git a/Chapter16/onlineStore/resources/views/admin/home/index.blade.php b/Chapter16/onlineStore/resources/views/admin/home/index.blade.php deleted file mode 100644 index a2b4868..0000000 --- a/Chapter16/onlineStore/resources/views/admin/home/index.blade.php +++ /dev/null @@ -1,12 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
-
- Admin Panel - Home Page -
-
- Welcome to the Admin Panel, use the sidebar to navigate between the different options. -
-
-@endsection diff --git a/Chapter16/onlineStore/resources/views/admin/product/index.blade.php b/Chapter16/onlineStore/resources/views/admin/product/index.blade.php deleted file mode 100644 index e3e4fb2..0000000 --- a/Chapter16/onlineStore/resources/views/admin/product/index.blade.php +++ /dev/null @@ -1,31 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
-
- Manage Products -
-
- - - - - - - - - - - @foreach ($viewData["products"] as $product) - - - - - - - @endforeach - -
IDNameEditDelete
{{ $product->getId() }}{{ $product->getName() }}EditDelete
-
-
-@endsection diff --git a/Chapter16/onlineStore/resources/views/home/about.blade.php b/Chapter16/onlineStore/resources/views/home/about.blade.php deleted file mode 100644 index f79abf3..0000000 --- a/Chapter16/onlineStore/resources/views/home/about.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
-
-
-

{{ $viewData["description"] }}

-
-
-

{{ $viewData["author"] }}

-
-
-
-@endsection diff --git a/Chapter16/onlineStore/resources/views/home/index.blade.php b/Chapter16/onlineStore/resources/views/home/index.blade.php deleted file mode 100644 index 1affb20..0000000 --- a/Chapter16/onlineStore/resources/views/home/index.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('content') -
-
- -
-
- -
-
- -
-
-@endsection diff --git a/Chapter16/onlineStore/resources/views/layouts/admin.blade.php b/Chapter16/onlineStore/resources/views/layouts/admin.blade.php deleted file mode 100644 index a1a1d57..0000000 --- a/Chapter16/onlineStore/resources/views/layouts/admin.blade.php +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - @yield('title', 'Admin - Online Store') - - - -
- - - -
- - -
- @yield('content') -
-
-
- - - - - - - - - diff --git a/Chapter16/onlineStore/resources/views/layouts/app.blade.php b/Chapter16/onlineStore/resources/views/layouts/app.blade.php deleted file mode 100644 index eee7fcb..0000000 --- a/Chapter16/onlineStore/resources/views/layouts/app.blade.php +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - @yield('title', 'Online Store') - - - - - -
-
-

@yield('subtitle', 'A Laravel Online Store')

-
-
- - -
- @yield('content') -
- - - - - - - diff --git a/Chapter16/onlineStore/resources/views/product/index.blade.php b/Chapter16/onlineStore/resources/views/product/index.blade.php deleted file mode 100644 index c82528a..0000000 --- a/Chapter16/onlineStore/resources/views/product/index.blade.php +++ /dev/null @@ -1,18 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
- @foreach ($viewData["products"] as $product) - - @endforeach -
-@endsection diff --git a/Chapter16/onlineStore/resources/views/product/show.blade.php b/Chapter16/onlineStore/resources/views/product/show.blade.php deleted file mode 100644 index 0adad34..0000000 --- a/Chapter16/onlineStore/resources/views/product/show.blade.php +++ /dev/null @@ -1,21 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
-
-
- getImage()) }}" class="img-fluid rounded-start"> -
-
-
-
- {{ $viewData["product"]->getName() }} (${{ $viewData["product"]->getPrice() }}) -
-

{{ $viewData["product"]->getDescription() }}

-

Add to Cart

-
-
-
-
-@endsection diff --git a/Chapter16/onlineStore/resources/views/welcome.blade.php b/Chapter16/onlineStore/resources/views/welcome.blade.php deleted file mode 100644 index c587c72..0000000 --- a/Chapter16/onlineStore/resources/views/welcome.blade.php +++ /dev/null @@ -1,7 +0,0 @@ -@extends('layouts.app') -@section('title', 'Home Page - Online Store') -@section('content') -
- Welcome to the application -
-@endsection \ No newline at end of file diff --git a/Chapter16/onlineStore/routes/api.php b/Chapter16/onlineStore/routes/api.php deleted file mode 100644 index eb6fa48..0000000 --- a/Chapter16/onlineStore/routes/api.php +++ /dev/null @@ -1,19 +0,0 @@ -get('/user', function (Request $request) { - return $request->user(); -}); diff --git a/Chapter16/onlineStore/routes/channels.php b/Chapter16/onlineStore/routes/channels.php deleted file mode 100644 index 5d451e1..0000000 --- a/Chapter16/onlineStore/routes/channels.php +++ /dev/null @@ -1,18 +0,0 @@ -id === (int) $id; -}); diff --git a/Chapter16/onlineStore/routes/console.php b/Chapter16/onlineStore/routes/console.php deleted file mode 100644 index e05f4c9..0000000 --- a/Chapter16/onlineStore/routes/console.php +++ /dev/null @@ -1,19 +0,0 @@ -comment(Inspiring::quote()); -})->purpose('Display an inspiring quote'); diff --git a/Chapter16/onlineStore/routes/web.php b/Chapter16/onlineStore/routes/web.php deleted file mode 100644 index 68245f0..0000000 --- a/Chapter16/onlineStore/routes/web.php +++ /dev/null @@ -1,21 +0,0 @@ -name("home.index"); -Route::get('/about', 'App\Http\Controllers\HomeController@about')->name("home.about"); -Route::get('/products', 'App\Http\Controllers\ProductController@index')->name("product.index"); -Route::get('/products/{id}', 'App\Http\Controllers\ProductController@show')->name("product.show"); -Route::get('/admin', 'App\Http\Controllers\Admin\AdminHomeController@index')->name("admin.home.index"); -Route::get('/admin/products', 'App\Http\Controllers\Admin\AdminProductController@index')->name("admin.product.index"); diff --git a/Chapter16/onlineStore/storage/app/.gitignore b/Chapter16/onlineStore/storage/app/.gitignore deleted file mode 100644 index 8f4803c..0000000 --- a/Chapter16/onlineStore/storage/app/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!public/ -!.gitignore diff --git a/Chapter16/onlineStore/storage/app/public/.gitignore b/Chapter16/onlineStore/storage/app/public/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter16/onlineStore/storage/app/public/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter16/onlineStore/storage/framework/.gitignore b/Chapter16/onlineStore/storage/framework/.gitignore deleted file mode 100644 index 05c4471..0000000 --- a/Chapter16/onlineStore/storage/framework/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -compiled.php -config.php -down -events.scanned.php -maintenance.php -routes.php -routes.scanned.php -schedule-* -services.json diff --git a/Chapter16/onlineStore/storage/framework/cache/.gitignore b/Chapter16/onlineStore/storage/framework/cache/.gitignore deleted file mode 100644 index 01e4a6c..0000000 --- a/Chapter16/onlineStore/storage/framework/cache/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!data/ -!.gitignore diff --git a/Chapter16/onlineStore/storage/framework/cache/data/.gitignore b/Chapter16/onlineStore/storage/framework/cache/data/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter16/onlineStore/storage/framework/cache/data/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter16/onlineStore/storage/framework/sessions/.gitignore b/Chapter16/onlineStore/storage/framework/sessions/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter16/onlineStore/storage/framework/sessions/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter16/onlineStore/storage/framework/testing/.gitignore b/Chapter16/onlineStore/storage/framework/testing/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter16/onlineStore/storage/framework/testing/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter16/onlineStore/storage/framework/views/.gitignore b/Chapter16/onlineStore/storage/framework/views/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter16/onlineStore/storage/framework/views/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter16/onlineStore/storage/logs/.gitignore b/Chapter16/onlineStore/storage/logs/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter16/onlineStore/storage/logs/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter16/onlineStore/tests/CreatesApplication.php b/Chapter16/onlineStore/tests/CreatesApplication.php deleted file mode 100644 index 547152f..0000000 --- a/Chapter16/onlineStore/tests/CreatesApplication.php +++ /dev/null @@ -1,22 +0,0 @@ -make(Kernel::class)->bootstrap(); - - return $app; - } -} diff --git a/Chapter16/onlineStore/tests/Feature/ExampleTest.php b/Chapter16/onlineStore/tests/Feature/ExampleTest.php deleted file mode 100644 index 78ccc21..0000000 --- a/Chapter16/onlineStore/tests/Feature/ExampleTest.php +++ /dev/null @@ -1,21 +0,0 @@ -get('/'); - - $response->assertStatus(200); - } -} diff --git a/Chapter16/onlineStore/tests/TestCase.php b/Chapter16/onlineStore/tests/TestCase.php deleted file mode 100644 index 2932d4a..0000000 --- a/Chapter16/onlineStore/tests/TestCase.php +++ /dev/null @@ -1,10 +0,0 @@ -assertTrue(true); - } -} diff --git a/Chapter16/onlineStore/webpack.mix.js b/Chapter16/onlineStore/webpack.mix.js deleted file mode 100644 index 2a22dc1..0000000 --- a/Chapter16/onlineStore/webpack.mix.js +++ /dev/null @@ -1,17 +0,0 @@ -const mix = require('laravel-mix'); - -/* - |-------------------------------------------------------------------------- - | Mix Asset Management - |-------------------------------------------------------------------------- - | - | Mix provides a clean, fluent API for defining some Webpack build steps - | for your Laravel applications. By default, we are compiling the CSS - | file for the application as well as bundling up all the JS files. - | - */ - -mix.js('resources/js/app.js', 'public/js') - .postCss('resources/css/app.css', 'public/css', [ - // - ]); diff --git a/Chapter17-Advanced/onlineStore/.editorconfig b/Chapter17-Advanced/onlineStore/.editorconfig deleted file mode 100644 index 1671c9b..0000000 --- a/Chapter17-Advanced/onlineStore/.editorconfig +++ /dev/null @@ -1,18 +0,0 @@ -root = true - -[*] -charset = utf-8 -end_of_line = lf -insert_final_newline = true -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true - -[*.md] -trim_trailing_whitespace = false - -[*.{yml,yaml}] -indent_size = 2 - -[docker-compose.yml] -indent_size = 4 diff --git a/Chapter17-Advanced/onlineStore/.env.example b/Chapter17-Advanced/onlineStore/.env.example deleted file mode 100644 index 8510237..0000000 --- a/Chapter17-Advanced/onlineStore/.env.example +++ /dev/null @@ -1,52 +0,0 @@ -APP_NAME=Laravel -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=laravel -DB_USERNAME=root -DB_PASSWORD= - -BROADCAST_DRIVER=log -CACHE_DRIVER=file -FILESYSTEM_DISK=local -QUEUE_CONNECTION=sync -SESSION_DRIVER=file -SESSION_LIFETIME=120 - -MEMCACHED_HOST=127.0.0.1 - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -MAIL_MAILER=smtp -MAIL_HOST=mailhog -MAIL_PORT=1025 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS=null -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_APP_CLUSTER=mt1 - -MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/Chapter17-Advanced/onlineStore/.gitattributes b/Chapter17-Advanced/onlineStore/.gitattributes deleted file mode 100644 index 510d996..0000000 --- a/Chapter17-Advanced/onlineStore/.gitattributes +++ /dev/null @@ -1,10 +0,0 @@ -* text=auto - -*.blade.php diff=html -*.css diff=css -*.html diff=html -*.md diff=markdown -*.php diff=php - -/.github export-ignore -CHANGELOG.md export-ignore diff --git a/Chapter17-Advanced/onlineStore/.gitignore b/Chapter17-Advanced/onlineStore/.gitignore deleted file mode 100644 index eb003b0..0000000 --- a/Chapter17-Advanced/onlineStore/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -/node_modules -/public/hot -/public/storage -/storage/*.key -/vendor -.env -.env.backup -.phpunit.result.cache -docker-compose.override.yml -Homestead.json -Homestead.yaml -npm-debug.log -yarn-error.log -/.idea -/.vscode diff --git a/Chapter17-Advanced/onlineStore/.styleci.yml b/Chapter17-Advanced/onlineStore/.styleci.yml deleted file mode 100644 index 679a631..0000000 --- a/Chapter17-Advanced/onlineStore/.styleci.yml +++ /dev/null @@ -1,13 +0,0 @@ -php: - preset: laravel - version: 8 - disabled: - - no_unused_imports - finder: - not-name: - - index.php -js: - finder: - not-name: - - webpack.mix.js -css: true diff --git a/Chapter17-Advanced/onlineStore/README.md b/Chapter17-Advanced/onlineStore/README.md deleted file mode 100644 index f171eca..0000000 --- a/Chapter17-Advanced/onlineStore/README.md +++ /dev/null @@ -1,64 +0,0 @@ -

- -

-Build Status -Total Downloads -Latest Stable Version -License -

- -## About Laravel - -Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as: - -- [Simple, fast routing engine](https://laravel.com/docs/routing). -- [Powerful dependency injection container](https://laravel.com/docs/container). -- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage. -- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent). -- Database agnostic [schema migrations](https://laravel.com/docs/migrations). -- [Robust background job processing](https://laravel.com/docs/queues). -- [Real-time event broadcasting](https://laravel.com/docs/broadcasting). - -Laravel is accessible, powerful, and provides tools required for large, robust applications. - -## Learning Laravel - -Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework. - -If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 2000 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library. - -## Laravel Sponsors - -We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell). - -### Premium Partners - -- **[Vehikl](https://vehikl.com/)** -- **[Tighten Co.](https://tighten.co)** -- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** -- **[64 Robots](https://64robots.com)** -- **[Cubet Techno Labs](https://cubettech.com)** -- **[Cyber-Duck](https://cyber-duck.co.uk)** -- **[Many](https://www.many.co.uk)** -- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)** -- **[DevSquad](https://devsquad.com)** -- **[Curotec](https://www.curotec.com/services/technologies/laravel/)** -- **[OP.GG](https://op.gg)** -- **[WebReinvent](https://webreinvent.com/?utm_source=laravel&utm_medium=github&utm_campaign=patreon-sponsors)** -- **[Lendio](https://lendio.com)** - -## Contributing - -Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions). - -## Code of Conduct - -In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). - -## Security Vulnerabilities - -If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed. - -## License - -The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). diff --git a/Chapter17-Advanced/onlineStore/app/Console/Kernel.php b/Chapter17-Advanced/onlineStore/app/Console/Kernel.php deleted file mode 100644 index d8bc1d2..0000000 --- a/Chapter17-Advanced/onlineStore/app/Console/Kernel.php +++ /dev/null @@ -1,32 +0,0 @@ -command('inspire')->hourly(); - } - - /** - * Register the commands for the application. - * - * @return void - */ - protected function commands() - { - $this->load(__DIR__.'/Commands'); - - require base_path('routes/console.php'); - } -} diff --git a/Chapter17-Advanced/onlineStore/app/Exceptions/Handler.php b/Chapter17-Advanced/onlineStore/app/Exceptions/Handler.php deleted file mode 100644 index 8e7fbd1..0000000 --- a/Chapter17-Advanced/onlineStore/app/Exceptions/Handler.php +++ /dev/null @@ -1,41 +0,0 @@ -> - */ - protected $dontReport = [ - // - ]; - - /** - * A list of the inputs that are never flashed for validation exceptions. - * - * @var array - */ - protected $dontFlash = [ - 'current_password', - 'password', - 'password_confirmation', - ]; - - /** - * Register the exception handling callbacks for the application. - * - * @return void - */ - public function register() - { - $this->reportable(function (Throwable $e) { - // - }); - } -} diff --git a/Chapter17-Advanced/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php b/Chapter17-Advanced/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php deleted file mode 100644 index cd78cb3..0000000 --- a/Chapter17-Advanced/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php +++ /dev/null @@ -1,16 +0,0 @@ -with("viewData", $viewData); - } -} diff --git a/Chapter17-Advanced/onlineStore/app/Http/Controllers/Admin/AdminProductController.php b/Chapter17-Advanced/onlineStore/app/Http/Controllers/Admin/AdminProductController.php deleted file mode 100644 index b9e6577..0000000 --- a/Chapter17-Advanced/onlineStore/app/Http/Controllers/Admin/AdminProductController.php +++ /dev/null @@ -1,34 +0,0 @@ -with("viewData", $viewData); - } - - public function store(Request $request) - { - $request->validate([ - "name" => "required|max:255", - "description" => "required", - "price" => "required|numeric|gt:0", - 'image' => 'image', - ]); - - $creationData = $request->only(["name","description","price"]); - $creationData["image"] = "game.png"; - Product::create($creationData); - - return back(); - } -} diff --git a/Chapter17-Advanced/onlineStore/app/Http/Controllers/Controller.php b/Chapter17-Advanced/onlineStore/app/Http/Controllers/Controller.php deleted file mode 100644 index a0a2a8a..0000000 --- a/Chapter17-Advanced/onlineStore/app/Http/Controllers/Controller.php +++ /dev/null @@ -1,13 +0,0 @@ -with("viewData", $viewData); - } - - public function about() - { - $viewData = []; - $viewData["title"] = "About us - Online Store"; - $viewData["subtitle"] = "About us"; - $viewData["description"] = "This is an about page ..."; - $viewData["author"] = "Developed by: Your Name"; - return view('home.about')->with("viewData", $viewData); - } -} diff --git a/Chapter17-Advanced/onlineStore/app/Http/Controllers/ProductController.php b/Chapter17-Advanced/onlineStore/app/Http/Controllers/ProductController.php deleted file mode 100644 index d27a3a3..0000000 --- a/Chapter17-Advanced/onlineStore/app/Http/Controllers/ProductController.php +++ /dev/null @@ -1,29 +0,0 @@ -with("viewData", $viewData); - } - - public function show($id) - { - $viewData = []; - $product = Product::findOrFail($id); - $viewData["title"] = $product->getName()." - Online Store"; - $viewData["subtitle"] = $product->getName()." - Product information"; - $viewData["product"] = $product; - return view('product.show')->with("viewData", $viewData); - } -} diff --git a/Chapter17-Advanced/onlineStore/app/Http/Kernel.php b/Chapter17-Advanced/onlineStore/app/Http/Kernel.php deleted file mode 100644 index d3722c2..0000000 --- a/Chapter17-Advanced/onlineStore/app/Http/Kernel.php +++ /dev/null @@ -1,67 +0,0 @@ - - */ - protected $middleware = [ - // \App\Http\Middleware\TrustHosts::class, - \App\Http\Middleware\TrustProxies::class, - \Fruitcake\Cors\HandleCors::class, - \App\Http\Middleware\PreventRequestsDuringMaintenance::class, - \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, - \App\Http\Middleware\TrimStrings::class, - \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, - ]; - - /** - * The application's route middleware groups. - * - * @var array> - */ - protected $middlewareGroups = [ - 'web' => [ - \App\Http\Middleware\EncryptCookies::class, - \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, - \Illuminate\Session\Middleware\StartSession::class, - // \Illuminate\Session\Middleware\AuthenticateSession::class, - \Illuminate\View\Middleware\ShareErrorsFromSession::class, - \App\Http\Middleware\VerifyCsrfToken::class, - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - - 'api' => [ - // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, - 'throttle:api', - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - ]; - - /** - * The application's route middleware. - * - * These middleware may be assigned to groups or used individually. - * - * @var array - */ - protected $routeMiddleware = [ - 'auth' => \App\Http\Middleware\Authenticate::class, - 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::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, - 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, - 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, - 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, - ]; -} diff --git a/Chapter17-Advanced/onlineStore/app/Http/Middleware/Authenticate.php b/Chapter17-Advanced/onlineStore/app/Http/Middleware/Authenticate.php deleted file mode 100644 index 704089a..0000000 --- a/Chapter17-Advanced/onlineStore/app/Http/Middleware/Authenticate.php +++ /dev/null @@ -1,21 +0,0 @@ -expectsJson()) { - return route('login'); - } - } -} diff --git a/Chapter17-Advanced/onlineStore/app/Http/Middleware/EncryptCookies.php b/Chapter17-Advanced/onlineStore/app/Http/Middleware/EncryptCookies.php deleted file mode 100644 index 867695b..0000000 --- a/Chapter17-Advanced/onlineStore/app/Http/Middleware/EncryptCookies.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter17-Advanced/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/Chapter17-Advanced/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php deleted file mode 100644 index 74cbd9a..0000000 --- a/Chapter17-Advanced/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter17-Advanced/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php b/Chapter17-Advanced/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php deleted file mode 100644 index a2813a0..0000000 --- a/Chapter17-Advanced/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php +++ /dev/null @@ -1,32 +0,0 @@ -check()) { - return redirect(RouteServiceProvider::HOME); - } - } - - return $next($request); - } -} diff --git a/Chapter17-Advanced/onlineStore/app/Http/Middleware/TrimStrings.php b/Chapter17-Advanced/onlineStore/app/Http/Middleware/TrimStrings.php deleted file mode 100644 index 88cadca..0000000 --- a/Chapter17-Advanced/onlineStore/app/Http/Middleware/TrimStrings.php +++ /dev/null @@ -1,19 +0,0 @@ - - */ - protected $except = [ - 'current_password', - 'password', - 'password_confirmation', - ]; -} diff --git a/Chapter17-Advanced/onlineStore/app/Http/Middleware/TrustHosts.php b/Chapter17-Advanced/onlineStore/app/Http/Middleware/TrustHosts.php deleted file mode 100644 index 7186414..0000000 --- a/Chapter17-Advanced/onlineStore/app/Http/Middleware/TrustHosts.php +++ /dev/null @@ -1,20 +0,0 @@ - - */ - public function hosts() - { - return [ - $this->allSubdomainsOfApplicationUrl(), - ]; - } -} diff --git a/Chapter17-Advanced/onlineStore/app/Http/Middleware/TrustProxies.php b/Chapter17-Advanced/onlineStore/app/Http/Middleware/TrustProxies.php deleted file mode 100644 index 3391630..0000000 --- a/Chapter17-Advanced/onlineStore/app/Http/Middleware/TrustProxies.php +++ /dev/null @@ -1,28 +0,0 @@ -|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/Chapter17-Advanced/onlineStore/app/Http/Middleware/VerifyCsrfToken.php b/Chapter17-Advanced/onlineStore/app/Http/Middleware/VerifyCsrfToken.php deleted file mode 100644 index 9e86521..0000000 --- a/Chapter17-Advanced/onlineStore/app/Http/Middleware/VerifyCsrfToken.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter17-Advanced/onlineStore/app/Models/Product.php b/Chapter17-Advanced/onlineStore/app/Models/Product.php deleted file mode 100644 index 5ef80c0..0000000 --- a/Chapter17-Advanced/onlineStore/app/Models/Product.php +++ /dev/null @@ -1,99 +0,0 @@ -attributes['id'] - int - contains the product primary key (id) - * $this->attributes['name'] - string - contains the product name - * $this->attributes['description'] - string - contains the product description - * $this->attributes['image'] - string - contains the product image - * $this->attributes['price'] - int - contains the product price - * $this->attributes['created_at'] - timestamp - contains the product creation date - * $this->attributes['updated_at'] - timestamp - contains the product update date - */ - - protected $fillable = [ - 'name', - 'description', - 'price', - 'image', - ]; - - public function getId() - { - return $this->attributes['id']; - } - - public function setId($id) - { - $this->attributes['id'] = $id; - } - - public function getName() - { - return $this->attributes['name']; - } - - public function setName($name) - { - $this->attributes['name'] = $name; - } - - public function getDescription() - { - return $this->attributes['description']; - } - - public function setDescription($description) - { - $this->attributes['description'] = $description; - } - - public function getImage() - { - return $this->attributes['image']; - } - - public function setImage($image) - { - $this->attributes['image'] = $image; - } - - public function getPrice() - { - return $this->attributes['price']; - } - - public function setPrice($price) - { - $this->attributes['price'] = $price; - } - - public function getCreatedAt() - { - return $this->attributes['created_at']; - } - - public function setCreatedAt($createdAt) - { - $this->attributes['created_at'] = $createdAt; - } - - public function getUpdatedAt() - { - return $this->attributes['updated_at']; - } - - public function setUpdatedAt($updatedAt) - { - $this->attributes['updated_at'] = $updatedAt; - } -} diff --git a/Chapter17-Advanced/onlineStore/app/Models/User.php b/Chapter17-Advanced/onlineStore/app/Models/User.php deleted file mode 100644 index 8996368..0000000 --- a/Chapter17-Advanced/onlineStore/app/Models/User.php +++ /dev/null @@ -1,44 +0,0 @@ - - */ - 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', - ]; -} diff --git a/Chapter17-Advanced/onlineStore/app/Providers/AppServiceProvider.php b/Chapter17-Advanced/onlineStore/app/Providers/AppServiceProvider.php deleted file mode 100644 index ee8ca5b..0000000 --- a/Chapter17-Advanced/onlineStore/app/Providers/AppServiceProvider.php +++ /dev/null @@ -1,28 +0,0 @@ - - */ - protected $policies = [ - // 'App\Models\Model' => 'App\Policies\ModelPolicy', - ]; - - /** - * Register any authentication / authorization services. - * - * @return void - */ - public function boot() - { - $this->registerPolicies(); - - // - } -} diff --git a/Chapter17-Advanced/onlineStore/app/Providers/BroadcastServiceProvider.php b/Chapter17-Advanced/onlineStore/app/Providers/BroadcastServiceProvider.php deleted file mode 100644 index 395c518..0000000 --- a/Chapter17-Advanced/onlineStore/app/Providers/BroadcastServiceProvider.php +++ /dev/null @@ -1,21 +0,0 @@ -> - */ - protected $listen = [ - Registered::class => [ - SendEmailVerificationNotification::class, - ], - ]; - - /** - * Register any events for your application. - * - * @return void - */ - public function boot() - { - // - } -} diff --git a/Chapter17-Advanced/onlineStore/app/Providers/RouteServiceProvider.php b/Chapter17-Advanced/onlineStore/app/Providers/RouteServiceProvider.php deleted file mode 100644 index 7c17d1f..0000000 --- a/Chapter17-Advanced/onlineStore/app/Providers/RouteServiceProvider.php +++ /dev/null @@ -1,63 +0,0 @@ -configureRateLimiting(); - - $this->routes(function () { - Route::prefix('api') - ->middleware('api') - ->namespace($this->namespace) - ->group(base_path('routes/api.php')); - - Route::middleware('web') - ->namespace($this->namespace) - ->group(base_path('routes/web.php')); - }); - } - - /** - * Configure the rate limiters for the application. - * - * @return void - */ - protected function configureRateLimiting() - { - RateLimiter::for('api', function (Request $request) { - return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); - }); - } -} diff --git a/Chapter17-Advanced/onlineStore/app/Traits/HasClassicSetter.php b/Chapter17-Advanced/onlineStore/app/Traits/HasClassicSetter.php deleted file mode 100644 index 09b2166..0000000 --- a/Chapter17-Advanced/onlineStore/app/Traits/HasClassicSetter.php +++ /dev/null @@ -1,31 +0,0 @@ -{'set'.Str::studly($key)}($value); - } -} \ No newline at end of file diff --git a/Chapter17-Advanced/onlineStore/artisan b/Chapter17-Advanced/onlineStore/artisan deleted file mode 100644 index 67a3329..0000000 --- a/Chapter17-Advanced/onlineStore/artisan +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env php -make(Illuminate\Contracts\Console\Kernel::class); - -$status = $kernel->handle( - $input = new Symfony\Component\Console\Input\ArgvInput, - new Symfony\Component\Console\Output\ConsoleOutput -); - -/* -|-------------------------------------------------------------------------- -| Shutdown The Application -|-------------------------------------------------------------------------- -| -| Once Artisan has finished running, we will fire off the shutdown events -| so that any final work may be done by the application before we shut -| down the process. This is the last thing to happen to the request. -| -*/ - -$kernel->terminate($input, $status); - -exit($status); diff --git a/Chapter17-Advanced/onlineStore/bootstrap/app.php b/Chapter17-Advanced/onlineStore/bootstrap/app.php deleted file mode 100644 index 037e17d..0000000 --- a/Chapter17-Advanced/onlineStore/bootstrap/app.php +++ /dev/null @@ -1,55 +0,0 @@ -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/Chapter17-Advanced/onlineStore/bootstrap/cache/.gitignore b/Chapter17-Advanced/onlineStore/bootstrap/cache/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter17-Advanced/onlineStore/bootstrap/cache/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter17-Advanced/onlineStore/composer.json b/Chapter17-Advanced/onlineStore/composer.json deleted file mode 100644 index f0f2eda..0000000 --- a/Chapter17-Advanced/onlineStore/composer.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "name": "laravel/laravel", - "type": "project", - "description": "The Laravel Framework.", - "keywords": ["framework", "laravel"], - "license": "MIT", - "require": { - "php": "^8.0", - "fruitcake/laravel-cors": "^2.0.5", - "guzzlehttp/guzzle": "^7.2", - "laravel/framework": "^9.0", - "laravel/sanctum": "^2.14", - "laravel/tinker": "^2.7" - }, - "require-dev": { - "fakerphp/faker": "^1.9.1", - "laravel/sail": "^1.0.1", - "mockery/mockery": "^1.4.4", - "nunomaduro/collision": "^6.1", - "phpunit/phpunit": "^9.5.10", - "spatie/laravel-ignition": "^1.0", - "squizlabs/php_codesniffer": "^3.6" - }, - "autoload": { - "psr-4": { - "App\\": "app/", - "Database\\Factories\\": "database/factories/", - "Database\\Seeders\\": "database/seeders/" - } - }, - "autoload-dev": { - "psr-4": { - "Tests\\": "tests/" - } - }, - "scripts": { - "post-autoload-dump": [ - "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", - "@php artisan package:discover --ansi" - ], - "post-update-cmd": [ - "@php artisan vendor:publish --tag=laravel-assets --ansi --force" - ], - "post-root-package-install": [ - "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" - ], - "post-create-project-cmd": [ - "@php artisan key:generate --ansi" - ] - }, - "extra": { - "laravel": { - "dont-discover": [] - } - }, - "config": { - "optimize-autoloader": true, - "preferred-install": "dist", - "sort-packages": true - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/Chapter17-Advanced/onlineStore/composer.lock b/Chapter17-Advanced/onlineStore/composer.lock deleted file mode 100644 index b55e897..0000000 --- a/Chapter17-Advanced/onlineStore/composer.lock +++ /dev/null @@ -1,7860 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "8bdcc31974d0d5a00db79c82827c8815", - "packages": [ - { - "name": "asm89/stack-cors", - "version": "v2.1.1", - "source": { - "type": "git", - "url": "https://github.com/asm89/stack-cors.git", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4|^5|^6" - }, - "require-dev": { - "phpunit/phpunit": "^7|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "psr-4": { - "Asm89\\Stack\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alexander", - "email": "iam.asm89@gmail.com" - } - ], - "description": "Cross-origin resource sharing library and stack middleware", - "homepage": "https://github.com/asm89/stack-cors", - "keywords": [ - "cors", - "stack" - ], - "support": { - "issues": "https://github.com/asm89/stack-cors/issues", - "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" - }, - "time": "2022-01-18T09:12:03+00:00" - }, - { - "name": "brick/math", - "version": "0.9.3", - "source": { - "type": "git", - "url": "https://github.com/brick/math.git", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", - "vimeo/psalm": "4.9.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Brick\\Math\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Arbitrary-precision arithmetic library", - "keywords": [ - "Arbitrary-precision", - "BigInteger", - "BigRational", - "arithmetic", - "bigdecimal", - "bignum", - "brick", - "math" - ], - "support": { - "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.9.3" - }, - "funding": [ - { - "url": "https://github.com/BenMorel", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/brick/math", - "type": "tidelift" - } - ], - "time": "2021-08-15T20:50:18+00:00" - }, - { - "name": "dflydev/dot-access-data", - "version": "v3.0.1", - "source": { - "type": "git", - "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c", - "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": "^3.14" - }, - "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.1" - }, - "time": "2021-08-13T13:06:58+00:00" - }, - { - "name": "doctrine/inflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "vimeo/psalm": "^4.10" - }, - "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.4" - }, - "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": "2021-10-22T20:16:43+00:00" - }, - { - "name": "doctrine/lexer", - "version": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" - } - }, - "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/1.2.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%2Flexer", - "type": "tidelift" - } - ], - "time": "2022-01-12T08:27:12+00:00" - }, - { - "name": "dragonmantank/cron-expression", - "version": "v3.3.1", - "source": { - "type": "git", - "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "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.1" - }, - "funding": [ - { - "url": "https://github.com/dragonmantank", - "type": "github" - } - ], - "time": "2022-01-18T15:43:28+00:00" - }, - { - "name": "egulias/email-validator", - "version": "3.1.2", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ee0db30118f661fb166bcffbf5d82032df484697", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^1.2", - "php": ">=7.2", - "symfony/polyfill-intl-idn": "^1.15" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^8.5.8|^9.3.3", - "vimeo/psalm": "^4" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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/3.1.2" - }, - "funding": [ - { - "url": "https://github.com/egulias", - "type": "github" - } - ], - "time": "2021-10-11T09:18:27+00:00" - }, - { - "name": "fruitcake/laravel-cors", - "version": "v2.0.5", - "source": { - "type": "git", - "url": "https://github.com/fruitcake/laravel-cors.git", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "shasum": "" - }, - "require": { - "asm89/stack-cors": "^2.0.1", - "illuminate/contracts": "^6|^7|^8|^9", - "illuminate/support": "^6|^7|^8|^9", - "php": ">=7.2", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4.3.4|^5|^6" - }, - "require-dev": { - "laravel/framework": "^6|^7.24|^8", - "orchestra/testbench-dusk": "^4|^5|^6|^7", - "phpunit/phpunit": "^6|^7|^8|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - }, - "laravel": { - "providers": [ - "Fruitcake\\Cors\\CorsServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Fruitcake\\Cors\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fruitcake", - "homepage": "https://fruitcake.nl" - }, - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", - "keywords": [ - "api", - "cors", - "crossdomain", - "laravel" - ], - "support": { - "issues": "https://github.com/fruitcake/laravel-cors/issues", - "source": "https://github.com/fruitcake/laravel-cors/tree/v2.0.5" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "time": "2022-01-03T14:53:04+00:00" - }, - { - "name": "graham-campbell/result-type", - "version": "v1.0.4", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "0690bde05318336c7221785f2a932467f98b64ca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/0690bde05318336c7221785f2a932467f98b64ca", - "reference": "0690bde05318336c7221785f2a932467f98b64ca", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "phpoption/phpoption": "^1.8" - }, - "require-dev": { - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", - "type": "tidelift" - } - ], - "time": "2021-11-21T21:41:47+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "7.4.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.8.3 || ^2.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.4.1", - "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.5 || ^9.3.5", - "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": { - "branch-alias": { - "dev-master": "7.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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.4.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": "2021-12-06T18:43:05+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "1.5.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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/1.5.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "time": "2021-10-22T20:56:57+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.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.4.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.8 || ^9.3.10" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "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.1.0" - }, - "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": "2021-10-06T17:43:30+00:00" - }, - { - "name": "laravel/framework", - "version": "v9.0.1", - "source": { - "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "shasum": "" - }, - "require": { - "doctrine/inflector": "^2.0", - "dragonmantank/cron-expression": "^3.1", - "egulias/email-validator": "^3.1", - "ext-mbstring": "*", - "ext-openssl": "*", - "laravel/serializable-closure": "^1.0", - "league/commonmark": "^2.2", - "league/flysystem": "^3.0", - "monolog/monolog": "^2.0", - "nesbot/carbon": "^2.53.1", - "php": "^8.0.2", - "psr/container": "^1.1.1|^2.0.1", - "psr/log": "^1.0|^2.0|^3.0", - "psr/simple-cache": "^1.0|^2.0|^3.0", - "ramsey/uuid": "^4.2.2", - "symfony/console": "^6.0", - "symfony/error-handler": "^6.0", - "symfony/finder": "^6.0", - "symfony/http-foundation": "^6.0", - "symfony/http-kernel": "^6.0", - "symfony/mailer": "^6.0", - "symfony/mime": "^6.0", - "symfony/process": "^6.0", - "symfony/routing": "^6.0", - "symfony/var-dumper": "^6.0", - "tijsverkoyen/css-to-inline-styles": "^2.2.2", - "vlucas/phpdotenv": "^5.4.1", - "voku/portable-ascii": "^2.0" - }, - "conflict": { - "tightenco/collect": "<5.5.33" - }, - "provide": { - "psr/container-implementation": "1.1|2.0", - "psr/simple-cache-implementation": "1.0|2.0|3.0" - }, - "replace": { - "illuminate/auth": "self.version", - "illuminate/broadcasting": "self.version", - "illuminate/bus": "self.version", - "illuminate/cache": "self.version", - "illuminate/collections": "self.version", - "illuminate/conditionable": "self.version", - "illuminate/config": "self.version", - "illuminate/console": "self.version", - "illuminate/container": "self.version", - "illuminate/contracts": "self.version", - "illuminate/cookie": "self.version", - "illuminate/database": "self.version", - "illuminate/encryption": "self.version", - "illuminate/events": "self.version", - "illuminate/filesystem": "self.version", - "illuminate/hashing": "self.version", - "illuminate/http": "self.version", - "illuminate/log": "self.version", - "illuminate/macroable": "self.version", - "illuminate/mail": "self.version", - "illuminate/notifications": "self.version", - "illuminate/pagination": "self.version", - "illuminate/pipeline": "self.version", - "illuminate/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": { - "aws/aws-sdk-php": "^3.198.1", - "doctrine/dbal": "^2.13.3|^3.1.4", - "fakerphp/faker": "^1.9.2", - "guzzlehttp/guzzle": "^7.2", - "league/flysystem-aws-s3-v3": "^3.0", - "league/flysystem-ftp": "^3.0", - "league/flysystem-sftp-v3": "^3.0", - "mockery/mockery": "^1.4.4", - "orchestra/testbench-core": "^7.0", - "pda/pheanstalk": "^4.0", - "phpstan/phpstan": "^1.0", - "phpunit/phpunit": "^9.5.8", - "predis/predis": "^1.1.9", - "symfony/amazon-mailer": "^6.0", - "symfony/cache": "^6.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.198.1).", - "brianium/paratest": "Required to run tests in parallel (^6.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", - "ext-bcmath": "Required to use the multiple_of validation rule.", - "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.", - "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.2).", - "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-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", - "mockery/mockery": "Required to use mocking (^1.4.4).", - "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).", - "predis/predis": "Required to use the predis connector (^1.1.9).", - "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.0).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^6.0).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.0).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.0).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.0).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.x-dev" - } - }, - "autoload": { - "files": [ - "src/Illuminate/Collections/helpers.php", - "src/Illuminate/Events/functions.php", - "src/Illuminate/Foundation/helpers.php", - "src/Illuminate/Support/helpers.php" - ], - "psr-4": { - "Illuminate\\": "src/Illuminate/", - "Illuminate\\Support\\": [ - "src/Illuminate/Macroable/", - "src/Illuminate/Collections/", - "src/Illuminate/Conditionable/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Laravel Framework.", - "homepage": "https://laravel.com", - "keywords": [ - "framework", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2022-02-09T15:00:05+00:00" - }, - { - "name": "laravel/sanctum", - "version": "v2.14.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/sanctum.git", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/0647a87140c7522e75826cffcadb3ad6e01f71e9", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/contracts": "^6.9|^7.0|^8.0|^9.0", - "illuminate/database": "^6.9|^7.0|^8.0|^9.0", - "illuminate/support": "^6.9|^7.0|^8.0|^9.0", - "php": "^7.2|^8.0" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0", - "phpunit/phpunit": "^8.0|^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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": "2022-01-12T15:07:43+00:00" - }, - { - "name": "laravel/serializable-closure", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/serializable-closure.git", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/65c9faf50d567b65d81764a44526545689e3fe63", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "pestphp/pest": "^1.18", - "phpstan/phpstan": "^0.12.98", - "symfony/var-dumper": "^5.3" - }, - "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": "2022-02-01T16:29:39+00:00" - }, - { - "name": "laravel/tinker", - "version": "v2.7.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/tinker.git", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/5f2f9815b7631b9f586a3de7933c25f9327d4073", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073", - "shasum": "" - }, - "require": { - "illuminate/console": "^6.0|^7.0|^8.0|^9.0", - "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.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", - "phpunit/phpunit": "^8.5.8|^9.3.3" - }, - "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.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.7.0" - }, - "time": "2022-01-10T08:52:49+00:00" - }, - { - "name": "league/commonmark", - "version": "2.2.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/commonmark.git", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "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.15" - }, - "require-dev": { - "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.0", - "commonmark/commonmark.js": "0.30.0", - "composer/package-versions-deprecated": "^1.8", - "erusev/parsedown": "^1.0", - "ext-json": "*", - "github/gfm": "0.29.0", - "michelf/php-markdown": "^1.4", - "phpstan/phpstan": "^0.12.88 || ^1.0.0", - "phpunit/phpunit": "^9.5.5", - "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", - "unleashedtech/php-coding-standard": "^3.1", - "vimeo/psalm": "^4.7.3" - }, - "suggest": { - "symfony/yaml": "v2.3+ required if using the Front Matter extension" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.3-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": "2022-01-25T14:37:33+00:00" - }, - { - "name": "league/config", - "version": "v1.1.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/config.git", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/config/zipball/a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^3.0.1", - "nette/schema": "^1.2", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.90", - "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": "2021-08-14T12:15:32+00:00" - }, - { - "name": "league/flysystem", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9f8b4260031bfef5497477da53dd57b2aaff0e06", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06", - "shasum": "" - }, - "require": { - "ext-json": "*", - "league/mime-type-detection": "^1.0.0", - "php": "^8.0.2" - }, - "conflict": { - "guzzlehttp/guzzle": "<7.0", - "guzzlehttp/ringphp": "<1.1.1", - "symfony/http-client": "<5.2" - }, - "require-dev": { - "async-aws/s3": "^1.5", - "async-aws/simple-s3": "^1.0", - "aws/aws-sdk-php": "^3.198.1", - "composer/semver": "^3.0", - "ext-fileinfo": "*", - "ext-ftp": "*", - "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.5", - "google/cloud-storage": "^1.23", - "phpseclib/phpseclib": "^2.0", - "phpstan/phpstan": "^0.12.26", - "phpunit/phpunit": "^9.5.11", - "sabre/dav": "^4.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.0.3" - }, - "funding": [ - { - "url": "https://offset.earth/frankdejonge", - "type": "custom" - }, - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2022-01-31T19:41:04+00:00" - }, - { - "name": "league/mime-type-detection", - "version": "1.9.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/aa70e813a6ad3d1558fc927863d47309b4c23e69", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.2", - "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" - }, - "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.9.0" - }, - "funding": [ - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2021-11-21T11:48:40+00:00" - }, - { - "name": "monolog/monolog", - "version": "2.3.5", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd4380d6fc37626e2f799f29d91195040137eba9", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "provide": { - "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7", - "graylog2/gelf-php": "^1.4.2", - "mongodb/mongodb": "^1.8", - "php-amqplib/php-amqplib": "~2.4 || ^3", - "php-console/php-console": "^3.1.3", - "phpspec/prophecy": "^1.6.1", - "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5", - "predis/predis": "^1.1", - "rollbar/rollbar": "^1.3", - "ruflin/elastica": ">=0.90@dev", - "swiftmailer/swiftmailer": "^5.3|^6.0" - }, - "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", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "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": "2.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/2.3.5" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" - } - ], - "time": "2021-10-01T21:08:31+00:00" - }, - { - "name": "nesbot/carbon", - "version": "2.56.0", - "source": { - "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1.8 || ^8.0", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "doctrine/dbal": "^2.0 || ^3.0", - "doctrine/orm": "^2.7", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "phpmd/phpmd": "^2.9", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.54 || ^1.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.14", - "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://opencollective.com/Carbon", - "type": "open_collective" - }, - { - "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", - "type": "tidelift" - } - ], - "time": "2022-01-21T17:08:38+00:00" - }, - { - "name": "nette/schema", - "version": "v1.2.2", - "source": { - "type": "git", - "url": "https://github.com/nette/schema.git", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/9a39cef03a5b34c7de64f551538cbba05c2be5df", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df", - "shasum": "" - }, - "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": ">=7.1 <8.2" - }, - "require-dev": { - "nette/tester": "^2.3 || ^2.4", - "phpstan/phpstan-nette": "^0.12", - "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.2" - }, - "time": "2021-10-15T11:40:02+00:00" - }, - { - "name": "nette/utils", - "version": "v3.2.7", - "source": { - "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/0af4e3de4df9f1543534beab255ccf459e7a2c99", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99", - "shasum": "" - }, - "require": { - "php": ">=7.2 <8.2" - }, - "conflict": { - "nette/di": "<3.0.6" - }, - "require-dev": { - "nette/tester": "~2.0", - "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.3" - }, - "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()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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 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/v3.2.7" - }, - "time": "2022-01-24T11:29:14+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.13.2", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", - "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.13.2" - }, - "time": "2021-11-30T19:35:32+00:00" - }, - { - "name": "phpoption/phpoption", - "version": "1.8.1", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-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.8.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", - "type": "tidelift" - } - ], - "time": "2021-12-04T23:24:31+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.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.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": "http://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/tree/master" - }, - "time": "2020-06-29T06:28:15+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.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": "http://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/master" - }, - "time": "2019-04-30T12:38:16+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.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": "http://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/master" - }, - "time": "2016-08-06T14:39: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.1", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "570292577277f06f590635381a7f761a6cf4f026" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/570292577277f06f590635381a7f761a6cf4f026", - "reference": "570292577277f06f590635381a7f761a6cf4f026", - "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" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "3.17.05.02" - }, - "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.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." - }, - "bin": [ - "bin/psysh" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "0.11.x-dev" - } - }, - "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.1" - }, - "time": "2022-01-03T13:58:38+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": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/ramsey/collection.git", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "shasum": "" - }, - "require": { - "php": "^7.3 || ^8", - "symfony/polyfill-php81": "^1.23" - }, - "require-dev": { - "captainhook/captainhook": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "ergebnis/composer-normalize": "^2.6", - "fakerphp/faker": "^1.5", - "hamcrest/hamcrest-php": "^2", - "jangregor/phpstan-prophecy": "^0.8", - "mockery/mockery": "^1.3", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1", - "phpstan/phpstan": "^0.12.32", - "phpstan/phpstan-mockery": "^0.12.5", - "phpstan/phpstan-phpunit": "^0.12.11", - "phpunit/phpunit": "^8.5 || ^9", - "psy/psysh": "^0.10.4", - "slevomat/coding-standard": "^6.3", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.4" - }, - "type": "library", - "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/1.2.2" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "time": "2021-10-10T03:01:02+00:00" - }, - { - "name": "ramsey/uuid", - "version": "4.2.3", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "shasum": "" - }, - "require": { - "brick/math": "^0.8 || ^0.9", - "ext-json": "*", - "php": "^7.2 || ^8.0", - "ramsey/collection": "^1.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php80": "^1.14" - }, - "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", - "moontoast/math": "^1.1", - "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.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-mockery": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^8.5 || ^9", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" - }, - "suggest": { - "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-ctype": "Enables faster processing of character classification using ctype functions.", - "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": { - "branch-alias": { - "dev-main": "4.x-dev" - }, - "captainhook": { - "force-install": true - } - }, - "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "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.2.3" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2021-09-25T23:10:38+00:00" - }, - { - "name": "symfony/console", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/22e8efd019c3270c4f79376234a3f8752cd25490", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.4|^6.0" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/css-selector", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/1955d595c12c111629cc814d3f2a2ff13580508a", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a", - "shasum": "" - }, - "require": { - "php": ">=8.0.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/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-11-01T23:48:49+00:00" - }, - { - "name": "symfony/error-handler", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/20343b3bad7ebafa38138ddcb97290a24722b57b", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" - }, - "bin": [ - "Resources/bin/patch-type-declarations" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to manage errors and ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6472ea2dd415e925b90ca82be64b8bc6157f3934", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/event-dispatcher-contracts": "^2|^3" - }, - "conflict": { - "symfony/dependency-injection": "<5.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^5.4|^6.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/aa5422287b75594b90ee9cd807caf8f0df491385", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/event-dispatcher": "^1" - }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-07-15T12:33:35+00:00" - }, - { - "name": "symfony/finder", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/8661b74dbabc23223f38c9b99d3f8ade71170430", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ad157299ced81a637fade1efcadd688d6deba5c1", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1" - }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/cache": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0" - }, - "suggest": { - "symfony/mime": "To use the file extension guesser" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v6.0.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/error-handler": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", - "symfony/twig-bridge": "<5.4", - "symfony/validator": "<5.4", - "twig/twig": "<2.13" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/process": "^5.4|^6.0", - "symfony/routing": "^5.4|^6.0", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-29T18:12:46+00:00" - }, - { - "name": "symfony/mailer", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mailer.git", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "shasum": "" - }, - "require": { - "egulias/email-validator": "^2.1.10|^3", - "php": ">=8.0.2", - "psr/event-dispatcher": "^1", - "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3" - }, - "conflict": { - "symfony/http-kernel": "<5.4" - }, - "require-dev": { - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/messenger": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/mime", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/2cd9601efd040e56f43360daa68f3c6b0534923a", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "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" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "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.24.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": "2021-10-20T20:35:02+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-11-23T21:10:46+00:00" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44", - "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.23-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.24.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": "2021-09-14T14:02:44+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.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": "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.24.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": "2021-11-30T18:21:41+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-05-27T09:17:38+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:33+00:00" - }, - { - "name": "symfony/polyfill-php81", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:11+00:00" - }, - { - "name": "symfony/process", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/298ed357274c1868c20a0061df256a1250a6c4af", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/routing", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/yaml": "<5.4" - }, - "require-dev": { - "doctrine/annotations": "^1.12", - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/36715ebf9fb9db73db0cb24263c79077c6fe8603", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/container": "^2.0" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "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.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": "2021-11-04T17:53:12+00:00" - }, - { - "name": "symfony/string", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/522144f0c4c004c80d56fa47e40e17028e2eefc2", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.0" - }, - "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/translation-contracts": "^2.0|^3.0", - "symfony/var-exporter": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "files": [ - "Resources/functions.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 an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/translation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/71bb15335798f8c4da110911bcf2d2fead7a430d", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.3|^3.0" - }, - "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" - }, - "provide": { - "symfony/translation-implementation": "2.3|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-07T00:29:03+00:00" - }, - { - "name": "symfony/translation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "suggest": { - "symfony/translation-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - } - }, - "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.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": "2021-09-07T12:43:40+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7b701676fc64f9ef11f9b4870f16b48f66be4834", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<5.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-17T16:30:44+00:00" - }, - { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.4", - "source": { - "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" - } - ], - "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", - "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "support": { - "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" - }, - "time": "2021-12-08T09:12:39+00:00" - }, - { - "name": "vlucas/phpdotenv", - "version": "v5.4.1", - "source": { - "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", - "shasum": "" - }, - "require": { - "ext-pcre": "*", - "graham-campbell/result-type": "^1.0.2", - "php": "^7.1.3 || ^8.0", - "phpoption/phpoption": "^1.8", - "symfony/polyfill-ctype": "^1.23", - "symfony/polyfill-mbstring": "^1.23.1", - "symfony/polyfill-php80": "^1.23.1" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" - }, - "suggest": { - "ext-filter": "Required to use the boolean validator." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.4-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.4.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", - "type": "tidelift" - } - ], - "time": "2021-12-12T23:22:04+00:00" - }, - { - "name": "voku/portable-ascii", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/voku/portable-ascii.git", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/9bd89e83cecdf8c37b64909454249eaed98b2c89", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89", - "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.0" - }, - "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-01-24T18:59:03+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "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.10.0" - }, - "time": "2021-03-09T10:59:23+00:00" - } - ], - "packages-dev": [ - { - "name": "doctrine/instantiator", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.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%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2020-11-10T18:47:58+00:00" - }, - { - "name": "facade/ignition-contracts", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/facade/ignition-contracts.git", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^v2.15.8", - "phpunit/phpunit": "^9.3.11", - "vimeo/psalm": "^3.17.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Facade\\IgnitionContracts\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://flareapp.io", - "role": "Developer" - } - ], - "description": "Solution contracts for Ignition", - "homepage": "https://github.com/facade/ignition-contracts", - "keywords": [ - "contracts", - "flare", - "ignition" - ], - "support": { - "issues": "https://github.com/facade/ignition-contracts/issues", - "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" - }, - "time": "2020-10-16T08:27:54+00:00" - }, - { - "name": "fakerphp/faker", - "version": "v1.19.0", - "source": { - "type": "git", - "url": "https://github.com/FakerPHP/Faker.git", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^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": "*", - "symfony/phpunit-bridge": "^4.4 || ^5.2" - }, - "suggest": { - "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", - "ext-curl": "Required by Faker\\Provider\\Image to download images.", - "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", - "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.19-dev" - } - }, - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "François Zaninotto" - } - ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], - "support": { - "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0" - }, - "time": "2022-02-02T17:38:57+00:00" - }, - { - "name": "filp/whoops", - "version": "2.14.5", - "source": { - "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "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.14.5" - }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "time": "2022-01-07T12:00:00+00:00" - }, - { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "shasum": "" - }, - "require": { - "php": "^5.3|^7.0|^8.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" - }, - "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "classmap": [ - "hamcrest" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "This is the PHP port of Hamcrest Matchers", - "keywords": [ - "test" - ], - "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" - }, - "time": "2020-07-09T08:09:16+00:00" - }, - { - "name": "laravel/sail", - "version": "v1.13.2", - "source": { - "type": "git", - "url": "https://github.com/laravel/sail.git", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.0|^9.0", - "illuminate/contracts": "^8.0|^9.0", - "illuminate/support": "^8.0|^9.0", - "php": "^7.3|^8.0" - }, - "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": "2022-02-08T14:14:12+00:00" - }, - { - "name": "mockery/mockery", - "version": "1.5.0", - "source": { - "type": "git", - "url": "https://github.com/mockery/mockery.git", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "shasum": "" - }, - "require": { - "hamcrest/hamcrest-php": "^2.0.1", - "lib-pcre": ">=7.0", - "php": "^7.3 || ^8.0" - }, - "conflict": { - "phpunit/phpunit": "<8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-0": { - "Mockery": "library/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" - } - ], - "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": { - "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.5.0" - }, - "time": "2022-01-20T13:18:17+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.10.2", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "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.10.2" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2020-11-13T09:40:50+00:00" - }, - { - "name": "nunomaduro/collision", - "version": "v6.1.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/collision.git", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "shasum": "" - }, - "require": { - "facade/ignition-contracts": "^1.0.2", - "filp/whoops": "^2.14.5", - "php": "^8.0.0", - "symfony/console": "^6.0.2" - }, - "require-dev": { - "brianium/paratest": "^6.4.1", - "laravel/framework": "^9.0", - "nunomaduro/larastan": "^1.0.2", - "nunomaduro/mock-final-classes": "^1.1.0", - "orchestra/testbench": "^7.0.0", - "phpunit/phpunit": "^9.5.11" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "6.x-dev" - }, - "laravel": { - "providers": [ - "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" - ] - } - }, - "autoload": { - "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": "2022-01-18T17:49:08+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.1.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/15a90844ad40f127afd244c0cad228de2a80052a", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a", - "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.1.1" - }, - "time": "2022-02-07T21:56:48+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.6.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "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.6.0" - }, - "time": "2022-01-04T19:58:01+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" - }, - "time": "2021-12-08T12:19:24+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "9.2.10", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d5850aaf931743067f4bfc1ae4cbd06468400687", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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 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", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.10" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-05T09:12:13+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "3.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-02T12:48:52+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "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/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:58:55+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T05:33:50+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.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/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:16:10+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "9.5.13", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/597cb647654ede35e43b137926dfdfef0fb11743", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.3.1", - "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": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.7", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", - "sebastian/version": "^3.0.2" - }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.13" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-01-24T07:33:35+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:08:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "1.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:08:54+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:30:19+00:00" - }, - { - "name": "sebastian/comparator", - "version": "4.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:49:45+00:00" - }, - { - "name": "sebastian/complexity", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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 calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:52:27+00:00" - }, - { - "name": "sebastian/diff", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:10:38+00:00" - }, - { - "name": "sebastian/environment", - "version": "5.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-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": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:52:38+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "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", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-11-11T14:18:36+00:00" - }, - { - "name": "sebastian/global-state", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-11T13:31:12+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-28T06:42:11+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "http://www.github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:17:30+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:45:17+00:00" - }, - { - "name": "sebastian/type", - "version": "2.3.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-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/2.3.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-15T12:49:02+00:00" - }, - { - "name": "sebastian/version", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:39:44+00:00" - }, - { - "name": "spatie/backtrace", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/backtrace.git", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "ext-json": "*", - "phpunit/phpunit": "^9.3", - "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": { - "issues": "https://github.com/spatie/backtrace/issues", - "source": "https://github.com/spatie/backtrace/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/sponsors/spatie", - "type": "github" - }, - { - "url": "https://spatie.be/open-source/support-us", - "type": "other" - } - ], - "time": "2021-11-09T10:57:15+00:00" - }, - { - "name": "spatie/flare-client-php", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/flare-client-php.git", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "shasum": "" - }, - "require": { - "illuminate/pipeline": "^8.0|^9.0", - "php": "^8.0", - "spatie/backtrace": "^1.2", - "symfony/http-foundation": "^5.0|^6.0", - "symfony/mime": "^5.2|^6.0", - "symfony/process": "^5.2|^6.0", - "symfony/var-dumper": "^5.2|^6.0" - }, - "require-dev": { - "dms/phpunit-arraysubset-asserts": "^0.3.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/phpunit-snapshot-assertions": "^4.0" - }, - "type": "library", - "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.0.1" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2022-02-04T15:21:00+00:00" - }, - { - "name": "spatie/ignition", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/spatie/ignition.git", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/d2d5ba823af3004268556e87dfc94449e4159f5a", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "monolog/monolog": "^2.0", - "php": "^8.0", - "spatie/flare-client-php": "^1.0", - "symfony/console": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "mockery/mockery": "^1.4", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/ray": "^1.32", - "symfony/process": "^5.4|^6.0" - }, - "type": "library", - "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": "2022-01-19T12:57:41+00:00" - }, - { - "name": "spatie/laravel-ignition", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/68250225a9f83b086462c2af1b1139dfde48fbd2", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*", - "illuminate/support": "^8.77|^9.0", - "monolog/monolog": "^2.3", - "php": "^8.0", - "spatie/flare-client-php": "^1.0.1", - "spatie/ignition": "^1.0", - "symfony/console": "^5.0|^6.0", - "symfony/var-dumper": "^5.0|^6.0" - }, - "require-dev": { - "filp/whoops": "^2.14", - "livewire/livewire": "^2.8|dev-develop", - "mockery/mockery": "^1.4", - "nunomaduro/larastan": "^1.0", - "orchestra/testbench": "^6.23|^7.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/laravel-ray": "^1.27" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Spatie\\LaravelIgnition\\IgnitionServiceProvider" - ], - "aliases": { - "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" - } - } - }, - "autoload": { - "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": "2022-02-04T15:25:56+00:00" - }, - { - "name": "squizlabs/php_codesniffer", - "version": "3.6.2", - "source": { - "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", - "shasum": "" - }, - "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.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": "lead" - } - ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", - "keywords": [ - "phpcs", - "standards" - ], - "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" - }, - "time": "2021-12-12T21:44:58+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2021-07-28T10:34:58+00:00" - } - ], - "aliases": [], - "minimum-stability": "dev", - "stability-flags": [], - "prefer-stable": true, - "prefer-lowest": false, - "platform": { - "php": "^8.0" - }, - "platform-dev": [], - "plugin-api-version": "2.1.0" -} diff --git a/Chapter17-Advanced/onlineStore/config/app.php b/Chapter17-Advanced/onlineStore/config/app.php deleted file mode 100644 index 1941d7c..0000000 --- a/Chapter17-Advanced/onlineStore/config/app.php +++ /dev/null @@ -1,197 +0,0 @@ - env('APP_NAME', 'Laravel'), - - /* - |-------------------------------------------------------------------------- - | Application Environment - |-------------------------------------------------------------------------- - | - | This value determines the "environment" your application is currently - | running in. This may determine how you prefer to configure various - | services the application utilizes. Set this in your ".env" file. - | - */ - - 'env' => env('APP_ENV', 'production'), - - /* - |-------------------------------------------------------------------------- - | Application Debug Mode - |-------------------------------------------------------------------------- - | - | When your application is in debug mode, detailed error messages with - | stack traces will be shown on every error that occurs within your - | application. If disabled, a simple generic error page is shown. - | - */ - - 'debug' => (bool) env('APP_DEBUG', false), - - /* - |-------------------------------------------------------------------------- - | Application URL - |-------------------------------------------------------------------------- - | - | This URL is used by the console to properly generate URLs when using - | the Artisan command line tool. You should set this to the root of - | your application so that it is used when running Artisan tasks. - | - */ - - 'url' => env('APP_URL', 'http://localhost'), - - 'asset_url' => env('ASSET_URL', null), - - /* - |-------------------------------------------------------------------------- - | 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', - - /* - |-------------------------------------------------------------------------- - | 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' => [ - - /* - * Laravel Framework Service Providers... - */ - Illuminate\Auth\AuthServiceProvider::class, - Illuminate\Broadcasting\BroadcastServiceProvider::class, - Illuminate\Bus\BusServiceProvider::class, - Illuminate\Cache\CacheServiceProvider::class, - Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, - Illuminate\Cookie\CookieServiceProvider::class, - Illuminate\Database\DatabaseServiceProvider::class, - Illuminate\Encryption\EncryptionServiceProvider::class, - Illuminate\Filesystem\FilesystemServiceProvider::class, - Illuminate\Foundation\Providers\FoundationServiceProvider::class, - Illuminate\Hashing\HashServiceProvider::class, - Illuminate\Mail\MailServiceProvider::class, - Illuminate\Notifications\NotificationServiceProvider::class, - Illuminate\Pagination\PaginationServiceProvider::class, - Illuminate\Pipeline\PipelineServiceProvider::class, - Illuminate\Queue\QueueServiceProvider::class, - Illuminate\Redis\RedisServiceProvider::class, - Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, - Illuminate\Session\SessionServiceProvider::class, - Illuminate\Translation\TranslationServiceProvider::class, - Illuminate\Validation\ValidationServiceProvider::class, - Illuminate\View\ViewServiceProvider::class, - - /* - * 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, - - ], - - /* - |-------------------------------------------------------------------------- - | 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([ - // ... - ])->toArray(), - -]; diff --git a/Chapter17-Advanced/onlineStore/config/auth.php b/Chapter17-Advanced/onlineStore/config/auth.php deleted file mode 100644 index d8c6cee..0000000 --- a/Chapter17-Advanced/onlineStore/config/auth.php +++ /dev/null @@ -1,111 +0,0 @@ - [ - '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 expire 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. - | - */ - - 'passwords' => [ - 'users' => [ - 'provider' => 'users', - 'table' => 'password_resets', - '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/Chapter17-Advanced/onlineStore/config/broadcasting.php b/Chapter17-Advanced/onlineStore/config/broadcasting.php deleted file mode 100644 index 67fcbbd..0000000 --- a/Chapter17-Advanced/onlineStore/config/broadcasting.php +++ /dev/null @@ -1,67 +0,0 @@ - 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'), - 'useTLS' => true, - ], - '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/Chapter17-Advanced/onlineStore/config/cache.php b/Chapter17-Advanced/onlineStore/config/cache.php deleted file mode 100644 index 8736c7a..0000000 --- a/Chapter17-Advanced/onlineStore/config/cache.php +++ /dev/null @@ -1,110 +0,0 @@ - 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'), - ], - - '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 a RAM based store such as APC or Memcached, there might - | be other applications utilizing the same cache. So, we'll specify a - | value to get prefixed to all our keys so we can avoid collisions. - | - */ - - 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'), - -]; diff --git a/Chapter17-Advanced/onlineStore/config/cors.php b/Chapter17-Advanced/onlineStore/config/cors.php deleted file mode 100644 index 8a39e6d..0000000 --- a/Chapter17-Advanced/onlineStore/config/cors.php +++ /dev/null @@ -1,34 +0,0 @@ - ['api/*', 'sanctum/csrf-cookie'], - - 'allowed_methods' => ['*'], - - 'allowed_origins' => ['*'], - - 'allowed_origins_patterns' => [], - - 'allowed_headers' => ['*'], - - 'exposed_headers' => [], - - 'max_age' => 0, - - 'supports_credentials' => false, - -]; diff --git a/Chapter17-Advanced/onlineStore/config/database.php b/Chapter17-Advanced/onlineStore/config/database.php deleted file mode 100644 index 0faebae..0000000 --- a/Chapter17-Advanced/onlineStore/config/database.php +++ /dev/null @@ -1,147 +0,0 @@ - env('DB_CONNECTION', 'mysql'), - - /* - |-------------------------------------------------------------------------- - | Database Connections - |-------------------------------------------------------------------------- - | - | Here are each of the database connections setup for your application. - | Of course, examples of configuring each database platform that is - | supported by Laravel is shown below to make development simple. - | - | - | All database work in Laravel is done through the PHP PDO facilities - | so make sure you have the driver for your particular database of - | choice installed on your machine before you begin development. - | - */ - - 'connections' => [ - - 'sqlite' => [ - 'driver' => 'sqlite', - 'url' => env('DATABASE_URL'), - 'database' => env('DB_DATABASE', database_path('database.sqlite')), - 'prefix' => '', - 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), - ], - - 'mysql' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '3306'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'unix_socket' => env('DB_SOCKET', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - 'pgsql' => [ - 'driver' => 'pgsql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '5432'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - 'search_path' => 'public', - 'sslmode' => 'prefer', - ], - - 'sqlsrv' => [ - 'driver' => 'sqlsrv', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', 'localhost'), - 'port' => env('DB_PORT', '1433'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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'), - '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'), - 'password' => env('REDIS_PASSWORD'), - 'port' => env('REDIS_PORT', '6379'), - 'database' => env('REDIS_CACHE_DB', '1'), - ], - - ], - -]; diff --git a/Chapter17-Advanced/onlineStore/config/filesystems.php b/Chapter17-Advanced/onlineStore/config/filesystems.php deleted file mode 100644 index cf5abce..0000000 --- a/Chapter17-Advanced/onlineStore/config/filesystems.php +++ /dev/null @@ -1,73 +0,0 @@ - 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 setup for each driver as an example of the required options. - | - | Supported Drivers: "local", "ftp", "sftp", "s3" - | - */ - - 'disks' => [ - - 'local' => [ - 'driver' => 'local', - 'root' => storage_path('app'), - ], - - 'public' => [ - 'driver' => 'local', - 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', - 'visibility' => 'public', - ], - - '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), - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter17-Advanced/onlineStore/config/hashing.php b/Chapter17-Advanced/onlineStore/config/hashing.php deleted file mode 100644 index bcd3be4..0000000 --- a/Chapter17-Advanced/onlineStore/config/hashing.php +++ /dev/null @@ -1,52 +0,0 @@ - '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/Chapter17-Advanced/onlineStore/config/logging.php b/Chapter17-Advanced/onlineStore/config/logging.php deleted file mode 100644 index fefe088..0000000 --- a/Chapter17-Advanced/onlineStore/config/logging.php +++ /dev/null @@ -1,119 +0,0 @@ - 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' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), - - /* - |-------------------------------------------------------------------------- - | 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'), - ], - - 'daily' => [ - 'driver' => 'daily', - 'path' => storage_path('logs/laravel.log'), - 'level' => env('LOG_LEVEL', 'debug'), - 'days' => 14, - ], - - 'slack' => [ - 'driver' => 'slack', - 'url' => env('LOG_SLACK_WEBHOOK_URL'), - 'username' => 'Laravel Log', - 'emoji' => ':boom:', - 'level' => env('LOG_LEVEL', 'critical'), - ], - - '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'), - ], - ], - - 'stderr' => [ - 'driver' => 'monolog', - 'level' => env('LOG_LEVEL', 'debug'), - 'handler' => StreamHandler::class, - 'formatter' => env('LOG_STDERR_FORMATTER'), - 'with' => [ - 'stream' => 'php://stderr', - ], - ], - - 'syslog' => [ - 'driver' => 'syslog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'errorlog' => [ - 'driver' => 'errorlog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'null' => [ - 'driver' => 'monolog', - 'handler' => NullHandler::class, - ], - - 'emergency' => [ - 'path' => storage_path('logs/laravel.log'), - ], - ], - -]; diff --git a/Chapter17-Advanced/onlineStore/config/mail.php b/Chapter17-Advanced/onlineStore/config/mail.php deleted file mode 100644 index 87b6fe3..0000000 --- a/Chapter17-Advanced/onlineStore/config/mail.php +++ /dev/null @@ -1,117 +0,0 @@ - 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", - | "postmark", "log", "array", "failover" - | - */ - - 'mailers' => [ - 'smtp' => [ - 'transport' => 'smtp', - '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, - ], - - 'ses' => [ - 'transport' => 'ses', - ], - - 'mailgun' => [ - 'transport' => 'mailgun', - ], - - 'postmark' => [ - 'transport' => 'postmark', - ], - - 'sendmail' => [ - 'transport' => 'sendmail', - 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -t -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/Chapter17-Advanced/onlineStore/config/queue.php b/Chapter17-Advanced/onlineStore/config/queue.php deleted file mode 100644 index 25ea5a8..0000000 --- a/Chapter17-Advanced/onlineStore/config/queue.php +++ /dev/null @@ -1,93 +0,0 @@ - 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, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter17-Advanced/onlineStore/config/sanctum.php b/Chapter17-Advanced/onlineStore/config/sanctum.php deleted file mode 100644 index 9281c92..0000000 --- a/Chapter17-Advanced/onlineStore/config/sanctum.php +++ /dev/null @@ -1,65 +0,0 @@ - explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( - '%s%s', - 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', - env('APP_URL') ? ','.parse_url(env('APP_URL'), PHP_URL_HOST) : '' - ))), - - /* - |-------------------------------------------------------------------------- - | 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/Chapter17-Advanced/onlineStore/config/services.php b/Chapter17-Advanced/onlineStore/config/services.php deleted file mode 100644 index 2a1d616..0000000 --- a/Chapter17-Advanced/onlineStore/config/services.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - 'domain' => env('MAILGUN_DOMAIN'), - 'secret' => env('MAILGUN_SECRET'), - 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), - ], - - '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/Chapter17-Advanced/onlineStore/config/session.php b/Chapter17-Advanced/onlineStore/config/session.php deleted file mode 100644 index 8fed97c..0000000 --- a/Chapter17-Advanced/onlineStore/config/session.php +++ /dev/null @@ -1,201 +0,0 @@ - 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/Chapter17-Advanced/onlineStore/config/view.php b/Chapter17-Advanced/onlineStore/config/view.php deleted file mode 100644 index 22b8a18..0000000 --- a/Chapter17-Advanced/onlineStore/config/view.php +++ /dev/null @@ -1,36 +0,0 @@ - [ - 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/Chapter17-Advanced/onlineStore/database/.gitignore b/Chapter17-Advanced/onlineStore/database/.gitignore deleted file mode 100644 index 9b19b93..0000000 --- a/Chapter17-Advanced/onlineStore/database/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.sqlite* diff --git a/Chapter17-Advanced/onlineStore/database/factories/UserFactory.php b/Chapter17-Advanced/onlineStore/database/factories/UserFactory.php deleted file mode 100644 index d6ca926..0000000 --- a/Chapter17-Advanced/onlineStore/database/factories/UserFactory.php +++ /dev/null @@ -1,42 +0,0 @@ - - */ -class UserFactory extends Factory -{ - /** - * Define the model's default state. - * - * @return array - */ - public function definition() - { - return [ - 'name' => $this->faker->name(), - 'email' => $this->faker->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. - * - * @return \Illuminate\Database\Eloquent\Factories\Factory - */ - public function unverified() - { - return $this->state(function (array $attributes) { - return [ - 'email_verified_at' => null, - ]; - }); - } -} diff --git a/Chapter17-Advanced/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php b/Chapter17-Advanced/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php deleted file mode 100644 index cf6b776..0000000 --- a/Chapter17-Advanced/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->string('name'); - $table->string('email')->unique(); - $table->timestamp('email_verified_at')->nullable(); - $table->string('password'); - $table->rememberToken(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('users'); - } -}; diff --git a/Chapter17-Advanced/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php b/Chapter17-Advanced/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php deleted file mode 100644 index fcacb80..0000000 --- a/Chapter17-Advanced/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php +++ /dev/null @@ -1,32 +0,0 @@ -string('email')->index(); - $table->string('token'); - $table->timestamp('created_at')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('password_resets'); - } -}; diff --git a/Chapter17-Advanced/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/Chapter17-Advanced/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php deleted file mode 100644 index 1719198..0000000 --- a/Chapter17-Advanced/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php +++ /dev/null @@ -1,36 +0,0 @@ -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. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('failed_jobs'); - } -}; diff --git a/Chapter17-Advanced/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/Chapter17-Advanced/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php deleted file mode 100644 index fd235f8..0000000 --- a/Chapter17-Advanced/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->morphs('tokenable'); - $table->string('name'); - $table->string('token', 64)->unique(); - $table->text('abilities')->nullable(); - $table->timestamp('last_used_at')->nullable(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('personal_access_tokens'); - } -}; diff --git a/Chapter17-Advanced/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php b/Chapter17-Advanced/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php deleted file mode 100644 index 2eecdc2..0000000 --- a/Chapter17-Advanced/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php +++ /dev/null @@ -1,35 +0,0 @@ -id(); - $table->string('name'); - $table->text('description'); - $table->string('image'); - $table->integer('price'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('products'); - } -}; diff --git a/Chapter17-Advanced/onlineStore/database/seeders/DatabaseSeeder.php b/Chapter17-Advanced/onlineStore/database/seeders/DatabaseSeeder.php deleted file mode 100644 index 71f673f..0000000 --- a/Chapter17-Advanced/onlineStore/database/seeders/DatabaseSeeder.php +++ /dev/null @@ -1,19 +0,0 @@ -create(); - } -} diff --git a/Chapter17-Advanced/onlineStore/lang/en.json b/Chapter17-Advanced/onlineStore/lang/en.json deleted file mode 100644 index 577680d..0000000 --- a/Chapter17-Advanced/onlineStore/lang/en.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "The :attribute must contain at least one letter.": "The :attribute must contain at least one letter.", - "The :attribute must contain at least one number.": "The :attribute must contain at least one number.", - "The :attribute must contain at least one symbol.": "The :attribute must contain at least one symbol.", - "The :attribute must contain at least one uppercase and one lowercase letter.": "The :attribute must contain at least one uppercase and one lowercase letter.", - "The given :attribute has appeared in a data leak. Please choose a different :attribute.": "The given :attribute has appeared in a data leak. Please choose a different :attribute." -} diff --git a/Chapter17-Advanced/onlineStore/lang/en/auth.php b/Chapter17-Advanced/onlineStore/lang/en/auth.php deleted file mode 100644 index 6598e2c..0000000 --- a/Chapter17-Advanced/onlineStore/lang/en/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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/Chapter17-Advanced/onlineStore/lang/en/pagination.php b/Chapter17-Advanced/onlineStore/lang/en/pagination.php deleted file mode 100644 index d481411..0000000 --- a/Chapter17-Advanced/onlineStore/lang/en/pagination.php +++ /dev/null @@ -1,19 +0,0 @@ - '« Previous', - 'next' => 'Next »', - -]; diff --git a/Chapter17-Advanced/onlineStore/lang/en/passwords.php b/Chapter17-Advanced/onlineStore/lang/en/passwords.php deleted file mode 100644 index 2345a56..0000000 --- a/Chapter17-Advanced/onlineStore/lang/en/passwords.php +++ /dev/null @@ -1,22 +0,0 @@ - '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/Chapter17-Advanced/onlineStore/lang/en/validation.php b/Chapter17-Advanced/onlineStore/lang/en/validation.php deleted file mode 100644 index 783003c..0000000 --- a/Chapter17-Advanced/onlineStore/lang/en/validation.php +++ /dev/null @@ -1,163 +0,0 @@ - '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' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - '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' => [ - 'numeric' => 'The :attribute must be greater than :value.', - 'file' => 'The :attribute must be greater than :value kilobytes.', - 'string' => 'The :attribute must be greater than :value characters.', - 'array' => 'The :attribute must have more than :value items.', - ], - 'gte' => [ - 'numeric' => 'The :attribute must be greater than or equal to :value.', - 'file' => 'The :attribute must be greater than or equal to :value kilobytes.', - 'string' => 'The :attribute must be greater than or equal to :value characters.', - 'array' => 'The :attribute must have :value items or more.', - ], - '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' => [ - 'numeric' => 'The :attribute must be less than :value.', - 'file' => 'The :attribute must be less than :value kilobytes.', - 'string' => 'The :attribute must be less than :value characters.', - 'array' => 'The :attribute must have less than :value items.', - ], - 'lte' => [ - 'numeric' => 'The :attribute must be less than or equal to :value.', - 'file' => 'The :attribute must be less than or equal to :value kilobytes.', - 'string' => 'The :attribute must be less than or equal to :value characters.', - 'array' => 'The :attribute must not have more than :value items.', - ], - 'mac_address' => 'The :attribute must be a valid MAC address.', - 'max' => [ - 'numeric' => 'The :attribute must not be greater than :max.', - 'file' => 'The :attribute must not be greater than :max kilobytes.', - 'string' => 'The :attribute must not be greater than :max characters.', - 'array' => 'The :attribute must not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - '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.', - 'password' => 'The password is incorrect.', - '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' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - '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/Chapter17-Advanced/onlineStore/package.json b/Chapter17-Advanced/onlineStore/package.json deleted file mode 100644 index 7a9aecd..0000000 --- a/Chapter17-Advanced/onlineStore/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "private": true, - "scripts": { - "dev": "npm run development", - "development": "mix", - "watch": "mix watch", - "watch-poll": "mix watch -- --watch-options-poll=1000", - "hot": "mix watch --hot", - "prod": "npm run production", - "production": "mix --production" - }, - "devDependencies": { - "axios": "^0.25", - "laravel-mix": "^6.0.6", - "lodash": "^4.17.19", - "postcss": "^8.1.14" - } -} diff --git a/Chapter17-Advanced/onlineStore/phpcs.xml b/Chapter17-Advanced/onlineStore/phpcs.xml deleted file mode 100644 index a1cf2b6..0000000 --- a/Chapter17-Advanced/onlineStore/phpcs.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - The coding standard for the Online Store project - - app/ - config/ - database/ - routes/ - */migrations/* - diff --git a/Chapter17-Advanced/onlineStore/phpunit.xml b/Chapter17-Advanced/onlineStore/phpunit.xml deleted file mode 100644 index 2ac86a1..0000000 --- a/Chapter17-Advanced/onlineStore/phpunit.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - ./tests/Unit - - - ./tests/Feature - - - - - ./app - - - - - - - - - - - - - - diff --git a/Chapter17-Advanced/onlineStore/public/.htaccess b/Chapter17-Advanced/onlineStore/public/.htaccess deleted file mode 100644 index 3aec5e2..0000000 --- a/Chapter17-Advanced/onlineStore/public/.htaccess +++ /dev/null @@ -1,21 +0,0 @@ - - - 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/Chapter17-Advanced/onlineStore/public/css/admin.css b/Chapter17-Advanced/onlineStore/public/css/admin.css deleted file mode 100644 index d9495a1..0000000 --- a/Chapter17-Advanced/onlineStore/public/css/admin.css +++ /dev/null @@ -1,33 +0,0 @@ -.copyright { - background-color: #1a252f; -} - -.fixed { - -ms-flex: 0 0 250px; - flex: 0 0 250px; -} - -.content-grey { - background-color: #f8f9fc; -} - -hr { - margin-top: 0.8em; - margin-bottom: 0.8em; -} - -.img-profile { - height: 2rem; - width: 2rem; -} - -.profile-font { - color: #858796 !important; - font-size: 80%; - font-weight: 400; -} - -.card-header { - background-color: #f8f9fc; - border-bottom: 1px solid #e3e6f0; -} diff --git a/Chapter17-Advanced/onlineStore/public/css/app.css b/Chapter17-Advanced/onlineStore/public/css/app.css deleted file mode 100644 index cabac36..0000000 --- a/Chapter17-Advanced/onlineStore/public/css/app.css +++ /dev/null @@ -1,20 +0,0 @@ -.bg-secondary { - background-color: #2c3e50 !important; -} - -.copyright { - background-color: #1a252f; -} - -.bg-primary { - background-color: #1abc9c !important; -} - -nav{ - font-weight: 700; -} - -.img-card{ - height: 18vw; - object-fit: cover; -} diff --git a/Chapter17-Advanced/onlineStore/public/favicon.ico b/Chapter17-Advanced/onlineStore/public/favicon.ico deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter17-Advanced/onlineStore/public/img/game.png b/Chapter17-Advanced/onlineStore/public/img/game.png deleted file mode 100644 index 85420e8bbc16098bf26b4ee63bde0e91a19d1f2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25896 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 cz>% diff --git a/Chapter17-Advanced/onlineStore/public/img/safe.png b/Chapter17-Advanced/onlineStore/public/img/safe.png deleted file mode 100644 index 445942c707af53210931f9f4f99f6d3cb69e5d89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19240 zcmcG$WmHse)Hkf6f+(ScNTUb?(jg6!BS;M;DbfQ72qGOSC5?2~(A^yh(m8Y^-90n| z&o%%1em}nJeZIV|HH&f1Ialnxubsbr{FN1z0)gS96-$ zp4IuJyY`*Y>6dib+W_gw3gbzJCF`EUiWfmv_IvF^+r}S_8XhlF-;K4W;EsJ=!u{Zm z@g?0-gVTvg+3)A&>{~Go1SQjd?#mLCY;30|$$pb<*D@0+;Wn@M=oNr_lz9BT`8@!sYom=skJ z#xB_%G{rBu9%KkN>}Lzepv#ci$)zjzUEWl{_J)14mKoqCkXM@fkXVPPnOsO_USm`I z5Z|XT-)+{5k*KHh_qjaqq{ZMyA+H`N0tpjLU`?g-$4%8E$O7xL z-~_|bE=a6DLLM0rG(I)VVLO|%H@9{-ygu!pf4Z34rf}PU`0bA{p#jmWU6=d3512G0 zsPS@9nbnH1=XY@sZ>|#KdvA6TPbD6W;*dMi1^K?c2p*>y@h1S+iiIu*>$8B#EW*+%h0ur^{wIN^#llD<^0+d#yrFEH@c5SGSj6ESg?OOepi6%}m+-z&s0^ z2J`*rD!mUGc}va^EsgV@ zEcAF53tX^v%Q)QVn8(b!@hdw5H*@>FzWdp$V&NxEFmkXca~@up+v-xW*w>36>8XLg z010(c2w7wGK4f|7G&zZnV4wD1~(7h2hntA?n#=b;2h;L-LdZaDuN9-O_ z^!E&i2_?np!A?@OfRwK#duTm+Ira-RSuA3}f_eJNFo#Kw-giR*%vs7Qs&d}K=t=7v z-ud>T&BkM-E(84BNFm9puT-YROan%NPWDEiO41HKeDbBxx0xLJdWvWvKm8kZwh6Jz)Y;pW zQ?Zj)%=1(f`YPllo(nIIP-0gJO-;vY+FH+)X$Q+If+Y61U=Q&7|1zxGYRjZO4GvYi z?qlpn7vEfs9{kE1`sU>xpQn`6MA&qFJP=~}+=n^?j2&_x2FF&&7)$`q6Ci1Ecdp#b zp9A7g%;t7o#fTm)PWsKO5)Xzyg$c|+!7@4w279ssP_{s&fU{eb4T($$!Bc|7J4=lcgP0a}3H5&^dtz8#;EJqFoDDI0Y#BE3TL`%l%FuNsUpB^w-7Hhot)^l75Ufu6%{}A`m>2St zFb5oyCGu!>M}L`j*>2r?g}ZK&opoqND@l22)h4iIRlGozz}>^%=LIUv^f(( z8v=GO435IiVupGOSpM0A=GN=8)0+tKbV5ro>w@Yh9Hxp;PQ+lc{znR<{zp&l(U^U- z0h~Kd7Ia?-z3I3y4ujCkobijH32sa;+H2I`ij(<#IQ3Dw{^xn|H{})f+hjmaK2a6) zwT~;wJsiYfVETrfk|)ZB_#XYJ&GiMZYJ6(tg|!fxD)SbrY`Xrb+i@TQtsKiA8Abi;J};US60QaTqo7e)A!OGSS+FKMbRW!13Y`Rq;R8 z(oLpnaB^OUiuHWxCy35-Pb%`gxMXBtxPL$B_q)LDf13v{G9w)O=3P5llAv;>qA?Oo zm*7aEe8#C!RX;dzXJyj|&~rVdqCR}r*2|Y`1p3K49)y%)cE-lWf2E^d(*<2uGZx*T z3HsVDSd!5ZjLR^1{3L2HLrLslqY zR;Z>`@aTGZ^A`=;ZLt%698y|y!jb5{-e@Rr`ChEChXN=e`_3=Tr-yqtr(!`He`4~` zH{(6kji?x-g@j~54riW9=AO8R!_@=5p@}u+{9#&wOH9Hi3#Zu(7#V7*e*gw}?l1cF zLPDP4`f&T-&B2a;N*@aTF9JIJ$=cwo*wcY$8QI$U%2xPVRn^&<*c%omW%Enw=JbXK z`2u}-2$?P%yYO^7cfeetEtRb}idb2JEyDl51Ts7l|a zA3|W%=>6rsg+HUQt4MAF-RrsY%TLd6FAb2c6Yrm(0oT5+F59~)E!=n10-8yFeaswOQ~c&p3k0S7B=}hLmCe;`r%;UFqSNvrJial7<`Ox; zxafL?ocnYL)MVHRJ$VBl%YlfKGf&_3w#`zbUA8cw-`n)9zVt6`@&!ub)Cz^?nQ5AQ zA>9btpqB4$8{F*eBL4U1#XR|M@A(MFYugeaVAOa~{?$*sVeno+ce?^J7U{WKu91hA z{ngB&Y-}twT*IsAtBKyLw=)CJ)fm#`4y=Kc;L#(`iWs%`f}5#ihc3%XN(i6lZgE>( zFU}f0;15*J>;w}^)P=9>avrtM2h(rQGDXQ9!l$m**NCE4-q`YE0 zVz(wm)(H$vOfswL;;E<|YO^}tnC{FWWXUoNJQ*ewdmvZc*)*QqoU#>aJ4%`~XzYH) zOL#Z^NAlq;@-*9PXP(a3?a2OiB8p;>Y!0$+?PT-JVh z7v$_u_|2y@abBOGV0$c-LtMBCvOESxwbxsrGDJ5;<}?aX^t>U|a$`Sf31t>i6%|&S z_q%B5H^)zu{Fa&q8-=?`yEK<_Kjb((DGBEUNBReSd;=QRl=8zA=FH<0UfMpKWxRcG zzXd{xiunWda|%(k6#D>v(-&um`W`|!{)xZV64RtQA$at6@%LiST^(ROy_3dI2ST&< zXCtAii*98yA@|d8%bZ18AQ>ZHlx|{{zlOcEOLKLORPc-|NWOS`=vxRZVKr&qHP9~! z4M!J&6%1hZm#Z?iBCR{+8T}^>u{6&yN zi}aU!;VusB=#|)NO=<-%vCHZDa2E^zM0IfJt|ZFd!<^T;mE}n5VxZ?;qc0xlEHS+t zCB{Ky=#`xcoqO^Ib|Z2hhr{zPD{2E8fONN=ulK z+Nuq^(NMgF=!3hb%6Dp8UlA%0Eg12GurqV{jod+C@nFg4XB6h}w}UKG z6{Dl0wY37yJhz`Tx2w{t!Mi@B;2RJ>S=pA{^SC(RBl3*@($*X55r6E!XH}>X0ga%; z3r2|Nj7hAl?#KZ1!Us$iFmB<#+?7BY<>(JAg{^R-5~84wWztSxZK(wnFsokz^=n{L z4X(ZnMj-#eZ1{jmDH;$vcaeKN=(=PBl^Ye^s}Yu4z8YZspJmuq6++2;sH5_3U*8-< z9rVJX=TTu&!yLg(;o%SBaS(*uxton;81Z-TpAXJWj!Gt!5myzDY0Yuer8Wr!IwoZx z%S0mu^Ltu#qJTh>Z)M{17&GkoTH$4d80h3K`l`8)e@xu)LusD2kMpRxq;Bkok&(M%%ov0c<~s? z-G)wS%c$zSd>$mh=MFffI`QZ;5=b26Qdz6Nw>R6`=%@0_%>qD1eAzV%hD?haAP{>^ z!rdOd#6vajw5G;tC4mV)Z`r$|^-+cH)X|5Qc`{MHc7Ypx|D`PAatavO2*OBF5UVf= zA2=4_Ai&sB{n1ETwa{p)mky|l$K1J88Dfovp`tN83X~$`P55|Sxf#gKO^ZwwEp6RL z`qjS3^Is#R?{esGkT-{7HNrn1vm*X>VNO})i}cO<4ar+**X9EXf~$6$8QTu3a7b=c zm$3{K8cHohdi@9=zZ>yOS=KjiXyrQxu2rsq*zttUhVW@mdGm#|>#4}8H<@5`Pc1!d zc%SK>u!ozQTf;T`+PjTLrHAU7ap1rWx@;s?6Hjg>!TbAKWFTsRRA_eZ9kPFT zM*fUylmWLol7c3*J(N_=oJO(GHnN5zA(_l+6LoKz&2wFnX6ib|-QB(Q#fydaHfQZ$ zCGrXi3t8FOW8P)%_eFaO+D%&l*I0Fq3lLf)tK#Wg6Go0-pknK`y)t3&I7Y?DkSos*m z>KWH(8YNG!mPU>_v(EZw%LHnOKPOQ;)$9j&xs~XplEyvJzG_t3b9H<`(x6=bMWB}; zepG%<=A=H2V)$sZ#~-vr&RaYOAh@Qn)x-i^+UhvpHi-?01?9>ip9w3q73e+<@dp4a z?Yg@WLvrVv9EkyO-M`*0bBf8^Iq$)=LdnjDcs{pMEu_irRqx%hcuy!}yNCY`m(+lG zrUom=NSy3tspxS{pV)1+@{G=J&r==c6^I8!QAKv^-=dvC_L_+Z6*RNk~4d||NHS)tDdQaI}J~PRT8`toY z{OksE)wM^zqf%yyc^c3b6-6Q~Ui=`&q=vusWgbNEw=WQ=e~OI{<=(wBY2MhdT6lu@ zG|x_X1suR^;L7)lUM1VXQ{-xO3pJv!8rgMorl3N!YPD&L7_#kS0y>3J!^?uAA`7CI zGA%0>S8(k3TM}*gl)$h*6+Mp4l$kouZ&Xvkse!`|h7wpZ#ZN^*Ol*og(V8qN-uxHy zY8!Q0uaK!{Q8~5RZCKr4U3fa8k+z68y7#bHBnPt2)@-*fy0kuR;Y=eb%^lafP+Gcg zhLN7k#^$dVm#rqGdNvC!LjN)YH=hD=*aYN%6;v_Gnjr1x=htB;prCB8S+m^Y^OUVQ zi(L<&O|97hTbk_U&L{bCYuDmWVqAjpvm$tJ>V10Hb-fjI>vFsS<9PX2PHwi-7Zw)M z(&$#+IQj&Bu0BClR`RY4TO)T6%Zaj4!FG(wJ0kX1;XcKDxiK@ohXq z_MM(VFk{`j9*EvieQ4d&y?Aj+=>(NR4V$@!+KP$_6VKHB<^}dvvB@u^Cb<I-UN zlHWR-lUhjty`-r*VI-$;mc9RNpTlIOEQl(9n=U9^u)W9eJi^B0^1gchXj@wwT9`{% z{xYXWrScKp%unV!buCWLhQ?M_R^0xkTyZZbHpidmMD`p}r0-tt|NHYtduo|WC^n`@y^n)xzjjkEdvn1z%UEPS+G zc!b@H59#Le7*eTWvNue37fEDV$6r80Nz2^=Z z@85r^otZtIDNn)n^Yg*BiL)js{m94Q4I6?@im>=UVYIZgjFVs8t>2rw3H8RFR>D!| z!9k!P`IC=@pdpkSHuSnDHu82V);a0oWSMIqW928-{he%MYs>Pv7A_(uQ=F_#gs-AK zy7tKG;;}LeSi|XO!BX3rY{VqII0*W`AmDY5za_$^HsZ4RSVoq?weK-hqe<#3UJK-b z?TJAT6IMxC4W={|0>0l`g0g<5QizP4_GMn2WM^y8L5-xz#s zLi`t$^8ECB5Az&V-u6JOYQ83yU15tbFE@i(fp*Iub=l0xqqw-dEN^WEAvCacb1Z6m zKqxb~8Ch?{+1m##O!VH9i=Q${Ee{Q;)E2WR^x>P7KWEBw9D2hiQrKiu#mv?CRPxn| zU8yo8rl&DcYKx$z!S;7lEF}lCGoWjxiyR}qVb0qCIqDMyJ`vWF1=kT(lsA~)E_X!L zNHQTLW7OiSlkwk-OBwZO?n&`W{G8>-GPc8yl1PFZu%fKRaE(ruuALkw-X1r*?QUAxV}Q(+U@-8zkxJ>3P^@C{(wa z5aK>+!8O{H)pxD-jPeSMtm|IjHWR|^}=*kO_{04_~Cez&z+p6 zkga~Kq0LFrFm({>nDcz~BhO=%5UvyD{xUx6m>}DjsVVV93uwXq1QtdRdjcU z!)PU`MLsg)L7QqyIJgAKlRI91&jSavqFhzC{%E~aXfG1_f==9*aLoQkP?gu7@%`BY zvS>c3Tzfb?r}ln-4g^0mxC@c9>Hng66h7Nnb{=I#s?rlI(E1NQUaEB6}pEmu%y!Ov*#xhLp35T)_ndi@RdU^|R%BT|K zdAxImZ?8;^<}=BrUP0ZF*c*6(uFg5PIj}D7nnCfzRMp91DM%SI>BV?H=(+B7N?l zIK?Z$3U!R9*4t-ve`fd#SE8$TFkYuzW+X}uiuW6-cv`I%vLJUS=LA^o107?_{;xuz z48=Br@f8&*P>t89se@|Q!OiP|y0lt-%)IyFyF|u|J_H|=%LsWF+MP!`vl$lA<%NsC9AsZ%g8Nm?vA~> z{ARHSd~tM|^JSCln}ya^SjJBMQFwHsRT;dtUnS47ii_DJx*mPPnXfKMm3R;o6ts;_ zOyj`5kKOw2G9z^=dmR4EXZdaK^2KqabN)$ZG$Zo(Aa~_(anbOM{KUEWGToJ0u?c1TQ*!-(NUYy`_wL<;PQ<93$zJ5-6n$Mo1LYki?ZjEOtEf&OuJCS(JfD&fvEd4YJUNVM6M>g*;z2V_-6+Ht1Yn#>|d8}z5NIe zZ--1Lp%dXsW93x)CoRqR(efL>Gh9^Bq?^abj~|_!_(QNgd+;yhGVS(7cXL!dTptB< z!P#OS-c&BzOLPmD8K6beYOLQe&jw{IpmB>mehZW1GA8ux>NWToxgzd>%t<*Y(2z(J z`!jIk;o-Gyl_0t#T^W&B4pw`wZ;NHLBRWD>+S@M(qH#_+s(#s8=I7IetrqJSi}}Kt zF4svHX@?Wi*JfUX%DnuBXQ#lxK)O(BdKO>CpsbxeSSJ=a6x5F3)nT8C^cts7 zVI4)3`_z5uFdF+|r6waUxS!EFsgTSN+**Ub$re6t-f+dAjG*WX zbx31)_hIKiH$WU9yCz^+J`#^KK2Fwa*;fnfU6$6>)xDg+BOoYVYeqn)`GhM<1Nb8z zU=!izdh}}%rzRxlRXR!@vUaTg=%xYdk88QQ66JH=OW#cH%H2pyhY=aMQ!M=b`?q-B zQNQXmnjFWE7@vi5Zgt+fb#5+oy3Ea{52R>ca@w`3`wT9vuC7j1e0O~}Vo^DZ&rZHI zY5$~9zll?oQ@87@1)4A!qQORj$N@M?W+nv^wpV5RvSx4*CNynpkrmSzs?g>IN;y_{5 zBlLQ4RdBtU5$U?uSPfle=2aFl<60=u35Pm9OafkIqp%YesBzuJJt!I{b=97HNx;kJ z<(#qdZbfW4K1x#H3ABF3>~eK>P&ANa<8qWit6XtX`f7Xfwo#jKV5-M6<(A z^V}T$am))RyGp>xK2+ea{y|5HQJf_urlM&{N=jN61$Ct4n3DRPck_#I9G~BuNq7M$ zzcgj|Xm2vS8#W^6GRS=C1rthiLOgTqh|ngH0q1T#ov@*9j}rj%VEmM6d;t2}va(#rl++oxfh3rU*~Ylw-vBY%(`Dw{P1CjxewTWceno z=Na$1tzVh2<3pL8rjDg^8|+3FSd|@PYOAh)Z5LShe@Zth6D5dWkp>>mu0unq>Tj+u zCAWqCT__vX&NMckSS~2Je=+^pfNk!E=SQsQ&>;b@ThArMNQv7R47BP=3SLdSkQ%iwhet~B=?i){gpu2vt1V<}SXN$$SyG%_ z=a%a3USICb>n3l|I`iCJDJ?DSyRot_8pW3`OrQqG;)60pSe#78Nd#x7=$v4YV zS5ZOyvK%lTD65^)H|E4|V%}@y(Onc46nH3~C9J1toFsaY?CjJ!SI~vN7U4<1j-
w==XB0?3|p=#`o%NsudE(E-U#KS3Snw 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 o>ir+C;RN10sIS0&a;p - - - - - - - - - - - - - - - - - - diff --git a/Chapter17-Advanced/onlineStore/public/index.php b/Chapter17-Advanced/onlineStore/public/index.php deleted file mode 100644 index 1d69f3a..0000000 --- a/Chapter17-Advanced/onlineStore/public/index.php +++ /dev/null @@ -1,55 +0,0 @@ -make(Kernel::class); - -$response = $kernel->handle( - $request = Request::capture() -)->send(); - -$kernel->terminate($request, $response); diff --git a/Chapter17-Advanced/onlineStore/public/robots.txt b/Chapter17-Advanced/onlineStore/public/robots.txt deleted file mode 100644 index eb05362..0000000 --- a/Chapter17-Advanced/onlineStore/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: diff --git a/Chapter17-Advanced/onlineStore/resources/css/app.css b/Chapter17-Advanced/onlineStore/resources/css/app.css deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter17-Advanced/onlineStore/resources/js/app.js b/Chapter17-Advanced/onlineStore/resources/js/app.js deleted file mode 100644 index 40c55f6..0000000 --- a/Chapter17-Advanced/onlineStore/resources/js/app.js +++ /dev/null @@ -1 +0,0 @@ -require('./bootstrap'); diff --git a/Chapter17-Advanced/onlineStore/resources/js/bootstrap.js b/Chapter17-Advanced/onlineStore/resources/js/bootstrap.js deleted file mode 100644 index 6922577..0000000 --- a/Chapter17-Advanced/onlineStore/resources/js/bootstrap.js +++ /dev/null @@ -1,28 +0,0 @@ -window._ = require('lodash'); - -/** - * 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 = require('axios'); - -window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; - -/** - * 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'; - -// window.Pusher = require('pusher-js'); - -// window.Echo = new Echo({ -// broadcaster: 'pusher', -// key: process.env.MIX_PUSHER_APP_KEY, -// cluster: process.env.MIX_PUSHER_APP_CLUSTER, -// forceTLS: true -// }); diff --git a/Chapter17-Advanced/onlineStore/resources/views/admin/home/index.blade.php b/Chapter17-Advanced/onlineStore/resources/views/admin/home/index.blade.php deleted file mode 100644 index a2b4868..0000000 --- a/Chapter17-Advanced/onlineStore/resources/views/admin/home/index.blade.php +++ /dev/null @@ -1,12 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
-
- Admin Panel - Home Page -
-
- Welcome to the Admin Panel, use the sidebar to navigate between the different options. -
-
-@endsection diff --git a/Chapter17-Advanced/onlineStore/resources/views/admin/product/index.blade.php b/Chapter17-Advanced/onlineStore/resources/views/admin/product/index.blade.php deleted file mode 100644 index c81f6a2..0000000 --- a/Chapter17-Advanced/onlineStore/resources/views/admin/product/index.blade.php +++ /dev/null @@ -1,73 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
-
- Create Products -
-
- @if($errors->any()) -
    - @foreach($errors->all() as $error) -
  • - {{ $error }}
  • - @endforeach -
- @endif - -
- @csrf -
-
-
- -
- -
-
-
-
-
- -
- -
-
-
-
-
- - -
- -
-
-
- -
-
- Manage Products -
-
- - - - - - - - - - - @foreach ($viewData["products"] as $product) - - - - - - - @endforeach - -
IDNameEditDelete
{{ $product->getId() }}{{ $product->getName() }}EditDelete
-
-
-@endsection diff --git a/Chapter17-Advanced/onlineStore/resources/views/home/about.blade.php b/Chapter17-Advanced/onlineStore/resources/views/home/about.blade.php deleted file mode 100644 index f79abf3..0000000 --- a/Chapter17-Advanced/onlineStore/resources/views/home/about.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
-
-
-

{{ $viewData["description"] }}

-
-
-

{{ $viewData["author"] }}

-
-
-
-@endsection diff --git a/Chapter17-Advanced/onlineStore/resources/views/home/index.blade.php b/Chapter17-Advanced/onlineStore/resources/views/home/index.blade.php deleted file mode 100644 index 1affb20..0000000 --- a/Chapter17-Advanced/onlineStore/resources/views/home/index.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('content') -
-
- -
-
- -
-
- -
-
-@endsection diff --git a/Chapter17-Advanced/onlineStore/resources/views/layouts/admin.blade.php b/Chapter17-Advanced/onlineStore/resources/views/layouts/admin.blade.php deleted file mode 100644 index a1a1d57..0000000 --- a/Chapter17-Advanced/onlineStore/resources/views/layouts/admin.blade.php +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - @yield('title', 'Admin - Online Store') - - - -
- - - -
- - -
- @yield('content') -
-
-
- - - - - - - - - diff --git a/Chapter17-Advanced/onlineStore/resources/views/layouts/app.blade.php b/Chapter17-Advanced/onlineStore/resources/views/layouts/app.blade.php deleted file mode 100644 index eee7fcb..0000000 --- a/Chapter17-Advanced/onlineStore/resources/views/layouts/app.blade.php +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - @yield('title', 'Online Store') - - - - - -
-
-

@yield('subtitle', 'A Laravel Online Store')

-
-
- - -
- @yield('content') -
- - - - - - - diff --git a/Chapter17-Advanced/onlineStore/resources/views/product/index.blade.php b/Chapter17-Advanced/onlineStore/resources/views/product/index.blade.php deleted file mode 100644 index c82528a..0000000 --- a/Chapter17-Advanced/onlineStore/resources/views/product/index.blade.php +++ /dev/null @@ -1,18 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
- @foreach ($viewData["products"] as $product) - - @endforeach -
-@endsection diff --git a/Chapter17-Advanced/onlineStore/resources/views/product/show.blade.php b/Chapter17-Advanced/onlineStore/resources/views/product/show.blade.php deleted file mode 100644 index 0adad34..0000000 --- a/Chapter17-Advanced/onlineStore/resources/views/product/show.blade.php +++ /dev/null @@ -1,21 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
-
-
- getImage()) }}" class="img-fluid rounded-start"> -
-
-
-
- {{ $viewData["product"]->getName() }} (${{ $viewData["product"]->getPrice() }}) -
-

{{ $viewData["product"]->getDescription() }}

-

Add to Cart

-
-
-
-
-@endsection diff --git a/Chapter17-Advanced/onlineStore/resources/views/welcome.blade.php b/Chapter17-Advanced/onlineStore/resources/views/welcome.blade.php deleted file mode 100644 index c587c72..0000000 --- a/Chapter17-Advanced/onlineStore/resources/views/welcome.blade.php +++ /dev/null @@ -1,7 +0,0 @@ -@extends('layouts.app') -@section('title', 'Home Page - Online Store') -@section('content') -
- Welcome to the application -
-@endsection \ No newline at end of file diff --git a/Chapter17-Advanced/onlineStore/routes/api.php b/Chapter17-Advanced/onlineStore/routes/api.php deleted file mode 100644 index eb6fa48..0000000 --- a/Chapter17-Advanced/onlineStore/routes/api.php +++ /dev/null @@ -1,19 +0,0 @@ -get('/user', function (Request $request) { - return $request->user(); -}); diff --git a/Chapter17-Advanced/onlineStore/routes/channels.php b/Chapter17-Advanced/onlineStore/routes/channels.php deleted file mode 100644 index 5d451e1..0000000 --- a/Chapter17-Advanced/onlineStore/routes/channels.php +++ /dev/null @@ -1,18 +0,0 @@ -id === (int) $id; -}); diff --git a/Chapter17-Advanced/onlineStore/routes/console.php b/Chapter17-Advanced/onlineStore/routes/console.php deleted file mode 100644 index e05f4c9..0000000 --- a/Chapter17-Advanced/onlineStore/routes/console.php +++ /dev/null @@ -1,19 +0,0 @@ -comment(Inspiring::quote()); -})->purpose('Display an inspiring quote'); diff --git a/Chapter17-Advanced/onlineStore/routes/web.php b/Chapter17-Advanced/onlineStore/routes/web.php deleted file mode 100644 index e1829ed..0000000 --- a/Chapter17-Advanced/onlineStore/routes/web.php +++ /dev/null @@ -1,22 +0,0 @@ -name("home.index"); -Route::get('/about', 'App\Http\Controllers\HomeController@about')->name("home.about"); -Route::get('/products', 'App\Http\Controllers\ProductController@index')->name("product.index"); -Route::get('/products/{id}', 'App\Http\Controllers\ProductController@show')->name("product.show"); -Route::get('/admin', 'App\Http\Controllers\Admin\AdminHomeController@index')->name("admin.home.index"); -Route::get('/admin/products', 'App\Http\Controllers\Admin\AdminProductController@index')->name("admin.product.index"); -Route::post('/admin/products/store', 'App\Http\Controllers\Admin\AdminProductController@store')->name("admin.product.store"); diff --git a/Chapter17-Advanced/onlineStore/storage/app/.gitignore b/Chapter17-Advanced/onlineStore/storage/app/.gitignore deleted file mode 100644 index 8f4803c..0000000 --- a/Chapter17-Advanced/onlineStore/storage/app/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!public/ -!.gitignore diff --git a/Chapter17-Advanced/onlineStore/storage/app/public/.gitignore b/Chapter17-Advanced/onlineStore/storage/app/public/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter17-Advanced/onlineStore/storage/app/public/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter17-Advanced/onlineStore/storage/framework/.gitignore b/Chapter17-Advanced/onlineStore/storage/framework/.gitignore deleted file mode 100644 index 05c4471..0000000 --- a/Chapter17-Advanced/onlineStore/storage/framework/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -compiled.php -config.php -down -events.scanned.php -maintenance.php -routes.php -routes.scanned.php -schedule-* -services.json diff --git a/Chapter17-Advanced/onlineStore/storage/framework/cache/.gitignore b/Chapter17-Advanced/onlineStore/storage/framework/cache/.gitignore deleted file mode 100644 index 01e4a6c..0000000 --- a/Chapter17-Advanced/onlineStore/storage/framework/cache/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!data/ -!.gitignore diff --git a/Chapter17-Advanced/onlineStore/storage/framework/cache/data/.gitignore b/Chapter17-Advanced/onlineStore/storage/framework/cache/data/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter17-Advanced/onlineStore/storage/framework/cache/data/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter17-Advanced/onlineStore/storage/framework/sessions/.gitignore b/Chapter17-Advanced/onlineStore/storage/framework/sessions/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter17-Advanced/onlineStore/storage/framework/sessions/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter17-Advanced/onlineStore/storage/framework/testing/.gitignore b/Chapter17-Advanced/onlineStore/storage/framework/testing/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter17-Advanced/onlineStore/storage/framework/testing/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter17-Advanced/onlineStore/storage/framework/views/.gitignore b/Chapter17-Advanced/onlineStore/storage/framework/views/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter17-Advanced/onlineStore/storage/framework/views/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter17-Advanced/onlineStore/storage/logs/.gitignore b/Chapter17-Advanced/onlineStore/storage/logs/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter17-Advanced/onlineStore/storage/logs/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter17-Advanced/onlineStore/tests/CreatesApplication.php b/Chapter17-Advanced/onlineStore/tests/CreatesApplication.php deleted file mode 100644 index 547152f..0000000 --- a/Chapter17-Advanced/onlineStore/tests/CreatesApplication.php +++ /dev/null @@ -1,22 +0,0 @@ -make(Kernel::class)->bootstrap(); - - return $app; - } -} diff --git a/Chapter17-Advanced/onlineStore/tests/Feature/ExampleTest.php b/Chapter17-Advanced/onlineStore/tests/Feature/ExampleTest.php deleted file mode 100644 index 78ccc21..0000000 --- a/Chapter17-Advanced/onlineStore/tests/Feature/ExampleTest.php +++ /dev/null @@ -1,21 +0,0 @@ -get('/'); - - $response->assertStatus(200); - } -} diff --git a/Chapter17-Advanced/onlineStore/tests/TestCase.php b/Chapter17-Advanced/onlineStore/tests/TestCase.php deleted file mode 100644 index 2932d4a..0000000 --- a/Chapter17-Advanced/onlineStore/tests/TestCase.php +++ /dev/null @@ -1,10 +0,0 @@ -assertTrue(true); - } -} diff --git a/Chapter17-Advanced/onlineStore/webpack.mix.js b/Chapter17-Advanced/onlineStore/webpack.mix.js deleted file mode 100644 index 2a22dc1..0000000 --- a/Chapter17-Advanced/onlineStore/webpack.mix.js +++ /dev/null @@ -1,17 +0,0 @@ -const mix = require('laravel-mix'); - -/* - |-------------------------------------------------------------------------- - | Mix Asset Management - |-------------------------------------------------------------------------- - | - | Mix provides a clean, fluent API for defining some Webpack build steps - | for your Laravel applications. By default, we are compiling the CSS - | file for the application as well as bundling up all the JS files. - | - */ - -mix.js('resources/js/app.js', 'public/js') - .postCss('resources/css/app.css', 'public/css', [ - // - ]); diff --git a/Chapter17/onlineStore/.editorconfig b/Chapter17/onlineStore/.editorconfig deleted file mode 100644 index 1671c9b..0000000 --- a/Chapter17/onlineStore/.editorconfig +++ /dev/null @@ -1,18 +0,0 @@ -root = true - -[*] -charset = utf-8 -end_of_line = lf -insert_final_newline = true -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true - -[*.md] -trim_trailing_whitespace = false - -[*.{yml,yaml}] -indent_size = 2 - -[docker-compose.yml] -indent_size = 4 diff --git a/Chapter17/onlineStore/.env.example b/Chapter17/onlineStore/.env.example deleted file mode 100644 index 8510237..0000000 --- a/Chapter17/onlineStore/.env.example +++ /dev/null @@ -1,52 +0,0 @@ -APP_NAME=Laravel -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=laravel -DB_USERNAME=root -DB_PASSWORD= - -BROADCAST_DRIVER=log -CACHE_DRIVER=file -FILESYSTEM_DISK=local -QUEUE_CONNECTION=sync -SESSION_DRIVER=file -SESSION_LIFETIME=120 - -MEMCACHED_HOST=127.0.0.1 - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -MAIL_MAILER=smtp -MAIL_HOST=mailhog -MAIL_PORT=1025 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS=null -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_APP_CLUSTER=mt1 - -MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/Chapter17/onlineStore/.gitattributes b/Chapter17/onlineStore/.gitattributes deleted file mode 100644 index 510d996..0000000 --- a/Chapter17/onlineStore/.gitattributes +++ /dev/null @@ -1,10 +0,0 @@ -* text=auto - -*.blade.php diff=html -*.css diff=css -*.html diff=html -*.md diff=markdown -*.php diff=php - -/.github export-ignore -CHANGELOG.md export-ignore diff --git a/Chapter17/onlineStore/.gitignore b/Chapter17/onlineStore/.gitignore deleted file mode 100644 index eb003b0..0000000 --- a/Chapter17/onlineStore/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -/node_modules -/public/hot -/public/storage -/storage/*.key -/vendor -.env -.env.backup -.phpunit.result.cache -docker-compose.override.yml -Homestead.json -Homestead.yaml -npm-debug.log -yarn-error.log -/.idea -/.vscode diff --git a/Chapter17/onlineStore/.styleci.yml b/Chapter17/onlineStore/.styleci.yml deleted file mode 100644 index 679a631..0000000 --- a/Chapter17/onlineStore/.styleci.yml +++ /dev/null @@ -1,13 +0,0 @@ -php: - preset: laravel - version: 8 - disabled: - - no_unused_imports - finder: - not-name: - - index.php -js: - finder: - not-name: - - webpack.mix.js -css: true diff --git a/Chapter17/onlineStore/README.md b/Chapter17/onlineStore/README.md deleted file mode 100644 index f171eca..0000000 --- a/Chapter17/onlineStore/README.md +++ /dev/null @@ -1,64 +0,0 @@ -

- -

-Build Status -Total Downloads -Latest Stable Version -License -

- -## About Laravel - -Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as: - -- [Simple, fast routing engine](https://laravel.com/docs/routing). -- [Powerful dependency injection container](https://laravel.com/docs/container). -- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage. -- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent). -- Database agnostic [schema migrations](https://laravel.com/docs/migrations). -- [Robust background job processing](https://laravel.com/docs/queues). -- [Real-time event broadcasting](https://laravel.com/docs/broadcasting). - -Laravel is accessible, powerful, and provides tools required for large, robust applications. - -## Learning Laravel - -Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework. - -If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 2000 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library. - -## Laravel Sponsors - -We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell). - -### Premium Partners - -- **[Vehikl](https://vehikl.com/)** -- **[Tighten Co.](https://tighten.co)** -- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** -- **[64 Robots](https://64robots.com)** -- **[Cubet Techno Labs](https://cubettech.com)** -- **[Cyber-Duck](https://cyber-duck.co.uk)** -- **[Many](https://www.many.co.uk)** -- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)** -- **[DevSquad](https://devsquad.com)** -- **[Curotec](https://www.curotec.com/services/technologies/laravel/)** -- **[OP.GG](https://op.gg)** -- **[WebReinvent](https://webreinvent.com/?utm_source=laravel&utm_medium=github&utm_campaign=patreon-sponsors)** -- **[Lendio](https://lendio.com)** - -## Contributing - -Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions). - -## Code of Conduct - -In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). - -## Security Vulnerabilities - -If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed. - -## License - -The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). diff --git a/Chapter17/onlineStore/app/Console/Kernel.php b/Chapter17/onlineStore/app/Console/Kernel.php deleted file mode 100644 index d8bc1d2..0000000 --- a/Chapter17/onlineStore/app/Console/Kernel.php +++ /dev/null @@ -1,32 +0,0 @@ -command('inspire')->hourly(); - } - - /** - * Register the commands for the application. - * - * @return void - */ - protected function commands() - { - $this->load(__DIR__.'/Commands'); - - require base_path('routes/console.php'); - } -} diff --git a/Chapter17/onlineStore/app/Exceptions/Handler.php b/Chapter17/onlineStore/app/Exceptions/Handler.php deleted file mode 100644 index 8e7fbd1..0000000 --- a/Chapter17/onlineStore/app/Exceptions/Handler.php +++ /dev/null @@ -1,41 +0,0 @@ -> - */ - protected $dontReport = [ - // - ]; - - /** - * A list of the inputs that are never flashed for validation exceptions. - * - * @var array - */ - protected $dontFlash = [ - 'current_password', - 'password', - 'password_confirmation', - ]; - - /** - * Register the exception handling callbacks for the application. - * - * @return void - */ - public function register() - { - $this->reportable(function (Throwable $e) { - // - }); - } -} diff --git a/Chapter17/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php b/Chapter17/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php deleted file mode 100644 index cd78cb3..0000000 --- a/Chapter17/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php +++ /dev/null @@ -1,16 +0,0 @@ -with("viewData", $viewData); - } -} diff --git a/Chapter17/onlineStore/app/Http/Controllers/Admin/AdminProductController.php b/Chapter17/onlineStore/app/Http/Controllers/Admin/AdminProductController.php deleted file mode 100644 index 313ced3..0000000 --- a/Chapter17/onlineStore/app/Http/Controllers/Admin/AdminProductController.php +++ /dev/null @@ -1,37 +0,0 @@ -with("viewData", $viewData); - } - - public function store(Request $request) - { - $request->validate([ - "name" => "required|max:255", - "description" => "required", - "price" => "required|numeric|gt:0", - 'image' => 'image', - ]); - - $newProduct = new Product(); - $newProduct->setName($request->input('name')); - $newProduct->setDescription($request->input('description')); - $newProduct->setPrice($request->input('price')); - $newProduct->setImage("game.png"); - $newProduct->save(); - - return back(); - } -} diff --git a/Chapter17/onlineStore/app/Http/Controllers/Controller.php b/Chapter17/onlineStore/app/Http/Controllers/Controller.php deleted file mode 100644 index a0a2a8a..0000000 --- a/Chapter17/onlineStore/app/Http/Controllers/Controller.php +++ /dev/null @@ -1,13 +0,0 @@ -with("viewData", $viewData); - } - - public function about() - { - $viewData = []; - $viewData["title"] = "About us - Online Store"; - $viewData["subtitle"] = "About us"; - $viewData["description"] = "This is an about page ..."; - $viewData["author"] = "Developed by: Your Name"; - return view('home.about')->with("viewData", $viewData); - } -} diff --git a/Chapter17/onlineStore/app/Http/Controllers/ProductController.php b/Chapter17/onlineStore/app/Http/Controllers/ProductController.php deleted file mode 100644 index d27a3a3..0000000 --- a/Chapter17/onlineStore/app/Http/Controllers/ProductController.php +++ /dev/null @@ -1,29 +0,0 @@ -with("viewData", $viewData); - } - - public function show($id) - { - $viewData = []; - $product = Product::findOrFail($id); - $viewData["title"] = $product->getName()." - Online Store"; - $viewData["subtitle"] = $product->getName()." - Product information"; - $viewData["product"] = $product; - return view('product.show')->with("viewData", $viewData); - } -} diff --git a/Chapter17/onlineStore/app/Http/Kernel.php b/Chapter17/onlineStore/app/Http/Kernel.php deleted file mode 100644 index d3722c2..0000000 --- a/Chapter17/onlineStore/app/Http/Kernel.php +++ /dev/null @@ -1,67 +0,0 @@ - - */ - protected $middleware = [ - // \App\Http\Middleware\TrustHosts::class, - \App\Http\Middleware\TrustProxies::class, - \Fruitcake\Cors\HandleCors::class, - \App\Http\Middleware\PreventRequestsDuringMaintenance::class, - \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, - \App\Http\Middleware\TrimStrings::class, - \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, - ]; - - /** - * The application's route middleware groups. - * - * @var array> - */ - protected $middlewareGroups = [ - 'web' => [ - \App\Http\Middleware\EncryptCookies::class, - \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, - \Illuminate\Session\Middleware\StartSession::class, - // \Illuminate\Session\Middleware\AuthenticateSession::class, - \Illuminate\View\Middleware\ShareErrorsFromSession::class, - \App\Http\Middleware\VerifyCsrfToken::class, - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - - 'api' => [ - // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, - 'throttle:api', - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - ]; - - /** - * The application's route middleware. - * - * These middleware may be assigned to groups or used individually. - * - * @var array - */ - protected $routeMiddleware = [ - 'auth' => \App\Http\Middleware\Authenticate::class, - 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::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, - 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, - 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, - 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, - ]; -} diff --git a/Chapter17/onlineStore/app/Http/Middleware/Authenticate.php b/Chapter17/onlineStore/app/Http/Middleware/Authenticate.php deleted file mode 100644 index 704089a..0000000 --- a/Chapter17/onlineStore/app/Http/Middleware/Authenticate.php +++ /dev/null @@ -1,21 +0,0 @@ -expectsJson()) { - return route('login'); - } - } -} diff --git a/Chapter17/onlineStore/app/Http/Middleware/EncryptCookies.php b/Chapter17/onlineStore/app/Http/Middleware/EncryptCookies.php deleted file mode 100644 index 867695b..0000000 --- a/Chapter17/onlineStore/app/Http/Middleware/EncryptCookies.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter17/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/Chapter17/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php deleted file mode 100644 index 74cbd9a..0000000 --- a/Chapter17/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter17/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php b/Chapter17/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php deleted file mode 100644 index a2813a0..0000000 --- a/Chapter17/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php +++ /dev/null @@ -1,32 +0,0 @@ -check()) { - return redirect(RouteServiceProvider::HOME); - } - } - - return $next($request); - } -} diff --git a/Chapter17/onlineStore/app/Http/Middleware/TrimStrings.php b/Chapter17/onlineStore/app/Http/Middleware/TrimStrings.php deleted file mode 100644 index 88cadca..0000000 --- a/Chapter17/onlineStore/app/Http/Middleware/TrimStrings.php +++ /dev/null @@ -1,19 +0,0 @@ - - */ - protected $except = [ - 'current_password', - 'password', - 'password_confirmation', - ]; -} diff --git a/Chapter17/onlineStore/app/Http/Middleware/TrustHosts.php b/Chapter17/onlineStore/app/Http/Middleware/TrustHosts.php deleted file mode 100644 index 7186414..0000000 --- a/Chapter17/onlineStore/app/Http/Middleware/TrustHosts.php +++ /dev/null @@ -1,20 +0,0 @@ - - */ - public function hosts() - { - return [ - $this->allSubdomainsOfApplicationUrl(), - ]; - } -} diff --git a/Chapter17/onlineStore/app/Http/Middleware/TrustProxies.php b/Chapter17/onlineStore/app/Http/Middleware/TrustProxies.php deleted file mode 100644 index 3391630..0000000 --- a/Chapter17/onlineStore/app/Http/Middleware/TrustProxies.php +++ /dev/null @@ -1,28 +0,0 @@ -|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/Chapter17/onlineStore/app/Http/Middleware/VerifyCsrfToken.php b/Chapter17/onlineStore/app/Http/Middleware/VerifyCsrfToken.php deleted file mode 100644 index 9e86521..0000000 --- a/Chapter17/onlineStore/app/Http/Middleware/VerifyCsrfToken.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter17/onlineStore/app/Models/Product.php b/Chapter17/onlineStore/app/Models/Product.php deleted file mode 100644 index 84efbb6..0000000 --- a/Chapter17/onlineStore/app/Models/Product.php +++ /dev/null @@ -1,89 +0,0 @@ -attributes['id'] - int - contains the product primary key (id) - * $this->attributes['name'] - string - contains the product name - * $this->attributes['description'] - string - contains the product description - * $this->attributes['image'] - string - contains the product image - * $this->attributes['price'] - int - contains the product price - * $this->attributes['created_at'] - timestamp - contains the product creation date - * $this->attributes['updated_at'] - timestamp - contains the product update date - */ - - public function getId() - { - return $this->attributes['id']; - } - - public function setId($id) - { - $this->attributes['id'] = $id; - } - - public function getName() - { - return $this->attributes['name']; - } - - public function setName($name) - { - $this->attributes['name'] = $name; - } - - public function getDescription() - { - return $this->attributes['description']; - } - - public function setDescription($description) - { - $this->attributes['description'] = $description; - } - - public function getImage() - { - return $this->attributes['image']; - } - - public function setImage($image) - { - $this->attributes['image'] = $image; - } - - public function getPrice() - { - return $this->attributes['price']; - } - - public function setPrice($price) - { - $this->attributes['price'] = $price; - } - - public function getCreatedAt() - { - return $this->attributes['created_at']; - } - - public function setCreatedAt($createdAt) - { - $this->attributes['created_at'] = $createdAt; - } - - public function getUpdatedAt() - { - return $this->attributes['updated_at']; - } - - public function setUpdatedAt($updatedAt) - { - $this->attributes['updated_at'] = $updatedAt; - } -} diff --git a/Chapter17/onlineStore/app/Models/User.php b/Chapter17/onlineStore/app/Models/User.php deleted file mode 100644 index 8996368..0000000 --- a/Chapter17/onlineStore/app/Models/User.php +++ /dev/null @@ -1,44 +0,0 @@ - - */ - 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', - ]; -} diff --git a/Chapter17/onlineStore/app/Providers/AppServiceProvider.php b/Chapter17/onlineStore/app/Providers/AppServiceProvider.php deleted file mode 100644 index ee8ca5b..0000000 --- a/Chapter17/onlineStore/app/Providers/AppServiceProvider.php +++ /dev/null @@ -1,28 +0,0 @@ - - */ - protected $policies = [ - // 'App\Models\Model' => 'App\Policies\ModelPolicy', - ]; - - /** - * Register any authentication / authorization services. - * - * @return void - */ - public function boot() - { - $this->registerPolicies(); - - // - } -} diff --git a/Chapter17/onlineStore/app/Providers/BroadcastServiceProvider.php b/Chapter17/onlineStore/app/Providers/BroadcastServiceProvider.php deleted file mode 100644 index 395c518..0000000 --- a/Chapter17/onlineStore/app/Providers/BroadcastServiceProvider.php +++ /dev/null @@ -1,21 +0,0 @@ -> - */ - protected $listen = [ - Registered::class => [ - SendEmailVerificationNotification::class, - ], - ]; - - /** - * Register any events for your application. - * - * @return void - */ - public function boot() - { - // - } -} diff --git a/Chapter17/onlineStore/app/Providers/RouteServiceProvider.php b/Chapter17/onlineStore/app/Providers/RouteServiceProvider.php deleted file mode 100644 index 7c17d1f..0000000 --- a/Chapter17/onlineStore/app/Providers/RouteServiceProvider.php +++ /dev/null @@ -1,63 +0,0 @@ -configureRateLimiting(); - - $this->routes(function () { - Route::prefix('api') - ->middleware('api') - ->namespace($this->namespace) - ->group(base_path('routes/api.php')); - - Route::middleware('web') - ->namespace($this->namespace) - ->group(base_path('routes/web.php')); - }); - } - - /** - * Configure the rate limiters for the application. - * - * @return void - */ - protected function configureRateLimiting() - { - RateLimiter::for('api', function (Request $request) { - return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); - }); - } -} diff --git a/Chapter17/onlineStore/artisan b/Chapter17/onlineStore/artisan deleted file mode 100644 index 67a3329..0000000 --- a/Chapter17/onlineStore/artisan +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env php -make(Illuminate\Contracts\Console\Kernel::class); - -$status = $kernel->handle( - $input = new Symfony\Component\Console\Input\ArgvInput, - new Symfony\Component\Console\Output\ConsoleOutput -); - -/* -|-------------------------------------------------------------------------- -| Shutdown The Application -|-------------------------------------------------------------------------- -| -| Once Artisan has finished running, we will fire off the shutdown events -| so that any final work may be done by the application before we shut -| down the process. This is the last thing to happen to the request. -| -*/ - -$kernel->terminate($input, $status); - -exit($status); diff --git a/Chapter17/onlineStore/bootstrap/app.php b/Chapter17/onlineStore/bootstrap/app.php deleted file mode 100644 index 037e17d..0000000 --- a/Chapter17/onlineStore/bootstrap/app.php +++ /dev/null @@ -1,55 +0,0 @@ -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/Chapter17/onlineStore/bootstrap/cache/.gitignore b/Chapter17/onlineStore/bootstrap/cache/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter17/onlineStore/bootstrap/cache/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter17/onlineStore/composer.json b/Chapter17/onlineStore/composer.json deleted file mode 100644 index f0f2eda..0000000 --- a/Chapter17/onlineStore/composer.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "name": "laravel/laravel", - "type": "project", - "description": "The Laravel Framework.", - "keywords": ["framework", "laravel"], - "license": "MIT", - "require": { - "php": "^8.0", - "fruitcake/laravel-cors": "^2.0.5", - "guzzlehttp/guzzle": "^7.2", - "laravel/framework": "^9.0", - "laravel/sanctum": "^2.14", - "laravel/tinker": "^2.7" - }, - "require-dev": { - "fakerphp/faker": "^1.9.1", - "laravel/sail": "^1.0.1", - "mockery/mockery": "^1.4.4", - "nunomaduro/collision": "^6.1", - "phpunit/phpunit": "^9.5.10", - "spatie/laravel-ignition": "^1.0", - "squizlabs/php_codesniffer": "^3.6" - }, - "autoload": { - "psr-4": { - "App\\": "app/", - "Database\\Factories\\": "database/factories/", - "Database\\Seeders\\": "database/seeders/" - } - }, - "autoload-dev": { - "psr-4": { - "Tests\\": "tests/" - } - }, - "scripts": { - "post-autoload-dump": [ - "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", - "@php artisan package:discover --ansi" - ], - "post-update-cmd": [ - "@php artisan vendor:publish --tag=laravel-assets --ansi --force" - ], - "post-root-package-install": [ - "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" - ], - "post-create-project-cmd": [ - "@php artisan key:generate --ansi" - ] - }, - "extra": { - "laravel": { - "dont-discover": [] - } - }, - "config": { - "optimize-autoloader": true, - "preferred-install": "dist", - "sort-packages": true - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/Chapter17/onlineStore/composer.lock b/Chapter17/onlineStore/composer.lock deleted file mode 100644 index b55e897..0000000 --- a/Chapter17/onlineStore/composer.lock +++ /dev/null @@ -1,7860 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "8bdcc31974d0d5a00db79c82827c8815", - "packages": [ - { - "name": "asm89/stack-cors", - "version": "v2.1.1", - "source": { - "type": "git", - "url": "https://github.com/asm89/stack-cors.git", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4|^5|^6" - }, - "require-dev": { - "phpunit/phpunit": "^7|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "psr-4": { - "Asm89\\Stack\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alexander", - "email": "iam.asm89@gmail.com" - } - ], - "description": "Cross-origin resource sharing library and stack middleware", - "homepage": "https://github.com/asm89/stack-cors", - "keywords": [ - "cors", - "stack" - ], - "support": { - "issues": "https://github.com/asm89/stack-cors/issues", - "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" - }, - "time": "2022-01-18T09:12:03+00:00" - }, - { - "name": "brick/math", - "version": "0.9.3", - "source": { - "type": "git", - "url": "https://github.com/brick/math.git", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", - "vimeo/psalm": "4.9.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Brick\\Math\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Arbitrary-precision arithmetic library", - "keywords": [ - "Arbitrary-precision", - "BigInteger", - "BigRational", - "arithmetic", - "bigdecimal", - "bignum", - "brick", - "math" - ], - "support": { - "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.9.3" - }, - "funding": [ - { - "url": "https://github.com/BenMorel", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/brick/math", - "type": "tidelift" - } - ], - "time": "2021-08-15T20:50:18+00:00" - }, - { - "name": "dflydev/dot-access-data", - "version": "v3.0.1", - "source": { - "type": "git", - "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c", - "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": "^3.14" - }, - "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.1" - }, - "time": "2021-08-13T13:06:58+00:00" - }, - { - "name": "doctrine/inflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "vimeo/psalm": "^4.10" - }, - "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.4" - }, - "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": "2021-10-22T20:16:43+00:00" - }, - { - "name": "doctrine/lexer", - "version": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" - } - }, - "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/1.2.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%2Flexer", - "type": "tidelift" - } - ], - "time": "2022-01-12T08:27:12+00:00" - }, - { - "name": "dragonmantank/cron-expression", - "version": "v3.3.1", - "source": { - "type": "git", - "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "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.1" - }, - "funding": [ - { - "url": "https://github.com/dragonmantank", - "type": "github" - } - ], - "time": "2022-01-18T15:43:28+00:00" - }, - { - "name": "egulias/email-validator", - "version": "3.1.2", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ee0db30118f661fb166bcffbf5d82032df484697", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^1.2", - "php": ">=7.2", - "symfony/polyfill-intl-idn": "^1.15" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^8.5.8|^9.3.3", - "vimeo/psalm": "^4" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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/3.1.2" - }, - "funding": [ - { - "url": "https://github.com/egulias", - "type": "github" - } - ], - "time": "2021-10-11T09:18:27+00:00" - }, - { - "name": "fruitcake/laravel-cors", - "version": "v2.0.5", - "source": { - "type": "git", - "url": "https://github.com/fruitcake/laravel-cors.git", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "shasum": "" - }, - "require": { - "asm89/stack-cors": "^2.0.1", - "illuminate/contracts": "^6|^7|^8|^9", - "illuminate/support": "^6|^7|^8|^9", - "php": ">=7.2", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4.3.4|^5|^6" - }, - "require-dev": { - "laravel/framework": "^6|^7.24|^8", - "orchestra/testbench-dusk": "^4|^5|^6|^7", - "phpunit/phpunit": "^6|^7|^8|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - }, - "laravel": { - "providers": [ - "Fruitcake\\Cors\\CorsServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Fruitcake\\Cors\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fruitcake", - "homepage": "https://fruitcake.nl" - }, - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", - "keywords": [ - "api", - "cors", - "crossdomain", - "laravel" - ], - "support": { - "issues": "https://github.com/fruitcake/laravel-cors/issues", - "source": "https://github.com/fruitcake/laravel-cors/tree/v2.0.5" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "time": "2022-01-03T14:53:04+00:00" - }, - { - "name": "graham-campbell/result-type", - "version": "v1.0.4", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "0690bde05318336c7221785f2a932467f98b64ca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/0690bde05318336c7221785f2a932467f98b64ca", - "reference": "0690bde05318336c7221785f2a932467f98b64ca", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "phpoption/phpoption": "^1.8" - }, - "require-dev": { - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", - "type": "tidelift" - } - ], - "time": "2021-11-21T21:41:47+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "7.4.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.8.3 || ^2.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.4.1", - "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.5 || ^9.3.5", - "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": { - "branch-alias": { - "dev-master": "7.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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.4.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": "2021-12-06T18:43:05+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "1.5.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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/1.5.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "time": "2021-10-22T20:56:57+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.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.4.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.8 || ^9.3.10" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "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.1.0" - }, - "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": "2021-10-06T17:43:30+00:00" - }, - { - "name": "laravel/framework", - "version": "v9.0.1", - "source": { - "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "shasum": "" - }, - "require": { - "doctrine/inflector": "^2.0", - "dragonmantank/cron-expression": "^3.1", - "egulias/email-validator": "^3.1", - "ext-mbstring": "*", - "ext-openssl": "*", - "laravel/serializable-closure": "^1.0", - "league/commonmark": "^2.2", - "league/flysystem": "^3.0", - "monolog/monolog": "^2.0", - "nesbot/carbon": "^2.53.1", - "php": "^8.0.2", - "psr/container": "^1.1.1|^2.0.1", - "psr/log": "^1.0|^2.0|^3.0", - "psr/simple-cache": "^1.0|^2.0|^3.0", - "ramsey/uuid": "^4.2.2", - "symfony/console": "^6.0", - "symfony/error-handler": "^6.0", - "symfony/finder": "^6.0", - "symfony/http-foundation": "^6.0", - "symfony/http-kernel": "^6.0", - "symfony/mailer": "^6.0", - "symfony/mime": "^6.0", - "symfony/process": "^6.0", - "symfony/routing": "^6.0", - "symfony/var-dumper": "^6.0", - "tijsverkoyen/css-to-inline-styles": "^2.2.2", - "vlucas/phpdotenv": "^5.4.1", - "voku/portable-ascii": "^2.0" - }, - "conflict": { - "tightenco/collect": "<5.5.33" - }, - "provide": { - "psr/container-implementation": "1.1|2.0", - "psr/simple-cache-implementation": "1.0|2.0|3.0" - }, - "replace": { - "illuminate/auth": "self.version", - "illuminate/broadcasting": "self.version", - "illuminate/bus": "self.version", - "illuminate/cache": "self.version", - "illuminate/collections": "self.version", - "illuminate/conditionable": "self.version", - "illuminate/config": "self.version", - "illuminate/console": "self.version", - "illuminate/container": "self.version", - "illuminate/contracts": "self.version", - "illuminate/cookie": "self.version", - "illuminate/database": "self.version", - "illuminate/encryption": "self.version", - "illuminate/events": "self.version", - "illuminate/filesystem": "self.version", - "illuminate/hashing": "self.version", - "illuminate/http": "self.version", - "illuminate/log": "self.version", - "illuminate/macroable": "self.version", - "illuminate/mail": "self.version", - "illuminate/notifications": "self.version", - "illuminate/pagination": "self.version", - "illuminate/pipeline": "self.version", - "illuminate/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": { - "aws/aws-sdk-php": "^3.198.1", - "doctrine/dbal": "^2.13.3|^3.1.4", - "fakerphp/faker": "^1.9.2", - "guzzlehttp/guzzle": "^7.2", - "league/flysystem-aws-s3-v3": "^3.0", - "league/flysystem-ftp": "^3.0", - "league/flysystem-sftp-v3": "^3.0", - "mockery/mockery": "^1.4.4", - "orchestra/testbench-core": "^7.0", - "pda/pheanstalk": "^4.0", - "phpstan/phpstan": "^1.0", - "phpunit/phpunit": "^9.5.8", - "predis/predis": "^1.1.9", - "symfony/amazon-mailer": "^6.0", - "symfony/cache": "^6.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.198.1).", - "brianium/paratest": "Required to run tests in parallel (^6.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", - "ext-bcmath": "Required to use the multiple_of validation rule.", - "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.", - "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.2).", - "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-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", - "mockery/mockery": "Required to use mocking (^1.4.4).", - "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).", - "predis/predis": "Required to use the predis connector (^1.1.9).", - "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.0).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^6.0).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.0).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.0).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.0).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.x-dev" - } - }, - "autoload": { - "files": [ - "src/Illuminate/Collections/helpers.php", - "src/Illuminate/Events/functions.php", - "src/Illuminate/Foundation/helpers.php", - "src/Illuminate/Support/helpers.php" - ], - "psr-4": { - "Illuminate\\": "src/Illuminate/", - "Illuminate\\Support\\": [ - "src/Illuminate/Macroable/", - "src/Illuminate/Collections/", - "src/Illuminate/Conditionable/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Laravel Framework.", - "homepage": "https://laravel.com", - "keywords": [ - "framework", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2022-02-09T15:00:05+00:00" - }, - { - "name": "laravel/sanctum", - "version": "v2.14.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/sanctum.git", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/0647a87140c7522e75826cffcadb3ad6e01f71e9", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/contracts": "^6.9|^7.0|^8.0|^9.0", - "illuminate/database": "^6.9|^7.0|^8.0|^9.0", - "illuminate/support": "^6.9|^7.0|^8.0|^9.0", - "php": "^7.2|^8.0" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0", - "phpunit/phpunit": "^8.0|^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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": "2022-01-12T15:07:43+00:00" - }, - { - "name": "laravel/serializable-closure", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/serializable-closure.git", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/65c9faf50d567b65d81764a44526545689e3fe63", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "pestphp/pest": "^1.18", - "phpstan/phpstan": "^0.12.98", - "symfony/var-dumper": "^5.3" - }, - "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": "2022-02-01T16:29:39+00:00" - }, - { - "name": "laravel/tinker", - "version": "v2.7.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/tinker.git", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/5f2f9815b7631b9f586a3de7933c25f9327d4073", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073", - "shasum": "" - }, - "require": { - "illuminate/console": "^6.0|^7.0|^8.0|^9.0", - "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.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", - "phpunit/phpunit": "^8.5.8|^9.3.3" - }, - "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.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.7.0" - }, - "time": "2022-01-10T08:52:49+00:00" - }, - { - "name": "league/commonmark", - "version": "2.2.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/commonmark.git", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "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.15" - }, - "require-dev": { - "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.0", - "commonmark/commonmark.js": "0.30.0", - "composer/package-versions-deprecated": "^1.8", - "erusev/parsedown": "^1.0", - "ext-json": "*", - "github/gfm": "0.29.0", - "michelf/php-markdown": "^1.4", - "phpstan/phpstan": "^0.12.88 || ^1.0.0", - "phpunit/phpunit": "^9.5.5", - "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", - "unleashedtech/php-coding-standard": "^3.1", - "vimeo/psalm": "^4.7.3" - }, - "suggest": { - "symfony/yaml": "v2.3+ required if using the Front Matter extension" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.3-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": "2022-01-25T14:37:33+00:00" - }, - { - "name": "league/config", - "version": "v1.1.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/config.git", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/config/zipball/a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^3.0.1", - "nette/schema": "^1.2", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.90", - "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": "2021-08-14T12:15:32+00:00" - }, - { - "name": "league/flysystem", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9f8b4260031bfef5497477da53dd57b2aaff0e06", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06", - "shasum": "" - }, - "require": { - "ext-json": "*", - "league/mime-type-detection": "^1.0.0", - "php": "^8.0.2" - }, - "conflict": { - "guzzlehttp/guzzle": "<7.0", - "guzzlehttp/ringphp": "<1.1.1", - "symfony/http-client": "<5.2" - }, - "require-dev": { - "async-aws/s3": "^1.5", - "async-aws/simple-s3": "^1.0", - "aws/aws-sdk-php": "^3.198.1", - "composer/semver": "^3.0", - "ext-fileinfo": "*", - "ext-ftp": "*", - "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.5", - "google/cloud-storage": "^1.23", - "phpseclib/phpseclib": "^2.0", - "phpstan/phpstan": "^0.12.26", - "phpunit/phpunit": "^9.5.11", - "sabre/dav": "^4.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.0.3" - }, - "funding": [ - { - "url": "https://offset.earth/frankdejonge", - "type": "custom" - }, - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2022-01-31T19:41:04+00:00" - }, - { - "name": "league/mime-type-detection", - "version": "1.9.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/aa70e813a6ad3d1558fc927863d47309b4c23e69", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.2", - "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" - }, - "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.9.0" - }, - "funding": [ - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2021-11-21T11:48:40+00:00" - }, - { - "name": "monolog/monolog", - "version": "2.3.5", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd4380d6fc37626e2f799f29d91195040137eba9", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "provide": { - "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7", - "graylog2/gelf-php": "^1.4.2", - "mongodb/mongodb": "^1.8", - "php-amqplib/php-amqplib": "~2.4 || ^3", - "php-console/php-console": "^3.1.3", - "phpspec/prophecy": "^1.6.1", - "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5", - "predis/predis": "^1.1", - "rollbar/rollbar": "^1.3", - "ruflin/elastica": ">=0.90@dev", - "swiftmailer/swiftmailer": "^5.3|^6.0" - }, - "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", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "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": "2.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/2.3.5" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" - } - ], - "time": "2021-10-01T21:08:31+00:00" - }, - { - "name": "nesbot/carbon", - "version": "2.56.0", - "source": { - "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1.8 || ^8.0", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "doctrine/dbal": "^2.0 || ^3.0", - "doctrine/orm": "^2.7", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "phpmd/phpmd": "^2.9", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.54 || ^1.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.14", - "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://opencollective.com/Carbon", - "type": "open_collective" - }, - { - "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", - "type": "tidelift" - } - ], - "time": "2022-01-21T17:08:38+00:00" - }, - { - "name": "nette/schema", - "version": "v1.2.2", - "source": { - "type": "git", - "url": "https://github.com/nette/schema.git", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/9a39cef03a5b34c7de64f551538cbba05c2be5df", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df", - "shasum": "" - }, - "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": ">=7.1 <8.2" - }, - "require-dev": { - "nette/tester": "^2.3 || ^2.4", - "phpstan/phpstan-nette": "^0.12", - "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.2" - }, - "time": "2021-10-15T11:40:02+00:00" - }, - { - "name": "nette/utils", - "version": "v3.2.7", - "source": { - "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/0af4e3de4df9f1543534beab255ccf459e7a2c99", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99", - "shasum": "" - }, - "require": { - "php": ">=7.2 <8.2" - }, - "conflict": { - "nette/di": "<3.0.6" - }, - "require-dev": { - "nette/tester": "~2.0", - "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.3" - }, - "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()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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 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/v3.2.7" - }, - "time": "2022-01-24T11:29:14+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.13.2", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", - "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.13.2" - }, - "time": "2021-11-30T19:35:32+00:00" - }, - { - "name": "phpoption/phpoption", - "version": "1.8.1", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-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.8.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", - "type": "tidelift" - } - ], - "time": "2021-12-04T23:24:31+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.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.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": "http://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/tree/master" - }, - "time": "2020-06-29T06:28:15+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.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": "http://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/master" - }, - "time": "2019-04-30T12:38:16+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.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": "http://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/master" - }, - "time": "2016-08-06T14:39: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.1", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "570292577277f06f590635381a7f761a6cf4f026" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/570292577277f06f590635381a7f761a6cf4f026", - "reference": "570292577277f06f590635381a7f761a6cf4f026", - "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" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "3.17.05.02" - }, - "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.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." - }, - "bin": [ - "bin/psysh" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "0.11.x-dev" - } - }, - "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.1" - }, - "time": "2022-01-03T13:58:38+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": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/ramsey/collection.git", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "shasum": "" - }, - "require": { - "php": "^7.3 || ^8", - "symfony/polyfill-php81": "^1.23" - }, - "require-dev": { - "captainhook/captainhook": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "ergebnis/composer-normalize": "^2.6", - "fakerphp/faker": "^1.5", - "hamcrest/hamcrest-php": "^2", - "jangregor/phpstan-prophecy": "^0.8", - "mockery/mockery": "^1.3", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1", - "phpstan/phpstan": "^0.12.32", - "phpstan/phpstan-mockery": "^0.12.5", - "phpstan/phpstan-phpunit": "^0.12.11", - "phpunit/phpunit": "^8.5 || ^9", - "psy/psysh": "^0.10.4", - "slevomat/coding-standard": "^6.3", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.4" - }, - "type": "library", - "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/1.2.2" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "time": "2021-10-10T03:01:02+00:00" - }, - { - "name": "ramsey/uuid", - "version": "4.2.3", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "shasum": "" - }, - "require": { - "brick/math": "^0.8 || ^0.9", - "ext-json": "*", - "php": "^7.2 || ^8.0", - "ramsey/collection": "^1.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php80": "^1.14" - }, - "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", - "moontoast/math": "^1.1", - "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.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-mockery": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^8.5 || ^9", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" - }, - "suggest": { - "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-ctype": "Enables faster processing of character classification using ctype functions.", - "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": { - "branch-alias": { - "dev-main": "4.x-dev" - }, - "captainhook": { - "force-install": true - } - }, - "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "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.2.3" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2021-09-25T23:10:38+00:00" - }, - { - "name": "symfony/console", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/22e8efd019c3270c4f79376234a3f8752cd25490", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.4|^6.0" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/css-selector", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/1955d595c12c111629cc814d3f2a2ff13580508a", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a", - "shasum": "" - }, - "require": { - "php": ">=8.0.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/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-11-01T23:48:49+00:00" - }, - { - "name": "symfony/error-handler", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/20343b3bad7ebafa38138ddcb97290a24722b57b", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" - }, - "bin": [ - "Resources/bin/patch-type-declarations" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to manage errors and ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6472ea2dd415e925b90ca82be64b8bc6157f3934", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/event-dispatcher-contracts": "^2|^3" - }, - "conflict": { - "symfony/dependency-injection": "<5.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^5.4|^6.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/aa5422287b75594b90ee9cd807caf8f0df491385", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/event-dispatcher": "^1" - }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-07-15T12:33:35+00:00" - }, - { - "name": "symfony/finder", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/8661b74dbabc23223f38c9b99d3f8ade71170430", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ad157299ced81a637fade1efcadd688d6deba5c1", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1" - }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/cache": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0" - }, - "suggest": { - "symfony/mime": "To use the file extension guesser" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v6.0.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/error-handler": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", - "symfony/twig-bridge": "<5.4", - "symfony/validator": "<5.4", - "twig/twig": "<2.13" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/process": "^5.4|^6.0", - "symfony/routing": "^5.4|^6.0", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-29T18:12:46+00:00" - }, - { - "name": "symfony/mailer", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mailer.git", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "shasum": "" - }, - "require": { - "egulias/email-validator": "^2.1.10|^3", - "php": ">=8.0.2", - "psr/event-dispatcher": "^1", - "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3" - }, - "conflict": { - "symfony/http-kernel": "<5.4" - }, - "require-dev": { - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/messenger": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/mime", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/2cd9601efd040e56f43360daa68f3c6b0534923a", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "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" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "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.24.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": "2021-10-20T20:35:02+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-11-23T21:10:46+00:00" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44", - "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.23-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.24.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": "2021-09-14T14:02:44+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.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": "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.24.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": "2021-11-30T18:21:41+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-05-27T09:17:38+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:33+00:00" - }, - { - "name": "symfony/polyfill-php81", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:11+00:00" - }, - { - "name": "symfony/process", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/298ed357274c1868c20a0061df256a1250a6c4af", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/routing", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/yaml": "<5.4" - }, - "require-dev": { - "doctrine/annotations": "^1.12", - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/36715ebf9fb9db73db0cb24263c79077c6fe8603", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/container": "^2.0" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "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.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": "2021-11-04T17:53:12+00:00" - }, - { - "name": "symfony/string", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/522144f0c4c004c80d56fa47e40e17028e2eefc2", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.0" - }, - "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/translation-contracts": "^2.0|^3.0", - "symfony/var-exporter": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "files": [ - "Resources/functions.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 an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/translation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/71bb15335798f8c4da110911bcf2d2fead7a430d", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.3|^3.0" - }, - "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" - }, - "provide": { - "symfony/translation-implementation": "2.3|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-07T00:29:03+00:00" - }, - { - "name": "symfony/translation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "suggest": { - "symfony/translation-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - } - }, - "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.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": "2021-09-07T12:43:40+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7b701676fc64f9ef11f9b4870f16b48f66be4834", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<5.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-17T16:30:44+00:00" - }, - { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.4", - "source": { - "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" - } - ], - "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", - "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "support": { - "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" - }, - "time": "2021-12-08T09:12:39+00:00" - }, - { - "name": "vlucas/phpdotenv", - "version": "v5.4.1", - "source": { - "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", - "shasum": "" - }, - "require": { - "ext-pcre": "*", - "graham-campbell/result-type": "^1.0.2", - "php": "^7.1.3 || ^8.0", - "phpoption/phpoption": "^1.8", - "symfony/polyfill-ctype": "^1.23", - "symfony/polyfill-mbstring": "^1.23.1", - "symfony/polyfill-php80": "^1.23.1" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" - }, - "suggest": { - "ext-filter": "Required to use the boolean validator." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.4-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.4.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", - "type": "tidelift" - } - ], - "time": "2021-12-12T23:22:04+00:00" - }, - { - "name": "voku/portable-ascii", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/voku/portable-ascii.git", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/9bd89e83cecdf8c37b64909454249eaed98b2c89", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89", - "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.0" - }, - "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-01-24T18:59:03+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "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.10.0" - }, - "time": "2021-03-09T10:59:23+00:00" - } - ], - "packages-dev": [ - { - "name": "doctrine/instantiator", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.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%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2020-11-10T18:47:58+00:00" - }, - { - "name": "facade/ignition-contracts", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/facade/ignition-contracts.git", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^v2.15.8", - "phpunit/phpunit": "^9.3.11", - "vimeo/psalm": "^3.17.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Facade\\IgnitionContracts\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://flareapp.io", - "role": "Developer" - } - ], - "description": "Solution contracts for Ignition", - "homepage": "https://github.com/facade/ignition-contracts", - "keywords": [ - "contracts", - "flare", - "ignition" - ], - "support": { - "issues": "https://github.com/facade/ignition-contracts/issues", - "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" - }, - "time": "2020-10-16T08:27:54+00:00" - }, - { - "name": "fakerphp/faker", - "version": "v1.19.0", - "source": { - "type": "git", - "url": "https://github.com/FakerPHP/Faker.git", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^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": "*", - "symfony/phpunit-bridge": "^4.4 || ^5.2" - }, - "suggest": { - "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", - "ext-curl": "Required by Faker\\Provider\\Image to download images.", - "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", - "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.19-dev" - } - }, - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "François Zaninotto" - } - ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], - "support": { - "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0" - }, - "time": "2022-02-02T17:38:57+00:00" - }, - { - "name": "filp/whoops", - "version": "2.14.5", - "source": { - "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "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.14.5" - }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "time": "2022-01-07T12:00:00+00:00" - }, - { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "shasum": "" - }, - "require": { - "php": "^5.3|^7.0|^8.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" - }, - "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "classmap": [ - "hamcrest" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "This is the PHP port of Hamcrest Matchers", - "keywords": [ - "test" - ], - "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" - }, - "time": "2020-07-09T08:09:16+00:00" - }, - { - "name": "laravel/sail", - "version": "v1.13.2", - "source": { - "type": "git", - "url": "https://github.com/laravel/sail.git", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.0|^9.0", - "illuminate/contracts": "^8.0|^9.0", - "illuminate/support": "^8.0|^9.0", - "php": "^7.3|^8.0" - }, - "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": "2022-02-08T14:14:12+00:00" - }, - { - "name": "mockery/mockery", - "version": "1.5.0", - "source": { - "type": "git", - "url": "https://github.com/mockery/mockery.git", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "shasum": "" - }, - "require": { - "hamcrest/hamcrest-php": "^2.0.1", - "lib-pcre": ">=7.0", - "php": "^7.3 || ^8.0" - }, - "conflict": { - "phpunit/phpunit": "<8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-0": { - "Mockery": "library/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" - } - ], - "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": { - "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.5.0" - }, - "time": "2022-01-20T13:18:17+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.10.2", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "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.10.2" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2020-11-13T09:40:50+00:00" - }, - { - "name": "nunomaduro/collision", - "version": "v6.1.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/collision.git", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "shasum": "" - }, - "require": { - "facade/ignition-contracts": "^1.0.2", - "filp/whoops": "^2.14.5", - "php": "^8.0.0", - "symfony/console": "^6.0.2" - }, - "require-dev": { - "brianium/paratest": "^6.4.1", - "laravel/framework": "^9.0", - "nunomaduro/larastan": "^1.0.2", - "nunomaduro/mock-final-classes": "^1.1.0", - "orchestra/testbench": "^7.0.0", - "phpunit/phpunit": "^9.5.11" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "6.x-dev" - }, - "laravel": { - "providers": [ - "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" - ] - } - }, - "autoload": { - "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": "2022-01-18T17:49:08+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.1.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/15a90844ad40f127afd244c0cad228de2a80052a", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a", - "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.1.1" - }, - "time": "2022-02-07T21:56:48+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.6.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "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.6.0" - }, - "time": "2022-01-04T19:58:01+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" - }, - "time": "2021-12-08T12:19:24+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "9.2.10", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d5850aaf931743067f4bfc1ae4cbd06468400687", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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 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", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.10" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-05T09:12:13+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "3.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-02T12:48:52+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "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/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:58:55+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T05:33:50+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.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/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:16:10+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "9.5.13", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/597cb647654ede35e43b137926dfdfef0fb11743", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.3.1", - "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": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.7", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", - "sebastian/version": "^3.0.2" - }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.13" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-01-24T07:33:35+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:08:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "1.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:08:54+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:30:19+00:00" - }, - { - "name": "sebastian/comparator", - "version": "4.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:49:45+00:00" - }, - { - "name": "sebastian/complexity", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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 calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:52:27+00:00" - }, - { - "name": "sebastian/diff", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:10:38+00:00" - }, - { - "name": "sebastian/environment", - "version": "5.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-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": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:52:38+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "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", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-11-11T14:18:36+00:00" - }, - { - "name": "sebastian/global-state", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-11T13:31:12+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-28T06:42:11+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "http://www.github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:17:30+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:45:17+00:00" - }, - { - "name": "sebastian/type", - "version": "2.3.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-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/2.3.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-15T12:49:02+00:00" - }, - { - "name": "sebastian/version", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:39:44+00:00" - }, - { - "name": "spatie/backtrace", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/backtrace.git", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "ext-json": "*", - "phpunit/phpunit": "^9.3", - "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": { - "issues": "https://github.com/spatie/backtrace/issues", - "source": "https://github.com/spatie/backtrace/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/sponsors/spatie", - "type": "github" - }, - { - "url": "https://spatie.be/open-source/support-us", - "type": "other" - } - ], - "time": "2021-11-09T10:57:15+00:00" - }, - { - "name": "spatie/flare-client-php", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/flare-client-php.git", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "shasum": "" - }, - "require": { - "illuminate/pipeline": "^8.0|^9.0", - "php": "^8.0", - "spatie/backtrace": "^1.2", - "symfony/http-foundation": "^5.0|^6.0", - "symfony/mime": "^5.2|^6.0", - "symfony/process": "^5.2|^6.0", - "symfony/var-dumper": "^5.2|^6.0" - }, - "require-dev": { - "dms/phpunit-arraysubset-asserts": "^0.3.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/phpunit-snapshot-assertions": "^4.0" - }, - "type": "library", - "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.0.1" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2022-02-04T15:21:00+00:00" - }, - { - "name": "spatie/ignition", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/spatie/ignition.git", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/d2d5ba823af3004268556e87dfc94449e4159f5a", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "monolog/monolog": "^2.0", - "php": "^8.0", - "spatie/flare-client-php": "^1.0", - "symfony/console": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "mockery/mockery": "^1.4", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/ray": "^1.32", - "symfony/process": "^5.4|^6.0" - }, - "type": "library", - "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": "2022-01-19T12:57:41+00:00" - }, - { - "name": "spatie/laravel-ignition", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/68250225a9f83b086462c2af1b1139dfde48fbd2", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*", - "illuminate/support": "^8.77|^9.0", - "monolog/monolog": "^2.3", - "php": "^8.0", - "spatie/flare-client-php": "^1.0.1", - "spatie/ignition": "^1.0", - "symfony/console": "^5.0|^6.0", - "symfony/var-dumper": "^5.0|^6.0" - }, - "require-dev": { - "filp/whoops": "^2.14", - "livewire/livewire": "^2.8|dev-develop", - "mockery/mockery": "^1.4", - "nunomaduro/larastan": "^1.0", - "orchestra/testbench": "^6.23|^7.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/laravel-ray": "^1.27" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Spatie\\LaravelIgnition\\IgnitionServiceProvider" - ], - "aliases": { - "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" - } - } - }, - "autoload": { - "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": "2022-02-04T15:25:56+00:00" - }, - { - "name": "squizlabs/php_codesniffer", - "version": "3.6.2", - "source": { - "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", - "shasum": "" - }, - "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.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": "lead" - } - ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", - "keywords": [ - "phpcs", - "standards" - ], - "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" - }, - "time": "2021-12-12T21:44:58+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2021-07-28T10:34:58+00:00" - } - ], - "aliases": [], - "minimum-stability": "dev", - "stability-flags": [], - "prefer-stable": true, - "prefer-lowest": false, - "platform": { - "php": "^8.0" - }, - "platform-dev": [], - "plugin-api-version": "2.1.0" -} diff --git a/Chapter17/onlineStore/config/app.php b/Chapter17/onlineStore/config/app.php deleted file mode 100644 index 1941d7c..0000000 --- a/Chapter17/onlineStore/config/app.php +++ /dev/null @@ -1,197 +0,0 @@ - env('APP_NAME', 'Laravel'), - - /* - |-------------------------------------------------------------------------- - | Application Environment - |-------------------------------------------------------------------------- - | - | This value determines the "environment" your application is currently - | running in. This may determine how you prefer to configure various - | services the application utilizes. Set this in your ".env" file. - | - */ - - 'env' => env('APP_ENV', 'production'), - - /* - |-------------------------------------------------------------------------- - | Application Debug Mode - |-------------------------------------------------------------------------- - | - | When your application is in debug mode, detailed error messages with - | stack traces will be shown on every error that occurs within your - | application. If disabled, a simple generic error page is shown. - | - */ - - 'debug' => (bool) env('APP_DEBUG', false), - - /* - |-------------------------------------------------------------------------- - | Application URL - |-------------------------------------------------------------------------- - | - | This URL is used by the console to properly generate URLs when using - | the Artisan command line tool. You should set this to the root of - | your application so that it is used when running Artisan tasks. - | - */ - - 'url' => env('APP_URL', 'http://localhost'), - - 'asset_url' => env('ASSET_URL', null), - - /* - |-------------------------------------------------------------------------- - | 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', - - /* - |-------------------------------------------------------------------------- - | 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' => [ - - /* - * Laravel Framework Service Providers... - */ - Illuminate\Auth\AuthServiceProvider::class, - Illuminate\Broadcasting\BroadcastServiceProvider::class, - Illuminate\Bus\BusServiceProvider::class, - Illuminate\Cache\CacheServiceProvider::class, - Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, - Illuminate\Cookie\CookieServiceProvider::class, - Illuminate\Database\DatabaseServiceProvider::class, - Illuminate\Encryption\EncryptionServiceProvider::class, - Illuminate\Filesystem\FilesystemServiceProvider::class, - Illuminate\Foundation\Providers\FoundationServiceProvider::class, - Illuminate\Hashing\HashServiceProvider::class, - Illuminate\Mail\MailServiceProvider::class, - Illuminate\Notifications\NotificationServiceProvider::class, - Illuminate\Pagination\PaginationServiceProvider::class, - Illuminate\Pipeline\PipelineServiceProvider::class, - Illuminate\Queue\QueueServiceProvider::class, - Illuminate\Redis\RedisServiceProvider::class, - Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, - Illuminate\Session\SessionServiceProvider::class, - Illuminate\Translation\TranslationServiceProvider::class, - Illuminate\Validation\ValidationServiceProvider::class, - Illuminate\View\ViewServiceProvider::class, - - /* - * 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, - - ], - - /* - |-------------------------------------------------------------------------- - | 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([ - // ... - ])->toArray(), - -]; diff --git a/Chapter17/onlineStore/config/auth.php b/Chapter17/onlineStore/config/auth.php deleted file mode 100644 index d8c6cee..0000000 --- a/Chapter17/onlineStore/config/auth.php +++ /dev/null @@ -1,111 +0,0 @@ - [ - '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 expire 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. - | - */ - - 'passwords' => [ - 'users' => [ - 'provider' => 'users', - 'table' => 'password_resets', - '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/Chapter17/onlineStore/config/broadcasting.php b/Chapter17/onlineStore/config/broadcasting.php deleted file mode 100644 index 67fcbbd..0000000 --- a/Chapter17/onlineStore/config/broadcasting.php +++ /dev/null @@ -1,67 +0,0 @@ - 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'), - 'useTLS' => true, - ], - '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/Chapter17/onlineStore/config/cache.php b/Chapter17/onlineStore/config/cache.php deleted file mode 100644 index 8736c7a..0000000 --- a/Chapter17/onlineStore/config/cache.php +++ /dev/null @@ -1,110 +0,0 @@ - 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'), - ], - - '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 a RAM based store such as APC or Memcached, there might - | be other applications utilizing the same cache. So, we'll specify a - | value to get prefixed to all our keys so we can avoid collisions. - | - */ - - 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'), - -]; diff --git a/Chapter17/onlineStore/config/cors.php b/Chapter17/onlineStore/config/cors.php deleted file mode 100644 index 8a39e6d..0000000 --- a/Chapter17/onlineStore/config/cors.php +++ /dev/null @@ -1,34 +0,0 @@ - ['api/*', 'sanctum/csrf-cookie'], - - 'allowed_methods' => ['*'], - - 'allowed_origins' => ['*'], - - 'allowed_origins_patterns' => [], - - 'allowed_headers' => ['*'], - - 'exposed_headers' => [], - - 'max_age' => 0, - - 'supports_credentials' => false, - -]; diff --git a/Chapter17/onlineStore/config/database.php b/Chapter17/onlineStore/config/database.php deleted file mode 100644 index 0faebae..0000000 --- a/Chapter17/onlineStore/config/database.php +++ /dev/null @@ -1,147 +0,0 @@ - env('DB_CONNECTION', 'mysql'), - - /* - |-------------------------------------------------------------------------- - | Database Connections - |-------------------------------------------------------------------------- - | - | Here are each of the database connections setup for your application. - | Of course, examples of configuring each database platform that is - | supported by Laravel is shown below to make development simple. - | - | - | All database work in Laravel is done through the PHP PDO facilities - | so make sure you have the driver for your particular database of - | choice installed on your machine before you begin development. - | - */ - - 'connections' => [ - - 'sqlite' => [ - 'driver' => 'sqlite', - 'url' => env('DATABASE_URL'), - 'database' => env('DB_DATABASE', database_path('database.sqlite')), - 'prefix' => '', - 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), - ], - - 'mysql' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '3306'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'unix_socket' => env('DB_SOCKET', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - 'pgsql' => [ - 'driver' => 'pgsql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '5432'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - 'search_path' => 'public', - 'sslmode' => 'prefer', - ], - - 'sqlsrv' => [ - 'driver' => 'sqlsrv', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', 'localhost'), - 'port' => env('DB_PORT', '1433'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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'), - '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'), - 'password' => env('REDIS_PASSWORD'), - 'port' => env('REDIS_PORT', '6379'), - 'database' => env('REDIS_CACHE_DB', '1'), - ], - - ], - -]; diff --git a/Chapter17/onlineStore/config/filesystems.php b/Chapter17/onlineStore/config/filesystems.php deleted file mode 100644 index cf5abce..0000000 --- a/Chapter17/onlineStore/config/filesystems.php +++ /dev/null @@ -1,73 +0,0 @@ - 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 setup for each driver as an example of the required options. - | - | Supported Drivers: "local", "ftp", "sftp", "s3" - | - */ - - 'disks' => [ - - 'local' => [ - 'driver' => 'local', - 'root' => storage_path('app'), - ], - - 'public' => [ - 'driver' => 'local', - 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', - 'visibility' => 'public', - ], - - '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), - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter17/onlineStore/config/hashing.php b/Chapter17/onlineStore/config/hashing.php deleted file mode 100644 index bcd3be4..0000000 --- a/Chapter17/onlineStore/config/hashing.php +++ /dev/null @@ -1,52 +0,0 @@ - '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/Chapter17/onlineStore/config/logging.php b/Chapter17/onlineStore/config/logging.php deleted file mode 100644 index fefe088..0000000 --- a/Chapter17/onlineStore/config/logging.php +++ /dev/null @@ -1,119 +0,0 @@ - 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' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), - - /* - |-------------------------------------------------------------------------- - | 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'), - ], - - 'daily' => [ - 'driver' => 'daily', - 'path' => storage_path('logs/laravel.log'), - 'level' => env('LOG_LEVEL', 'debug'), - 'days' => 14, - ], - - 'slack' => [ - 'driver' => 'slack', - 'url' => env('LOG_SLACK_WEBHOOK_URL'), - 'username' => 'Laravel Log', - 'emoji' => ':boom:', - 'level' => env('LOG_LEVEL', 'critical'), - ], - - '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'), - ], - ], - - 'stderr' => [ - 'driver' => 'monolog', - 'level' => env('LOG_LEVEL', 'debug'), - 'handler' => StreamHandler::class, - 'formatter' => env('LOG_STDERR_FORMATTER'), - 'with' => [ - 'stream' => 'php://stderr', - ], - ], - - 'syslog' => [ - 'driver' => 'syslog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'errorlog' => [ - 'driver' => 'errorlog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'null' => [ - 'driver' => 'monolog', - 'handler' => NullHandler::class, - ], - - 'emergency' => [ - 'path' => storage_path('logs/laravel.log'), - ], - ], - -]; diff --git a/Chapter17/onlineStore/config/mail.php b/Chapter17/onlineStore/config/mail.php deleted file mode 100644 index 87b6fe3..0000000 --- a/Chapter17/onlineStore/config/mail.php +++ /dev/null @@ -1,117 +0,0 @@ - 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", - | "postmark", "log", "array", "failover" - | - */ - - 'mailers' => [ - 'smtp' => [ - 'transport' => 'smtp', - '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, - ], - - 'ses' => [ - 'transport' => 'ses', - ], - - 'mailgun' => [ - 'transport' => 'mailgun', - ], - - 'postmark' => [ - 'transport' => 'postmark', - ], - - 'sendmail' => [ - 'transport' => 'sendmail', - 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -t -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/Chapter17/onlineStore/config/queue.php b/Chapter17/onlineStore/config/queue.php deleted file mode 100644 index 25ea5a8..0000000 --- a/Chapter17/onlineStore/config/queue.php +++ /dev/null @@ -1,93 +0,0 @@ - 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, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter17/onlineStore/config/sanctum.php b/Chapter17/onlineStore/config/sanctum.php deleted file mode 100644 index 9281c92..0000000 --- a/Chapter17/onlineStore/config/sanctum.php +++ /dev/null @@ -1,65 +0,0 @@ - explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( - '%s%s', - 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', - env('APP_URL') ? ','.parse_url(env('APP_URL'), PHP_URL_HOST) : '' - ))), - - /* - |-------------------------------------------------------------------------- - | 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/Chapter17/onlineStore/config/services.php b/Chapter17/onlineStore/config/services.php deleted file mode 100644 index 2a1d616..0000000 --- a/Chapter17/onlineStore/config/services.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - 'domain' => env('MAILGUN_DOMAIN'), - 'secret' => env('MAILGUN_SECRET'), - 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), - ], - - '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/Chapter17/onlineStore/config/session.php b/Chapter17/onlineStore/config/session.php deleted file mode 100644 index 8fed97c..0000000 --- a/Chapter17/onlineStore/config/session.php +++ /dev/null @@ -1,201 +0,0 @@ - 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/Chapter17/onlineStore/config/view.php b/Chapter17/onlineStore/config/view.php deleted file mode 100644 index 22b8a18..0000000 --- a/Chapter17/onlineStore/config/view.php +++ /dev/null @@ -1,36 +0,0 @@ - [ - 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/Chapter17/onlineStore/database/.gitignore b/Chapter17/onlineStore/database/.gitignore deleted file mode 100644 index 9b19b93..0000000 --- a/Chapter17/onlineStore/database/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.sqlite* diff --git a/Chapter17/onlineStore/database/factories/UserFactory.php b/Chapter17/onlineStore/database/factories/UserFactory.php deleted file mode 100644 index d6ca926..0000000 --- a/Chapter17/onlineStore/database/factories/UserFactory.php +++ /dev/null @@ -1,42 +0,0 @@ - - */ -class UserFactory extends Factory -{ - /** - * Define the model's default state. - * - * @return array - */ - public function definition() - { - return [ - 'name' => $this->faker->name(), - 'email' => $this->faker->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. - * - * @return \Illuminate\Database\Eloquent\Factories\Factory - */ - public function unverified() - { - return $this->state(function (array $attributes) { - return [ - 'email_verified_at' => null, - ]; - }); - } -} diff --git a/Chapter17/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php b/Chapter17/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php deleted file mode 100644 index cf6b776..0000000 --- a/Chapter17/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->string('name'); - $table->string('email')->unique(); - $table->timestamp('email_verified_at')->nullable(); - $table->string('password'); - $table->rememberToken(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('users'); - } -}; diff --git a/Chapter17/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php b/Chapter17/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php deleted file mode 100644 index fcacb80..0000000 --- a/Chapter17/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php +++ /dev/null @@ -1,32 +0,0 @@ -string('email')->index(); - $table->string('token'); - $table->timestamp('created_at')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('password_resets'); - } -}; diff --git a/Chapter17/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/Chapter17/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php deleted file mode 100644 index 1719198..0000000 --- a/Chapter17/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php +++ /dev/null @@ -1,36 +0,0 @@ -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. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('failed_jobs'); - } -}; diff --git a/Chapter17/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/Chapter17/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php deleted file mode 100644 index fd235f8..0000000 --- a/Chapter17/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->morphs('tokenable'); - $table->string('name'); - $table->string('token', 64)->unique(); - $table->text('abilities')->nullable(); - $table->timestamp('last_used_at')->nullable(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('personal_access_tokens'); - } -}; diff --git a/Chapter17/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php b/Chapter17/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php deleted file mode 100644 index 2eecdc2..0000000 --- a/Chapter17/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php +++ /dev/null @@ -1,35 +0,0 @@ -id(); - $table->string('name'); - $table->text('description'); - $table->string('image'); - $table->integer('price'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('products'); - } -}; diff --git a/Chapter17/onlineStore/database/seeders/DatabaseSeeder.php b/Chapter17/onlineStore/database/seeders/DatabaseSeeder.php deleted file mode 100644 index 71f673f..0000000 --- a/Chapter17/onlineStore/database/seeders/DatabaseSeeder.php +++ /dev/null @@ -1,19 +0,0 @@ -create(); - } -} diff --git a/Chapter17/onlineStore/lang/en.json b/Chapter17/onlineStore/lang/en.json deleted file mode 100644 index 577680d..0000000 --- a/Chapter17/onlineStore/lang/en.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "The :attribute must contain at least one letter.": "The :attribute must contain at least one letter.", - "The :attribute must contain at least one number.": "The :attribute must contain at least one number.", - "The :attribute must contain at least one symbol.": "The :attribute must contain at least one symbol.", - "The :attribute must contain at least one uppercase and one lowercase letter.": "The :attribute must contain at least one uppercase and one lowercase letter.", - "The given :attribute has appeared in a data leak. Please choose a different :attribute.": "The given :attribute has appeared in a data leak. Please choose a different :attribute." -} diff --git a/Chapter17/onlineStore/lang/en/auth.php b/Chapter17/onlineStore/lang/en/auth.php deleted file mode 100644 index 6598e2c..0000000 --- a/Chapter17/onlineStore/lang/en/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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/Chapter17/onlineStore/lang/en/pagination.php b/Chapter17/onlineStore/lang/en/pagination.php deleted file mode 100644 index d481411..0000000 --- a/Chapter17/onlineStore/lang/en/pagination.php +++ /dev/null @@ -1,19 +0,0 @@ - '« Previous', - 'next' => 'Next »', - -]; diff --git a/Chapter17/onlineStore/lang/en/passwords.php b/Chapter17/onlineStore/lang/en/passwords.php deleted file mode 100644 index 2345a56..0000000 --- a/Chapter17/onlineStore/lang/en/passwords.php +++ /dev/null @@ -1,22 +0,0 @@ - '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/Chapter17/onlineStore/lang/en/validation.php b/Chapter17/onlineStore/lang/en/validation.php deleted file mode 100644 index 783003c..0000000 --- a/Chapter17/onlineStore/lang/en/validation.php +++ /dev/null @@ -1,163 +0,0 @@ - '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' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - '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' => [ - 'numeric' => 'The :attribute must be greater than :value.', - 'file' => 'The :attribute must be greater than :value kilobytes.', - 'string' => 'The :attribute must be greater than :value characters.', - 'array' => 'The :attribute must have more than :value items.', - ], - 'gte' => [ - 'numeric' => 'The :attribute must be greater than or equal to :value.', - 'file' => 'The :attribute must be greater than or equal to :value kilobytes.', - 'string' => 'The :attribute must be greater than or equal to :value characters.', - 'array' => 'The :attribute must have :value items or more.', - ], - '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' => [ - 'numeric' => 'The :attribute must be less than :value.', - 'file' => 'The :attribute must be less than :value kilobytes.', - 'string' => 'The :attribute must be less than :value characters.', - 'array' => 'The :attribute must have less than :value items.', - ], - 'lte' => [ - 'numeric' => 'The :attribute must be less than or equal to :value.', - 'file' => 'The :attribute must be less than or equal to :value kilobytes.', - 'string' => 'The :attribute must be less than or equal to :value characters.', - 'array' => 'The :attribute must not have more than :value items.', - ], - 'mac_address' => 'The :attribute must be a valid MAC address.', - 'max' => [ - 'numeric' => 'The :attribute must not be greater than :max.', - 'file' => 'The :attribute must not be greater than :max kilobytes.', - 'string' => 'The :attribute must not be greater than :max characters.', - 'array' => 'The :attribute must not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - '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.', - 'password' => 'The password is incorrect.', - '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' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - '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/Chapter17/onlineStore/package.json b/Chapter17/onlineStore/package.json deleted file mode 100644 index 7a9aecd..0000000 --- a/Chapter17/onlineStore/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "private": true, - "scripts": { - "dev": "npm run development", - "development": "mix", - "watch": "mix watch", - "watch-poll": "mix watch -- --watch-options-poll=1000", - "hot": "mix watch --hot", - "prod": "npm run production", - "production": "mix --production" - }, - "devDependencies": { - "axios": "^0.25", - "laravel-mix": "^6.0.6", - "lodash": "^4.17.19", - "postcss": "^8.1.14" - } -} diff --git a/Chapter17/onlineStore/phpcs.xml b/Chapter17/onlineStore/phpcs.xml deleted file mode 100644 index a1cf2b6..0000000 --- a/Chapter17/onlineStore/phpcs.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - The coding standard for the Online Store project - - app/ - config/ - database/ - routes/ - */migrations/* - diff --git a/Chapter17/onlineStore/phpunit.xml b/Chapter17/onlineStore/phpunit.xml deleted file mode 100644 index 2ac86a1..0000000 --- a/Chapter17/onlineStore/phpunit.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - ./tests/Unit - - - ./tests/Feature - - - - - ./app - - - - - - - - - - - - - - diff --git a/Chapter17/onlineStore/public/.htaccess b/Chapter17/onlineStore/public/.htaccess deleted file mode 100644 index 3aec5e2..0000000 --- a/Chapter17/onlineStore/public/.htaccess +++ /dev/null @@ -1,21 +0,0 @@ - - - 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/Chapter17/onlineStore/public/css/admin.css b/Chapter17/onlineStore/public/css/admin.css deleted file mode 100644 index d9495a1..0000000 --- a/Chapter17/onlineStore/public/css/admin.css +++ /dev/null @@ -1,33 +0,0 @@ -.copyright { - background-color: #1a252f; -} - -.fixed { - -ms-flex: 0 0 250px; - flex: 0 0 250px; -} - -.content-grey { - background-color: #f8f9fc; -} - -hr { - margin-top: 0.8em; - margin-bottom: 0.8em; -} - -.img-profile { - height: 2rem; - width: 2rem; -} - -.profile-font { - color: #858796 !important; - font-size: 80%; - font-weight: 400; -} - -.card-header { - background-color: #f8f9fc; - border-bottom: 1px solid #e3e6f0; -} diff --git a/Chapter17/onlineStore/public/css/app.css b/Chapter17/onlineStore/public/css/app.css deleted file mode 100644 index cabac36..0000000 --- a/Chapter17/onlineStore/public/css/app.css +++ /dev/null @@ -1,20 +0,0 @@ -.bg-secondary { - background-color: #2c3e50 !important; -} - -.copyright { - background-color: #1a252f; -} - -.bg-primary { - background-color: #1abc9c !important; -} - -nav{ - font-weight: 700; -} - -.img-card{ - height: 18vw; - object-fit: cover; -} diff --git a/Chapter17/onlineStore/public/favicon.ico b/Chapter17/onlineStore/public/favicon.ico deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter17/onlineStore/public/img/game.png b/Chapter17/onlineStore/public/img/game.png deleted file mode 100644 index 85420e8bbc16098bf26b4ee63bde0e91a19d1f2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25896 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 cz>% diff --git a/Chapter17/onlineStore/public/img/safe.png b/Chapter17/onlineStore/public/img/safe.png deleted file mode 100644 index 445942c707af53210931f9f4f99f6d3cb69e5d89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19240 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
w==XB0?3|p=#`o%NsudE(E-U#KS3Snw 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 o>ir+C;RN10sIS0&a;p - - - - - - - - - - - - - - - - - - diff --git a/Chapter17/onlineStore/public/index.php b/Chapter17/onlineStore/public/index.php deleted file mode 100644 index 1d69f3a..0000000 --- a/Chapter17/onlineStore/public/index.php +++ /dev/null @@ -1,55 +0,0 @@ -make(Kernel::class); - -$response = $kernel->handle( - $request = Request::capture() -)->send(); - -$kernel->terminate($request, $response); diff --git a/Chapter17/onlineStore/public/robots.txt b/Chapter17/onlineStore/public/robots.txt deleted file mode 100644 index eb05362..0000000 --- a/Chapter17/onlineStore/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: diff --git a/Chapter17/onlineStore/resources/css/app.css b/Chapter17/onlineStore/resources/css/app.css deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter17/onlineStore/resources/js/app.js b/Chapter17/onlineStore/resources/js/app.js deleted file mode 100644 index 40c55f6..0000000 --- a/Chapter17/onlineStore/resources/js/app.js +++ /dev/null @@ -1 +0,0 @@ -require('./bootstrap'); diff --git a/Chapter17/onlineStore/resources/js/bootstrap.js b/Chapter17/onlineStore/resources/js/bootstrap.js deleted file mode 100644 index 6922577..0000000 --- a/Chapter17/onlineStore/resources/js/bootstrap.js +++ /dev/null @@ -1,28 +0,0 @@ -window._ = require('lodash'); - -/** - * 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 = require('axios'); - -window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; - -/** - * 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'; - -// window.Pusher = require('pusher-js'); - -// window.Echo = new Echo({ -// broadcaster: 'pusher', -// key: process.env.MIX_PUSHER_APP_KEY, -// cluster: process.env.MIX_PUSHER_APP_CLUSTER, -// forceTLS: true -// }); diff --git a/Chapter17/onlineStore/resources/views/admin/home/index.blade.php b/Chapter17/onlineStore/resources/views/admin/home/index.blade.php deleted file mode 100644 index a2b4868..0000000 --- a/Chapter17/onlineStore/resources/views/admin/home/index.blade.php +++ /dev/null @@ -1,12 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
-
- Admin Panel - Home Page -
-
- Welcome to the Admin Panel, use the sidebar to navigate between the different options. -
-
-@endsection diff --git a/Chapter17/onlineStore/resources/views/admin/product/index.blade.php b/Chapter17/onlineStore/resources/views/admin/product/index.blade.php deleted file mode 100644 index c81f6a2..0000000 --- a/Chapter17/onlineStore/resources/views/admin/product/index.blade.php +++ /dev/null @@ -1,73 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
-
- Create Products -
-
- @if($errors->any()) -
    - @foreach($errors->all() as $error) -
  • - {{ $error }}
  • - @endforeach -
- @endif - -
- @csrf -
-
-
- -
- -
-
-
-
-
- -
- -
-
-
-
-
- - -
- -
-
-
- -
-
- Manage Products -
-
- - - - - - - - - - - @foreach ($viewData["products"] as $product) - - - - - - - @endforeach - -
IDNameEditDelete
{{ $product->getId() }}{{ $product->getName() }}EditDelete
-
-
-@endsection diff --git a/Chapter17/onlineStore/resources/views/home/about.blade.php b/Chapter17/onlineStore/resources/views/home/about.blade.php deleted file mode 100644 index f79abf3..0000000 --- a/Chapter17/onlineStore/resources/views/home/about.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
-
-
-

{{ $viewData["description"] }}

-
-
-

{{ $viewData["author"] }}

-
-
-
-@endsection diff --git a/Chapter17/onlineStore/resources/views/home/index.blade.php b/Chapter17/onlineStore/resources/views/home/index.blade.php deleted file mode 100644 index 1affb20..0000000 --- a/Chapter17/onlineStore/resources/views/home/index.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('content') -
-
- -
-
- -
-
- -
-
-@endsection diff --git a/Chapter17/onlineStore/resources/views/layouts/admin.blade.php b/Chapter17/onlineStore/resources/views/layouts/admin.blade.php deleted file mode 100644 index a1a1d57..0000000 --- a/Chapter17/onlineStore/resources/views/layouts/admin.blade.php +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - @yield('title', 'Admin - Online Store') - - - -
- - - -
- - -
- @yield('content') -
-
-
- - - - - - - - - diff --git a/Chapter17/onlineStore/resources/views/layouts/app.blade.php b/Chapter17/onlineStore/resources/views/layouts/app.blade.php deleted file mode 100644 index eee7fcb..0000000 --- a/Chapter17/onlineStore/resources/views/layouts/app.blade.php +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - @yield('title', 'Online Store') - - - - - -
-
-

@yield('subtitle', 'A Laravel Online Store')

-
-
- - -
- @yield('content') -
- - - - - - - diff --git a/Chapter17/onlineStore/resources/views/product/index.blade.php b/Chapter17/onlineStore/resources/views/product/index.blade.php deleted file mode 100644 index c82528a..0000000 --- a/Chapter17/onlineStore/resources/views/product/index.blade.php +++ /dev/null @@ -1,18 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
- @foreach ($viewData["products"] as $product) - - @endforeach -
-@endsection diff --git a/Chapter17/onlineStore/resources/views/product/show.blade.php b/Chapter17/onlineStore/resources/views/product/show.blade.php deleted file mode 100644 index 0adad34..0000000 --- a/Chapter17/onlineStore/resources/views/product/show.blade.php +++ /dev/null @@ -1,21 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
-
-
- getImage()) }}" class="img-fluid rounded-start"> -
-
-
-
- {{ $viewData["product"]->getName() }} (${{ $viewData["product"]->getPrice() }}) -
-

{{ $viewData["product"]->getDescription() }}

-

Add to Cart

-
-
-
-
-@endsection diff --git a/Chapter17/onlineStore/resources/views/welcome.blade.php b/Chapter17/onlineStore/resources/views/welcome.blade.php deleted file mode 100644 index c587c72..0000000 --- a/Chapter17/onlineStore/resources/views/welcome.blade.php +++ /dev/null @@ -1,7 +0,0 @@ -@extends('layouts.app') -@section('title', 'Home Page - Online Store') -@section('content') -
- Welcome to the application -
-@endsection \ No newline at end of file diff --git a/Chapter17/onlineStore/routes/api.php b/Chapter17/onlineStore/routes/api.php deleted file mode 100644 index eb6fa48..0000000 --- a/Chapter17/onlineStore/routes/api.php +++ /dev/null @@ -1,19 +0,0 @@ -get('/user', function (Request $request) { - return $request->user(); -}); diff --git a/Chapter17/onlineStore/routes/channels.php b/Chapter17/onlineStore/routes/channels.php deleted file mode 100644 index 5d451e1..0000000 --- a/Chapter17/onlineStore/routes/channels.php +++ /dev/null @@ -1,18 +0,0 @@ -id === (int) $id; -}); diff --git a/Chapter17/onlineStore/routes/console.php b/Chapter17/onlineStore/routes/console.php deleted file mode 100644 index e05f4c9..0000000 --- a/Chapter17/onlineStore/routes/console.php +++ /dev/null @@ -1,19 +0,0 @@ -comment(Inspiring::quote()); -})->purpose('Display an inspiring quote'); diff --git a/Chapter17/onlineStore/routes/web.php b/Chapter17/onlineStore/routes/web.php deleted file mode 100644 index e1829ed..0000000 --- a/Chapter17/onlineStore/routes/web.php +++ /dev/null @@ -1,22 +0,0 @@ -name("home.index"); -Route::get('/about', 'App\Http\Controllers\HomeController@about')->name("home.about"); -Route::get('/products', 'App\Http\Controllers\ProductController@index')->name("product.index"); -Route::get('/products/{id}', 'App\Http\Controllers\ProductController@show')->name("product.show"); -Route::get('/admin', 'App\Http\Controllers\Admin\AdminHomeController@index')->name("admin.home.index"); -Route::get('/admin/products', 'App\Http\Controllers\Admin\AdminProductController@index')->name("admin.product.index"); -Route::post('/admin/products/store', 'App\Http\Controllers\Admin\AdminProductController@store')->name("admin.product.store"); diff --git a/Chapter17/onlineStore/storage/app/.gitignore b/Chapter17/onlineStore/storage/app/.gitignore deleted file mode 100644 index 8f4803c..0000000 --- a/Chapter17/onlineStore/storage/app/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!public/ -!.gitignore diff --git a/Chapter17/onlineStore/storage/app/public/.gitignore b/Chapter17/onlineStore/storage/app/public/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter17/onlineStore/storage/app/public/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter17/onlineStore/storage/framework/.gitignore b/Chapter17/onlineStore/storage/framework/.gitignore deleted file mode 100644 index 05c4471..0000000 --- a/Chapter17/onlineStore/storage/framework/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -compiled.php -config.php -down -events.scanned.php -maintenance.php -routes.php -routes.scanned.php -schedule-* -services.json diff --git a/Chapter17/onlineStore/storage/framework/cache/.gitignore b/Chapter17/onlineStore/storage/framework/cache/.gitignore deleted file mode 100644 index 01e4a6c..0000000 --- a/Chapter17/onlineStore/storage/framework/cache/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!data/ -!.gitignore diff --git a/Chapter17/onlineStore/storage/framework/cache/data/.gitignore b/Chapter17/onlineStore/storage/framework/cache/data/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter17/onlineStore/storage/framework/cache/data/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter17/onlineStore/storage/framework/sessions/.gitignore b/Chapter17/onlineStore/storage/framework/sessions/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter17/onlineStore/storage/framework/sessions/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter17/onlineStore/storage/framework/testing/.gitignore b/Chapter17/onlineStore/storage/framework/testing/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter17/onlineStore/storage/framework/testing/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter17/onlineStore/storage/framework/views/.gitignore b/Chapter17/onlineStore/storage/framework/views/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter17/onlineStore/storage/framework/views/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter17/onlineStore/storage/logs/.gitignore b/Chapter17/onlineStore/storage/logs/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter17/onlineStore/storage/logs/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter17/onlineStore/tests/CreatesApplication.php b/Chapter17/onlineStore/tests/CreatesApplication.php deleted file mode 100644 index 547152f..0000000 --- a/Chapter17/onlineStore/tests/CreatesApplication.php +++ /dev/null @@ -1,22 +0,0 @@ -make(Kernel::class)->bootstrap(); - - return $app; - } -} diff --git a/Chapter17/onlineStore/tests/Feature/ExampleTest.php b/Chapter17/onlineStore/tests/Feature/ExampleTest.php deleted file mode 100644 index 78ccc21..0000000 --- a/Chapter17/onlineStore/tests/Feature/ExampleTest.php +++ /dev/null @@ -1,21 +0,0 @@ -get('/'); - - $response->assertStatus(200); - } -} diff --git a/Chapter17/onlineStore/tests/TestCase.php b/Chapter17/onlineStore/tests/TestCase.php deleted file mode 100644 index 2932d4a..0000000 --- a/Chapter17/onlineStore/tests/TestCase.php +++ /dev/null @@ -1,10 +0,0 @@ -assertTrue(true); - } -} diff --git a/Chapter17/onlineStore/webpack.mix.js b/Chapter17/onlineStore/webpack.mix.js deleted file mode 100644 index 2a22dc1..0000000 --- a/Chapter17/onlineStore/webpack.mix.js +++ /dev/null @@ -1,17 +0,0 @@ -const mix = require('laravel-mix'); - -/* - |-------------------------------------------------------------------------- - | Mix Asset Management - |-------------------------------------------------------------------------- - | - | Mix provides a clean, fluent API for defining some Webpack build steps - | for your Laravel applications. By default, we are compiling the CSS - | file for the application as well as bundling up all the JS files. - | - */ - -mix.js('resources/js/app.js', 'public/js') - .postCss('resources/css/app.css', 'public/css', [ - // - ]); diff --git a/Chapter18/onlineStore/.editorconfig b/Chapter18/onlineStore/.editorconfig deleted file mode 100644 index 1671c9b..0000000 --- a/Chapter18/onlineStore/.editorconfig +++ /dev/null @@ -1,18 +0,0 @@ -root = true - -[*] -charset = utf-8 -end_of_line = lf -insert_final_newline = true -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true - -[*.md] -trim_trailing_whitespace = false - -[*.{yml,yaml}] -indent_size = 2 - -[docker-compose.yml] -indent_size = 4 diff --git a/Chapter18/onlineStore/.env.example b/Chapter18/onlineStore/.env.example deleted file mode 100644 index 8510237..0000000 --- a/Chapter18/onlineStore/.env.example +++ /dev/null @@ -1,52 +0,0 @@ -APP_NAME=Laravel -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=laravel -DB_USERNAME=root -DB_PASSWORD= - -BROADCAST_DRIVER=log -CACHE_DRIVER=file -FILESYSTEM_DISK=local -QUEUE_CONNECTION=sync -SESSION_DRIVER=file -SESSION_LIFETIME=120 - -MEMCACHED_HOST=127.0.0.1 - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -MAIL_MAILER=smtp -MAIL_HOST=mailhog -MAIL_PORT=1025 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS=null -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_APP_CLUSTER=mt1 - -MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/Chapter18/onlineStore/.gitattributes b/Chapter18/onlineStore/.gitattributes deleted file mode 100644 index 510d996..0000000 --- a/Chapter18/onlineStore/.gitattributes +++ /dev/null @@ -1,10 +0,0 @@ -* text=auto - -*.blade.php diff=html -*.css diff=css -*.html diff=html -*.md diff=markdown -*.php diff=php - -/.github export-ignore -CHANGELOG.md export-ignore diff --git a/Chapter18/onlineStore/.gitignore b/Chapter18/onlineStore/.gitignore deleted file mode 100644 index eb003b0..0000000 --- a/Chapter18/onlineStore/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -/node_modules -/public/hot -/public/storage -/storage/*.key -/vendor -.env -.env.backup -.phpunit.result.cache -docker-compose.override.yml -Homestead.json -Homestead.yaml -npm-debug.log -yarn-error.log -/.idea -/.vscode diff --git a/Chapter18/onlineStore/.styleci.yml b/Chapter18/onlineStore/.styleci.yml deleted file mode 100644 index 679a631..0000000 --- a/Chapter18/onlineStore/.styleci.yml +++ /dev/null @@ -1,13 +0,0 @@ -php: - preset: laravel - version: 8 - disabled: - - no_unused_imports - finder: - not-name: - - index.php -js: - finder: - not-name: - - webpack.mix.js -css: true diff --git a/Chapter18/onlineStore/README.md b/Chapter18/onlineStore/README.md deleted file mode 100644 index f171eca..0000000 --- a/Chapter18/onlineStore/README.md +++ /dev/null @@ -1,64 +0,0 @@ -

- -

-Build Status -Total Downloads -Latest Stable Version -License -

- -## About Laravel - -Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as: - -- [Simple, fast routing engine](https://laravel.com/docs/routing). -- [Powerful dependency injection container](https://laravel.com/docs/container). -- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage. -- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent). -- Database agnostic [schema migrations](https://laravel.com/docs/migrations). -- [Robust background job processing](https://laravel.com/docs/queues). -- [Real-time event broadcasting](https://laravel.com/docs/broadcasting). - -Laravel is accessible, powerful, and provides tools required for large, robust applications. - -## Learning Laravel - -Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework. - -If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 2000 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library. - -## Laravel Sponsors - -We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell). - -### Premium Partners - -- **[Vehikl](https://vehikl.com/)** -- **[Tighten Co.](https://tighten.co)** -- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** -- **[64 Robots](https://64robots.com)** -- **[Cubet Techno Labs](https://cubettech.com)** -- **[Cyber-Duck](https://cyber-duck.co.uk)** -- **[Many](https://www.many.co.uk)** -- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)** -- **[DevSquad](https://devsquad.com)** -- **[Curotec](https://www.curotec.com/services/technologies/laravel/)** -- **[OP.GG](https://op.gg)** -- **[WebReinvent](https://webreinvent.com/?utm_source=laravel&utm_medium=github&utm_campaign=patreon-sponsors)** -- **[Lendio](https://lendio.com)** - -## Contributing - -Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions). - -## Code of Conduct - -In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). - -## Security Vulnerabilities - -If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed. - -## License - -The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). diff --git a/Chapter18/onlineStore/app/Console/Kernel.php b/Chapter18/onlineStore/app/Console/Kernel.php deleted file mode 100644 index d8bc1d2..0000000 --- a/Chapter18/onlineStore/app/Console/Kernel.php +++ /dev/null @@ -1,32 +0,0 @@ -command('inspire')->hourly(); - } - - /** - * Register the commands for the application. - * - * @return void - */ - protected function commands() - { - $this->load(__DIR__.'/Commands'); - - require base_path('routes/console.php'); - } -} diff --git a/Chapter18/onlineStore/app/Exceptions/Handler.php b/Chapter18/onlineStore/app/Exceptions/Handler.php deleted file mode 100644 index 8e7fbd1..0000000 --- a/Chapter18/onlineStore/app/Exceptions/Handler.php +++ /dev/null @@ -1,41 +0,0 @@ -> - */ - protected $dontReport = [ - // - ]; - - /** - * A list of the inputs that are never flashed for validation exceptions. - * - * @var array - */ - protected $dontFlash = [ - 'current_password', - 'password', - 'password_confirmation', - ]; - - /** - * Register the exception handling callbacks for the application. - * - * @return void - */ - public function register() - { - $this->reportable(function (Throwable $e) { - // - }); - } -} diff --git a/Chapter18/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php b/Chapter18/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php deleted file mode 100644 index cd78cb3..0000000 --- a/Chapter18/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php +++ /dev/null @@ -1,16 +0,0 @@ -with("viewData", $viewData); - } -} diff --git a/Chapter18/onlineStore/app/Http/Controllers/Admin/AdminProductController.php b/Chapter18/onlineStore/app/Http/Controllers/Admin/AdminProductController.php deleted file mode 100644 index 4a317a5..0000000 --- a/Chapter18/onlineStore/app/Http/Controllers/Admin/AdminProductController.php +++ /dev/null @@ -1,48 +0,0 @@ -with("viewData", $viewData); - } - - public function store(Request $request) - { - $request->validate([ - "name" => "required|max:255", - "description" => "required", - "price" => "required|numeric|gt:0", - 'image' => 'image', - ]); - - $newProduct = new Product(); - $newProduct->setName($request->input('name')); - $newProduct->setDescription($request->input('description')); - $newProduct->setPrice($request->input('price')); - $newProduct->setImage("game.png"); - $newProduct->save(); - - if ($request->hasFile('image')) { - $imageName = $newProduct->getId().".".$request->file('image')->extension(); - Storage::disk('public')->put( - $imageName, - file_get_contents($request->file('image')->getRealPath()) - ); - $newProduct->setImage($imageName); - $newProduct->save(); - } - - return back(); - } -} diff --git a/Chapter18/onlineStore/app/Http/Controllers/Controller.php b/Chapter18/onlineStore/app/Http/Controllers/Controller.php deleted file mode 100644 index a0a2a8a..0000000 --- a/Chapter18/onlineStore/app/Http/Controllers/Controller.php +++ /dev/null @@ -1,13 +0,0 @@ -with("viewData", $viewData); - } - - public function about() - { - $viewData = []; - $viewData["title"] = "About us - Online Store"; - $viewData["subtitle"] = "About us"; - $viewData["description"] = "This is an about page ..."; - $viewData["author"] = "Developed by: Your Name"; - return view('home.about')->with("viewData", $viewData); - } -} diff --git a/Chapter18/onlineStore/app/Http/Controllers/ProductController.php b/Chapter18/onlineStore/app/Http/Controllers/ProductController.php deleted file mode 100644 index d27a3a3..0000000 --- a/Chapter18/onlineStore/app/Http/Controllers/ProductController.php +++ /dev/null @@ -1,29 +0,0 @@ -with("viewData", $viewData); - } - - public function show($id) - { - $viewData = []; - $product = Product::findOrFail($id); - $viewData["title"] = $product->getName()." - Online Store"; - $viewData["subtitle"] = $product->getName()." - Product information"; - $viewData["product"] = $product; - return view('product.show')->with("viewData", $viewData); - } -} diff --git a/Chapter18/onlineStore/app/Http/Kernel.php b/Chapter18/onlineStore/app/Http/Kernel.php deleted file mode 100644 index d3722c2..0000000 --- a/Chapter18/onlineStore/app/Http/Kernel.php +++ /dev/null @@ -1,67 +0,0 @@ - - */ - protected $middleware = [ - // \App\Http\Middleware\TrustHosts::class, - \App\Http\Middleware\TrustProxies::class, - \Fruitcake\Cors\HandleCors::class, - \App\Http\Middleware\PreventRequestsDuringMaintenance::class, - \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, - \App\Http\Middleware\TrimStrings::class, - \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, - ]; - - /** - * The application's route middleware groups. - * - * @var array> - */ - protected $middlewareGroups = [ - 'web' => [ - \App\Http\Middleware\EncryptCookies::class, - \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, - \Illuminate\Session\Middleware\StartSession::class, - // \Illuminate\Session\Middleware\AuthenticateSession::class, - \Illuminate\View\Middleware\ShareErrorsFromSession::class, - \App\Http\Middleware\VerifyCsrfToken::class, - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - - 'api' => [ - // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, - 'throttle:api', - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - ]; - - /** - * The application's route middleware. - * - * These middleware may be assigned to groups or used individually. - * - * @var array - */ - protected $routeMiddleware = [ - 'auth' => \App\Http\Middleware\Authenticate::class, - 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::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, - 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, - 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, - 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, - ]; -} diff --git a/Chapter18/onlineStore/app/Http/Middleware/Authenticate.php b/Chapter18/onlineStore/app/Http/Middleware/Authenticate.php deleted file mode 100644 index 704089a..0000000 --- a/Chapter18/onlineStore/app/Http/Middleware/Authenticate.php +++ /dev/null @@ -1,21 +0,0 @@ -expectsJson()) { - return route('login'); - } - } -} diff --git a/Chapter18/onlineStore/app/Http/Middleware/EncryptCookies.php b/Chapter18/onlineStore/app/Http/Middleware/EncryptCookies.php deleted file mode 100644 index 867695b..0000000 --- a/Chapter18/onlineStore/app/Http/Middleware/EncryptCookies.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter18/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/Chapter18/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php deleted file mode 100644 index 74cbd9a..0000000 --- a/Chapter18/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter18/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php b/Chapter18/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php deleted file mode 100644 index a2813a0..0000000 --- a/Chapter18/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php +++ /dev/null @@ -1,32 +0,0 @@ -check()) { - return redirect(RouteServiceProvider::HOME); - } - } - - return $next($request); - } -} diff --git a/Chapter18/onlineStore/app/Http/Middleware/TrimStrings.php b/Chapter18/onlineStore/app/Http/Middleware/TrimStrings.php deleted file mode 100644 index 88cadca..0000000 --- a/Chapter18/onlineStore/app/Http/Middleware/TrimStrings.php +++ /dev/null @@ -1,19 +0,0 @@ - - */ - protected $except = [ - 'current_password', - 'password', - 'password_confirmation', - ]; -} diff --git a/Chapter18/onlineStore/app/Http/Middleware/TrustHosts.php b/Chapter18/onlineStore/app/Http/Middleware/TrustHosts.php deleted file mode 100644 index 7186414..0000000 --- a/Chapter18/onlineStore/app/Http/Middleware/TrustHosts.php +++ /dev/null @@ -1,20 +0,0 @@ - - */ - public function hosts() - { - return [ - $this->allSubdomainsOfApplicationUrl(), - ]; - } -} diff --git a/Chapter18/onlineStore/app/Http/Middleware/TrustProxies.php b/Chapter18/onlineStore/app/Http/Middleware/TrustProxies.php deleted file mode 100644 index 3391630..0000000 --- a/Chapter18/onlineStore/app/Http/Middleware/TrustProxies.php +++ /dev/null @@ -1,28 +0,0 @@ -|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/Chapter18/onlineStore/app/Http/Middleware/VerifyCsrfToken.php b/Chapter18/onlineStore/app/Http/Middleware/VerifyCsrfToken.php deleted file mode 100644 index 9e86521..0000000 --- a/Chapter18/onlineStore/app/Http/Middleware/VerifyCsrfToken.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter18/onlineStore/app/Models/Product.php b/Chapter18/onlineStore/app/Models/Product.php deleted file mode 100644 index 84efbb6..0000000 --- a/Chapter18/onlineStore/app/Models/Product.php +++ /dev/null @@ -1,89 +0,0 @@ -attributes['id'] - int - contains the product primary key (id) - * $this->attributes['name'] - string - contains the product name - * $this->attributes['description'] - string - contains the product description - * $this->attributes['image'] - string - contains the product image - * $this->attributes['price'] - int - contains the product price - * $this->attributes['created_at'] - timestamp - contains the product creation date - * $this->attributes['updated_at'] - timestamp - contains the product update date - */ - - public function getId() - { - return $this->attributes['id']; - } - - public function setId($id) - { - $this->attributes['id'] = $id; - } - - public function getName() - { - return $this->attributes['name']; - } - - public function setName($name) - { - $this->attributes['name'] = $name; - } - - public function getDescription() - { - return $this->attributes['description']; - } - - public function setDescription($description) - { - $this->attributes['description'] = $description; - } - - public function getImage() - { - return $this->attributes['image']; - } - - public function setImage($image) - { - $this->attributes['image'] = $image; - } - - public function getPrice() - { - return $this->attributes['price']; - } - - public function setPrice($price) - { - $this->attributes['price'] = $price; - } - - public function getCreatedAt() - { - return $this->attributes['created_at']; - } - - public function setCreatedAt($createdAt) - { - $this->attributes['created_at'] = $createdAt; - } - - public function getUpdatedAt() - { - return $this->attributes['updated_at']; - } - - public function setUpdatedAt($updatedAt) - { - $this->attributes['updated_at'] = $updatedAt; - } -} diff --git a/Chapter18/onlineStore/app/Models/User.php b/Chapter18/onlineStore/app/Models/User.php deleted file mode 100644 index 8996368..0000000 --- a/Chapter18/onlineStore/app/Models/User.php +++ /dev/null @@ -1,44 +0,0 @@ - - */ - 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', - ]; -} diff --git a/Chapter18/onlineStore/app/Providers/AppServiceProvider.php b/Chapter18/onlineStore/app/Providers/AppServiceProvider.php deleted file mode 100644 index ee8ca5b..0000000 --- a/Chapter18/onlineStore/app/Providers/AppServiceProvider.php +++ /dev/null @@ -1,28 +0,0 @@ - - */ - protected $policies = [ - // 'App\Models\Model' => 'App\Policies\ModelPolicy', - ]; - - /** - * Register any authentication / authorization services. - * - * @return void - */ - public function boot() - { - $this->registerPolicies(); - - // - } -} diff --git a/Chapter18/onlineStore/app/Providers/BroadcastServiceProvider.php b/Chapter18/onlineStore/app/Providers/BroadcastServiceProvider.php deleted file mode 100644 index 395c518..0000000 --- a/Chapter18/onlineStore/app/Providers/BroadcastServiceProvider.php +++ /dev/null @@ -1,21 +0,0 @@ -> - */ - protected $listen = [ - Registered::class => [ - SendEmailVerificationNotification::class, - ], - ]; - - /** - * Register any events for your application. - * - * @return void - */ - public function boot() - { - // - } -} diff --git a/Chapter18/onlineStore/app/Providers/RouteServiceProvider.php b/Chapter18/onlineStore/app/Providers/RouteServiceProvider.php deleted file mode 100644 index 7c17d1f..0000000 --- a/Chapter18/onlineStore/app/Providers/RouteServiceProvider.php +++ /dev/null @@ -1,63 +0,0 @@ -configureRateLimiting(); - - $this->routes(function () { - Route::prefix('api') - ->middleware('api') - ->namespace($this->namespace) - ->group(base_path('routes/api.php')); - - Route::middleware('web') - ->namespace($this->namespace) - ->group(base_path('routes/web.php')); - }); - } - - /** - * Configure the rate limiters for the application. - * - * @return void - */ - protected function configureRateLimiting() - { - RateLimiter::for('api', function (Request $request) { - return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); - }); - } -} diff --git a/Chapter18/onlineStore/artisan b/Chapter18/onlineStore/artisan deleted file mode 100644 index 67a3329..0000000 --- a/Chapter18/onlineStore/artisan +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env php -make(Illuminate\Contracts\Console\Kernel::class); - -$status = $kernel->handle( - $input = new Symfony\Component\Console\Input\ArgvInput, - new Symfony\Component\Console\Output\ConsoleOutput -); - -/* -|-------------------------------------------------------------------------- -| Shutdown The Application -|-------------------------------------------------------------------------- -| -| Once Artisan has finished running, we will fire off the shutdown events -| so that any final work may be done by the application before we shut -| down the process. This is the last thing to happen to the request. -| -*/ - -$kernel->terminate($input, $status); - -exit($status); diff --git a/Chapter18/onlineStore/bootstrap/app.php b/Chapter18/onlineStore/bootstrap/app.php deleted file mode 100644 index 037e17d..0000000 --- a/Chapter18/onlineStore/bootstrap/app.php +++ /dev/null @@ -1,55 +0,0 @@ -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/Chapter18/onlineStore/bootstrap/cache/.gitignore b/Chapter18/onlineStore/bootstrap/cache/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter18/onlineStore/bootstrap/cache/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter18/onlineStore/composer.json b/Chapter18/onlineStore/composer.json deleted file mode 100644 index f0f2eda..0000000 --- a/Chapter18/onlineStore/composer.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "name": "laravel/laravel", - "type": "project", - "description": "The Laravel Framework.", - "keywords": ["framework", "laravel"], - "license": "MIT", - "require": { - "php": "^8.0", - "fruitcake/laravel-cors": "^2.0.5", - "guzzlehttp/guzzle": "^7.2", - "laravel/framework": "^9.0", - "laravel/sanctum": "^2.14", - "laravel/tinker": "^2.7" - }, - "require-dev": { - "fakerphp/faker": "^1.9.1", - "laravel/sail": "^1.0.1", - "mockery/mockery": "^1.4.4", - "nunomaduro/collision": "^6.1", - "phpunit/phpunit": "^9.5.10", - "spatie/laravel-ignition": "^1.0", - "squizlabs/php_codesniffer": "^3.6" - }, - "autoload": { - "psr-4": { - "App\\": "app/", - "Database\\Factories\\": "database/factories/", - "Database\\Seeders\\": "database/seeders/" - } - }, - "autoload-dev": { - "psr-4": { - "Tests\\": "tests/" - } - }, - "scripts": { - "post-autoload-dump": [ - "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", - "@php artisan package:discover --ansi" - ], - "post-update-cmd": [ - "@php artisan vendor:publish --tag=laravel-assets --ansi --force" - ], - "post-root-package-install": [ - "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" - ], - "post-create-project-cmd": [ - "@php artisan key:generate --ansi" - ] - }, - "extra": { - "laravel": { - "dont-discover": [] - } - }, - "config": { - "optimize-autoloader": true, - "preferred-install": "dist", - "sort-packages": true - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/Chapter18/onlineStore/composer.lock b/Chapter18/onlineStore/composer.lock deleted file mode 100644 index b55e897..0000000 --- a/Chapter18/onlineStore/composer.lock +++ /dev/null @@ -1,7860 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "8bdcc31974d0d5a00db79c82827c8815", - "packages": [ - { - "name": "asm89/stack-cors", - "version": "v2.1.1", - "source": { - "type": "git", - "url": "https://github.com/asm89/stack-cors.git", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4|^5|^6" - }, - "require-dev": { - "phpunit/phpunit": "^7|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "psr-4": { - "Asm89\\Stack\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alexander", - "email": "iam.asm89@gmail.com" - } - ], - "description": "Cross-origin resource sharing library and stack middleware", - "homepage": "https://github.com/asm89/stack-cors", - "keywords": [ - "cors", - "stack" - ], - "support": { - "issues": "https://github.com/asm89/stack-cors/issues", - "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" - }, - "time": "2022-01-18T09:12:03+00:00" - }, - { - "name": "brick/math", - "version": "0.9.3", - "source": { - "type": "git", - "url": "https://github.com/brick/math.git", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", - "vimeo/psalm": "4.9.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Brick\\Math\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Arbitrary-precision arithmetic library", - "keywords": [ - "Arbitrary-precision", - "BigInteger", - "BigRational", - "arithmetic", - "bigdecimal", - "bignum", - "brick", - "math" - ], - "support": { - "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.9.3" - }, - "funding": [ - { - "url": "https://github.com/BenMorel", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/brick/math", - "type": "tidelift" - } - ], - "time": "2021-08-15T20:50:18+00:00" - }, - { - "name": "dflydev/dot-access-data", - "version": "v3.0.1", - "source": { - "type": "git", - "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c", - "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": "^3.14" - }, - "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.1" - }, - "time": "2021-08-13T13:06:58+00:00" - }, - { - "name": "doctrine/inflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "vimeo/psalm": "^4.10" - }, - "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.4" - }, - "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": "2021-10-22T20:16:43+00:00" - }, - { - "name": "doctrine/lexer", - "version": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" - } - }, - "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/1.2.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%2Flexer", - "type": "tidelift" - } - ], - "time": "2022-01-12T08:27:12+00:00" - }, - { - "name": "dragonmantank/cron-expression", - "version": "v3.3.1", - "source": { - "type": "git", - "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "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.1" - }, - "funding": [ - { - "url": "https://github.com/dragonmantank", - "type": "github" - } - ], - "time": "2022-01-18T15:43:28+00:00" - }, - { - "name": "egulias/email-validator", - "version": "3.1.2", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ee0db30118f661fb166bcffbf5d82032df484697", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^1.2", - "php": ">=7.2", - "symfony/polyfill-intl-idn": "^1.15" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^8.5.8|^9.3.3", - "vimeo/psalm": "^4" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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/3.1.2" - }, - "funding": [ - { - "url": "https://github.com/egulias", - "type": "github" - } - ], - "time": "2021-10-11T09:18:27+00:00" - }, - { - "name": "fruitcake/laravel-cors", - "version": "v2.0.5", - "source": { - "type": "git", - "url": "https://github.com/fruitcake/laravel-cors.git", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "shasum": "" - }, - "require": { - "asm89/stack-cors": "^2.0.1", - "illuminate/contracts": "^6|^7|^8|^9", - "illuminate/support": "^6|^7|^8|^9", - "php": ">=7.2", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4.3.4|^5|^6" - }, - "require-dev": { - "laravel/framework": "^6|^7.24|^8", - "orchestra/testbench-dusk": "^4|^5|^6|^7", - "phpunit/phpunit": "^6|^7|^8|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - }, - "laravel": { - "providers": [ - "Fruitcake\\Cors\\CorsServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Fruitcake\\Cors\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fruitcake", - "homepage": "https://fruitcake.nl" - }, - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", - "keywords": [ - "api", - "cors", - "crossdomain", - "laravel" - ], - "support": { - "issues": "https://github.com/fruitcake/laravel-cors/issues", - "source": "https://github.com/fruitcake/laravel-cors/tree/v2.0.5" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "time": "2022-01-03T14:53:04+00:00" - }, - { - "name": "graham-campbell/result-type", - "version": "v1.0.4", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "0690bde05318336c7221785f2a932467f98b64ca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/0690bde05318336c7221785f2a932467f98b64ca", - "reference": "0690bde05318336c7221785f2a932467f98b64ca", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "phpoption/phpoption": "^1.8" - }, - "require-dev": { - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", - "type": "tidelift" - } - ], - "time": "2021-11-21T21:41:47+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "7.4.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.8.3 || ^2.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.4.1", - "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.5 || ^9.3.5", - "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": { - "branch-alias": { - "dev-master": "7.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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.4.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": "2021-12-06T18:43:05+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "1.5.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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/1.5.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "time": "2021-10-22T20:56:57+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.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.4.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.8 || ^9.3.10" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "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.1.0" - }, - "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": "2021-10-06T17:43:30+00:00" - }, - { - "name": "laravel/framework", - "version": "v9.0.1", - "source": { - "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "shasum": "" - }, - "require": { - "doctrine/inflector": "^2.0", - "dragonmantank/cron-expression": "^3.1", - "egulias/email-validator": "^3.1", - "ext-mbstring": "*", - "ext-openssl": "*", - "laravel/serializable-closure": "^1.0", - "league/commonmark": "^2.2", - "league/flysystem": "^3.0", - "monolog/monolog": "^2.0", - "nesbot/carbon": "^2.53.1", - "php": "^8.0.2", - "psr/container": "^1.1.1|^2.0.1", - "psr/log": "^1.0|^2.0|^3.0", - "psr/simple-cache": "^1.0|^2.0|^3.0", - "ramsey/uuid": "^4.2.2", - "symfony/console": "^6.0", - "symfony/error-handler": "^6.0", - "symfony/finder": "^6.0", - "symfony/http-foundation": "^6.0", - "symfony/http-kernel": "^6.0", - "symfony/mailer": "^6.0", - "symfony/mime": "^6.0", - "symfony/process": "^6.0", - "symfony/routing": "^6.0", - "symfony/var-dumper": "^6.0", - "tijsverkoyen/css-to-inline-styles": "^2.2.2", - "vlucas/phpdotenv": "^5.4.1", - "voku/portable-ascii": "^2.0" - }, - "conflict": { - "tightenco/collect": "<5.5.33" - }, - "provide": { - "psr/container-implementation": "1.1|2.0", - "psr/simple-cache-implementation": "1.0|2.0|3.0" - }, - "replace": { - "illuminate/auth": "self.version", - "illuminate/broadcasting": "self.version", - "illuminate/bus": "self.version", - "illuminate/cache": "self.version", - "illuminate/collections": "self.version", - "illuminate/conditionable": "self.version", - "illuminate/config": "self.version", - "illuminate/console": "self.version", - "illuminate/container": "self.version", - "illuminate/contracts": "self.version", - "illuminate/cookie": "self.version", - "illuminate/database": "self.version", - "illuminate/encryption": "self.version", - "illuminate/events": "self.version", - "illuminate/filesystem": "self.version", - "illuminate/hashing": "self.version", - "illuminate/http": "self.version", - "illuminate/log": "self.version", - "illuminate/macroable": "self.version", - "illuminate/mail": "self.version", - "illuminate/notifications": "self.version", - "illuminate/pagination": "self.version", - "illuminate/pipeline": "self.version", - "illuminate/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": { - "aws/aws-sdk-php": "^3.198.1", - "doctrine/dbal": "^2.13.3|^3.1.4", - "fakerphp/faker": "^1.9.2", - "guzzlehttp/guzzle": "^7.2", - "league/flysystem-aws-s3-v3": "^3.0", - "league/flysystem-ftp": "^3.0", - "league/flysystem-sftp-v3": "^3.0", - "mockery/mockery": "^1.4.4", - "orchestra/testbench-core": "^7.0", - "pda/pheanstalk": "^4.0", - "phpstan/phpstan": "^1.0", - "phpunit/phpunit": "^9.5.8", - "predis/predis": "^1.1.9", - "symfony/amazon-mailer": "^6.0", - "symfony/cache": "^6.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.198.1).", - "brianium/paratest": "Required to run tests in parallel (^6.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", - "ext-bcmath": "Required to use the multiple_of validation rule.", - "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.", - "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.2).", - "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-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", - "mockery/mockery": "Required to use mocking (^1.4.4).", - "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).", - "predis/predis": "Required to use the predis connector (^1.1.9).", - "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.0).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^6.0).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.0).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.0).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.0).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.x-dev" - } - }, - "autoload": { - "files": [ - "src/Illuminate/Collections/helpers.php", - "src/Illuminate/Events/functions.php", - "src/Illuminate/Foundation/helpers.php", - "src/Illuminate/Support/helpers.php" - ], - "psr-4": { - "Illuminate\\": "src/Illuminate/", - "Illuminate\\Support\\": [ - "src/Illuminate/Macroable/", - "src/Illuminate/Collections/", - "src/Illuminate/Conditionable/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Laravel Framework.", - "homepage": "https://laravel.com", - "keywords": [ - "framework", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2022-02-09T15:00:05+00:00" - }, - { - "name": "laravel/sanctum", - "version": "v2.14.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/sanctum.git", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/0647a87140c7522e75826cffcadb3ad6e01f71e9", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/contracts": "^6.9|^7.0|^8.0|^9.0", - "illuminate/database": "^6.9|^7.0|^8.0|^9.0", - "illuminate/support": "^6.9|^7.0|^8.0|^9.0", - "php": "^7.2|^8.0" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0", - "phpunit/phpunit": "^8.0|^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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": "2022-01-12T15:07:43+00:00" - }, - { - "name": "laravel/serializable-closure", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/serializable-closure.git", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/65c9faf50d567b65d81764a44526545689e3fe63", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "pestphp/pest": "^1.18", - "phpstan/phpstan": "^0.12.98", - "symfony/var-dumper": "^5.3" - }, - "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": "2022-02-01T16:29:39+00:00" - }, - { - "name": "laravel/tinker", - "version": "v2.7.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/tinker.git", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/5f2f9815b7631b9f586a3de7933c25f9327d4073", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073", - "shasum": "" - }, - "require": { - "illuminate/console": "^6.0|^7.0|^8.0|^9.0", - "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.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", - "phpunit/phpunit": "^8.5.8|^9.3.3" - }, - "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.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.7.0" - }, - "time": "2022-01-10T08:52:49+00:00" - }, - { - "name": "league/commonmark", - "version": "2.2.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/commonmark.git", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "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.15" - }, - "require-dev": { - "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.0", - "commonmark/commonmark.js": "0.30.0", - "composer/package-versions-deprecated": "^1.8", - "erusev/parsedown": "^1.0", - "ext-json": "*", - "github/gfm": "0.29.0", - "michelf/php-markdown": "^1.4", - "phpstan/phpstan": "^0.12.88 || ^1.0.0", - "phpunit/phpunit": "^9.5.5", - "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", - "unleashedtech/php-coding-standard": "^3.1", - "vimeo/psalm": "^4.7.3" - }, - "suggest": { - "symfony/yaml": "v2.3+ required if using the Front Matter extension" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.3-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": "2022-01-25T14:37:33+00:00" - }, - { - "name": "league/config", - "version": "v1.1.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/config.git", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/config/zipball/a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^3.0.1", - "nette/schema": "^1.2", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.90", - "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": "2021-08-14T12:15:32+00:00" - }, - { - "name": "league/flysystem", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9f8b4260031bfef5497477da53dd57b2aaff0e06", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06", - "shasum": "" - }, - "require": { - "ext-json": "*", - "league/mime-type-detection": "^1.0.0", - "php": "^8.0.2" - }, - "conflict": { - "guzzlehttp/guzzle": "<7.0", - "guzzlehttp/ringphp": "<1.1.1", - "symfony/http-client": "<5.2" - }, - "require-dev": { - "async-aws/s3": "^1.5", - "async-aws/simple-s3": "^1.0", - "aws/aws-sdk-php": "^3.198.1", - "composer/semver": "^3.0", - "ext-fileinfo": "*", - "ext-ftp": "*", - "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.5", - "google/cloud-storage": "^1.23", - "phpseclib/phpseclib": "^2.0", - "phpstan/phpstan": "^0.12.26", - "phpunit/phpunit": "^9.5.11", - "sabre/dav": "^4.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.0.3" - }, - "funding": [ - { - "url": "https://offset.earth/frankdejonge", - "type": "custom" - }, - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2022-01-31T19:41:04+00:00" - }, - { - "name": "league/mime-type-detection", - "version": "1.9.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/aa70e813a6ad3d1558fc927863d47309b4c23e69", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.2", - "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" - }, - "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.9.0" - }, - "funding": [ - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2021-11-21T11:48:40+00:00" - }, - { - "name": "monolog/monolog", - "version": "2.3.5", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd4380d6fc37626e2f799f29d91195040137eba9", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "provide": { - "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7", - "graylog2/gelf-php": "^1.4.2", - "mongodb/mongodb": "^1.8", - "php-amqplib/php-amqplib": "~2.4 || ^3", - "php-console/php-console": "^3.1.3", - "phpspec/prophecy": "^1.6.1", - "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5", - "predis/predis": "^1.1", - "rollbar/rollbar": "^1.3", - "ruflin/elastica": ">=0.90@dev", - "swiftmailer/swiftmailer": "^5.3|^6.0" - }, - "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", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "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": "2.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/2.3.5" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" - } - ], - "time": "2021-10-01T21:08:31+00:00" - }, - { - "name": "nesbot/carbon", - "version": "2.56.0", - "source": { - "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1.8 || ^8.0", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "doctrine/dbal": "^2.0 || ^3.0", - "doctrine/orm": "^2.7", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "phpmd/phpmd": "^2.9", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.54 || ^1.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.14", - "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://opencollective.com/Carbon", - "type": "open_collective" - }, - { - "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", - "type": "tidelift" - } - ], - "time": "2022-01-21T17:08:38+00:00" - }, - { - "name": "nette/schema", - "version": "v1.2.2", - "source": { - "type": "git", - "url": "https://github.com/nette/schema.git", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/9a39cef03a5b34c7de64f551538cbba05c2be5df", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df", - "shasum": "" - }, - "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": ">=7.1 <8.2" - }, - "require-dev": { - "nette/tester": "^2.3 || ^2.4", - "phpstan/phpstan-nette": "^0.12", - "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.2" - }, - "time": "2021-10-15T11:40:02+00:00" - }, - { - "name": "nette/utils", - "version": "v3.2.7", - "source": { - "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/0af4e3de4df9f1543534beab255ccf459e7a2c99", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99", - "shasum": "" - }, - "require": { - "php": ">=7.2 <8.2" - }, - "conflict": { - "nette/di": "<3.0.6" - }, - "require-dev": { - "nette/tester": "~2.0", - "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.3" - }, - "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()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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 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/v3.2.7" - }, - "time": "2022-01-24T11:29:14+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.13.2", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", - "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.13.2" - }, - "time": "2021-11-30T19:35:32+00:00" - }, - { - "name": "phpoption/phpoption", - "version": "1.8.1", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-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.8.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", - "type": "tidelift" - } - ], - "time": "2021-12-04T23:24:31+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.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.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": "http://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/tree/master" - }, - "time": "2020-06-29T06:28:15+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.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": "http://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/master" - }, - "time": "2019-04-30T12:38:16+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.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": "http://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/master" - }, - "time": "2016-08-06T14:39: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.1", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "570292577277f06f590635381a7f761a6cf4f026" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/570292577277f06f590635381a7f761a6cf4f026", - "reference": "570292577277f06f590635381a7f761a6cf4f026", - "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" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "3.17.05.02" - }, - "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.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." - }, - "bin": [ - "bin/psysh" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "0.11.x-dev" - } - }, - "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.1" - }, - "time": "2022-01-03T13:58:38+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": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/ramsey/collection.git", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "shasum": "" - }, - "require": { - "php": "^7.3 || ^8", - "symfony/polyfill-php81": "^1.23" - }, - "require-dev": { - "captainhook/captainhook": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "ergebnis/composer-normalize": "^2.6", - "fakerphp/faker": "^1.5", - "hamcrest/hamcrest-php": "^2", - "jangregor/phpstan-prophecy": "^0.8", - "mockery/mockery": "^1.3", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1", - "phpstan/phpstan": "^0.12.32", - "phpstan/phpstan-mockery": "^0.12.5", - "phpstan/phpstan-phpunit": "^0.12.11", - "phpunit/phpunit": "^8.5 || ^9", - "psy/psysh": "^0.10.4", - "slevomat/coding-standard": "^6.3", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.4" - }, - "type": "library", - "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/1.2.2" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "time": "2021-10-10T03:01:02+00:00" - }, - { - "name": "ramsey/uuid", - "version": "4.2.3", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "shasum": "" - }, - "require": { - "brick/math": "^0.8 || ^0.9", - "ext-json": "*", - "php": "^7.2 || ^8.0", - "ramsey/collection": "^1.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php80": "^1.14" - }, - "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", - "moontoast/math": "^1.1", - "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.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-mockery": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^8.5 || ^9", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" - }, - "suggest": { - "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-ctype": "Enables faster processing of character classification using ctype functions.", - "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": { - "branch-alias": { - "dev-main": "4.x-dev" - }, - "captainhook": { - "force-install": true - } - }, - "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "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.2.3" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2021-09-25T23:10:38+00:00" - }, - { - "name": "symfony/console", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/22e8efd019c3270c4f79376234a3f8752cd25490", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.4|^6.0" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/css-selector", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/1955d595c12c111629cc814d3f2a2ff13580508a", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a", - "shasum": "" - }, - "require": { - "php": ">=8.0.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/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-11-01T23:48:49+00:00" - }, - { - "name": "symfony/error-handler", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/20343b3bad7ebafa38138ddcb97290a24722b57b", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" - }, - "bin": [ - "Resources/bin/patch-type-declarations" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to manage errors and ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6472ea2dd415e925b90ca82be64b8bc6157f3934", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/event-dispatcher-contracts": "^2|^3" - }, - "conflict": { - "symfony/dependency-injection": "<5.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^5.4|^6.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/aa5422287b75594b90ee9cd807caf8f0df491385", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/event-dispatcher": "^1" - }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-07-15T12:33:35+00:00" - }, - { - "name": "symfony/finder", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/8661b74dbabc23223f38c9b99d3f8ade71170430", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ad157299ced81a637fade1efcadd688d6deba5c1", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1" - }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/cache": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0" - }, - "suggest": { - "symfony/mime": "To use the file extension guesser" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v6.0.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/error-handler": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", - "symfony/twig-bridge": "<5.4", - "symfony/validator": "<5.4", - "twig/twig": "<2.13" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/process": "^5.4|^6.0", - "symfony/routing": "^5.4|^6.0", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-29T18:12:46+00:00" - }, - { - "name": "symfony/mailer", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mailer.git", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "shasum": "" - }, - "require": { - "egulias/email-validator": "^2.1.10|^3", - "php": ">=8.0.2", - "psr/event-dispatcher": "^1", - "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3" - }, - "conflict": { - "symfony/http-kernel": "<5.4" - }, - "require-dev": { - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/messenger": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/mime", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/2cd9601efd040e56f43360daa68f3c6b0534923a", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "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" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "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.24.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": "2021-10-20T20:35:02+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-11-23T21:10:46+00:00" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44", - "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.23-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.24.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": "2021-09-14T14:02:44+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.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": "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.24.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": "2021-11-30T18:21:41+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-05-27T09:17:38+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:33+00:00" - }, - { - "name": "symfony/polyfill-php81", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:11+00:00" - }, - { - "name": "symfony/process", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/298ed357274c1868c20a0061df256a1250a6c4af", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/routing", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/yaml": "<5.4" - }, - "require-dev": { - "doctrine/annotations": "^1.12", - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/36715ebf9fb9db73db0cb24263c79077c6fe8603", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/container": "^2.0" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "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.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": "2021-11-04T17:53:12+00:00" - }, - { - "name": "symfony/string", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/522144f0c4c004c80d56fa47e40e17028e2eefc2", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.0" - }, - "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/translation-contracts": "^2.0|^3.0", - "symfony/var-exporter": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "files": [ - "Resources/functions.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 an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/translation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/71bb15335798f8c4da110911bcf2d2fead7a430d", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.3|^3.0" - }, - "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" - }, - "provide": { - "symfony/translation-implementation": "2.3|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-07T00:29:03+00:00" - }, - { - "name": "symfony/translation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "suggest": { - "symfony/translation-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - } - }, - "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.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": "2021-09-07T12:43:40+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7b701676fc64f9ef11f9b4870f16b48f66be4834", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<5.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-17T16:30:44+00:00" - }, - { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.4", - "source": { - "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" - } - ], - "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", - "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "support": { - "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" - }, - "time": "2021-12-08T09:12:39+00:00" - }, - { - "name": "vlucas/phpdotenv", - "version": "v5.4.1", - "source": { - "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", - "shasum": "" - }, - "require": { - "ext-pcre": "*", - "graham-campbell/result-type": "^1.0.2", - "php": "^7.1.3 || ^8.0", - "phpoption/phpoption": "^1.8", - "symfony/polyfill-ctype": "^1.23", - "symfony/polyfill-mbstring": "^1.23.1", - "symfony/polyfill-php80": "^1.23.1" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" - }, - "suggest": { - "ext-filter": "Required to use the boolean validator." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.4-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.4.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", - "type": "tidelift" - } - ], - "time": "2021-12-12T23:22:04+00:00" - }, - { - "name": "voku/portable-ascii", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/voku/portable-ascii.git", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/9bd89e83cecdf8c37b64909454249eaed98b2c89", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89", - "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.0" - }, - "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-01-24T18:59:03+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "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.10.0" - }, - "time": "2021-03-09T10:59:23+00:00" - } - ], - "packages-dev": [ - { - "name": "doctrine/instantiator", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.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%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2020-11-10T18:47:58+00:00" - }, - { - "name": "facade/ignition-contracts", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/facade/ignition-contracts.git", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^v2.15.8", - "phpunit/phpunit": "^9.3.11", - "vimeo/psalm": "^3.17.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Facade\\IgnitionContracts\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://flareapp.io", - "role": "Developer" - } - ], - "description": "Solution contracts for Ignition", - "homepage": "https://github.com/facade/ignition-contracts", - "keywords": [ - "contracts", - "flare", - "ignition" - ], - "support": { - "issues": "https://github.com/facade/ignition-contracts/issues", - "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" - }, - "time": "2020-10-16T08:27:54+00:00" - }, - { - "name": "fakerphp/faker", - "version": "v1.19.0", - "source": { - "type": "git", - "url": "https://github.com/FakerPHP/Faker.git", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^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": "*", - "symfony/phpunit-bridge": "^4.4 || ^5.2" - }, - "suggest": { - "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", - "ext-curl": "Required by Faker\\Provider\\Image to download images.", - "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", - "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.19-dev" - } - }, - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "François Zaninotto" - } - ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], - "support": { - "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0" - }, - "time": "2022-02-02T17:38:57+00:00" - }, - { - "name": "filp/whoops", - "version": "2.14.5", - "source": { - "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "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.14.5" - }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "time": "2022-01-07T12:00:00+00:00" - }, - { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "shasum": "" - }, - "require": { - "php": "^5.3|^7.0|^8.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" - }, - "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "classmap": [ - "hamcrest" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "This is the PHP port of Hamcrest Matchers", - "keywords": [ - "test" - ], - "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" - }, - "time": "2020-07-09T08:09:16+00:00" - }, - { - "name": "laravel/sail", - "version": "v1.13.2", - "source": { - "type": "git", - "url": "https://github.com/laravel/sail.git", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.0|^9.0", - "illuminate/contracts": "^8.0|^9.0", - "illuminate/support": "^8.0|^9.0", - "php": "^7.3|^8.0" - }, - "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": "2022-02-08T14:14:12+00:00" - }, - { - "name": "mockery/mockery", - "version": "1.5.0", - "source": { - "type": "git", - "url": "https://github.com/mockery/mockery.git", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "shasum": "" - }, - "require": { - "hamcrest/hamcrest-php": "^2.0.1", - "lib-pcre": ">=7.0", - "php": "^7.3 || ^8.0" - }, - "conflict": { - "phpunit/phpunit": "<8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-0": { - "Mockery": "library/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" - } - ], - "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": { - "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.5.0" - }, - "time": "2022-01-20T13:18:17+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.10.2", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "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.10.2" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2020-11-13T09:40:50+00:00" - }, - { - "name": "nunomaduro/collision", - "version": "v6.1.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/collision.git", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "shasum": "" - }, - "require": { - "facade/ignition-contracts": "^1.0.2", - "filp/whoops": "^2.14.5", - "php": "^8.0.0", - "symfony/console": "^6.0.2" - }, - "require-dev": { - "brianium/paratest": "^6.4.1", - "laravel/framework": "^9.0", - "nunomaduro/larastan": "^1.0.2", - "nunomaduro/mock-final-classes": "^1.1.0", - "orchestra/testbench": "^7.0.0", - "phpunit/phpunit": "^9.5.11" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "6.x-dev" - }, - "laravel": { - "providers": [ - "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" - ] - } - }, - "autoload": { - "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": "2022-01-18T17:49:08+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.1.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/15a90844ad40f127afd244c0cad228de2a80052a", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a", - "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.1.1" - }, - "time": "2022-02-07T21:56:48+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.6.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "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.6.0" - }, - "time": "2022-01-04T19:58:01+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" - }, - "time": "2021-12-08T12:19:24+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "9.2.10", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d5850aaf931743067f4bfc1ae4cbd06468400687", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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 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", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.10" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-05T09:12:13+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "3.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-02T12:48:52+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "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/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:58:55+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T05:33:50+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.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/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:16:10+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "9.5.13", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/597cb647654ede35e43b137926dfdfef0fb11743", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.3.1", - "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": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.7", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", - "sebastian/version": "^3.0.2" - }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.13" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-01-24T07:33:35+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:08:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "1.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:08:54+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:30:19+00:00" - }, - { - "name": "sebastian/comparator", - "version": "4.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:49:45+00:00" - }, - { - "name": "sebastian/complexity", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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 calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:52:27+00:00" - }, - { - "name": "sebastian/diff", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:10:38+00:00" - }, - { - "name": "sebastian/environment", - "version": "5.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-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": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:52:38+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "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", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-11-11T14:18:36+00:00" - }, - { - "name": "sebastian/global-state", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-11T13:31:12+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-28T06:42:11+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "http://www.github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:17:30+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:45:17+00:00" - }, - { - "name": "sebastian/type", - "version": "2.3.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-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/2.3.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-15T12:49:02+00:00" - }, - { - "name": "sebastian/version", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:39:44+00:00" - }, - { - "name": "spatie/backtrace", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/backtrace.git", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "ext-json": "*", - "phpunit/phpunit": "^9.3", - "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": { - "issues": "https://github.com/spatie/backtrace/issues", - "source": "https://github.com/spatie/backtrace/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/sponsors/spatie", - "type": "github" - }, - { - "url": "https://spatie.be/open-source/support-us", - "type": "other" - } - ], - "time": "2021-11-09T10:57:15+00:00" - }, - { - "name": "spatie/flare-client-php", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/flare-client-php.git", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "shasum": "" - }, - "require": { - "illuminate/pipeline": "^8.0|^9.0", - "php": "^8.0", - "spatie/backtrace": "^1.2", - "symfony/http-foundation": "^5.0|^6.0", - "symfony/mime": "^5.2|^6.0", - "symfony/process": "^5.2|^6.0", - "symfony/var-dumper": "^5.2|^6.0" - }, - "require-dev": { - "dms/phpunit-arraysubset-asserts": "^0.3.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/phpunit-snapshot-assertions": "^4.0" - }, - "type": "library", - "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.0.1" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2022-02-04T15:21:00+00:00" - }, - { - "name": "spatie/ignition", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/spatie/ignition.git", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/d2d5ba823af3004268556e87dfc94449e4159f5a", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "monolog/monolog": "^2.0", - "php": "^8.0", - "spatie/flare-client-php": "^1.0", - "symfony/console": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "mockery/mockery": "^1.4", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/ray": "^1.32", - "symfony/process": "^5.4|^6.0" - }, - "type": "library", - "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": "2022-01-19T12:57:41+00:00" - }, - { - "name": "spatie/laravel-ignition", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/68250225a9f83b086462c2af1b1139dfde48fbd2", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*", - "illuminate/support": "^8.77|^9.0", - "monolog/monolog": "^2.3", - "php": "^8.0", - "spatie/flare-client-php": "^1.0.1", - "spatie/ignition": "^1.0", - "symfony/console": "^5.0|^6.0", - "symfony/var-dumper": "^5.0|^6.0" - }, - "require-dev": { - "filp/whoops": "^2.14", - "livewire/livewire": "^2.8|dev-develop", - "mockery/mockery": "^1.4", - "nunomaduro/larastan": "^1.0", - "orchestra/testbench": "^6.23|^7.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/laravel-ray": "^1.27" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Spatie\\LaravelIgnition\\IgnitionServiceProvider" - ], - "aliases": { - "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" - } - } - }, - "autoload": { - "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": "2022-02-04T15:25:56+00:00" - }, - { - "name": "squizlabs/php_codesniffer", - "version": "3.6.2", - "source": { - "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", - "shasum": "" - }, - "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.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": "lead" - } - ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", - "keywords": [ - "phpcs", - "standards" - ], - "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" - }, - "time": "2021-12-12T21:44:58+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2021-07-28T10:34:58+00:00" - } - ], - "aliases": [], - "minimum-stability": "dev", - "stability-flags": [], - "prefer-stable": true, - "prefer-lowest": false, - "platform": { - "php": "^8.0" - }, - "platform-dev": [], - "plugin-api-version": "2.1.0" -} diff --git a/Chapter18/onlineStore/config/app.php b/Chapter18/onlineStore/config/app.php deleted file mode 100644 index 1941d7c..0000000 --- a/Chapter18/onlineStore/config/app.php +++ /dev/null @@ -1,197 +0,0 @@ - env('APP_NAME', 'Laravel'), - - /* - |-------------------------------------------------------------------------- - | Application Environment - |-------------------------------------------------------------------------- - | - | This value determines the "environment" your application is currently - | running in. This may determine how you prefer to configure various - | services the application utilizes. Set this in your ".env" file. - | - */ - - 'env' => env('APP_ENV', 'production'), - - /* - |-------------------------------------------------------------------------- - | Application Debug Mode - |-------------------------------------------------------------------------- - | - | When your application is in debug mode, detailed error messages with - | stack traces will be shown on every error that occurs within your - | application. If disabled, a simple generic error page is shown. - | - */ - - 'debug' => (bool) env('APP_DEBUG', false), - - /* - |-------------------------------------------------------------------------- - | Application URL - |-------------------------------------------------------------------------- - | - | This URL is used by the console to properly generate URLs when using - | the Artisan command line tool. You should set this to the root of - | your application so that it is used when running Artisan tasks. - | - */ - - 'url' => env('APP_URL', 'http://localhost'), - - 'asset_url' => env('ASSET_URL', null), - - /* - |-------------------------------------------------------------------------- - | 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', - - /* - |-------------------------------------------------------------------------- - | 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' => [ - - /* - * Laravel Framework Service Providers... - */ - Illuminate\Auth\AuthServiceProvider::class, - Illuminate\Broadcasting\BroadcastServiceProvider::class, - Illuminate\Bus\BusServiceProvider::class, - Illuminate\Cache\CacheServiceProvider::class, - Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, - Illuminate\Cookie\CookieServiceProvider::class, - Illuminate\Database\DatabaseServiceProvider::class, - Illuminate\Encryption\EncryptionServiceProvider::class, - Illuminate\Filesystem\FilesystemServiceProvider::class, - Illuminate\Foundation\Providers\FoundationServiceProvider::class, - Illuminate\Hashing\HashServiceProvider::class, - Illuminate\Mail\MailServiceProvider::class, - Illuminate\Notifications\NotificationServiceProvider::class, - Illuminate\Pagination\PaginationServiceProvider::class, - Illuminate\Pipeline\PipelineServiceProvider::class, - Illuminate\Queue\QueueServiceProvider::class, - Illuminate\Redis\RedisServiceProvider::class, - Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, - Illuminate\Session\SessionServiceProvider::class, - Illuminate\Translation\TranslationServiceProvider::class, - Illuminate\Validation\ValidationServiceProvider::class, - Illuminate\View\ViewServiceProvider::class, - - /* - * 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, - - ], - - /* - |-------------------------------------------------------------------------- - | 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([ - // ... - ])->toArray(), - -]; diff --git a/Chapter18/onlineStore/config/auth.php b/Chapter18/onlineStore/config/auth.php deleted file mode 100644 index d8c6cee..0000000 --- a/Chapter18/onlineStore/config/auth.php +++ /dev/null @@ -1,111 +0,0 @@ - [ - '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 expire 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. - | - */ - - 'passwords' => [ - 'users' => [ - 'provider' => 'users', - 'table' => 'password_resets', - '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/Chapter18/onlineStore/config/broadcasting.php b/Chapter18/onlineStore/config/broadcasting.php deleted file mode 100644 index 67fcbbd..0000000 --- a/Chapter18/onlineStore/config/broadcasting.php +++ /dev/null @@ -1,67 +0,0 @@ - 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'), - 'useTLS' => true, - ], - '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/Chapter18/onlineStore/config/cache.php b/Chapter18/onlineStore/config/cache.php deleted file mode 100644 index 8736c7a..0000000 --- a/Chapter18/onlineStore/config/cache.php +++ /dev/null @@ -1,110 +0,0 @@ - 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'), - ], - - '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 a RAM based store such as APC or Memcached, there might - | be other applications utilizing the same cache. So, we'll specify a - | value to get prefixed to all our keys so we can avoid collisions. - | - */ - - 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'), - -]; diff --git a/Chapter18/onlineStore/config/cors.php b/Chapter18/onlineStore/config/cors.php deleted file mode 100644 index 8a39e6d..0000000 --- a/Chapter18/onlineStore/config/cors.php +++ /dev/null @@ -1,34 +0,0 @@ - ['api/*', 'sanctum/csrf-cookie'], - - 'allowed_methods' => ['*'], - - 'allowed_origins' => ['*'], - - 'allowed_origins_patterns' => [], - - 'allowed_headers' => ['*'], - - 'exposed_headers' => [], - - 'max_age' => 0, - - 'supports_credentials' => false, - -]; diff --git a/Chapter18/onlineStore/config/database.php b/Chapter18/onlineStore/config/database.php deleted file mode 100644 index 0faebae..0000000 --- a/Chapter18/onlineStore/config/database.php +++ /dev/null @@ -1,147 +0,0 @@ - env('DB_CONNECTION', 'mysql'), - - /* - |-------------------------------------------------------------------------- - | Database Connections - |-------------------------------------------------------------------------- - | - | Here are each of the database connections setup for your application. - | Of course, examples of configuring each database platform that is - | supported by Laravel is shown below to make development simple. - | - | - | All database work in Laravel is done through the PHP PDO facilities - | so make sure you have the driver for your particular database of - | choice installed on your machine before you begin development. - | - */ - - 'connections' => [ - - 'sqlite' => [ - 'driver' => 'sqlite', - 'url' => env('DATABASE_URL'), - 'database' => env('DB_DATABASE', database_path('database.sqlite')), - 'prefix' => '', - 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), - ], - - 'mysql' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '3306'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'unix_socket' => env('DB_SOCKET', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - 'pgsql' => [ - 'driver' => 'pgsql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '5432'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - 'search_path' => 'public', - 'sslmode' => 'prefer', - ], - - 'sqlsrv' => [ - 'driver' => 'sqlsrv', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', 'localhost'), - 'port' => env('DB_PORT', '1433'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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'), - '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'), - 'password' => env('REDIS_PASSWORD'), - 'port' => env('REDIS_PORT', '6379'), - 'database' => env('REDIS_CACHE_DB', '1'), - ], - - ], - -]; diff --git a/Chapter18/onlineStore/config/filesystems.php b/Chapter18/onlineStore/config/filesystems.php deleted file mode 100644 index cf5abce..0000000 --- a/Chapter18/onlineStore/config/filesystems.php +++ /dev/null @@ -1,73 +0,0 @@ - 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 setup for each driver as an example of the required options. - | - | Supported Drivers: "local", "ftp", "sftp", "s3" - | - */ - - 'disks' => [ - - 'local' => [ - 'driver' => 'local', - 'root' => storage_path('app'), - ], - - 'public' => [ - 'driver' => 'local', - 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', - 'visibility' => 'public', - ], - - '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), - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter18/onlineStore/config/hashing.php b/Chapter18/onlineStore/config/hashing.php deleted file mode 100644 index bcd3be4..0000000 --- a/Chapter18/onlineStore/config/hashing.php +++ /dev/null @@ -1,52 +0,0 @@ - '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/Chapter18/onlineStore/config/logging.php b/Chapter18/onlineStore/config/logging.php deleted file mode 100644 index fefe088..0000000 --- a/Chapter18/onlineStore/config/logging.php +++ /dev/null @@ -1,119 +0,0 @@ - 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' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), - - /* - |-------------------------------------------------------------------------- - | 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'), - ], - - 'daily' => [ - 'driver' => 'daily', - 'path' => storage_path('logs/laravel.log'), - 'level' => env('LOG_LEVEL', 'debug'), - 'days' => 14, - ], - - 'slack' => [ - 'driver' => 'slack', - 'url' => env('LOG_SLACK_WEBHOOK_URL'), - 'username' => 'Laravel Log', - 'emoji' => ':boom:', - 'level' => env('LOG_LEVEL', 'critical'), - ], - - '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'), - ], - ], - - 'stderr' => [ - 'driver' => 'monolog', - 'level' => env('LOG_LEVEL', 'debug'), - 'handler' => StreamHandler::class, - 'formatter' => env('LOG_STDERR_FORMATTER'), - 'with' => [ - 'stream' => 'php://stderr', - ], - ], - - 'syslog' => [ - 'driver' => 'syslog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'errorlog' => [ - 'driver' => 'errorlog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'null' => [ - 'driver' => 'monolog', - 'handler' => NullHandler::class, - ], - - 'emergency' => [ - 'path' => storage_path('logs/laravel.log'), - ], - ], - -]; diff --git a/Chapter18/onlineStore/config/mail.php b/Chapter18/onlineStore/config/mail.php deleted file mode 100644 index 87b6fe3..0000000 --- a/Chapter18/onlineStore/config/mail.php +++ /dev/null @@ -1,117 +0,0 @@ - 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", - | "postmark", "log", "array", "failover" - | - */ - - 'mailers' => [ - 'smtp' => [ - 'transport' => 'smtp', - '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, - ], - - 'ses' => [ - 'transport' => 'ses', - ], - - 'mailgun' => [ - 'transport' => 'mailgun', - ], - - 'postmark' => [ - 'transport' => 'postmark', - ], - - 'sendmail' => [ - 'transport' => 'sendmail', - 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -t -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/Chapter18/onlineStore/config/queue.php b/Chapter18/onlineStore/config/queue.php deleted file mode 100644 index 25ea5a8..0000000 --- a/Chapter18/onlineStore/config/queue.php +++ /dev/null @@ -1,93 +0,0 @@ - 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, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter18/onlineStore/config/sanctum.php b/Chapter18/onlineStore/config/sanctum.php deleted file mode 100644 index 9281c92..0000000 --- a/Chapter18/onlineStore/config/sanctum.php +++ /dev/null @@ -1,65 +0,0 @@ - explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( - '%s%s', - 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', - env('APP_URL') ? ','.parse_url(env('APP_URL'), PHP_URL_HOST) : '' - ))), - - /* - |-------------------------------------------------------------------------- - | 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/Chapter18/onlineStore/config/services.php b/Chapter18/onlineStore/config/services.php deleted file mode 100644 index 2a1d616..0000000 --- a/Chapter18/onlineStore/config/services.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - 'domain' => env('MAILGUN_DOMAIN'), - 'secret' => env('MAILGUN_SECRET'), - 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), - ], - - '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/Chapter18/onlineStore/config/session.php b/Chapter18/onlineStore/config/session.php deleted file mode 100644 index 8fed97c..0000000 --- a/Chapter18/onlineStore/config/session.php +++ /dev/null @@ -1,201 +0,0 @@ - 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/Chapter18/onlineStore/config/view.php b/Chapter18/onlineStore/config/view.php deleted file mode 100644 index 22b8a18..0000000 --- a/Chapter18/onlineStore/config/view.php +++ /dev/null @@ -1,36 +0,0 @@ - [ - 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/Chapter18/onlineStore/database/.gitignore b/Chapter18/onlineStore/database/.gitignore deleted file mode 100644 index 9b19b93..0000000 --- a/Chapter18/onlineStore/database/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.sqlite* diff --git a/Chapter18/onlineStore/database/factories/UserFactory.php b/Chapter18/onlineStore/database/factories/UserFactory.php deleted file mode 100644 index d6ca926..0000000 --- a/Chapter18/onlineStore/database/factories/UserFactory.php +++ /dev/null @@ -1,42 +0,0 @@ - - */ -class UserFactory extends Factory -{ - /** - * Define the model's default state. - * - * @return array - */ - public function definition() - { - return [ - 'name' => $this->faker->name(), - 'email' => $this->faker->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. - * - * @return \Illuminate\Database\Eloquent\Factories\Factory - */ - public function unverified() - { - return $this->state(function (array $attributes) { - return [ - 'email_verified_at' => null, - ]; - }); - } -} diff --git a/Chapter18/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php b/Chapter18/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php deleted file mode 100644 index cf6b776..0000000 --- a/Chapter18/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->string('name'); - $table->string('email')->unique(); - $table->timestamp('email_verified_at')->nullable(); - $table->string('password'); - $table->rememberToken(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('users'); - } -}; diff --git a/Chapter18/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php b/Chapter18/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php deleted file mode 100644 index fcacb80..0000000 --- a/Chapter18/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php +++ /dev/null @@ -1,32 +0,0 @@ -string('email')->index(); - $table->string('token'); - $table->timestamp('created_at')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('password_resets'); - } -}; diff --git a/Chapter18/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/Chapter18/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php deleted file mode 100644 index 1719198..0000000 --- a/Chapter18/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php +++ /dev/null @@ -1,36 +0,0 @@ -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. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('failed_jobs'); - } -}; diff --git a/Chapter18/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/Chapter18/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php deleted file mode 100644 index fd235f8..0000000 --- a/Chapter18/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->morphs('tokenable'); - $table->string('name'); - $table->string('token', 64)->unique(); - $table->text('abilities')->nullable(); - $table->timestamp('last_used_at')->nullable(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('personal_access_tokens'); - } -}; diff --git a/Chapter18/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php b/Chapter18/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php deleted file mode 100644 index 2eecdc2..0000000 --- a/Chapter18/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php +++ /dev/null @@ -1,35 +0,0 @@ -id(); - $table->string('name'); - $table->text('description'); - $table->string('image'); - $table->integer('price'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('products'); - } -}; diff --git a/Chapter18/onlineStore/database/seeders/DatabaseSeeder.php b/Chapter18/onlineStore/database/seeders/DatabaseSeeder.php deleted file mode 100644 index 71f673f..0000000 --- a/Chapter18/onlineStore/database/seeders/DatabaseSeeder.php +++ /dev/null @@ -1,19 +0,0 @@ -create(); - } -} diff --git a/Chapter18/onlineStore/lang/en.json b/Chapter18/onlineStore/lang/en.json deleted file mode 100644 index 577680d..0000000 --- a/Chapter18/onlineStore/lang/en.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "The :attribute must contain at least one letter.": "The :attribute must contain at least one letter.", - "The :attribute must contain at least one number.": "The :attribute must contain at least one number.", - "The :attribute must contain at least one symbol.": "The :attribute must contain at least one symbol.", - "The :attribute must contain at least one uppercase and one lowercase letter.": "The :attribute must contain at least one uppercase and one lowercase letter.", - "The given :attribute has appeared in a data leak. Please choose a different :attribute.": "The given :attribute has appeared in a data leak. Please choose a different :attribute." -} diff --git a/Chapter18/onlineStore/lang/en/auth.php b/Chapter18/onlineStore/lang/en/auth.php deleted file mode 100644 index 6598e2c..0000000 --- a/Chapter18/onlineStore/lang/en/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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/Chapter18/onlineStore/lang/en/pagination.php b/Chapter18/onlineStore/lang/en/pagination.php deleted file mode 100644 index d481411..0000000 --- a/Chapter18/onlineStore/lang/en/pagination.php +++ /dev/null @@ -1,19 +0,0 @@ - '« Previous', - 'next' => 'Next »', - -]; diff --git a/Chapter18/onlineStore/lang/en/passwords.php b/Chapter18/onlineStore/lang/en/passwords.php deleted file mode 100644 index 2345a56..0000000 --- a/Chapter18/onlineStore/lang/en/passwords.php +++ /dev/null @@ -1,22 +0,0 @@ - '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/Chapter18/onlineStore/lang/en/validation.php b/Chapter18/onlineStore/lang/en/validation.php deleted file mode 100644 index 783003c..0000000 --- a/Chapter18/onlineStore/lang/en/validation.php +++ /dev/null @@ -1,163 +0,0 @@ - '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' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - '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' => [ - 'numeric' => 'The :attribute must be greater than :value.', - 'file' => 'The :attribute must be greater than :value kilobytes.', - 'string' => 'The :attribute must be greater than :value characters.', - 'array' => 'The :attribute must have more than :value items.', - ], - 'gte' => [ - 'numeric' => 'The :attribute must be greater than or equal to :value.', - 'file' => 'The :attribute must be greater than or equal to :value kilobytes.', - 'string' => 'The :attribute must be greater than or equal to :value characters.', - 'array' => 'The :attribute must have :value items or more.', - ], - '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' => [ - 'numeric' => 'The :attribute must be less than :value.', - 'file' => 'The :attribute must be less than :value kilobytes.', - 'string' => 'The :attribute must be less than :value characters.', - 'array' => 'The :attribute must have less than :value items.', - ], - 'lte' => [ - 'numeric' => 'The :attribute must be less than or equal to :value.', - 'file' => 'The :attribute must be less than or equal to :value kilobytes.', - 'string' => 'The :attribute must be less than or equal to :value characters.', - 'array' => 'The :attribute must not have more than :value items.', - ], - 'mac_address' => 'The :attribute must be a valid MAC address.', - 'max' => [ - 'numeric' => 'The :attribute must not be greater than :max.', - 'file' => 'The :attribute must not be greater than :max kilobytes.', - 'string' => 'The :attribute must not be greater than :max characters.', - 'array' => 'The :attribute must not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - '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.', - 'password' => 'The password is incorrect.', - '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' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - '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/Chapter18/onlineStore/package.json b/Chapter18/onlineStore/package.json deleted file mode 100644 index 7a9aecd..0000000 --- a/Chapter18/onlineStore/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "private": true, - "scripts": { - "dev": "npm run development", - "development": "mix", - "watch": "mix watch", - "watch-poll": "mix watch -- --watch-options-poll=1000", - "hot": "mix watch --hot", - "prod": "npm run production", - "production": "mix --production" - }, - "devDependencies": { - "axios": "^0.25", - "laravel-mix": "^6.0.6", - "lodash": "^4.17.19", - "postcss": "^8.1.14" - } -} diff --git a/Chapter18/onlineStore/phpcs.xml b/Chapter18/onlineStore/phpcs.xml deleted file mode 100644 index a1cf2b6..0000000 --- a/Chapter18/onlineStore/phpcs.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - The coding standard for the Online Store project - - app/ - config/ - database/ - routes/ - */migrations/* - diff --git a/Chapter18/onlineStore/phpunit.xml b/Chapter18/onlineStore/phpunit.xml deleted file mode 100644 index 2ac86a1..0000000 --- a/Chapter18/onlineStore/phpunit.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - ./tests/Unit - - - ./tests/Feature - - - - - ./app - - - - - - - - - - - - - - diff --git a/Chapter18/onlineStore/public/.htaccess b/Chapter18/onlineStore/public/.htaccess deleted file mode 100644 index 3aec5e2..0000000 --- a/Chapter18/onlineStore/public/.htaccess +++ /dev/null @@ -1,21 +0,0 @@ - - - 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/Chapter18/onlineStore/public/css/admin.css b/Chapter18/onlineStore/public/css/admin.css deleted file mode 100644 index d9495a1..0000000 --- a/Chapter18/onlineStore/public/css/admin.css +++ /dev/null @@ -1,33 +0,0 @@ -.copyright { - background-color: #1a252f; -} - -.fixed { - -ms-flex: 0 0 250px; - flex: 0 0 250px; -} - -.content-grey { - background-color: #f8f9fc; -} - -hr { - margin-top: 0.8em; - margin-bottom: 0.8em; -} - -.img-profile { - height: 2rem; - width: 2rem; -} - -.profile-font { - color: #858796 !important; - font-size: 80%; - font-weight: 400; -} - -.card-header { - background-color: #f8f9fc; - border-bottom: 1px solid #e3e6f0; -} diff --git a/Chapter18/onlineStore/public/css/app.css b/Chapter18/onlineStore/public/css/app.css deleted file mode 100644 index cabac36..0000000 --- a/Chapter18/onlineStore/public/css/app.css +++ /dev/null @@ -1,20 +0,0 @@ -.bg-secondary { - background-color: #2c3e50 !important; -} - -.copyright { - background-color: #1a252f; -} - -.bg-primary { - background-color: #1abc9c !important; -} - -nav{ - font-weight: 700; -} - -.img-card{ - height: 18vw; - object-fit: cover; -} diff --git a/Chapter18/onlineStore/public/favicon.ico b/Chapter18/onlineStore/public/favicon.ico deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter18/onlineStore/public/img/game.png b/Chapter18/onlineStore/public/img/game.png deleted file mode 100644 index 85420e8bbc16098bf26b4ee63bde0e91a19d1f2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25896 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 cz>% diff --git a/Chapter18/onlineStore/public/img/safe.png b/Chapter18/onlineStore/public/img/safe.png deleted file mode 100644 index 445942c707af53210931f9f4f99f6d3cb69e5d89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19240 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
w==XB0?3|p=#`o%NsudE(E-U#KS3Snw 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 o>ir+C;RN10sIS0&a;p - - - - - - - - - - - - - - - - - - diff --git a/Chapter18/onlineStore/public/index.php b/Chapter18/onlineStore/public/index.php deleted file mode 100644 index 1d69f3a..0000000 --- a/Chapter18/onlineStore/public/index.php +++ /dev/null @@ -1,55 +0,0 @@ -make(Kernel::class); - -$response = $kernel->handle( - $request = Request::capture() -)->send(); - -$kernel->terminate($request, $response); diff --git a/Chapter18/onlineStore/public/robots.txt b/Chapter18/onlineStore/public/robots.txt deleted file mode 100644 index eb05362..0000000 --- a/Chapter18/onlineStore/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: diff --git a/Chapter18/onlineStore/resources/css/app.css b/Chapter18/onlineStore/resources/css/app.css deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter18/onlineStore/resources/js/app.js b/Chapter18/onlineStore/resources/js/app.js deleted file mode 100644 index 40c55f6..0000000 --- a/Chapter18/onlineStore/resources/js/app.js +++ /dev/null @@ -1 +0,0 @@ -require('./bootstrap'); diff --git a/Chapter18/onlineStore/resources/js/bootstrap.js b/Chapter18/onlineStore/resources/js/bootstrap.js deleted file mode 100644 index 6922577..0000000 --- a/Chapter18/onlineStore/resources/js/bootstrap.js +++ /dev/null @@ -1,28 +0,0 @@ -window._ = require('lodash'); - -/** - * 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 = require('axios'); - -window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; - -/** - * 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'; - -// window.Pusher = require('pusher-js'); - -// window.Echo = new Echo({ -// broadcaster: 'pusher', -// key: process.env.MIX_PUSHER_APP_KEY, -// cluster: process.env.MIX_PUSHER_APP_CLUSTER, -// forceTLS: true -// }); diff --git a/Chapter18/onlineStore/resources/views/admin/home/index.blade.php b/Chapter18/onlineStore/resources/views/admin/home/index.blade.php deleted file mode 100644 index a2b4868..0000000 --- a/Chapter18/onlineStore/resources/views/admin/home/index.blade.php +++ /dev/null @@ -1,12 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
-
- Admin Panel - Home Page -
-
- Welcome to the Admin Panel, use the sidebar to navigate between the different options. -
-
-@endsection diff --git a/Chapter18/onlineStore/resources/views/admin/product/index.blade.php b/Chapter18/onlineStore/resources/views/admin/product/index.blade.php deleted file mode 100644 index 288590e..0000000 --- a/Chapter18/onlineStore/resources/views/admin/product/index.blade.php +++ /dev/null @@ -1,86 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
-
- Create Products -
-
- @if($errors->any()) -
    - @foreach($errors->all() as $error) -
  • - {{ $error }}
  • - @endforeach -
- @endif - -
- @csrf -
-
-
- -
- -
-
-
-
-
- -
- -
-
-
-
-
-
-
- -
- -
-
-
-
-   -
-
-
- - -
- -
-
-
- -
-
- Manage Products -
-
- - - - - - - - - - - @foreach ($viewData["products"] as $product) - - - - - - - @endforeach - -
IDNameEditDelete
{{ $product->getId() }}{{ $product->getName() }}EditDelete
-
-
-@endsection diff --git a/Chapter18/onlineStore/resources/views/home/about.blade.php b/Chapter18/onlineStore/resources/views/home/about.blade.php deleted file mode 100644 index f79abf3..0000000 --- a/Chapter18/onlineStore/resources/views/home/about.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
-
-
-

{{ $viewData["description"] }}

-
-
-

{{ $viewData["author"] }}

-
-
-
-@endsection diff --git a/Chapter18/onlineStore/resources/views/home/index.blade.php b/Chapter18/onlineStore/resources/views/home/index.blade.php deleted file mode 100644 index 1affb20..0000000 --- a/Chapter18/onlineStore/resources/views/home/index.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('content') -
-
- -
-
- -
-
- -
-
-@endsection diff --git a/Chapter18/onlineStore/resources/views/layouts/admin.blade.php b/Chapter18/onlineStore/resources/views/layouts/admin.blade.php deleted file mode 100644 index a1a1d57..0000000 --- a/Chapter18/onlineStore/resources/views/layouts/admin.blade.php +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - @yield('title', 'Admin - Online Store') - - - -
- - - -
- - -
- @yield('content') -
-
-
- - - - - - - - - diff --git a/Chapter18/onlineStore/resources/views/layouts/app.blade.php b/Chapter18/onlineStore/resources/views/layouts/app.blade.php deleted file mode 100644 index eee7fcb..0000000 --- a/Chapter18/onlineStore/resources/views/layouts/app.blade.php +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - @yield('title', 'Online Store') - - - - - -
-
-

@yield('subtitle', 'A Laravel Online Store')

-
-
- - -
- @yield('content') -
- - - - - - - diff --git a/Chapter18/onlineStore/resources/views/product/index.blade.php b/Chapter18/onlineStore/resources/views/product/index.blade.php deleted file mode 100644 index 64c3e18..0000000 --- a/Chapter18/onlineStore/resources/views/product/index.blade.php +++ /dev/null @@ -1,18 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
- @foreach ($viewData["products"] as $product) - - @endforeach -
-@endsection diff --git a/Chapter18/onlineStore/resources/views/product/show.blade.php b/Chapter18/onlineStore/resources/views/product/show.blade.php deleted file mode 100644 index be37a01..0000000 --- a/Chapter18/onlineStore/resources/views/product/show.blade.php +++ /dev/null @@ -1,21 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
-
-
- getImage()) }}" class="img-fluid rounded-start"> -
-
-
-
- {{ $viewData["product"]->getName() }} (${{ $viewData["product"]->getPrice() }}) -
-

{{ $viewData["product"]->getDescription() }}

-

Add to Cart

-
-
-
-
-@endsection diff --git a/Chapter18/onlineStore/resources/views/welcome.blade.php b/Chapter18/onlineStore/resources/views/welcome.blade.php deleted file mode 100644 index c587c72..0000000 --- a/Chapter18/onlineStore/resources/views/welcome.blade.php +++ /dev/null @@ -1,7 +0,0 @@ -@extends('layouts.app') -@section('title', 'Home Page - Online Store') -@section('content') -
- Welcome to the application -
-@endsection \ No newline at end of file diff --git a/Chapter18/onlineStore/routes/api.php b/Chapter18/onlineStore/routes/api.php deleted file mode 100644 index eb6fa48..0000000 --- a/Chapter18/onlineStore/routes/api.php +++ /dev/null @@ -1,19 +0,0 @@ -get('/user', function (Request $request) { - return $request->user(); -}); diff --git a/Chapter18/onlineStore/routes/channels.php b/Chapter18/onlineStore/routes/channels.php deleted file mode 100644 index 5d451e1..0000000 --- a/Chapter18/onlineStore/routes/channels.php +++ /dev/null @@ -1,18 +0,0 @@ -id === (int) $id; -}); diff --git a/Chapter18/onlineStore/routes/console.php b/Chapter18/onlineStore/routes/console.php deleted file mode 100644 index e05f4c9..0000000 --- a/Chapter18/onlineStore/routes/console.php +++ /dev/null @@ -1,19 +0,0 @@ -comment(Inspiring::quote()); -})->purpose('Display an inspiring quote'); diff --git a/Chapter18/onlineStore/routes/web.php b/Chapter18/onlineStore/routes/web.php deleted file mode 100644 index e1829ed..0000000 --- a/Chapter18/onlineStore/routes/web.php +++ /dev/null @@ -1,22 +0,0 @@ -name("home.index"); -Route::get('/about', 'App\Http\Controllers\HomeController@about')->name("home.about"); -Route::get('/products', 'App\Http\Controllers\ProductController@index')->name("product.index"); -Route::get('/products/{id}', 'App\Http\Controllers\ProductController@show')->name("product.show"); -Route::get('/admin', 'App\Http\Controllers\Admin\AdminHomeController@index')->name("admin.home.index"); -Route::get('/admin/products', 'App\Http\Controllers\Admin\AdminProductController@index')->name("admin.product.index"); -Route::post('/admin/products/store', 'App\Http\Controllers\Admin\AdminProductController@store')->name("admin.product.store"); diff --git a/Chapter18/onlineStore/storage/app/.gitignore b/Chapter18/onlineStore/storage/app/.gitignore deleted file mode 100644 index 8f4803c..0000000 --- a/Chapter18/onlineStore/storage/app/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!public/ -!.gitignore diff --git a/Chapter18/onlineStore/storage/app/public/.gitignore b/Chapter18/onlineStore/storage/app/public/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter18/onlineStore/storage/app/public/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter18/onlineStore/storage/framework/.gitignore b/Chapter18/onlineStore/storage/framework/.gitignore deleted file mode 100644 index 05c4471..0000000 --- a/Chapter18/onlineStore/storage/framework/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -compiled.php -config.php -down -events.scanned.php -maintenance.php -routes.php -routes.scanned.php -schedule-* -services.json diff --git a/Chapter18/onlineStore/storage/framework/cache/.gitignore b/Chapter18/onlineStore/storage/framework/cache/.gitignore deleted file mode 100644 index 01e4a6c..0000000 --- a/Chapter18/onlineStore/storage/framework/cache/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!data/ -!.gitignore diff --git a/Chapter18/onlineStore/storage/framework/cache/data/.gitignore b/Chapter18/onlineStore/storage/framework/cache/data/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter18/onlineStore/storage/framework/cache/data/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter18/onlineStore/storage/framework/sessions/.gitignore b/Chapter18/onlineStore/storage/framework/sessions/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter18/onlineStore/storage/framework/sessions/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter18/onlineStore/storage/framework/testing/.gitignore b/Chapter18/onlineStore/storage/framework/testing/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter18/onlineStore/storage/framework/testing/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter18/onlineStore/storage/framework/views/.gitignore b/Chapter18/onlineStore/storage/framework/views/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter18/onlineStore/storage/framework/views/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter18/onlineStore/storage/logs/.gitignore b/Chapter18/onlineStore/storage/logs/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter18/onlineStore/storage/logs/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter18/onlineStore/tests/CreatesApplication.php b/Chapter18/onlineStore/tests/CreatesApplication.php deleted file mode 100644 index 547152f..0000000 --- a/Chapter18/onlineStore/tests/CreatesApplication.php +++ /dev/null @@ -1,22 +0,0 @@ -make(Kernel::class)->bootstrap(); - - return $app; - } -} diff --git a/Chapter18/onlineStore/tests/Feature/ExampleTest.php b/Chapter18/onlineStore/tests/Feature/ExampleTest.php deleted file mode 100644 index 78ccc21..0000000 --- a/Chapter18/onlineStore/tests/Feature/ExampleTest.php +++ /dev/null @@ -1,21 +0,0 @@ -get('/'); - - $response->assertStatus(200); - } -} diff --git a/Chapter18/onlineStore/tests/TestCase.php b/Chapter18/onlineStore/tests/TestCase.php deleted file mode 100644 index 2932d4a..0000000 --- a/Chapter18/onlineStore/tests/TestCase.php +++ /dev/null @@ -1,10 +0,0 @@ -assertTrue(true); - } -} diff --git a/Chapter18/onlineStore/webpack.mix.js b/Chapter18/onlineStore/webpack.mix.js deleted file mode 100644 index 2a22dc1..0000000 --- a/Chapter18/onlineStore/webpack.mix.js +++ /dev/null @@ -1,17 +0,0 @@ -const mix = require('laravel-mix'); - -/* - |-------------------------------------------------------------------------- - | Mix Asset Management - |-------------------------------------------------------------------------- - | - | Mix provides a clean, fluent API for defining some Webpack build steps - | for your Laravel applications. By default, we are compiling the CSS - | file for the application as well as bundling up all the JS files. - | - */ - -mix.js('resources/js/app.js', 'public/js') - .postCss('resources/css/app.css', 'public/css', [ - // - ]); diff --git a/Chapter19/onlineStore/.editorconfig b/Chapter19/onlineStore/.editorconfig deleted file mode 100644 index 1671c9b..0000000 --- a/Chapter19/onlineStore/.editorconfig +++ /dev/null @@ -1,18 +0,0 @@ -root = true - -[*] -charset = utf-8 -end_of_line = lf -insert_final_newline = true -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true - -[*.md] -trim_trailing_whitespace = false - -[*.{yml,yaml}] -indent_size = 2 - -[docker-compose.yml] -indent_size = 4 diff --git a/Chapter19/onlineStore/.env.example b/Chapter19/onlineStore/.env.example deleted file mode 100644 index 8510237..0000000 --- a/Chapter19/onlineStore/.env.example +++ /dev/null @@ -1,52 +0,0 @@ -APP_NAME=Laravel -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=laravel -DB_USERNAME=root -DB_PASSWORD= - -BROADCAST_DRIVER=log -CACHE_DRIVER=file -FILESYSTEM_DISK=local -QUEUE_CONNECTION=sync -SESSION_DRIVER=file -SESSION_LIFETIME=120 - -MEMCACHED_HOST=127.0.0.1 - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -MAIL_MAILER=smtp -MAIL_HOST=mailhog -MAIL_PORT=1025 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS=null -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_APP_CLUSTER=mt1 - -MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/Chapter19/onlineStore/.gitattributes b/Chapter19/onlineStore/.gitattributes deleted file mode 100644 index 510d996..0000000 --- a/Chapter19/onlineStore/.gitattributes +++ /dev/null @@ -1,10 +0,0 @@ -* text=auto - -*.blade.php diff=html -*.css diff=css -*.html diff=html -*.md diff=markdown -*.php diff=php - -/.github export-ignore -CHANGELOG.md export-ignore diff --git a/Chapter19/onlineStore/.gitignore b/Chapter19/onlineStore/.gitignore deleted file mode 100644 index eb003b0..0000000 --- a/Chapter19/onlineStore/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -/node_modules -/public/hot -/public/storage -/storage/*.key -/vendor -.env -.env.backup -.phpunit.result.cache -docker-compose.override.yml -Homestead.json -Homestead.yaml -npm-debug.log -yarn-error.log -/.idea -/.vscode diff --git a/Chapter19/onlineStore/.styleci.yml b/Chapter19/onlineStore/.styleci.yml deleted file mode 100644 index 679a631..0000000 --- a/Chapter19/onlineStore/.styleci.yml +++ /dev/null @@ -1,13 +0,0 @@ -php: - preset: laravel - version: 8 - disabled: - - no_unused_imports - finder: - not-name: - - index.php -js: - finder: - not-name: - - webpack.mix.js -css: true diff --git a/Chapter19/onlineStore/README.md b/Chapter19/onlineStore/README.md deleted file mode 100644 index f171eca..0000000 --- a/Chapter19/onlineStore/README.md +++ /dev/null @@ -1,64 +0,0 @@ -

- -

-Build Status -Total Downloads -Latest Stable Version -License -

- -## About Laravel - -Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as: - -- [Simple, fast routing engine](https://laravel.com/docs/routing). -- [Powerful dependency injection container](https://laravel.com/docs/container). -- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage. -- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent). -- Database agnostic [schema migrations](https://laravel.com/docs/migrations). -- [Robust background job processing](https://laravel.com/docs/queues). -- [Real-time event broadcasting](https://laravel.com/docs/broadcasting). - -Laravel is accessible, powerful, and provides tools required for large, robust applications. - -## Learning Laravel - -Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework. - -If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 2000 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library. - -## Laravel Sponsors - -We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell). - -### Premium Partners - -- **[Vehikl](https://vehikl.com/)** -- **[Tighten Co.](https://tighten.co)** -- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** -- **[64 Robots](https://64robots.com)** -- **[Cubet Techno Labs](https://cubettech.com)** -- **[Cyber-Duck](https://cyber-duck.co.uk)** -- **[Many](https://www.many.co.uk)** -- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)** -- **[DevSquad](https://devsquad.com)** -- **[Curotec](https://www.curotec.com/services/technologies/laravel/)** -- **[OP.GG](https://op.gg)** -- **[WebReinvent](https://webreinvent.com/?utm_source=laravel&utm_medium=github&utm_campaign=patreon-sponsors)** -- **[Lendio](https://lendio.com)** - -## Contributing - -Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions). - -## Code of Conduct - -In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). - -## Security Vulnerabilities - -If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed. - -## License - -The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). diff --git a/Chapter19/onlineStore/app/Console/Kernel.php b/Chapter19/onlineStore/app/Console/Kernel.php deleted file mode 100644 index d8bc1d2..0000000 --- a/Chapter19/onlineStore/app/Console/Kernel.php +++ /dev/null @@ -1,32 +0,0 @@ -command('inspire')->hourly(); - } - - /** - * Register the commands for the application. - * - * @return void - */ - protected function commands() - { - $this->load(__DIR__.'/Commands'); - - require base_path('routes/console.php'); - } -} diff --git a/Chapter19/onlineStore/app/Exceptions/Handler.php b/Chapter19/onlineStore/app/Exceptions/Handler.php deleted file mode 100644 index 8e7fbd1..0000000 --- a/Chapter19/onlineStore/app/Exceptions/Handler.php +++ /dev/null @@ -1,41 +0,0 @@ -> - */ - protected $dontReport = [ - // - ]; - - /** - * A list of the inputs that are never flashed for validation exceptions. - * - * @var array - */ - protected $dontFlash = [ - 'current_password', - 'password', - 'password_confirmation', - ]; - - /** - * Register the exception handling callbacks for the application. - * - * @return void - */ - public function register() - { - $this->reportable(function (Throwable $e) { - // - }); - } -} diff --git a/Chapter19/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php b/Chapter19/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php deleted file mode 100644 index cd78cb3..0000000 --- a/Chapter19/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php +++ /dev/null @@ -1,16 +0,0 @@ -with("viewData", $viewData); - } -} diff --git a/Chapter19/onlineStore/app/Http/Controllers/Admin/AdminProductController.php b/Chapter19/onlineStore/app/Http/Controllers/Admin/AdminProductController.php deleted file mode 100644 index a167455..0000000 --- a/Chapter19/onlineStore/app/Http/Controllers/Admin/AdminProductController.php +++ /dev/null @@ -1,89 +0,0 @@ -with("viewData", $viewData); - } - - public function store(Request $request) - { - $request->validate([ - "name" => "required|max:255", - "description" => "required", - "price" => "required|numeric|gt:0", - 'image' => 'image', - ]); - - $newProduct = new Product(); - $newProduct->setName($request->input('name')); - $newProduct->setDescription($request->input('description')); - $newProduct->setPrice($request->input('price')); - $newProduct->setImage("game.png"); - $newProduct->save(); - - if ($request->hasFile('image')) { - $imageName = $newProduct->getId().".".$request->file('image')->extension(); - Storage::disk('public')->put( - $imageName, - file_get_contents($request->file('image')->getRealPath()) - ); - $newProduct->setImage($imageName); - $newProduct->save(); - } - - return back(); - } - - public function delete($id) - { - Product::destroy($id); - return back(); - } - - public function edit($id) - { - $viewData = []; - $viewData["title"] = "Admin Page - Edit Product - Online Store"; - $viewData["product"] = Product::findOrFail($id); - return view('admin.product.edit')->with("viewData", $viewData); - } - - public function update(Request $request, $id) - { - $request->validate([ - "name" => "required|max:255", - "description" => "required", - "price" => "required|numeric|gt:0", - 'image' => 'image', - ]); - - $product = Product::findOrFail($id); - $product->setName($request->input('name')); - $product->setDescription($request->input('description')); - $product->setPrice($request->input('price')); - - if ($request->hasFile('image')) { - $imageName = $product->getId().".".$request->file('image')->extension(); - Storage::disk('public')->put( - $imageName, - file_get_contents($request->file('image')->getRealPath()) - ); - $product->setImage($imageName); - } - - $product->save(); - return redirect()->route('admin.product.index'); - } -} diff --git a/Chapter19/onlineStore/app/Http/Controllers/Controller.php b/Chapter19/onlineStore/app/Http/Controllers/Controller.php deleted file mode 100644 index a0a2a8a..0000000 --- a/Chapter19/onlineStore/app/Http/Controllers/Controller.php +++ /dev/null @@ -1,13 +0,0 @@ -with("viewData", $viewData); - } - - public function about() - { - $viewData = []; - $viewData["title"] = "About us - Online Store"; - $viewData["subtitle"] = "About us"; - $viewData["description"] = "This is an about page ..."; - $viewData["author"] = "Developed by: Your Name"; - return view('home.about')->with("viewData", $viewData); - } -} diff --git a/Chapter19/onlineStore/app/Http/Controllers/ProductController.php b/Chapter19/onlineStore/app/Http/Controllers/ProductController.php deleted file mode 100644 index d27a3a3..0000000 --- a/Chapter19/onlineStore/app/Http/Controllers/ProductController.php +++ /dev/null @@ -1,29 +0,0 @@ -with("viewData", $viewData); - } - - public function show($id) - { - $viewData = []; - $product = Product::findOrFail($id); - $viewData["title"] = $product->getName()." - Online Store"; - $viewData["subtitle"] = $product->getName()." - Product information"; - $viewData["product"] = $product; - return view('product.show')->with("viewData", $viewData); - } -} diff --git a/Chapter19/onlineStore/app/Http/Kernel.php b/Chapter19/onlineStore/app/Http/Kernel.php deleted file mode 100644 index d3722c2..0000000 --- a/Chapter19/onlineStore/app/Http/Kernel.php +++ /dev/null @@ -1,67 +0,0 @@ - - */ - protected $middleware = [ - // \App\Http\Middleware\TrustHosts::class, - \App\Http\Middleware\TrustProxies::class, - \Fruitcake\Cors\HandleCors::class, - \App\Http\Middleware\PreventRequestsDuringMaintenance::class, - \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, - \App\Http\Middleware\TrimStrings::class, - \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, - ]; - - /** - * The application's route middleware groups. - * - * @var array> - */ - protected $middlewareGroups = [ - 'web' => [ - \App\Http\Middleware\EncryptCookies::class, - \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, - \Illuminate\Session\Middleware\StartSession::class, - // \Illuminate\Session\Middleware\AuthenticateSession::class, - \Illuminate\View\Middleware\ShareErrorsFromSession::class, - \App\Http\Middleware\VerifyCsrfToken::class, - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - - 'api' => [ - // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, - 'throttle:api', - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - ]; - - /** - * The application's route middleware. - * - * These middleware may be assigned to groups or used individually. - * - * @var array - */ - protected $routeMiddleware = [ - 'auth' => \App\Http\Middleware\Authenticate::class, - 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::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, - 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, - 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, - 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, - ]; -} diff --git a/Chapter19/onlineStore/app/Http/Middleware/Authenticate.php b/Chapter19/onlineStore/app/Http/Middleware/Authenticate.php deleted file mode 100644 index 704089a..0000000 --- a/Chapter19/onlineStore/app/Http/Middleware/Authenticate.php +++ /dev/null @@ -1,21 +0,0 @@ -expectsJson()) { - return route('login'); - } - } -} diff --git a/Chapter19/onlineStore/app/Http/Middleware/EncryptCookies.php b/Chapter19/onlineStore/app/Http/Middleware/EncryptCookies.php deleted file mode 100644 index 867695b..0000000 --- a/Chapter19/onlineStore/app/Http/Middleware/EncryptCookies.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter19/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/Chapter19/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php deleted file mode 100644 index 74cbd9a..0000000 --- a/Chapter19/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter19/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php b/Chapter19/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php deleted file mode 100644 index a2813a0..0000000 --- a/Chapter19/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php +++ /dev/null @@ -1,32 +0,0 @@ -check()) { - return redirect(RouteServiceProvider::HOME); - } - } - - return $next($request); - } -} diff --git a/Chapter19/onlineStore/app/Http/Middleware/TrimStrings.php b/Chapter19/onlineStore/app/Http/Middleware/TrimStrings.php deleted file mode 100644 index 88cadca..0000000 --- a/Chapter19/onlineStore/app/Http/Middleware/TrimStrings.php +++ /dev/null @@ -1,19 +0,0 @@ - - */ - protected $except = [ - 'current_password', - 'password', - 'password_confirmation', - ]; -} diff --git a/Chapter19/onlineStore/app/Http/Middleware/TrustHosts.php b/Chapter19/onlineStore/app/Http/Middleware/TrustHosts.php deleted file mode 100644 index 7186414..0000000 --- a/Chapter19/onlineStore/app/Http/Middleware/TrustHosts.php +++ /dev/null @@ -1,20 +0,0 @@ - - */ - public function hosts() - { - return [ - $this->allSubdomainsOfApplicationUrl(), - ]; - } -} diff --git a/Chapter19/onlineStore/app/Http/Middleware/TrustProxies.php b/Chapter19/onlineStore/app/Http/Middleware/TrustProxies.php deleted file mode 100644 index 3391630..0000000 --- a/Chapter19/onlineStore/app/Http/Middleware/TrustProxies.php +++ /dev/null @@ -1,28 +0,0 @@ -|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/Chapter19/onlineStore/app/Http/Middleware/VerifyCsrfToken.php b/Chapter19/onlineStore/app/Http/Middleware/VerifyCsrfToken.php deleted file mode 100644 index 9e86521..0000000 --- a/Chapter19/onlineStore/app/Http/Middleware/VerifyCsrfToken.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter19/onlineStore/app/Models/Product.php b/Chapter19/onlineStore/app/Models/Product.php deleted file mode 100644 index 84efbb6..0000000 --- a/Chapter19/onlineStore/app/Models/Product.php +++ /dev/null @@ -1,89 +0,0 @@ -attributes['id'] - int - contains the product primary key (id) - * $this->attributes['name'] - string - contains the product name - * $this->attributes['description'] - string - contains the product description - * $this->attributes['image'] - string - contains the product image - * $this->attributes['price'] - int - contains the product price - * $this->attributes['created_at'] - timestamp - contains the product creation date - * $this->attributes['updated_at'] - timestamp - contains the product update date - */ - - public function getId() - { - return $this->attributes['id']; - } - - public function setId($id) - { - $this->attributes['id'] = $id; - } - - public function getName() - { - return $this->attributes['name']; - } - - public function setName($name) - { - $this->attributes['name'] = $name; - } - - public function getDescription() - { - return $this->attributes['description']; - } - - public function setDescription($description) - { - $this->attributes['description'] = $description; - } - - public function getImage() - { - return $this->attributes['image']; - } - - public function setImage($image) - { - $this->attributes['image'] = $image; - } - - public function getPrice() - { - return $this->attributes['price']; - } - - public function setPrice($price) - { - $this->attributes['price'] = $price; - } - - public function getCreatedAt() - { - return $this->attributes['created_at']; - } - - public function setCreatedAt($createdAt) - { - $this->attributes['created_at'] = $createdAt; - } - - public function getUpdatedAt() - { - return $this->attributes['updated_at']; - } - - public function setUpdatedAt($updatedAt) - { - $this->attributes['updated_at'] = $updatedAt; - } -} diff --git a/Chapter19/onlineStore/app/Models/User.php b/Chapter19/onlineStore/app/Models/User.php deleted file mode 100644 index 8996368..0000000 --- a/Chapter19/onlineStore/app/Models/User.php +++ /dev/null @@ -1,44 +0,0 @@ - - */ - 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', - ]; -} diff --git a/Chapter19/onlineStore/app/Providers/AppServiceProvider.php b/Chapter19/onlineStore/app/Providers/AppServiceProvider.php deleted file mode 100644 index ee8ca5b..0000000 --- a/Chapter19/onlineStore/app/Providers/AppServiceProvider.php +++ /dev/null @@ -1,28 +0,0 @@ - - */ - protected $policies = [ - // 'App\Models\Model' => 'App\Policies\ModelPolicy', - ]; - - /** - * Register any authentication / authorization services. - * - * @return void - */ - public function boot() - { - $this->registerPolicies(); - - // - } -} diff --git a/Chapter19/onlineStore/app/Providers/BroadcastServiceProvider.php b/Chapter19/onlineStore/app/Providers/BroadcastServiceProvider.php deleted file mode 100644 index 395c518..0000000 --- a/Chapter19/onlineStore/app/Providers/BroadcastServiceProvider.php +++ /dev/null @@ -1,21 +0,0 @@ -> - */ - protected $listen = [ - Registered::class => [ - SendEmailVerificationNotification::class, - ], - ]; - - /** - * Register any events for your application. - * - * @return void - */ - public function boot() - { - // - } -} diff --git a/Chapter19/onlineStore/app/Providers/RouteServiceProvider.php b/Chapter19/onlineStore/app/Providers/RouteServiceProvider.php deleted file mode 100644 index 7c17d1f..0000000 --- a/Chapter19/onlineStore/app/Providers/RouteServiceProvider.php +++ /dev/null @@ -1,63 +0,0 @@ -configureRateLimiting(); - - $this->routes(function () { - Route::prefix('api') - ->middleware('api') - ->namespace($this->namespace) - ->group(base_path('routes/api.php')); - - Route::middleware('web') - ->namespace($this->namespace) - ->group(base_path('routes/web.php')); - }); - } - - /** - * Configure the rate limiters for the application. - * - * @return void - */ - protected function configureRateLimiting() - { - RateLimiter::for('api', function (Request $request) { - return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); - }); - } -} diff --git a/Chapter19/onlineStore/artisan b/Chapter19/onlineStore/artisan deleted file mode 100644 index 67a3329..0000000 --- a/Chapter19/onlineStore/artisan +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env php -make(Illuminate\Contracts\Console\Kernel::class); - -$status = $kernel->handle( - $input = new Symfony\Component\Console\Input\ArgvInput, - new Symfony\Component\Console\Output\ConsoleOutput -); - -/* -|-------------------------------------------------------------------------- -| Shutdown The Application -|-------------------------------------------------------------------------- -| -| Once Artisan has finished running, we will fire off the shutdown events -| so that any final work may be done by the application before we shut -| down the process. This is the last thing to happen to the request. -| -*/ - -$kernel->terminate($input, $status); - -exit($status); diff --git a/Chapter19/onlineStore/bootstrap/app.php b/Chapter19/onlineStore/bootstrap/app.php deleted file mode 100644 index 037e17d..0000000 --- a/Chapter19/onlineStore/bootstrap/app.php +++ /dev/null @@ -1,55 +0,0 @@ -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/Chapter19/onlineStore/bootstrap/cache/.gitignore b/Chapter19/onlineStore/bootstrap/cache/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter19/onlineStore/bootstrap/cache/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter19/onlineStore/composer.json b/Chapter19/onlineStore/composer.json deleted file mode 100644 index f0f2eda..0000000 --- a/Chapter19/onlineStore/composer.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "name": "laravel/laravel", - "type": "project", - "description": "The Laravel Framework.", - "keywords": ["framework", "laravel"], - "license": "MIT", - "require": { - "php": "^8.0", - "fruitcake/laravel-cors": "^2.0.5", - "guzzlehttp/guzzle": "^7.2", - "laravel/framework": "^9.0", - "laravel/sanctum": "^2.14", - "laravel/tinker": "^2.7" - }, - "require-dev": { - "fakerphp/faker": "^1.9.1", - "laravel/sail": "^1.0.1", - "mockery/mockery": "^1.4.4", - "nunomaduro/collision": "^6.1", - "phpunit/phpunit": "^9.5.10", - "spatie/laravel-ignition": "^1.0", - "squizlabs/php_codesniffer": "^3.6" - }, - "autoload": { - "psr-4": { - "App\\": "app/", - "Database\\Factories\\": "database/factories/", - "Database\\Seeders\\": "database/seeders/" - } - }, - "autoload-dev": { - "psr-4": { - "Tests\\": "tests/" - } - }, - "scripts": { - "post-autoload-dump": [ - "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", - "@php artisan package:discover --ansi" - ], - "post-update-cmd": [ - "@php artisan vendor:publish --tag=laravel-assets --ansi --force" - ], - "post-root-package-install": [ - "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" - ], - "post-create-project-cmd": [ - "@php artisan key:generate --ansi" - ] - }, - "extra": { - "laravel": { - "dont-discover": [] - } - }, - "config": { - "optimize-autoloader": true, - "preferred-install": "dist", - "sort-packages": true - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/Chapter19/onlineStore/composer.lock b/Chapter19/onlineStore/composer.lock deleted file mode 100644 index b55e897..0000000 --- a/Chapter19/onlineStore/composer.lock +++ /dev/null @@ -1,7860 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "8bdcc31974d0d5a00db79c82827c8815", - "packages": [ - { - "name": "asm89/stack-cors", - "version": "v2.1.1", - "source": { - "type": "git", - "url": "https://github.com/asm89/stack-cors.git", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4|^5|^6" - }, - "require-dev": { - "phpunit/phpunit": "^7|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "psr-4": { - "Asm89\\Stack\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alexander", - "email": "iam.asm89@gmail.com" - } - ], - "description": "Cross-origin resource sharing library and stack middleware", - "homepage": "https://github.com/asm89/stack-cors", - "keywords": [ - "cors", - "stack" - ], - "support": { - "issues": "https://github.com/asm89/stack-cors/issues", - "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" - }, - "time": "2022-01-18T09:12:03+00:00" - }, - { - "name": "brick/math", - "version": "0.9.3", - "source": { - "type": "git", - "url": "https://github.com/brick/math.git", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", - "vimeo/psalm": "4.9.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Brick\\Math\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Arbitrary-precision arithmetic library", - "keywords": [ - "Arbitrary-precision", - "BigInteger", - "BigRational", - "arithmetic", - "bigdecimal", - "bignum", - "brick", - "math" - ], - "support": { - "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.9.3" - }, - "funding": [ - { - "url": "https://github.com/BenMorel", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/brick/math", - "type": "tidelift" - } - ], - "time": "2021-08-15T20:50:18+00:00" - }, - { - "name": "dflydev/dot-access-data", - "version": "v3.0.1", - "source": { - "type": "git", - "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c", - "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": "^3.14" - }, - "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.1" - }, - "time": "2021-08-13T13:06:58+00:00" - }, - { - "name": "doctrine/inflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "vimeo/psalm": "^4.10" - }, - "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.4" - }, - "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": "2021-10-22T20:16:43+00:00" - }, - { - "name": "doctrine/lexer", - "version": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" - } - }, - "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/1.2.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%2Flexer", - "type": "tidelift" - } - ], - "time": "2022-01-12T08:27:12+00:00" - }, - { - "name": "dragonmantank/cron-expression", - "version": "v3.3.1", - "source": { - "type": "git", - "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "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.1" - }, - "funding": [ - { - "url": "https://github.com/dragonmantank", - "type": "github" - } - ], - "time": "2022-01-18T15:43:28+00:00" - }, - { - "name": "egulias/email-validator", - "version": "3.1.2", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ee0db30118f661fb166bcffbf5d82032df484697", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^1.2", - "php": ">=7.2", - "symfony/polyfill-intl-idn": "^1.15" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^8.5.8|^9.3.3", - "vimeo/psalm": "^4" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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/3.1.2" - }, - "funding": [ - { - "url": "https://github.com/egulias", - "type": "github" - } - ], - "time": "2021-10-11T09:18:27+00:00" - }, - { - "name": "fruitcake/laravel-cors", - "version": "v2.0.5", - "source": { - "type": "git", - "url": "https://github.com/fruitcake/laravel-cors.git", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "shasum": "" - }, - "require": { - "asm89/stack-cors": "^2.0.1", - "illuminate/contracts": "^6|^7|^8|^9", - "illuminate/support": "^6|^7|^8|^9", - "php": ">=7.2", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4.3.4|^5|^6" - }, - "require-dev": { - "laravel/framework": "^6|^7.24|^8", - "orchestra/testbench-dusk": "^4|^5|^6|^7", - "phpunit/phpunit": "^6|^7|^8|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - }, - "laravel": { - "providers": [ - "Fruitcake\\Cors\\CorsServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Fruitcake\\Cors\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fruitcake", - "homepage": "https://fruitcake.nl" - }, - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", - "keywords": [ - "api", - "cors", - "crossdomain", - "laravel" - ], - "support": { - "issues": "https://github.com/fruitcake/laravel-cors/issues", - "source": "https://github.com/fruitcake/laravel-cors/tree/v2.0.5" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "time": "2022-01-03T14:53:04+00:00" - }, - { - "name": "graham-campbell/result-type", - "version": "v1.0.4", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "0690bde05318336c7221785f2a932467f98b64ca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/0690bde05318336c7221785f2a932467f98b64ca", - "reference": "0690bde05318336c7221785f2a932467f98b64ca", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "phpoption/phpoption": "^1.8" - }, - "require-dev": { - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", - "type": "tidelift" - } - ], - "time": "2021-11-21T21:41:47+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "7.4.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.8.3 || ^2.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.4.1", - "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.5 || ^9.3.5", - "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": { - "branch-alias": { - "dev-master": "7.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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.4.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": "2021-12-06T18:43:05+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "1.5.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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/1.5.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "time": "2021-10-22T20:56:57+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.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.4.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.8 || ^9.3.10" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "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.1.0" - }, - "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": "2021-10-06T17:43:30+00:00" - }, - { - "name": "laravel/framework", - "version": "v9.0.1", - "source": { - "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "shasum": "" - }, - "require": { - "doctrine/inflector": "^2.0", - "dragonmantank/cron-expression": "^3.1", - "egulias/email-validator": "^3.1", - "ext-mbstring": "*", - "ext-openssl": "*", - "laravel/serializable-closure": "^1.0", - "league/commonmark": "^2.2", - "league/flysystem": "^3.0", - "monolog/monolog": "^2.0", - "nesbot/carbon": "^2.53.1", - "php": "^8.0.2", - "psr/container": "^1.1.1|^2.0.1", - "psr/log": "^1.0|^2.0|^3.0", - "psr/simple-cache": "^1.0|^2.0|^3.0", - "ramsey/uuid": "^4.2.2", - "symfony/console": "^6.0", - "symfony/error-handler": "^6.0", - "symfony/finder": "^6.0", - "symfony/http-foundation": "^6.0", - "symfony/http-kernel": "^6.0", - "symfony/mailer": "^6.0", - "symfony/mime": "^6.0", - "symfony/process": "^6.0", - "symfony/routing": "^6.0", - "symfony/var-dumper": "^6.0", - "tijsverkoyen/css-to-inline-styles": "^2.2.2", - "vlucas/phpdotenv": "^5.4.1", - "voku/portable-ascii": "^2.0" - }, - "conflict": { - "tightenco/collect": "<5.5.33" - }, - "provide": { - "psr/container-implementation": "1.1|2.0", - "psr/simple-cache-implementation": "1.0|2.0|3.0" - }, - "replace": { - "illuminate/auth": "self.version", - "illuminate/broadcasting": "self.version", - "illuminate/bus": "self.version", - "illuminate/cache": "self.version", - "illuminate/collections": "self.version", - "illuminate/conditionable": "self.version", - "illuminate/config": "self.version", - "illuminate/console": "self.version", - "illuminate/container": "self.version", - "illuminate/contracts": "self.version", - "illuminate/cookie": "self.version", - "illuminate/database": "self.version", - "illuminate/encryption": "self.version", - "illuminate/events": "self.version", - "illuminate/filesystem": "self.version", - "illuminate/hashing": "self.version", - "illuminate/http": "self.version", - "illuminate/log": "self.version", - "illuminate/macroable": "self.version", - "illuminate/mail": "self.version", - "illuminate/notifications": "self.version", - "illuminate/pagination": "self.version", - "illuminate/pipeline": "self.version", - "illuminate/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": { - "aws/aws-sdk-php": "^3.198.1", - "doctrine/dbal": "^2.13.3|^3.1.4", - "fakerphp/faker": "^1.9.2", - "guzzlehttp/guzzle": "^7.2", - "league/flysystem-aws-s3-v3": "^3.0", - "league/flysystem-ftp": "^3.0", - "league/flysystem-sftp-v3": "^3.0", - "mockery/mockery": "^1.4.4", - "orchestra/testbench-core": "^7.0", - "pda/pheanstalk": "^4.0", - "phpstan/phpstan": "^1.0", - "phpunit/phpunit": "^9.5.8", - "predis/predis": "^1.1.9", - "symfony/amazon-mailer": "^6.0", - "symfony/cache": "^6.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.198.1).", - "brianium/paratest": "Required to run tests in parallel (^6.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", - "ext-bcmath": "Required to use the multiple_of validation rule.", - "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.", - "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.2).", - "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-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", - "mockery/mockery": "Required to use mocking (^1.4.4).", - "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).", - "predis/predis": "Required to use the predis connector (^1.1.9).", - "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.0).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^6.0).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.0).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.0).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.0).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.x-dev" - } - }, - "autoload": { - "files": [ - "src/Illuminate/Collections/helpers.php", - "src/Illuminate/Events/functions.php", - "src/Illuminate/Foundation/helpers.php", - "src/Illuminate/Support/helpers.php" - ], - "psr-4": { - "Illuminate\\": "src/Illuminate/", - "Illuminate\\Support\\": [ - "src/Illuminate/Macroable/", - "src/Illuminate/Collections/", - "src/Illuminate/Conditionable/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Laravel Framework.", - "homepage": "https://laravel.com", - "keywords": [ - "framework", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2022-02-09T15:00:05+00:00" - }, - { - "name": "laravel/sanctum", - "version": "v2.14.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/sanctum.git", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/0647a87140c7522e75826cffcadb3ad6e01f71e9", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/contracts": "^6.9|^7.0|^8.0|^9.0", - "illuminate/database": "^6.9|^7.0|^8.0|^9.0", - "illuminate/support": "^6.9|^7.0|^8.0|^9.0", - "php": "^7.2|^8.0" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0", - "phpunit/phpunit": "^8.0|^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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": "2022-01-12T15:07:43+00:00" - }, - { - "name": "laravel/serializable-closure", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/serializable-closure.git", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/65c9faf50d567b65d81764a44526545689e3fe63", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "pestphp/pest": "^1.18", - "phpstan/phpstan": "^0.12.98", - "symfony/var-dumper": "^5.3" - }, - "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": "2022-02-01T16:29:39+00:00" - }, - { - "name": "laravel/tinker", - "version": "v2.7.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/tinker.git", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/5f2f9815b7631b9f586a3de7933c25f9327d4073", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073", - "shasum": "" - }, - "require": { - "illuminate/console": "^6.0|^7.0|^8.0|^9.0", - "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.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", - "phpunit/phpunit": "^8.5.8|^9.3.3" - }, - "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.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.7.0" - }, - "time": "2022-01-10T08:52:49+00:00" - }, - { - "name": "league/commonmark", - "version": "2.2.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/commonmark.git", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "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.15" - }, - "require-dev": { - "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.0", - "commonmark/commonmark.js": "0.30.0", - "composer/package-versions-deprecated": "^1.8", - "erusev/parsedown": "^1.0", - "ext-json": "*", - "github/gfm": "0.29.0", - "michelf/php-markdown": "^1.4", - "phpstan/phpstan": "^0.12.88 || ^1.0.0", - "phpunit/phpunit": "^9.5.5", - "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", - "unleashedtech/php-coding-standard": "^3.1", - "vimeo/psalm": "^4.7.3" - }, - "suggest": { - "symfony/yaml": "v2.3+ required if using the Front Matter extension" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.3-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": "2022-01-25T14:37:33+00:00" - }, - { - "name": "league/config", - "version": "v1.1.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/config.git", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/config/zipball/a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^3.0.1", - "nette/schema": "^1.2", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.90", - "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": "2021-08-14T12:15:32+00:00" - }, - { - "name": "league/flysystem", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9f8b4260031bfef5497477da53dd57b2aaff0e06", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06", - "shasum": "" - }, - "require": { - "ext-json": "*", - "league/mime-type-detection": "^1.0.0", - "php": "^8.0.2" - }, - "conflict": { - "guzzlehttp/guzzle": "<7.0", - "guzzlehttp/ringphp": "<1.1.1", - "symfony/http-client": "<5.2" - }, - "require-dev": { - "async-aws/s3": "^1.5", - "async-aws/simple-s3": "^1.0", - "aws/aws-sdk-php": "^3.198.1", - "composer/semver": "^3.0", - "ext-fileinfo": "*", - "ext-ftp": "*", - "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.5", - "google/cloud-storage": "^1.23", - "phpseclib/phpseclib": "^2.0", - "phpstan/phpstan": "^0.12.26", - "phpunit/phpunit": "^9.5.11", - "sabre/dav": "^4.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.0.3" - }, - "funding": [ - { - "url": "https://offset.earth/frankdejonge", - "type": "custom" - }, - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2022-01-31T19:41:04+00:00" - }, - { - "name": "league/mime-type-detection", - "version": "1.9.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/aa70e813a6ad3d1558fc927863d47309b4c23e69", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.2", - "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" - }, - "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.9.0" - }, - "funding": [ - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2021-11-21T11:48:40+00:00" - }, - { - "name": "monolog/monolog", - "version": "2.3.5", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd4380d6fc37626e2f799f29d91195040137eba9", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "provide": { - "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7", - "graylog2/gelf-php": "^1.4.2", - "mongodb/mongodb": "^1.8", - "php-amqplib/php-amqplib": "~2.4 || ^3", - "php-console/php-console": "^3.1.3", - "phpspec/prophecy": "^1.6.1", - "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5", - "predis/predis": "^1.1", - "rollbar/rollbar": "^1.3", - "ruflin/elastica": ">=0.90@dev", - "swiftmailer/swiftmailer": "^5.3|^6.0" - }, - "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", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "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": "2.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/2.3.5" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" - } - ], - "time": "2021-10-01T21:08:31+00:00" - }, - { - "name": "nesbot/carbon", - "version": "2.56.0", - "source": { - "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1.8 || ^8.0", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "doctrine/dbal": "^2.0 || ^3.0", - "doctrine/orm": "^2.7", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "phpmd/phpmd": "^2.9", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.54 || ^1.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.14", - "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://opencollective.com/Carbon", - "type": "open_collective" - }, - { - "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", - "type": "tidelift" - } - ], - "time": "2022-01-21T17:08:38+00:00" - }, - { - "name": "nette/schema", - "version": "v1.2.2", - "source": { - "type": "git", - "url": "https://github.com/nette/schema.git", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/9a39cef03a5b34c7de64f551538cbba05c2be5df", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df", - "shasum": "" - }, - "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": ">=7.1 <8.2" - }, - "require-dev": { - "nette/tester": "^2.3 || ^2.4", - "phpstan/phpstan-nette": "^0.12", - "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.2" - }, - "time": "2021-10-15T11:40:02+00:00" - }, - { - "name": "nette/utils", - "version": "v3.2.7", - "source": { - "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/0af4e3de4df9f1543534beab255ccf459e7a2c99", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99", - "shasum": "" - }, - "require": { - "php": ">=7.2 <8.2" - }, - "conflict": { - "nette/di": "<3.0.6" - }, - "require-dev": { - "nette/tester": "~2.0", - "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.3" - }, - "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()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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 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/v3.2.7" - }, - "time": "2022-01-24T11:29:14+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.13.2", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", - "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.13.2" - }, - "time": "2021-11-30T19:35:32+00:00" - }, - { - "name": "phpoption/phpoption", - "version": "1.8.1", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-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.8.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", - "type": "tidelift" - } - ], - "time": "2021-12-04T23:24:31+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.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.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": "http://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/tree/master" - }, - "time": "2020-06-29T06:28:15+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.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": "http://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/master" - }, - "time": "2019-04-30T12:38:16+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.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": "http://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/master" - }, - "time": "2016-08-06T14:39: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.1", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "570292577277f06f590635381a7f761a6cf4f026" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/570292577277f06f590635381a7f761a6cf4f026", - "reference": "570292577277f06f590635381a7f761a6cf4f026", - "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" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "3.17.05.02" - }, - "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.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." - }, - "bin": [ - "bin/psysh" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "0.11.x-dev" - } - }, - "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.1" - }, - "time": "2022-01-03T13:58:38+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": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/ramsey/collection.git", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "shasum": "" - }, - "require": { - "php": "^7.3 || ^8", - "symfony/polyfill-php81": "^1.23" - }, - "require-dev": { - "captainhook/captainhook": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "ergebnis/composer-normalize": "^2.6", - "fakerphp/faker": "^1.5", - "hamcrest/hamcrest-php": "^2", - "jangregor/phpstan-prophecy": "^0.8", - "mockery/mockery": "^1.3", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1", - "phpstan/phpstan": "^0.12.32", - "phpstan/phpstan-mockery": "^0.12.5", - "phpstan/phpstan-phpunit": "^0.12.11", - "phpunit/phpunit": "^8.5 || ^9", - "psy/psysh": "^0.10.4", - "slevomat/coding-standard": "^6.3", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.4" - }, - "type": "library", - "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/1.2.2" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "time": "2021-10-10T03:01:02+00:00" - }, - { - "name": "ramsey/uuid", - "version": "4.2.3", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "shasum": "" - }, - "require": { - "brick/math": "^0.8 || ^0.9", - "ext-json": "*", - "php": "^7.2 || ^8.0", - "ramsey/collection": "^1.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php80": "^1.14" - }, - "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", - "moontoast/math": "^1.1", - "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.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-mockery": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^8.5 || ^9", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" - }, - "suggest": { - "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-ctype": "Enables faster processing of character classification using ctype functions.", - "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": { - "branch-alias": { - "dev-main": "4.x-dev" - }, - "captainhook": { - "force-install": true - } - }, - "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "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.2.3" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2021-09-25T23:10:38+00:00" - }, - { - "name": "symfony/console", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/22e8efd019c3270c4f79376234a3f8752cd25490", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.4|^6.0" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/css-selector", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/1955d595c12c111629cc814d3f2a2ff13580508a", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a", - "shasum": "" - }, - "require": { - "php": ">=8.0.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/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-11-01T23:48:49+00:00" - }, - { - "name": "symfony/error-handler", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/20343b3bad7ebafa38138ddcb97290a24722b57b", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" - }, - "bin": [ - "Resources/bin/patch-type-declarations" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to manage errors and ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6472ea2dd415e925b90ca82be64b8bc6157f3934", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/event-dispatcher-contracts": "^2|^3" - }, - "conflict": { - "symfony/dependency-injection": "<5.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^5.4|^6.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/aa5422287b75594b90ee9cd807caf8f0df491385", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/event-dispatcher": "^1" - }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-07-15T12:33:35+00:00" - }, - { - "name": "symfony/finder", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/8661b74dbabc23223f38c9b99d3f8ade71170430", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ad157299ced81a637fade1efcadd688d6deba5c1", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1" - }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/cache": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0" - }, - "suggest": { - "symfony/mime": "To use the file extension guesser" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v6.0.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/error-handler": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", - "symfony/twig-bridge": "<5.4", - "symfony/validator": "<5.4", - "twig/twig": "<2.13" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/process": "^5.4|^6.0", - "symfony/routing": "^5.4|^6.0", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-29T18:12:46+00:00" - }, - { - "name": "symfony/mailer", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mailer.git", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "shasum": "" - }, - "require": { - "egulias/email-validator": "^2.1.10|^3", - "php": ">=8.0.2", - "psr/event-dispatcher": "^1", - "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3" - }, - "conflict": { - "symfony/http-kernel": "<5.4" - }, - "require-dev": { - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/messenger": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/mime", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/2cd9601efd040e56f43360daa68f3c6b0534923a", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "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" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "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.24.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": "2021-10-20T20:35:02+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-11-23T21:10:46+00:00" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44", - "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.23-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.24.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": "2021-09-14T14:02:44+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.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": "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.24.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": "2021-11-30T18:21:41+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-05-27T09:17:38+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:33+00:00" - }, - { - "name": "symfony/polyfill-php81", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:11+00:00" - }, - { - "name": "symfony/process", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/298ed357274c1868c20a0061df256a1250a6c4af", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/routing", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/yaml": "<5.4" - }, - "require-dev": { - "doctrine/annotations": "^1.12", - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/36715ebf9fb9db73db0cb24263c79077c6fe8603", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/container": "^2.0" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "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.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": "2021-11-04T17:53:12+00:00" - }, - { - "name": "symfony/string", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/522144f0c4c004c80d56fa47e40e17028e2eefc2", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.0" - }, - "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/translation-contracts": "^2.0|^3.0", - "symfony/var-exporter": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "files": [ - "Resources/functions.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 an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/translation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/71bb15335798f8c4da110911bcf2d2fead7a430d", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.3|^3.0" - }, - "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" - }, - "provide": { - "symfony/translation-implementation": "2.3|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-07T00:29:03+00:00" - }, - { - "name": "symfony/translation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "suggest": { - "symfony/translation-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - } - }, - "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.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": "2021-09-07T12:43:40+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7b701676fc64f9ef11f9b4870f16b48f66be4834", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<5.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-17T16:30:44+00:00" - }, - { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.4", - "source": { - "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" - } - ], - "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", - "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "support": { - "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" - }, - "time": "2021-12-08T09:12:39+00:00" - }, - { - "name": "vlucas/phpdotenv", - "version": "v5.4.1", - "source": { - "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", - "shasum": "" - }, - "require": { - "ext-pcre": "*", - "graham-campbell/result-type": "^1.0.2", - "php": "^7.1.3 || ^8.0", - "phpoption/phpoption": "^1.8", - "symfony/polyfill-ctype": "^1.23", - "symfony/polyfill-mbstring": "^1.23.1", - "symfony/polyfill-php80": "^1.23.1" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" - }, - "suggest": { - "ext-filter": "Required to use the boolean validator." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.4-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.4.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", - "type": "tidelift" - } - ], - "time": "2021-12-12T23:22:04+00:00" - }, - { - "name": "voku/portable-ascii", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/voku/portable-ascii.git", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/9bd89e83cecdf8c37b64909454249eaed98b2c89", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89", - "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.0" - }, - "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-01-24T18:59:03+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "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.10.0" - }, - "time": "2021-03-09T10:59:23+00:00" - } - ], - "packages-dev": [ - { - "name": "doctrine/instantiator", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.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%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2020-11-10T18:47:58+00:00" - }, - { - "name": "facade/ignition-contracts", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/facade/ignition-contracts.git", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^v2.15.8", - "phpunit/phpunit": "^9.3.11", - "vimeo/psalm": "^3.17.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Facade\\IgnitionContracts\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://flareapp.io", - "role": "Developer" - } - ], - "description": "Solution contracts for Ignition", - "homepage": "https://github.com/facade/ignition-contracts", - "keywords": [ - "contracts", - "flare", - "ignition" - ], - "support": { - "issues": "https://github.com/facade/ignition-contracts/issues", - "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" - }, - "time": "2020-10-16T08:27:54+00:00" - }, - { - "name": "fakerphp/faker", - "version": "v1.19.0", - "source": { - "type": "git", - "url": "https://github.com/FakerPHP/Faker.git", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^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": "*", - "symfony/phpunit-bridge": "^4.4 || ^5.2" - }, - "suggest": { - "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", - "ext-curl": "Required by Faker\\Provider\\Image to download images.", - "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", - "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.19-dev" - } - }, - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "François Zaninotto" - } - ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], - "support": { - "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0" - }, - "time": "2022-02-02T17:38:57+00:00" - }, - { - "name": "filp/whoops", - "version": "2.14.5", - "source": { - "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "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.14.5" - }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "time": "2022-01-07T12:00:00+00:00" - }, - { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "shasum": "" - }, - "require": { - "php": "^5.3|^7.0|^8.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" - }, - "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "classmap": [ - "hamcrest" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "This is the PHP port of Hamcrest Matchers", - "keywords": [ - "test" - ], - "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" - }, - "time": "2020-07-09T08:09:16+00:00" - }, - { - "name": "laravel/sail", - "version": "v1.13.2", - "source": { - "type": "git", - "url": "https://github.com/laravel/sail.git", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.0|^9.0", - "illuminate/contracts": "^8.0|^9.0", - "illuminate/support": "^8.0|^9.0", - "php": "^7.3|^8.0" - }, - "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": "2022-02-08T14:14:12+00:00" - }, - { - "name": "mockery/mockery", - "version": "1.5.0", - "source": { - "type": "git", - "url": "https://github.com/mockery/mockery.git", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "shasum": "" - }, - "require": { - "hamcrest/hamcrest-php": "^2.0.1", - "lib-pcre": ">=7.0", - "php": "^7.3 || ^8.0" - }, - "conflict": { - "phpunit/phpunit": "<8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-0": { - "Mockery": "library/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" - } - ], - "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": { - "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.5.0" - }, - "time": "2022-01-20T13:18:17+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.10.2", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "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.10.2" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2020-11-13T09:40:50+00:00" - }, - { - "name": "nunomaduro/collision", - "version": "v6.1.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/collision.git", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "shasum": "" - }, - "require": { - "facade/ignition-contracts": "^1.0.2", - "filp/whoops": "^2.14.5", - "php": "^8.0.0", - "symfony/console": "^6.0.2" - }, - "require-dev": { - "brianium/paratest": "^6.4.1", - "laravel/framework": "^9.0", - "nunomaduro/larastan": "^1.0.2", - "nunomaduro/mock-final-classes": "^1.1.0", - "orchestra/testbench": "^7.0.0", - "phpunit/phpunit": "^9.5.11" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "6.x-dev" - }, - "laravel": { - "providers": [ - "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" - ] - } - }, - "autoload": { - "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": "2022-01-18T17:49:08+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.1.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/15a90844ad40f127afd244c0cad228de2a80052a", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a", - "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.1.1" - }, - "time": "2022-02-07T21:56:48+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.6.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "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.6.0" - }, - "time": "2022-01-04T19:58:01+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" - }, - "time": "2021-12-08T12:19:24+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "9.2.10", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d5850aaf931743067f4bfc1ae4cbd06468400687", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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 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", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.10" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-05T09:12:13+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "3.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-02T12:48:52+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "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/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:58:55+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T05:33:50+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.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/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:16:10+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "9.5.13", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/597cb647654ede35e43b137926dfdfef0fb11743", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.3.1", - "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": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.7", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", - "sebastian/version": "^3.0.2" - }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.13" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-01-24T07:33:35+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:08:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "1.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:08:54+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:30:19+00:00" - }, - { - "name": "sebastian/comparator", - "version": "4.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:49:45+00:00" - }, - { - "name": "sebastian/complexity", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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 calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:52:27+00:00" - }, - { - "name": "sebastian/diff", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:10:38+00:00" - }, - { - "name": "sebastian/environment", - "version": "5.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-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": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:52:38+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "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", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-11-11T14:18:36+00:00" - }, - { - "name": "sebastian/global-state", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-11T13:31:12+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-28T06:42:11+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "http://www.github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:17:30+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:45:17+00:00" - }, - { - "name": "sebastian/type", - "version": "2.3.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-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/2.3.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-15T12:49:02+00:00" - }, - { - "name": "sebastian/version", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:39:44+00:00" - }, - { - "name": "spatie/backtrace", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/backtrace.git", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "ext-json": "*", - "phpunit/phpunit": "^9.3", - "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": { - "issues": "https://github.com/spatie/backtrace/issues", - "source": "https://github.com/spatie/backtrace/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/sponsors/spatie", - "type": "github" - }, - { - "url": "https://spatie.be/open-source/support-us", - "type": "other" - } - ], - "time": "2021-11-09T10:57:15+00:00" - }, - { - "name": "spatie/flare-client-php", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/flare-client-php.git", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "shasum": "" - }, - "require": { - "illuminate/pipeline": "^8.0|^9.0", - "php": "^8.0", - "spatie/backtrace": "^1.2", - "symfony/http-foundation": "^5.0|^6.0", - "symfony/mime": "^5.2|^6.0", - "symfony/process": "^5.2|^6.0", - "symfony/var-dumper": "^5.2|^6.0" - }, - "require-dev": { - "dms/phpunit-arraysubset-asserts": "^0.3.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/phpunit-snapshot-assertions": "^4.0" - }, - "type": "library", - "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.0.1" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2022-02-04T15:21:00+00:00" - }, - { - "name": "spatie/ignition", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/spatie/ignition.git", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/d2d5ba823af3004268556e87dfc94449e4159f5a", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "monolog/monolog": "^2.0", - "php": "^8.0", - "spatie/flare-client-php": "^1.0", - "symfony/console": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "mockery/mockery": "^1.4", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/ray": "^1.32", - "symfony/process": "^5.4|^6.0" - }, - "type": "library", - "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": "2022-01-19T12:57:41+00:00" - }, - { - "name": "spatie/laravel-ignition", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/68250225a9f83b086462c2af1b1139dfde48fbd2", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*", - "illuminate/support": "^8.77|^9.0", - "monolog/monolog": "^2.3", - "php": "^8.0", - "spatie/flare-client-php": "^1.0.1", - "spatie/ignition": "^1.0", - "symfony/console": "^5.0|^6.0", - "symfony/var-dumper": "^5.0|^6.0" - }, - "require-dev": { - "filp/whoops": "^2.14", - "livewire/livewire": "^2.8|dev-develop", - "mockery/mockery": "^1.4", - "nunomaduro/larastan": "^1.0", - "orchestra/testbench": "^6.23|^7.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/laravel-ray": "^1.27" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Spatie\\LaravelIgnition\\IgnitionServiceProvider" - ], - "aliases": { - "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" - } - } - }, - "autoload": { - "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": "2022-02-04T15:25:56+00:00" - }, - { - "name": "squizlabs/php_codesniffer", - "version": "3.6.2", - "source": { - "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", - "shasum": "" - }, - "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.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": "lead" - } - ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", - "keywords": [ - "phpcs", - "standards" - ], - "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" - }, - "time": "2021-12-12T21:44:58+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2021-07-28T10:34:58+00:00" - } - ], - "aliases": [], - "minimum-stability": "dev", - "stability-flags": [], - "prefer-stable": true, - "prefer-lowest": false, - "platform": { - "php": "^8.0" - }, - "platform-dev": [], - "plugin-api-version": "2.1.0" -} diff --git a/Chapter19/onlineStore/config/app.php b/Chapter19/onlineStore/config/app.php deleted file mode 100644 index 1941d7c..0000000 --- a/Chapter19/onlineStore/config/app.php +++ /dev/null @@ -1,197 +0,0 @@ - env('APP_NAME', 'Laravel'), - - /* - |-------------------------------------------------------------------------- - | Application Environment - |-------------------------------------------------------------------------- - | - | This value determines the "environment" your application is currently - | running in. This may determine how you prefer to configure various - | services the application utilizes. Set this in your ".env" file. - | - */ - - 'env' => env('APP_ENV', 'production'), - - /* - |-------------------------------------------------------------------------- - | Application Debug Mode - |-------------------------------------------------------------------------- - | - | When your application is in debug mode, detailed error messages with - | stack traces will be shown on every error that occurs within your - | application. If disabled, a simple generic error page is shown. - | - */ - - 'debug' => (bool) env('APP_DEBUG', false), - - /* - |-------------------------------------------------------------------------- - | Application URL - |-------------------------------------------------------------------------- - | - | This URL is used by the console to properly generate URLs when using - | the Artisan command line tool. You should set this to the root of - | your application so that it is used when running Artisan tasks. - | - */ - - 'url' => env('APP_URL', 'http://localhost'), - - 'asset_url' => env('ASSET_URL', null), - - /* - |-------------------------------------------------------------------------- - | 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', - - /* - |-------------------------------------------------------------------------- - | 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' => [ - - /* - * Laravel Framework Service Providers... - */ - Illuminate\Auth\AuthServiceProvider::class, - Illuminate\Broadcasting\BroadcastServiceProvider::class, - Illuminate\Bus\BusServiceProvider::class, - Illuminate\Cache\CacheServiceProvider::class, - Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, - Illuminate\Cookie\CookieServiceProvider::class, - Illuminate\Database\DatabaseServiceProvider::class, - Illuminate\Encryption\EncryptionServiceProvider::class, - Illuminate\Filesystem\FilesystemServiceProvider::class, - Illuminate\Foundation\Providers\FoundationServiceProvider::class, - Illuminate\Hashing\HashServiceProvider::class, - Illuminate\Mail\MailServiceProvider::class, - Illuminate\Notifications\NotificationServiceProvider::class, - Illuminate\Pagination\PaginationServiceProvider::class, - Illuminate\Pipeline\PipelineServiceProvider::class, - Illuminate\Queue\QueueServiceProvider::class, - Illuminate\Redis\RedisServiceProvider::class, - Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, - Illuminate\Session\SessionServiceProvider::class, - Illuminate\Translation\TranslationServiceProvider::class, - Illuminate\Validation\ValidationServiceProvider::class, - Illuminate\View\ViewServiceProvider::class, - - /* - * 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, - - ], - - /* - |-------------------------------------------------------------------------- - | 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([ - // ... - ])->toArray(), - -]; diff --git a/Chapter19/onlineStore/config/auth.php b/Chapter19/onlineStore/config/auth.php deleted file mode 100644 index d8c6cee..0000000 --- a/Chapter19/onlineStore/config/auth.php +++ /dev/null @@ -1,111 +0,0 @@ - [ - '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 expire 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. - | - */ - - 'passwords' => [ - 'users' => [ - 'provider' => 'users', - 'table' => 'password_resets', - '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/Chapter19/onlineStore/config/broadcasting.php b/Chapter19/onlineStore/config/broadcasting.php deleted file mode 100644 index 67fcbbd..0000000 --- a/Chapter19/onlineStore/config/broadcasting.php +++ /dev/null @@ -1,67 +0,0 @@ - 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'), - 'useTLS' => true, - ], - '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/Chapter19/onlineStore/config/cache.php b/Chapter19/onlineStore/config/cache.php deleted file mode 100644 index 8736c7a..0000000 --- a/Chapter19/onlineStore/config/cache.php +++ /dev/null @@ -1,110 +0,0 @@ - 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'), - ], - - '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 a RAM based store such as APC or Memcached, there might - | be other applications utilizing the same cache. So, we'll specify a - | value to get prefixed to all our keys so we can avoid collisions. - | - */ - - 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'), - -]; diff --git a/Chapter19/onlineStore/config/cors.php b/Chapter19/onlineStore/config/cors.php deleted file mode 100644 index 8a39e6d..0000000 --- a/Chapter19/onlineStore/config/cors.php +++ /dev/null @@ -1,34 +0,0 @@ - ['api/*', 'sanctum/csrf-cookie'], - - 'allowed_methods' => ['*'], - - 'allowed_origins' => ['*'], - - 'allowed_origins_patterns' => [], - - 'allowed_headers' => ['*'], - - 'exposed_headers' => [], - - 'max_age' => 0, - - 'supports_credentials' => false, - -]; diff --git a/Chapter19/onlineStore/config/database.php b/Chapter19/onlineStore/config/database.php deleted file mode 100644 index 0faebae..0000000 --- a/Chapter19/onlineStore/config/database.php +++ /dev/null @@ -1,147 +0,0 @@ - env('DB_CONNECTION', 'mysql'), - - /* - |-------------------------------------------------------------------------- - | Database Connections - |-------------------------------------------------------------------------- - | - | Here are each of the database connections setup for your application. - | Of course, examples of configuring each database platform that is - | supported by Laravel is shown below to make development simple. - | - | - | All database work in Laravel is done through the PHP PDO facilities - | so make sure you have the driver for your particular database of - | choice installed on your machine before you begin development. - | - */ - - 'connections' => [ - - 'sqlite' => [ - 'driver' => 'sqlite', - 'url' => env('DATABASE_URL'), - 'database' => env('DB_DATABASE', database_path('database.sqlite')), - 'prefix' => '', - 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), - ], - - 'mysql' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '3306'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'unix_socket' => env('DB_SOCKET', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - 'pgsql' => [ - 'driver' => 'pgsql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '5432'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - 'search_path' => 'public', - 'sslmode' => 'prefer', - ], - - 'sqlsrv' => [ - 'driver' => 'sqlsrv', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', 'localhost'), - 'port' => env('DB_PORT', '1433'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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'), - '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'), - 'password' => env('REDIS_PASSWORD'), - 'port' => env('REDIS_PORT', '6379'), - 'database' => env('REDIS_CACHE_DB', '1'), - ], - - ], - -]; diff --git a/Chapter19/onlineStore/config/filesystems.php b/Chapter19/onlineStore/config/filesystems.php deleted file mode 100644 index cf5abce..0000000 --- a/Chapter19/onlineStore/config/filesystems.php +++ /dev/null @@ -1,73 +0,0 @@ - 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 setup for each driver as an example of the required options. - | - | Supported Drivers: "local", "ftp", "sftp", "s3" - | - */ - - 'disks' => [ - - 'local' => [ - 'driver' => 'local', - 'root' => storage_path('app'), - ], - - 'public' => [ - 'driver' => 'local', - 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', - 'visibility' => 'public', - ], - - '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), - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter19/onlineStore/config/hashing.php b/Chapter19/onlineStore/config/hashing.php deleted file mode 100644 index bcd3be4..0000000 --- a/Chapter19/onlineStore/config/hashing.php +++ /dev/null @@ -1,52 +0,0 @@ - '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/Chapter19/onlineStore/config/logging.php b/Chapter19/onlineStore/config/logging.php deleted file mode 100644 index fefe088..0000000 --- a/Chapter19/onlineStore/config/logging.php +++ /dev/null @@ -1,119 +0,0 @@ - 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' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), - - /* - |-------------------------------------------------------------------------- - | 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'), - ], - - 'daily' => [ - 'driver' => 'daily', - 'path' => storage_path('logs/laravel.log'), - 'level' => env('LOG_LEVEL', 'debug'), - 'days' => 14, - ], - - 'slack' => [ - 'driver' => 'slack', - 'url' => env('LOG_SLACK_WEBHOOK_URL'), - 'username' => 'Laravel Log', - 'emoji' => ':boom:', - 'level' => env('LOG_LEVEL', 'critical'), - ], - - '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'), - ], - ], - - 'stderr' => [ - 'driver' => 'monolog', - 'level' => env('LOG_LEVEL', 'debug'), - 'handler' => StreamHandler::class, - 'formatter' => env('LOG_STDERR_FORMATTER'), - 'with' => [ - 'stream' => 'php://stderr', - ], - ], - - 'syslog' => [ - 'driver' => 'syslog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'errorlog' => [ - 'driver' => 'errorlog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'null' => [ - 'driver' => 'monolog', - 'handler' => NullHandler::class, - ], - - 'emergency' => [ - 'path' => storage_path('logs/laravel.log'), - ], - ], - -]; diff --git a/Chapter19/onlineStore/config/mail.php b/Chapter19/onlineStore/config/mail.php deleted file mode 100644 index 87b6fe3..0000000 --- a/Chapter19/onlineStore/config/mail.php +++ /dev/null @@ -1,117 +0,0 @@ - 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", - | "postmark", "log", "array", "failover" - | - */ - - 'mailers' => [ - 'smtp' => [ - 'transport' => 'smtp', - '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, - ], - - 'ses' => [ - 'transport' => 'ses', - ], - - 'mailgun' => [ - 'transport' => 'mailgun', - ], - - 'postmark' => [ - 'transport' => 'postmark', - ], - - 'sendmail' => [ - 'transport' => 'sendmail', - 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -t -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/Chapter19/onlineStore/config/queue.php b/Chapter19/onlineStore/config/queue.php deleted file mode 100644 index 25ea5a8..0000000 --- a/Chapter19/onlineStore/config/queue.php +++ /dev/null @@ -1,93 +0,0 @@ - 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, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter19/onlineStore/config/sanctum.php b/Chapter19/onlineStore/config/sanctum.php deleted file mode 100644 index 9281c92..0000000 --- a/Chapter19/onlineStore/config/sanctum.php +++ /dev/null @@ -1,65 +0,0 @@ - explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( - '%s%s', - 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', - env('APP_URL') ? ','.parse_url(env('APP_URL'), PHP_URL_HOST) : '' - ))), - - /* - |-------------------------------------------------------------------------- - | 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/Chapter19/onlineStore/config/services.php b/Chapter19/onlineStore/config/services.php deleted file mode 100644 index 2a1d616..0000000 --- a/Chapter19/onlineStore/config/services.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - 'domain' => env('MAILGUN_DOMAIN'), - 'secret' => env('MAILGUN_SECRET'), - 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), - ], - - '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/Chapter19/onlineStore/config/session.php b/Chapter19/onlineStore/config/session.php deleted file mode 100644 index 8fed97c..0000000 --- a/Chapter19/onlineStore/config/session.php +++ /dev/null @@ -1,201 +0,0 @@ - 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/Chapter19/onlineStore/config/view.php b/Chapter19/onlineStore/config/view.php deleted file mode 100644 index 22b8a18..0000000 --- a/Chapter19/onlineStore/config/view.php +++ /dev/null @@ -1,36 +0,0 @@ - [ - 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/Chapter19/onlineStore/database/.gitignore b/Chapter19/onlineStore/database/.gitignore deleted file mode 100644 index 9b19b93..0000000 --- a/Chapter19/onlineStore/database/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.sqlite* diff --git a/Chapter19/onlineStore/database/factories/UserFactory.php b/Chapter19/onlineStore/database/factories/UserFactory.php deleted file mode 100644 index d6ca926..0000000 --- a/Chapter19/onlineStore/database/factories/UserFactory.php +++ /dev/null @@ -1,42 +0,0 @@ - - */ -class UserFactory extends Factory -{ - /** - * Define the model's default state. - * - * @return array - */ - public function definition() - { - return [ - 'name' => $this->faker->name(), - 'email' => $this->faker->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. - * - * @return \Illuminate\Database\Eloquent\Factories\Factory - */ - public function unverified() - { - return $this->state(function (array $attributes) { - return [ - 'email_verified_at' => null, - ]; - }); - } -} diff --git a/Chapter19/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php b/Chapter19/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php deleted file mode 100644 index cf6b776..0000000 --- a/Chapter19/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->string('name'); - $table->string('email')->unique(); - $table->timestamp('email_verified_at')->nullable(); - $table->string('password'); - $table->rememberToken(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('users'); - } -}; diff --git a/Chapter19/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php b/Chapter19/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php deleted file mode 100644 index fcacb80..0000000 --- a/Chapter19/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php +++ /dev/null @@ -1,32 +0,0 @@ -string('email')->index(); - $table->string('token'); - $table->timestamp('created_at')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('password_resets'); - } -}; diff --git a/Chapter19/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/Chapter19/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php deleted file mode 100644 index 1719198..0000000 --- a/Chapter19/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php +++ /dev/null @@ -1,36 +0,0 @@ -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. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('failed_jobs'); - } -}; diff --git a/Chapter19/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/Chapter19/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php deleted file mode 100644 index fd235f8..0000000 --- a/Chapter19/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->morphs('tokenable'); - $table->string('name'); - $table->string('token', 64)->unique(); - $table->text('abilities')->nullable(); - $table->timestamp('last_used_at')->nullable(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('personal_access_tokens'); - } -}; diff --git a/Chapter19/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php b/Chapter19/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php deleted file mode 100644 index 2eecdc2..0000000 --- a/Chapter19/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php +++ /dev/null @@ -1,35 +0,0 @@ -id(); - $table->string('name'); - $table->text('description'); - $table->string('image'); - $table->integer('price'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('products'); - } -}; diff --git a/Chapter19/onlineStore/database/seeders/DatabaseSeeder.php b/Chapter19/onlineStore/database/seeders/DatabaseSeeder.php deleted file mode 100644 index 71f673f..0000000 --- a/Chapter19/onlineStore/database/seeders/DatabaseSeeder.php +++ /dev/null @@ -1,19 +0,0 @@ -create(); - } -} diff --git a/Chapter19/onlineStore/lang/en.json b/Chapter19/onlineStore/lang/en.json deleted file mode 100644 index 577680d..0000000 --- a/Chapter19/onlineStore/lang/en.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "The :attribute must contain at least one letter.": "The :attribute must contain at least one letter.", - "The :attribute must contain at least one number.": "The :attribute must contain at least one number.", - "The :attribute must contain at least one symbol.": "The :attribute must contain at least one symbol.", - "The :attribute must contain at least one uppercase and one lowercase letter.": "The :attribute must contain at least one uppercase and one lowercase letter.", - "The given :attribute has appeared in a data leak. Please choose a different :attribute.": "The given :attribute has appeared in a data leak. Please choose a different :attribute." -} diff --git a/Chapter19/onlineStore/lang/en/auth.php b/Chapter19/onlineStore/lang/en/auth.php deleted file mode 100644 index 6598e2c..0000000 --- a/Chapter19/onlineStore/lang/en/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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/Chapter19/onlineStore/lang/en/pagination.php b/Chapter19/onlineStore/lang/en/pagination.php deleted file mode 100644 index d481411..0000000 --- a/Chapter19/onlineStore/lang/en/pagination.php +++ /dev/null @@ -1,19 +0,0 @@ - '« Previous', - 'next' => 'Next »', - -]; diff --git a/Chapter19/onlineStore/lang/en/passwords.php b/Chapter19/onlineStore/lang/en/passwords.php deleted file mode 100644 index 2345a56..0000000 --- a/Chapter19/onlineStore/lang/en/passwords.php +++ /dev/null @@ -1,22 +0,0 @@ - '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/Chapter19/onlineStore/lang/en/validation.php b/Chapter19/onlineStore/lang/en/validation.php deleted file mode 100644 index 783003c..0000000 --- a/Chapter19/onlineStore/lang/en/validation.php +++ /dev/null @@ -1,163 +0,0 @@ - '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' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - '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' => [ - 'numeric' => 'The :attribute must be greater than :value.', - 'file' => 'The :attribute must be greater than :value kilobytes.', - 'string' => 'The :attribute must be greater than :value characters.', - 'array' => 'The :attribute must have more than :value items.', - ], - 'gte' => [ - 'numeric' => 'The :attribute must be greater than or equal to :value.', - 'file' => 'The :attribute must be greater than or equal to :value kilobytes.', - 'string' => 'The :attribute must be greater than or equal to :value characters.', - 'array' => 'The :attribute must have :value items or more.', - ], - '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' => [ - 'numeric' => 'The :attribute must be less than :value.', - 'file' => 'The :attribute must be less than :value kilobytes.', - 'string' => 'The :attribute must be less than :value characters.', - 'array' => 'The :attribute must have less than :value items.', - ], - 'lte' => [ - 'numeric' => 'The :attribute must be less than or equal to :value.', - 'file' => 'The :attribute must be less than or equal to :value kilobytes.', - 'string' => 'The :attribute must be less than or equal to :value characters.', - 'array' => 'The :attribute must not have more than :value items.', - ], - 'mac_address' => 'The :attribute must be a valid MAC address.', - 'max' => [ - 'numeric' => 'The :attribute must not be greater than :max.', - 'file' => 'The :attribute must not be greater than :max kilobytes.', - 'string' => 'The :attribute must not be greater than :max characters.', - 'array' => 'The :attribute must not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - '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.', - 'password' => 'The password is incorrect.', - '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' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - '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/Chapter19/onlineStore/package.json b/Chapter19/onlineStore/package.json deleted file mode 100644 index 7a9aecd..0000000 --- a/Chapter19/onlineStore/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "private": true, - "scripts": { - "dev": "npm run development", - "development": "mix", - "watch": "mix watch", - "watch-poll": "mix watch -- --watch-options-poll=1000", - "hot": "mix watch --hot", - "prod": "npm run production", - "production": "mix --production" - }, - "devDependencies": { - "axios": "^0.25", - "laravel-mix": "^6.0.6", - "lodash": "^4.17.19", - "postcss": "^8.1.14" - } -} diff --git a/Chapter19/onlineStore/phpcs.xml b/Chapter19/onlineStore/phpcs.xml deleted file mode 100644 index a1cf2b6..0000000 --- a/Chapter19/onlineStore/phpcs.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - The coding standard for the Online Store project - - app/ - config/ - database/ - routes/ - */migrations/* - diff --git a/Chapter19/onlineStore/phpunit.xml b/Chapter19/onlineStore/phpunit.xml deleted file mode 100644 index 2ac86a1..0000000 --- a/Chapter19/onlineStore/phpunit.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - ./tests/Unit - - - ./tests/Feature - - - - - ./app - - - - - - - - - - - - - - diff --git a/Chapter19/onlineStore/public/.htaccess b/Chapter19/onlineStore/public/.htaccess deleted file mode 100644 index 3aec5e2..0000000 --- a/Chapter19/onlineStore/public/.htaccess +++ /dev/null @@ -1,21 +0,0 @@ - - - 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/Chapter19/onlineStore/public/css/admin.css b/Chapter19/onlineStore/public/css/admin.css deleted file mode 100644 index d9495a1..0000000 --- a/Chapter19/onlineStore/public/css/admin.css +++ /dev/null @@ -1,33 +0,0 @@ -.copyright { - background-color: #1a252f; -} - -.fixed { - -ms-flex: 0 0 250px; - flex: 0 0 250px; -} - -.content-grey { - background-color: #f8f9fc; -} - -hr { - margin-top: 0.8em; - margin-bottom: 0.8em; -} - -.img-profile { - height: 2rem; - width: 2rem; -} - -.profile-font { - color: #858796 !important; - font-size: 80%; - font-weight: 400; -} - -.card-header { - background-color: #f8f9fc; - border-bottom: 1px solid #e3e6f0; -} diff --git a/Chapter19/onlineStore/public/css/app.css b/Chapter19/onlineStore/public/css/app.css deleted file mode 100644 index cabac36..0000000 --- a/Chapter19/onlineStore/public/css/app.css +++ /dev/null @@ -1,20 +0,0 @@ -.bg-secondary { - background-color: #2c3e50 !important; -} - -.copyright { - background-color: #1a252f; -} - -.bg-primary { - background-color: #1abc9c !important; -} - -nav{ - font-weight: 700; -} - -.img-card{ - height: 18vw; - object-fit: cover; -} diff --git a/Chapter19/onlineStore/public/favicon.ico b/Chapter19/onlineStore/public/favicon.ico deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter19/onlineStore/public/img/game.png b/Chapter19/onlineStore/public/img/game.png deleted file mode 100644 index 85420e8bbc16098bf26b4ee63bde0e91a19d1f2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25896 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 cz>% diff --git a/Chapter19/onlineStore/public/img/safe.png b/Chapter19/onlineStore/public/img/safe.png deleted file mode 100644 index 445942c707af53210931f9f4f99f6d3cb69e5d89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19240 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
w==XB0?3|p=#`o%NsudE(E-U#KS3Snw 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 o>ir+C;RN10sIS0&a;p - - - - - - - - - - - - - - - - - - diff --git a/Chapter19/onlineStore/public/index.php b/Chapter19/onlineStore/public/index.php deleted file mode 100644 index 1d69f3a..0000000 --- a/Chapter19/onlineStore/public/index.php +++ /dev/null @@ -1,55 +0,0 @@ -make(Kernel::class); - -$response = $kernel->handle( - $request = Request::capture() -)->send(); - -$kernel->terminate($request, $response); diff --git a/Chapter19/onlineStore/public/robots.txt b/Chapter19/onlineStore/public/robots.txt deleted file mode 100644 index eb05362..0000000 --- a/Chapter19/onlineStore/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: diff --git a/Chapter19/onlineStore/resources/css/app.css b/Chapter19/onlineStore/resources/css/app.css deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter19/onlineStore/resources/js/app.js b/Chapter19/onlineStore/resources/js/app.js deleted file mode 100644 index 40c55f6..0000000 --- a/Chapter19/onlineStore/resources/js/app.js +++ /dev/null @@ -1 +0,0 @@ -require('./bootstrap'); diff --git a/Chapter19/onlineStore/resources/js/bootstrap.js b/Chapter19/onlineStore/resources/js/bootstrap.js deleted file mode 100644 index 6922577..0000000 --- a/Chapter19/onlineStore/resources/js/bootstrap.js +++ /dev/null @@ -1,28 +0,0 @@ -window._ = require('lodash'); - -/** - * 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 = require('axios'); - -window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; - -/** - * 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'; - -// window.Pusher = require('pusher-js'); - -// window.Echo = new Echo({ -// broadcaster: 'pusher', -// key: process.env.MIX_PUSHER_APP_KEY, -// cluster: process.env.MIX_PUSHER_APP_CLUSTER, -// forceTLS: true -// }); diff --git a/Chapter19/onlineStore/resources/views/admin/home/index.blade.php b/Chapter19/onlineStore/resources/views/admin/home/index.blade.php deleted file mode 100644 index a2b4868..0000000 --- a/Chapter19/onlineStore/resources/views/admin/home/index.blade.php +++ /dev/null @@ -1,12 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
-
- Admin Panel - Home Page -
-
- Welcome to the Admin Panel, use the sidebar to navigate between the different options. -
-
-@endsection diff --git a/Chapter19/onlineStore/resources/views/admin/product/edit.blade.php b/Chapter19/onlineStore/resources/views/admin/product/edit.blade.php deleted file mode 100644 index b8e03d8..0000000 --- a/Chapter19/onlineStore/resources/views/admin/product/edit.blade.php +++ /dev/null @@ -1,61 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
-
- Edit Product -
-
- @if($errors->any()) -
    - @foreach($errors->all() as $error) -
  • - {{ $error }}
  • - @endforeach -
- @endif - -
- @csrf - @method('PUT') -
-
-
- -
- -
-
-
-
-
- -
- -
-
-
-
-
-
-
- -
- -
-
-
-
-   -
-
-
- - -
- -
-
-
-@endsection diff --git a/Chapter19/onlineStore/resources/views/admin/product/index.blade.php b/Chapter19/onlineStore/resources/views/admin/product/index.blade.php deleted file mode 100644 index 19fbe4b..0000000 --- a/Chapter19/onlineStore/resources/views/admin/product/index.blade.php +++ /dev/null @@ -1,98 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
-
- Create Products -
-
- @if($errors->any()) -
    - @foreach($errors->all() as $error) -
  • - {{ $error }}
  • - @endforeach -
- @endif - -
- @csrf -
-
-
- -
- -
-
-
-
-
- -
- -
-
-
-
-
-
-
- -
- -
-
-
-
-   -
-
-
- - -
- -
-
-
- -
-
- Manage Products -
-
- - - - - - - - - - - @foreach ($viewData["products"] as $product) - - - - - - - @endforeach - -
IDNameEditDelete
{{ $product->getId() }}{{ $product->getName() }} - - - - -
- @csrf - @method('DELETE') - -
-
-
-
-@endsection diff --git a/Chapter19/onlineStore/resources/views/home/about.blade.php b/Chapter19/onlineStore/resources/views/home/about.blade.php deleted file mode 100644 index f79abf3..0000000 --- a/Chapter19/onlineStore/resources/views/home/about.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
-
-
-

{{ $viewData["description"] }}

-
-
-

{{ $viewData["author"] }}

-
-
-
-@endsection diff --git a/Chapter19/onlineStore/resources/views/home/index.blade.php b/Chapter19/onlineStore/resources/views/home/index.blade.php deleted file mode 100644 index 1affb20..0000000 --- a/Chapter19/onlineStore/resources/views/home/index.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('content') -
-
- -
-
- -
-
- -
-
-@endsection diff --git a/Chapter19/onlineStore/resources/views/layouts/admin.blade.php b/Chapter19/onlineStore/resources/views/layouts/admin.blade.php deleted file mode 100644 index 4aff3f8..0000000 --- a/Chapter19/onlineStore/resources/views/layouts/admin.blade.php +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - @yield('title', 'Admin - Online Store') - - - -
- - - -
- - -
- @yield('content') -
-
-
- - - - - - - - - diff --git a/Chapter19/onlineStore/resources/views/layouts/app.blade.php b/Chapter19/onlineStore/resources/views/layouts/app.blade.php deleted file mode 100644 index eee7fcb..0000000 --- a/Chapter19/onlineStore/resources/views/layouts/app.blade.php +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - @yield('title', 'Online Store') - - - - - -
-
-

@yield('subtitle', 'A Laravel Online Store')

-
-
- - -
- @yield('content') -
- - - - - - - diff --git a/Chapter19/onlineStore/resources/views/product/index.blade.php b/Chapter19/onlineStore/resources/views/product/index.blade.php deleted file mode 100644 index 64c3e18..0000000 --- a/Chapter19/onlineStore/resources/views/product/index.blade.php +++ /dev/null @@ -1,18 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
- @foreach ($viewData["products"] as $product) - - @endforeach -
-@endsection diff --git a/Chapter19/onlineStore/resources/views/product/show.blade.php b/Chapter19/onlineStore/resources/views/product/show.blade.php deleted file mode 100644 index be37a01..0000000 --- a/Chapter19/onlineStore/resources/views/product/show.blade.php +++ /dev/null @@ -1,21 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
-
-
- getImage()) }}" class="img-fluid rounded-start"> -
-
-
-
- {{ $viewData["product"]->getName() }} (${{ $viewData["product"]->getPrice() }}) -
-

{{ $viewData["product"]->getDescription() }}

-

Add to Cart

-
-
-
-
-@endsection diff --git a/Chapter19/onlineStore/resources/views/welcome.blade.php b/Chapter19/onlineStore/resources/views/welcome.blade.php deleted file mode 100644 index c587c72..0000000 --- a/Chapter19/onlineStore/resources/views/welcome.blade.php +++ /dev/null @@ -1,7 +0,0 @@ -@extends('layouts.app') -@section('title', 'Home Page - Online Store') -@section('content') -
- Welcome to the application -
-@endsection \ No newline at end of file diff --git a/Chapter19/onlineStore/routes/api.php b/Chapter19/onlineStore/routes/api.php deleted file mode 100644 index eb6fa48..0000000 --- a/Chapter19/onlineStore/routes/api.php +++ /dev/null @@ -1,19 +0,0 @@ -get('/user', function (Request $request) { - return $request->user(); -}); diff --git a/Chapter19/onlineStore/routes/channels.php b/Chapter19/onlineStore/routes/channels.php deleted file mode 100644 index 5d451e1..0000000 --- a/Chapter19/onlineStore/routes/channels.php +++ /dev/null @@ -1,18 +0,0 @@ -id === (int) $id; -}); diff --git a/Chapter19/onlineStore/routes/console.php b/Chapter19/onlineStore/routes/console.php deleted file mode 100644 index e05f4c9..0000000 --- a/Chapter19/onlineStore/routes/console.php +++ /dev/null @@ -1,19 +0,0 @@ -comment(Inspiring::quote()); -})->purpose('Display an inspiring quote'); diff --git a/Chapter19/onlineStore/routes/web.php b/Chapter19/onlineStore/routes/web.php deleted file mode 100644 index ee369d0..0000000 --- a/Chapter19/onlineStore/routes/web.php +++ /dev/null @@ -1,25 +0,0 @@ -name("home.index"); -Route::get('/about', 'App\Http\Controllers\HomeController@about')->name("home.about"); -Route::get('/products', 'App\Http\Controllers\ProductController@index')->name("product.index"); -Route::get('/products/{id}', 'App\Http\Controllers\ProductController@show')->name("product.show"); -Route::get('/admin', 'App\Http\Controllers\Admin\AdminHomeController@index')->name("admin.home.index"); -Route::get('/admin/products', 'App\Http\Controllers\Admin\AdminProductController@index')->name("admin.product.index"); -Route::post('/admin/products/store', 'App\Http\Controllers\Admin\AdminProductController@store')->name("admin.product.store"); -Route::delete('/admin/products/{id}/delete', 'App\Http\Controllers\Admin\AdminProductController@delete')->name("admin.product.delete"); -Route::get('/admin/products/{id}/edit', 'App\Http\Controllers\Admin\AdminProductController@edit')->name("admin.product.edit"); -Route::put('/admin/products/{id}/update', 'App\Http\Controllers\Admin\AdminProductController@update')->name("admin.product.update"); diff --git a/Chapter19/onlineStore/storage/app/.gitignore b/Chapter19/onlineStore/storage/app/.gitignore deleted file mode 100644 index 8f4803c..0000000 --- a/Chapter19/onlineStore/storage/app/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!public/ -!.gitignore diff --git a/Chapter19/onlineStore/storage/app/public/.gitignore b/Chapter19/onlineStore/storage/app/public/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter19/onlineStore/storage/app/public/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter19/onlineStore/storage/framework/.gitignore b/Chapter19/onlineStore/storage/framework/.gitignore deleted file mode 100644 index 05c4471..0000000 --- a/Chapter19/onlineStore/storage/framework/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -compiled.php -config.php -down -events.scanned.php -maintenance.php -routes.php -routes.scanned.php -schedule-* -services.json diff --git a/Chapter19/onlineStore/storage/framework/cache/.gitignore b/Chapter19/onlineStore/storage/framework/cache/.gitignore deleted file mode 100644 index 01e4a6c..0000000 --- a/Chapter19/onlineStore/storage/framework/cache/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!data/ -!.gitignore diff --git a/Chapter19/onlineStore/storage/framework/cache/data/.gitignore b/Chapter19/onlineStore/storage/framework/cache/data/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter19/onlineStore/storage/framework/cache/data/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter19/onlineStore/storage/framework/sessions/.gitignore b/Chapter19/onlineStore/storage/framework/sessions/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter19/onlineStore/storage/framework/sessions/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter19/onlineStore/storage/framework/testing/.gitignore b/Chapter19/onlineStore/storage/framework/testing/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter19/onlineStore/storage/framework/testing/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter19/onlineStore/storage/framework/views/.gitignore b/Chapter19/onlineStore/storage/framework/views/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter19/onlineStore/storage/framework/views/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter19/onlineStore/storage/logs/.gitignore b/Chapter19/onlineStore/storage/logs/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter19/onlineStore/storage/logs/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter19/onlineStore/tests/CreatesApplication.php b/Chapter19/onlineStore/tests/CreatesApplication.php deleted file mode 100644 index 547152f..0000000 --- a/Chapter19/onlineStore/tests/CreatesApplication.php +++ /dev/null @@ -1,22 +0,0 @@ -make(Kernel::class)->bootstrap(); - - return $app; - } -} diff --git a/Chapter19/onlineStore/tests/Feature/ExampleTest.php b/Chapter19/onlineStore/tests/Feature/ExampleTest.php deleted file mode 100644 index 78ccc21..0000000 --- a/Chapter19/onlineStore/tests/Feature/ExampleTest.php +++ /dev/null @@ -1,21 +0,0 @@ -get('/'); - - $response->assertStatus(200); - } -} diff --git a/Chapter19/onlineStore/tests/TestCase.php b/Chapter19/onlineStore/tests/TestCase.php deleted file mode 100644 index 2932d4a..0000000 --- a/Chapter19/onlineStore/tests/TestCase.php +++ /dev/null @@ -1,10 +0,0 @@ -assertTrue(true); - } -} diff --git a/Chapter19/onlineStore/webpack.mix.js b/Chapter19/onlineStore/webpack.mix.js deleted file mode 100644 index 2a22dc1..0000000 --- a/Chapter19/onlineStore/webpack.mix.js +++ /dev/null @@ -1,17 +0,0 @@ -const mix = require('laravel-mix'); - -/* - |-------------------------------------------------------------------------- - | Mix Asset Management - |-------------------------------------------------------------------------- - | - | Mix provides a clean, fluent API for defining some Webpack build steps - | for your Laravel applications. By default, we are compiling the CSS - | file for the application as well as bundling up all the JS files. - | - */ - -mix.js('resources/js/app.js', 'public/js') - .postCss('resources/css/app.css', 'public/css', [ - // - ]); diff --git a/Chapter20/onlineStore/.editorconfig b/Chapter20/onlineStore/.editorconfig deleted file mode 100644 index 1671c9b..0000000 --- a/Chapter20/onlineStore/.editorconfig +++ /dev/null @@ -1,18 +0,0 @@ -root = true - -[*] -charset = utf-8 -end_of_line = lf -insert_final_newline = true -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true - -[*.md] -trim_trailing_whitespace = false - -[*.{yml,yaml}] -indent_size = 2 - -[docker-compose.yml] -indent_size = 4 diff --git a/Chapter20/onlineStore/.env.example b/Chapter20/onlineStore/.env.example deleted file mode 100644 index 8510237..0000000 --- a/Chapter20/onlineStore/.env.example +++ /dev/null @@ -1,52 +0,0 @@ -APP_NAME=Laravel -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=laravel -DB_USERNAME=root -DB_PASSWORD= - -BROADCAST_DRIVER=log -CACHE_DRIVER=file -FILESYSTEM_DISK=local -QUEUE_CONNECTION=sync -SESSION_DRIVER=file -SESSION_LIFETIME=120 - -MEMCACHED_HOST=127.0.0.1 - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -MAIL_MAILER=smtp -MAIL_HOST=mailhog -MAIL_PORT=1025 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS=null -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_APP_CLUSTER=mt1 - -MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/Chapter20/onlineStore/.gitattributes b/Chapter20/onlineStore/.gitattributes deleted file mode 100644 index 510d996..0000000 --- a/Chapter20/onlineStore/.gitattributes +++ /dev/null @@ -1,10 +0,0 @@ -* text=auto - -*.blade.php diff=html -*.css diff=css -*.html diff=html -*.md diff=markdown -*.php diff=php - -/.github export-ignore -CHANGELOG.md export-ignore diff --git a/Chapter20/onlineStore/.gitignore b/Chapter20/onlineStore/.gitignore deleted file mode 100644 index eb003b0..0000000 --- a/Chapter20/onlineStore/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -/node_modules -/public/hot -/public/storage -/storage/*.key -/vendor -.env -.env.backup -.phpunit.result.cache -docker-compose.override.yml -Homestead.json -Homestead.yaml -npm-debug.log -yarn-error.log -/.idea -/.vscode diff --git a/Chapter20/onlineStore/.styleci.yml b/Chapter20/onlineStore/.styleci.yml deleted file mode 100644 index 679a631..0000000 --- a/Chapter20/onlineStore/.styleci.yml +++ /dev/null @@ -1,13 +0,0 @@ -php: - preset: laravel - version: 8 - disabled: - - no_unused_imports - finder: - not-name: - - index.php -js: - finder: - not-name: - - webpack.mix.js -css: true diff --git a/Chapter20/onlineStore/README.md b/Chapter20/onlineStore/README.md deleted file mode 100644 index f171eca..0000000 --- a/Chapter20/onlineStore/README.md +++ /dev/null @@ -1,64 +0,0 @@ -

- -

-Build Status -Total Downloads -Latest Stable Version -License -

- -## About Laravel - -Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as: - -- [Simple, fast routing engine](https://laravel.com/docs/routing). -- [Powerful dependency injection container](https://laravel.com/docs/container). -- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage. -- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent). -- Database agnostic [schema migrations](https://laravel.com/docs/migrations). -- [Robust background job processing](https://laravel.com/docs/queues). -- [Real-time event broadcasting](https://laravel.com/docs/broadcasting). - -Laravel is accessible, powerful, and provides tools required for large, robust applications. - -## Learning Laravel - -Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework. - -If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 2000 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library. - -## Laravel Sponsors - -We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell). - -### Premium Partners - -- **[Vehikl](https://vehikl.com/)** -- **[Tighten Co.](https://tighten.co)** -- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** -- **[64 Robots](https://64robots.com)** -- **[Cubet Techno Labs](https://cubettech.com)** -- **[Cyber-Duck](https://cyber-duck.co.uk)** -- **[Many](https://www.many.co.uk)** -- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)** -- **[DevSquad](https://devsquad.com)** -- **[Curotec](https://www.curotec.com/services/technologies/laravel/)** -- **[OP.GG](https://op.gg)** -- **[WebReinvent](https://webreinvent.com/?utm_source=laravel&utm_medium=github&utm_campaign=patreon-sponsors)** -- **[Lendio](https://lendio.com)** - -## Contributing - -Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions). - -## Code of Conduct - -In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). - -## Security Vulnerabilities - -If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed. - -## License - -The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). diff --git a/Chapter20/onlineStore/app/Console/Kernel.php b/Chapter20/onlineStore/app/Console/Kernel.php deleted file mode 100644 index d8bc1d2..0000000 --- a/Chapter20/onlineStore/app/Console/Kernel.php +++ /dev/null @@ -1,32 +0,0 @@ -command('inspire')->hourly(); - } - - /** - * Register the commands for the application. - * - * @return void - */ - protected function commands() - { - $this->load(__DIR__.'/Commands'); - - require base_path('routes/console.php'); - } -} diff --git a/Chapter20/onlineStore/app/Exceptions/Handler.php b/Chapter20/onlineStore/app/Exceptions/Handler.php deleted file mode 100644 index 8e7fbd1..0000000 --- a/Chapter20/onlineStore/app/Exceptions/Handler.php +++ /dev/null @@ -1,41 +0,0 @@ -> - */ - protected $dontReport = [ - // - ]; - - /** - * A list of the inputs that are never flashed for validation exceptions. - * - * @var array - */ - protected $dontFlash = [ - 'current_password', - 'password', - 'password_confirmation', - ]; - - /** - * Register the exception handling callbacks for the application. - * - * @return void - */ - public function register() - { - $this->reportable(function (Throwable $e) { - // - }); - } -} diff --git a/Chapter20/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php b/Chapter20/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php deleted file mode 100644 index cd78cb3..0000000 --- a/Chapter20/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php +++ /dev/null @@ -1,16 +0,0 @@ -with("viewData", $viewData); - } -} diff --git a/Chapter20/onlineStore/app/Http/Controllers/Admin/AdminProductController.php b/Chapter20/onlineStore/app/Http/Controllers/Admin/AdminProductController.php deleted file mode 100644 index d1c6c52..0000000 --- a/Chapter20/onlineStore/app/Http/Controllers/Admin/AdminProductController.php +++ /dev/null @@ -1,79 +0,0 @@ -with("viewData", $viewData); - } - - public function store(Request $request) - { - Product::validate($request); - - $newProduct = new Product(); - $newProduct->setName($request->input('name')); - $newProduct->setDescription($request->input('description')); - $newProduct->setPrice($request->input('price')); - $newProduct->setImage("game.png"); - $newProduct->save(); - - if ($request->hasFile('image')) { - $imageName = $newProduct->getId().".".$request->file('image')->extension(); - Storage::disk('public')->put( - $imageName, - file_get_contents($request->file('image')->getRealPath()) - ); - $newProduct->setImage($imageName); - $newProduct->save(); - } - - return back(); - } - - public function delete($id) - { - Product::destroy($id); - return back(); - } - - public function edit($id) - { - $viewData = []; - $viewData["title"] = "Admin Page - Edit Product - Online Store"; - $viewData["product"] = Product::findOrFail($id); - return view('admin.product.edit')->with("viewData", $viewData); - } - - public function update(Request $request, $id) - { - Product::validate($request); - - $product = Product::findOrFail($id); - $product->setName($request->input('name')); - $product->setDescription($request->input('description')); - $product->setPrice($request->input('price')); - - if ($request->hasFile('image')) { - $imageName = $product->getId().".".$request->file('image')->extension(); - Storage::disk('public')->put( - $imageName, - file_get_contents($request->file('image')->getRealPath()) - ); - $product->setImage($imageName); - } - - $product->save(); - return redirect()->route('admin.product.index'); - } -} diff --git a/Chapter20/onlineStore/app/Http/Controllers/Controller.php b/Chapter20/onlineStore/app/Http/Controllers/Controller.php deleted file mode 100644 index a0a2a8a..0000000 --- a/Chapter20/onlineStore/app/Http/Controllers/Controller.php +++ /dev/null @@ -1,13 +0,0 @@ -with("viewData", $viewData); - } - - public function about() - { - $viewData = []; - $viewData["title"] = "About us - Online Store"; - $viewData["subtitle"] = "About us"; - $viewData["description"] = "This is an about page ..."; - $viewData["author"] = "Developed by: Your Name"; - return view('home.about')->with("viewData", $viewData); - } -} diff --git a/Chapter20/onlineStore/app/Http/Controllers/ProductController.php b/Chapter20/onlineStore/app/Http/Controllers/ProductController.php deleted file mode 100644 index d27a3a3..0000000 --- a/Chapter20/onlineStore/app/Http/Controllers/ProductController.php +++ /dev/null @@ -1,29 +0,0 @@ -with("viewData", $viewData); - } - - public function show($id) - { - $viewData = []; - $product = Product::findOrFail($id); - $viewData["title"] = $product->getName()." - Online Store"; - $viewData["subtitle"] = $product->getName()." - Product information"; - $viewData["product"] = $product; - return view('product.show')->with("viewData", $viewData); - } -} diff --git a/Chapter20/onlineStore/app/Http/Kernel.php b/Chapter20/onlineStore/app/Http/Kernel.php deleted file mode 100644 index d3722c2..0000000 --- a/Chapter20/onlineStore/app/Http/Kernel.php +++ /dev/null @@ -1,67 +0,0 @@ - - */ - protected $middleware = [ - // \App\Http\Middleware\TrustHosts::class, - \App\Http\Middleware\TrustProxies::class, - \Fruitcake\Cors\HandleCors::class, - \App\Http\Middleware\PreventRequestsDuringMaintenance::class, - \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, - \App\Http\Middleware\TrimStrings::class, - \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, - ]; - - /** - * The application's route middleware groups. - * - * @var array> - */ - protected $middlewareGroups = [ - 'web' => [ - \App\Http\Middleware\EncryptCookies::class, - \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, - \Illuminate\Session\Middleware\StartSession::class, - // \Illuminate\Session\Middleware\AuthenticateSession::class, - \Illuminate\View\Middleware\ShareErrorsFromSession::class, - \App\Http\Middleware\VerifyCsrfToken::class, - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - - 'api' => [ - // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, - 'throttle:api', - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - ]; - - /** - * The application's route middleware. - * - * These middleware may be assigned to groups or used individually. - * - * @var array - */ - protected $routeMiddleware = [ - 'auth' => \App\Http\Middleware\Authenticate::class, - 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::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, - 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, - 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, - 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, - ]; -} diff --git a/Chapter20/onlineStore/app/Http/Middleware/Authenticate.php b/Chapter20/onlineStore/app/Http/Middleware/Authenticate.php deleted file mode 100644 index 704089a..0000000 --- a/Chapter20/onlineStore/app/Http/Middleware/Authenticate.php +++ /dev/null @@ -1,21 +0,0 @@ -expectsJson()) { - return route('login'); - } - } -} diff --git a/Chapter20/onlineStore/app/Http/Middleware/EncryptCookies.php b/Chapter20/onlineStore/app/Http/Middleware/EncryptCookies.php deleted file mode 100644 index 867695b..0000000 --- a/Chapter20/onlineStore/app/Http/Middleware/EncryptCookies.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter20/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/Chapter20/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php deleted file mode 100644 index 74cbd9a..0000000 --- a/Chapter20/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter20/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php b/Chapter20/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php deleted file mode 100644 index a2813a0..0000000 --- a/Chapter20/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php +++ /dev/null @@ -1,32 +0,0 @@ -check()) { - return redirect(RouteServiceProvider::HOME); - } - } - - return $next($request); - } -} diff --git a/Chapter20/onlineStore/app/Http/Middleware/TrimStrings.php b/Chapter20/onlineStore/app/Http/Middleware/TrimStrings.php deleted file mode 100644 index 88cadca..0000000 --- a/Chapter20/onlineStore/app/Http/Middleware/TrimStrings.php +++ /dev/null @@ -1,19 +0,0 @@ - - */ - protected $except = [ - 'current_password', - 'password', - 'password_confirmation', - ]; -} diff --git a/Chapter20/onlineStore/app/Http/Middleware/TrustHosts.php b/Chapter20/onlineStore/app/Http/Middleware/TrustHosts.php deleted file mode 100644 index 7186414..0000000 --- a/Chapter20/onlineStore/app/Http/Middleware/TrustHosts.php +++ /dev/null @@ -1,20 +0,0 @@ - - */ - public function hosts() - { - return [ - $this->allSubdomainsOfApplicationUrl(), - ]; - } -} diff --git a/Chapter20/onlineStore/app/Http/Middleware/TrustProxies.php b/Chapter20/onlineStore/app/Http/Middleware/TrustProxies.php deleted file mode 100644 index 3391630..0000000 --- a/Chapter20/onlineStore/app/Http/Middleware/TrustProxies.php +++ /dev/null @@ -1,28 +0,0 @@ -|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/Chapter20/onlineStore/app/Http/Middleware/VerifyCsrfToken.php b/Chapter20/onlineStore/app/Http/Middleware/VerifyCsrfToken.php deleted file mode 100644 index 9e86521..0000000 --- a/Chapter20/onlineStore/app/Http/Middleware/VerifyCsrfToken.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter20/onlineStore/app/Models/Product.php b/Chapter20/onlineStore/app/Models/Product.php deleted file mode 100644 index b8f58f6..0000000 --- a/Chapter20/onlineStore/app/Models/Product.php +++ /dev/null @@ -1,99 +0,0 @@ -attributes['id'] - int - contains the product primary key (id) - * $this->attributes['name'] - string - contains the product name - * $this->attributes['description'] - string - contains the product description - * $this->attributes['image'] - string - contains the product image - * $this->attributes['price'] - int - contains the product price - * $this->attributes['created_at'] - timestamp - contains the product creation date - * $this->attributes['updated_at'] - timestamp - contains the product update date - */ - - public static function validate($request) - { - $request->validate([ - "name" => "required|max:255", - "description" => "required", - "price" => "required|numeric|gt:0", - 'image' => 'image', - ]); - } - - public function getId() - { - return $this->attributes['id']; - } - - public function setId($id) - { - $this->attributes['id'] = $id; - } - - public function getName() - { - return $this->attributes['name']; - } - - public function setName($name) - { - $this->attributes['name'] = $name; - } - - public function getDescription() - { - return $this->attributes['description']; - } - - public function setDescription($description) - { - $this->attributes['description'] = $description; - } - - public function getImage() - { - return $this->attributes['image']; - } - - public function setImage($image) - { - $this->attributes['image'] = $image; - } - - public function getPrice() - { - return $this->attributes['price']; - } - - public function setPrice($price) - { - $this->attributes['price'] = $price; - } - - public function getCreatedAt() - { - return $this->attributes['created_at']; - } - - public function setCreatedAt($createdAt) - { - $this->attributes['created_at'] = $createdAt; - } - - public function getUpdatedAt() - { - return $this->attributes['updated_at']; - } - - public function setUpdatedAt($updatedAt) - { - $this->attributes['updated_at'] = $updatedAt; - } -} diff --git a/Chapter20/onlineStore/app/Models/User.php b/Chapter20/onlineStore/app/Models/User.php deleted file mode 100644 index 8996368..0000000 --- a/Chapter20/onlineStore/app/Models/User.php +++ /dev/null @@ -1,44 +0,0 @@ - - */ - 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', - ]; -} diff --git a/Chapter20/onlineStore/app/Providers/AppServiceProvider.php b/Chapter20/onlineStore/app/Providers/AppServiceProvider.php deleted file mode 100644 index ee8ca5b..0000000 --- a/Chapter20/onlineStore/app/Providers/AppServiceProvider.php +++ /dev/null @@ -1,28 +0,0 @@ - - */ - protected $policies = [ - // 'App\Models\Model' => 'App\Policies\ModelPolicy', - ]; - - /** - * Register any authentication / authorization services. - * - * @return void - */ - public function boot() - { - $this->registerPolicies(); - - // - } -} diff --git a/Chapter20/onlineStore/app/Providers/BroadcastServiceProvider.php b/Chapter20/onlineStore/app/Providers/BroadcastServiceProvider.php deleted file mode 100644 index 395c518..0000000 --- a/Chapter20/onlineStore/app/Providers/BroadcastServiceProvider.php +++ /dev/null @@ -1,21 +0,0 @@ -> - */ - protected $listen = [ - Registered::class => [ - SendEmailVerificationNotification::class, - ], - ]; - - /** - * Register any events for your application. - * - * @return void - */ - public function boot() - { - // - } -} diff --git a/Chapter20/onlineStore/app/Providers/RouteServiceProvider.php b/Chapter20/onlineStore/app/Providers/RouteServiceProvider.php deleted file mode 100644 index 7c17d1f..0000000 --- a/Chapter20/onlineStore/app/Providers/RouteServiceProvider.php +++ /dev/null @@ -1,63 +0,0 @@ -configureRateLimiting(); - - $this->routes(function () { - Route::prefix('api') - ->middleware('api') - ->namespace($this->namespace) - ->group(base_path('routes/api.php')); - - Route::middleware('web') - ->namespace($this->namespace) - ->group(base_path('routes/web.php')); - }); - } - - /** - * Configure the rate limiters for the application. - * - * @return void - */ - protected function configureRateLimiting() - { - RateLimiter::for('api', function (Request $request) { - return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); - }); - } -} diff --git a/Chapter20/onlineStore/artisan b/Chapter20/onlineStore/artisan deleted file mode 100644 index 67a3329..0000000 --- a/Chapter20/onlineStore/artisan +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env php -make(Illuminate\Contracts\Console\Kernel::class); - -$status = $kernel->handle( - $input = new Symfony\Component\Console\Input\ArgvInput, - new Symfony\Component\Console\Output\ConsoleOutput -); - -/* -|-------------------------------------------------------------------------- -| Shutdown The Application -|-------------------------------------------------------------------------- -| -| Once Artisan has finished running, we will fire off the shutdown events -| so that any final work may be done by the application before we shut -| down the process. This is the last thing to happen to the request. -| -*/ - -$kernel->terminate($input, $status); - -exit($status); diff --git a/Chapter20/onlineStore/bootstrap/app.php b/Chapter20/onlineStore/bootstrap/app.php deleted file mode 100644 index 037e17d..0000000 --- a/Chapter20/onlineStore/bootstrap/app.php +++ /dev/null @@ -1,55 +0,0 @@ -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/Chapter20/onlineStore/bootstrap/cache/.gitignore b/Chapter20/onlineStore/bootstrap/cache/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter20/onlineStore/bootstrap/cache/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter20/onlineStore/composer.json b/Chapter20/onlineStore/composer.json deleted file mode 100644 index f0f2eda..0000000 --- a/Chapter20/onlineStore/composer.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "name": "laravel/laravel", - "type": "project", - "description": "The Laravel Framework.", - "keywords": ["framework", "laravel"], - "license": "MIT", - "require": { - "php": "^8.0", - "fruitcake/laravel-cors": "^2.0.5", - "guzzlehttp/guzzle": "^7.2", - "laravel/framework": "^9.0", - "laravel/sanctum": "^2.14", - "laravel/tinker": "^2.7" - }, - "require-dev": { - "fakerphp/faker": "^1.9.1", - "laravel/sail": "^1.0.1", - "mockery/mockery": "^1.4.4", - "nunomaduro/collision": "^6.1", - "phpunit/phpunit": "^9.5.10", - "spatie/laravel-ignition": "^1.0", - "squizlabs/php_codesniffer": "^3.6" - }, - "autoload": { - "psr-4": { - "App\\": "app/", - "Database\\Factories\\": "database/factories/", - "Database\\Seeders\\": "database/seeders/" - } - }, - "autoload-dev": { - "psr-4": { - "Tests\\": "tests/" - } - }, - "scripts": { - "post-autoload-dump": [ - "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", - "@php artisan package:discover --ansi" - ], - "post-update-cmd": [ - "@php artisan vendor:publish --tag=laravel-assets --ansi --force" - ], - "post-root-package-install": [ - "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" - ], - "post-create-project-cmd": [ - "@php artisan key:generate --ansi" - ] - }, - "extra": { - "laravel": { - "dont-discover": [] - } - }, - "config": { - "optimize-autoloader": true, - "preferred-install": "dist", - "sort-packages": true - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/Chapter20/onlineStore/composer.lock b/Chapter20/onlineStore/composer.lock deleted file mode 100644 index b55e897..0000000 --- a/Chapter20/onlineStore/composer.lock +++ /dev/null @@ -1,7860 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "8bdcc31974d0d5a00db79c82827c8815", - "packages": [ - { - "name": "asm89/stack-cors", - "version": "v2.1.1", - "source": { - "type": "git", - "url": "https://github.com/asm89/stack-cors.git", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4|^5|^6" - }, - "require-dev": { - "phpunit/phpunit": "^7|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "psr-4": { - "Asm89\\Stack\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alexander", - "email": "iam.asm89@gmail.com" - } - ], - "description": "Cross-origin resource sharing library and stack middleware", - "homepage": "https://github.com/asm89/stack-cors", - "keywords": [ - "cors", - "stack" - ], - "support": { - "issues": "https://github.com/asm89/stack-cors/issues", - "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" - }, - "time": "2022-01-18T09:12:03+00:00" - }, - { - "name": "brick/math", - "version": "0.9.3", - "source": { - "type": "git", - "url": "https://github.com/brick/math.git", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", - "vimeo/psalm": "4.9.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Brick\\Math\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Arbitrary-precision arithmetic library", - "keywords": [ - "Arbitrary-precision", - "BigInteger", - "BigRational", - "arithmetic", - "bigdecimal", - "bignum", - "brick", - "math" - ], - "support": { - "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.9.3" - }, - "funding": [ - { - "url": "https://github.com/BenMorel", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/brick/math", - "type": "tidelift" - } - ], - "time": "2021-08-15T20:50:18+00:00" - }, - { - "name": "dflydev/dot-access-data", - "version": "v3.0.1", - "source": { - "type": "git", - "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c", - "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": "^3.14" - }, - "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.1" - }, - "time": "2021-08-13T13:06:58+00:00" - }, - { - "name": "doctrine/inflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "vimeo/psalm": "^4.10" - }, - "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.4" - }, - "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": "2021-10-22T20:16:43+00:00" - }, - { - "name": "doctrine/lexer", - "version": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" - } - }, - "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/1.2.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%2Flexer", - "type": "tidelift" - } - ], - "time": "2022-01-12T08:27:12+00:00" - }, - { - "name": "dragonmantank/cron-expression", - "version": "v3.3.1", - "source": { - "type": "git", - "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "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.1" - }, - "funding": [ - { - "url": "https://github.com/dragonmantank", - "type": "github" - } - ], - "time": "2022-01-18T15:43:28+00:00" - }, - { - "name": "egulias/email-validator", - "version": "3.1.2", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ee0db30118f661fb166bcffbf5d82032df484697", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^1.2", - "php": ">=7.2", - "symfony/polyfill-intl-idn": "^1.15" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^8.5.8|^9.3.3", - "vimeo/psalm": "^4" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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/3.1.2" - }, - "funding": [ - { - "url": "https://github.com/egulias", - "type": "github" - } - ], - "time": "2021-10-11T09:18:27+00:00" - }, - { - "name": "fruitcake/laravel-cors", - "version": "v2.0.5", - "source": { - "type": "git", - "url": "https://github.com/fruitcake/laravel-cors.git", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "shasum": "" - }, - "require": { - "asm89/stack-cors": "^2.0.1", - "illuminate/contracts": "^6|^7|^8|^9", - "illuminate/support": "^6|^7|^8|^9", - "php": ">=7.2", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4.3.4|^5|^6" - }, - "require-dev": { - "laravel/framework": "^6|^7.24|^8", - "orchestra/testbench-dusk": "^4|^5|^6|^7", - "phpunit/phpunit": "^6|^7|^8|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - }, - "laravel": { - "providers": [ - "Fruitcake\\Cors\\CorsServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Fruitcake\\Cors\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fruitcake", - "homepage": "https://fruitcake.nl" - }, - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", - "keywords": [ - "api", - "cors", - "crossdomain", - "laravel" - ], - "support": { - "issues": "https://github.com/fruitcake/laravel-cors/issues", - "source": "https://github.com/fruitcake/laravel-cors/tree/v2.0.5" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "time": "2022-01-03T14:53:04+00:00" - }, - { - "name": "graham-campbell/result-type", - "version": "v1.0.4", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "0690bde05318336c7221785f2a932467f98b64ca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/0690bde05318336c7221785f2a932467f98b64ca", - "reference": "0690bde05318336c7221785f2a932467f98b64ca", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "phpoption/phpoption": "^1.8" - }, - "require-dev": { - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", - "type": "tidelift" - } - ], - "time": "2021-11-21T21:41:47+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "7.4.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.8.3 || ^2.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.4.1", - "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.5 || ^9.3.5", - "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": { - "branch-alias": { - "dev-master": "7.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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.4.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": "2021-12-06T18:43:05+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "1.5.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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/1.5.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "time": "2021-10-22T20:56:57+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.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.4.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.8 || ^9.3.10" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "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.1.0" - }, - "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": "2021-10-06T17:43:30+00:00" - }, - { - "name": "laravel/framework", - "version": "v9.0.1", - "source": { - "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "shasum": "" - }, - "require": { - "doctrine/inflector": "^2.0", - "dragonmantank/cron-expression": "^3.1", - "egulias/email-validator": "^3.1", - "ext-mbstring": "*", - "ext-openssl": "*", - "laravel/serializable-closure": "^1.0", - "league/commonmark": "^2.2", - "league/flysystem": "^3.0", - "monolog/monolog": "^2.0", - "nesbot/carbon": "^2.53.1", - "php": "^8.0.2", - "psr/container": "^1.1.1|^2.0.1", - "psr/log": "^1.0|^2.0|^3.0", - "psr/simple-cache": "^1.0|^2.0|^3.0", - "ramsey/uuid": "^4.2.2", - "symfony/console": "^6.0", - "symfony/error-handler": "^6.0", - "symfony/finder": "^6.0", - "symfony/http-foundation": "^6.0", - "symfony/http-kernel": "^6.0", - "symfony/mailer": "^6.0", - "symfony/mime": "^6.0", - "symfony/process": "^6.0", - "symfony/routing": "^6.0", - "symfony/var-dumper": "^6.0", - "tijsverkoyen/css-to-inline-styles": "^2.2.2", - "vlucas/phpdotenv": "^5.4.1", - "voku/portable-ascii": "^2.0" - }, - "conflict": { - "tightenco/collect": "<5.5.33" - }, - "provide": { - "psr/container-implementation": "1.1|2.0", - "psr/simple-cache-implementation": "1.0|2.0|3.0" - }, - "replace": { - "illuminate/auth": "self.version", - "illuminate/broadcasting": "self.version", - "illuminate/bus": "self.version", - "illuminate/cache": "self.version", - "illuminate/collections": "self.version", - "illuminate/conditionable": "self.version", - "illuminate/config": "self.version", - "illuminate/console": "self.version", - "illuminate/container": "self.version", - "illuminate/contracts": "self.version", - "illuminate/cookie": "self.version", - "illuminate/database": "self.version", - "illuminate/encryption": "self.version", - "illuminate/events": "self.version", - "illuminate/filesystem": "self.version", - "illuminate/hashing": "self.version", - "illuminate/http": "self.version", - "illuminate/log": "self.version", - "illuminate/macroable": "self.version", - "illuminate/mail": "self.version", - "illuminate/notifications": "self.version", - "illuminate/pagination": "self.version", - "illuminate/pipeline": "self.version", - "illuminate/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": { - "aws/aws-sdk-php": "^3.198.1", - "doctrine/dbal": "^2.13.3|^3.1.4", - "fakerphp/faker": "^1.9.2", - "guzzlehttp/guzzle": "^7.2", - "league/flysystem-aws-s3-v3": "^3.0", - "league/flysystem-ftp": "^3.0", - "league/flysystem-sftp-v3": "^3.0", - "mockery/mockery": "^1.4.4", - "orchestra/testbench-core": "^7.0", - "pda/pheanstalk": "^4.0", - "phpstan/phpstan": "^1.0", - "phpunit/phpunit": "^9.5.8", - "predis/predis": "^1.1.9", - "symfony/amazon-mailer": "^6.0", - "symfony/cache": "^6.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.198.1).", - "brianium/paratest": "Required to run tests in parallel (^6.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", - "ext-bcmath": "Required to use the multiple_of validation rule.", - "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.", - "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.2).", - "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-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", - "mockery/mockery": "Required to use mocking (^1.4.4).", - "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).", - "predis/predis": "Required to use the predis connector (^1.1.9).", - "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.0).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^6.0).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.0).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.0).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.0).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.x-dev" - } - }, - "autoload": { - "files": [ - "src/Illuminate/Collections/helpers.php", - "src/Illuminate/Events/functions.php", - "src/Illuminate/Foundation/helpers.php", - "src/Illuminate/Support/helpers.php" - ], - "psr-4": { - "Illuminate\\": "src/Illuminate/", - "Illuminate\\Support\\": [ - "src/Illuminate/Macroable/", - "src/Illuminate/Collections/", - "src/Illuminate/Conditionable/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Laravel Framework.", - "homepage": "https://laravel.com", - "keywords": [ - "framework", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2022-02-09T15:00:05+00:00" - }, - { - "name": "laravel/sanctum", - "version": "v2.14.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/sanctum.git", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/0647a87140c7522e75826cffcadb3ad6e01f71e9", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/contracts": "^6.9|^7.0|^8.0|^9.0", - "illuminate/database": "^6.9|^7.0|^8.0|^9.0", - "illuminate/support": "^6.9|^7.0|^8.0|^9.0", - "php": "^7.2|^8.0" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0", - "phpunit/phpunit": "^8.0|^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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": "2022-01-12T15:07:43+00:00" - }, - { - "name": "laravel/serializable-closure", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/serializable-closure.git", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/65c9faf50d567b65d81764a44526545689e3fe63", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "pestphp/pest": "^1.18", - "phpstan/phpstan": "^0.12.98", - "symfony/var-dumper": "^5.3" - }, - "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": "2022-02-01T16:29:39+00:00" - }, - { - "name": "laravel/tinker", - "version": "v2.7.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/tinker.git", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/5f2f9815b7631b9f586a3de7933c25f9327d4073", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073", - "shasum": "" - }, - "require": { - "illuminate/console": "^6.0|^7.0|^8.0|^9.0", - "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.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", - "phpunit/phpunit": "^8.5.8|^9.3.3" - }, - "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.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.7.0" - }, - "time": "2022-01-10T08:52:49+00:00" - }, - { - "name": "league/commonmark", - "version": "2.2.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/commonmark.git", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "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.15" - }, - "require-dev": { - "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.0", - "commonmark/commonmark.js": "0.30.0", - "composer/package-versions-deprecated": "^1.8", - "erusev/parsedown": "^1.0", - "ext-json": "*", - "github/gfm": "0.29.0", - "michelf/php-markdown": "^1.4", - "phpstan/phpstan": "^0.12.88 || ^1.0.0", - "phpunit/phpunit": "^9.5.5", - "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", - "unleashedtech/php-coding-standard": "^3.1", - "vimeo/psalm": "^4.7.3" - }, - "suggest": { - "symfony/yaml": "v2.3+ required if using the Front Matter extension" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.3-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": "2022-01-25T14:37:33+00:00" - }, - { - "name": "league/config", - "version": "v1.1.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/config.git", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/config/zipball/a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^3.0.1", - "nette/schema": "^1.2", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.90", - "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": "2021-08-14T12:15:32+00:00" - }, - { - "name": "league/flysystem", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9f8b4260031bfef5497477da53dd57b2aaff0e06", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06", - "shasum": "" - }, - "require": { - "ext-json": "*", - "league/mime-type-detection": "^1.0.0", - "php": "^8.0.2" - }, - "conflict": { - "guzzlehttp/guzzle": "<7.0", - "guzzlehttp/ringphp": "<1.1.1", - "symfony/http-client": "<5.2" - }, - "require-dev": { - "async-aws/s3": "^1.5", - "async-aws/simple-s3": "^1.0", - "aws/aws-sdk-php": "^3.198.1", - "composer/semver": "^3.0", - "ext-fileinfo": "*", - "ext-ftp": "*", - "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.5", - "google/cloud-storage": "^1.23", - "phpseclib/phpseclib": "^2.0", - "phpstan/phpstan": "^0.12.26", - "phpunit/phpunit": "^9.5.11", - "sabre/dav": "^4.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.0.3" - }, - "funding": [ - { - "url": "https://offset.earth/frankdejonge", - "type": "custom" - }, - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2022-01-31T19:41:04+00:00" - }, - { - "name": "league/mime-type-detection", - "version": "1.9.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/aa70e813a6ad3d1558fc927863d47309b4c23e69", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.2", - "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" - }, - "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.9.0" - }, - "funding": [ - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2021-11-21T11:48:40+00:00" - }, - { - "name": "monolog/monolog", - "version": "2.3.5", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd4380d6fc37626e2f799f29d91195040137eba9", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "provide": { - "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7", - "graylog2/gelf-php": "^1.4.2", - "mongodb/mongodb": "^1.8", - "php-amqplib/php-amqplib": "~2.4 || ^3", - "php-console/php-console": "^3.1.3", - "phpspec/prophecy": "^1.6.1", - "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5", - "predis/predis": "^1.1", - "rollbar/rollbar": "^1.3", - "ruflin/elastica": ">=0.90@dev", - "swiftmailer/swiftmailer": "^5.3|^6.0" - }, - "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", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "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": "2.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/2.3.5" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" - } - ], - "time": "2021-10-01T21:08:31+00:00" - }, - { - "name": "nesbot/carbon", - "version": "2.56.0", - "source": { - "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1.8 || ^8.0", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "doctrine/dbal": "^2.0 || ^3.0", - "doctrine/orm": "^2.7", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "phpmd/phpmd": "^2.9", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.54 || ^1.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.14", - "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://opencollective.com/Carbon", - "type": "open_collective" - }, - { - "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", - "type": "tidelift" - } - ], - "time": "2022-01-21T17:08:38+00:00" - }, - { - "name": "nette/schema", - "version": "v1.2.2", - "source": { - "type": "git", - "url": "https://github.com/nette/schema.git", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/9a39cef03a5b34c7de64f551538cbba05c2be5df", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df", - "shasum": "" - }, - "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": ">=7.1 <8.2" - }, - "require-dev": { - "nette/tester": "^2.3 || ^2.4", - "phpstan/phpstan-nette": "^0.12", - "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.2" - }, - "time": "2021-10-15T11:40:02+00:00" - }, - { - "name": "nette/utils", - "version": "v3.2.7", - "source": { - "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/0af4e3de4df9f1543534beab255ccf459e7a2c99", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99", - "shasum": "" - }, - "require": { - "php": ">=7.2 <8.2" - }, - "conflict": { - "nette/di": "<3.0.6" - }, - "require-dev": { - "nette/tester": "~2.0", - "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.3" - }, - "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()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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 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/v3.2.7" - }, - "time": "2022-01-24T11:29:14+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.13.2", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", - "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.13.2" - }, - "time": "2021-11-30T19:35:32+00:00" - }, - { - "name": "phpoption/phpoption", - "version": "1.8.1", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-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.8.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", - "type": "tidelift" - } - ], - "time": "2021-12-04T23:24:31+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.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.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": "http://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/tree/master" - }, - "time": "2020-06-29T06:28:15+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.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": "http://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/master" - }, - "time": "2019-04-30T12:38:16+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.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": "http://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/master" - }, - "time": "2016-08-06T14:39: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.1", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "570292577277f06f590635381a7f761a6cf4f026" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/570292577277f06f590635381a7f761a6cf4f026", - "reference": "570292577277f06f590635381a7f761a6cf4f026", - "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" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "3.17.05.02" - }, - "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.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." - }, - "bin": [ - "bin/psysh" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "0.11.x-dev" - } - }, - "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.1" - }, - "time": "2022-01-03T13:58:38+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": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/ramsey/collection.git", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "shasum": "" - }, - "require": { - "php": "^7.3 || ^8", - "symfony/polyfill-php81": "^1.23" - }, - "require-dev": { - "captainhook/captainhook": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "ergebnis/composer-normalize": "^2.6", - "fakerphp/faker": "^1.5", - "hamcrest/hamcrest-php": "^2", - "jangregor/phpstan-prophecy": "^0.8", - "mockery/mockery": "^1.3", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1", - "phpstan/phpstan": "^0.12.32", - "phpstan/phpstan-mockery": "^0.12.5", - "phpstan/phpstan-phpunit": "^0.12.11", - "phpunit/phpunit": "^8.5 || ^9", - "psy/psysh": "^0.10.4", - "slevomat/coding-standard": "^6.3", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.4" - }, - "type": "library", - "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/1.2.2" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "time": "2021-10-10T03:01:02+00:00" - }, - { - "name": "ramsey/uuid", - "version": "4.2.3", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "shasum": "" - }, - "require": { - "brick/math": "^0.8 || ^0.9", - "ext-json": "*", - "php": "^7.2 || ^8.0", - "ramsey/collection": "^1.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php80": "^1.14" - }, - "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", - "moontoast/math": "^1.1", - "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.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-mockery": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^8.5 || ^9", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" - }, - "suggest": { - "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-ctype": "Enables faster processing of character classification using ctype functions.", - "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": { - "branch-alias": { - "dev-main": "4.x-dev" - }, - "captainhook": { - "force-install": true - } - }, - "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "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.2.3" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2021-09-25T23:10:38+00:00" - }, - { - "name": "symfony/console", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/22e8efd019c3270c4f79376234a3f8752cd25490", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.4|^6.0" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/css-selector", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/1955d595c12c111629cc814d3f2a2ff13580508a", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a", - "shasum": "" - }, - "require": { - "php": ">=8.0.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/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-11-01T23:48:49+00:00" - }, - { - "name": "symfony/error-handler", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/20343b3bad7ebafa38138ddcb97290a24722b57b", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" - }, - "bin": [ - "Resources/bin/patch-type-declarations" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to manage errors and ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6472ea2dd415e925b90ca82be64b8bc6157f3934", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/event-dispatcher-contracts": "^2|^3" - }, - "conflict": { - "symfony/dependency-injection": "<5.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^5.4|^6.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/aa5422287b75594b90ee9cd807caf8f0df491385", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/event-dispatcher": "^1" - }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-07-15T12:33:35+00:00" - }, - { - "name": "symfony/finder", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/8661b74dbabc23223f38c9b99d3f8ade71170430", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ad157299ced81a637fade1efcadd688d6deba5c1", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1" - }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/cache": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0" - }, - "suggest": { - "symfony/mime": "To use the file extension guesser" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v6.0.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/error-handler": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", - "symfony/twig-bridge": "<5.4", - "symfony/validator": "<5.4", - "twig/twig": "<2.13" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/process": "^5.4|^6.0", - "symfony/routing": "^5.4|^6.0", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-29T18:12:46+00:00" - }, - { - "name": "symfony/mailer", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mailer.git", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "shasum": "" - }, - "require": { - "egulias/email-validator": "^2.1.10|^3", - "php": ">=8.0.2", - "psr/event-dispatcher": "^1", - "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3" - }, - "conflict": { - "symfony/http-kernel": "<5.4" - }, - "require-dev": { - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/messenger": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/mime", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/2cd9601efd040e56f43360daa68f3c6b0534923a", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "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" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "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.24.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": "2021-10-20T20:35:02+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-11-23T21:10:46+00:00" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44", - "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.23-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.24.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": "2021-09-14T14:02:44+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.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": "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.24.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": "2021-11-30T18:21:41+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-05-27T09:17:38+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:33+00:00" - }, - { - "name": "symfony/polyfill-php81", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:11+00:00" - }, - { - "name": "symfony/process", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/298ed357274c1868c20a0061df256a1250a6c4af", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/routing", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/yaml": "<5.4" - }, - "require-dev": { - "doctrine/annotations": "^1.12", - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/36715ebf9fb9db73db0cb24263c79077c6fe8603", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/container": "^2.0" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "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.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": "2021-11-04T17:53:12+00:00" - }, - { - "name": "symfony/string", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/522144f0c4c004c80d56fa47e40e17028e2eefc2", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.0" - }, - "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/translation-contracts": "^2.0|^3.0", - "symfony/var-exporter": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "files": [ - "Resources/functions.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 an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/translation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/71bb15335798f8c4da110911bcf2d2fead7a430d", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.3|^3.0" - }, - "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" - }, - "provide": { - "symfony/translation-implementation": "2.3|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-07T00:29:03+00:00" - }, - { - "name": "symfony/translation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "suggest": { - "symfony/translation-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - } - }, - "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.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": "2021-09-07T12:43:40+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7b701676fc64f9ef11f9b4870f16b48f66be4834", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<5.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-17T16:30:44+00:00" - }, - { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.4", - "source": { - "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" - } - ], - "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", - "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "support": { - "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" - }, - "time": "2021-12-08T09:12:39+00:00" - }, - { - "name": "vlucas/phpdotenv", - "version": "v5.4.1", - "source": { - "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", - "shasum": "" - }, - "require": { - "ext-pcre": "*", - "graham-campbell/result-type": "^1.0.2", - "php": "^7.1.3 || ^8.0", - "phpoption/phpoption": "^1.8", - "symfony/polyfill-ctype": "^1.23", - "symfony/polyfill-mbstring": "^1.23.1", - "symfony/polyfill-php80": "^1.23.1" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" - }, - "suggest": { - "ext-filter": "Required to use the boolean validator." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.4-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.4.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", - "type": "tidelift" - } - ], - "time": "2021-12-12T23:22:04+00:00" - }, - { - "name": "voku/portable-ascii", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/voku/portable-ascii.git", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/9bd89e83cecdf8c37b64909454249eaed98b2c89", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89", - "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.0" - }, - "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-01-24T18:59:03+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "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.10.0" - }, - "time": "2021-03-09T10:59:23+00:00" - } - ], - "packages-dev": [ - { - "name": "doctrine/instantiator", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.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%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2020-11-10T18:47:58+00:00" - }, - { - "name": "facade/ignition-contracts", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/facade/ignition-contracts.git", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^v2.15.8", - "phpunit/phpunit": "^9.3.11", - "vimeo/psalm": "^3.17.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Facade\\IgnitionContracts\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://flareapp.io", - "role": "Developer" - } - ], - "description": "Solution contracts for Ignition", - "homepage": "https://github.com/facade/ignition-contracts", - "keywords": [ - "contracts", - "flare", - "ignition" - ], - "support": { - "issues": "https://github.com/facade/ignition-contracts/issues", - "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" - }, - "time": "2020-10-16T08:27:54+00:00" - }, - { - "name": "fakerphp/faker", - "version": "v1.19.0", - "source": { - "type": "git", - "url": "https://github.com/FakerPHP/Faker.git", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^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": "*", - "symfony/phpunit-bridge": "^4.4 || ^5.2" - }, - "suggest": { - "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", - "ext-curl": "Required by Faker\\Provider\\Image to download images.", - "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", - "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.19-dev" - } - }, - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "François Zaninotto" - } - ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], - "support": { - "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0" - }, - "time": "2022-02-02T17:38:57+00:00" - }, - { - "name": "filp/whoops", - "version": "2.14.5", - "source": { - "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "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.14.5" - }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "time": "2022-01-07T12:00:00+00:00" - }, - { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "shasum": "" - }, - "require": { - "php": "^5.3|^7.0|^8.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" - }, - "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "classmap": [ - "hamcrest" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "This is the PHP port of Hamcrest Matchers", - "keywords": [ - "test" - ], - "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" - }, - "time": "2020-07-09T08:09:16+00:00" - }, - { - "name": "laravel/sail", - "version": "v1.13.2", - "source": { - "type": "git", - "url": "https://github.com/laravel/sail.git", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.0|^9.0", - "illuminate/contracts": "^8.0|^9.0", - "illuminate/support": "^8.0|^9.0", - "php": "^7.3|^8.0" - }, - "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": "2022-02-08T14:14:12+00:00" - }, - { - "name": "mockery/mockery", - "version": "1.5.0", - "source": { - "type": "git", - "url": "https://github.com/mockery/mockery.git", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "shasum": "" - }, - "require": { - "hamcrest/hamcrest-php": "^2.0.1", - "lib-pcre": ">=7.0", - "php": "^7.3 || ^8.0" - }, - "conflict": { - "phpunit/phpunit": "<8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-0": { - "Mockery": "library/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" - } - ], - "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": { - "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.5.0" - }, - "time": "2022-01-20T13:18:17+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.10.2", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "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.10.2" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2020-11-13T09:40:50+00:00" - }, - { - "name": "nunomaduro/collision", - "version": "v6.1.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/collision.git", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "shasum": "" - }, - "require": { - "facade/ignition-contracts": "^1.0.2", - "filp/whoops": "^2.14.5", - "php": "^8.0.0", - "symfony/console": "^6.0.2" - }, - "require-dev": { - "brianium/paratest": "^6.4.1", - "laravel/framework": "^9.0", - "nunomaduro/larastan": "^1.0.2", - "nunomaduro/mock-final-classes": "^1.1.0", - "orchestra/testbench": "^7.0.0", - "phpunit/phpunit": "^9.5.11" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "6.x-dev" - }, - "laravel": { - "providers": [ - "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" - ] - } - }, - "autoload": { - "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": "2022-01-18T17:49:08+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.1.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/15a90844ad40f127afd244c0cad228de2a80052a", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a", - "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.1.1" - }, - "time": "2022-02-07T21:56:48+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.6.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "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.6.0" - }, - "time": "2022-01-04T19:58:01+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" - }, - "time": "2021-12-08T12:19:24+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "9.2.10", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d5850aaf931743067f4bfc1ae4cbd06468400687", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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 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", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.10" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-05T09:12:13+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "3.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-02T12:48:52+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "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/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:58:55+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T05:33:50+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.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/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:16:10+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "9.5.13", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/597cb647654ede35e43b137926dfdfef0fb11743", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.3.1", - "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": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.7", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", - "sebastian/version": "^3.0.2" - }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.13" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-01-24T07:33:35+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:08:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "1.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:08:54+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:30:19+00:00" - }, - { - "name": "sebastian/comparator", - "version": "4.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:49:45+00:00" - }, - { - "name": "sebastian/complexity", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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 calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:52:27+00:00" - }, - { - "name": "sebastian/diff", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:10:38+00:00" - }, - { - "name": "sebastian/environment", - "version": "5.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-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": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:52:38+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "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", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-11-11T14:18:36+00:00" - }, - { - "name": "sebastian/global-state", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-11T13:31:12+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-28T06:42:11+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "http://www.github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:17:30+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:45:17+00:00" - }, - { - "name": "sebastian/type", - "version": "2.3.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-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/2.3.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-15T12:49:02+00:00" - }, - { - "name": "sebastian/version", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:39:44+00:00" - }, - { - "name": "spatie/backtrace", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/backtrace.git", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "ext-json": "*", - "phpunit/phpunit": "^9.3", - "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": { - "issues": "https://github.com/spatie/backtrace/issues", - "source": "https://github.com/spatie/backtrace/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/sponsors/spatie", - "type": "github" - }, - { - "url": "https://spatie.be/open-source/support-us", - "type": "other" - } - ], - "time": "2021-11-09T10:57:15+00:00" - }, - { - "name": "spatie/flare-client-php", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/flare-client-php.git", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "shasum": "" - }, - "require": { - "illuminate/pipeline": "^8.0|^9.0", - "php": "^8.0", - "spatie/backtrace": "^1.2", - "symfony/http-foundation": "^5.0|^6.0", - "symfony/mime": "^5.2|^6.0", - "symfony/process": "^5.2|^6.0", - "symfony/var-dumper": "^5.2|^6.0" - }, - "require-dev": { - "dms/phpunit-arraysubset-asserts": "^0.3.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/phpunit-snapshot-assertions": "^4.0" - }, - "type": "library", - "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.0.1" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2022-02-04T15:21:00+00:00" - }, - { - "name": "spatie/ignition", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/spatie/ignition.git", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/d2d5ba823af3004268556e87dfc94449e4159f5a", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "monolog/monolog": "^2.0", - "php": "^8.0", - "spatie/flare-client-php": "^1.0", - "symfony/console": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "mockery/mockery": "^1.4", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/ray": "^1.32", - "symfony/process": "^5.4|^6.0" - }, - "type": "library", - "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": "2022-01-19T12:57:41+00:00" - }, - { - "name": "spatie/laravel-ignition", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/68250225a9f83b086462c2af1b1139dfde48fbd2", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*", - "illuminate/support": "^8.77|^9.0", - "monolog/monolog": "^2.3", - "php": "^8.0", - "spatie/flare-client-php": "^1.0.1", - "spatie/ignition": "^1.0", - "symfony/console": "^5.0|^6.0", - "symfony/var-dumper": "^5.0|^6.0" - }, - "require-dev": { - "filp/whoops": "^2.14", - "livewire/livewire": "^2.8|dev-develop", - "mockery/mockery": "^1.4", - "nunomaduro/larastan": "^1.0", - "orchestra/testbench": "^6.23|^7.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/laravel-ray": "^1.27" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Spatie\\LaravelIgnition\\IgnitionServiceProvider" - ], - "aliases": { - "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" - } - } - }, - "autoload": { - "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": "2022-02-04T15:25:56+00:00" - }, - { - "name": "squizlabs/php_codesniffer", - "version": "3.6.2", - "source": { - "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", - "shasum": "" - }, - "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.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": "lead" - } - ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", - "keywords": [ - "phpcs", - "standards" - ], - "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" - }, - "time": "2021-12-12T21:44:58+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2021-07-28T10:34:58+00:00" - } - ], - "aliases": [], - "minimum-stability": "dev", - "stability-flags": [], - "prefer-stable": true, - "prefer-lowest": false, - "platform": { - "php": "^8.0" - }, - "platform-dev": [], - "plugin-api-version": "2.1.0" -} diff --git a/Chapter20/onlineStore/config/app.php b/Chapter20/onlineStore/config/app.php deleted file mode 100644 index 1941d7c..0000000 --- a/Chapter20/onlineStore/config/app.php +++ /dev/null @@ -1,197 +0,0 @@ - env('APP_NAME', 'Laravel'), - - /* - |-------------------------------------------------------------------------- - | Application Environment - |-------------------------------------------------------------------------- - | - | This value determines the "environment" your application is currently - | running in. This may determine how you prefer to configure various - | services the application utilizes. Set this in your ".env" file. - | - */ - - 'env' => env('APP_ENV', 'production'), - - /* - |-------------------------------------------------------------------------- - | Application Debug Mode - |-------------------------------------------------------------------------- - | - | When your application is in debug mode, detailed error messages with - | stack traces will be shown on every error that occurs within your - | application. If disabled, a simple generic error page is shown. - | - */ - - 'debug' => (bool) env('APP_DEBUG', false), - - /* - |-------------------------------------------------------------------------- - | Application URL - |-------------------------------------------------------------------------- - | - | This URL is used by the console to properly generate URLs when using - | the Artisan command line tool. You should set this to the root of - | your application so that it is used when running Artisan tasks. - | - */ - - 'url' => env('APP_URL', 'http://localhost'), - - 'asset_url' => env('ASSET_URL', null), - - /* - |-------------------------------------------------------------------------- - | 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', - - /* - |-------------------------------------------------------------------------- - | 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' => [ - - /* - * Laravel Framework Service Providers... - */ - Illuminate\Auth\AuthServiceProvider::class, - Illuminate\Broadcasting\BroadcastServiceProvider::class, - Illuminate\Bus\BusServiceProvider::class, - Illuminate\Cache\CacheServiceProvider::class, - Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, - Illuminate\Cookie\CookieServiceProvider::class, - Illuminate\Database\DatabaseServiceProvider::class, - Illuminate\Encryption\EncryptionServiceProvider::class, - Illuminate\Filesystem\FilesystemServiceProvider::class, - Illuminate\Foundation\Providers\FoundationServiceProvider::class, - Illuminate\Hashing\HashServiceProvider::class, - Illuminate\Mail\MailServiceProvider::class, - Illuminate\Notifications\NotificationServiceProvider::class, - Illuminate\Pagination\PaginationServiceProvider::class, - Illuminate\Pipeline\PipelineServiceProvider::class, - Illuminate\Queue\QueueServiceProvider::class, - Illuminate\Redis\RedisServiceProvider::class, - Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, - Illuminate\Session\SessionServiceProvider::class, - Illuminate\Translation\TranslationServiceProvider::class, - Illuminate\Validation\ValidationServiceProvider::class, - Illuminate\View\ViewServiceProvider::class, - - /* - * 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, - - ], - - /* - |-------------------------------------------------------------------------- - | 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([ - // ... - ])->toArray(), - -]; diff --git a/Chapter20/onlineStore/config/auth.php b/Chapter20/onlineStore/config/auth.php deleted file mode 100644 index d8c6cee..0000000 --- a/Chapter20/onlineStore/config/auth.php +++ /dev/null @@ -1,111 +0,0 @@ - [ - '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 expire 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. - | - */ - - 'passwords' => [ - 'users' => [ - 'provider' => 'users', - 'table' => 'password_resets', - '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/Chapter20/onlineStore/config/broadcasting.php b/Chapter20/onlineStore/config/broadcasting.php deleted file mode 100644 index 67fcbbd..0000000 --- a/Chapter20/onlineStore/config/broadcasting.php +++ /dev/null @@ -1,67 +0,0 @@ - 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'), - 'useTLS' => true, - ], - '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/Chapter20/onlineStore/config/cache.php b/Chapter20/onlineStore/config/cache.php deleted file mode 100644 index 8736c7a..0000000 --- a/Chapter20/onlineStore/config/cache.php +++ /dev/null @@ -1,110 +0,0 @@ - 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'), - ], - - '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 a RAM based store such as APC or Memcached, there might - | be other applications utilizing the same cache. So, we'll specify a - | value to get prefixed to all our keys so we can avoid collisions. - | - */ - - 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'), - -]; diff --git a/Chapter20/onlineStore/config/cors.php b/Chapter20/onlineStore/config/cors.php deleted file mode 100644 index 8a39e6d..0000000 --- a/Chapter20/onlineStore/config/cors.php +++ /dev/null @@ -1,34 +0,0 @@ - ['api/*', 'sanctum/csrf-cookie'], - - 'allowed_methods' => ['*'], - - 'allowed_origins' => ['*'], - - 'allowed_origins_patterns' => [], - - 'allowed_headers' => ['*'], - - 'exposed_headers' => [], - - 'max_age' => 0, - - 'supports_credentials' => false, - -]; diff --git a/Chapter20/onlineStore/config/database.php b/Chapter20/onlineStore/config/database.php deleted file mode 100644 index 0faebae..0000000 --- a/Chapter20/onlineStore/config/database.php +++ /dev/null @@ -1,147 +0,0 @@ - env('DB_CONNECTION', 'mysql'), - - /* - |-------------------------------------------------------------------------- - | Database Connections - |-------------------------------------------------------------------------- - | - | Here are each of the database connections setup for your application. - | Of course, examples of configuring each database platform that is - | supported by Laravel is shown below to make development simple. - | - | - | All database work in Laravel is done through the PHP PDO facilities - | so make sure you have the driver for your particular database of - | choice installed on your machine before you begin development. - | - */ - - 'connections' => [ - - 'sqlite' => [ - 'driver' => 'sqlite', - 'url' => env('DATABASE_URL'), - 'database' => env('DB_DATABASE', database_path('database.sqlite')), - 'prefix' => '', - 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), - ], - - 'mysql' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '3306'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'unix_socket' => env('DB_SOCKET', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - 'pgsql' => [ - 'driver' => 'pgsql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '5432'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - 'search_path' => 'public', - 'sslmode' => 'prefer', - ], - - 'sqlsrv' => [ - 'driver' => 'sqlsrv', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', 'localhost'), - 'port' => env('DB_PORT', '1433'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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'), - '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'), - 'password' => env('REDIS_PASSWORD'), - 'port' => env('REDIS_PORT', '6379'), - 'database' => env('REDIS_CACHE_DB', '1'), - ], - - ], - -]; diff --git a/Chapter20/onlineStore/config/filesystems.php b/Chapter20/onlineStore/config/filesystems.php deleted file mode 100644 index cf5abce..0000000 --- a/Chapter20/onlineStore/config/filesystems.php +++ /dev/null @@ -1,73 +0,0 @@ - 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 setup for each driver as an example of the required options. - | - | Supported Drivers: "local", "ftp", "sftp", "s3" - | - */ - - 'disks' => [ - - 'local' => [ - 'driver' => 'local', - 'root' => storage_path('app'), - ], - - 'public' => [ - 'driver' => 'local', - 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', - 'visibility' => 'public', - ], - - '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), - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter20/onlineStore/config/hashing.php b/Chapter20/onlineStore/config/hashing.php deleted file mode 100644 index bcd3be4..0000000 --- a/Chapter20/onlineStore/config/hashing.php +++ /dev/null @@ -1,52 +0,0 @@ - '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/Chapter20/onlineStore/config/logging.php b/Chapter20/onlineStore/config/logging.php deleted file mode 100644 index fefe088..0000000 --- a/Chapter20/onlineStore/config/logging.php +++ /dev/null @@ -1,119 +0,0 @@ - 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' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), - - /* - |-------------------------------------------------------------------------- - | 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'), - ], - - 'daily' => [ - 'driver' => 'daily', - 'path' => storage_path('logs/laravel.log'), - 'level' => env('LOG_LEVEL', 'debug'), - 'days' => 14, - ], - - 'slack' => [ - 'driver' => 'slack', - 'url' => env('LOG_SLACK_WEBHOOK_URL'), - 'username' => 'Laravel Log', - 'emoji' => ':boom:', - 'level' => env('LOG_LEVEL', 'critical'), - ], - - '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'), - ], - ], - - 'stderr' => [ - 'driver' => 'monolog', - 'level' => env('LOG_LEVEL', 'debug'), - 'handler' => StreamHandler::class, - 'formatter' => env('LOG_STDERR_FORMATTER'), - 'with' => [ - 'stream' => 'php://stderr', - ], - ], - - 'syslog' => [ - 'driver' => 'syslog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'errorlog' => [ - 'driver' => 'errorlog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'null' => [ - 'driver' => 'monolog', - 'handler' => NullHandler::class, - ], - - 'emergency' => [ - 'path' => storage_path('logs/laravel.log'), - ], - ], - -]; diff --git a/Chapter20/onlineStore/config/mail.php b/Chapter20/onlineStore/config/mail.php deleted file mode 100644 index 87b6fe3..0000000 --- a/Chapter20/onlineStore/config/mail.php +++ /dev/null @@ -1,117 +0,0 @@ - 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", - | "postmark", "log", "array", "failover" - | - */ - - 'mailers' => [ - 'smtp' => [ - 'transport' => 'smtp', - '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, - ], - - 'ses' => [ - 'transport' => 'ses', - ], - - 'mailgun' => [ - 'transport' => 'mailgun', - ], - - 'postmark' => [ - 'transport' => 'postmark', - ], - - 'sendmail' => [ - 'transport' => 'sendmail', - 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -t -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/Chapter20/onlineStore/config/queue.php b/Chapter20/onlineStore/config/queue.php deleted file mode 100644 index 25ea5a8..0000000 --- a/Chapter20/onlineStore/config/queue.php +++ /dev/null @@ -1,93 +0,0 @@ - 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, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter20/onlineStore/config/sanctum.php b/Chapter20/onlineStore/config/sanctum.php deleted file mode 100644 index 9281c92..0000000 --- a/Chapter20/onlineStore/config/sanctum.php +++ /dev/null @@ -1,65 +0,0 @@ - explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( - '%s%s', - 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', - env('APP_URL') ? ','.parse_url(env('APP_URL'), PHP_URL_HOST) : '' - ))), - - /* - |-------------------------------------------------------------------------- - | 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/Chapter20/onlineStore/config/services.php b/Chapter20/onlineStore/config/services.php deleted file mode 100644 index 2a1d616..0000000 --- a/Chapter20/onlineStore/config/services.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - 'domain' => env('MAILGUN_DOMAIN'), - 'secret' => env('MAILGUN_SECRET'), - 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), - ], - - '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/Chapter20/onlineStore/config/session.php b/Chapter20/onlineStore/config/session.php deleted file mode 100644 index 8fed97c..0000000 --- a/Chapter20/onlineStore/config/session.php +++ /dev/null @@ -1,201 +0,0 @@ - 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/Chapter20/onlineStore/config/view.php b/Chapter20/onlineStore/config/view.php deleted file mode 100644 index 22b8a18..0000000 --- a/Chapter20/onlineStore/config/view.php +++ /dev/null @@ -1,36 +0,0 @@ - [ - 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/Chapter20/onlineStore/database/.gitignore b/Chapter20/onlineStore/database/.gitignore deleted file mode 100644 index 9b19b93..0000000 --- a/Chapter20/onlineStore/database/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.sqlite* diff --git a/Chapter20/onlineStore/database/factories/UserFactory.php b/Chapter20/onlineStore/database/factories/UserFactory.php deleted file mode 100644 index d6ca926..0000000 --- a/Chapter20/onlineStore/database/factories/UserFactory.php +++ /dev/null @@ -1,42 +0,0 @@ - - */ -class UserFactory extends Factory -{ - /** - * Define the model's default state. - * - * @return array - */ - public function definition() - { - return [ - 'name' => $this->faker->name(), - 'email' => $this->faker->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. - * - * @return \Illuminate\Database\Eloquent\Factories\Factory - */ - public function unverified() - { - return $this->state(function (array $attributes) { - return [ - 'email_verified_at' => null, - ]; - }); - } -} diff --git a/Chapter20/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php b/Chapter20/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php deleted file mode 100644 index cf6b776..0000000 --- a/Chapter20/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->string('name'); - $table->string('email')->unique(); - $table->timestamp('email_verified_at')->nullable(); - $table->string('password'); - $table->rememberToken(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('users'); - } -}; diff --git a/Chapter20/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php b/Chapter20/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php deleted file mode 100644 index fcacb80..0000000 --- a/Chapter20/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php +++ /dev/null @@ -1,32 +0,0 @@ -string('email')->index(); - $table->string('token'); - $table->timestamp('created_at')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('password_resets'); - } -}; diff --git a/Chapter20/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/Chapter20/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php deleted file mode 100644 index 1719198..0000000 --- a/Chapter20/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php +++ /dev/null @@ -1,36 +0,0 @@ -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. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('failed_jobs'); - } -}; diff --git a/Chapter20/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/Chapter20/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php deleted file mode 100644 index fd235f8..0000000 --- a/Chapter20/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->morphs('tokenable'); - $table->string('name'); - $table->string('token', 64)->unique(); - $table->text('abilities')->nullable(); - $table->timestamp('last_used_at')->nullable(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('personal_access_tokens'); - } -}; diff --git a/Chapter20/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php b/Chapter20/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php deleted file mode 100644 index 2eecdc2..0000000 --- a/Chapter20/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php +++ /dev/null @@ -1,35 +0,0 @@ -id(); - $table->string('name'); - $table->text('description'); - $table->string('image'); - $table->integer('price'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('products'); - } -}; diff --git a/Chapter20/onlineStore/database/seeders/DatabaseSeeder.php b/Chapter20/onlineStore/database/seeders/DatabaseSeeder.php deleted file mode 100644 index 71f673f..0000000 --- a/Chapter20/onlineStore/database/seeders/DatabaseSeeder.php +++ /dev/null @@ -1,19 +0,0 @@ -create(); - } -} diff --git a/Chapter20/onlineStore/lang/en.json b/Chapter20/onlineStore/lang/en.json deleted file mode 100644 index 577680d..0000000 --- a/Chapter20/onlineStore/lang/en.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "The :attribute must contain at least one letter.": "The :attribute must contain at least one letter.", - "The :attribute must contain at least one number.": "The :attribute must contain at least one number.", - "The :attribute must contain at least one symbol.": "The :attribute must contain at least one symbol.", - "The :attribute must contain at least one uppercase and one lowercase letter.": "The :attribute must contain at least one uppercase and one lowercase letter.", - "The given :attribute has appeared in a data leak. Please choose a different :attribute.": "The given :attribute has appeared in a data leak. Please choose a different :attribute." -} diff --git a/Chapter20/onlineStore/lang/en/auth.php b/Chapter20/onlineStore/lang/en/auth.php deleted file mode 100644 index 6598e2c..0000000 --- a/Chapter20/onlineStore/lang/en/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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/Chapter20/onlineStore/lang/en/pagination.php b/Chapter20/onlineStore/lang/en/pagination.php deleted file mode 100644 index d481411..0000000 --- a/Chapter20/onlineStore/lang/en/pagination.php +++ /dev/null @@ -1,19 +0,0 @@ - '« Previous', - 'next' => 'Next »', - -]; diff --git a/Chapter20/onlineStore/lang/en/passwords.php b/Chapter20/onlineStore/lang/en/passwords.php deleted file mode 100644 index 2345a56..0000000 --- a/Chapter20/onlineStore/lang/en/passwords.php +++ /dev/null @@ -1,22 +0,0 @@ - '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/Chapter20/onlineStore/lang/en/validation.php b/Chapter20/onlineStore/lang/en/validation.php deleted file mode 100644 index 783003c..0000000 --- a/Chapter20/onlineStore/lang/en/validation.php +++ /dev/null @@ -1,163 +0,0 @@ - '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' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - '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' => [ - 'numeric' => 'The :attribute must be greater than :value.', - 'file' => 'The :attribute must be greater than :value kilobytes.', - 'string' => 'The :attribute must be greater than :value characters.', - 'array' => 'The :attribute must have more than :value items.', - ], - 'gte' => [ - 'numeric' => 'The :attribute must be greater than or equal to :value.', - 'file' => 'The :attribute must be greater than or equal to :value kilobytes.', - 'string' => 'The :attribute must be greater than or equal to :value characters.', - 'array' => 'The :attribute must have :value items or more.', - ], - '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' => [ - 'numeric' => 'The :attribute must be less than :value.', - 'file' => 'The :attribute must be less than :value kilobytes.', - 'string' => 'The :attribute must be less than :value characters.', - 'array' => 'The :attribute must have less than :value items.', - ], - 'lte' => [ - 'numeric' => 'The :attribute must be less than or equal to :value.', - 'file' => 'The :attribute must be less than or equal to :value kilobytes.', - 'string' => 'The :attribute must be less than or equal to :value characters.', - 'array' => 'The :attribute must not have more than :value items.', - ], - 'mac_address' => 'The :attribute must be a valid MAC address.', - 'max' => [ - 'numeric' => 'The :attribute must not be greater than :max.', - 'file' => 'The :attribute must not be greater than :max kilobytes.', - 'string' => 'The :attribute must not be greater than :max characters.', - 'array' => 'The :attribute must not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - '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.', - 'password' => 'The password is incorrect.', - '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' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - '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/Chapter20/onlineStore/package.json b/Chapter20/onlineStore/package.json deleted file mode 100644 index 7a9aecd..0000000 --- a/Chapter20/onlineStore/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "private": true, - "scripts": { - "dev": "npm run development", - "development": "mix", - "watch": "mix watch", - "watch-poll": "mix watch -- --watch-options-poll=1000", - "hot": "mix watch --hot", - "prod": "npm run production", - "production": "mix --production" - }, - "devDependencies": { - "axios": "^0.25", - "laravel-mix": "^6.0.6", - "lodash": "^4.17.19", - "postcss": "^8.1.14" - } -} diff --git a/Chapter20/onlineStore/phpcs.xml b/Chapter20/onlineStore/phpcs.xml deleted file mode 100644 index a1cf2b6..0000000 --- a/Chapter20/onlineStore/phpcs.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - The coding standard for the Online Store project - - app/ - config/ - database/ - routes/ - */migrations/* - diff --git a/Chapter20/onlineStore/phpunit.xml b/Chapter20/onlineStore/phpunit.xml deleted file mode 100644 index 2ac86a1..0000000 --- a/Chapter20/onlineStore/phpunit.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - ./tests/Unit - - - ./tests/Feature - - - - - ./app - - - - - - - - - - - - - - diff --git a/Chapter20/onlineStore/public/.htaccess b/Chapter20/onlineStore/public/.htaccess deleted file mode 100644 index 3aec5e2..0000000 --- a/Chapter20/onlineStore/public/.htaccess +++ /dev/null @@ -1,21 +0,0 @@ - - - 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/Chapter20/onlineStore/public/css/admin.css b/Chapter20/onlineStore/public/css/admin.css deleted file mode 100644 index d9495a1..0000000 --- a/Chapter20/onlineStore/public/css/admin.css +++ /dev/null @@ -1,33 +0,0 @@ -.copyright { - background-color: #1a252f; -} - -.fixed { - -ms-flex: 0 0 250px; - flex: 0 0 250px; -} - -.content-grey { - background-color: #f8f9fc; -} - -hr { - margin-top: 0.8em; - margin-bottom: 0.8em; -} - -.img-profile { - height: 2rem; - width: 2rem; -} - -.profile-font { - color: #858796 !important; - font-size: 80%; - font-weight: 400; -} - -.card-header { - background-color: #f8f9fc; - border-bottom: 1px solid #e3e6f0; -} diff --git a/Chapter20/onlineStore/public/css/app.css b/Chapter20/onlineStore/public/css/app.css deleted file mode 100644 index cabac36..0000000 --- a/Chapter20/onlineStore/public/css/app.css +++ /dev/null @@ -1,20 +0,0 @@ -.bg-secondary { - background-color: #2c3e50 !important; -} - -.copyright { - background-color: #1a252f; -} - -.bg-primary { - background-color: #1abc9c !important; -} - -nav{ - font-weight: 700; -} - -.img-card{ - height: 18vw; - object-fit: cover; -} diff --git a/Chapter20/onlineStore/public/favicon.ico b/Chapter20/onlineStore/public/favicon.ico deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter20/onlineStore/public/img/game.png b/Chapter20/onlineStore/public/img/game.png deleted file mode 100644 index 85420e8bbc16098bf26b4ee63bde0e91a19d1f2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25896 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 cz>% diff --git a/Chapter20/onlineStore/public/img/safe.png b/Chapter20/onlineStore/public/img/safe.png deleted file mode 100644 index 445942c707af53210931f9f4f99f6d3cb69e5d89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19240 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
w==XB0?3|p=#`o%NsudE(E-U#KS3Snw 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 o>ir+C;RN10sIS0&a;p - - - - - - - - - - - - - - - - - - diff --git a/Chapter20/onlineStore/public/index.php b/Chapter20/onlineStore/public/index.php deleted file mode 100644 index 1d69f3a..0000000 --- a/Chapter20/onlineStore/public/index.php +++ /dev/null @@ -1,55 +0,0 @@ -make(Kernel::class); - -$response = $kernel->handle( - $request = Request::capture() -)->send(); - -$kernel->terminate($request, $response); diff --git a/Chapter20/onlineStore/public/robots.txt b/Chapter20/onlineStore/public/robots.txt deleted file mode 100644 index eb05362..0000000 --- a/Chapter20/onlineStore/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: diff --git a/Chapter20/onlineStore/resources/css/app.css b/Chapter20/onlineStore/resources/css/app.css deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter20/onlineStore/resources/js/app.js b/Chapter20/onlineStore/resources/js/app.js deleted file mode 100644 index 40c55f6..0000000 --- a/Chapter20/onlineStore/resources/js/app.js +++ /dev/null @@ -1 +0,0 @@ -require('./bootstrap'); diff --git a/Chapter20/onlineStore/resources/js/bootstrap.js b/Chapter20/onlineStore/resources/js/bootstrap.js deleted file mode 100644 index 6922577..0000000 --- a/Chapter20/onlineStore/resources/js/bootstrap.js +++ /dev/null @@ -1,28 +0,0 @@ -window._ = require('lodash'); - -/** - * 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 = require('axios'); - -window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; - -/** - * 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'; - -// window.Pusher = require('pusher-js'); - -// window.Echo = new Echo({ -// broadcaster: 'pusher', -// key: process.env.MIX_PUSHER_APP_KEY, -// cluster: process.env.MIX_PUSHER_APP_CLUSTER, -// forceTLS: true -// }); diff --git a/Chapter20/onlineStore/resources/views/admin/home/index.blade.php b/Chapter20/onlineStore/resources/views/admin/home/index.blade.php deleted file mode 100644 index a2b4868..0000000 --- a/Chapter20/onlineStore/resources/views/admin/home/index.blade.php +++ /dev/null @@ -1,12 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
-
- Admin Panel - Home Page -
-
- Welcome to the Admin Panel, use the sidebar to navigate between the different options. -
-
-@endsection diff --git a/Chapter20/onlineStore/resources/views/admin/product/edit.blade.php b/Chapter20/onlineStore/resources/views/admin/product/edit.blade.php deleted file mode 100644 index b8e03d8..0000000 --- a/Chapter20/onlineStore/resources/views/admin/product/edit.blade.php +++ /dev/null @@ -1,61 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
-
- Edit Product -
-
- @if($errors->any()) -
    - @foreach($errors->all() as $error) -
  • - {{ $error }}
  • - @endforeach -
- @endif - -
- @csrf - @method('PUT') -
-
-
- -
- -
-
-
-
-
- -
- -
-
-
-
-
-
-
- -
- -
-
-
-
-   -
-
-
- - -
- -
-
-
-@endsection diff --git a/Chapter20/onlineStore/resources/views/admin/product/index.blade.php b/Chapter20/onlineStore/resources/views/admin/product/index.blade.php deleted file mode 100644 index 19fbe4b..0000000 --- a/Chapter20/onlineStore/resources/views/admin/product/index.blade.php +++ /dev/null @@ -1,98 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
-
- Create Products -
-
- @if($errors->any()) -
    - @foreach($errors->all() as $error) -
  • - {{ $error }}
  • - @endforeach -
- @endif - -
- @csrf -
-
-
- -
- -
-
-
-
-
- -
- -
-
-
-
-
-
-
- -
- -
-
-
-
-   -
-
-
- - -
- -
-
-
- -
-
- Manage Products -
-
- - - - - - - - - - - @foreach ($viewData["products"] as $product) - - - - - - - @endforeach - -
IDNameEditDelete
{{ $product->getId() }}{{ $product->getName() }} - - - - -
- @csrf - @method('DELETE') - -
-
-
-
-@endsection diff --git a/Chapter20/onlineStore/resources/views/home/about.blade.php b/Chapter20/onlineStore/resources/views/home/about.blade.php deleted file mode 100644 index f79abf3..0000000 --- a/Chapter20/onlineStore/resources/views/home/about.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
-
-
-

{{ $viewData["description"] }}

-
-
-

{{ $viewData["author"] }}

-
-
-
-@endsection diff --git a/Chapter20/onlineStore/resources/views/home/index.blade.php b/Chapter20/onlineStore/resources/views/home/index.blade.php deleted file mode 100644 index 1affb20..0000000 --- a/Chapter20/onlineStore/resources/views/home/index.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('content') -
-
- -
-
- -
-
- -
-
-@endsection diff --git a/Chapter20/onlineStore/resources/views/layouts/admin.blade.php b/Chapter20/onlineStore/resources/views/layouts/admin.blade.php deleted file mode 100644 index 4aff3f8..0000000 --- a/Chapter20/onlineStore/resources/views/layouts/admin.blade.php +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - @yield('title', 'Admin - Online Store') - - - -
- - - -
- - -
- @yield('content') -
-
-
- - - - - - - - - diff --git a/Chapter20/onlineStore/resources/views/layouts/app.blade.php b/Chapter20/onlineStore/resources/views/layouts/app.blade.php deleted file mode 100644 index eee7fcb..0000000 --- a/Chapter20/onlineStore/resources/views/layouts/app.blade.php +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - @yield('title', 'Online Store') - - - - - -
-
-

@yield('subtitle', 'A Laravel Online Store')

-
-
- - -
- @yield('content') -
- - - - - - - diff --git a/Chapter20/onlineStore/resources/views/product/index.blade.php b/Chapter20/onlineStore/resources/views/product/index.blade.php deleted file mode 100644 index 64c3e18..0000000 --- a/Chapter20/onlineStore/resources/views/product/index.blade.php +++ /dev/null @@ -1,18 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
- @foreach ($viewData["products"] as $product) - - @endforeach -
-@endsection diff --git a/Chapter20/onlineStore/resources/views/product/show.blade.php b/Chapter20/onlineStore/resources/views/product/show.blade.php deleted file mode 100644 index be37a01..0000000 --- a/Chapter20/onlineStore/resources/views/product/show.blade.php +++ /dev/null @@ -1,21 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
-
-
- getImage()) }}" class="img-fluid rounded-start"> -
-
-
-
- {{ $viewData["product"]->getName() }} (${{ $viewData["product"]->getPrice() }}) -
-

{{ $viewData["product"]->getDescription() }}

-

Add to Cart

-
-
-
-
-@endsection diff --git a/Chapter20/onlineStore/resources/views/welcome.blade.php b/Chapter20/onlineStore/resources/views/welcome.blade.php deleted file mode 100644 index c587c72..0000000 --- a/Chapter20/onlineStore/resources/views/welcome.blade.php +++ /dev/null @@ -1,7 +0,0 @@ -@extends('layouts.app') -@section('title', 'Home Page - Online Store') -@section('content') -
- Welcome to the application -
-@endsection \ No newline at end of file diff --git a/Chapter20/onlineStore/routes/api.php b/Chapter20/onlineStore/routes/api.php deleted file mode 100644 index eb6fa48..0000000 --- a/Chapter20/onlineStore/routes/api.php +++ /dev/null @@ -1,19 +0,0 @@ -get('/user', function (Request $request) { - return $request->user(); -}); diff --git a/Chapter20/onlineStore/routes/channels.php b/Chapter20/onlineStore/routes/channels.php deleted file mode 100644 index 5d451e1..0000000 --- a/Chapter20/onlineStore/routes/channels.php +++ /dev/null @@ -1,18 +0,0 @@ -id === (int) $id; -}); diff --git a/Chapter20/onlineStore/routes/console.php b/Chapter20/onlineStore/routes/console.php deleted file mode 100644 index e05f4c9..0000000 --- a/Chapter20/onlineStore/routes/console.php +++ /dev/null @@ -1,19 +0,0 @@ -comment(Inspiring::quote()); -})->purpose('Display an inspiring quote'); diff --git a/Chapter20/onlineStore/routes/web.php b/Chapter20/onlineStore/routes/web.php deleted file mode 100644 index ee369d0..0000000 --- a/Chapter20/onlineStore/routes/web.php +++ /dev/null @@ -1,25 +0,0 @@ -name("home.index"); -Route::get('/about', 'App\Http\Controllers\HomeController@about')->name("home.about"); -Route::get('/products', 'App\Http\Controllers\ProductController@index')->name("product.index"); -Route::get('/products/{id}', 'App\Http\Controllers\ProductController@show')->name("product.show"); -Route::get('/admin', 'App\Http\Controllers\Admin\AdminHomeController@index')->name("admin.home.index"); -Route::get('/admin/products', 'App\Http\Controllers\Admin\AdminProductController@index')->name("admin.product.index"); -Route::post('/admin/products/store', 'App\Http\Controllers\Admin\AdminProductController@store')->name("admin.product.store"); -Route::delete('/admin/products/{id}/delete', 'App\Http\Controllers\Admin\AdminProductController@delete')->name("admin.product.delete"); -Route::get('/admin/products/{id}/edit', 'App\Http\Controllers\Admin\AdminProductController@edit')->name("admin.product.edit"); -Route::put('/admin/products/{id}/update', 'App\Http\Controllers\Admin\AdminProductController@update')->name("admin.product.update"); diff --git a/Chapter20/onlineStore/storage/app/.gitignore b/Chapter20/onlineStore/storage/app/.gitignore deleted file mode 100644 index 8f4803c..0000000 --- a/Chapter20/onlineStore/storage/app/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!public/ -!.gitignore diff --git a/Chapter20/onlineStore/storage/app/public/.gitignore b/Chapter20/onlineStore/storage/app/public/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter20/onlineStore/storage/app/public/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter20/onlineStore/storage/framework/.gitignore b/Chapter20/onlineStore/storage/framework/.gitignore deleted file mode 100644 index 05c4471..0000000 --- a/Chapter20/onlineStore/storage/framework/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -compiled.php -config.php -down -events.scanned.php -maintenance.php -routes.php -routes.scanned.php -schedule-* -services.json diff --git a/Chapter20/onlineStore/storage/framework/cache/.gitignore b/Chapter20/onlineStore/storage/framework/cache/.gitignore deleted file mode 100644 index 01e4a6c..0000000 --- a/Chapter20/onlineStore/storage/framework/cache/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!data/ -!.gitignore diff --git a/Chapter20/onlineStore/storage/framework/cache/data/.gitignore b/Chapter20/onlineStore/storage/framework/cache/data/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter20/onlineStore/storage/framework/cache/data/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter20/onlineStore/storage/framework/sessions/.gitignore b/Chapter20/onlineStore/storage/framework/sessions/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter20/onlineStore/storage/framework/sessions/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter20/onlineStore/storage/framework/testing/.gitignore b/Chapter20/onlineStore/storage/framework/testing/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter20/onlineStore/storage/framework/testing/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter20/onlineStore/storage/framework/views/.gitignore b/Chapter20/onlineStore/storage/framework/views/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter20/onlineStore/storage/framework/views/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter20/onlineStore/storage/logs/.gitignore b/Chapter20/onlineStore/storage/logs/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter20/onlineStore/storage/logs/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter20/onlineStore/tests/CreatesApplication.php b/Chapter20/onlineStore/tests/CreatesApplication.php deleted file mode 100644 index 547152f..0000000 --- a/Chapter20/onlineStore/tests/CreatesApplication.php +++ /dev/null @@ -1,22 +0,0 @@ -make(Kernel::class)->bootstrap(); - - return $app; - } -} diff --git a/Chapter20/onlineStore/tests/Feature/ExampleTest.php b/Chapter20/onlineStore/tests/Feature/ExampleTest.php deleted file mode 100644 index 78ccc21..0000000 --- a/Chapter20/onlineStore/tests/Feature/ExampleTest.php +++ /dev/null @@ -1,21 +0,0 @@ -get('/'); - - $response->assertStatus(200); - } -} diff --git a/Chapter20/onlineStore/tests/TestCase.php b/Chapter20/onlineStore/tests/TestCase.php deleted file mode 100644 index 2932d4a..0000000 --- a/Chapter20/onlineStore/tests/TestCase.php +++ /dev/null @@ -1,10 +0,0 @@ -assertTrue(true); - } -} diff --git a/Chapter20/onlineStore/webpack.mix.js b/Chapter20/onlineStore/webpack.mix.js deleted file mode 100644 index 2a22dc1..0000000 --- a/Chapter20/onlineStore/webpack.mix.js +++ /dev/null @@ -1,17 +0,0 @@ -const mix = require('laravel-mix'); - -/* - |-------------------------------------------------------------------------- - | Mix Asset Management - |-------------------------------------------------------------------------- - | - | Mix provides a clean, fluent API for defining some Webpack build steps - | for your Laravel applications. By default, we are compiling the CSS - | file for the application as well as bundling up all the JS files. - | - */ - -mix.js('resources/js/app.js', 'public/js') - .postCss('resources/css/app.css', 'public/css', [ - // - ]); diff --git a/Chapter21/onlineStore/.editorconfig b/Chapter21/onlineStore/.editorconfig deleted file mode 100644 index 1671c9b..0000000 --- a/Chapter21/onlineStore/.editorconfig +++ /dev/null @@ -1,18 +0,0 @@ -root = true - -[*] -charset = utf-8 -end_of_line = lf -insert_final_newline = true -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true - -[*.md] -trim_trailing_whitespace = false - -[*.{yml,yaml}] -indent_size = 2 - -[docker-compose.yml] -indent_size = 4 diff --git a/Chapter21/onlineStore/.env.example b/Chapter21/onlineStore/.env.example deleted file mode 100644 index 8510237..0000000 --- a/Chapter21/onlineStore/.env.example +++ /dev/null @@ -1,52 +0,0 @@ -APP_NAME=Laravel -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=laravel -DB_USERNAME=root -DB_PASSWORD= - -BROADCAST_DRIVER=log -CACHE_DRIVER=file -FILESYSTEM_DISK=local -QUEUE_CONNECTION=sync -SESSION_DRIVER=file -SESSION_LIFETIME=120 - -MEMCACHED_HOST=127.0.0.1 - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -MAIL_MAILER=smtp -MAIL_HOST=mailhog -MAIL_PORT=1025 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS=null -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_APP_CLUSTER=mt1 - -MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/Chapter21/onlineStore/.gitattributes b/Chapter21/onlineStore/.gitattributes deleted file mode 100644 index 510d996..0000000 --- a/Chapter21/onlineStore/.gitattributes +++ /dev/null @@ -1,10 +0,0 @@ -* text=auto - -*.blade.php diff=html -*.css diff=css -*.html diff=html -*.md diff=markdown -*.php diff=php - -/.github export-ignore -CHANGELOG.md export-ignore diff --git a/Chapter21/onlineStore/.gitignore b/Chapter21/onlineStore/.gitignore deleted file mode 100644 index eb003b0..0000000 --- a/Chapter21/onlineStore/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -/node_modules -/public/hot -/public/storage -/storage/*.key -/vendor -.env -.env.backup -.phpunit.result.cache -docker-compose.override.yml -Homestead.json -Homestead.yaml -npm-debug.log -yarn-error.log -/.idea -/.vscode diff --git a/Chapter21/onlineStore/.styleci.yml b/Chapter21/onlineStore/.styleci.yml deleted file mode 100644 index 679a631..0000000 --- a/Chapter21/onlineStore/.styleci.yml +++ /dev/null @@ -1,13 +0,0 @@ -php: - preset: laravel - version: 8 - disabled: - - no_unused_imports - finder: - not-name: - - index.php -js: - finder: - not-name: - - webpack.mix.js -css: true diff --git a/Chapter21/onlineStore/README.md b/Chapter21/onlineStore/README.md deleted file mode 100644 index f171eca..0000000 --- a/Chapter21/onlineStore/README.md +++ /dev/null @@ -1,64 +0,0 @@ -

- -

-Build Status -Total Downloads -Latest Stable Version -License -

- -## About Laravel - -Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as: - -- [Simple, fast routing engine](https://laravel.com/docs/routing). -- [Powerful dependency injection container](https://laravel.com/docs/container). -- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage. -- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent). -- Database agnostic [schema migrations](https://laravel.com/docs/migrations). -- [Robust background job processing](https://laravel.com/docs/queues). -- [Real-time event broadcasting](https://laravel.com/docs/broadcasting). - -Laravel is accessible, powerful, and provides tools required for large, robust applications. - -## Learning Laravel - -Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework. - -If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 2000 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library. - -## Laravel Sponsors - -We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell). - -### Premium Partners - -- **[Vehikl](https://vehikl.com/)** -- **[Tighten Co.](https://tighten.co)** -- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** -- **[64 Robots](https://64robots.com)** -- **[Cubet Techno Labs](https://cubettech.com)** -- **[Cyber-Duck](https://cyber-duck.co.uk)** -- **[Many](https://www.many.co.uk)** -- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)** -- **[DevSquad](https://devsquad.com)** -- **[Curotec](https://www.curotec.com/services/technologies/laravel/)** -- **[OP.GG](https://op.gg)** -- **[WebReinvent](https://webreinvent.com/?utm_source=laravel&utm_medium=github&utm_campaign=patreon-sponsors)** -- **[Lendio](https://lendio.com)** - -## Contributing - -Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions). - -## Code of Conduct - -In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). - -## Security Vulnerabilities - -If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed. - -## License - -The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). diff --git a/Chapter21/onlineStore/app/Console/Kernel.php b/Chapter21/onlineStore/app/Console/Kernel.php deleted file mode 100644 index d8bc1d2..0000000 --- a/Chapter21/onlineStore/app/Console/Kernel.php +++ /dev/null @@ -1,32 +0,0 @@ -command('inspire')->hourly(); - } - - /** - * Register the commands for the application. - * - * @return void - */ - protected function commands() - { - $this->load(__DIR__.'/Commands'); - - require base_path('routes/console.php'); - } -} diff --git a/Chapter21/onlineStore/app/Exceptions/Handler.php b/Chapter21/onlineStore/app/Exceptions/Handler.php deleted file mode 100644 index 8e7fbd1..0000000 --- a/Chapter21/onlineStore/app/Exceptions/Handler.php +++ /dev/null @@ -1,41 +0,0 @@ -> - */ - protected $dontReport = [ - // - ]; - - /** - * A list of the inputs that are never flashed for validation exceptions. - * - * @var array - */ - protected $dontFlash = [ - 'current_password', - 'password', - 'password_confirmation', - ]; - - /** - * Register the exception handling callbacks for the application. - * - * @return void - */ - public function register() - { - $this->reportable(function (Throwable $e) { - // - }); - } -} diff --git a/Chapter21/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php b/Chapter21/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php deleted file mode 100644 index cd78cb3..0000000 --- a/Chapter21/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php +++ /dev/null @@ -1,16 +0,0 @@ -with("viewData", $viewData); - } -} diff --git a/Chapter21/onlineStore/app/Http/Controllers/Admin/AdminProductController.php b/Chapter21/onlineStore/app/Http/Controllers/Admin/AdminProductController.php deleted file mode 100644 index d1c6c52..0000000 --- a/Chapter21/onlineStore/app/Http/Controllers/Admin/AdminProductController.php +++ /dev/null @@ -1,79 +0,0 @@ -with("viewData", $viewData); - } - - public function store(Request $request) - { - Product::validate($request); - - $newProduct = new Product(); - $newProduct->setName($request->input('name')); - $newProduct->setDescription($request->input('description')); - $newProduct->setPrice($request->input('price')); - $newProduct->setImage("game.png"); - $newProduct->save(); - - if ($request->hasFile('image')) { - $imageName = $newProduct->getId().".".$request->file('image')->extension(); - Storage::disk('public')->put( - $imageName, - file_get_contents($request->file('image')->getRealPath()) - ); - $newProduct->setImage($imageName); - $newProduct->save(); - } - - return back(); - } - - public function delete($id) - { - Product::destroy($id); - return back(); - } - - public function edit($id) - { - $viewData = []; - $viewData["title"] = "Admin Page - Edit Product - Online Store"; - $viewData["product"] = Product::findOrFail($id); - return view('admin.product.edit')->with("viewData", $viewData); - } - - public function update(Request $request, $id) - { - Product::validate($request); - - $product = Product::findOrFail($id); - $product->setName($request->input('name')); - $product->setDescription($request->input('description')); - $product->setPrice($request->input('price')); - - if ($request->hasFile('image')) { - $imageName = $product->getId().".".$request->file('image')->extension(); - Storage::disk('public')->put( - $imageName, - file_get_contents($request->file('image')->getRealPath()) - ); - $product->setImage($imageName); - } - - $product->save(); - return redirect()->route('admin.product.index'); - } -} diff --git a/Chapter21/onlineStore/app/Http/Controllers/Auth/ConfirmPasswordController.php b/Chapter21/onlineStore/app/Http/Controllers/Auth/ConfirmPasswordController.php deleted file mode 100644 index 138c1f0..0000000 --- a/Chapter21/onlineStore/app/Http/Controllers/Auth/ConfirmPasswordController.php +++ /dev/null @@ -1,40 +0,0 @@ -middleware('auth'); - } -} diff --git a/Chapter21/onlineStore/app/Http/Controllers/Auth/ForgotPasswordController.php b/Chapter21/onlineStore/app/Http/Controllers/Auth/ForgotPasswordController.php deleted file mode 100644 index 465c39c..0000000 --- a/Chapter21/onlineStore/app/Http/Controllers/Auth/ForgotPasswordController.php +++ /dev/null @@ -1,22 +0,0 @@ -middleware('guest')->except('logout'); - } -} diff --git a/Chapter21/onlineStore/app/Http/Controllers/Auth/RegisterController.php b/Chapter21/onlineStore/app/Http/Controllers/Auth/RegisterController.php deleted file mode 100644 index ed1a5e0..0000000 --- a/Chapter21/onlineStore/app/Http/Controllers/Auth/RegisterController.php +++ /dev/null @@ -1,73 +0,0 @@ -middleware('guest'); - } - - /** - * Get a validator for an incoming registration request. - * - * @param array $data - * @return \Illuminate\Contracts\Validation\Validator - */ - protected function validator(array $data) - { - return Validator::make($data, [ - 'name' => ['required', 'string', 'max:255'], - 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], - 'password' => ['required', 'string', 'min:8', 'confirmed'], - ]); - } - - /** - * Create a new user instance after a valid registration. - * - * @param array $data - * @return \App\Models\User - */ - protected function create(array $data) - { - return User::create([ - 'name' => $data['name'], - 'email' => $data['email'], - 'password' => Hash::make($data['password']), - ]); - } -} diff --git a/Chapter21/onlineStore/app/Http/Controllers/Auth/ResetPasswordController.php b/Chapter21/onlineStore/app/Http/Controllers/Auth/ResetPasswordController.php deleted file mode 100644 index b1726a3..0000000 --- a/Chapter21/onlineStore/app/Http/Controllers/Auth/ResetPasswordController.php +++ /dev/null @@ -1,30 +0,0 @@ -middleware('auth'); - $this->middleware('signed')->only('verify'); - $this->middleware('throttle:6,1')->only('verify', 'resend'); - } -} diff --git a/Chapter21/onlineStore/app/Http/Controllers/Controller.php b/Chapter21/onlineStore/app/Http/Controllers/Controller.php deleted file mode 100644 index a0a2a8a..0000000 --- a/Chapter21/onlineStore/app/Http/Controllers/Controller.php +++ /dev/null @@ -1,13 +0,0 @@ -with("viewData", $viewData); - } - - public function about() - { - $viewData = []; - $viewData["title"] = "About us - Online Store"; - $viewData["subtitle"] = "About us"; - $viewData["description"] = "This is an about page ..."; - $viewData["author"] = "Developed by: Your Name"; - return view('home.about')->with("viewData", $viewData); - } -} diff --git a/Chapter21/onlineStore/app/Http/Controllers/ProductController.php b/Chapter21/onlineStore/app/Http/Controllers/ProductController.php deleted file mode 100644 index d27a3a3..0000000 --- a/Chapter21/onlineStore/app/Http/Controllers/ProductController.php +++ /dev/null @@ -1,29 +0,0 @@ -with("viewData", $viewData); - } - - public function show($id) - { - $viewData = []; - $product = Product::findOrFail($id); - $viewData["title"] = $product->getName()." - Online Store"; - $viewData["subtitle"] = $product->getName()." - Product information"; - $viewData["product"] = $product; - return view('product.show')->with("viewData", $viewData); - } -} diff --git a/Chapter21/onlineStore/app/Http/Kernel.php b/Chapter21/onlineStore/app/Http/Kernel.php deleted file mode 100644 index d3722c2..0000000 --- a/Chapter21/onlineStore/app/Http/Kernel.php +++ /dev/null @@ -1,67 +0,0 @@ - - */ - protected $middleware = [ - // \App\Http\Middleware\TrustHosts::class, - \App\Http\Middleware\TrustProxies::class, - \Fruitcake\Cors\HandleCors::class, - \App\Http\Middleware\PreventRequestsDuringMaintenance::class, - \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, - \App\Http\Middleware\TrimStrings::class, - \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, - ]; - - /** - * The application's route middleware groups. - * - * @var array> - */ - protected $middlewareGroups = [ - 'web' => [ - \App\Http\Middleware\EncryptCookies::class, - \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, - \Illuminate\Session\Middleware\StartSession::class, - // \Illuminate\Session\Middleware\AuthenticateSession::class, - \Illuminate\View\Middleware\ShareErrorsFromSession::class, - \App\Http\Middleware\VerifyCsrfToken::class, - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - - 'api' => [ - // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, - 'throttle:api', - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - ]; - - /** - * The application's route middleware. - * - * These middleware may be assigned to groups or used individually. - * - * @var array - */ - protected $routeMiddleware = [ - 'auth' => \App\Http\Middleware\Authenticate::class, - 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::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, - 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, - 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, - 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, - ]; -} diff --git a/Chapter21/onlineStore/app/Http/Middleware/Authenticate.php b/Chapter21/onlineStore/app/Http/Middleware/Authenticate.php deleted file mode 100644 index 704089a..0000000 --- a/Chapter21/onlineStore/app/Http/Middleware/Authenticate.php +++ /dev/null @@ -1,21 +0,0 @@ -expectsJson()) { - return route('login'); - } - } -} diff --git a/Chapter21/onlineStore/app/Http/Middleware/EncryptCookies.php b/Chapter21/onlineStore/app/Http/Middleware/EncryptCookies.php deleted file mode 100644 index 867695b..0000000 --- a/Chapter21/onlineStore/app/Http/Middleware/EncryptCookies.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter21/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/Chapter21/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php deleted file mode 100644 index 74cbd9a..0000000 --- a/Chapter21/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter21/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php b/Chapter21/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php deleted file mode 100644 index a2813a0..0000000 --- a/Chapter21/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php +++ /dev/null @@ -1,32 +0,0 @@ -check()) { - return redirect(RouteServiceProvider::HOME); - } - } - - return $next($request); - } -} diff --git a/Chapter21/onlineStore/app/Http/Middleware/TrimStrings.php b/Chapter21/onlineStore/app/Http/Middleware/TrimStrings.php deleted file mode 100644 index 88cadca..0000000 --- a/Chapter21/onlineStore/app/Http/Middleware/TrimStrings.php +++ /dev/null @@ -1,19 +0,0 @@ - - */ - protected $except = [ - 'current_password', - 'password', - 'password_confirmation', - ]; -} diff --git a/Chapter21/onlineStore/app/Http/Middleware/TrustHosts.php b/Chapter21/onlineStore/app/Http/Middleware/TrustHosts.php deleted file mode 100644 index 7186414..0000000 --- a/Chapter21/onlineStore/app/Http/Middleware/TrustHosts.php +++ /dev/null @@ -1,20 +0,0 @@ - - */ - public function hosts() - { - return [ - $this->allSubdomainsOfApplicationUrl(), - ]; - } -} diff --git a/Chapter21/onlineStore/app/Http/Middleware/TrustProxies.php b/Chapter21/onlineStore/app/Http/Middleware/TrustProxies.php deleted file mode 100644 index 3391630..0000000 --- a/Chapter21/onlineStore/app/Http/Middleware/TrustProxies.php +++ /dev/null @@ -1,28 +0,0 @@ -|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/Chapter21/onlineStore/app/Http/Middleware/VerifyCsrfToken.php b/Chapter21/onlineStore/app/Http/Middleware/VerifyCsrfToken.php deleted file mode 100644 index 9e86521..0000000 --- a/Chapter21/onlineStore/app/Http/Middleware/VerifyCsrfToken.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter21/onlineStore/app/Models/Product.php b/Chapter21/onlineStore/app/Models/Product.php deleted file mode 100644 index b8f58f6..0000000 --- a/Chapter21/onlineStore/app/Models/Product.php +++ /dev/null @@ -1,99 +0,0 @@ -attributes['id'] - int - contains the product primary key (id) - * $this->attributes['name'] - string - contains the product name - * $this->attributes['description'] - string - contains the product description - * $this->attributes['image'] - string - contains the product image - * $this->attributes['price'] - int - contains the product price - * $this->attributes['created_at'] - timestamp - contains the product creation date - * $this->attributes['updated_at'] - timestamp - contains the product update date - */ - - public static function validate($request) - { - $request->validate([ - "name" => "required|max:255", - "description" => "required", - "price" => "required|numeric|gt:0", - 'image' => 'image', - ]); - } - - public function getId() - { - return $this->attributes['id']; - } - - public function setId($id) - { - $this->attributes['id'] = $id; - } - - public function getName() - { - return $this->attributes['name']; - } - - public function setName($name) - { - $this->attributes['name'] = $name; - } - - public function getDescription() - { - return $this->attributes['description']; - } - - public function setDescription($description) - { - $this->attributes['description'] = $description; - } - - public function getImage() - { - return $this->attributes['image']; - } - - public function setImage($image) - { - $this->attributes['image'] = $image; - } - - public function getPrice() - { - return $this->attributes['price']; - } - - public function setPrice($price) - { - $this->attributes['price'] = $price; - } - - public function getCreatedAt() - { - return $this->attributes['created_at']; - } - - public function setCreatedAt($createdAt) - { - $this->attributes['created_at'] = $createdAt; - } - - public function getUpdatedAt() - { - return $this->attributes['updated_at']; - } - - public function setUpdatedAt($updatedAt) - { - $this->attributes['updated_at'] = $updatedAt; - } -} diff --git a/Chapter21/onlineStore/app/Models/User.php b/Chapter21/onlineStore/app/Models/User.php deleted file mode 100644 index 8996368..0000000 --- a/Chapter21/onlineStore/app/Models/User.php +++ /dev/null @@ -1,44 +0,0 @@ - - */ - 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', - ]; -} diff --git a/Chapter21/onlineStore/app/Providers/AppServiceProvider.php b/Chapter21/onlineStore/app/Providers/AppServiceProvider.php deleted file mode 100644 index ee8ca5b..0000000 --- a/Chapter21/onlineStore/app/Providers/AppServiceProvider.php +++ /dev/null @@ -1,28 +0,0 @@ - - */ - protected $policies = [ - // 'App\Models\Model' => 'App\Policies\ModelPolicy', - ]; - - /** - * Register any authentication / authorization services. - * - * @return void - */ - public function boot() - { - $this->registerPolicies(); - - // - } -} diff --git a/Chapter21/onlineStore/app/Providers/BroadcastServiceProvider.php b/Chapter21/onlineStore/app/Providers/BroadcastServiceProvider.php deleted file mode 100644 index 395c518..0000000 --- a/Chapter21/onlineStore/app/Providers/BroadcastServiceProvider.php +++ /dev/null @@ -1,21 +0,0 @@ -> - */ - protected $listen = [ - Registered::class => [ - SendEmailVerificationNotification::class, - ], - ]; - - /** - * Register any events for your application. - * - * @return void - */ - public function boot() - { - // - } -} diff --git a/Chapter21/onlineStore/app/Providers/RouteServiceProvider.php b/Chapter21/onlineStore/app/Providers/RouteServiceProvider.php deleted file mode 100644 index fb766eb..0000000 --- a/Chapter21/onlineStore/app/Providers/RouteServiceProvider.php +++ /dev/null @@ -1,63 +0,0 @@ -configureRateLimiting(); - - $this->routes(function () { - Route::prefix('api') - ->middleware('api') - ->namespace($this->namespace) - ->group(base_path('routes/api.php')); - - Route::middleware('web') - ->namespace($this->namespace) - ->group(base_path('routes/web.php')); - }); - } - - /** - * Configure the rate limiters for the application. - * - * @return void - */ - protected function configureRateLimiting() - { - RateLimiter::for('api', function (Request $request) { - return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); - }); - } -} diff --git a/Chapter21/onlineStore/artisan b/Chapter21/onlineStore/artisan deleted file mode 100644 index 67a3329..0000000 --- a/Chapter21/onlineStore/artisan +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env php -make(Illuminate\Contracts\Console\Kernel::class); - -$status = $kernel->handle( - $input = new Symfony\Component\Console\Input\ArgvInput, - new Symfony\Component\Console\Output\ConsoleOutput -); - -/* -|-------------------------------------------------------------------------- -| Shutdown The Application -|-------------------------------------------------------------------------- -| -| Once Artisan has finished running, we will fire off the shutdown events -| so that any final work may be done by the application before we shut -| down the process. This is the last thing to happen to the request. -| -*/ - -$kernel->terminate($input, $status); - -exit($status); diff --git a/Chapter21/onlineStore/bootstrap/app.php b/Chapter21/onlineStore/bootstrap/app.php deleted file mode 100644 index 037e17d..0000000 --- a/Chapter21/onlineStore/bootstrap/app.php +++ /dev/null @@ -1,55 +0,0 @@ -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/Chapter21/onlineStore/bootstrap/cache/.gitignore b/Chapter21/onlineStore/bootstrap/cache/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter21/onlineStore/bootstrap/cache/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter21/onlineStore/composer.json b/Chapter21/onlineStore/composer.json deleted file mode 100644 index a9459b5..0000000 --- a/Chapter21/onlineStore/composer.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "name": "laravel/laravel", - "type": "project", - "description": "The Laravel Framework.", - "keywords": ["framework", "laravel"], - "license": "MIT", - "require": { - "php": "^8.0", - "fruitcake/laravel-cors": "^2.0.5", - "guzzlehttp/guzzle": "^7.2", - "laravel/framework": "^9.0", - "laravel/sanctum": "^2.14", - "laravel/tinker": "^2.7", - "laravel/ui": "^3.4" - }, - "require-dev": { - "fakerphp/faker": "^1.9.1", - "laravel/sail": "^1.0.1", - "mockery/mockery": "^1.4.4", - "nunomaduro/collision": "^6.1", - "phpunit/phpunit": "^9.5.10", - "spatie/laravel-ignition": "^1.0", - "squizlabs/php_codesniffer": "^3.6" - }, - "autoload": { - "psr-4": { - "App\\": "app/", - "Database\\Factories\\": "database/factories/", - "Database\\Seeders\\": "database/seeders/" - } - }, - "autoload-dev": { - "psr-4": { - "Tests\\": "tests/" - } - }, - "scripts": { - "post-autoload-dump": [ - "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", - "@php artisan package:discover --ansi" - ], - "post-update-cmd": [ - "@php artisan vendor:publish --tag=laravel-assets --ansi --force" - ], - "post-root-package-install": [ - "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" - ], - "post-create-project-cmd": [ - "@php artisan key:generate --ansi" - ] - }, - "extra": { - "laravel": { - "dont-discover": [] - } - }, - "config": { - "optimize-autoloader": true, - "preferred-install": "dist", - "sort-packages": true - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/Chapter21/onlineStore/composer.lock b/Chapter21/onlineStore/composer.lock deleted file mode 100644 index 78c86f1..0000000 --- a/Chapter21/onlineStore/composer.lock +++ /dev/null @@ -1,7921 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "d299b51f0f07ec600b4949240f4664af", - "packages": [ - { - "name": "asm89/stack-cors", - "version": "v2.1.1", - "source": { - "type": "git", - "url": "https://github.com/asm89/stack-cors.git", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4|^5|^6" - }, - "require-dev": { - "phpunit/phpunit": "^7|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "psr-4": { - "Asm89\\Stack\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alexander", - "email": "iam.asm89@gmail.com" - } - ], - "description": "Cross-origin resource sharing library and stack middleware", - "homepage": "https://github.com/asm89/stack-cors", - "keywords": [ - "cors", - "stack" - ], - "support": { - "issues": "https://github.com/asm89/stack-cors/issues", - "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" - }, - "time": "2022-01-18T09:12:03+00:00" - }, - { - "name": "brick/math", - "version": "0.9.3", - "source": { - "type": "git", - "url": "https://github.com/brick/math.git", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", - "vimeo/psalm": "4.9.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Brick\\Math\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Arbitrary-precision arithmetic library", - "keywords": [ - "Arbitrary-precision", - "BigInteger", - "BigRational", - "arithmetic", - "bigdecimal", - "bignum", - "brick", - "math" - ], - "support": { - "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.9.3" - }, - "funding": [ - { - "url": "https://github.com/BenMorel", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/brick/math", - "type": "tidelift" - } - ], - "time": "2021-08-15T20:50:18+00:00" - }, - { - "name": "dflydev/dot-access-data", - "version": "v3.0.1", - "source": { - "type": "git", - "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c", - "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": "^3.14" - }, - "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.1" - }, - "time": "2021-08-13T13:06:58+00:00" - }, - { - "name": "doctrine/inflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "vimeo/psalm": "^4.10" - }, - "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.4" - }, - "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": "2021-10-22T20:16:43+00:00" - }, - { - "name": "doctrine/lexer", - "version": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" - } - }, - "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/1.2.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%2Flexer", - "type": "tidelift" - } - ], - "time": "2022-01-12T08:27:12+00:00" - }, - { - "name": "dragonmantank/cron-expression", - "version": "v3.3.1", - "source": { - "type": "git", - "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "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.1" - }, - "funding": [ - { - "url": "https://github.com/dragonmantank", - "type": "github" - } - ], - "time": "2022-01-18T15:43:28+00:00" - }, - { - "name": "egulias/email-validator", - "version": "3.1.2", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ee0db30118f661fb166bcffbf5d82032df484697", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^1.2", - "php": ">=7.2", - "symfony/polyfill-intl-idn": "^1.15" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^8.5.8|^9.3.3", - "vimeo/psalm": "^4" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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/3.1.2" - }, - "funding": [ - { - "url": "https://github.com/egulias", - "type": "github" - } - ], - "time": "2021-10-11T09:18:27+00:00" - }, - { - "name": "fruitcake/laravel-cors", - "version": "v2.0.5", - "source": { - "type": "git", - "url": "https://github.com/fruitcake/laravel-cors.git", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "shasum": "" - }, - "require": { - "asm89/stack-cors": "^2.0.1", - "illuminate/contracts": "^6|^7|^8|^9", - "illuminate/support": "^6|^7|^8|^9", - "php": ">=7.2", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4.3.4|^5|^6" - }, - "require-dev": { - "laravel/framework": "^6|^7.24|^8", - "orchestra/testbench-dusk": "^4|^5|^6|^7", - "phpunit/phpunit": "^6|^7|^8|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - }, - "laravel": { - "providers": [ - "Fruitcake\\Cors\\CorsServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Fruitcake\\Cors\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fruitcake", - "homepage": "https://fruitcake.nl" - }, - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", - "keywords": [ - "api", - "cors", - "crossdomain", - "laravel" - ], - "support": { - "issues": "https://github.com/fruitcake/laravel-cors/issues", - "source": "https://github.com/fruitcake/laravel-cors/tree/v2.0.5" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "time": "2022-01-03T14:53:04+00:00" - }, - { - "name": "graham-campbell/result-type", - "version": "v1.0.4", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "0690bde05318336c7221785f2a932467f98b64ca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/0690bde05318336c7221785f2a932467f98b64ca", - "reference": "0690bde05318336c7221785f2a932467f98b64ca", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "phpoption/phpoption": "^1.8" - }, - "require-dev": { - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", - "type": "tidelift" - } - ], - "time": "2021-11-21T21:41:47+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "7.4.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.8.3 || ^2.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.4.1", - "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.5 || ^9.3.5", - "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": { - "branch-alias": { - "dev-master": "7.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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.4.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": "2021-12-06T18:43:05+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "1.5.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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/1.5.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "time": "2021-10-22T20:56:57+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.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.4.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.8 || ^9.3.10" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "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.1.0" - }, - "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": "2021-10-06T17:43:30+00:00" - }, - { - "name": "laravel/framework", - "version": "v9.0.1", - "source": { - "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "shasum": "" - }, - "require": { - "doctrine/inflector": "^2.0", - "dragonmantank/cron-expression": "^3.1", - "egulias/email-validator": "^3.1", - "ext-mbstring": "*", - "ext-openssl": "*", - "laravel/serializable-closure": "^1.0", - "league/commonmark": "^2.2", - "league/flysystem": "^3.0", - "monolog/monolog": "^2.0", - "nesbot/carbon": "^2.53.1", - "php": "^8.0.2", - "psr/container": "^1.1.1|^2.0.1", - "psr/log": "^1.0|^2.0|^3.0", - "psr/simple-cache": "^1.0|^2.0|^3.0", - "ramsey/uuid": "^4.2.2", - "symfony/console": "^6.0", - "symfony/error-handler": "^6.0", - "symfony/finder": "^6.0", - "symfony/http-foundation": "^6.0", - "symfony/http-kernel": "^6.0", - "symfony/mailer": "^6.0", - "symfony/mime": "^6.0", - "symfony/process": "^6.0", - "symfony/routing": "^6.0", - "symfony/var-dumper": "^6.0", - "tijsverkoyen/css-to-inline-styles": "^2.2.2", - "vlucas/phpdotenv": "^5.4.1", - "voku/portable-ascii": "^2.0" - }, - "conflict": { - "tightenco/collect": "<5.5.33" - }, - "provide": { - "psr/container-implementation": "1.1|2.0", - "psr/simple-cache-implementation": "1.0|2.0|3.0" - }, - "replace": { - "illuminate/auth": "self.version", - "illuminate/broadcasting": "self.version", - "illuminate/bus": "self.version", - "illuminate/cache": "self.version", - "illuminate/collections": "self.version", - "illuminate/conditionable": "self.version", - "illuminate/config": "self.version", - "illuminate/console": "self.version", - "illuminate/container": "self.version", - "illuminate/contracts": "self.version", - "illuminate/cookie": "self.version", - "illuminate/database": "self.version", - "illuminate/encryption": "self.version", - "illuminate/events": "self.version", - "illuminate/filesystem": "self.version", - "illuminate/hashing": "self.version", - "illuminate/http": "self.version", - "illuminate/log": "self.version", - "illuminate/macroable": "self.version", - "illuminate/mail": "self.version", - "illuminate/notifications": "self.version", - "illuminate/pagination": "self.version", - "illuminate/pipeline": "self.version", - "illuminate/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": { - "aws/aws-sdk-php": "^3.198.1", - "doctrine/dbal": "^2.13.3|^3.1.4", - "fakerphp/faker": "^1.9.2", - "guzzlehttp/guzzle": "^7.2", - "league/flysystem-aws-s3-v3": "^3.0", - "league/flysystem-ftp": "^3.0", - "league/flysystem-sftp-v3": "^3.0", - "mockery/mockery": "^1.4.4", - "orchestra/testbench-core": "^7.0", - "pda/pheanstalk": "^4.0", - "phpstan/phpstan": "^1.0", - "phpunit/phpunit": "^9.5.8", - "predis/predis": "^1.1.9", - "symfony/amazon-mailer": "^6.0", - "symfony/cache": "^6.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.198.1).", - "brianium/paratest": "Required to run tests in parallel (^6.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", - "ext-bcmath": "Required to use the multiple_of validation rule.", - "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.", - "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.2).", - "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-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", - "mockery/mockery": "Required to use mocking (^1.4.4).", - "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).", - "predis/predis": "Required to use the predis connector (^1.1.9).", - "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.0).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^6.0).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.0).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.0).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.0).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.x-dev" - } - }, - "autoload": { - "files": [ - "src/Illuminate/Collections/helpers.php", - "src/Illuminate/Events/functions.php", - "src/Illuminate/Foundation/helpers.php", - "src/Illuminate/Support/helpers.php" - ], - "psr-4": { - "Illuminate\\": "src/Illuminate/", - "Illuminate\\Support\\": [ - "src/Illuminate/Macroable/", - "src/Illuminate/Collections/", - "src/Illuminate/Conditionable/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Laravel Framework.", - "homepage": "https://laravel.com", - "keywords": [ - "framework", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2022-02-09T15:00:05+00:00" - }, - { - "name": "laravel/sanctum", - "version": "v2.14.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/sanctum.git", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/0647a87140c7522e75826cffcadb3ad6e01f71e9", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/contracts": "^6.9|^7.0|^8.0|^9.0", - "illuminate/database": "^6.9|^7.0|^8.0|^9.0", - "illuminate/support": "^6.9|^7.0|^8.0|^9.0", - "php": "^7.2|^8.0" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0", - "phpunit/phpunit": "^8.0|^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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": "2022-01-12T15:07:43+00:00" - }, - { - "name": "laravel/serializable-closure", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/serializable-closure.git", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/65c9faf50d567b65d81764a44526545689e3fe63", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "pestphp/pest": "^1.18", - "phpstan/phpstan": "^0.12.98", - "symfony/var-dumper": "^5.3" - }, - "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": "2022-02-01T16:29:39+00:00" - }, - { - "name": "laravel/tinker", - "version": "v2.7.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/tinker.git", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/5f2f9815b7631b9f586a3de7933c25f9327d4073", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073", - "shasum": "" - }, - "require": { - "illuminate/console": "^6.0|^7.0|^8.0|^9.0", - "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.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", - "phpunit/phpunit": "^8.5.8|^9.3.3" - }, - "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.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.7.0" - }, - "time": "2022-01-10T08:52:49+00:00" - }, - { - "name": "laravel/ui", - "version": "v3.4.3", - "source": { - "type": "git", - "url": "https://github.com/laravel/ui.git", - "reference": "64a0f43492c00780b2261c56cd7007a4f370d95b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/ui/zipball/64a0f43492c00780b2261c56cd7007a4f370d95b", - "reference": "64a0f43492c00780b2261c56cd7007a4f370d95b", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.42|^9.0", - "illuminate/filesystem": "^8.42|^9.0", - "illuminate/support": "^8.82|^9.0", - "illuminate/validation": "^8.42|^9.0", - "php": "^7.3|^8.0" - }, - "require-dev": { - "orchestra/testbench": "^6.23|^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - }, - "laravel": { - "providers": [ - "Laravel\\Ui\\UiServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Laravel\\Ui\\": "src/", - "Illuminate\\Foundation\\Auth\\": "auth-backend/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "Laravel UI utilities and presets.", - "keywords": [ - "laravel", - "ui" - ], - "support": { - "source": "https://github.com/laravel/ui/tree/v3.4.3" - }, - "time": "2022-02-08T14:19:32+00:00" - }, - { - "name": "league/commonmark", - "version": "2.2.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/commonmark.git", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "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.15" - }, - "require-dev": { - "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.0", - "commonmark/commonmark.js": "0.30.0", - "composer/package-versions-deprecated": "^1.8", - "erusev/parsedown": "^1.0", - "ext-json": "*", - "github/gfm": "0.29.0", - "michelf/php-markdown": "^1.4", - "phpstan/phpstan": "^0.12.88 || ^1.0.0", - "phpunit/phpunit": "^9.5.5", - "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", - "unleashedtech/php-coding-standard": "^3.1", - "vimeo/psalm": "^4.7.3" - }, - "suggest": { - "symfony/yaml": "v2.3+ required if using the Front Matter extension" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.3-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": "2022-01-25T14:37:33+00:00" - }, - { - "name": "league/config", - "version": "v1.1.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/config.git", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/config/zipball/a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^3.0.1", - "nette/schema": "^1.2", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.90", - "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": "2021-08-14T12:15:32+00:00" - }, - { - "name": "league/flysystem", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9f8b4260031bfef5497477da53dd57b2aaff0e06", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06", - "shasum": "" - }, - "require": { - "ext-json": "*", - "league/mime-type-detection": "^1.0.0", - "php": "^8.0.2" - }, - "conflict": { - "guzzlehttp/guzzle": "<7.0", - "guzzlehttp/ringphp": "<1.1.1", - "symfony/http-client": "<5.2" - }, - "require-dev": { - "async-aws/s3": "^1.5", - "async-aws/simple-s3": "^1.0", - "aws/aws-sdk-php": "^3.198.1", - "composer/semver": "^3.0", - "ext-fileinfo": "*", - "ext-ftp": "*", - "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.5", - "google/cloud-storage": "^1.23", - "phpseclib/phpseclib": "^2.0", - "phpstan/phpstan": "^0.12.26", - "phpunit/phpunit": "^9.5.11", - "sabre/dav": "^4.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.0.3" - }, - "funding": [ - { - "url": "https://offset.earth/frankdejonge", - "type": "custom" - }, - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2022-01-31T19:41:04+00:00" - }, - { - "name": "league/mime-type-detection", - "version": "1.9.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/aa70e813a6ad3d1558fc927863d47309b4c23e69", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.2", - "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" - }, - "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.9.0" - }, - "funding": [ - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2021-11-21T11:48:40+00:00" - }, - { - "name": "monolog/monolog", - "version": "2.3.5", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd4380d6fc37626e2f799f29d91195040137eba9", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "provide": { - "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7", - "graylog2/gelf-php": "^1.4.2", - "mongodb/mongodb": "^1.8", - "php-amqplib/php-amqplib": "~2.4 || ^3", - "php-console/php-console": "^3.1.3", - "phpspec/prophecy": "^1.6.1", - "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5", - "predis/predis": "^1.1", - "rollbar/rollbar": "^1.3", - "ruflin/elastica": ">=0.90@dev", - "swiftmailer/swiftmailer": "^5.3|^6.0" - }, - "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", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "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": "2.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/2.3.5" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" - } - ], - "time": "2021-10-01T21:08:31+00:00" - }, - { - "name": "nesbot/carbon", - "version": "2.56.0", - "source": { - "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1.8 || ^8.0", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "doctrine/dbal": "^2.0 || ^3.0", - "doctrine/orm": "^2.7", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "phpmd/phpmd": "^2.9", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.54 || ^1.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.14", - "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://opencollective.com/Carbon", - "type": "open_collective" - }, - { - "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", - "type": "tidelift" - } - ], - "time": "2022-01-21T17:08:38+00:00" - }, - { - "name": "nette/schema", - "version": "v1.2.2", - "source": { - "type": "git", - "url": "https://github.com/nette/schema.git", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/9a39cef03a5b34c7de64f551538cbba05c2be5df", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df", - "shasum": "" - }, - "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": ">=7.1 <8.2" - }, - "require-dev": { - "nette/tester": "^2.3 || ^2.4", - "phpstan/phpstan-nette": "^0.12", - "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.2" - }, - "time": "2021-10-15T11:40:02+00:00" - }, - { - "name": "nette/utils", - "version": "v3.2.7", - "source": { - "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/0af4e3de4df9f1543534beab255ccf459e7a2c99", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99", - "shasum": "" - }, - "require": { - "php": ">=7.2 <8.2" - }, - "conflict": { - "nette/di": "<3.0.6" - }, - "require-dev": { - "nette/tester": "~2.0", - "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.3" - }, - "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()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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 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/v3.2.7" - }, - "time": "2022-01-24T11:29:14+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.13.2", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", - "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.13.2" - }, - "time": "2021-11-30T19:35:32+00:00" - }, - { - "name": "phpoption/phpoption", - "version": "1.8.1", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-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.8.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", - "type": "tidelift" - } - ], - "time": "2021-12-04T23:24:31+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.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.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": "http://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/tree/master" - }, - "time": "2020-06-29T06:28:15+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.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": "http://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/master" - }, - "time": "2019-04-30T12:38:16+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.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": "http://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/master" - }, - "time": "2016-08-06T14:39: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.1", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "570292577277f06f590635381a7f761a6cf4f026" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/570292577277f06f590635381a7f761a6cf4f026", - "reference": "570292577277f06f590635381a7f761a6cf4f026", - "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" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "3.17.05.02" - }, - "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.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." - }, - "bin": [ - "bin/psysh" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "0.11.x-dev" - } - }, - "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.1" - }, - "time": "2022-01-03T13:58:38+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": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/ramsey/collection.git", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "shasum": "" - }, - "require": { - "php": "^7.3 || ^8", - "symfony/polyfill-php81": "^1.23" - }, - "require-dev": { - "captainhook/captainhook": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "ergebnis/composer-normalize": "^2.6", - "fakerphp/faker": "^1.5", - "hamcrest/hamcrest-php": "^2", - "jangregor/phpstan-prophecy": "^0.8", - "mockery/mockery": "^1.3", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1", - "phpstan/phpstan": "^0.12.32", - "phpstan/phpstan-mockery": "^0.12.5", - "phpstan/phpstan-phpunit": "^0.12.11", - "phpunit/phpunit": "^8.5 || ^9", - "psy/psysh": "^0.10.4", - "slevomat/coding-standard": "^6.3", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.4" - }, - "type": "library", - "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/1.2.2" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "time": "2021-10-10T03:01:02+00:00" - }, - { - "name": "ramsey/uuid", - "version": "4.2.3", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "shasum": "" - }, - "require": { - "brick/math": "^0.8 || ^0.9", - "ext-json": "*", - "php": "^7.2 || ^8.0", - "ramsey/collection": "^1.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php80": "^1.14" - }, - "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", - "moontoast/math": "^1.1", - "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.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-mockery": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^8.5 || ^9", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" - }, - "suggest": { - "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-ctype": "Enables faster processing of character classification using ctype functions.", - "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": { - "branch-alias": { - "dev-main": "4.x-dev" - }, - "captainhook": { - "force-install": true - } - }, - "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "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.2.3" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2021-09-25T23:10:38+00:00" - }, - { - "name": "symfony/console", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/22e8efd019c3270c4f79376234a3f8752cd25490", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.4|^6.0" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/css-selector", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/1955d595c12c111629cc814d3f2a2ff13580508a", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a", - "shasum": "" - }, - "require": { - "php": ">=8.0.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/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-11-01T23:48:49+00:00" - }, - { - "name": "symfony/error-handler", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/20343b3bad7ebafa38138ddcb97290a24722b57b", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" - }, - "bin": [ - "Resources/bin/patch-type-declarations" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to manage errors and ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6472ea2dd415e925b90ca82be64b8bc6157f3934", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/event-dispatcher-contracts": "^2|^3" - }, - "conflict": { - "symfony/dependency-injection": "<5.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^5.4|^6.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/aa5422287b75594b90ee9cd807caf8f0df491385", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/event-dispatcher": "^1" - }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-07-15T12:33:35+00:00" - }, - { - "name": "symfony/finder", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/8661b74dbabc23223f38c9b99d3f8ade71170430", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ad157299ced81a637fade1efcadd688d6deba5c1", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1" - }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/cache": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0" - }, - "suggest": { - "symfony/mime": "To use the file extension guesser" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v6.0.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/error-handler": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", - "symfony/twig-bridge": "<5.4", - "symfony/validator": "<5.4", - "twig/twig": "<2.13" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/process": "^5.4|^6.0", - "symfony/routing": "^5.4|^6.0", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-29T18:12:46+00:00" - }, - { - "name": "symfony/mailer", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mailer.git", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "shasum": "" - }, - "require": { - "egulias/email-validator": "^2.1.10|^3", - "php": ">=8.0.2", - "psr/event-dispatcher": "^1", - "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3" - }, - "conflict": { - "symfony/http-kernel": "<5.4" - }, - "require-dev": { - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/messenger": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/mime", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/2cd9601efd040e56f43360daa68f3c6b0534923a", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "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" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "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.24.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": "2021-10-20T20:35:02+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-11-23T21:10:46+00:00" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44", - "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.23-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.24.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": "2021-09-14T14:02:44+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.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": "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.24.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": "2021-11-30T18:21:41+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-05-27T09:17:38+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:33+00:00" - }, - { - "name": "symfony/polyfill-php81", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:11+00:00" - }, - { - "name": "symfony/process", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/298ed357274c1868c20a0061df256a1250a6c4af", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/routing", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/yaml": "<5.4" - }, - "require-dev": { - "doctrine/annotations": "^1.12", - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/36715ebf9fb9db73db0cb24263c79077c6fe8603", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/container": "^2.0" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "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.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": "2021-11-04T17:53:12+00:00" - }, - { - "name": "symfony/string", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/522144f0c4c004c80d56fa47e40e17028e2eefc2", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.0" - }, - "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/translation-contracts": "^2.0|^3.0", - "symfony/var-exporter": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "files": [ - "Resources/functions.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 an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/translation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/71bb15335798f8c4da110911bcf2d2fead7a430d", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.3|^3.0" - }, - "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" - }, - "provide": { - "symfony/translation-implementation": "2.3|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-07T00:29:03+00:00" - }, - { - "name": "symfony/translation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "suggest": { - "symfony/translation-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - } - }, - "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.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": "2021-09-07T12:43:40+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7b701676fc64f9ef11f9b4870f16b48f66be4834", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<5.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-17T16:30:44+00:00" - }, - { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.4", - "source": { - "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" - } - ], - "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", - "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "support": { - "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" - }, - "time": "2021-12-08T09:12:39+00:00" - }, - { - "name": "vlucas/phpdotenv", - "version": "v5.4.1", - "source": { - "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", - "shasum": "" - }, - "require": { - "ext-pcre": "*", - "graham-campbell/result-type": "^1.0.2", - "php": "^7.1.3 || ^8.0", - "phpoption/phpoption": "^1.8", - "symfony/polyfill-ctype": "^1.23", - "symfony/polyfill-mbstring": "^1.23.1", - "symfony/polyfill-php80": "^1.23.1" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" - }, - "suggest": { - "ext-filter": "Required to use the boolean validator." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.4-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.4.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", - "type": "tidelift" - } - ], - "time": "2021-12-12T23:22:04+00:00" - }, - { - "name": "voku/portable-ascii", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/voku/portable-ascii.git", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/9bd89e83cecdf8c37b64909454249eaed98b2c89", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89", - "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.0" - }, - "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-01-24T18:59:03+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "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.10.0" - }, - "time": "2021-03-09T10:59:23+00:00" - } - ], - "packages-dev": [ - { - "name": "doctrine/instantiator", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.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%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2020-11-10T18:47:58+00:00" - }, - { - "name": "facade/ignition-contracts", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/facade/ignition-contracts.git", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^v2.15.8", - "phpunit/phpunit": "^9.3.11", - "vimeo/psalm": "^3.17.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Facade\\IgnitionContracts\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://flareapp.io", - "role": "Developer" - } - ], - "description": "Solution contracts for Ignition", - "homepage": "https://github.com/facade/ignition-contracts", - "keywords": [ - "contracts", - "flare", - "ignition" - ], - "support": { - "issues": "https://github.com/facade/ignition-contracts/issues", - "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" - }, - "time": "2020-10-16T08:27:54+00:00" - }, - { - "name": "fakerphp/faker", - "version": "v1.19.0", - "source": { - "type": "git", - "url": "https://github.com/FakerPHP/Faker.git", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^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": "*", - "symfony/phpunit-bridge": "^4.4 || ^5.2" - }, - "suggest": { - "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", - "ext-curl": "Required by Faker\\Provider\\Image to download images.", - "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", - "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.19-dev" - } - }, - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "François Zaninotto" - } - ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], - "support": { - "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0" - }, - "time": "2022-02-02T17:38:57+00:00" - }, - { - "name": "filp/whoops", - "version": "2.14.5", - "source": { - "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "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.14.5" - }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "time": "2022-01-07T12:00:00+00:00" - }, - { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "shasum": "" - }, - "require": { - "php": "^5.3|^7.0|^8.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" - }, - "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "classmap": [ - "hamcrest" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "This is the PHP port of Hamcrest Matchers", - "keywords": [ - "test" - ], - "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" - }, - "time": "2020-07-09T08:09:16+00:00" - }, - { - "name": "laravel/sail", - "version": "v1.13.2", - "source": { - "type": "git", - "url": "https://github.com/laravel/sail.git", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.0|^9.0", - "illuminate/contracts": "^8.0|^9.0", - "illuminate/support": "^8.0|^9.0", - "php": "^7.3|^8.0" - }, - "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": "2022-02-08T14:14:12+00:00" - }, - { - "name": "mockery/mockery", - "version": "1.5.0", - "source": { - "type": "git", - "url": "https://github.com/mockery/mockery.git", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "shasum": "" - }, - "require": { - "hamcrest/hamcrest-php": "^2.0.1", - "lib-pcre": ">=7.0", - "php": "^7.3 || ^8.0" - }, - "conflict": { - "phpunit/phpunit": "<8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-0": { - "Mockery": "library/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" - } - ], - "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": { - "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.5.0" - }, - "time": "2022-01-20T13:18:17+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.10.2", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "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.10.2" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2020-11-13T09:40:50+00:00" - }, - { - "name": "nunomaduro/collision", - "version": "v6.1.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/collision.git", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "shasum": "" - }, - "require": { - "facade/ignition-contracts": "^1.0.2", - "filp/whoops": "^2.14.5", - "php": "^8.0.0", - "symfony/console": "^6.0.2" - }, - "require-dev": { - "brianium/paratest": "^6.4.1", - "laravel/framework": "^9.0", - "nunomaduro/larastan": "^1.0.2", - "nunomaduro/mock-final-classes": "^1.1.0", - "orchestra/testbench": "^7.0.0", - "phpunit/phpunit": "^9.5.11" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "6.x-dev" - }, - "laravel": { - "providers": [ - "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" - ] - } - }, - "autoload": { - "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": "2022-01-18T17:49:08+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.1.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/15a90844ad40f127afd244c0cad228de2a80052a", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a", - "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.1.1" - }, - "time": "2022-02-07T21:56:48+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.6.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "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.6.0" - }, - "time": "2022-01-04T19:58:01+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" - }, - "time": "2021-12-08T12:19:24+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "9.2.10", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d5850aaf931743067f4bfc1ae4cbd06468400687", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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 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", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.10" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-05T09:12:13+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "3.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-02T12:48:52+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "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/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:58:55+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T05:33:50+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.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/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:16:10+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "9.5.13", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/597cb647654ede35e43b137926dfdfef0fb11743", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.3.1", - "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": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.7", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", - "sebastian/version": "^3.0.2" - }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.13" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-01-24T07:33:35+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:08:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "1.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:08:54+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:30:19+00:00" - }, - { - "name": "sebastian/comparator", - "version": "4.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:49:45+00:00" - }, - { - "name": "sebastian/complexity", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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 calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:52:27+00:00" - }, - { - "name": "sebastian/diff", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:10:38+00:00" - }, - { - "name": "sebastian/environment", - "version": "5.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-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": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:52:38+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "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", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-11-11T14:18:36+00:00" - }, - { - "name": "sebastian/global-state", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-11T13:31:12+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-28T06:42:11+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "http://www.github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:17:30+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:45:17+00:00" - }, - { - "name": "sebastian/type", - "version": "2.3.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-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/2.3.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-15T12:49:02+00:00" - }, - { - "name": "sebastian/version", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:39:44+00:00" - }, - { - "name": "spatie/backtrace", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/backtrace.git", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "ext-json": "*", - "phpunit/phpunit": "^9.3", - "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": { - "issues": "https://github.com/spatie/backtrace/issues", - "source": "https://github.com/spatie/backtrace/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/sponsors/spatie", - "type": "github" - }, - { - "url": "https://spatie.be/open-source/support-us", - "type": "other" - } - ], - "time": "2021-11-09T10:57:15+00:00" - }, - { - "name": "spatie/flare-client-php", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/flare-client-php.git", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "shasum": "" - }, - "require": { - "illuminate/pipeline": "^8.0|^9.0", - "php": "^8.0", - "spatie/backtrace": "^1.2", - "symfony/http-foundation": "^5.0|^6.0", - "symfony/mime": "^5.2|^6.0", - "symfony/process": "^5.2|^6.0", - "symfony/var-dumper": "^5.2|^6.0" - }, - "require-dev": { - "dms/phpunit-arraysubset-asserts": "^0.3.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/phpunit-snapshot-assertions": "^4.0" - }, - "type": "library", - "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.0.1" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2022-02-04T15:21:00+00:00" - }, - { - "name": "spatie/ignition", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/spatie/ignition.git", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/d2d5ba823af3004268556e87dfc94449e4159f5a", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "monolog/monolog": "^2.0", - "php": "^8.0", - "spatie/flare-client-php": "^1.0", - "symfony/console": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "mockery/mockery": "^1.4", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/ray": "^1.32", - "symfony/process": "^5.4|^6.0" - }, - "type": "library", - "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": "2022-01-19T12:57:41+00:00" - }, - { - "name": "spatie/laravel-ignition", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/68250225a9f83b086462c2af1b1139dfde48fbd2", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*", - "illuminate/support": "^8.77|^9.0", - "monolog/monolog": "^2.3", - "php": "^8.0", - "spatie/flare-client-php": "^1.0.1", - "spatie/ignition": "^1.0", - "symfony/console": "^5.0|^6.0", - "symfony/var-dumper": "^5.0|^6.0" - }, - "require-dev": { - "filp/whoops": "^2.14", - "livewire/livewire": "^2.8|dev-develop", - "mockery/mockery": "^1.4", - "nunomaduro/larastan": "^1.0", - "orchestra/testbench": "^6.23|^7.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/laravel-ray": "^1.27" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Spatie\\LaravelIgnition\\IgnitionServiceProvider" - ], - "aliases": { - "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" - } - } - }, - "autoload": { - "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": "2022-02-04T15:25:56+00:00" - }, - { - "name": "squizlabs/php_codesniffer", - "version": "3.6.2", - "source": { - "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", - "shasum": "" - }, - "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.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": "lead" - } - ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", - "keywords": [ - "phpcs", - "standards" - ], - "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" - }, - "time": "2021-12-12T21:44:58+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2021-07-28T10:34:58+00:00" - } - ], - "aliases": [], - "minimum-stability": "dev", - "stability-flags": [], - "prefer-stable": true, - "prefer-lowest": false, - "platform": { - "php": "^8.0" - }, - "platform-dev": [], - "plugin-api-version": "2.1.0" -} diff --git a/Chapter21/onlineStore/config/app.php b/Chapter21/onlineStore/config/app.php deleted file mode 100644 index 1941d7c..0000000 --- a/Chapter21/onlineStore/config/app.php +++ /dev/null @@ -1,197 +0,0 @@ - env('APP_NAME', 'Laravel'), - - /* - |-------------------------------------------------------------------------- - | Application Environment - |-------------------------------------------------------------------------- - | - | This value determines the "environment" your application is currently - | running in. This may determine how you prefer to configure various - | services the application utilizes. Set this in your ".env" file. - | - */ - - 'env' => env('APP_ENV', 'production'), - - /* - |-------------------------------------------------------------------------- - | Application Debug Mode - |-------------------------------------------------------------------------- - | - | When your application is in debug mode, detailed error messages with - | stack traces will be shown on every error that occurs within your - | application. If disabled, a simple generic error page is shown. - | - */ - - 'debug' => (bool) env('APP_DEBUG', false), - - /* - |-------------------------------------------------------------------------- - | Application URL - |-------------------------------------------------------------------------- - | - | This URL is used by the console to properly generate URLs when using - | the Artisan command line tool. You should set this to the root of - | your application so that it is used when running Artisan tasks. - | - */ - - 'url' => env('APP_URL', 'http://localhost'), - - 'asset_url' => env('ASSET_URL', null), - - /* - |-------------------------------------------------------------------------- - | 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', - - /* - |-------------------------------------------------------------------------- - | 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' => [ - - /* - * Laravel Framework Service Providers... - */ - Illuminate\Auth\AuthServiceProvider::class, - Illuminate\Broadcasting\BroadcastServiceProvider::class, - Illuminate\Bus\BusServiceProvider::class, - Illuminate\Cache\CacheServiceProvider::class, - Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, - Illuminate\Cookie\CookieServiceProvider::class, - Illuminate\Database\DatabaseServiceProvider::class, - Illuminate\Encryption\EncryptionServiceProvider::class, - Illuminate\Filesystem\FilesystemServiceProvider::class, - Illuminate\Foundation\Providers\FoundationServiceProvider::class, - Illuminate\Hashing\HashServiceProvider::class, - Illuminate\Mail\MailServiceProvider::class, - Illuminate\Notifications\NotificationServiceProvider::class, - Illuminate\Pagination\PaginationServiceProvider::class, - Illuminate\Pipeline\PipelineServiceProvider::class, - Illuminate\Queue\QueueServiceProvider::class, - Illuminate\Redis\RedisServiceProvider::class, - Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, - Illuminate\Session\SessionServiceProvider::class, - Illuminate\Translation\TranslationServiceProvider::class, - Illuminate\Validation\ValidationServiceProvider::class, - Illuminate\View\ViewServiceProvider::class, - - /* - * 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, - - ], - - /* - |-------------------------------------------------------------------------- - | 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([ - // ... - ])->toArray(), - -]; diff --git a/Chapter21/onlineStore/config/auth.php b/Chapter21/onlineStore/config/auth.php deleted file mode 100644 index d8c6cee..0000000 --- a/Chapter21/onlineStore/config/auth.php +++ /dev/null @@ -1,111 +0,0 @@ - [ - '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 expire 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. - | - */ - - 'passwords' => [ - 'users' => [ - 'provider' => 'users', - 'table' => 'password_resets', - '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/Chapter21/onlineStore/config/broadcasting.php b/Chapter21/onlineStore/config/broadcasting.php deleted file mode 100644 index 67fcbbd..0000000 --- a/Chapter21/onlineStore/config/broadcasting.php +++ /dev/null @@ -1,67 +0,0 @@ - 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'), - 'useTLS' => true, - ], - '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/Chapter21/onlineStore/config/cache.php b/Chapter21/onlineStore/config/cache.php deleted file mode 100644 index 8736c7a..0000000 --- a/Chapter21/onlineStore/config/cache.php +++ /dev/null @@ -1,110 +0,0 @@ - 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'), - ], - - '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 a RAM based store such as APC or Memcached, there might - | be other applications utilizing the same cache. So, we'll specify a - | value to get prefixed to all our keys so we can avoid collisions. - | - */ - - 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'), - -]; diff --git a/Chapter21/onlineStore/config/cors.php b/Chapter21/onlineStore/config/cors.php deleted file mode 100644 index 8a39e6d..0000000 --- a/Chapter21/onlineStore/config/cors.php +++ /dev/null @@ -1,34 +0,0 @@ - ['api/*', 'sanctum/csrf-cookie'], - - 'allowed_methods' => ['*'], - - 'allowed_origins' => ['*'], - - 'allowed_origins_patterns' => [], - - 'allowed_headers' => ['*'], - - 'exposed_headers' => [], - - 'max_age' => 0, - - 'supports_credentials' => false, - -]; diff --git a/Chapter21/onlineStore/config/database.php b/Chapter21/onlineStore/config/database.php deleted file mode 100644 index 0faebae..0000000 --- a/Chapter21/onlineStore/config/database.php +++ /dev/null @@ -1,147 +0,0 @@ - env('DB_CONNECTION', 'mysql'), - - /* - |-------------------------------------------------------------------------- - | Database Connections - |-------------------------------------------------------------------------- - | - | Here are each of the database connections setup for your application. - | Of course, examples of configuring each database platform that is - | supported by Laravel is shown below to make development simple. - | - | - | All database work in Laravel is done through the PHP PDO facilities - | so make sure you have the driver for your particular database of - | choice installed on your machine before you begin development. - | - */ - - 'connections' => [ - - 'sqlite' => [ - 'driver' => 'sqlite', - 'url' => env('DATABASE_URL'), - 'database' => env('DB_DATABASE', database_path('database.sqlite')), - 'prefix' => '', - 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), - ], - - 'mysql' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '3306'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'unix_socket' => env('DB_SOCKET', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - 'pgsql' => [ - 'driver' => 'pgsql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '5432'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - 'search_path' => 'public', - 'sslmode' => 'prefer', - ], - - 'sqlsrv' => [ - 'driver' => 'sqlsrv', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', 'localhost'), - 'port' => env('DB_PORT', '1433'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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'), - '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'), - 'password' => env('REDIS_PASSWORD'), - 'port' => env('REDIS_PORT', '6379'), - 'database' => env('REDIS_CACHE_DB', '1'), - ], - - ], - -]; diff --git a/Chapter21/onlineStore/config/filesystems.php b/Chapter21/onlineStore/config/filesystems.php deleted file mode 100644 index cf5abce..0000000 --- a/Chapter21/onlineStore/config/filesystems.php +++ /dev/null @@ -1,73 +0,0 @@ - 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 setup for each driver as an example of the required options. - | - | Supported Drivers: "local", "ftp", "sftp", "s3" - | - */ - - 'disks' => [ - - 'local' => [ - 'driver' => 'local', - 'root' => storage_path('app'), - ], - - 'public' => [ - 'driver' => 'local', - 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', - 'visibility' => 'public', - ], - - '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), - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter21/onlineStore/config/hashing.php b/Chapter21/onlineStore/config/hashing.php deleted file mode 100644 index bcd3be4..0000000 --- a/Chapter21/onlineStore/config/hashing.php +++ /dev/null @@ -1,52 +0,0 @@ - '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/Chapter21/onlineStore/config/logging.php b/Chapter21/onlineStore/config/logging.php deleted file mode 100644 index fefe088..0000000 --- a/Chapter21/onlineStore/config/logging.php +++ /dev/null @@ -1,119 +0,0 @@ - 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' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), - - /* - |-------------------------------------------------------------------------- - | 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'), - ], - - 'daily' => [ - 'driver' => 'daily', - 'path' => storage_path('logs/laravel.log'), - 'level' => env('LOG_LEVEL', 'debug'), - 'days' => 14, - ], - - 'slack' => [ - 'driver' => 'slack', - 'url' => env('LOG_SLACK_WEBHOOK_URL'), - 'username' => 'Laravel Log', - 'emoji' => ':boom:', - 'level' => env('LOG_LEVEL', 'critical'), - ], - - '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'), - ], - ], - - 'stderr' => [ - 'driver' => 'monolog', - 'level' => env('LOG_LEVEL', 'debug'), - 'handler' => StreamHandler::class, - 'formatter' => env('LOG_STDERR_FORMATTER'), - 'with' => [ - 'stream' => 'php://stderr', - ], - ], - - 'syslog' => [ - 'driver' => 'syslog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'errorlog' => [ - 'driver' => 'errorlog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'null' => [ - 'driver' => 'monolog', - 'handler' => NullHandler::class, - ], - - 'emergency' => [ - 'path' => storage_path('logs/laravel.log'), - ], - ], - -]; diff --git a/Chapter21/onlineStore/config/mail.php b/Chapter21/onlineStore/config/mail.php deleted file mode 100644 index 87b6fe3..0000000 --- a/Chapter21/onlineStore/config/mail.php +++ /dev/null @@ -1,117 +0,0 @@ - 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", - | "postmark", "log", "array", "failover" - | - */ - - 'mailers' => [ - 'smtp' => [ - 'transport' => 'smtp', - '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, - ], - - 'ses' => [ - 'transport' => 'ses', - ], - - 'mailgun' => [ - 'transport' => 'mailgun', - ], - - 'postmark' => [ - 'transport' => 'postmark', - ], - - 'sendmail' => [ - 'transport' => 'sendmail', - 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -t -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/Chapter21/onlineStore/config/queue.php b/Chapter21/onlineStore/config/queue.php deleted file mode 100644 index 25ea5a8..0000000 --- a/Chapter21/onlineStore/config/queue.php +++ /dev/null @@ -1,93 +0,0 @@ - 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, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter21/onlineStore/config/sanctum.php b/Chapter21/onlineStore/config/sanctum.php deleted file mode 100644 index 9281c92..0000000 --- a/Chapter21/onlineStore/config/sanctum.php +++ /dev/null @@ -1,65 +0,0 @@ - explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( - '%s%s', - 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', - env('APP_URL') ? ','.parse_url(env('APP_URL'), PHP_URL_HOST) : '' - ))), - - /* - |-------------------------------------------------------------------------- - | 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/Chapter21/onlineStore/config/services.php b/Chapter21/onlineStore/config/services.php deleted file mode 100644 index 2a1d616..0000000 --- a/Chapter21/onlineStore/config/services.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - 'domain' => env('MAILGUN_DOMAIN'), - 'secret' => env('MAILGUN_SECRET'), - 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), - ], - - '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/Chapter21/onlineStore/config/session.php b/Chapter21/onlineStore/config/session.php deleted file mode 100644 index 8fed97c..0000000 --- a/Chapter21/onlineStore/config/session.php +++ /dev/null @@ -1,201 +0,0 @@ - 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/Chapter21/onlineStore/config/view.php b/Chapter21/onlineStore/config/view.php deleted file mode 100644 index 22b8a18..0000000 --- a/Chapter21/onlineStore/config/view.php +++ /dev/null @@ -1,36 +0,0 @@ - [ - 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/Chapter21/onlineStore/database/.gitignore b/Chapter21/onlineStore/database/.gitignore deleted file mode 100644 index 9b19b93..0000000 --- a/Chapter21/onlineStore/database/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.sqlite* diff --git a/Chapter21/onlineStore/database/factories/UserFactory.php b/Chapter21/onlineStore/database/factories/UserFactory.php deleted file mode 100644 index d6ca926..0000000 --- a/Chapter21/onlineStore/database/factories/UserFactory.php +++ /dev/null @@ -1,42 +0,0 @@ - - */ -class UserFactory extends Factory -{ - /** - * Define the model's default state. - * - * @return array - */ - public function definition() - { - return [ - 'name' => $this->faker->name(), - 'email' => $this->faker->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. - * - * @return \Illuminate\Database\Eloquent\Factories\Factory - */ - public function unverified() - { - return $this->state(function (array $attributes) { - return [ - 'email_verified_at' => null, - ]; - }); - } -} diff --git a/Chapter21/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php b/Chapter21/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php deleted file mode 100644 index cf6b776..0000000 --- a/Chapter21/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->string('name'); - $table->string('email')->unique(); - $table->timestamp('email_verified_at')->nullable(); - $table->string('password'); - $table->rememberToken(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('users'); - } -}; diff --git a/Chapter21/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php b/Chapter21/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php deleted file mode 100644 index 0ee0a36..0000000 --- a/Chapter21/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php +++ /dev/null @@ -1,32 +0,0 @@ -string('email')->index(); - $table->string('token'); - $table->timestamp('created_at')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('password_resets'); - } -} diff --git a/Chapter21/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/Chapter21/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php deleted file mode 100644 index 1719198..0000000 --- a/Chapter21/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php +++ /dev/null @@ -1,36 +0,0 @@ -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. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('failed_jobs'); - } -}; diff --git a/Chapter21/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/Chapter21/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php deleted file mode 100644 index fd235f8..0000000 --- a/Chapter21/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->morphs('tokenable'); - $table->string('name'); - $table->string('token', 64)->unique(); - $table->text('abilities')->nullable(); - $table->timestamp('last_used_at')->nullable(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('personal_access_tokens'); - } -}; diff --git a/Chapter21/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php b/Chapter21/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php deleted file mode 100644 index 2eecdc2..0000000 --- a/Chapter21/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php +++ /dev/null @@ -1,35 +0,0 @@ -id(); - $table->string('name'); - $table->text('description'); - $table->string('image'); - $table->integer('price'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('products'); - } -}; diff --git a/Chapter21/onlineStore/database/seeders/DatabaseSeeder.php b/Chapter21/onlineStore/database/seeders/DatabaseSeeder.php deleted file mode 100644 index 71f673f..0000000 --- a/Chapter21/onlineStore/database/seeders/DatabaseSeeder.php +++ /dev/null @@ -1,19 +0,0 @@ -create(); - } -} diff --git a/Chapter21/onlineStore/lang/en.json b/Chapter21/onlineStore/lang/en.json deleted file mode 100644 index 577680d..0000000 --- a/Chapter21/onlineStore/lang/en.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "The :attribute must contain at least one letter.": "The :attribute must contain at least one letter.", - "The :attribute must contain at least one number.": "The :attribute must contain at least one number.", - "The :attribute must contain at least one symbol.": "The :attribute must contain at least one symbol.", - "The :attribute must contain at least one uppercase and one lowercase letter.": "The :attribute must contain at least one uppercase and one lowercase letter.", - "The given :attribute has appeared in a data leak. Please choose a different :attribute.": "The given :attribute has appeared in a data leak. Please choose a different :attribute." -} diff --git a/Chapter21/onlineStore/lang/en/auth.php b/Chapter21/onlineStore/lang/en/auth.php deleted file mode 100644 index 6598e2c..0000000 --- a/Chapter21/onlineStore/lang/en/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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/Chapter21/onlineStore/lang/en/pagination.php b/Chapter21/onlineStore/lang/en/pagination.php deleted file mode 100644 index d481411..0000000 --- a/Chapter21/onlineStore/lang/en/pagination.php +++ /dev/null @@ -1,19 +0,0 @@ - '« Previous', - 'next' => 'Next »', - -]; diff --git a/Chapter21/onlineStore/lang/en/passwords.php b/Chapter21/onlineStore/lang/en/passwords.php deleted file mode 100644 index 2345a56..0000000 --- a/Chapter21/onlineStore/lang/en/passwords.php +++ /dev/null @@ -1,22 +0,0 @@ - '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/Chapter21/onlineStore/lang/en/validation.php b/Chapter21/onlineStore/lang/en/validation.php deleted file mode 100644 index 783003c..0000000 --- a/Chapter21/onlineStore/lang/en/validation.php +++ /dev/null @@ -1,163 +0,0 @@ - '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' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - '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' => [ - 'numeric' => 'The :attribute must be greater than :value.', - 'file' => 'The :attribute must be greater than :value kilobytes.', - 'string' => 'The :attribute must be greater than :value characters.', - 'array' => 'The :attribute must have more than :value items.', - ], - 'gte' => [ - 'numeric' => 'The :attribute must be greater than or equal to :value.', - 'file' => 'The :attribute must be greater than or equal to :value kilobytes.', - 'string' => 'The :attribute must be greater than or equal to :value characters.', - 'array' => 'The :attribute must have :value items or more.', - ], - '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' => [ - 'numeric' => 'The :attribute must be less than :value.', - 'file' => 'The :attribute must be less than :value kilobytes.', - 'string' => 'The :attribute must be less than :value characters.', - 'array' => 'The :attribute must have less than :value items.', - ], - 'lte' => [ - 'numeric' => 'The :attribute must be less than or equal to :value.', - 'file' => 'The :attribute must be less than or equal to :value kilobytes.', - 'string' => 'The :attribute must be less than or equal to :value characters.', - 'array' => 'The :attribute must not have more than :value items.', - ], - 'mac_address' => 'The :attribute must be a valid MAC address.', - 'max' => [ - 'numeric' => 'The :attribute must not be greater than :max.', - 'file' => 'The :attribute must not be greater than :max kilobytes.', - 'string' => 'The :attribute must not be greater than :max characters.', - 'array' => 'The :attribute must not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - '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.', - 'password' => 'The password is incorrect.', - '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' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - '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/Chapter21/onlineStore/package.json b/Chapter21/onlineStore/package.json deleted file mode 100644 index 7b71681..0000000 --- a/Chapter21/onlineStore/package.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "private": true, - "scripts": { - "dev": "npm run development", - "development": "mix", - "watch": "mix watch", - "watch-poll": "mix watch -- --watch-options-poll=1000", - "hot": "mix watch --hot", - "prod": "npm run production", - "production": "mix --production" - }, - "devDependencies": { - "@popperjs/core": "^2.10.2", - "axios": "^0.25", - "bootstrap": "^5.1.3", - "laravel-mix": "^6.0.6", - "lodash": "^4.17.19", - "postcss": "^8.1.14", - "sass": "^1.32.11", - "sass-loader": "^11.0.1" - } -} diff --git a/Chapter21/onlineStore/phpcs.xml b/Chapter21/onlineStore/phpcs.xml deleted file mode 100644 index a1cf2b6..0000000 --- a/Chapter21/onlineStore/phpcs.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - The coding standard for the Online Store project - - app/ - config/ - database/ - routes/ - */migrations/* - diff --git a/Chapter21/onlineStore/phpunit.xml b/Chapter21/onlineStore/phpunit.xml deleted file mode 100644 index 2ac86a1..0000000 --- a/Chapter21/onlineStore/phpunit.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - ./tests/Unit - - - ./tests/Feature - - - - - ./app - - - - - - - - - - - - - - diff --git a/Chapter21/onlineStore/public/.htaccess b/Chapter21/onlineStore/public/.htaccess deleted file mode 100644 index 3aec5e2..0000000 --- a/Chapter21/onlineStore/public/.htaccess +++ /dev/null @@ -1,21 +0,0 @@ - - - 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/Chapter21/onlineStore/public/css/admin.css b/Chapter21/onlineStore/public/css/admin.css deleted file mode 100644 index d9495a1..0000000 --- a/Chapter21/onlineStore/public/css/admin.css +++ /dev/null @@ -1,33 +0,0 @@ -.copyright { - background-color: #1a252f; -} - -.fixed { - -ms-flex: 0 0 250px; - flex: 0 0 250px; -} - -.content-grey { - background-color: #f8f9fc; -} - -hr { - margin-top: 0.8em; - margin-bottom: 0.8em; -} - -.img-profile { - height: 2rem; - width: 2rem; -} - -.profile-font { - color: #858796 !important; - font-size: 80%; - font-weight: 400; -} - -.card-header { - background-color: #f8f9fc; - border-bottom: 1px solid #e3e6f0; -} diff --git a/Chapter21/onlineStore/public/css/app.css b/Chapter21/onlineStore/public/css/app.css deleted file mode 100644 index cabac36..0000000 --- a/Chapter21/onlineStore/public/css/app.css +++ /dev/null @@ -1,20 +0,0 @@ -.bg-secondary { - background-color: #2c3e50 !important; -} - -.copyright { - background-color: #1a252f; -} - -.bg-primary { - background-color: #1abc9c !important; -} - -nav{ - font-weight: 700; -} - -.img-card{ - height: 18vw; - object-fit: cover; -} diff --git a/Chapter21/onlineStore/public/favicon.ico b/Chapter21/onlineStore/public/favicon.ico deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter21/onlineStore/public/img/game.png b/Chapter21/onlineStore/public/img/game.png deleted file mode 100644 index 85420e8bbc16098bf26b4ee63bde0e91a19d1f2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25896 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 cz>% diff --git a/Chapter21/onlineStore/public/img/safe.png b/Chapter21/onlineStore/public/img/safe.png deleted file mode 100644 index 445942c707af53210931f9f4f99f6d3cb69e5d89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19240 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
w==XB0?3|p=#`o%NsudE(E-U#KS3Snw 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 o>ir+C;RN10sIS0&a;p - - - - - - - - - - - - - - - - - - diff --git a/Chapter21/onlineStore/public/index.php b/Chapter21/onlineStore/public/index.php deleted file mode 100644 index 1d69f3a..0000000 --- a/Chapter21/onlineStore/public/index.php +++ /dev/null @@ -1,55 +0,0 @@ -make(Kernel::class); - -$response = $kernel->handle( - $request = Request::capture() -)->send(); - -$kernel->terminate($request, $response); diff --git a/Chapter21/onlineStore/public/robots.txt b/Chapter21/onlineStore/public/robots.txt deleted file mode 100644 index eb05362..0000000 --- a/Chapter21/onlineStore/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: diff --git a/Chapter21/onlineStore/resources/css/app.css b/Chapter21/onlineStore/resources/css/app.css deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter21/onlineStore/resources/js/app.js b/Chapter21/onlineStore/resources/js/app.js deleted file mode 100644 index 40c55f6..0000000 --- a/Chapter21/onlineStore/resources/js/app.js +++ /dev/null @@ -1 +0,0 @@ -require('./bootstrap'); diff --git a/Chapter21/onlineStore/resources/js/bootstrap.js b/Chapter21/onlineStore/resources/js/bootstrap.js deleted file mode 100644 index dcdc4df..0000000 --- a/Chapter21/onlineStore/resources/js/bootstrap.js +++ /dev/null @@ -1,32 +0,0 @@ -window._ = require('lodash'); - -try { - require('bootstrap'); -} catch (e) {} - -/** - * 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 = require('axios'); - -window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; - -/** - * 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'; - -// window.Pusher = require('pusher-js'); - -// window.Echo = new Echo({ -// broadcaster: 'pusher', -// key: process.env.MIX_PUSHER_APP_KEY, -// cluster: process.env.MIX_PUSHER_APP_CLUSTER, -// forceTLS: true -// }); diff --git a/Chapter21/onlineStore/resources/sass/_variables.scss b/Chapter21/onlineStore/resources/sass/_variables.scss deleted file mode 100644 index 172daaa..0000000 --- a/Chapter21/onlineStore/resources/sass/_variables.scss +++ /dev/null @@ -1,7 +0,0 @@ -// Body -$body-bg: #f8fafc; - -// Typography -$font-family-sans-serif: 'Nunito', sans-serif; -$font-size-base: 0.9rem; -$line-height-base: 1.6; diff --git a/Chapter21/onlineStore/resources/sass/app.scss b/Chapter21/onlineStore/resources/sass/app.scss deleted file mode 100644 index 3193ffa..0000000 --- a/Chapter21/onlineStore/resources/sass/app.scss +++ /dev/null @@ -1,8 +0,0 @@ -// Fonts -@import url('https://fonts.googleapis.com/css?family=Nunito'); - -// Variables -@import 'variables'; - -// Bootstrap -@import '~bootstrap/scss/bootstrap'; diff --git a/Chapter21/onlineStore/resources/views/admin/home/index.blade.php b/Chapter21/onlineStore/resources/views/admin/home/index.blade.php deleted file mode 100644 index a2b4868..0000000 --- a/Chapter21/onlineStore/resources/views/admin/home/index.blade.php +++ /dev/null @@ -1,12 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
-
- Admin Panel - Home Page -
-
- Welcome to the Admin Panel, use the sidebar to navigate between the different options. -
-
-@endsection diff --git a/Chapter21/onlineStore/resources/views/admin/product/edit.blade.php b/Chapter21/onlineStore/resources/views/admin/product/edit.blade.php deleted file mode 100644 index b8e03d8..0000000 --- a/Chapter21/onlineStore/resources/views/admin/product/edit.blade.php +++ /dev/null @@ -1,61 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
-
- Edit Product -
-
- @if($errors->any()) -
    - @foreach($errors->all() as $error) -
  • - {{ $error }}
  • - @endforeach -
- @endif - -
- @csrf - @method('PUT') -
-
-
- -
- -
-
-
-
-
- -
- -
-
-
-
-
-
-
- -
- -
-
-
-
-   -
-
-
- - -
- -
-
-
-@endsection diff --git a/Chapter21/onlineStore/resources/views/admin/product/index.blade.php b/Chapter21/onlineStore/resources/views/admin/product/index.blade.php deleted file mode 100644 index 19fbe4b..0000000 --- a/Chapter21/onlineStore/resources/views/admin/product/index.blade.php +++ /dev/null @@ -1,98 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
-
- Create Products -
-
- @if($errors->any()) -
    - @foreach($errors->all() as $error) -
  • - {{ $error }}
  • - @endforeach -
- @endif - -
- @csrf -
-
-
- -
- -
-
-
-
-
- -
- -
-
-
-
-
-
-
- -
- -
-
-
-
-   -
-
-
- - -
- -
-
-
- -
-
- Manage Products -
-
- - - - - - - - - - - @foreach ($viewData["products"] as $product) - - - - - - - @endforeach - -
IDNameEditDelete
{{ $product->getId() }}{{ $product->getName() }} - - - - -
- @csrf - @method('DELETE') - -
-
-
-
-@endsection diff --git a/Chapter21/onlineStore/resources/views/auth/login.blade.php b/Chapter21/onlineStore/resources/views/auth/login.blade.php deleted file mode 100644 index c7e5ea0..0000000 --- a/Chapter21/onlineStore/resources/views/auth/login.blade.php +++ /dev/null @@ -1,73 +0,0 @@ -@extends('layouts.app') - -@section('content') -
-@endsection diff --git a/Chapter21/onlineStore/resources/views/auth/passwords/confirm.blade.php b/Chapter21/onlineStore/resources/views/auth/passwords/confirm.blade.php deleted file mode 100644 index f8c8e61..0000000 --- a/Chapter21/onlineStore/resources/views/auth/passwords/confirm.blade.php +++ /dev/null @@ -1,49 +0,0 @@ -@extends('layouts.app') - -@section('content') - -@endsection diff --git a/Chapter21/onlineStore/resources/views/auth/passwords/email.blade.php b/Chapter21/onlineStore/resources/views/auth/passwords/email.blade.php deleted file mode 100644 index d1ac783..0000000 --- a/Chapter21/onlineStore/resources/views/auth/passwords/email.blade.php +++ /dev/null @@ -1,47 +0,0 @@ -@extends('layouts.app') - -@section('content') -
-
-
-
-
{{ __('Reset Password') }}
- -
- @if (session('status')) - - @endif - -
- @csrf - -
- - -
- - - @error('email') - - {{ $message }} - - @enderror -
-
- -
-
- -
-
-
-
-
-
-
-
-@endsection diff --git a/Chapter21/onlineStore/resources/views/auth/passwords/reset.blade.php b/Chapter21/onlineStore/resources/views/auth/passwords/reset.blade.php deleted file mode 100644 index dccf6c6..0000000 --- a/Chapter21/onlineStore/resources/views/auth/passwords/reset.blade.php +++ /dev/null @@ -1,65 +0,0 @@ -@extends('layouts.app') - -@section('content') -
-
-
-
-
{{ __('Reset Password') }}
- -
-
- @csrf - - - -
- - -
- - - @error('email') - - {{ $message }} - - @enderror -
-
- -
- - -
- - - @error('password') - - {{ $message }} - - @enderror -
-
- -
- - -
- -
-
- -
-
- -
-
-
-
-
-
-
-
-@endsection diff --git a/Chapter21/onlineStore/resources/views/auth/register.blade.php b/Chapter21/onlineStore/resources/views/auth/register.blade.php deleted file mode 100644 index e001a0b..0000000 --- a/Chapter21/onlineStore/resources/views/auth/register.blade.php +++ /dev/null @@ -1,77 +0,0 @@ -@extends('layouts.app') - -@section('content') -
-
-
-
-
{{ __('Register') }}
- -
-
- @csrf - -
- - -
- - - @error('name') - - {{ $message }} - - @enderror -
-
- -
- - -
- - - @error('email') - - {{ $message }} - - @enderror -
-
- -
- - -
- - - @error('password') - - {{ $message }} - - @enderror -
-
- -
- - -
- -
-
- -
-
- -
-
-
-
-
-
-
-
-@endsection diff --git a/Chapter21/onlineStore/resources/views/auth/verify.blade.php b/Chapter21/onlineStore/resources/views/auth/verify.blade.php deleted file mode 100644 index 9f8c1bc..0000000 --- a/Chapter21/onlineStore/resources/views/auth/verify.blade.php +++ /dev/null @@ -1,28 +0,0 @@ -@extends('layouts.app') - -@section('content') -
-
-
-
-
{{ __('Verify Your Email Address') }}
- -
- @if (session('resent')) - - @endif - - {{ __('Before proceeding, please check your email for a verification link.') }} - {{ __('If you did not receive the email') }}, -
- @csrf - . -
-
-
-
-
-
-@endsection diff --git a/Chapter21/onlineStore/resources/views/home.blade.php b/Chapter21/onlineStore/resources/views/home.blade.php deleted file mode 100644 index 1f34466..0000000 --- a/Chapter21/onlineStore/resources/views/home.blade.php +++ /dev/null @@ -1,23 +0,0 @@ -@extends('layouts.app') - -@section('content') -
-
-
-
-
{{ __('Dashboard') }}
- -
- @if (session('status')) - - @endif - - {{ __('You are logged in!') }} -
-
-
-
-
-@endsection diff --git a/Chapter21/onlineStore/resources/views/home/about.blade.php b/Chapter21/onlineStore/resources/views/home/about.blade.php deleted file mode 100644 index f79abf3..0000000 --- a/Chapter21/onlineStore/resources/views/home/about.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
-
-
-

{{ $viewData["description"] }}

-
-
-

{{ $viewData["author"] }}

-
-
-
-@endsection diff --git a/Chapter21/onlineStore/resources/views/home/index.blade.php b/Chapter21/onlineStore/resources/views/home/index.blade.php deleted file mode 100644 index 1affb20..0000000 --- a/Chapter21/onlineStore/resources/views/home/index.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('content') -
-
- -
-
- -
-
- -
-
-@endsection diff --git a/Chapter21/onlineStore/resources/views/layouts/admin.blade.php b/Chapter21/onlineStore/resources/views/layouts/admin.blade.php deleted file mode 100644 index 4aff3f8..0000000 --- a/Chapter21/onlineStore/resources/views/layouts/admin.blade.php +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - @yield('title', 'Admin - Online Store') - - - -
- - - -
- - -
- @yield('content') -
-
-
- - - - - - - - - diff --git a/Chapter21/onlineStore/resources/views/layouts/app.blade.php b/Chapter21/onlineStore/resources/views/layouts/app.blade.php deleted file mode 100644 index 81308e6..0000000 --- a/Chapter21/onlineStore/resources/views/layouts/app.blade.php +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - @yield('title', 'Online Store') - - - - - -
-
-

@yield('subtitle', 'A Laravel Online Store')

-
-
- - -
- @yield('content') -
- - - - - - - diff --git a/Chapter21/onlineStore/resources/views/product/index.blade.php b/Chapter21/onlineStore/resources/views/product/index.blade.php deleted file mode 100644 index 64c3e18..0000000 --- a/Chapter21/onlineStore/resources/views/product/index.blade.php +++ /dev/null @@ -1,18 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
- @foreach ($viewData["products"] as $product) - - @endforeach -
-@endsection diff --git a/Chapter21/onlineStore/resources/views/product/show.blade.php b/Chapter21/onlineStore/resources/views/product/show.blade.php deleted file mode 100644 index be37a01..0000000 --- a/Chapter21/onlineStore/resources/views/product/show.blade.php +++ /dev/null @@ -1,21 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
-
-
- getImage()) }}" class="img-fluid rounded-start"> -
-
-
-
- {{ $viewData["product"]->getName() }} (${{ $viewData["product"]->getPrice() }}) -
-

{{ $viewData["product"]->getDescription() }}

-

Add to Cart

-
-
-
-
-@endsection diff --git a/Chapter21/onlineStore/resources/views/welcome.blade.php b/Chapter21/onlineStore/resources/views/welcome.blade.php deleted file mode 100644 index c587c72..0000000 --- a/Chapter21/onlineStore/resources/views/welcome.blade.php +++ /dev/null @@ -1,7 +0,0 @@ -@extends('layouts.app') -@section('title', 'Home Page - Online Store') -@section('content') -
- Welcome to the application -
-@endsection \ No newline at end of file diff --git a/Chapter21/onlineStore/routes/api.php b/Chapter21/onlineStore/routes/api.php deleted file mode 100644 index eb6fa48..0000000 --- a/Chapter21/onlineStore/routes/api.php +++ /dev/null @@ -1,19 +0,0 @@ -get('/user', function (Request $request) { - return $request->user(); -}); diff --git a/Chapter21/onlineStore/routes/channels.php b/Chapter21/onlineStore/routes/channels.php deleted file mode 100644 index 5d451e1..0000000 --- a/Chapter21/onlineStore/routes/channels.php +++ /dev/null @@ -1,18 +0,0 @@ -id === (int) $id; -}); diff --git a/Chapter21/onlineStore/routes/console.php b/Chapter21/onlineStore/routes/console.php deleted file mode 100644 index e05f4c9..0000000 --- a/Chapter21/onlineStore/routes/console.php +++ /dev/null @@ -1,19 +0,0 @@ -comment(Inspiring::quote()); -})->purpose('Display an inspiring quote'); diff --git a/Chapter21/onlineStore/routes/web.php b/Chapter21/onlineStore/routes/web.php deleted file mode 100644 index 0ee4969..0000000 --- a/Chapter21/onlineStore/routes/web.php +++ /dev/null @@ -1,27 +0,0 @@ -name("home.index"); -Route::get('/about', 'App\Http\Controllers\HomeController@about')->name("home.about"); -Route::get('/products', 'App\Http\Controllers\ProductController@index')->name("product.index"); -Route::get('/products/{id}', 'App\Http\Controllers\ProductController@show')->name("product.show"); -Route::get('/admin', 'App\Http\Controllers\Admin\AdminHomeController@index')->name("admin.home.index"); -Route::get('/admin/products', 'App\Http\Controllers\Admin\AdminProductController@index')->name("admin.product.index"); -Route::post('/admin/products/store', 'App\Http\Controllers\Admin\AdminProductController@store')->name("admin.product.store"); -Route::delete('/admin/products/{id}/delete', 'App\Http\Controllers\Admin\AdminProductController@delete')->name("admin.product.delete"); -Route::get('/admin/products/{id}/edit', 'App\Http\Controllers\Admin\AdminProductController@edit')->name("admin.product.edit"); -Route::put('/admin/products/{id}/update', 'App\Http\Controllers\Admin\AdminProductController@update')->name("admin.product.update"); - -Auth::routes(); diff --git a/Chapter21/onlineStore/storage/app/.gitignore b/Chapter21/onlineStore/storage/app/.gitignore deleted file mode 100644 index 8f4803c..0000000 --- a/Chapter21/onlineStore/storage/app/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!public/ -!.gitignore diff --git a/Chapter21/onlineStore/storage/app/public/.gitignore b/Chapter21/onlineStore/storage/app/public/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter21/onlineStore/storage/app/public/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter21/onlineStore/storage/framework/.gitignore b/Chapter21/onlineStore/storage/framework/.gitignore deleted file mode 100644 index 05c4471..0000000 --- a/Chapter21/onlineStore/storage/framework/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -compiled.php -config.php -down -events.scanned.php -maintenance.php -routes.php -routes.scanned.php -schedule-* -services.json diff --git a/Chapter21/onlineStore/storage/framework/cache/.gitignore b/Chapter21/onlineStore/storage/framework/cache/.gitignore deleted file mode 100644 index 01e4a6c..0000000 --- a/Chapter21/onlineStore/storage/framework/cache/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!data/ -!.gitignore diff --git a/Chapter21/onlineStore/storage/framework/cache/data/.gitignore b/Chapter21/onlineStore/storage/framework/cache/data/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter21/onlineStore/storage/framework/cache/data/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter21/onlineStore/storage/framework/sessions/.gitignore b/Chapter21/onlineStore/storage/framework/sessions/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter21/onlineStore/storage/framework/sessions/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter21/onlineStore/storage/framework/testing/.gitignore b/Chapter21/onlineStore/storage/framework/testing/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter21/onlineStore/storage/framework/testing/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter21/onlineStore/storage/framework/views/.gitignore b/Chapter21/onlineStore/storage/framework/views/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter21/onlineStore/storage/framework/views/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter21/onlineStore/storage/logs/.gitignore b/Chapter21/onlineStore/storage/logs/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter21/onlineStore/storage/logs/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter21/onlineStore/tests/CreatesApplication.php b/Chapter21/onlineStore/tests/CreatesApplication.php deleted file mode 100644 index 547152f..0000000 --- a/Chapter21/onlineStore/tests/CreatesApplication.php +++ /dev/null @@ -1,22 +0,0 @@ -make(Kernel::class)->bootstrap(); - - return $app; - } -} diff --git a/Chapter21/onlineStore/tests/Feature/ExampleTest.php b/Chapter21/onlineStore/tests/Feature/ExampleTest.php deleted file mode 100644 index 78ccc21..0000000 --- a/Chapter21/onlineStore/tests/Feature/ExampleTest.php +++ /dev/null @@ -1,21 +0,0 @@ -get('/'); - - $response->assertStatus(200); - } -} diff --git a/Chapter21/onlineStore/tests/TestCase.php b/Chapter21/onlineStore/tests/TestCase.php deleted file mode 100644 index 2932d4a..0000000 --- a/Chapter21/onlineStore/tests/TestCase.php +++ /dev/null @@ -1,10 +0,0 @@ -assertTrue(true); - } -} diff --git a/Chapter21/onlineStore/webpack.mix.js b/Chapter21/onlineStore/webpack.mix.js deleted file mode 100644 index 1a2a958..0000000 --- a/Chapter21/onlineStore/webpack.mix.js +++ /dev/null @@ -1,16 +0,0 @@ -const mix = require('laravel-mix'); - -/* - |-------------------------------------------------------------------------- - | Mix Asset Management - |-------------------------------------------------------------------------- - | - | Mix provides a clean, fluent API for defining some Webpack build steps - | for your Laravel application. By default, we are compiling the Sass - | file for the application as well as bundling up all the JS files. - | - */ - -mix.js('resources/js/app.js', 'public/js') - .sass('resources/sass/app.scss', 'public/css') - .sourceMaps(); diff --git a/Chapter22/onlineStore/.editorconfig b/Chapter22/onlineStore/.editorconfig deleted file mode 100644 index 1671c9b..0000000 --- a/Chapter22/onlineStore/.editorconfig +++ /dev/null @@ -1,18 +0,0 @@ -root = true - -[*] -charset = utf-8 -end_of_line = lf -insert_final_newline = true -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true - -[*.md] -trim_trailing_whitespace = false - -[*.{yml,yaml}] -indent_size = 2 - -[docker-compose.yml] -indent_size = 4 diff --git a/Chapter22/onlineStore/.env.example b/Chapter22/onlineStore/.env.example deleted file mode 100644 index 8510237..0000000 --- a/Chapter22/onlineStore/.env.example +++ /dev/null @@ -1,52 +0,0 @@ -APP_NAME=Laravel -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=laravel -DB_USERNAME=root -DB_PASSWORD= - -BROADCAST_DRIVER=log -CACHE_DRIVER=file -FILESYSTEM_DISK=local -QUEUE_CONNECTION=sync -SESSION_DRIVER=file -SESSION_LIFETIME=120 - -MEMCACHED_HOST=127.0.0.1 - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -MAIL_MAILER=smtp -MAIL_HOST=mailhog -MAIL_PORT=1025 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS=null -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_APP_CLUSTER=mt1 - -MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/Chapter22/onlineStore/.gitattributes b/Chapter22/onlineStore/.gitattributes deleted file mode 100644 index 510d996..0000000 --- a/Chapter22/onlineStore/.gitattributes +++ /dev/null @@ -1,10 +0,0 @@ -* text=auto - -*.blade.php diff=html -*.css diff=css -*.html diff=html -*.md diff=markdown -*.php diff=php - -/.github export-ignore -CHANGELOG.md export-ignore diff --git a/Chapter22/onlineStore/.gitignore b/Chapter22/onlineStore/.gitignore deleted file mode 100644 index eb003b0..0000000 --- a/Chapter22/onlineStore/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -/node_modules -/public/hot -/public/storage -/storage/*.key -/vendor -.env -.env.backup -.phpunit.result.cache -docker-compose.override.yml -Homestead.json -Homestead.yaml -npm-debug.log -yarn-error.log -/.idea -/.vscode diff --git a/Chapter22/onlineStore/.styleci.yml b/Chapter22/onlineStore/.styleci.yml deleted file mode 100644 index 679a631..0000000 --- a/Chapter22/onlineStore/.styleci.yml +++ /dev/null @@ -1,13 +0,0 @@ -php: - preset: laravel - version: 8 - disabled: - - no_unused_imports - finder: - not-name: - - index.php -js: - finder: - not-name: - - webpack.mix.js -css: true diff --git a/Chapter22/onlineStore/README.md b/Chapter22/onlineStore/README.md deleted file mode 100644 index f171eca..0000000 --- a/Chapter22/onlineStore/README.md +++ /dev/null @@ -1,64 +0,0 @@ -

- -

-Build Status -Total Downloads -Latest Stable Version -License -

- -## About Laravel - -Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as: - -- [Simple, fast routing engine](https://laravel.com/docs/routing). -- [Powerful dependency injection container](https://laravel.com/docs/container). -- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage. -- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent). -- Database agnostic [schema migrations](https://laravel.com/docs/migrations). -- [Robust background job processing](https://laravel.com/docs/queues). -- [Real-time event broadcasting](https://laravel.com/docs/broadcasting). - -Laravel is accessible, powerful, and provides tools required for large, robust applications. - -## Learning Laravel - -Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework. - -If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 2000 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library. - -## Laravel Sponsors - -We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell). - -### Premium Partners - -- **[Vehikl](https://vehikl.com/)** -- **[Tighten Co.](https://tighten.co)** -- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** -- **[64 Robots](https://64robots.com)** -- **[Cubet Techno Labs](https://cubettech.com)** -- **[Cyber-Duck](https://cyber-duck.co.uk)** -- **[Many](https://www.many.co.uk)** -- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)** -- **[DevSquad](https://devsquad.com)** -- **[Curotec](https://www.curotec.com/services/technologies/laravel/)** -- **[OP.GG](https://op.gg)** -- **[WebReinvent](https://webreinvent.com/?utm_source=laravel&utm_medium=github&utm_campaign=patreon-sponsors)** -- **[Lendio](https://lendio.com)** - -## Contributing - -Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions). - -## Code of Conduct - -In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). - -## Security Vulnerabilities - -If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed. - -## License - -The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). diff --git a/Chapter22/onlineStore/app/Console/Kernel.php b/Chapter22/onlineStore/app/Console/Kernel.php deleted file mode 100644 index d8bc1d2..0000000 --- a/Chapter22/onlineStore/app/Console/Kernel.php +++ /dev/null @@ -1,32 +0,0 @@ -command('inspire')->hourly(); - } - - /** - * Register the commands for the application. - * - * @return void - */ - protected function commands() - { - $this->load(__DIR__.'/Commands'); - - require base_path('routes/console.php'); - } -} diff --git a/Chapter22/onlineStore/app/Exceptions/Handler.php b/Chapter22/onlineStore/app/Exceptions/Handler.php deleted file mode 100644 index 8e7fbd1..0000000 --- a/Chapter22/onlineStore/app/Exceptions/Handler.php +++ /dev/null @@ -1,41 +0,0 @@ -> - */ - protected $dontReport = [ - // - ]; - - /** - * A list of the inputs that are never flashed for validation exceptions. - * - * @var array - */ - protected $dontFlash = [ - 'current_password', - 'password', - 'password_confirmation', - ]; - - /** - * Register the exception handling callbacks for the application. - * - * @return void - */ - public function register() - { - $this->reportable(function (Throwable $e) { - // - }); - } -} diff --git a/Chapter22/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php b/Chapter22/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php deleted file mode 100644 index cd78cb3..0000000 --- a/Chapter22/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php +++ /dev/null @@ -1,16 +0,0 @@ -with("viewData", $viewData); - } -} diff --git a/Chapter22/onlineStore/app/Http/Controllers/Admin/AdminProductController.php b/Chapter22/onlineStore/app/Http/Controllers/Admin/AdminProductController.php deleted file mode 100644 index d1c6c52..0000000 --- a/Chapter22/onlineStore/app/Http/Controllers/Admin/AdminProductController.php +++ /dev/null @@ -1,79 +0,0 @@ -with("viewData", $viewData); - } - - public function store(Request $request) - { - Product::validate($request); - - $newProduct = new Product(); - $newProduct->setName($request->input('name')); - $newProduct->setDescription($request->input('description')); - $newProduct->setPrice($request->input('price')); - $newProduct->setImage("game.png"); - $newProduct->save(); - - if ($request->hasFile('image')) { - $imageName = $newProduct->getId().".".$request->file('image')->extension(); - Storage::disk('public')->put( - $imageName, - file_get_contents($request->file('image')->getRealPath()) - ); - $newProduct->setImage($imageName); - $newProduct->save(); - } - - return back(); - } - - public function delete($id) - { - Product::destroy($id); - return back(); - } - - public function edit($id) - { - $viewData = []; - $viewData["title"] = "Admin Page - Edit Product - Online Store"; - $viewData["product"] = Product::findOrFail($id); - return view('admin.product.edit')->with("viewData", $viewData); - } - - public function update(Request $request, $id) - { - Product::validate($request); - - $product = Product::findOrFail($id); - $product->setName($request->input('name')); - $product->setDescription($request->input('description')); - $product->setPrice($request->input('price')); - - if ($request->hasFile('image')) { - $imageName = $product->getId().".".$request->file('image')->extension(); - Storage::disk('public')->put( - $imageName, - file_get_contents($request->file('image')->getRealPath()) - ); - $product->setImage($imageName); - } - - $product->save(); - return redirect()->route('admin.product.index'); - } -} diff --git a/Chapter22/onlineStore/app/Http/Controllers/Auth/ConfirmPasswordController.php b/Chapter22/onlineStore/app/Http/Controllers/Auth/ConfirmPasswordController.php deleted file mode 100644 index 138c1f0..0000000 --- a/Chapter22/onlineStore/app/Http/Controllers/Auth/ConfirmPasswordController.php +++ /dev/null @@ -1,40 +0,0 @@ -middleware('auth'); - } -} diff --git a/Chapter22/onlineStore/app/Http/Controllers/Auth/ForgotPasswordController.php b/Chapter22/onlineStore/app/Http/Controllers/Auth/ForgotPasswordController.php deleted file mode 100644 index 465c39c..0000000 --- a/Chapter22/onlineStore/app/Http/Controllers/Auth/ForgotPasswordController.php +++ /dev/null @@ -1,22 +0,0 @@ -middleware('guest')->except('logout'); - } -} diff --git a/Chapter22/onlineStore/app/Http/Controllers/Auth/RegisterController.php b/Chapter22/onlineStore/app/Http/Controllers/Auth/RegisterController.php deleted file mode 100644 index 87e3a82..0000000 --- a/Chapter22/onlineStore/app/Http/Controllers/Auth/RegisterController.php +++ /dev/null @@ -1,74 +0,0 @@ -middleware('guest'); - } - - /** - * Get a validator for an incoming registration request. - * - * @param array $data - * @return \Illuminate\Contracts\Validation\Validator - */ - protected function validator(array $data) - { - return Validator::make($data, [ - 'name' => ['required', 'string', 'max:255'], - 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], - 'password' => ['required', 'string', 'min:8', 'confirmed'], - ]); - } - - /** - * Create a new user instance after a valid registration. - * - * @param array $data - * @return \App\Models\User - */ - protected function create(array $data) - { - return User::create([ - 'name' => $data['name'], - 'email' => $data['email'], - 'password' => Hash::make($data['password']), - 'balance' => 5000, - ]); - } -} diff --git a/Chapter22/onlineStore/app/Http/Controllers/Auth/ResetPasswordController.php b/Chapter22/onlineStore/app/Http/Controllers/Auth/ResetPasswordController.php deleted file mode 100644 index b1726a3..0000000 --- a/Chapter22/onlineStore/app/Http/Controllers/Auth/ResetPasswordController.php +++ /dev/null @@ -1,30 +0,0 @@ -middleware('auth'); - $this->middleware('signed')->only('verify'); - $this->middleware('throttle:6,1')->only('verify', 'resend'); - } -} diff --git a/Chapter22/onlineStore/app/Http/Controllers/Controller.php b/Chapter22/onlineStore/app/Http/Controllers/Controller.php deleted file mode 100644 index a0a2a8a..0000000 --- a/Chapter22/onlineStore/app/Http/Controllers/Controller.php +++ /dev/null @@ -1,13 +0,0 @@ -with("viewData", $viewData); - } - - public function about() - { - $viewData = []; - $viewData["title"] = "About us - Online Store"; - $viewData["subtitle"] = "About us"; - $viewData["description"] = "This is an about page ..."; - $viewData["author"] = "Developed by: Your Name"; - return view('home.about')->with("viewData", $viewData); - } -} diff --git a/Chapter22/onlineStore/app/Http/Controllers/ProductController.php b/Chapter22/onlineStore/app/Http/Controllers/ProductController.php deleted file mode 100644 index d27a3a3..0000000 --- a/Chapter22/onlineStore/app/Http/Controllers/ProductController.php +++ /dev/null @@ -1,29 +0,0 @@ -with("viewData", $viewData); - } - - public function show($id) - { - $viewData = []; - $product = Product::findOrFail($id); - $viewData["title"] = $product->getName()." - Online Store"; - $viewData["subtitle"] = $product->getName()." - Product information"; - $viewData["product"] = $product; - return view('product.show')->with("viewData", $viewData); - } -} diff --git a/Chapter22/onlineStore/app/Http/Kernel.php b/Chapter22/onlineStore/app/Http/Kernel.php deleted file mode 100644 index d3722c2..0000000 --- a/Chapter22/onlineStore/app/Http/Kernel.php +++ /dev/null @@ -1,67 +0,0 @@ - - */ - protected $middleware = [ - // \App\Http\Middleware\TrustHosts::class, - \App\Http\Middleware\TrustProxies::class, - \Fruitcake\Cors\HandleCors::class, - \App\Http\Middleware\PreventRequestsDuringMaintenance::class, - \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, - \App\Http\Middleware\TrimStrings::class, - \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, - ]; - - /** - * The application's route middleware groups. - * - * @var array> - */ - protected $middlewareGroups = [ - 'web' => [ - \App\Http\Middleware\EncryptCookies::class, - \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, - \Illuminate\Session\Middleware\StartSession::class, - // \Illuminate\Session\Middleware\AuthenticateSession::class, - \Illuminate\View\Middleware\ShareErrorsFromSession::class, - \App\Http\Middleware\VerifyCsrfToken::class, - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - - 'api' => [ - // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, - 'throttle:api', - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - ]; - - /** - * The application's route middleware. - * - * These middleware may be assigned to groups or used individually. - * - * @var array - */ - protected $routeMiddleware = [ - 'auth' => \App\Http\Middleware\Authenticate::class, - 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::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, - 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, - 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, - 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, - ]; -} diff --git a/Chapter22/onlineStore/app/Http/Middleware/Authenticate.php b/Chapter22/onlineStore/app/Http/Middleware/Authenticate.php deleted file mode 100644 index 704089a..0000000 --- a/Chapter22/onlineStore/app/Http/Middleware/Authenticate.php +++ /dev/null @@ -1,21 +0,0 @@ -expectsJson()) { - return route('login'); - } - } -} diff --git a/Chapter22/onlineStore/app/Http/Middleware/EncryptCookies.php b/Chapter22/onlineStore/app/Http/Middleware/EncryptCookies.php deleted file mode 100644 index 867695b..0000000 --- a/Chapter22/onlineStore/app/Http/Middleware/EncryptCookies.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter22/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/Chapter22/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php deleted file mode 100644 index 74cbd9a..0000000 --- a/Chapter22/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter22/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php b/Chapter22/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php deleted file mode 100644 index a2813a0..0000000 --- a/Chapter22/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php +++ /dev/null @@ -1,32 +0,0 @@ -check()) { - return redirect(RouteServiceProvider::HOME); - } - } - - return $next($request); - } -} diff --git a/Chapter22/onlineStore/app/Http/Middleware/TrimStrings.php b/Chapter22/onlineStore/app/Http/Middleware/TrimStrings.php deleted file mode 100644 index 88cadca..0000000 --- a/Chapter22/onlineStore/app/Http/Middleware/TrimStrings.php +++ /dev/null @@ -1,19 +0,0 @@ - - */ - protected $except = [ - 'current_password', - 'password', - 'password_confirmation', - ]; -} diff --git a/Chapter22/onlineStore/app/Http/Middleware/TrustHosts.php b/Chapter22/onlineStore/app/Http/Middleware/TrustHosts.php deleted file mode 100644 index 7186414..0000000 --- a/Chapter22/onlineStore/app/Http/Middleware/TrustHosts.php +++ /dev/null @@ -1,20 +0,0 @@ - - */ - public function hosts() - { - return [ - $this->allSubdomainsOfApplicationUrl(), - ]; - } -} diff --git a/Chapter22/onlineStore/app/Http/Middleware/TrustProxies.php b/Chapter22/onlineStore/app/Http/Middleware/TrustProxies.php deleted file mode 100644 index 3391630..0000000 --- a/Chapter22/onlineStore/app/Http/Middleware/TrustProxies.php +++ /dev/null @@ -1,28 +0,0 @@ -|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/Chapter22/onlineStore/app/Http/Middleware/VerifyCsrfToken.php b/Chapter22/onlineStore/app/Http/Middleware/VerifyCsrfToken.php deleted file mode 100644 index 9e86521..0000000 --- a/Chapter22/onlineStore/app/Http/Middleware/VerifyCsrfToken.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter22/onlineStore/app/Models/Product.php b/Chapter22/onlineStore/app/Models/Product.php deleted file mode 100644 index b8f58f6..0000000 --- a/Chapter22/onlineStore/app/Models/Product.php +++ /dev/null @@ -1,99 +0,0 @@ -attributes['id'] - int - contains the product primary key (id) - * $this->attributes['name'] - string - contains the product name - * $this->attributes['description'] - string - contains the product description - * $this->attributes['image'] - string - contains the product image - * $this->attributes['price'] - int - contains the product price - * $this->attributes['created_at'] - timestamp - contains the product creation date - * $this->attributes['updated_at'] - timestamp - contains the product update date - */ - - public static function validate($request) - { - $request->validate([ - "name" => "required|max:255", - "description" => "required", - "price" => "required|numeric|gt:0", - 'image' => 'image', - ]); - } - - public function getId() - { - return $this->attributes['id']; - } - - public function setId($id) - { - $this->attributes['id'] = $id; - } - - public function getName() - { - return $this->attributes['name']; - } - - public function setName($name) - { - $this->attributes['name'] = $name; - } - - public function getDescription() - { - return $this->attributes['description']; - } - - public function setDescription($description) - { - $this->attributes['description'] = $description; - } - - public function getImage() - { - return $this->attributes['image']; - } - - public function setImage($image) - { - $this->attributes['image'] = $image; - } - - public function getPrice() - { - return $this->attributes['price']; - } - - public function setPrice($price) - { - $this->attributes['price'] = $price; - } - - public function getCreatedAt() - { - return $this->attributes['created_at']; - } - - public function setCreatedAt($createdAt) - { - $this->attributes['created_at'] = $createdAt; - } - - public function getUpdatedAt() - { - return $this->attributes['updated_at']; - } - - public function setUpdatedAt($updatedAt) - { - $this->attributes['updated_at'] = $updatedAt; - } -} diff --git a/Chapter22/onlineStore/app/Models/User.php b/Chapter22/onlineStore/app/Models/User.php deleted file mode 100644 index 0749c5a..0000000 --- a/Chapter22/onlineStore/app/Models/User.php +++ /dev/null @@ -1,139 +0,0 @@ -attributes['id'] - int - contains the user primary key (id) - * $this->attributes['name'] - string - contains the user name - * $this->attributes['email'] - string - contains the user email - * $this->attributes['email_verified_at'] - timestamp - contains the user email verification date - * $this->attributes['password'] - string - contains the user password - * $this->attributes['remember_token'] - string - contains the user password - * $this->attributes['role'] - string - contains the user role (client or admin) - * $this->attributes['balance'] - int - contains the user balance - * $this->attributes['created_at'] - timestamp - contains the user creation date - * $this->attributes['updated_at'] - timestamp - contains the user update date - */ - - /** - * The attributes that are mass assignable. - * - * @var array - */ - protected $fillable = [ - 'name', - 'email', - 'password', - 'balance', - ]; - - /** - * 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', - ]; - - public function getId() - { - return $this->attributes['id']; - } - - public function setId($id) - { - $this->attributes['id'] = $id; - } - - public function getName() - { - return $this->attributes['name']; - } - - public function setName($name) - { - $this->attributes['name'] = $name; - } - - public function getEmail() - { - return $this->attributes['email']; - } - - public function setEmail($email) - { - $this->attributes['email'] = $email; - } - - public function getPassword() - { - return $this->attributes['password']; - } - - public function setPassword($password) - { - $this->attributes['password'] = $password; - } - - public function getRole() - { - return $this->attributes['role']; - } - - public function setRole($role) - { - $this->attributes['role'] = $role; - } - - public function getBalance() - { - return $this->attributes['balance']; - } - - public function setBalance($balance) - { - $this->attributes['balance'] = $balance; - } - - public function getCreatedAt() - { - return $this->attributes['created_at']; - } - - public function setCreatedAt($createdAt) - { - $this->attributes['created_at'] = $createdAt; - } - - public function getUpdatedAt() - { - return $this->attributes['updated_at']; - } - - public function setUpdatedAt($updatedAt) - { - $this->attributes['updated_at'] = $updatedAt; - } -} diff --git a/Chapter22/onlineStore/app/Providers/AppServiceProvider.php b/Chapter22/onlineStore/app/Providers/AppServiceProvider.php deleted file mode 100644 index ee8ca5b..0000000 --- a/Chapter22/onlineStore/app/Providers/AppServiceProvider.php +++ /dev/null @@ -1,28 +0,0 @@ - - */ - protected $policies = [ - // 'App\Models\Model' => 'App\Policies\ModelPolicy', - ]; - - /** - * Register any authentication / authorization services. - * - * @return void - */ - public function boot() - { - $this->registerPolicies(); - - // - } -} diff --git a/Chapter22/onlineStore/app/Providers/BroadcastServiceProvider.php b/Chapter22/onlineStore/app/Providers/BroadcastServiceProvider.php deleted file mode 100644 index 395c518..0000000 --- a/Chapter22/onlineStore/app/Providers/BroadcastServiceProvider.php +++ /dev/null @@ -1,21 +0,0 @@ -> - */ - protected $listen = [ - Registered::class => [ - SendEmailVerificationNotification::class, - ], - ]; - - /** - * Register any events for your application. - * - * @return void - */ - public function boot() - { - // - } -} diff --git a/Chapter22/onlineStore/app/Providers/RouteServiceProvider.php b/Chapter22/onlineStore/app/Providers/RouteServiceProvider.php deleted file mode 100644 index fb766eb..0000000 --- a/Chapter22/onlineStore/app/Providers/RouteServiceProvider.php +++ /dev/null @@ -1,63 +0,0 @@ -configureRateLimiting(); - - $this->routes(function () { - Route::prefix('api') - ->middleware('api') - ->namespace($this->namespace) - ->group(base_path('routes/api.php')); - - Route::middleware('web') - ->namespace($this->namespace) - ->group(base_path('routes/web.php')); - }); - } - - /** - * Configure the rate limiters for the application. - * - * @return void - */ - protected function configureRateLimiting() - { - RateLimiter::for('api', function (Request $request) { - return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); - }); - } -} diff --git a/Chapter22/onlineStore/artisan b/Chapter22/onlineStore/artisan deleted file mode 100644 index 67a3329..0000000 --- a/Chapter22/onlineStore/artisan +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env php -make(Illuminate\Contracts\Console\Kernel::class); - -$status = $kernel->handle( - $input = new Symfony\Component\Console\Input\ArgvInput, - new Symfony\Component\Console\Output\ConsoleOutput -); - -/* -|-------------------------------------------------------------------------- -| Shutdown The Application -|-------------------------------------------------------------------------- -| -| Once Artisan has finished running, we will fire off the shutdown events -| so that any final work may be done by the application before we shut -| down the process. This is the last thing to happen to the request. -| -*/ - -$kernel->terminate($input, $status); - -exit($status); diff --git a/Chapter22/onlineStore/bootstrap/app.php b/Chapter22/onlineStore/bootstrap/app.php deleted file mode 100644 index 037e17d..0000000 --- a/Chapter22/onlineStore/bootstrap/app.php +++ /dev/null @@ -1,55 +0,0 @@ -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/Chapter22/onlineStore/bootstrap/cache/.gitignore b/Chapter22/onlineStore/bootstrap/cache/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter22/onlineStore/bootstrap/cache/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter22/onlineStore/composer.json b/Chapter22/onlineStore/composer.json deleted file mode 100644 index a9459b5..0000000 --- a/Chapter22/onlineStore/composer.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "name": "laravel/laravel", - "type": "project", - "description": "The Laravel Framework.", - "keywords": ["framework", "laravel"], - "license": "MIT", - "require": { - "php": "^8.0", - "fruitcake/laravel-cors": "^2.0.5", - "guzzlehttp/guzzle": "^7.2", - "laravel/framework": "^9.0", - "laravel/sanctum": "^2.14", - "laravel/tinker": "^2.7", - "laravel/ui": "^3.4" - }, - "require-dev": { - "fakerphp/faker": "^1.9.1", - "laravel/sail": "^1.0.1", - "mockery/mockery": "^1.4.4", - "nunomaduro/collision": "^6.1", - "phpunit/phpunit": "^9.5.10", - "spatie/laravel-ignition": "^1.0", - "squizlabs/php_codesniffer": "^3.6" - }, - "autoload": { - "psr-4": { - "App\\": "app/", - "Database\\Factories\\": "database/factories/", - "Database\\Seeders\\": "database/seeders/" - } - }, - "autoload-dev": { - "psr-4": { - "Tests\\": "tests/" - } - }, - "scripts": { - "post-autoload-dump": [ - "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", - "@php artisan package:discover --ansi" - ], - "post-update-cmd": [ - "@php artisan vendor:publish --tag=laravel-assets --ansi --force" - ], - "post-root-package-install": [ - "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" - ], - "post-create-project-cmd": [ - "@php artisan key:generate --ansi" - ] - }, - "extra": { - "laravel": { - "dont-discover": [] - } - }, - "config": { - "optimize-autoloader": true, - "preferred-install": "dist", - "sort-packages": true - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/Chapter22/onlineStore/composer.lock b/Chapter22/onlineStore/composer.lock deleted file mode 100644 index 78c86f1..0000000 --- a/Chapter22/onlineStore/composer.lock +++ /dev/null @@ -1,7921 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "d299b51f0f07ec600b4949240f4664af", - "packages": [ - { - "name": "asm89/stack-cors", - "version": "v2.1.1", - "source": { - "type": "git", - "url": "https://github.com/asm89/stack-cors.git", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4|^5|^6" - }, - "require-dev": { - "phpunit/phpunit": "^7|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "psr-4": { - "Asm89\\Stack\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alexander", - "email": "iam.asm89@gmail.com" - } - ], - "description": "Cross-origin resource sharing library and stack middleware", - "homepage": "https://github.com/asm89/stack-cors", - "keywords": [ - "cors", - "stack" - ], - "support": { - "issues": "https://github.com/asm89/stack-cors/issues", - "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" - }, - "time": "2022-01-18T09:12:03+00:00" - }, - { - "name": "brick/math", - "version": "0.9.3", - "source": { - "type": "git", - "url": "https://github.com/brick/math.git", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", - "vimeo/psalm": "4.9.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Brick\\Math\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Arbitrary-precision arithmetic library", - "keywords": [ - "Arbitrary-precision", - "BigInteger", - "BigRational", - "arithmetic", - "bigdecimal", - "bignum", - "brick", - "math" - ], - "support": { - "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.9.3" - }, - "funding": [ - { - "url": "https://github.com/BenMorel", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/brick/math", - "type": "tidelift" - } - ], - "time": "2021-08-15T20:50:18+00:00" - }, - { - "name": "dflydev/dot-access-data", - "version": "v3.0.1", - "source": { - "type": "git", - "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c", - "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": "^3.14" - }, - "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.1" - }, - "time": "2021-08-13T13:06:58+00:00" - }, - { - "name": "doctrine/inflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "vimeo/psalm": "^4.10" - }, - "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.4" - }, - "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": "2021-10-22T20:16:43+00:00" - }, - { - "name": "doctrine/lexer", - "version": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" - } - }, - "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/1.2.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%2Flexer", - "type": "tidelift" - } - ], - "time": "2022-01-12T08:27:12+00:00" - }, - { - "name": "dragonmantank/cron-expression", - "version": "v3.3.1", - "source": { - "type": "git", - "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "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.1" - }, - "funding": [ - { - "url": "https://github.com/dragonmantank", - "type": "github" - } - ], - "time": "2022-01-18T15:43:28+00:00" - }, - { - "name": "egulias/email-validator", - "version": "3.1.2", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ee0db30118f661fb166bcffbf5d82032df484697", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^1.2", - "php": ">=7.2", - "symfony/polyfill-intl-idn": "^1.15" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^8.5.8|^9.3.3", - "vimeo/psalm": "^4" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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/3.1.2" - }, - "funding": [ - { - "url": "https://github.com/egulias", - "type": "github" - } - ], - "time": "2021-10-11T09:18:27+00:00" - }, - { - "name": "fruitcake/laravel-cors", - "version": "v2.0.5", - "source": { - "type": "git", - "url": "https://github.com/fruitcake/laravel-cors.git", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "shasum": "" - }, - "require": { - "asm89/stack-cors": "^2.0.1", - "illuminate/contracts": "^6|^7|^8|^9", - "illuminate/support": "^6|^7|^8|^9", - "php": ">=7.2", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4.3.4|^5|^6" - }, - "require-dev": { - "laravel/framework": "^6|^7.24|^8", - "orchestra/testbench-dusk": "^4|^5|^6|^7", - "phpunit/phpunit": "^6|^7|^8|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - }, - "laravel": { - "providers": [ - "Fruitcake\\Cors\\CorsServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Fruitcake\\Cors\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fruitcake", - "homepage": "https://fruitcake.nl" - }, - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", - "keywords": [ - "api", - "cors", - "crossdomain", - "laravel" - ], - "support": { - "issues": "https://github.com/fruitcake/laravel-cors/issues", - "source": "https://github.com/fruitcake/laravel-cors/tree/v2.0.5" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "time": "2022-01-03T14:53:04+00:00" - }, - { - "name": "graham-campbell/result-type", - "version": "v1.0.4", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "0690bde05318336c7221785f2a932467f98b64ca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/0690bde05318336c7221785f2a932467f98b64ca", - "reference": "0690bde05318336c7221785f2a932467f98b64ca", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "phpoption/phpoption": "^1.8" - }, - "require-dev": { - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", - "type": "tidelift" - } - ], - "time": "2021-11-21T21:41:47+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "7.4.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.8.3 || ^2.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.4.1", - "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.5 || ^9.3.5", - "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": { - "branch-alias": { - "dev-master": "7.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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.4.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": "2021-12-06T18:43:05+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "1.5.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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/1.5.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "time": "2021-10-22T20:56:57+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.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.4.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.8 || ^9.3.10" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "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.1.0" - }, - "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": "2021-10-06T17:43:30+00:00" - }, - { - "name": "laravel/framework", - "version": "v9.0.1", - "source": { - "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "shasum": "" - }, - "require": { - "doctrine/inflector": "^2.0", - "dragonmantank/cron-expression": "^3.1", - "egulias/email-validator": "^3.1", - "ext-mbstring": "*", - "ext-openssl": "*", - "laravel/serializable-closure": "^1.0", - "league/commonmark": "^2.2", - "league/flysystem": "^3.0", - "monolog/monolog": "^2.0", - "nesbot/carbon": "^2.53.1", - "php": "^8.0.2", - "psr/container": "^1.1.1|^2.0.1", - "psr/log": "^1.0|^2.0|^3.0", - "psr/simple-cache": "^1.0|^2.0|^3.0", - "ramsey/uuid": "^4.2.2", - "symfony/console": "^6.0", - "symfony/error-handler": "^6.0", - "symfony/finder": "^6.0", - "symfony/http-foundation": "^6.0", - "symfony/http-kernel": "^6.0", - "symfony/mailer": "^6.0", - "symfony/mime": "^6.0", - "symfony/process": "^6.0", - "symfony/routing": "^6.0", - "symfony/var-dumper": "^6.0", - "tijsverkoyen/css-to-inline-styles": "^2.2.2", - "vlucas/phpdotenv": "^5.4.1", - "voku/portable-ascii": "^2.0" - }, - "conflict": { - "tightenco/collect": "<5.5.33" - }, - "provide": { - "psr/container-implementation": "1.1|2.0", - "psr/simple-cache-implementation": "1.0|2.0|3.0" - }, - "replace": { - "illuminate/auth": "self.version", - "illuminate/broadcasting": "self.version", - "illuminate/bus": "self.version", - "illuminate/cache": "self.version", - "illuminate/collections": "self.version", - "illuminate/conditionable": "self.version", - "illuminate/config": "self.version", - "illuminate/console": "self.version", - "illuminate/container": "self.version", - "illuminate/contracts": "self.version", - "illuminate/cookie": "self.version", - "illuminate/database": "self.version", - "illuminate/encryption": "self.version", - "illuminate/events": "self.version", - "illuminate/filesystem": "self.version", - "illuminate/hashing": "self.version", - "illuminate/http": "self.version", - "illuminate/log": "self.version", - "illuminate/macroable": "self.version", - "illuminate/mail": "self.version", - "illuminate/notifications": "self.version", - "illuminate/pagination": "self.version", - "illuminate/pipeline": "self.version", - "illuminate/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": { - "aws/aws-sdk-php": "^3.198.1", - "doctrine/dbal": "^2.13.3|^3.1.4", - "fakerphp/faker": "^1.9.2", - "guzzlehttp/guzzle": "^7.2", - "league/flysystem-aws-s3-v3": "^3.0", - "league/flysystem-ftp": "^3.0", - "league/flysystem-sftp-v3": "^3.0", - "mockery/mockery": "^1.4.4", - "orchestra/testbench-core": "^7.0", - "pda/pheanstalk": "^4.0", - "phpstan/phpstan": "^1.0", - "phpunit/phpunit": "^9.5.8", - "predis/predis": "^1.1.9", - "symfony/amazon-mailer": "^6.0", - "symfony/cache": "^6.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.198.1).", - "brianium/paratest": "Required to run tests in parallel (^6.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", - "ext-bcmath": "Required to use the multiple_of validation rule.", - "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.", - "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.2).", - "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-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", - "mockery/mockery": "Required to use mocking (^1.4.4).", - "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).", - "predis/predis": "Required to use the predis connector (^1.1.9).", - "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.0).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^6.0).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.0).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.0).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.0).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.x-dev" - } - }, - "autoload": { - "files": [ - "src/Illuminate/Collections/helpers.php", - "src/Illuminate/Events/functions.php", - "src/Illuminate/Foundation/helpers.php", - "src/Illuminate/Support/helpers.php" - ], - "psr-4": { - "Illuminate\\": "src/Illuminate/", - "Illuminate\\Support\\": [ - "src/Illuminate/Macroable/", - "src/Illuminate/Collections/", - "src/Illuminate/Conditionable/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Laravel Framework.", - "homepage": "https://laravel.com", - "keywords": [ - "framework", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2022-02-09T15:00:05+00:00" - }, - { - "name": "laravel/sanctum", - "version": "v2.14.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/sanctum.git", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/0647a87140c7522e75826cffcadb3ad6e01f71e9", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/contracts": "^6.9|^7.0|^8.0|^9.0", - "illuminate/database": "^6.9|^7.0|^8.0|^9.0", - "illuminate/support": "^6.9|^7.0|^8.0|^9.0", - "php": "^7.2|^8.0" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0", - "phpunit/phpunit": "^8.0|^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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": "2022-01-12T15:07:43+00:00" - }, - { - "name": "laravel/serializable-closure", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/serializable-closure.git", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/65c9faf50d567b65d81764a44526545689e3fe63", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "pestphp/pest": "^1.18", - "phpstan/phpstan": "^0.12.98", - "symfony/var-dumper": "^5.3" - }, - "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": "2022-02-01T16:29:39+00:00" - }, - { - "name": "laravel/tinker", - "version": "v2.7.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/tinker.git", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/5f2f9815b7631b9f586a3de7933c25f9327d4073", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073", - "shasum": "" - }, - "require": { - "illuminate/console": "^6.0|^7.0|^8.0|^9.0", - "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.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", - "phpunit/phpunit": "^8.5.8|^9.3.3" - }, - "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.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.7.0" - }, - "time": "2022-01-10T08:52:49+00:00" - }, - { - "name": "laravel/ui", - "version": "v3.4.3", - "source": { - "type": "git", - "url": "https://github.com/laravel/ui.git", - "reference": "64a0f43492c00780b2261c56cd7007a4f370d95b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/ui/zipball/64a0f43492c00780b2261c56cd7007a4f370d95b", - "reference": "64a0f43492c00780b2261c56cd7007a4f370d95b", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.42|^9.0", - "illuminate/filesystem": "^8.42|^9.0", - "illuminate/support": "^8.82|^9.0", - "illuminate/validation": "^8.42|^9.0", - "php": "^7.3|^8.0" - }, - "require-dev": { - "orchestra/testbench": "^6.23|^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - }, - "laravel": { - "providers": [ - "Laravel\\Ui\\UiServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Laravel\\Ui\\": "src/", - "Illuminate\\Foundation\\Auth\\": "auth-backend/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "Laravel UI utilities and presets.", - "keywords": [ - "laravel", - "ui" - ], - "support": { - "source": "https://github.com/laravel/ui/tree/v3.4.3" - }, - "time": "2022-02-08T14:19:32+00:00" - }, - { - "name": "league/commonmark", - "version": "2.2.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/commonmark.git", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "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.15" - }, - "require-dev": { - "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.0", - "commonmark/commonmark.js": "0.30.0", - "composer/package-versions-deprecated": "^1.8", - "erusev/parsedown": "^1.0", - "ext-json": "*", - "github/gfm": "0.29.0", - "michelf/php-markdown": "^1.4", - "phpstan/phpstan": "^0.12.88 || ^1.0.0", - "phpunit/phpunit": "^9.5.5", - "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", - "unleashedtech/php-coding-standard": "^3.1", - "vimeo/psalm": "^4.7.3" - }, - "suggest": { - "symfony/yaml": "v2.3+ required if using the Front Matter extension" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.3-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": "2022-01-25T14:37:33+00:00" - }, - { - "name": "league/config", - "version": "v1.1.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/config.git", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/config/zipball/a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^3.0.1", - "nette/schema": "^1.2", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.90", - "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": "2021-08-14T12:15:32+00:00" - }, - { - "name": "league/flysystem", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9f8b4260031bfef5497477da53dd57b2aaff0e06", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06", - "shasum": "" - }, - "require": { - "ext-json": "*", - "league/mime-type-detection": "^1.0.0", - "php": "^8.0.2" - }, - "conflict": { - "guzzlehttp/guzzle": "<7.0", - "guzzlehttp/ringphp": "<1.1.1", - "symfony/http-client": "<5.2" - }, - "require-dev": { - "async-aws/s3": "^1.5", - "async-aws/simple-s3": "^1.0", - "aws/aws-sdk-php": "^3.198.1", - "composer/semver": "^3.0", - "ext-fileinfo": "*", - "ext-ftp": "*", - "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.5", - "google/cloud-storage": "^1.23", - "phpseclib/phpseclib": "^2.0", - "phpstan/phpstan": "^0.12.26", - "phpunit/phpunit": "^9.5.11", - "sabre/dav": "^4.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.0.3" - }, - "funding": [ - { - "url": "https://offset.earth/frankdejonge", - "type": "custom" - }, - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2022-01-31T19:41:04+00:00" - }, - { - "name": "league/mime-type-detection", - "version": "1.9.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/aa70e813a6ad3d1558fc927863d47309b4c23e69", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.2", - "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" - }, - "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.9.0" - }, - "funding": [ - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2021-11-21T11:48:40+00:00" - }, - { - "name": "monolog/monolog", - "version": "2.3.5", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd4380d6fc37626e2f799f29d91195040137eba9", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "provide": { - "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7", - "graylog2/gelf-php": "^1.4.2", - "mongodb/mongodb": "^1.8", - "php-amqplib/php-amqplib": "~2.4 || ^3", - "php-console/php-console": "^3.1.3", - "phpspec/prophecy": "^1.6.1", - "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5", - "predis/predis": "^1.1", - "rollbar/rollbar": "^1.3", - "ruflin/elastica": ">=0.90@dev", - "swiftmailer/swiftmailer": "^5.3|^6.0" - }, - "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", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "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": "2.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/2.3.5" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" - } - ], - "time": "2021-10-01T21:08:31+00:00" - }, - { - "name": "nesbot/carbon", - "version": "2.56.0", - "source": { - "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1.8 || ^8.0", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "doctrine/dbal": "^2.0 || ^3.0", - "doctrine/orm": "^2.7", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "phpmd/phpmd": "^2.9", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.54 || ^1.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.14", - "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://opencollective.com/Carbon", - "type": "open_collective" - }, - { - "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", - "type": "tidelift" - } - ], - "time": "2022-01-21T17:08:38+00:00" - }, - { - "name": "nette/schema", - "version": "v1.2.2", - "source": { - "type": "git", - "url": "https://github.com/nette/schema.git", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/9a39cef03a5b34c7de64f551538cbba05c2be5df", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df", - "shasum": "" - }, - "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": ">=7.1 <8.2" - }, - "require-dev": { - "nette/tester": "^2.3 || ^2.4", - "phpstan/phpstan-nette": "^0.12", - "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.2" - }, - "time": "2021-10-15T11:40:02+00:00" - }, - { - "name": "nette/utils", - "version": "v3.2.7", - "source": { - "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/0af4e3de4df9f1543534beab255ccf459e7a2c99", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99", - "shasum": "" - }, - "require": { - "php": ">=7.2 <8.2" - }, - "conflict": { - "nette/di": "<3.0.6" - }, - "require-dev": { - "nette/tester": "~2.0", - "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.3" - }, - "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()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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 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/v3.2.7" - }, - "time": "2022-01-24T11:29:14+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.13.2", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", - "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.13.2" - }, - "time": "2021-11-30T19:35:32+00:00" - }, - { - "name": "phpoption/phpoption", - "version": "1.8.1", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-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.8.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", - "type": "tidelift" - } - ], - "time": "2021-12-04T23:24:31+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.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.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": "http://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/tree/master" - }, - "time": "2020-06-29T06:28:15+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.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": "http://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/master" - }, - "time": "2019-04-30T12:38:16+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.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": "http://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/master" - }, - "time": "2016-08-06T14:39: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.1", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "570292577277f06f590635381a7f761a6cf4f026" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/570292577277f06f590635381a7f761a6cf4f026", - "reference": "570292577277f06f590635381a7f761a6cf4f026", - "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" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "3.17.05.02" - }, - "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.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." - }, - "bin": [ - "bin/psysh" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "0.11.x-dev" - } - }, - "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.1" - }, - "time": "2022-01-03T13:58:38+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": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/ramsey/collection.git", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "shasum": "" - }, - "require": { - "php": "^7.3 || ^8", - "symfony/polyfill-php81": "^1.23" - }, - "require-dev": { - "captainhook/captainhook": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "ergebnis/composer-normalize": "^2.6", - "fakerphp/faker": "^1.5", - "hamcrest/hamcrest-php": "^2", - "jangregor/phpstan-prophecy": "^0.8", - "mockery/mockery": "^1.3", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1", - "phpstan/phpstan": "^0.12.32", - "phpstan/phpstan-mockery": "^0.12.5", - "phpstan/phpstan-phpunit": "^0.12.11", - "phpunit/phpunit": "^8.5 || ^9", - "psy/psysh": "^0.10.4", - "slevomat/coding-standard": "^6.3", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.4" - }, - "type": "library", - "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/1.2.2" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "time": "2021-10-10T03:01:02+00:00" - }, - { - "name": "ramsey/uuid", - "version": "4.2.3", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "shasum": "" - }, - "require": { - "brick/math": "^0.8 || ^0.9", - "ext-json": "*", - "php": "^7.2 || ^8.0", - "ramsey/collection": "^1.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php80": "^1.14" - }, - "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", - "moontoast/math": "^1.1", - "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.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-mockery": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^8.5 || ^9", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" - }, - "suggest": { - "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-ctype": "Enables faster processing of character classification using ctype functions.", - "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": { - "branch-alias": { - "dev-main": "4.x-dev" - }, - "captainhook": { - "force-install": true - } - }, - "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "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.2.3" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2021-09-25T23:10:38+00:00" - }, - { - "name": "symfony/console", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/22e8efd019c3270c4f79376234a3f8752cd25490", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.4|^6.0" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/css-selector", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/1955d595c12c111629cc814d3f2a2ff13580508a", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a", - "shasum": "" - }, - "require": { - "php": ">=8.0.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/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-11-01T23:48:49+00:00" - }, - { - "name": "symfony/error-handler", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/20343b3bad7ebafa38138ddcb97290a24722b57b", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" - }, - "bin": [ - "Resources/bin/patch-type-declarations" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to manage errors and ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6472ea2dd415e925b90ca82be64b8bc6157f3934", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/event-dispatcher-contracts": "^2|^3" - }, - "conflict": { - "symfony/dependency-injection": "<5.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^5.4|^6.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/aa5422287b75594b90ee9cd807caf8f0df491385", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/event-dispatcher": "^1" - }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-07-15T12:33:35+00:00" - }, - { - "name": "symfony/finder", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/8661b74dbabc23223f38c9b99d3f8ade71170430", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ad157299ced81a637fade1efcadd688d6deba5c1", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1" - }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/cache": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0" - }, - "suggest": { - "symfony/mime": "To use the file extension guesser" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v6.0.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/error-handler": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", - "symfony/twig-bridge": "<5.4", - "symfony/validator": "<5.4", - "twig/twig": "<2.13" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/process": "^5.4|^6.0", - "symfony/routing": "^5.4|^6.0", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-29T18:12:46+00:00" - }, - { - "name": "symfony/mailer", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mailer.git", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "shasum": "" - }, - "require": { - "egulias/email-validator": "^2.1.10|^3", - "php": ">=8.0.2", - "psr/event-dispatcher": "^1", - "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3" - }, - "conflict": { - "symfony/http-kernel": "<5.4" - }, - "require-dev": { - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/messenger": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/mime", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/2cd9601efd040e56f43360daa68f3c6b0534923a", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "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" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "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.24.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": "2021-10-20T20:35:02+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-11-23T21:10:46+00:00" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44", - "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.23-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.24.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": "2021-09-14T14:02:44+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.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": "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.24.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": "2021-11-30T18:21:41+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-05-27T09:17:38+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:33+00:00" - }, - { - "name": "symfony/polyfill-php81", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:11+00:00" - }, - { - "name": "symfony/process", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/298ed357274c1868c20a0061df256a1250a6c4af", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/routing", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/yaml": "<5.4" - }, - "require-dev": { - "doctrine/annotations": "^1.12", - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/36715ebf9fb9db73db0cb24263c79077c6fe8603", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/container": "^2.0" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "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.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": "2021-11-04T17:53:12+00:00" - }, - { - "name": "symfony/string", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/522144f0c4c004c80d56fa47e40e17028e2eefc2", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.0" - }, - "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/translation-contracts": "^2.0|^3.0", - "symfony/var-exporter": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "files": [ - "Resources/functions.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 an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/translation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/71bb15335798f8c4da110911bcf2d2fead7a430d", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.3|^3.0" - }, - "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" - }, - "provide": { - "symfony/translation-implementation": "2.3|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-07T00:29:03+00:00" - }, - { - "name": "symfony/translation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "suggest": { - "symfony/translation-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - } - }, - "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.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": "2021-09-07T12:43:40+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7b701676fc64f9ef11f9b4870f16b48f66be4834", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<5.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-17T16:30:44+00:00" - }, - { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.4", - "source": { - "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" - } - ], - "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", - "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "support": { - "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" - }, - "time": "2021-12-08T09:12:39+00:00" - }, - { - "name": "vlucas/phpdotenv", - "version": "v5.4.1", - "source": { - "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", - "shasum": "" - }, - "require": { - "ext-pcre": "*", - "graham-campbell/result-type": "^1.0.2", - "php": "^7.1.3 || ^8.0", - "phpoption/phpoption": "^1.8", - "symfony/polyfill-ctype": "^1.23", - "symfony/polyfill-mbstring": "^1.23.1", - "symfony/polyfill-php80": "^1.23.1" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" - }, - "suggest": { - "ext-filter": "Required to use the boolean validator." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.4-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.4.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", - "type": "tidelift" - } - ], - "time": "2021-12-12T23:22:04+00:00" - }, - { - "name": "voku/portable-ascii", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/voku/portable-ascii.git", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/9bd89e83cecdf8c37b64909454249eaed98b2c89", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89", - "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.0" - }, - "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-01-24T18:59:03+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "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.10.0" - }, - "time": "2021-03-09T10:59:23+00:00" - } - ], - "packages-dev": [ - { - "name": "doctrine/instantiator", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.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%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2020-11-10T18:47:58+00:00" - }, - { - "name": "facade/ignition-contracts", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/facade/ignition-contracts.git", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^v2.15.8", - "phpunit/phpunit": "^9.3.11", - "vimeo/psalm": "^3.17.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Facade\\IgnitionContracts\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://flareapp.io", - "role": "Developer" - } - ], - "description": "Solution contracts for Ignition", - "homepage": "https://github.com/facade/ignition-contracts", - "keywords": [ - "contracts", - "flare", - "ignition" - ], - "support": { - "issues": "https://github.com/facade/ignition-contracts/issues", - "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" - }, - "time": "2020-10-16T08:27:54+00:00" - }, - { - "name": "fakerphp/faker", - "version": "v1.19.0", - "source": { - "type": "git", - "url": "https://github.com/FakerPHP/Faker.git", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^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": "*", - "symfony/phpunit-bridge": "^4.4 || ^5.2" - }, - "suggest": { - "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", - "ext-curl": "Required by Faker\\Provider\\Image to download images.", - "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", - "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.19-dev" - } - }, - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "François Zaninotto" - } - ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], - "support": { - "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0" - }, - "time": "2022-02-02T17:38:57+00:00" - }, - { - "name": "filp/whoops", - "version": "2.14.5", - "source": { - "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "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.14.5" - }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "time": "2022-01-07T12:00:00+00:00" - }, - { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "shasum": "" - }, - "require": { - "php": "^5.3|^7.0|^8.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" - }, - "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "classmap": [ - "hamcrest" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "This is the PHP port of Hamcrest Matchers", - "keywords": [ - "test" - ], - "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" - }, - "time": "2020-07-09T08:09:16+00:00" - }, - { - "name": "laravel/sail", - "version": "v1.13.2", - "source": { - "type": "git", - "url": "https://github.com/laravel/sail.git", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.0|^9.0", - "illuminate/contracts": "^8.0|^9.0", - "illuminate/support": "^8.0|^9.0", - "php": "^7.3|^8.0" - }, - "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": "2022-02-08T14:14:12+00:00" - }, - { - "name": "mockery/mockery", - "version": "1.5.0", - "source": { - "type": "git", - "url": "https://github.com/mockery/mockery.git", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "shasum": "" - }, - "require": { - "hamcrest/hamcrest-php": "^2.0.1", - "lib-pcre": ">=7.0", - "php": "^7.3 || ^8.0" - }, - "conflict": { - "phpunit/phpunit": "<8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-0": { - "Mockery": "library/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" - } - ], - "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": { - "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.5.0" - }, - "time": "2022-01-20T13:18:17+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.10.2", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "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.10.2" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2020-11-13T09:40:50+00:00" - }, - { - "name": "nunomaduro/collision", - "version": "v6.1.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/collision.git", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "shasum": "" - }, - "require": { - "facade/ignition-contracts": "^1.0.2", - "filp/whoops": "^2.14.5", - "php": "^8.0.0", - "symfony/console": "^6.0.2" - }, - "require-dev": { - "brianium/paratest": "^6.4.1", - "laravel/framework": "^9.0", - "nunomaduro/larastan": "^1.0.2", - "nunomaduro/mock-final-classes": "^1.1.0", - "orchestra/testbench": "^7.0.0", - "phpunit/phpunit": "^9.5.11" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "6.x-dev" - }, - "laravel": { - "providers": [ - "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" - ] - } - }, - "autoload": { - "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": "2022-01-18T17:49:08+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.1.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/15a90844ad40f127afd244c0cad228de2a80052a", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a", - "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.1.1" - }, - "time": "2022-02-07T21:56:48+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.6.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "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.6.0" - }, - "time": "2022-01-04T19:58:01+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" - }, - "time": "2021-12-08T12:19:24+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "9.2.10", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d5850aaf931743067f4bfc1ae4cbd06468400687", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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 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", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.10" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-05T09:12:13+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "3.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-02T12:48:52+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "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/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:58:55+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T05:33:50+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.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/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:16:10+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "9.5.13", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/597cb647654ede35e43b137926dfdfef0fb11743", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.3.1", - "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": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.7", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", - "sebastian/version": "^3.0.2" - }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.13" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-01-24T07:33:35+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:08:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "1.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:08:54+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:30:19+00:00" - }, - { - "name": "sebastian/comparator", - "version": "4.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:49:45+00:00" - }, - { - "name": "sebastian/complexity", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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 calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:52:27+00:00" - }, - { - "name": "sebastian/diff", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:10:38+00:00" - }, - { - "name": "sebastian/environment", - "version": "5.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-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": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:52:38+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "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", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-11-11T14:18:36+00:00" - }, - { - "name": "sebastian/global-state", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-11T13:31:12+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-28T06:42:11+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "http://www.github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:17:30+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:45:17+00:00" - }, - { - "name": "sebastian/type", - "version": "2.3.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-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/2.3.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-15T12:49:02+00:00" - }, - { - "name": "sebastian/version", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:39:44+00:00" - }, - { - "name": "spatie/backtrace", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/backtrace.git", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "ext-json": "*", - "phpunit/phpunit": "^9.3", - "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": { - "issues": "https://github.com/spatie/backtrace/issues", - "source": "https://github.com/spatie/backtrace/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/sponsors/spatie", - "type": "github" - }, - { - "url": "https://spatie.be/open-source/support-us", - "type": "other" - } - ], - "time": "2021-11-09T10:57:15+00:00" - }, - { - "name": "spatie/flare-client-php", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/flare-client-php.git", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "shasum": "" - }, - "require": { - "illuminate/pipeline": "^8.0|^9.0", - "php": "^8.0", - "spatie/backtrace": "^1.2", - "symfony/http-foundation": "^5.0|^6.0", - "symfony/mime": "^5.2|^6.0", - "symfony/process": "^5.2|^6.0", - "symfony/var-dumper": "^5.2|^6.0" - }, - "require-dev": { - "dms/phpunit-arraysubset-asserts": "^0.3.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/phpunit-snapshot-assertions": "^4.0" - }, - "type": "library", - "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.0.1" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2022-02-04T15:21:00+00:00" - }, - { - "name": "spatie/ignition", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/spatie/ignition.git", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/d2d5ba823af3004268556e87dfc94449e4159f5a", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "monolog/monolog": "^2.0", - "php": "^8.0", - "spatie/flare-client-php": "^1.0", - "symfony/console": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "mockery/mockery": "^1.4", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/ray": "^1.32", - "symfony/process": "^5.4|^6.0" - }, - "type": "library", - "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": "2022-01-19T12:57:41+00:00" - }, - { - "name": "spatie/laravel-ignition", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/68250225a9f83b086462c2af1b1139dfde48fbd2", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*", - "illuminate/support": "^8.77|^9.0", - "monolog/monolog": "^2.3", - "php": "^8.0", - "spatie/flare-client-php": "^1.0.1", - "spatie/ignition": "^1.0", - "symfony/console": "^5.0|^6.0", - "symfony/var-dumper": "^5.0|^6.0" - }, - "require-dev": { - "filp/whoops": "^2.14", - "livewire/livewire": "^2.8|dev-develop", - "mockery/mockery": "^1.4", - "nunomaduro/larastan": "^1.0", - "orchestra/testbench": "^6.23|^7.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/laravel-ray": "^1.27" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Spatie\\LaravelIgnition\\IgnitionServiceProvider" - ], - "aliases": { - "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" - } - } - }, - "autoload": { - "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": "2022-02-04T15:25:56+00:00" - }, - { - "name": "squizlabs/php_codesniffer", - "version": "3.6.2", - "source": { - "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", - "shasum": "" - }, - "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.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": "lead" - } - ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", - "keywords": [ - "phpcs", - "standards" - ], - "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" - }, - "time": "2021-12-12T21:44:58+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2021-07-28T10:34:58+00:00" - } - ], - "aliases": [], - "minimum-stability": "dev", - "stability-flags": [], - "prefer-stable": true, - "prefer-lowest": false, - "platform": { - "php": "^8.0" - }, - "platform-dev": [], - "plugin-api-version": "2.1.0" -} diff --git a/Chapter22/onlineStore/config/app.php b/Chapter22/onlineStore/config/app.php deleted file mode 100644 index 1941d7c..0000000 --- a/Chapter22/onlineStore/config/app.php +++ /dev/null @@ -1,197 +0,0 @@ - env('APP_NAME', 'Laravel'), - - /* - |-------------------------------------------------------------------------- - | Application Environment - |-------------------------------------------------------------------------- - | - | This value determines the "environment" your application is currently - | running in. This may determine how you prefer to configure various - | services the application utilizes. Set this in your ".env" file. - | - */ - - 'env' => env('APP_ENV', 'production'), - - /* - |-------------------------------------------------------------------------- - | Application Debug Mode - |-------------------------------------------------------------------------- - | - | When your application is in debug mode, detailed error messages with - | stack traces will be shown on every error that occurs within your - | application. If disabled, a simple generic error page is shown. - | - */ - - 'debug' => (bool) env('APP_DEBUG', false), - - /* - |-------------------------------------------------------------------------- - | Application URL - |-------------------------------------------------------------------------- - | - | This URL is used by the console to properly generate URLs when using - | the Artisan command line tool. You should set this to the root of - | your application so that it is used when running Artisan tasks. - | - */ - - 'url' => env('APP_URL', 'http://localhost'), - - 'asset_url' => env('ASSET_URL', null), - - /* - |-------------------------------------------------------------------------- - | 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', - - /* - |-------------------------------------------------------------------------- - | 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' => [ - - /* - * Laravel Framework Service Providers... - */ - Illuminate\Auth\AuthServiceProvider::class, - Illuminate\Broadcasting\BroadcastServiceProvider::class, - Illuminate\Bus\BusServiceProvider::class, - Illuminate\Cache\CacheServiceProvider::class, - Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, - Illuminate\Cookie\CookieServiceProvider::class, - Illuminate\Database\DatabaseServiceProvider::class, - Illuminate\Encryption\EncryptionServiceProvider::class, - Illuminate\Filesystem\FilesystemServiceProvider::class, - Illuminate\Foundation\Providers\FoundationServiceProvider::class, - Illuminate\Hashing\HashServiceProvider::class, - Illuminate\Mail\MailServiceProvider::class, - Illuminate\Notifications\NotificationServiceProvider::class, - Illuminate\Pagination\PaginationServiceProvider::class, - Illuminate\Pipeline\PipelineServiceProvider::class, - Illuminate\Queue\QueueServiceProvider::class, - Illuminate\Redis\RedisServiceProvider::class, - Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, - Illuminate\Session\SessionServiceProvider::class, - Illuminate\Translation\TranslationServiceProvider::class, - Illuminate\Validation\ValidationServiceProvider::class, - Illuminate\View\ViewServiceProvider::class, - - /* - * 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, - - ], - - /* - |-------------------------------------------------------------------------- - | 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([ - // ... - ])->toArray(), - -]; diff --git a/Chapter22/onlineStore/config/auth.php b/Chapter22/onlineStore/config/auth.php deleted file mode 100644 index d8c6cee..0000000 --- a/Chapter22/onlineStore/config/auth.php +++ /dev/null @@ -1,111 +0,0 @@ - [ - '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 expire 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. - | - */ - - 'passwords' => [ - 'users' => [ - 'provider' => 'users', - 'table' => 'password_resets', - '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/Chapter22/onlineStore/config/broadcasting.php b/Chapter22/onlineStore/config/broadcasting.php deleted file mode 100644 index 67fcbbd..0000000 --- a/Chapter22/onlineStore/config/broadcasting.php +++ /dev/null @@ -1,67 +0,0 @@ - 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'), - 'useTLS' => true, - ], - '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/Chapter22/onlineStore/config/cache.php b/Chapter22/onlineStore/config/cache.php deleted file mode 100644 index 8736c7a..0000000 --- a/Chapter22/onlineStore/config/cache.php +++ /dev/null @@ -1,110 +0,0 @@ - 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'), - ], - - '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 a RAM based store such as APC or Memcached, there might - | be other applications utilizing the same cache. So, we'll specify a - | value to get prefixed to all our keys so we can avoid collisions. - | - */ - - 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'), - -]; diff --git a/Chapter22/onlineStore/config/cors.php b/Chapter22/onlineStore/config/cors.php deleted file mode 100644 index 8a39e6d..0000000 --- a/Chapter22/onlineStore/config/cors.php +++ /dev/null @@ -1,34 +0,0 @@ - ['api/*', 'sanctum/csrf-cookie'], - - 'allowed_methods' => ['*'], - - 'allowed_origins' => ['*'], - - 'allowed_origins_patterns' => [], - - 'allowed_headers' => ['*'], - - 'exposed_headers' => [], - - 'max_age' => 0, - - 'supports_credentials' => false, - -]; diff --git a/Chapter22/onlineStore/config/database.php b/Chapter22/onlineStore/config/database.php deleted file mode 100644 index 0faebae..0000000 --- a/Chapter22/onlineStore/config/database.php +++ /dev/null @@ -1,147 +0,0 @@ - env('DB_CONNECTION', 'mysql'), - - /* - |-------------------------------------------------------------------------- - | Database Connections - |-------------------------------------------------------------------------- - | - | Here are each of the database connections setup for your application. - | Of course, examples of configuring each database platform that is - | supported by Laravel is shown below to make development simple. - | - | - | All database work in Laravel is done through the PHP PDO facilities - | so make sure you have the driver for your particular database of - | choice installed on your machine before you begin development. - | - */ - - 'connections' => [ - - 'sqlite' => [ - 'driver' => 'sqlite', - 'url' => env('DATABASE_URL'), - 'database' => env('DB_DATABASE', database_path('database.sqlite')), - 'prefix' => '', - 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), - ], - - 'mysql' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '3306'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'unix_socket' => env('DB_SOCKET', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - 'pgsql' => [ - 'driver' => 'pgsql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '5432'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - 'search_path' => 'public', - 'sslmode' => 'prefer', - ], - - 'sqlsrv' => [ - 'driver' => 'sqlsrv', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', 'localhost'), - 'port' => env('DB_PORT', '1433'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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'), - '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'), - 'password' => env('REDIS_PASSWORD'), - 'port' => env('REDIS_PORT', '6379'), - 'database' => env('REDIS_CACHE_DB', '1'), - ], - - ], - -]; diff --git a/Chapter22/onlineStore/config/filesystems.php b/Chapter22/onlineStore/config/filesystems.php deleted file mode 100644 index cf5abce..0000000 --- a/Chapter22/onlineStore/config/filesystems.php +++ /dev/null @@ -1,73 +0,0 @@ - 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 setup for each driver as an example of the required options. - | - | Supported Drivers: "local", "ftp", "sftp", "s3" - | - */ - - 'disks' => [ - - 'local' => [ - 'driver' => 'local', - 'root' => storage_path('app'), - ], - - 'public' => [ - 'driver' => 'local', - 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', - 'visibility' => 'public', - ], - - '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), - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter22/onlineStore/config/hashing.php b/Chapter22/onlineStore/config/hashing.php deleted file mode 100644 index bcd3be4..0000000 --- a/Chapter22/onlineStore/config/hashing.php +++ /dev/null @@ -1,52 +0,0 @@ - '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/Chapter22/onlineStore/config/logging.php b/Chapter22/onlineStore/config/logging.php deleted file mode 100644 index fefe088..0000000 --- a/Chapter22/onlineStore/config/logging.php +++ /dev/null @@ -1,119 +0,0 @@ - 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' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), - - /* - |-------------------------------------------------------------------------- - | 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'), - ], - - 'daily' => [ - 'driver' => 'daily', - 'path' => storage_path('logs/laravel.log'), - 'level' => env('LOG_LEVEL', 'debug'), - 'days' => 14, - ], - - 'slack' => [ - 'driver' => 'slack', - 'url' => env('LOG_SLACK_WEBHOOK_URL'), - 'username' => 'Laravel Log', - 'emoji' => ':boom:', - 'level' => env('LOG_LEVEL', 'critical'), - ], - - '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'), - ], - ], - - 'stderr' => [ - 'driver' => 'monolog', - 'level' => env('LOG_LEVEL', 'debug'), - 'handler' => StreamHandler::class, - 'formatter' => env('LOG_STDERR_FORMATTER'), - 'with' => [ - 'stream' => 'php://stderr', - ], - ], - - 'syslog' => [ - 'driver' => 'syslog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'errorlog' => [ - 'driver' => 'errorlog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'null' => [ - 'driver' => 'monolog', - 'handler' => NullHandler::class, - ], - - 'emergency' => [ - 'path' => storage_path('logs/laravel.log'), - ], - ], - -]; diff --git a/Chapter22/onlineStore/config/mail.php b/Chapter22/onlineStore/config/mail.php deleted file mode 100644 index 87b6fe3..0000000 --- a/Chapter22/onlineStore/config/mail.php +++ /dev/null @@ -1,117 +0,0 @@ - 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", - | "postmark", "log", "array", "failover" - | - */ - - 'mailers' => [ - 'smtp' => [ - 'transport' => 'smtp', - '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, - ], - - 'ses' => [ - 'transport' => 'ses', - ], - - 'mailgun' => [ - 'transport' => 'mailgun', - ], - - 'postmark' => [ - 'transport' => 'postmark', - ], - - 'sendmail' => [ - 'transport' => 'sendmail', - 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -t -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/Chapter22/onlineStore/config/queue.php b/Chapter22/onlineStore/config/queue.php deleted file mode 100644 index 25ea5a8..0000000 --- a/Chapter22/onlineStore/config/queue.php +++ /dev/null @@ -1,93 +0,0 @@ - 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, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter22/onlineStore/config/sanctum.php b/Chapter22/onlineStore/config/sanctum.php deleted file mode 100644 index 9281c92..0000000 --- a/Chapter22/onlineStore/config/sanctum.php +++ /dev/null @@ -1,65 +0,0 @@ - explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( - '%s%s', - 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', - env('APP_URL') ? ','.parse_url(env('APP_URL'), PHP_URL_HOST) : '' - ))), - - /* - |-------------------------------------------------------------------------- - | 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/Chapter22/onlineStore/config/services.php b/Chapter22/onlineStore/config/services.php deleted file mode 100644 index 2a1d616..0000000 --- a/Chapter22/onlineStore/config/services.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - 'domain' => env('MAILGUN_DOMAIN'), - 'secret' => env('MAILGUN_SECRET'), - 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), - ], - - '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/Chapter22/onlineStore/config/session.php b/Chapter22/onlineStore/config/session.php deleted file mode 100644 index 8fed97c..0000000 --- a/Chapter22/onlineStore/config/session.php +++ /dev/null @@ -1,201 +0,0 @@ - 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/Chapter22/onlineStore/config/view.php b/Chapter22/onlineStore/config/view.php deleted file mode 100644 index 22b8a18..0000000 --- a/Chapter22/onlineStore/config/view.php +++ /dev/null @@ -1,36 +0,0 @@ - [ - 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/Chapter22/onlineStore/database/.gitignore b/Chapter22/onlineStore/database/.gitignore deleted file mode 100644 index 9b19b93..0000000 --- a/Chapter22/onlineStore/database/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.sqlite* diff --git a/Chapter22/onlineStore/database/factories/UserFactory.php b/Chapter22/onlineStore/database/factories/UserFactory.php deleted file mode 100644 index d6ca926..0000000 --- a/Chapter22/onlineStore/database/factories/UserFactory.php +++ /dev/null @@ -1,42 +0,0 @@ - - */ -class UserFactory extends Factory -{ - /** - * Define the model's default state. - * - * @return array - */ - public function definition() - { - return [ - 'name' => $this->faker->name(), - 'email' => $this->faker->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. - * - * @return \Illuminate\Database\Eloquent\Factories\Factory - */ - public function unverified() - { - return $this->state(function (array $attributes) { - return [ - 'email_verified_at' => null, - ]; - }); - } -} diff --git a/Chapter22/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php b/Chapter22/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php deleted file mode 100644 index cf6b776..0000000 --- a/Chapter22/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->string('name'); - $table->string('email')->unique(); - $table->timestamp('email_verified_at')->nullable(); - $table->string('password'); - $table->rememberToken(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('users'); - } -}; diff --git a/Chapter22/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php b/Chapter22/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php deleted file mode 100644 index 0ee0a36..0000000 --- a/Chapter22/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php +++ /dev/null @@ -1,32 +0,0 @@ -string('email')->index(); - $table->string('token'); - $table->timestamp('created_at')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('password_resets'); - } -} diff --git a/Chapter22/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/Chapter22/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php deleted file mode 100644 index 1719198..0000000 --- a/Chapter22/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php +++ /dev/null @@ -1,36 +0,0 @@ -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. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('failed_jobs'); - } -}; diff --git a/Chapter22/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/Chapter22/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php deleted file mode 100644 index fd235f8..0000000 --- a/Chapter22/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->morphs('tokenable'); - $table->string('name'); - $table->string('token', 64)->unique(); - $table->text('abilities')->nullable(); - $table->timestamp('last_used_at')->nullable(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('personal_access_tokens'); - } -}; diff --git a/Chapter22/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php b/Chapter22/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php deleted file mode 100644 index 2eecdc2..0000000 --- a/Chapter22/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php +++ /dev/null @@ -1,35 +0,0 @@ -id(); - $table->string('name'); - $table->text('description'); - $table->string('image'); - $table->integer('price'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('products'); - } -}; diff --git a/Chapter22/onlineStore/database/migrations/2022_02_12_140820_alter_users_table.php b/Chapter22/onlineStore/database/migrations/2022_02_12_140820_alter_users_table.php deleted file mode 100644 index 5bfcf7e..0000000 --- a/Chapter22/onlineStore/database/migrations/2022_02_12_140820_alter_users_table.php +++ /dev/null @@ -1,34 +0,0 @@ -string('role')->default('client'); - $table->integer('balance'); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::table('users', function (Blueprint $table) { - $table->dropColumn(['role']); - $table->dropColumn(['balance']); - }); - } -}; diff --git a/Chapter22/onlineStore/database/seeders/DatabaseSeeder.php b/Chapter22/onlineStore/database/seeders/DatabaseSeeder.php deleted file mode 100644 index 71f673f..0000000 --- a/Chapter22/onlineStore/database/seeders/DatabaseSeeder.php +++ /dev/null @@ -1,19 +0,0 @@ -create(); - } -} diff --git a/Chapter22/onlineStore/lang/en.json b/Chapter22/onlineStore/lang/en.json deleted file mode 100644 index 577680d..0000000 --- a/Chapter22/onlineStore/lang/en.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "The :attribute must contain at least one letter.": "The :attribute must contain at least one letter.", - "The :attribute must contain at least one number.": "The :attribute must contain at least one number.", - "The :attribute must contain at least one symbol.": "The :attribute must contain at least one symbol.", - "The :attribute must contain at least one uppercase and one lowercase letter.": "The :attribute must contain at least one uppercase and one lowercase letter.", - "The given :attribute has appeared in a data leak. Please choose a different :attribute.": "The given :attribute has appeared in a data leak. Please choose a different :attribute." -} diff --git a/Chapter22/onlineStore/lang/en/auth.php b/Chapter22/onlineStore/lang/en/auth.php deleted file mode 100644 index 6598e2c..0000000 --- a/Chapter22/onlineStore/lang/en/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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/Chapter22/onlineStore/lang/en/pagination.php b/Chapter22/onlineStore/lang/en/pagination.php deleted file mode 100644 index d481411..0000000 --- a/Chapter22/onlineStore/lang/en/pagination.php +++ /dev/null @@ -1,19 +0,0 @@ - '« Previous', - 'next' => 'Next »', - -]; diff --git a/Chapter22/onlineStore/lang/en/passwords.php b/Chapter22/onlineStore/lang/en/passwords.php deleted file mode 100644 index 2345a56..0000000 --- a/Chapter22/onlineStore/lang/en/passwords.php +++ /dev/null @@ -1,22 +0,0 @@ - '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/Chapter22/onlineStore/lang/en/validation.php b/Chapter22/onlineStore/lang/en/validation.php deleted file mode 100644 index 783003c..0000000 --- a/Chapter22/onlineStore/lang/en/validation.php +++ /dev/null @@ -1,163 +0,0 @@ - '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' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - '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' => [ - 'numeric' => 'The :attribute must be greater than :value.', - 'file' => 'The :attribute must be greater than :value kilobytes.', - 'string' => 'The :attribute must be greater than :value characters.', - 'array' => 'The :attribute must have more than :value items.', - ], - 'gte' => [ - 'numeric' => 'The :attribute must be greater than or equal to :value.', - 'file' => 'The :attribute must be greater than or equal to :value kilobytes.', - 'string' => 'The :attribute must be greater than or equal to :value characters.', - 'array' => 'The :attribute must have :value items or more.', - ], - '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' => [ - 'numeric' => 'The :attribute must be less than :value.', - 'file' => 'The :attribute must be less than :value kilobytes.', - 'string' => 'The :attribute must be less than :value characters.', - 'array' => 'The :attribute must have less than :value items.', - ], - 'lte' => [ - 'numeric' => 'The :attribute must be less than or equal to :value.', - 'file' => 'The :attribute must be less than or equal to :value kilobytes.', - 'string' => 'The :attribute must be less than or equal to :value characters.', - 'array' => 'The :attribute must not have more than :value items.', - ], - 'mac_address' => 'The :attribute must be a valid MAC address.', - 'max' => [ - 'numeric' => 'The :attribute must not be greater than :max.', - 'file' => 'The :attribute must not be greater than :max kilobytes.', - 'string' => 'The :attribute must not be greater than :max characters.', - 'array' => 'The :attribute must not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - '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.', - 'password' => 'The password is incorrect.', - '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' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - '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/Chapter22/onlineStore/package.json b/Chapter22/onlineStore/package.json deleted file mode 100644 index 7b71681..0000000 --- a/Chapter22/onlineStore/package.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "private": true, - "scripts": { - "dev": "npm run development", - "development": "mix", - "watch": "mix watch", - "watch-poll": "mix watch -- --watch-options-poll=1000", - "hot": "mix watch --hot", - "prod": "npm run production", - "production": "mix --production" - }, - "devDependencies": { - "@popperjs/core": "^2.10.2", - "axios": "^0.25", - "bootstrap": "^5.1.3", - "laravel-mix": "^6.0.6", - "lodash": "^4.17.19", - "postcss": "^8.1.14", - "sass": "^1.32.11", - "sass-loader": "^11.0.1" - } -} diff --git a/Chapter22/onlineStore/phpcs.xml b/Chapter22/onlineStore/phpcs.xml deleted file mode 100644 index a1cf2b6..0000000 --- a/Chapter22/onlineStore/phpcs.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - The coding standard for the Online Store project - - app/ - config/ - database/ - routes/ - */migrations/* - diff --git a/Chapter22/onlineStore/phpunit.xml b/Chapter22/onlineStore/phpunit.xml deleted file mode 100644 index 2ac86a1..0000000 --- a/Chapter22/onlineStore/phpunit.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - ./tests/Unit - - - ./tests/Feature - - - - - ./app - - - - - - - - - - - - - - diff --git a/Chapter22/onlineStore/public/.htaccess b/Chapter22/onlineStore/public/.htaccess deleted file mode 100644 index 3aec5e2..0000000 --- a/Chapter22/onlineStore/public/.htaccess +++ /dev/null @@ -1,21 +0,0 @@ - - - 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/Chapter22/onlineStore/public/css/admin.css b/Chapter22/onlineStore/public/css/admin.css deleted file mode 100644 index d9495a1..0000000 --- a/Chapter22/onlineStore/public/css/admin.css +++ /dev/null @@ -1,33 +0,0 @@ -.copyright { - background-color: #1a252f; -} - -.fixed { - -ms-flex: 0 0 250px; - flex: 0 0 250px; -} - -.content-grey { - background-color: #f8f9fc; -} - -hr { - margin-top: 0.8em; - margin-bottom: 0.8em; -} - -.img-profile { - height: 2rem; - width: 2rem; -} - -.profile-font { - color: #858796 !important; - font-size: 80%; - font-weight: 400; -} - -.card-header { - background-color: #f8f9fc; - border-bottom: 1px solid #e3e6f0; -} diff --git a/Chapter22/onlineStore/public/css/app.css b/Chapter22/onlineStore/public/css/app.css deleted file mode 100644 index cabac36..0000000 --- a/Chapter22/onlineStore/public/css/app.css +++ /dev/null @@ -1,20 +0,0 @@ -.bg-secondary { - background-color: #2c3e50 !important; -} - -.copyright { - background-color: #1a252f; -} - -.bg-primary { - background-color: #1abc9c !important; -} - -nav{ - font-weight: 700; -} - -.img-card{ - height: 18vw; - object-fit: cover; -} diff --git a/Chapter22/onlineStore/public/favicon.ico b/Chapter22/onlineStore/public/favicon.ico deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter22/onlineStore/public/img/game.png b/Chapter22/onlineStore/public/img/game.png deleted file mode 100644 index 85420e8bbc16098bf26b4ee63bde0e91a19d1f2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25896 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 cz>% diff --git a/Chapter22/onlineStore/public/img/safe.png b/Chapter22/onlineStore/public/img/safe.png deleted file mode 100644 index 445942c707af53210931f9f4f99f6d3cb69e5d89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19240 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
w==XB0?3|p=#`o%NsudE(E-U#KS3Snw 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 o>ir+C;RN10sIS0&a;p - - - - - - - - - - - - - - - - - - diff --git a/Chapter22/onlineStore/public/index.php b/Chapter22/onlineStore/public/index.php deleted file mode 100644 index 1d69f3a..0000000 --- a/Chapter22/onlineStore/public/index.php +++ /dev/null @@ -1,55 +0,0 @@ -make(Kernel::class); - -$response = $kernel->handle( - $request = Request::capture() -)->send(); - -$kernel->terminate($request, $response); diff --git a/Chapter22/onlineStore/public/robots.txt b/Chapter22/onlineStore/public/robots.txt deleted file mode 100644 index eb05362..0000000 --- a/Chapter22/onlineStore/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: diff --git a/Chapter22/onlineStore/resources/css/app.css b/Chapter22/onlineStore/resources/css/app.css deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter22/onlineStore/resources/js/app.js b/Chapter22/onlineStore/resources/js/app.js deleted file mode 100644 index 40c55f6..0000000 --- a/Chapter22/onlineStore/resources/js/app.js +++ /dev/null @@ -1 +0,0 @@ -require('./bootstrap'); diff --git a/Chapter22/onlineStore/resources/js/bootstrap.js b/Chapter22/onlineStore/resources/js/bootstrap.js deleted file mode 100644 index dcdc4df..0000000 --- a/Chapter22/onlineStore/resources/js/bootstrap.js +++ /dev/null @@ -1,32 +0,0 @@ -window._ = require('lodash'); - -try { - require('bootstrap'); -} catch (e) {} - -/** - * 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 = require('axios'); - -window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; - -/** - * 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'; - -// window.Pusher = require('pusher-js'); - -// window.Echo = new Echo({ -// broadcaster: 'pusher', -// key: process.env.MIX_PUSHER_APP_KEY, -// cluster: process.env.MIX_PUSHER_APP_CLUSTER, -// forceTLS: true -// }); diff --git a/Chapter22/onlineStore/resources/sass/_variables.scss b/Chapter22/onlineStore/resources/sass/_variables.scss deleted file mode 100644 index 172daaa..0000000 --- a/Chapter22/onlineStore/resources/sass/_variables.scss +++ /dev/null @@ -1,7 +0,0 @@ -// Body -$body-bg: #f8fafc; - -// Typography -$font-family-sans-serif: 'Nunito', sans-serif; -$font-size-base: 0.9rem; -$line-height-base: 1.6; diff --git a/Chapter22/onlineStore/resources/sass/app.scss b/Chapter22/onlineStore/resources/sass/app.scss deleted file mode 100644 index 3193ffa..0000000 --- a/Chapter22/onlineStore/resources/sass/app.scss +++ /dev/null @@ -1,8 +0,0 @@ -// Fonts -@import url('https://fonts.googleapis.com/css?family=Nunito'); - -// Variables -@import 'variables'; - -// Bootstrap -@import '~bootstrap/scss/bootstrap'; diff --git a/Chapter22/onlineStore/resources/views/admin/home/index.blade.php b/Chapter22/onlineStore/resources/views/admin/home/index.blade.php deleted file mode 100644 index a2b4868..0000000 --- a/Chapter22/onlineStore/resources/views/admin/home/index.blade.php +++ /dev/null @@ -1,12 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
-
- Admin Panel - Home Page -
-
- Welcome to the Admin Panel, use the sidebar to navigate between the different options. -
-
-@endsection diff --git a/Chapter22/onlineStore/resources/views/admin/product/edit.blade.php b/Chapter22/onlineStore/resources/views/admin/product/edit.blade.php deleted file mode 100644 index b8e03d8..0000000 --- a/Chapter22/onlineStore/resources/views/admin/product/edit.blade.php +++ /dev/null @@ -1,61 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
-
- Edit Product -
-
- @if($errors->any()) -
    - @foreach($errors->all() as $error) -
  • - {{ $error }}
  • - @endforeach -
- @endif - -
- @csrf - @method('PUT') -
-
-
- -
- -
-
-
-
-
- -
- -
-
-
-
-
-
-
- -
- -
-
-
-
-   -
-
-
- - -
- -
-
-
-@endsection diff --git a/Chapter22/onlineStore/resources/views/admin/product/index.blade.php b/Chapter22/onlineStore/resources/views/admin/product/index.blade.php deleted file mode 100644 index 19fbe4b..0000000 --- a/Chapter22/onlineStore/resources/views/admin/product/index.blade.php +++ /dev/null @@ -1,98 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
-
- Create Products -
-
- @if($errors->any()) -
    - @foreach($errors->all() as $error) -
  • - {{ $error }}
  • - @endforeach -
- @endif - -
- @csrf -
-
-
- -
- -
-
-
-
-
- -
- -
-
-
-
-
-
-
- -
- -
-
-
-
-   -
-
-
- - -
- -
-
-
- -
-
- Manage Products -
-
- - - - - - - - - - - @foreach ($viewData["products"] as $product) - - - - - - - @endforeach - -
IDNameEditDelete
{{ $product->getId() }}{{ $product->getName() }} - - - - -
- @csrf - @method('DELETE') - -
-
-
-
-@endsection diff --git a/Chapter22/onlineStore/resources/views/auth/login.blade.php b/Chapter22/onlineStore/resources/views/auth/login.blade.php deleted file mode 100644 index c7e5ea0..0000000 --- a/Chapter22/onlineStore/resources/views/auth/login.blade.php +++ /dev/null @@ -1,73 +0,0 @@ -@extends('layouts.app') - -@section('content') -
-@endsection diff --git a/Chapter22/onlineStore/resources/views/auth/passwords/confirm.blade.php b/Chapter22/onlineStore/resources/views/auth/passwords/confirm.blade.php deleted file mode 100644 index f8c8e61..0000000 --- a/Chapter22/onlineStore/resources/views/auth/passwords/confirm.blade.php +++ /dev/null @@ -1,49 +0,0 @@ -@extends('layouts.app') - -@section('content') - -@endsection diff --git a/Chapter22/onlineStore/resources/views/auth/passwords/email.blade.php b/Chapter22/onlineStore/resources/views/auth/passwords/email.blade.php deleted file mode 100644 index d1ac783..0000000 --- a/Chapter22/onlineStore/resources/views/auth/passwords/email.blade.php +++ /dev/null @@ -1,47 +0,0 @@ -@extends('layouts.app') - -@section('content') -
-
-
-
-
{{ __('Reset Password') }}
- -
- @if (session('status')) - - @endif - -
- @csrf - -
- - -
- - - @error('email') - - {{ $message }} - - @enderror -
-
- -
-
- -
-
-
-
-
-
-
-
-@endsection diff --git a/Chapter22/onlineStore/resources/views/auth/passwords/reset.blade.php b/Chapter22/onlineStore/resources/views/auth/passwords/reset.blade.php deleted file mode 100644 index dccf6c6..0000000 --- a/Chapter22/onlineStore/resources/views/auth/passwords/reset.blade.php +++ /dev/null @@ -1,65 +0,0 @@ -@extends('layouts.app') - -@section('content') -
-
-
-
-
{{ __('Reset Password') }}
- -
-
- @csrf - - - -
- - -
- - - @error('email') - - {{ $message }} - - @enderror -
-
- -
- - -
- - - @error('password') - - {{ $message }} - - @enderror -
-
- -
- - -
- -
-
- -
-
- -
-
-
-
-
-
-
-
-@endsection diff --git a/Chapter22/onlineStore/resources/views/auth/register.blade.php b/Chapter22/onlineStore/resources/views/auth/register.blade.php deleted file mode 100644 index e001a0b..0000000 --- a/Chapter22/onlineStore/resources/views/auth/register.blade.php +++ /dev/null @@ -1,77 +0,0 @@ -@extends('layouts.app') - -@section('content') -
-
-
-
-
{{ __('Register') }}
- -
-
- @csrf - -
- - -
- - - @error('name') - - {{ $message }} - - @enderror -
-
- -
- - -
- - - @error('email') - - {{ $message }} - - @enderror -
-
- -
- - -
- - - @error('password') - - {{ $message }} - - @enderror -
-
- -
- - -
- -
-
- -
-
- -
-
-
-
-
-
-
-
-@endsection diff --git a/Chapter22/onlineStore/resources/views/auth/verify.blade.php b/Chapter22/onlineStore/resources/views/auth/verify.blade.php deleted file mode 100644 index 9f8c1bc..0000000 --- a/Chapter22/onlineStore/resources/views/auth/verify.blade.php +++ /dev/null @@ -1,28 +0,0 @@ -@extends('layouts.app') - -@section('content') -
-
-
-
-
{{ __('Verify Your Email Address') }}
- -
- @if (session('resent')) - - @endif - - {{ __('Before proceeding, please check your email for a verification link.') }} - {{ __('If you did not receive the email') }}, -
- @csrf - . -
-
-
-
-
-
-@endsection diff --git a/Chapter22/onlineStore/resources/views/home.blade.php b/Chapter22/onlineStore/resources/views/home.blade.php deleted file mode 100644 index 1f34466..0000000 --- a/Chapter22/onlineStore/resources/views/home.blade.php +++ /dev/null @@ -1,23 +0,0 @@ -@extends('layouts.app') - -@section('content') -
-
-
-
-
{{ __('Dashboard') }}
- -
- @if (session('status')) - - @endif - - {{ __('You are logged in!') }} -
-
-
-
-
-@endsection diff --git a/Chapter22/onlineStore/resources/views/home/about.blade.php b/Chapter22/onlineStore/resources/views/home/about.blade.php deleted file mode 100644 index f79abf3..0000000 --- a/Chapter22/onlineStore/resources/views/home/about.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
-
-
-

{{ $viewData["description"] }}

-
-
-

{{ $viewData["author"] }}

-
-
-
-@endsection diff --git a/Chapter22/onlineStore/resources/views/home/index.blade.php b/Chapter22/onlineStore/resources/views/home/index.blade.php deleted file mode 100644 index 1affb20..0000000 --- a/Chapter22/onlineStore/resources/views/home/index.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('content') -
-
- -
-
- -
-
- -
-
-@endsection diff --git a/Chapter22/onlineStore/resources/views/layouts/admin.blade.php b/Chapter22/onlineStore/resources/views/layouts/admin.blade.php deleted file mode 100644 index 4aff3f8..0000000 --- a/Chapter22/onlineStore/resources/views/layouts/admin.blade.php +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - @yield('title', 'Admin - Online Store') - - - -
- - - -
- - -
- @yield('content') -
-
-
- - - - - - - - - diff --git a/Chapter22/onlineStore/resources/views/layouts/app.blade.php b/Chapter22/onlineStore/resources/views/layouts/app.blade.php deleted file mode 100644 index 81308e6..0000000 --- a/Chapter22/onlineStore/resources/views/layouts/app.blade.php +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - @yield('title', 'Online Store') - - - - - -
-
-

@yield('subtitle', 'A Laravel Online Store')

-
-
- - -
- @yield('content') -
- - - - - - - diff --git a/Chapter22/onlineStore/resources/views/product/index.blade.php b/Chapter22/onlineStore/resources/views/product/index.blade.php deleted file mode 100644 index 64c3e18..0000000 --- a/Chapter22/onlineStore/resources/views/product/index.blade.php +++ /dev/null @@ -1,18 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
- @foreach ($viewData["products"] as $product) - - @endforeach -
-@endsection diff --git a/Chapter22/onlineStore/resources/views/product/show.blade.php b/Chapter22/onlineStore/resources/views/product/show.blade.php deleted file mode 100644 index be37a01..0000000 --- a/Chapter22/onlineStore/resources/views/product/show.blade.php +++ /dev/null @@ -1,21 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
-
-
- getImage()) }}" class="img-fluid rounded-start"> -
-
-
-
- {{ $viewData["product"]->getName() }} (${{ $viewData["product"]->getPrice() }}) -
-

{{ $viewData["product"]->getDescription() }}

-

Add to Cart

-
-
-
-
-@endsection diff --git a/Chapter22/onlineStore/resources/views/welcome.blade.php b/Chapter22/onlineStore/resources/views/welcome.blade.php deleted file mode 100644 index c587c72..0000000 --- a/Chapter22/onlineStore/resources/views/welcome.blade.php +++ /dev/null @@ -1,7 +0,0 @@ -@extends('layouts.app') -@section('title', 'Home Page - Online Store') -@section('content') -
- Welcome to the application -
-@endsection \ No newline at end of file diff --git a/Chapter22/onlineStore/routes/api.php b/Chapter22/onlineStore/routes/api.php deleted file mode 100644 index eb6fa48..0000000 --- a/Chapter22/onlineStore/routes/api.php +++ /dev/null @@ -1,19 +0,0 @@ -get('/user', function (Request $request) { - return $request->user(); -}); diff --git a/Chapter22/onlineStore/routes/channels.php b/Chapter22/onlineStore/routes/channels.php deleted file mode 100644 index 5d451e1..0000000 --- a/Chapter22/onlineStore/routes/channels.php +++ /dev/null @@ -1,18 +0,0 @@ -id === (int) $id; -}); diff --git a/Chapter22/onlineStore/routes/console.php b/Chapter22/onlineStore/routes/console.php deleted file mode 100644 index e05f4c9..0000000 --- a/Chapter22/onlineStore/routes/console.php +++ /dev/null @@ -1,19 +0,0 @@ -comment(Inspiring::quote()); -})->purpose('Display an inspiring quote'); diff --git a/Chapter22/onlineStore/routes/web.php b/Chapter22/onlineStore/routes/web.php deleted file mode 100644 index 0ee4969..0000000 --- a/Chapter22/onlineStore/routes/web.php +++ /dev/null @@ -1,27 +0,0 @@ -name("home.index"); -Route::get('/about', 'App\Http\Controllers\HomeController@about')->name("home.about"); -Route::get('/products', 'App\Http\Controllers\ProductController@index')->name("product.index"); -Route::get('/products/{id}', 'App\Http\Controllers\ProductController@show')->name("product.show"); -Route::get('/admin', 'App\Http\Controllers\Admin\AdminHomeController@index')->name("admin.home.index"); -Route::get('/admin/products', 'App\Http\Controllers\Admin\AdminProductController@index')->name("admin.product.index"); -Route::post('/admin/products/store', 'App\Http\Controllers\Admin\AdminProductController@store')->name("admin.product.store"); -Route::delete('/admin/products/{id}/delete', 'App\Http\Controllers\Admin\AdminProductController@delete')->name("admin.product.delete"); -Route::get('/admin/products/{id}/edit', 'App\Http\Controllers\Admin\AdminProductController@edit')->name("admin.product.edit"); -Route::put('/admin/products/{id}/update', 'App\Http\Controllers\Admin\AdminProductController@update')->name("admin.product.update"); - -Auth::routes(); diff --git a/Chapter22/onlineStore/storage/app/.gitignore b/Chapter22/onlineStore/storage/app/.gitignore deleted file mode 100644 index 8f4803c..0000000 --- a/Chapter22/onlineStore/storage/app/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!public/ -!.gitignore diff --git a/Chapter22/onlineStore/storage/app/public/.gitignore b/Chapter22/onlineStore/storage/app/public/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter22/onlineStore/storage/app/public/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter22/onlineStore/storage/framework/.gitignore b/Chapter22/onlineStore/storage/framework/.gitignore deleted file mode 100644 index 05c4471..0000000 --- a/Chapter22/onlineStore/storage/framework/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -compiled.php -config.php -down -events.scanned.php -maintenance.php -routes.php -routes.scanned.php -schedule-* -services.json diff --git a/Chapter22/onlineStore/storage/framework/cache/.gitignore b/Chapter22/onlineStore/storage/framework/cache/.gitignore deleted file mode 100644 index 01e4a6c..0000000 --- a/Chapter22/onlineStore/storage/framework/cache/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!data/ -!.gitignore diff --git a/Chapter22/onlineStore/storage/framework/cache/data/.gitignore b/Chapter22/onlineStore/storage/framework/cache/data/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter22/onlineStore/storage/framework/cache/data/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter22/onlineStore/storage/framework/sessions/.gitignore b/Chapter22/onlineStore/storage/framework/sessions/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter22/onlineStore/storage/framework/sessions/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter22/onlineStore/storage/framework/testing/.gitignore b/Chapter22/onlineStore/storage/framework/testing/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter22/onlineStore/storage/framework/testing/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter22/onlineStore/storage/framework/views/.gitignore b/Chapter22/onlineStore/storage/framework/views/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter22/onlineStore/storage/framework/views/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter22/onlineStore/storage/logs/.gitignore b/Chapter22/onlineStore/storage/logs/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter22/onlineStore/storage/logs/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter22/onlineStore/tests/CreatesApplication.php b/Chapter22/onlineStore/tests/CreatesApplication.php deleted file mode 100644 index 547152f..0000000 --- a/Chapter22/onlineStore/tests/CreatesApplication.php +++ /dev/null @@ -1,22 +0,0 @@ -make(Kernel::class)->bootstrap(); - - return $app; - } -} diff --git a/Chapter22/onlineStore/tests/Feature/ExampleTest.php b/Chapter22/onlineStore/tests/Feature/ExampleTest.php deleted file mode 100644 index 78ccc21..0000000 --- a/Chapter22/onlineStore/tests/Feature/ExampleTest.php +++ /dev/null @@ -1,21 +0,0 @@ -get('/'); - - $response->assertStatus(200); - } -} diff --git a/Chapter22/onlineStore/tests/TestCase.php b/Chapter22/onlineStore/tests/TestCase.php deleted file mode 100644 index 2932d4a..0000000 --- a/Chapter22/onlineStore/tests/TestCase.php +++ /dev/null @@ -1,10 +0,0 @@ -assertTrue(true); - } -} diff --git a/Chapter22/onlineStore/webpack.mix.js b/Chapter22/onlineStore/webpack.mix.js deleted file mode 100644 index 1a2a958..0000000 --- a/Chapter22/onlineStore/webpack.mix.js +++ /dev/null @@ -1,16 +0,0 @@ -const mix = require('laravel-mix'); - -/* - |-------------------------------------------------------------------------- - | Mix Asset Management - |-------------------------------------------------------------------------- - | - | Mix provides a clean, fluent API for defining some Webpack build steps - | for your Laravel application. By default, we are compiling the Sass - | file for the application as well as bundling up all the JS files. - | - */ - -mix.js('resources/js/app.js', 'public/js') - .sass('resources/sass/app.scss', 'public/css') - .sourceMaps(); diff --git a/Chapter23/onlineStore/.editorconfig b/Chapter23/onlineStore/.editorconfig deleted file mode 100644 index 1671c9b..0000000 --- a/Chapter23/onlineStore/.editorconfig +++ /dev/null @@ -1,18 +0,0 @@ -root = true - -[*] -charset = utf-8 -end_of_line = lf -insert_final_newline = true -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true - -[*.md] -trim_trailing_whitespace = false - -[*.{yml,yaml}] -indent_size = 2 - -[docker-compose.yml] -indent_size = 4 diff --git a/Chapter23/onlineStore/.env.example b/Chapter23/onlineStore/.env.example deleted file mode 100644 index 8510237..0000000 --- a/Chapter23/onlineStore/.env.example +++ /dev/null @@ -1,52 +0,0 @@ -APP_NAME=Laravel -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=laravel -DB_USERNAME=root -DB_PASSWORD= - -BROADCAST_DRIVER=log -CACHE_DRIVER=file -FILESYSTEM_DISK=local -QUEUE_CONNECTION=sync -SESSION_DRIVER=file -SESSION_LIFETIME=120 - -MEMCACHED_HOST=127.0.0.1 - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -MAIL_MAILER=smtp -MAIL_HOST=mailhog -MAIL_PORT=1025 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS=null -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_APP_CLUSTER=mt1 - -MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/Chapter23/onlineStore/.gitattributes b/Chapter23/onlineStore/.gitattributes deleted file mode 100644 index 510d996..0000000 --- a/Chapter23/onlineStore/.gitattributes +++ /dev/null @@ -1,10 +0,0 @@ -* text=auto - -*.blade.php diff=html -*.css diff=css -*.html diff=html -*.md diff=markdown -*.php diff=php - -/.github export-ignore -CHANGELOG.md export-ignore diff --git a/Chapter23/onlineStore/.gitignore b/Chapter23/onlineStore/.gitignore deleted file mode 100644 index eb003b0..0000000 --- a/Chapter23/onlineStore/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -/node_modules -/public/hot -/public/storage -/storage/*.key -/vendor -.env -.env.backup -.phpunit.result.cache -docker-compose.override.yml -Homestead.json -Homestead.yaml -npm-debug.log -yarn-error.log -/.idea -/.vscode diff --git a/Chapter23/onlineStore/.styleci.yml b/Chapter23/onlineStore/.styleci.yml deleted file mode 100644 index 679a631..0000000 --- a/Chapter23/onlineStore/.styleci.yml +++ /dev/null @@ -1,13 +0,0 @@ -php: - preset: laravel - version: 8 - disabled: - - no_unused_imports - finder: - not-name: - - index.php -js: - finder: - not-name: - - webpack.mix.js -css: true diff --git a/Chapter23/onlineStore/README.md b/Chapter23/onlineStore/README.md deleted file mode 100644 index f171eca..0000000 --- a/Chapter23/onlineStore/README.md +++ /dev/null @@ -1,64 +0,0 @@ -

- -

-Build Status -Total Downloads -Latest Stable Version -License -

- -## About Laravel - -Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as: - -- [Simple, fast routing engine](https://laravel.com/docs/routing). -- [Powerful dependency injection container](https://laravel.com/docs/container). -- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage. -- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent). -- Database agnostic [schema migrations](https://laravel.com/docs/migrations). -- [Robust background job processing](https://laravel.com/docs/queues). -- [Real-time event broadcasting](https://laravel.com/docs/broadcasting). - -Laravel is accessible, powerful, and provides tools required for large, robust applications. - -## Learning Laravel - -Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework. - -If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 2000 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library. - -## Laravel Sponsors - -We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell). - -### Premium Partners - -- **[Vehikl](https://vehikl.com/)** -- **[Tighten Co.](https://tighten.co)** -- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** -- **[64 Robots](https://64robots.com)** -- **[Cubet Techno Labs](https://cubettech.com)** -- **[Cyber-Duck](https://cyber-duck.co.uk)** -- **[Many](https://www.many.co.uk)** -- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)** -- **[DevSquad](https://devsquad.com)** -- **[Curotec](https://www.curotec.com/services/technologies/laravel/)** -- **[OP.GG](https://op.gg)** -- **[WebReinvent](https://webreinvent.com/?utm_source=laravel&utm_medium=github&utm_campaign=patreon-sponsors)** -- **[Lendio](https://lendio.com)** - -## Contributing - -Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions). - -## Code of Conduct - -In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). - -## Security Vulnerabilities - -If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed. - -## License - -The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). diff --git a/Chapter23/onlineStore/app/Console/Kernel.php b/Chapter23/onlineStore/app/Console/Kernel.php deleted file mode 100644 index d8bc1d2..0000000 --- a/Chapter23/onlineStore/app/Console/Kernel.php +++ /dev/null @@ -1,32 +0,0 @@ -command('inspire')->hourly(); - } - - /** - * Register the commands for the application. - * - * @return void - */ - protected function commands() - { - $this->load(__DIR__.'/Commands'); - - require base_path('routes/console.php'); - } -} diff --git a/Chapter23/onlineStore/app/Exceptions/Handler.php b/Chapter23/onlineStore/app/Exceptions/Handler.php deleted file mode 100644 index 8e7fbd1..0000000 --- a/Chapter23/onlineStore/app/Exceptions/Handler.php +++ /dev/null @@ -1,41 +0,0 @@ -> - */ - protected $dontReport = [ - // - ]; - - /** - * A list of the inputs that are never flashed for validation exceptions. - * - * @var array - */ - protected $dontFlash = [ - 'current_password', - 'password', - 'password_confirmation', - ]; - - /** - * Register the exception handling callbacks for the application. - * - * @return void - */ - public function register() - { - $this->reportable(function (Throwable $e) { - // - }); - } -} diff --git a/Chapter23/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php b/Chapter23/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php deleted file mode 100644 index cd78cb3..0000000 --- a/Chapter23/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php +++ /dev/null @@ -1,16 +0,0 @@ -with("viewData", $viewData); - } -} diff --git a/Chapter23/onlineStore/app/Http/Controllers/Admin/AdminProductController.php b/Chapter23/onlineStore/app/Http/Controllers/Admin/AdminProductController.php deleted file mode 100644 index d1c6c52..0000000 --- a/Chapter23/onlineStore/app/Http/Controllers/Admin/AdminProductController.php +++ /dev/null @@ -1,79 +0,0 @@ -with("viewData", $viewData); - } - - public function store(Request $request) - { - Product::validate($request); - - $newProduct = new Product(); - $newProduct->setName($request->input('name')); - $newProduct->setDescription($request->input('description')); - $newProduct->setPrice($request->input('price')); - $newProduct->setImage("game.png"); - $newProduct->save(); - - if ($request->hasFile('image')) { - $imageName = $newProduct->getId().".".$request->file('image')->extension(); - Storage::disk('public')->put( - $imageName, - file_get_contents($request->file('image')->getRealPath()) - ); - $newProduct->setImage($imageName); - $newProduct->save(); - } - - return back(); - } - - public function delete($id) - { - Product::destroy($id); - return back(); - } - - public function edit($id) - { - $viewData = []; - $viewData["title"] = "Admin Page - Edit Product - Online Store"; - $viewData["product"] = Product::findOrFail($id); - return view('admin.product.edit')->with("viewData", $viewData); - } - - public function update(Request $request, $id) - { - Product::validate($request); - - $product = Product::findOrFail($id); - $product->setName($request->input('name')); - $product->setDescription($request->input('description')); - $product->setPrice($request->input('price')); - - if ($request->hasFile('image')) { - $imageName = $product->getId().".".$request->file('image')->extension(); - Storage::disk('public')->put( - $imageName, - file_get_contents($request->file('image')->getRealPath()) - ); - $product->setImage($imageName); - } - - $product->save(); - return redirect()->route('admin.product.index'); - } -} diff --git a/Chapter23/onlineStore/app/Http/Controllers/Auth/ConfirmPasswordController.php b/Chapter23/onlineStore/app/Http/Controllers/Auth/ConfirmPasswordController.php deleted file mode 100644 index 138c1f0..0000000 --- a/Chapter23/onlineStore/app/Http/Controllers/Auth/ConfirmPasswordController.php +++ /dev/null @@ -1,40 +0,0 @@ -middleware('auth'); - } -} diff --git a/Chapter23/onlineStore/app/Http/Controllers/Auth/ForgotPasswordController.php b/Chapter23/onlineStore/app/Http/Controllers/Auth/ForgotPasswordController.php deleted file mode 100644 index 465c39c..0000000 --- a/Chapter23/onlineStore/app/Http/Controllers/Auth/ForgotPasswordController.php +++ /dev/null @@ -1,22 +0,0 @@ -middleware('guest')->except('logout'); - } -} diff --git a/Chapter23/onlineStore/app/Http/Controllers/Auth/RegisterController.php b/Chapter23/onlineStore/app/Http/Controllers/Auth/RegisterController.php deleted file mode 100644 index 87e3a82..0000000 --- a/Chapter23/onlineStore/app/Http/Controllers/Auth/RegisterController.php +++ /dev/null @@ -1,74 +0,0 @@ -middleware('guest'); - } - - /** - * Get a validator for an incoming registration request. - * - * @param array $data - * @return \Illuminate\Contracts\Validation\Validator - */ - protected function validator(array $data) - { - return Validator::make($data, [ - 'name' => ['required', 'string', 'max:255'], - 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], - 'password' => ['required', 'string', 'min:8', 'confirmed'], - ]); - } - - /** - * Create a new user instance after a valid registration. - * - * @param array $data - * @return \App\Models\User - */ - protected function create(array $data) - { - return User::create([ - 'name' => $data['name'], - 'email' => $data['email'], - 'password' => Hash::make($data['password']), - 'balance' => 5000, - ]); - } -} diff --git a/Chapter23/onlineStore/app/Http/Controllers/Auth/ResetPasswordController.php b/Chapter23/onlineStore/app/Http/Controllers/Auth/ResetPasswordController.php deleted file mode 100644 index b1726a3..0000000 --- a/Chapter23/onlineStore/app/Http/Controllers/Auth/ResetPasswordController.php +++ /dev/null @@ -1,30 +0,0 @@ -middleware('auth'); - $this->middleware('signed')->only('verify'); - $this->middleware('throttle:6,1')->only('verify', 'resend'); - } -} diff --git a/Chapter23/onlineStore/app/Http/Controllers/Controller.php b/Chapter23/onlineStore/app/Http/Controllers/Controller.php deleted file mode 100644 index a0a2a8a..0000000 --- a/Chapter23/onlineStore/app/Http/Controllers/Controller.php +++ /dev/null @@ -1,13 +0,0 @@ -with("viewData", $viewData); - } - - public function about() - { - $viewData = []; - $viewData["title"] = "About us - Online Store"; - $viewData["subtitle"] = "About us"; - $viewData["description"] = "This is an about page ..."; - $viewData["author"] = "Developed by: Your Name"; - return view('home.about')->with("viewData", $viewData); - } -} diff --git a/Chapter23/onlineStore/app/Http/Controllers/ProductController.php b/Chapter23/onlineStore/app/Http/Controllers/ProductController.php deleted file mode 100644 index d27a3a3..0000000 --- a/Chapter23/onlineStore/app/Http/Controllers/ProductController.php +++ /dev/null @@ -1,29 +0,0 @@ -with("viewData", $viewData); - } - - public function show($id) - { - $viewData = []; - $product = Product::findOrFail($id); - $viewData["title"] = $product->getName()." - Online Store"; - $viewData["subtitle"] = $product->getName()." - Product information"; - $viewData["product"] = $product; - return view('product.show')->with("viewData", $viewData); - } -} diff --git a/Chapter23/onlineStore/app/Http/Kernel.php b/Chapter23/onlineStore/app/Http/Kernel.php deleted file mode 100644 index c10d1c5..0000000 --- a/Chapter23/onlineStore/app/Http/Kernel.php +++ /dev/null @@ -1,68 +0,0 @@ - - */ - protected $middleware = [ - // \App\Http\Middleware\TrustHosts::class, - \App\Http\Middleware\TrustProxies::class, - \Fruitcake\Cors\HandleCors::class, - \App\Http\Middleware\PreventRequestsDuringMaintenance::class, - \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, - \App\Http\Middleware\TrimStrings::class, - \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, - ]; - - /** - * The application's route middleware groups. - * - * @var array> - */ - protected $middlewareGroups = [ - 'web' => [ - \App\Http\Middleware\EncryptCookies::class, - \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, - \Illuminate\Session\Middleware\StartSession::class, - // \Illuminate\Session\Middleware\AuthenticateSession::class, - \Illuminate\View\Middleware\ShareErrorsFromSession::class, - \App\Http\Middleware\VerifyCsrfToken::class, - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - - 'api' => [ - // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, - 'throttle:api', - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - ]; - - /** - * The application's route middleware. - * - * These middleware may be assigned to groups or used individually. - * - * @var array - */ - protected $routeMiddleware = [ - 'auth' => \App\Http\Middleware\Authenticate::class, - 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::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, - 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, - 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, - 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, - 'admin' => \App\Http\Middleware\AdminAuthMiddleware::class, - ]; -} diff --git a/Chapter23/onlineStore/app/Http/Middleware/AdminAuthMiddleware.php b/Chapter23/onlineStore/app/Http/Middleware/AdminAuthMiddleware.php deleted file mode 100644 index 6e5306b..0000000 --- a/Chapter23/onlineStore/app/Http/Middleware/AdminAuthMiddleware.php +++ /dev/null @@ -1,26 +0,0 @@ -getRole() == 'admin') { - return $next($request); - } else { - return redirect()->route('home.index'); - } - } -} diff --git a/Chapter23/onlineStore/app/Http/Middleware/Authenticate.php b/Chapter23/onlineStore/app/Http/Middleware/Authenticate.php deleted file mode 100644 index 704089a..0000000 --- a/Chapter23/onlineStore/app/Http/Middleware/Authenticate.php +++ /dev/null @@ -1,21 +0,0 @@ -expectsJson()) { - return route('login'); - } - } -} diff --git a/Chapter23/onlineStore/app/Http/Middleware/EncryptCookies.php b/Chapter23/onlineStore/app/Http/Middleware/EncryptCookies.php deleted file mode 100644 index 867695b..0000000 --- a/Chapter23/onlineStore/app/Http/Middleware/EncryptCookies.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter23/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/Chapter23/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php deleted file mode 100644 index 74cbd9a..0000000 --- a/Chapter23/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter23/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php b/Chapter23/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php deleted file mode 100644 index a2813a0..0000000 --- a/Chapter23/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php +++ /dev/null @@ -1,32 +0,0 @@ -check()) { - return redirect(RouteServiceProvider::HOME); - } - } - - return $next($request); - } -} diff --git a/Chapter23/onlineStore/app/Http/Middleware/TrimStrings.php b/Chapter23/onlineStore/app/Http/Middleware/TrimStrings.php deleted file mode 100644 index 88cadca..0000000 --- a/Chapter23/onlineStore/app/Http/Middleware/TrimStrings.php +++ /dev/null @@ -1,19 +0,0 @@ - - */ - protected $except = [ - 'current_password', - 'password', - 'password_confirmation', - ]; -} diff --git a/Chapter23/onlineStore/app/Http/Middleware/TrustHosts.php b/Chapter23/onlineStore/app/Http/Middleware/TrustHosts.php deleted file mode 100644 index 7186414..0000000 --- a/Chapter23/onlineStore/app/Http/Middleware/TrustHosts.php +++ /dev/null @@ -1,20 +0,0 @@ - - */ - public function hosts() - { - return [ - $this->allSubdomainsOfApplicationUrl(), - ]; - } -} diff --git a/Chapter23/onlineStore/app/Http/Middleware/TrustProxies.php b/Chapter23/onlineStore/app/Http/Middleware/TrustProxies.php deleted file mode 100644 index 3391630..0000000 --- a/Chapter23/onlineStore/app/Http/Middleware/TrustProxies.php +++ /dev/null @@ -1,28 +0,0 @@ -|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/Chapter23/onlineStore/app/Http/Middleware/VerifyCsrfToken.php b/Chapter23/onlineStore/app/Http/Middleware/VerifyCsrfToken.php deleted file mode 100644 index 9e86521..0000000 --- a/Chapter23/onlineStore/app/Http/Middleware/VerifyCsrfToken.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter23/onlineStore/app/Models/Product.php b/Chapter23/onlineStore/app/Models/Product.php deleted file mode 100644 index b8f58f6..0000000 --- a/Chapter23/onlineStore/app/Models/Product.php +++ /dev/null @@ -1,99 +0,0 @@ -attributes['id'] - int - contains the product primary key (id) - * $this->attributes['name'] - string - contains the product name - * $this->attributes['description'] - string - contains the product description - * $this->attributes['image'] - string - contains the product image - * $this->attributes['price'] - int - contains the product price - * $this->attributes['created_at'] - timestamp - contains the product creation date - * $this->attributes['updated_at'] - timestamp - contains the product update date - */ - - public static function validate($request) - { - $request->validate([ - "name" => "required|max:255", - "description" => "required", - "price" => "required|numeric|gt:0", - 'image' => 'image', - ]); - } - - public function getId() - { - return $this->attributes['id']; - } - - public function setId($id) - { - $this->attributes['id'] = $id; - } - - public function getName() - { - return $this->attributes['name']; - } - - public function setName($name) - { - $this->attributes['name'] = $name; - } - - public function getDescription() - { - return $this->attributes['description']; - } - - public function setDescription($description) - { - $this->attributes['description'] = $description; - } - - public function getImage() - { - return $this->attributes['image']; - } - - public function setImage($image) - { - $this->attributes['image'] = $image; - } - - public function getPrice() - { - return $this->attributes['price']; - } - - public function setPrice($price) - { - $this->attributes['price'] = $price; - } - - public function getCreatedAt() - { - return $this->attributes['created_at']; - } - - public function setCreatedAt($createdAt) - { - $this->attributes['created_at'] = $createdAt; - } - - public function getUpdatedAt() - { - return $this->attributes['updated_at']; - } - - public function setUpdatedAt($updatedAt) - { - $this->attributes['updated_at'] = $updatedAt; - } -} diff --git a/Chapter23/onlineStore/app/Models/User.php b/Chapter23/onlineStore/app/Models/User.php deleted file mode 100644 index 0749c5a..0000000 --- a/Chapter23/onlineStore/app/Models/User.php +++ /dev/null @@ -1,139 +0,0 @@ -attributes['id'] - int - contains the user primary key (id) - * $this->attributes['name'] - string - contains the user name - * $this->attributes['email'] - string - contains the user email - * $this->attributes['email_verified_at'] - timestamp - contains the user email verification date - * $this->attributes['password'] - string - contains the user password - * $this->attributes['remember_token'] - string - contains the user password - * $this->attributes['role'] - string - contains the user role (client or admin) - * $this->attributes['balance'] - int - contains the user balance - * $this->attributes['created_at'] - timestamp - contains the user creation date - * $this->attributes['updated_at'] - timestamp - contains the user update date - */ - - /** - * The attributes that are mass assignable. - * - * @var array - */ - protected $fillable = [ - 'name', - 'email', - 'password', - 'balance', - ]; - - /** - * 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', - ]; - - public function getId() - { - return $this->attributes['id']; - } - - public function setId($id) - { - $this->attributes['id'] = $id; - } - - public function getName() - { - return $this->attributes['name']; - } - - public function setName($name) - { - $this->attributes['name'] = $name; - } - - public function getEmail() - { - return $this->attributes['email']; - } - - public function setEmail($email) - { - $this->attributes['email'] = $email; - } - - public function getPassword() - { - return $this->attributes['password']; - } - - public function setPassword($password) - { - $this->attributes['password'] = $password; - } - - public function getRole() - { - return $this->attributes['role']; - } - - public function setRole($role) - { - $this->attributes['role'] = $role; - } - - public function getBalance() - { - return $this->attributes['balance']; - } - - public function setBalance($balance) - { - $this->attributes['balance'] = $balance; - } - - public function getCreatedAt() - { - return $this->attributes['created_at']; - } - - public function setCreatedAt($createdAt) - { - $this->attributes['created_at'] = $createdAt; - } - - public function getUpdatedAt() - { - return $this->attributes['updated_at']; - } - - public function setUpdatedAt($updatedAt) - { - $this->attributes['updated_at'] = $updatedAt; - } -} diff --git a/Chapter23/onlineStore/app/Providers/AppServiceProvider.php b/Chapter23/onlineStore/app/Providers/AppServiceProvider.php deleted file mode 100644 index ee8ca5b..0000000 --- a/Chapter23/onlineStore/app/Providers/AppServiceProvider.php +++ /dev/null @@ -1,28 +0,0 @@ - - */ - protected $policies = [ - // 'App\Models\Model' => 'App\Policies\ModelPolicy', - ]; - - /** - * Register any authentication / authorization services. - * - * @return void - */ - public function boot() - { - $this->registerPolicies(); - - // - } -} diff --git a/Chapter23/onlineStore/app/Providers/BroadcastServiceProvider.php b/Chapter23/onlineStore/app/Providers/BroadcastServiceProvider.php deleted file mode 100644 index 395c518..0000000 --- a/Chapter23/onlineStore/app/Providers/BroadcastServiceProvider.php +++ /dev/null @@ -1,21 +0,0 @@ -> - */ - protected $listen = [ - Registered::class => [ - SendEmailVerificationNotification::class, - ], - ]; - - /** - * Register any events for your application. - * - * @return void - */ - public function boot() - { - // - } -} diff --git a/Chapter23/onlineStore/app/Providers/RouteServiceProvider.php b/Chapter23/onlineStore/app/Providers/RouteServiceProvider.php deleted file mode 100644 index fb766eb..0000000 --- a/Chapter23/onlineStore/app/Providers/RouteServiceProvider.php +++ /dev/null @@ -1,63 +0,0 @@ -configureRateLimiting(); - - $this->routes(function () { - Route::prefix('api') - ->middleware('api') - ->namespace($this->namespace) - ->group(base_path('routes/api.php')); - - Route::middleware('web') - ->namespace($this->namespace) - ->group(base_path('routes/web.php')); - }); - } - - /** - * Configure the rate limiters for the application. - * - * @return void - */ - protected function configureRateLimiting() - { - RateLimiter::for('api', function (Request $request) { - return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); - }); - } -} diff --git a/Chapter23/onlineStore/artisan b/Chapter23/onlineStore/artisan deleted file mode 100644 index 67a3329..0000000 --- a/Chapter23/onlineStore/artisan +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env php -make(Illuminate\Contracts\Console\Kernel::class); - -$status = $kernel->handle( - $input = new Symfony\Component\Console\Input\ArgvInput, - new Symfony\Component\Console\Output\ConsoleOutput -); - -/* -|-------------------------------------------------------------------------- -| Shutdown The Application -|-------------------------------------------------------------------------- -| -| Once Artisan has finished running, we will fire off the shutdown events -| so that any final work may be done by the application before we shut -| down the process. This is the last thing to happen to the request. -| -*/ - -$kernel->terminate($input, $status); - -exit($status); diff --git a/Chapter23/onlineStore/bootstrap/app.php b/Chapter23/onlineStore/bootstrap/app.php deleted file mode 100644 index 037e17d..0000000 --- a/Chapter23/onlineStore/bootstrap/app.php +++ /dev/null @@ -1,55 +0,0 @@ -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/Chapter23/onlineStore/bootstrap/cache/.gitignore b/Chapter23/onlineStore/bootstrap/cache/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter23/onlineStore/bootstrap/cache/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter23/onlineStore/composer.json b/Chapter23/onlineStore/composer.json deleted file mode 100644 index a9459b5..0000000 --- a/Chapter23/onlineStore/composer.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "name": "laravel/laravel", - "type": "project", - "description": "The Laravel Framework.", - "keywords": ["framework", "laravel"], - "license": "MIT", - "require": { - "php": "^8.0", - "fruitcake/laravel-cors": "^2.0.5", - "guzzlehttp/guzzle": "^7.2", - "laravel/framework": "^9.0", - "laravel/sanctum": "^2.14", - "laravel/tinker": "^2.7", - "laravel/ui": "^3.4" - }, - "require-dev": { - "fakerphp/faker": "^1.9.1", - "laravel/sail": "^1.0.1", - "mockery/mockery": "^1.4.4", - "nunomaduro/collision": "^6.1", - "phpunit/phpunit": "^9.5.10", - "spatie/laravel-ignition": "^1.0", - "squizlabs/php_codesniffer": "^3.6" - }, - "autoload": { - "psr-4": { - "App\\": "app/", - "Database\\Factories\\": "database/factories/", - "Database\\Seeders\\": "database/seeders/" - } - }, - "autoload-dev": { - "psr-4": { - "Tests\\": "tests/" - } - }, - "scripts": { - "post-autoload-dump": [ - "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", - "@php artisan package:discover --ansi" - ], - "post-update-cmd": [ - "@php artisan vendor:publish --tag=laravel-assets --ansi --force" - ], - "post-root-package-install": [ - "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" - ], - "post-create-project-cmd": [ - "@php artisan key:generate --ansi" - ] - }, - "extra": { - "laravel": { - "dont-discover": [] - } - }, - "config": { - "optimize-autoloader": true, - "preferred-install": "dist", - "sort-packages": true - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/Chapter23/onlineStore/composer.lock b/Chapter23/onlineStore/composer.lock deleted file mode 100644 index 78c86f1..0000000 --- a/Chapter23/onlineStore/composer.lock +++ /dev/null @@ -1,7921 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "d299b51f0f07ec600b4949240f4664af", - "packages": [ - { - "name": "asm89/stack-cors", - "version": "v2.1.1", - "source": { - "type": "git", - "url": "https://github.com/asm89/stack-cors.git", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4|^5|^6" - }, - "require-dev": { - "phpunit/phpunit": "^7|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "psr-4": { - "Asm89\\Stack\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alexander", - "email": "iam.asm89@gmail.com" - } - ], - "description": "Cross-origin resource sharing library and stack middleware", - "homepage": "https://github.com/asm89/stack-cors", - "keywords": [ - "cors", - "stack" - ], - "support": { - "issues": "https://github.com/asm89/stack-cors/issues", - "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" - }, - "time": "2022-01-18T09:12:03+00:00" - }, - { - "name": "brick/math", - "version": "0.9.3", - "source": { - "type": "git", - "url": "https://github.com/brick/math.git", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", - "vimeo/psalm": "4.9.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Brick\\Math\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Arbitrary-precision arithmetic library", - "keywords": [ - "Arbitrary-precision", - "BigInteger", - "BigRational", - "arithmetic", - "bigdecimal", - "bignum", - "brick", - "math" - ], - "support": { - "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.9.3" - }, - "funding": [ - { - "url": "https://github.com/BenMorel", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/brick/math", - "type": "tidelift" - } - ], - "time": "2021-08-15T20:50:18+00:00" - }, - { - "name": "dflydev/dot-access-data", - "version": "v3.0.1", - "source": { - "type": "git", - "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c", - "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": "^3.14" - }, - "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.1" - }, - "time": "2021-08-13T13:06:58+00:00" - }, - { - "name": "doctrine/inflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "vimeo/psalm": "^4.10" - }, - "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.4" - }, - "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": "2021-10-22T20:16:43+00:00" - }, - { - "name": "doctrine/lexer", - "version": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" - } - }, - "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/1.2.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%2Flexer", - "type": "tidelift" - } - ], - "time": "2022-01-12T08:27:12+00:00" - }, - { - "name": "dragonmantank/cron-expression", - "version": "v3.3.1", - "source": { - "type": "git", - "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "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.1" - }, - "funding": [ - { - "url": "https://github.com/dragonmantank", - "type": "github" - } - ], - "time": "2022-01-18T15:43:28+00:00" - }, - { - "name": "egulias/email-validator", - "version": "3.1.2", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ee0db30118f661fb166bcffbf5d82032df484697", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^1.2", - "php": ">=7.2", - "symfony/polyfill-intl-idn": "^1.15" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^8.5.8|^9.3.3", - "vimeo/psalm": "^4" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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/3.1.2" - }, - "funding": [ - { - "url": "https://github.com/egulias", - "type": "github" - } - ], - "time": "2021-10-11T09:18:27+00:00" - }, - { - "name": "fruitcake/laravel-cors", - "version": "v2.0.5", - "source": { - "type": "git", - "url": "https://github.com/fruitcake/laravel-cors.git", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "shasum": "" - }, - "require": { - "asm89/stack-cors": "^2.0.1", - "illuminate/contracts": "^6|^7|^8|^9", - "illuminate/support": "^6|^7|^8|^9", - "php": ">=7.2", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4.3.4|^5|^6" - }, - "require-dev": { - "laravel/framework": "^6|^7.24|^8", - "orchestra/testbench-dusk": "^4|^5|^6|^7", - "phpunit/phpunit": "^6|^7|^8|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - }, - "laravel": { - "providers": [ - "Fruitcake\\Cors\\CorsServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Fruitcake\\Cors\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fruitcake", - "homepage": "https://fruitcake.nl" - }, - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", - "keywords": [ - "api", - "cors", - "crossdomain", - "laravel" - ], - "support": { - "issues": "https://github.com/fruitcake/laravel-cors/issues", - "source": "https://github.com/fruitcake/laravel-cors/tree/v2.0.5" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "time": "2022-01-03T14:53:04+00:00" - }, - { - "name": "graham-campbell/result-type", - "version": "v1.0.4", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "0690bde05318336c7221785f2a932467f98b64ca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/0690bde05318336c7221785f2a932467f98b64ca", - "reference": "0690bde05318336c7221785f2a932467f98b64ca", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "phpoption/phpoption": "^1.8" - }, - "require-dev": { - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", - "type": "tidelift" - } - ], - "time": "2021-11-21T21:41:47+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "7.4.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.8.3 || ^2.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.4.1", - "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.5 || ^9.3.5", - "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": { - "branch-alias": { - "dev-master": "7.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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.4.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": "2021-12-06T18:43:05+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "1.5.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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/1.5.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "time": "2021-10-22T20:56:57+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.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.4.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.8 || ^9.3.10" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "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.1.0" - }, - "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": "2021-10-06T17:43:30+00:00" - }, - { - "name": "laravel/framework", - "version": "v9.0.1", - "source": { - "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "shasum": "" - }, - "require": { - "doctrine/inflector": "^2.0", - "dragonmantank/cron-expression": "^3.1", - "egulias/email-validator": "^3.1", - "ext-mbstring": "*", - "ext-openssl": "*", - "laravel/serializable-closure": "^1.0", - "league/commonmark": "^2.2", - "league/flysystem": "^3.0", - "monolog/monolog": "^2.0", - "nesbot/carbon": "^2.53.1", - "php": "^8.0.2", - "psr/container": "^1.1.1|^2.0.1", - "psr/log": "^1.0|^2.0|^3.0", - "psr/simple-cache": "^1.0|^2.0|^3.0", - "ramsey/uuid": "^4.2.2", - "symfony/console": "^6.0", - "symfony/error-handler": "^6.0", - "symfony/finder": "^6.0", - "symfony/http-foundation": "^6.0", - "symfony/http-kernel": "^6.0", - "symfony/mailer": "^6.0", - "symfony/mime": "^6.0", - "symfony/process": "^6.0", - "symfony/routing": "^6.0", - "symfony/var-dumper": "^6.0", - "tijsverkoyen/css-to-inline-styles": "^2.2.2", - "vlucas/phpdotenv": "^5.4.1", - "voku/portable-ascii": "^2.0" - }, - "conflict": { - "tightenco/collect": "<5.5.33" - }, - "provide": { - "psr/container-implementation": "1.1|2.0", - "psr/simple-cache-implementation": "1.0|2.0|3.0" - }, - "replace": { - "illuminate/auth": "self.version", - "illuminate/broadcasting": "self.version", - "illuminate/bus": "self.version", - "illuminate/cache": "self.version", - "illuminate/collections": "self.version", - "illuminate/conditionable": "self.version", - "illuminate/config": "self.version", - "illuminate/console": "self.version", - "illuminate/container": "self.version", - "illuminate/contracts": "self.version", - "illuminate/cookie": "self.version", - "illuminate/database": "self.version", - "illuminate/encryption": "self.version", - "illuminate/events": "self.version", - "illuminate/filesystem": "self.version", - "illuminate/hashing": "self.version", - "illuminate/http": "self.version", - "illuminate/log": "self.version", - "illuminate/macroable": "self.version", - "illuminate/mail": "self.version", - "illuminate/notifications": "self.version", - "illuminate/pagination": "self.version", - "illuminate/pipeline": "self.version", - "illuminate/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": { - "aws/aws-sdk-php": "^3.198.1", - "doctrine/dbal": "^2.13.3|^3.1.4", - "fakerphp/faker": "^1.9.2", - "guzzlehttp/guzzle": "^7.2", - "league/flysystem-aws-s3-v3": "^3.0", - "league/flysystem-ftp": "^3.0", - "league/flysystem-sftp-v3": "^3.0", - "mockery/mockery": "^1.4.4", - "orchestra/testbench-core": "^7.0", - "pda/pheanstalk": "^4.0", - "phpstan/phpstan": "^1.0", - "phpunit/phpunit": "^9.5.8", - "predis/predis": "^1.1.9", - "symfony/amazon-mailer": "^6.0", - "symfony/cache": "^6.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.198.1).", - "brianium/paratest": "Required to run tests in parallel (^6.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", - "ext-bcmath": "Required to use the multiple_of validation rule.", - "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.", - "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.2).", - "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-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", - "mockery/mockery": "Required to use mocking (^1.4.4).", - "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).", - "predis/predis": "Required to use the predis connector (^1.1.9).", - "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.0).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^6.0).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.0).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.0).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.0).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.x-dev" - } - }, - "autoload": { - "files": [ - "src/Illuminate/Collections/helpers.php", - "src/Illuminate/Events/functions.php", - "src/Illuminate/Foundation/helpers.php", - "src/Illuminate/Support/helpers.php" - ], - "psr-4": { - "Illuminate\\": "src/Illuminate/", - "Illuminate\\Support\\": [ - "src/Illuminate/Macroable/", - "src/Illuminate/Collections/", - "src/Illuminate/Conditionable/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Laravel Framework.", - "homepage": "https://laravel.com", - "keywords": [ - "framework", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2022-02-09T15:00:05+00:00" - }, - { - "name": "laravel/sanctum", - "version": "v2.14.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/sanctum.git", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/0647a87140c7522e75826cffcadb3ad6e01f71e9", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/contracts": "^6.9|^7.0|^8.0|^9.0", - "illuminate/database": "^6.9|^7.0|^8.0|^9.0", - "illuminate/support": "^6.9|^7.0|^8.0|^9.0", - "php": "^7.2|^8.0" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0", - "phpunit/phpunit": "^8.0|^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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": "2022-01-12T15:07:43+00:00" - }, - { - "name": "laravel/serializable-closure", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/serializable-closure.git", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/65c9faf50d567b65d81764a44526545689e3fe63", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "pestphp/pest": "^1.18", - "phpstan/phpstan": "^0.12.98", - "symfony/var-dumper": "^5.3" - }, - "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": "2022-02-01T16:29:39+00:00" - }, - { - "name": "laravel/tinker", - "version": "v2.7.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/tinker.git", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/5f2f9815b7631b9f586a3de7933c25f9327d4073", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073", - "shasum": "" - }, - "require": { - "illuminate/console": "^6.0|^7.0|^8.0|^9.0", - "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.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", - "phpunit/phpunit": "^8.5.8|^9.3.3" - }, - "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.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.7.0" - }, - "time": "2022-01-10T08:52:49+00:00" - }, - { - "name": "laravel/ui", - "version": "v3.4.3", - "source": { - "type": "git", - "url": "https://github.com/laravel/ui.git", - "reference": "64a0f43492c00780b2261c56cd7007a4f370d95b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/ui/zipball/64a0f43492c00780b2261c56cd7007a4f370d95b", - "reference": "64a0f43492c00780b2261c56cd7007a4f370d95b", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.42|^9.0", - "illuminate/filesystem": "^8.42|^9.0", - "illuminate/support": "^8.82|^9.0", - "illuminate/validation": "^8.42|^9.0", - "php": "^7.3|^8.0" - }, - "require-dev": { - "orchestra/testbench": "^6.23|^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - }, - "laravel": { - "providers": [ - "Laravel\\Ui\\UiServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Laravel\\Ui\\": "src/", - "Illuminate\\Foundation\\Auth\\": "auth-backend/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "Laravel UI utilities and presets.", - "keywords": [ - "laravel", - "ui" - ], - "support": { - "source": "https://github.com/laravel/ui/tree/v3.4.3" - }, - "time": "2022-02-08T14:19:32+00:00" - }, - { - "name": "league/commonmark", - "version": "2.2.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/commonmark.git", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "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.15" - }, - "require-dev": { - "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.0", - "commonmark/commonmark.js": "0.30.0", - "composer/package-versions-deprecated": "^1.8", - "erusev/parsedown": "^1.0", - "ext-json": "*", - "github/gfm": "0.29.0", - "michelf/php-markdown": "^1.4", - "phpstan/phpstan": "^0.12.88 || ^1.0.0", - "phpunit/phpunit": "^9.5.5", - "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", - "unleashedtech/php-coding-standard": "^3.1", - "vimeo/psalm": "^4.7.3" - }, - "suggest": { - "symfony/yaml": "v2.3+ required if using the Front Matter extension" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.3-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": "2022-01-25T14:37:33+00:00" - }, - { - "name": "league/config", - "version": "v1.1.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/config.git", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/config/zipball/a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^3.0.1", - "nette/schema": "^1.2", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.90", - "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": "2021-08-14T12:15:32+00:00" - }, - { - "name": "league/flysystem", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9f8b4260031bfef5497477da53dd57b2aaff0e06", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06", - "shasum": "" - }, - "require": { - "ext-json": "*", - "league/mime-type-detection": "^1.0.0", - "php": "^8.0.2" - }, - "conflict": { - "guzzlehttp/guzzle": "<7.0", - "guzzlehttp/ringphp": "<1.1.1", - "symfony/http-client": "<5.2" - }, - "require-dev": { - "async-aws/s3": "^1.5", - "async-aws/simple-s3": "^1.0", - "aws/aws-sdk-php": "^3.198.1", - "composer/semver": "^3.0", - "ext-fileinfo": "*", - "ext-ftp": "*", - "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.5", - "google/cloud-storage": "^1.23", - "phpseclib/phpseclib": "^2.0", - "phpstan/phpstan": "^0.12.26", - "phpunit/phpunit": "^9.5.11", - "sabre/dav": "^4.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.0.3" - }, - "funding": [ - { - "url": "https://offset.earth/frankdejonge", - "type": "custom" - }, - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2022-01-31T19:41:04+00:00" - }, - { - "name": "league/mime-type-detection", - "version": "1.9.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/aa70e813a6ad3d1558fc927863d47309b4c23e69", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.2", - "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" - }, - "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.9.0" - }, - "funding": [ - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2021-11-21T11:48:40+00:00" - }, - { - "name": "monolog/monolog", - "version": "2.3.5", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd4380d6fc37626e2f799f29d91195040137eba9", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "provide": { - "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7", - "graylog2/gelf-php": "^1.4.2", - "mongodb/mongodb": "^1.8", - "php-amqplib/php-amqplib": "~2.4 || ^3", - "php-console/php-console": "^3.1.3", - "phpspec/prophecy": "^1.6.1", - "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5", - "predis/predis": "^1.1", - "rollbar/rollbar": "^1.3", - "ruflin/elastica": ">=0.90@dev", - "swiftmailer/swiftmailer": "^5.3|^6.0" - }, - "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", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "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": "2.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/2.3.5" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" - } - ], - "time": "2021-10-01T21:08:31+00:00" - }, - { - "name": "nesbot/carbon", - "version": "2.56.0", - "source": { - "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1.8 || ^8.0", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "doctrine/dbal": "^2.0 || ^3.0", - "doctrine/orm": "^2.7", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "phpmd/phpmd": "^2.9", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.54 || ^1.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.14", - "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://opencollective.com/Carbon", - "type": "open_collective" - }, - { - "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", - "type": "tidelift" - } - ], - "time": "2022-01-21T17:08:38+00:00" - }, - { - "name": "nette/schema", - "version": "v1.2.2", - "source": { - "type": "git", - "url": "https://github.com/nette/schema.git", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/9a39cef03a5b34c7de64f551538cbba05c2be5df", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df", - "shasum": "" - }, - "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": ">=7.1 <8.2" - }, - "require-dev": { - "nette/tester": "^2.3 || ^2.4", - "phpstan/phpstan-nette": "^0.12", - "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.2" - }, - "time": "2021-10-15T11:40:02+00:00" - }, - { - "name": "nette/utils", - "version": "v3.2.7", - "source": { - "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/0af4e3de4df9f1543534beab255ccf459e7a2c99", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99", - "shasum": "" - }, - "require": { - "php": ">=7.2 <8.2" - }, - "conflict": { - "nette/di": "<3.0.6" - }, - "require-dev": { - "nette/tester": "~2.0", - "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.3" - }, - "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()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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 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/v3.2.7" - }, - "time": "2022-01-24T11:29:14+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.13.2", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", - "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.13.2" - }, - "time": "2021-11-30T19:35:32+00:00" - }, - { - "name": "phpoption/phpoption", - "version": "1.8.1", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-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.8.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", - "type": "tidelift" - } - ], - "time": "2021-12-04T23:24:31+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.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.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": "http://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/tree/master" - }, - "time": "2020-06-29T06:28:15+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.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": "http://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/master" - }, - "time": "2019-04-30T12:38:16+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.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": "http://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/master" - }, - "time": "2016-08-06T14:39: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.1", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "570292577277f06f590635381a7f761a6cf4f026" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/570292577277f06f590635381a7f761a6cf4f026", - "reference": "570292577277f06f590635381a7f761a6cf4f026", - "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" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "3.17.05.02" - }, - "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.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." - }, - "bin": [ - "bin/psysh" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "0.11.x-dev" - } - }, - "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.1" - }, - "time": "2022-01-03T13:58:38+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": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/ramsey/collection.git", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "shasum": "" - }, - "require": { - "php": "^7.3 || ^8", - "symfony/polyfill-php81": "^1.23" - }, - "require-dev": { - "captainhook/captainhook": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "ergebnis/composer-normalize": "^2.6", - "fakerphp/faker": "^1.5", - "hamcrest/hamcrest-php": "^2", - "jangregor/phpstan-prophecy": "^0.8", - "mockery/mockery": "^1.3", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1", - "phpstan/phpstan": "^0.12.32", - "phpstan/phpstan-mockery": "^0.12.5", - "phpstan/phpstan-phpunit": "^0.12.11", - "phpunit/phpunit": "^8.5 || ^9", - "psy/psysh": "^0.10.4", - "slevomat/coding-standard": "^6.3", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.4" - }, - "type": "library", - "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/1.2.2" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "time": "2021-10-10T03:01:02+00:00" - }, - { - "name": "ramsey/uuid", - "version": "4.2.3", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "shasum": "" - }, - "require": { - "brick/math": "^0.8 || ^0.9", - "ext-json": "*", - "php": "^7.2 || ^8.0", - "ramsey/collection": "^1.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php80": "^1.14" - }, - "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", - "moontoast/math": "^1.1", - "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.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-mockery": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^8.5 || ^9", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" - }, - "suggest": { - "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-ctype": "Enables faster processing of character classification using ctype functions.", - "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": { - "branch-alias": { - "dev-main": "4.x-dev" - }, - "captainhook": { - "force-install": true - } - }, - "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "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.2.3" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2021-09-25T23:10:38+00:00" - }, - { - "name": "symfony/console", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/22e8efd019c3270c4f79376234a3f8752cd25490", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.4|^6.0" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/css-selector", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/1955d595c12c111629cc814d3f2a2ff13580508a", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a", - "shasum": "" - }, - "require": { - "php": ">=8.0.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/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-11-01T23:48:49+00:00" - }, - { - "name": "symfony/error-handler", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/20343b3bad7ebafa38138ddcb97290a24722b57b", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" - }, - "bin": [ - "Resources/bin/patch-type-declarations" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to manage errors and ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6472ea2dd415e925b90ca82be64b8bc6157f3934", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/event-dispatcher-contracts": "^2|^3" - }, - "conflict": { - "symfony/dependency-injection": "<5.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^5.4|^6.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/aa5422287b75594b90ee9cd807caf8f0df491385", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/event-dispatcher": "^1" - }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-07-15T12:33:35+00:00" - }, - { - "name": "symfony/finder", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/8661b74dbabc23223f38c9b99d3f8ade71170430", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ad157299ced81a637fade1efcadd688d6deba5c1", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1" - }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/cache": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0" - }, - "suggest": { - "symfony/mime": "To use the file extension guesser" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v6.0.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/error-handler": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", - "symfony/twig-bridge": "<5.4", - "symfony/validator": "<5.4", - "twig/twig": "<2.13" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/process": "^5.4|^6.0", - "symfony/routing": "^5.4|^6.0", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-29T18:12:46+00:00" - }, - { - "name": "symfony/mailer", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mailer.git", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "shasum": "" - }, - "require": { - "egulias/email-validator": "^2.1.10|^3", - "php": ">=8.0.2", - "psr/event-dispatcher": "^1", - "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3" - }, - "conflict": { - "symfony/http-kernel": "<5.4" - }, - "require-dev": { - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/messenger": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/mime", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/2cd9601efd040e56f43360daa68f3c6b0534923a", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "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" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "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.24.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": "2021-10-20T20:35:02+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-11-23T21:10:46+00:00" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44", - "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.23-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.24.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": "2021-09-14T14:02:44+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.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": "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.24.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": "2021-11-30T18:21:41+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-05-27T09:17:38+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:33+00:00" - }, - { - "name": "symfony/polyfill-php81", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:11+00:00" - }, - { - "name": "symfony/process", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/298ed357274c1868c20a0061df256a1250a6c4af", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/routing", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/yaml": "<5.4" - }, - "require-dev": { - "doctrine/annotations": "^1.12", - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/36715ebf9fb9db73db0cb24263c79077c6fe8603", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/container": "^2.0" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "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.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": "2021-11-04T17:53:12+00:00" - }, - { - "name": "symfony/string", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/522144f0c4c004c80d56fa47e40e17028e2eefc2", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.0" - }, - "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/translation-contracts": "^2.0|^3.0", - "symfony/var-exporter": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "files": [ - "Resources/functions.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 an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/translation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/71bb15335798f8c4da110911bcf2d2fead7a430d", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.3|^3.0" - }, - "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" - }, - "provide": { - "symfony/translation-implementation": "2.3|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-07T00:29:03+00:00" - }, - { - "name": "symfony/translation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "suggest": { - "symfony/translation-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - } - }, - "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.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": "2021-09-07T12:43:40+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7b701676fc64f9ef11f9b4870f16b48f66be4834", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<5.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-17T16:30:44+00:00" - }, - { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.4", - "source": { - "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" - } - ], - "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", - "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "support": { - "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" - }, - "time": "2021-12-08T09:12:39+00:00" - }, - { - "name": "vlucas/phpdotenv", - "version": "v5.4.1", - "source": { - "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", - "shasum": "" - }, - "require": { - "ext-pcre": "*", - "graham-campbell/result-type": "^1.0.2", - "php": "^7.1.3 || ^8.0", - "phpoption/phpoption": "^1.8", - "symfony/polyfill-ctype": "^1.23", - "symfony/polyfill-mbstring": "^1.23.1", - "symfony/polyfill-php80": "^1.23.1" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" - }, - "suggest": { - "ext-filter": "Required to use the boolean validator." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.4-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.4.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", - "type": "tidelift" - } - ], - "time": "2021-12-12T23:22:04+00:00" - }, - { - "name": "voku/portable-ascii", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/voku/portable-ascii.git", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/9bd89e83cecdf8c37b64909454249eaed98b2c89", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89", - "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.0" - }, - "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-01-24T18:59:03+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "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.10.0" - }, - "time": "2021-03-09T10:59:23+00:00" - } - ], - "packages-dev": [ - { - "name": "doctrine/instantiator", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.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%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2020-11-10T18:47:58+00:00" - }, - { - "name": "facade/ignition-contracts", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/facade/ignition-contracts.git", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^v2.15.8", - "phpunit/phpunit": "^9.3.11", - "vimeo/psalm": "^3.17.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Facade\\IgnitionContracts\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://flareapp.io", - "role": "Developer" - } - ], - "description": "Solution contracts for Ignition", - "homepage": "https://github.com/facade/ignition-contracts", - "keywords": [ - "contracts", - "flare", - "ignition" - ], - "support": { - "issues": "https://github.com/facade/ignition-contracts/issues", - "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" - }, - "time": "2020-10-16T08:27:54+00:00" - }, - { - "name": "fakerphp/faker", - "version": "v1.19.0", - "source": { - "type": "git", - "url": "https://github.com/FakerPHP/Faker.git", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^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": "*", - "symfony/phpunit-bridge": "^4.4 || ^5.2" - }, - "suggest": { - "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", - "ext-curl": "Required by Faker\\Provider\\Image to download images.", - "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", - "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.19-dev" - } - }, - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "François Zaninotto" - } - ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], - "support": { - "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0" - }, - "time": "2022-02-02T17:38:57+00:00" - }, - { - "name": "filp/whoops", - "version": "2.14.5", - "source": { - "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "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.14.5" - }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "time": "2022-01-07T12:00:00+00:00" - }, - { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "shasum": "" - }, - "require": { - "php": "^5.3|^7.0|^8.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" - }, - "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "classmap": [ - "hamcrest" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "This is the PHP port of Hamcrest Matchers", - "keywords": [ - "test" - ], - "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" - }, - "time": "2020-07-09T08:09:16+00:00" - }, - { - "name": "laravel/sail", - "version": "v1.13.2", - "source": { - "type": "git", - "url": "https://github.com/laravel/sail.git", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.0|^9.0", - "illuminate/contracts": "^8.0|^9.0", - "illuminate/support": "^8.0|^9.0", - "php": "^7.3|^8.0" - }, - "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": "2022-02-08T14:14:12+00:00" - }, - { - "name": "mockery/mockery", - "version": "1.5.0", - "source": { - "type": "git", - "url": "https://github.com/mockery/mockery.git", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "shasum": "" - }, - "require": { - "hamcrest/hamcrest-php": "^2.0.1", - "lib-pcre": ">=7.0", - "php": "^7.3 || ^8.0" - }, - "conflict": { - "phpunit/phpunit": "<8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-0": { - "Mockery": "library/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" - } - ], - "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": { - "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.5.0" - }, - "time": "2022-01-20T13:18:17+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.10.2", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "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.10.2" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2020-11-13T09:40:50+00:00" - }, - { - "name": "nunomaduro/collision", - "version": "v6.1.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/collision.git", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "shasum": "" - }, - "require": { - "facade/ignition-contracts": "^1.0.2", - "filp/whoops": "^2.14.5", - "php": "^8.0.0", - "symfony/console": "^6.0.2" - }, - "require-dev": { - "brianium/paratest": "^6.4.1", - "laravel/framework": "^9.0", - "nunomaduro/larastan": "^1.0.2", - "nunomaduro/mock-final-classes": "^1.1.0", - "orchestra/testbench": "^7.0.0", - "phpunit/phpunit": "^9.5.11" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "6.x-dev" - }, - "laravel": { - "providers": [ - "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" - ] - } - }, - "autoload": { - "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": "2022-01-18T17:49:08+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.1.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/15a90844ad40f127afd244c0cad228de2a80052a", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a", - "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.1.1" - }, - "time": "2022-02-07T21:56:48+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.6.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "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.6.0" - }, - "time": "2022-01-04T19:58:01+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" - }, - "time": "2021-12-08T12:19:24+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "9.2.10", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d5850aaf931743067f4bfc1ae4cbd06468400687", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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 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", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.10" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-05T09:12:13+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "3.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-02T12:48:52+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "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/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:58:55+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T05:33:50+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.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/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:16:10+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "9.5.13", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/597cb647654ede35e43b137926dfdfef0fb11743", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.3.1", - "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": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.7", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", - "sebastian/version": "^3.0.2" - }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.13" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-01-24T07:33:35+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:08:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "1.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:08:54+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:30:19+00:00" - }, - { - "name": "sebastian/comparator", - "version": "4.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:49:45+00:00" - }, - { - "name": "sebastian/complexity", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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 calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:52:27+00:00" - }, - { - "name": "sebastian/diff", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:10:38+00:00" - }, - { - "name": "sebastian/environment", - "version": "5.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-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": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:52:38+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "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", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-11-11T14:18:36+00:00" - }, - { - "name": "sebastian/global-state", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-11T13:31:12+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-28T06:42:11+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "http://www.github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:17:30+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:45:17+00:00" - }, - { - "name": "sebastian/type", - "version": "2.3.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-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/2.3.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-15T12:49:02+00:00" - }, - { - "name": "sebastian/version", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:39:44+00:00" - }, - { - "name": "spatie/backtrace", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/backtrace.git", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "ext-json": "*", - "phpunit/phpunit": "^9.3", - "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": { - "issues": "https://github.com/spatie/backtrace/issues", - "source": "https://github.com/spatie/backtrace/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/sponsors/spatie", - "type": "github" - }, - { - "url": "https://spatie.be/open-source/support-us", - "type": "other" - } - ], - "time": "2021-11-09T10:57:15+00:00" - }, - { - "name": "spatie/flare-client-php", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/flare-client-php.git", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "shasum": "" - }, - "require": { - "illuminate/pipeline": "^8.0|^9.0", - "php": "^8.0", - "spatie/backtrace": "^1.2", - "symfony/http-foundation": "^5.0|^6.0", - "symfony/mime": "^5.2|^6.0", - "symfony/process": "^5.2|^6.0", - "symfony/var-dumper": "^5.2|^6.0" - }, - "require-dev": { - "dms/phpunit-arraysubset-asserts": "^0.3.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/phpunit-snapshot-assertions": "^4.0" - }, - "type": "library", - "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.0.1" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2022-02-04T15:21:00+00:00" - }, - { - "name": "spatie/ignition", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/spatie/ignition.git", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/d2d5ba823af3004268556e87dfc94449e4159f5a", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "monolog/monolog": "^2.0", - "php": "^8.0", - "spatie/flare-client-php": "^1.0", - "symfony/console": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "mockery/mockery": "^1.4", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/ray": "^1.32", - "symfony/process": "^5.4|^6.0" - }, - "type": "library", - "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": "2022-01-19T12:57:41+00:00" - }, - { - "name": "spatie/laravel-ignition", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/68250225a9f83b086462c2af1b1139dfde48fbd2", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*", - "illuminate/support": "^8.77|^9.0", - "monolog/monolog": "^2.3", - "php": "^8.0", - "spatie/flare-client-php": "^1.0.1", - "spatie/ignition": "^1.0", - "symfony/console": "^5.0|^6.0", - "symfony/var-dumper": "^5.0|^6.0" - }, - "require-dev": { - "filp/whoops": "^2.14", - "livewire/livewire": "^2.8|dev-develop", - "mockery/mockery": "^1.4", - "nunomaduro/larastan": "^1.0", - "orchestra/testbench": "^6.23|^7.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/laravel-ray": "^1.27" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Spatie\\LaravelIgnition\\IgnitionServiceProvider" - ], - "aliases": { - "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" - } - } - }, - "autoload": { - "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": "2022-02-04T15:25:56+00:00" - }, - { - "name": "squizlabs/php_codesniffer", - "version": "3.6.2", - "source": { - "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", - "shasum": "" - }, - "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.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": "lead" - } - ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", - "keywords": [ - "phpcs", - "standards" - ], - "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" - }, - "time": "2021-12-12T21:44:58+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2021-07-28T10:34:58+00:00" - } - ], - "aliases": [], - "minimum-stability": "dev", - "stability-flags": [], - "prefer-stable": true, - "prefer-lowest": false, - "platform": { - "php": "^8.0" - }, - "platform-dev": [], - "plugin-api-version": "2.1.0" -} diff --git a/Chapter23/onlineStore/config/app.php b/Chapter23/onlineStore/config/app.php deleted file mode 100644 index 1941d7c..0000000 --- a/Chapter23/onlineStore/config/app.php +++ /dev/null @@ -1,197 +0,0 @@ - env('APP_NAME', 'Laravel'), - - /* - |-------------------------------------------------------------------------- - | Application Environment - |-------------------------------------------------------------------------- - | - | This value determines the "environment" your application is currently - | running in. This may determine how you prefer to configure various - | services the application utilizes. Set this in your ".env" file. - | - */ - - 'env' => env('APP_ENV', 'production'), - - /* - |-------------------------------------------------------------------------- - | Application Debug Mode - |-------------------------------------------------------------------------- - | - | When your application is in debug mode, detailed error messages with - | stack traces will be shown on every error that occurs within your - | application. If disabled, a simple generic error page is shown. - | - */ - - 'debug' => (bool) env('APP_DEBUG', false), - - /* - |-------------------------------------------------------------------------- - | Application URL - |-------------------------------------------------------------------------- - | - | This URL is used by the console to properly generate URLs when using - | the Artisan command line tool. You should set this to the root of - | your application so that it is used when running Artisan tasks. - | - */ - - 'url' => env('APP_URL', 'http://localhost'), - - 'asset_url' => env('ASSET_URL', null), - - /* - |-------------------------------------------------------------------------- - | 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', - - /* - |-------------------------------------------------------------------------- - | 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' => [ - - /* - * Laravel Framework Service Providers... - */ - Illuminate\Auth\AuthServiceProvider::class, - Illuminate\Broadcasting\BroadcastServiceProvider::class, - Illuminate\Bus\BusServiceProvider::class, - Illuminate\Cache\CacheServiceProvider::class, - Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, - Illuminate\Cookie\CookieServiceProvider::class, - Illuminate\Database\DatabaseServiceProvider::class, - Illuminate\Encryption\EncryptionServiceProvider::class, - Illuminate\Filesystem\FilesystemServiceProvider::class, - Illuminate\Foundation\Providers\FoundationServiceProvider::class, - Illuminate\Hashing\HashServiceProvider::class, - Illuminate\Mail\MailServiceProvider::class, - Illuminate\Notifications\NotificationServiceProvider::class, - Illuminate\Pagination\PaginationServiceProvider::class, - Illuminate\Pipeline\PipelineServiceProvider::class, - Illuminate\Queue\QueueServiceProvider::class, - Illuminate\Redis\RedisServiceProvider::class, - Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, - Illuminate\Session\SessionServiceProvider::class, - Illuminate\Translation\TranslationServiceProvider::class, - Illuminate\Validation\ValidationServiceProvider::class, - Illuminate\View\ViewServiceProvider::class, - - /* - * 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, - - ], - - /* - |-------------------------------------------------------------------------- - | 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([ - // ... - ])->toArray(), - -]; diff --git a/Chapter23/onlineStore/config/auth.php b/Chapter23/onlineStore/config/auth.php deleted file mode 100644 index d8c6cee..0000000 --- a/Chapter23/onlineStore/config/auth.php +++ /dev/null @@ -1,111 +0,0 @@ - [ - '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 expire 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. - | - */ - - 'passwords' => [ - 'users' => [ - 'provider' => 'users', - 'table' => 'password_resets', - '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/Chapter23/onlineStore/config/broadcasting.php b/Chapter23/onlineStore/config/broadcasting.php deleted file mode 100644 index 67fcbbd..0000000 --- a/Chapter23/onlineStore/config/broadcasting.php +++ /dev/null @@ -1,67 +0,0 @@ - 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'), - 'useTLS' => true, - ], - '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/Chapter23/onlineStore/config/cache.php b/Chapter23/onlineStore/config/cache.php deleted file mode 100644 index 8736c7a..0000000 --- a/Chapter23/onlineStore/config/cache.php +++ /dev/null @@ -1,110 +0,0 @@ - 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'), - ], - - '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 a RAM based store such as APC or Memcached, there might - | be other applications utilizing the same cache. So, we'll specify a - | value to get prefixed to all our keys so we can avoid collisions. - | - */ - - 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'), - -]; diff --git a/Chapter23/onlineStore/config/cors.php b/Chapter23/onlineStore/config/cors.php deleted file mode 100644 index 8a39e6d..0000000 --- a/Chapter23/onlineStore/config/cors.php +++ /dev/null @@ -1,34 +0,0 @@ - ['api/*', 'sanctum/csrf-cookie'], - - 'allowed_methods' => ['*'], - - 'allowed_origins' => ['*'], - - 'allowed_origins_patterns' => [], - - 'allowed_headers' => ['*'], - - 'exposed_headers' => [], - - 'max_age' => 0, - - 'supports_credentials' => false, - -]; diff --git a/Chapter23/onlineStore/config/database.php b/Chapter23/onlineStore/config/database.php deleted file mode 100644 index 0faebae..0000000 --- a/Chapter23/onlineStore/config/database.php +++ /dev/null @@ -1,147 +0,0 @@ - env('DB_CONNECTION', 'mysql'), - - /* - |-------------------------------------------------------------------------- - | Database Connections - |-------------------------------------------------------------------------- - | - | Here are each of the database connections setup for your application. - | Of course, examples of configuring each database platform that is - | supported by Laravel is shown below to make development simple. - | - | - | All database work in Laravel is done through the PHP PDO facilities - | so make sure you have the driver for your particular database of - | choice installed on your machine before you begin development. - | - */ - - 'connections' => [ - - 'sqlite' => [ - 'driver' => 'sqlite', - 'url' => env('DATABASE_URL'), - 'database' => env('DB_DATABASE', database_path('database.sqlite')), - 'prefix' => '', - 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), - ], - - 'mysql' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '3306'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'unix_socket' => env('DB_SOCKET', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - 'pgsql' => [ - 'driver' => 'pgsql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '5432'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - 'search_path' => 'public', - 'sslmode' => 'prefer', - ], - - 'sqlsrv' => [ - 'driver' => 'sqlsrv', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', 'localhost'), - 'port' => env('DB_PORT', '1433'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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'), - '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'), - 'password' => env('REDIS_PASSWORD'), - 'port' => env('REDIS_PORT', '6379'), - 'database' => env('REDIS_CACHE_DB', '1'), - ], - - ], - -]; diff --git a/Chapter23/onlineStore/config/filesystems.php b/Chapter23/onlineStore/config/filesystems.php deleted file mode 100644 index cf5abce..0000000 --- a/Chapter23/onlineStore/config/filesystems.php +++ /dev/null @@ -1,73 +0,0 @@ - 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 setup for each driver as an example of the required options. - | - | Supported Drivers: "local", "ftp", "sftp", "s3" - | - */ - - 'disks' => [ - - 'local' => [ - 'driver' => 'local', - 'root' => storage_path('app'), - ], - - 'public' => [ - 'driver' => 'local', - 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', - 'visibility' => 'public', - ], - - '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), - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter23/onlineStore/config/hashing.php b/Chapter23/onlineStore/config/hashing.php deleted file mode 100644 index bcd3be4..0000000 --- a/Chapter23/onlineStore/config/hashing.php +++ /dev/null @@ -1,52 +0,0 @@ - '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/Chapter23/onlineStore/config/logging.php b/Chapter23/onlineStore/config/logging.php deleted file mode 100644 index fefe088..0000000 --- a/Chapter23/onlineStore/config/logging.php +++ /dev/null @@ -1,119 +0,0 @@ - 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' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), - - /* - |-------------------------------------------------------------------------- - | 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'), - ], - - 'daily' => [ - 'driver' => 'daily', - 'path' => storage_path('logs/laravel.log'), - 'level' => env('LOG_LEVEL', 'debug'), - 'days' => 14, - ], - - 'slack' => [ - 'driver' => 'slack', - 'url' => env('LOG_SLACK_WEBHOOK_URL'), - 'username' => 'Laravel Log', - 'emoji' => ':boom:', - 'level' => env('LOG_LEVEL', 'critical'), - ], - - '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'), - ], - ], - - 'stderr' => [ - 'driver' => 'monolog', - 'level' => env('LOG_LEVEL', 'debug'), - 'handler' => StreamHandler::class, - 'formatter' => env('LOG_STDERR_FORMATTER'), - 'with' => [ - 'stream' => 'php://stderr', - ], - ], - - 'syslog' => [ - 'driver' => 'syslog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'errorlog' => [ - 'driver' => 'errorlog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'null' => [ - 'driver' => 'monolog', - 'handler' => NullHandler::class, - ], - - 'emergency' => [ - 'path' => storage_path('logs/laravel.log'), - ], - ], - -]; diff --git a/Chapter23/onlineStore/config/mail.php b/Chapter23/onlineStore/config/mail.php deleted file mode 100644 index 87b6fe3..0000000 --- a/Chapter23/onlineStore/config/mail.php +++ /dev/null @@ -1,117 +0,0 @@ - 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", - | "postmark", "log", "array", "failover" - | - */ - - 'mailers' => [ - 'smtp' => [ - 'transport' => 'smtp', - '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, - ], - - 'ses' => [ - 'transport' => 'ses', - ], - - 'mailgun' => [ - 'transport' => 'mailgun', - ], - - 'postmark' => [ - 'transport' => 'postmark', - ], - - 'sendmail' => [ - 'transport' => 'sendmail', - 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -t -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/Chapter23/onlineStore/config/queue.php b/Chapter23/onlineStore/config/queue.php deleted file mode 100644 index 25ea5a8..0000000 --- a/Chapter23/onlineStore/config/queue.php +++ /dev/null @@ -1,93 +0,0 @@ - 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, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter23/onlineStore/config/sanctum.php b/Chapter23/onlineStore/config/sanctum.php deleted file mode 100644 index 9281c92..0000000 --- a/Chapter23/onlineStore/config/sanctum.php +++ /dev/null @@ -1,65 +0,0 @@ - explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( - '%s%s', - 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', - env('APP_URL') ? ','.parse_url(env('APP_URL'), PHP_URL_HOST) : '' - ))), - - /* - |-------------------------------------------------------------------------- - | 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/Chapter23/onlineStore/config/services.php b/Chapter23/onlineStore/config/services.php deleted file mode 100644 index 2a1d616..0000000 --- a/Chapter23/onlineStore/config/services.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - 'domain' => env('MAILGUN_DOMAIN'), - 'secret' => env('MAILGUN_SECRET'), - 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), - ], - - '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/Chapter23/onlineStore/config/session.php b/Chapter23/onlineStore/config/session.php deleted file mode 100644 index 8fed97c..0000000 --- a/Chapter23/onlineStore/config/session.php +++ /dev/null @@ -1,201 +0,0 @@ - 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/Chapter23/onlineStore/config/view.php b/Chapter23/onlineStore/config/view.php deleted file mode 100644 index 22b8a18..0000000 --- a/Chapter23/onlineStore/config/view.php +++ /dev/null @@ -1,36 +0,0 @@ - [ - 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/Chapter23/onlineStore/database/.gitignore b/Chapter23/onlineStore/database/.gitignore deleted file mode 100644 index 9b19b93..0000000 --- a/Chapter23/onlineStore/database/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.sqlite* diff --git a/Chapter23/onlineStore/database/factories/UserFactory.php b/Chapter23/onlineStore/database/factories/UserFactory.php deleted file mode 100644 index d6ca926..0000000 --- a/Chapter23/onlineStore/database/factories/UserFactory.php +++ /dev/null @@ -1,42 +0,0 @@ - - */ -class UserFactory extends Factory -{ - /** - * Define the model's default state. - * - * @return array - */ - public function definition() - { - return [ - 'name' => $this->faker->name(), - 'email' => $this->faker->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. - * - * @return \Illuminate\Database\Eloquent\Factories\Factory - */ - public function unverified() - { - return $this->state(function (array $attributes) { - return [ - 'email_verified_at' => null, - ]; - }); - } -} diff --git a/Chapter23/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php b/Chapter23/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php deleted file mode 100644 index cf6b776..0000000 --- a/Chapter23/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->string('name'); - $table->string('email')->unique(); - $table->timestamp('email_verified_at')->nullable(); - $table->string('password'); - $table->rememberToken(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('users'); - } -}; diff --git a/Chapter23/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php b/Chapter23/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php deleted file mode 100644 index 0ee0a36..0000000 --- a/Chapter23/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php +++ /dev/null @@ -1,32 +0,0 @@ -string('email')->index(); - $table->string('token'); - $table->timestamp('created_at')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('password_resets'); - } -} diff --git a/Chapter23/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/Chapter23/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php deleted file mode 100644 index 1719198..0000000 --- a/Chapter23/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php +++ /dev/null @@ -1,36 +0,0 @@ -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. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('failed_jobs'); - } -}; diff --git a/Chapter23/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/Chapter23/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php deleted file mode 100644 index fd235f8..0000000 --- a/Chapter23/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->morphs('tokenable'); - $table->string('name'); - $table->string('token', 64)->unique(); - $table->text('abilities')->nullable(); - $table->timestamp('last_used_at')->nullable(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('personal_access_tokens'); - } -}; diff --git a/Chapter23/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php b/Chapter23/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php deleted file mode 100644 index 2eecdc2..0000000 --- a/Chapter23/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php +++ /dev/null @@ -1,35 +0,0 @@ -id(); - $table->string('name'); - $table->text('description'); - $table->string('image'); - $table->integer('price'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('products'); - } -}; diff --git a/Chapter23/onlineStore/database/migrations/2022_02_12_140820_alter_users_table.php b/Chapter23/onlineStore/database/migrations/2022_02_12_140820_alter_users_table.php deleted file mode 100644 index 5bfcf7e..0000000 --- a/Chapter23/onlineStore/database/migrations/2022_02_12_140820_alter_users_table.php +++ /dev/null @@ -1,34 +0,0 @@ -string('role')->default('client'); - $table->integer('balance'); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::table('users', function (Blueprint $table) { - $table->dropColumn(['role']); - $table->dropColumn(['balance']); - }); - } -}; diff --git a/Chapter23/onlineStore/database/seeders/DatabaseSeeder.php b/Chapter23/onlineStore/database/seeders/DatabaseSeeder.php deleted file mode 100644 index 71f673f..0000000 --- a/Chapter23/onlineStore/database/seeders/DatabaseSeeder.php +++ /dev/null @@ -1,19 +0,0 @@ -create(); - } -} diff --git a/Chapter23/onlineStore/lang/en.json b/Chapter23/onlineStore/lang/en.json deleted file mode 100644 index 577680d..0000000 --- a/Chapter23/onlineStore/lang/en.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "The :attribute must contain at least one letter.": "The :attribute must contain at least one letter.", - "The :attribute must contain at least one number.": "The :attribute must contain at least one number.", - "The :attribute must contain at least one symbol.": "The :attribute must contain at least one symbol.", - "The :attribute must contain at least one uppercase and one lowercase letter.": "The :attribute must contain at least one uppercase and one lowercase letter.", - "The given :attribute has appeared in a data leak. Please choose a different :attribute.": "The given :attribute has appeared in a data leak. Please choose a different :attribute." -} diff --git a/Chapter23/onlineStore/lang/en/auth.php b/Chapter23/onlineStore/lang/en/auth.php deleted file mode 100644 index 6598e2c..0000000 --- a/Chapter23/onlineStore/lang/en/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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/Chapter23/onlineStore/lang/en/pagination.php b/Chapter23/onlineStore/lang/en/pagination.php deleted file mode 100644 index d481411..0000000 --- a/Chapter23/onlineStore/lang/en/pagination.php +++ /dev/null @@ -1,19 +0,0 @@ - '« Previous', - 'next' => 'Next »', - -]; diff --git a/Chapter23/onlineStore/lang/en/passwords.php b/Chapter23/onlineStore/lang/en/passwords.php deleted file mode 100644 index 2345a56..0000000 --- a/Chapter23/onlineStore/lang/en/passwords.php +++ /dev/null @@ -1,22 +0,0 @@ - '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/Chapter23/onlineStore/lang/en/validation.php b/Chapter23/onlineStore/lang/en/validation.php deleted file mode 100644 index 783003c..0000000 --- a/Chapter23/onlineStore/lang/en/validation.php +++ /dev/null @@ -1,163 +0,0 @@ - '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' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - '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' => [ - 'numeric' => 'The :attribute must be greater than :value.', - 'file' => 'The :attribute must be greater than :value kilobytes.', - 'string' => 'The :attribute must be greater than :value characters.', - 'array' => 'The :attribute must have more than :value items.', - ], - 'gte' => [ - 'numeric' => 'The :attribute must be greater than or equal to :value.', - 'file' => 'The :attribute must be greater than or equal to :value kilobytes.', - 'string' => 'The :attribute must be greater than or equal to :value characters.', - 'array' => 'The :attribute must have :value items or more.', - ], - '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' => [ - 'numeric' => 'The :attribute must be less than :value.', - 'file' => 'The :attribute must be less than :value kilobytes.', - 'string' => 'The :attribute must be less than :value characters.', - 'array' => 'The :attribute must have less than :value items.', - ], - 'lte' => [ - 'numeric' => 'The :attribute must be less than or equal to :value.', - 'file' => 'The :attribute must be less than or equal to :value kilobytes.', - 'string' => 'The :attribute must be less than or equal to :value characters.', - 'array' => 'The :attribute must not have more than :value items.', - ], - 'mac_address' => 'The :attribute must be a valid MAC address.', - 'max' => [ - 'numeric' => 'The :attribute must not be greater than :max.', - 'file' => 'The :attribute must not be greater than :max kilobytes.', - 'string' => 'The :attribute must not be greater than :max characters.', - 'array' => 'The :attribute must not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - '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.', - 'password' => 'The password is incorrect.', - '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' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - '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/Chapter23/onlineStore/package.json b/Chapter23/onlineStore/package.json deleted file mode 100644 index 7b71681..0000000 --- a/Chapter23/onlineStore/package.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "private": true, - "scripts": { - "dev": "npm run development", - "development": "mix", - "watch": "mix watch", - "watch-poll": "mix watch -- --watch-options-poll=1000", - "hot": "mix watch --hot", - "prod": "npm run production", - "production": "mix --production" - }, - "devDependencies": { - "@popperjs/core": "^2.10.2", - "axios": "^0.25", - "bootstrap": "^5.1.3", - "laravel-mix": "^6.0.6", - "lodash": "^4.17.19", - "postcss": "^8.1.14", - "sass": "^1.32.11", - "sass-loader": "^11.0.1" - } -} diff --git a/Chapter23/onlineStore/phpcs.xml b/Chapter23/onlineStore/phpcs.xml deleted file mode 100644 index a1cf2b6..0000000 --- a/Chapter23/onlineStore/phpcs.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - The coding standard for the Online Store project - - app/ - config/ - database/ - routes/ - */migrations/* - diff --git a/Chapter23/onlineStore/phpunit.xml b/Chapter23/onlineStore/phpunit.xml deleted file mode 100644 index 2ac86a1..0000000 --- a/Chapter23/onlineStore/phpunit.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - ./tests/Unit - - - ./tests/Feature - - - - - ./app - - - - - - - - - - - - - - diff --git a/Chapter23/onlineStore/public/.htaccess b/Chapter23/onlineStore/public/.htaccess deleted file mode 100644 index 3aec5e2..0000000 --- a/Chapter23/onlineStore/public/.htaccess +++ /dev/null @@ -1,21 +0,0 @@ - - - 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/Chapter23/onlineStore/public/css/admin.css b/Chapter23/onlineStore/public/css/admin.css deleted file mode 100644 index d9495a1..0000000 --- a/Chapter23/onlineStore/public/css/admin.css +++ /dev/null @@ -1,33 +0,0 @@ -.copyright { - background-color: #1a252f; -} - -.fixed { - -ms-flex: 0 0 250px; - flex: 0 0 250px; -} - -.content-grey { - background-color: #f8f9fc; -} - -hr { - margin-top: 0.8em; - margin-bottom: 0.8em; -} - -.img-profile { - height: 2rem; - width: 2rem; -} - -.profile-font { - color: #858796 !important; - font-size: 80%; - font-weight: 400; -} - -.card-header { - background-color: #f8f9fc; - border-bottom: 1px solid #e3e6f0; -} diff --git a/Chapter23/onlineStore/public/css/app.css b/Chapter23/onlineStore/public/css/app.css deleted file mode 100644 index cabac36..0000000 --- a/Chapter23/onlineStore/public/css/app.css +++ /dev/null @@ -1,20 +0,0 @@ -.bg-secondary { - background-color: #2c3e50 !important; -} - -.copyright { - background-color: #1a252f; -} - -.bg-primary { - background-color: #1abc9c !important; -} - -nav{ - font-weight: 700; -} - -.img-card{ - height: 18vw; - object-fit: cover; -} diff --git a/Chapter23/onlineStore/public/favicon.ico b/Chapter23/onlineStore/public/favicon.ico deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter23/onlineStore/public/img/game.png b/Chapter23/onlineStore/public/img/game.png deleted file mode 100644 index 85420e8bbc16098bf26b4ee63bde0e91a19d1f2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25896 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 cz>% diff --git a/Chapter23/onlineStore/public/img/safe.png b/Chapter23/onlineStore/public/img/safe.png deleted file mode 100644 index 445942c707af53210931f9f4f99f6d3cb69e5d89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19240 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
w==XB0?3|p=#`o%NsudE(E-U#KS3Snw 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 o>ir+C;RN10sIS0&a;p - - - - - - - - - - - - - - - - - - diff --git a/Chapter23/onlineStore/public/index.php b/Chapter23/onlineStore/public/index.php deleted file mode 100644 index 1d69f3a..0000000 --- a/Chapter23/onlineStore/public/index.php +++ /dev/null @@ -1,55 +0,0 @@ -make(Kernel::class); - -$response = $kernel->handle( - $request = Request::capture() -)->send(); - -$kernel->terminate($request, $response); diff --git a/Chapter23/onlineStore/public/robots.txt b/Chapter23/onlineStore/public/robots.txt deleted file mode 100644 index eb05362..0000000 --- a/Chapter23/onlineStore/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: diff --git a/Chapter23/onlineStore/resources/css/app.css b/Chapter23/onlineStore/resources/css/app.css deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter23/onlineStore/resources/js/app.js b/Chapter23/onlineStore/resources/js/app.js deleted file mode 100644 index 40c55f6..0000000 --- a/Chapter23/onlineStore/resources/js/app.js +++ /dev/null @@ -1 +0,0 @@ -require('./bootstrap'); diff --git a/Chapter23/onlineStore/resources/js/bootstrap.js b/Chapter23/onlineStore/resources/js/bootstrap.js deleted file mode 100644 index dcdc4df..0000000 --- a/Chapter23/onlineStore/resources/js/bootstrap.js +++ /dev/null @@ -1,32 +0,0 @@ -window._ = require('lodash'); - -try { - require('bootstrap'); -} catch (e) {} - -/** - * 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 = require('axios'); - -window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; - -/** - * 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'; - -// window.Pusher = require('pusher-js'); - -// window.Echo = new Echo({ -// broadcaster: 'pusher', -// key: process.env.MIX_PUSHER_APP_KEY, -// cluster: process.env.MIX_PUSHER_APP_CLUSTER, -// forceTLS: true -// }); diff --git a/Chapter23/onlineStore/resources/sass/_variables.scss b/Chapter23/onlineStore/resources/sass/_variables.scss deleted file mode 100644 index 172daaa..0000000 --- a/Chapter23/onlineStore/resources/sass/_variables.scss +++ /dev/null @@ -1,7 +0,0 @@ -// Body -$body-bg: #f8fafc; - -// Typography -$font-family-sans-serif: 'Nunito', sans-serif; -$font-size-base: 0.9rem; -$line-height-base: 1.6; diff --git a/Chapter23/onlineStore/resources/sass/app.scss b/Chapter23/onlineStore/resources/sass/app.scss deleted file mode 100644 index 3193ffa..0000000 --- a/Chapter23/onlineStore/resources/sass/app.scss +++ /dev/null @@ -1,8 +0,0 @@ -// Fonts -@import url('https://fonts.googleapis.com/css?family=Nunito'); - -// Variables -@import 'variables'; - -// Bootstrap -@import '~bootstrap/scss/bootstrap'; diff --git a/Chapter23/onlineStore/resources/views/admin/home/index.blade.php b/Chapter23/onlineStore/resources/views/admin/home/index.blade.php deleted file mode 100644 index a2b4868..0000000 --- a/Chapter23/onlineStore/resources/views/admin/home/index.blade.php +++ /dev/null @@ -1,12 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
-
- Admin Panel - Home Page -
-
- Welcome to the Admin Panel, use the sidebar to navigate between the different options. -
-
-@endsection diff --git a/Chapter23/onlineStore/resources/views/admin/product/edit.blade.php b/Chapter23/onlineStore/resources/views/admin/product/edit.blade.php deleted file mode 100644 index b8e03d8..0000000 --- a/Chapter23/onlineStore/resources/views/admin/product/edit.blade.php +++ /dev/null @@ -1,61 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
-
- Edit Product -
-
- @if($errors->any()) -
    - @foreach($errors->all() as $error) -
  • - {{ $error }}
  • - @endforeach -
- @endif - -
- @csrf - @method('PUT') -
-
-
- -
- -
-
-
-
-
- -
- -
-
-
-
-
-
-
- -
- -
-
-
-
-   -
-
-
- - -
- -
-
-
-@endsection diff --git a/Chapter23/onlineStore/resources/views/admin/product/index.blade.php b/Chapter23/onlineStore/resources/views/admin/product/index.blade.php deleted file mode 100644 index 19fbe4b..0000000 --- a/Chapter23/onlineStore/resources/views/admin/product/index.blade.php +++ /dev/null @@ -1,98 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
-
- Create Products -
-
- @if($errors->any()) -
    - @foreach($errors->all() as $error) -
  • - {{ $error }}
  • - @endforeach -
- @endif - -
- @csrf -
-
-
- -
- -
-
-
-
-
- -
- -
-
-
-
-
-
-
- -
- -
-
-
-
-   -
-
-
- - -
- -
-
-
- -
-
- Manage Products -
-
- - - - - - - - - - - @foreach ($viewData["products"] as $product) - - - - - - - @endforeach - -
IDNameEditDelete
{{ $product->getId() }}{{ $product->getName() }} - - - - -
- @csrf - @method('DELETE') - -
-
-
-
-@endsection diff --git a/Chapter23/onlineStore/resources/views/auth/login.blade.php b/Chapter23/onlineStore/resources/views/auth/login.blade.php deleted file mode 100644 index c7e5ea0..0000000 --- a/Chapter23/onlineStore/resources/views/auth/login.blade.php +++ /dev/null @@ -1,73 +0,0 @@ -@extends('layouts.app') - -@section('content') -
-@endsection diff --git a/Chapter23/onlineStore/resources/views/auth/passwords/confirm.blade.php b/Chapter23/onlineStore/resources/views/auth/passwords/confirm.blade.php deleted file mode 100644 index f8c8e61..0000000 --- a/Chapter23/onlineStore/resources/views/auth/passwords/confirm.blade.php +++ /dev/null @@ -1,49 +0,0 @@ -@extends('layouts.app') - -@section('content') - -@endsection diff --git a/Chapter23/onlineStore/resources/views/auth/passwords/email.blade.php b/Chapter23/onlineStore/resources/views/auth/passwords/email.blade.php deleted file mode 100644 index d1ac783..0000000 --- a/Chapter23/onlineStore/resources/views/auth/passwords/email.blade.php +++ /dev/null @@ -1,47 +0,0 @@ -@extends('layouts.app') - -@section('content') -
-
-
-
-
{{ __('Reset Password') }}
- -
- @if (session('status')) - - @endif - -
- @csrf - -
- - -
- - - @error('email') - - {{ $message }} - - @enderror -
-
- -
-
- -
-
-
-
-
-
-
-
-@endsection diff --git a/Chapter23/onlineStore/resources/views/auth/passwords/reset.blade.php b/Chapter23/onlineStore/resources/views/auth/passwords/reset.blade.php deleted file mode 100644 index dccf6c6..0000000 --- a/Chapter23/onlineStore/resources/views/auth/passwords/reset.blade.php +++ /dev/null @@ -1,65 +0,0 @@ -@extends('layouts.app') - -@section('content') -
-
-
-
-
{{ __('Reset Password') }}
- -
-
- @csrf - - - -
- - -
- - - @error('email') - - {{ $message }} - - @enderror -
-
- -
- - -
- - - @error('password') - - {{ $message }} - - @enderror -
-
- -
- - -
- -
-
- -
-
- -
-
-
-
-
-
-
-
-@endsection diff --git a/Chapter23/onlineStore/resources/views/auth/register.blade.php b/Chapter23/onlineStore/resources/views/auth/register.blade.php deleted file mode 100644 index e001a0b..0000000 --- a/Chapter23/onlineStore/resources/views/auth/register.blade.php +++ /dev/null @@ -1,77 +0,0 @@ -@extends('layouts.app') - -@section('content') -
-
-
-
-
{{ __('Register') }}
- -
-
- @csrf - -
- - -
- - - @error('name') - - {{ $message }} - - @enderror -
-
- -
- - -
- - - @error('email') - - {{ $message }} - - @enderror -
-
- -
- - -
- - - @error('password') - - {{ $message }} - - @enderror -
-
- -
- - -
- -
-
- -
-
- -
-
-
-
-
-
-
-
-@endsection diff --git a/Chapter23/onlineStore/resources/views/auth/verify.blade.php b/Chapter23/onlineStore/resources/views/auth/verify.blade.php deleted file mode 100644 index 9f8c1bc..0000000 --- a/Chapter23/onlineStore/resources/views/auth/verify.blade.php +++ /dev/null @@ -1,28 +0,0 @@ -@extends('layouts.app') - -@section('content') -
-
-
-
-
{{ __('Verify Your Email Address') }}
- -
- @if (session('resent')) - - @endif - - {{ __('Before proceeding, please check your email for a verification link.') }} - {{ __('If you did not receive the email') }}, -
- @csrf - . -
-
-
-
-
-
-@endsection diff --git a/Chapter23/onlineStore/resources/views/home.blade.php b/Chapter23/onlineStore/resources/views/home.blade.php deleted file mode 100644 index 1f34466..0000000 --- a/Chapter23/onlineStore/resources/views/home.blade.php +++ /dev/null @@ -1,23 +0,0 @@ -@extends('layouts.app') - -@section('content') -
-
-
-
-
{{ __('Dashboard') }}
- -
- @if (session('status')) - - @endif - - {{ __('You are logged in!') }} -
-
-
-
-
-@endsection diff --git a/Chapter23/onlineStore/resources/views/home/about.blade.php b/Chapter23/onlineStore/resources/views/home/about.blade.php deleted file mode 100644 index f79abf3..0000000 --- a/Chapter23/onlineStore/resources/views/home/about.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
-
-
-

{{ $viewData["description"] }}

-
-
-

{{ $viewData["author"] }}

-
-
-
-@endsection diff --git a/Chapter23/onlineStore/resources/views/home/index.blade.php b/Chapter23/onlineStore/resources/views/home/index.blade.php deleted file mode 100644 index 1affb20..0000000 --- a/Chapter23/onlineStore/resources/views/home/index.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('content') -
-
- -
-
- -
-
- -
-
-@endsection diff --git a/Chapter23/onlineStore/resources/views/layouts/admin.blade.php b/Chapter23/onlineStore/resources/views/layouts/admin.blade.php deleted file mode 100644 index 4aff3f8..0000000 --- a/Chapter23/onlineStore/resources/views/layouts/admin.blade.php +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - @yield('title', 'Admin - Online Store') - - - -
- - - -
- - -
- @yield('content') -
-
-
- - - - - - - - - diff --git a/Chapter23/onlineStore/resources/views/layouts/app.blade.php b/Chapter23/onlineStore/resources/views/layouts/app.blade.php deleted file mode 100644 index 81308e6..0000000 --- a/Chapter23/onlineStore/resources/views/layouts/app.blade.php +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - @yield('title', 'Online Store') - - - - - -
-
-

@yield('subtitle', 'A Laravel Online Store')

-
-
- - -
- @yield('content') -
- - - - - - - diff --git a/Chapter23/onlineStore/resources/views/product/index.blade.php b/Chapter23/onlineStore/resources/views/product/index.blade.php deleted file mode 100644 index 64c3e18..0000000 --- a/Chapter23/onlineStore/resources/views/product/index.blade.php +++ /dev/null @@ -1,18 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
- @foreach ($viewData["products"] as $product) - - @endforeach -
-@endsection diff --git a/Chapter23/onlineStore/resources/views/product/show.blade.php b/Chapter23/onlineStore/resources/views/product/show.blade.php deleted file mode 100644 index be37a01..0000000 --- a/Chapter23/onlineStore/resources/views/product/show.blade.php +++ /dev/null @@ -1,21 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
-
-
- getImage()) }}" class="img-fluid rounded-start"> -
-
-
-
- {{ $viewData["product"]->getName() }} (${{ $viewData["product"]->getPrice() }}) -
-

{{ $viewData["product"]->getDescription() }}

-

Add to Cart

-
-
-
-
-@endsection diff --git a/Chapter23/onlineStore/resources/views/welcome.blade.php b/Chapter23/onlineStore/resources/views/welcome.blade.php deleted file mode 100644 index c587c72..0000000 --- a/Chapter23/onlineStore/resources/views/welcome.blade.php +++ /dev/null @@ -1,7 +0,0 @@ -@extends('layouts.app') -@section('title', 'Home Page - Online Store') -@section('content') -
- Welcome to the application -
-@endsection \ No newline at end of file diff --git a/Chapter23/onlineStore/routes/api.php b/Chapter23/onlineStore/routes/api.php deleted file mode 100644 index eb6fa48..0000000 --- a/Chapter23/onlineStore/routes/api.php +++ /dev/null @@ -1,19 +0,0 @@ -get('/user', function (Request $request) { - return $request->user(); -}); diff --git a/Chapter23/onlineStore/routes/channels.php b/Chapter23/onlineStore/routes/channels.php deleted file mode 100644 index 5d451e1..0000000 --- a/Chapter23/onlineStore/routes/channels.php +++ /dev/null @@ -1,18 +0,0 @@ -id === (int) $id; -}); diff --git a/Chapter23/onlineStore/routes/console.php b/Chapter23/onlineStore/routes/console.php deleted file mode 100644 index e05f4c9..0000000 --- a/Chapter23/onlineStore/routes/console.php +++ /dev/null @@ -1,19 +0,0 @@ -comment(Inspiring::quote()); -})->purpose('Display an inspiring quote'); diff --git a/Chapter23/onlineStore/routes/web.php b/Chapter23/onlineStore/routes/web.php deleted file mode 100644 index 332d651..0000000 --- a/Chapter23/onlineStore/routes/web.php +++ /dev/null @@ -1,30 +0,0 @@ -name("home.index"); -Route::get('/about', 'App\Http\Controllers\HomeController@about')->name("home.about"); -Route::get('/products', 'App\Http\Controllers\ProductController@index')->name("product.index"); -Route::get('/products/{id}', 'App\Http\Controllers\ProductController@show')->name("product.show"); - -Route::middleware('admin')->group(function () { - Route::get('/admin', 'App\Http\Controllers\Admin\AdminHomeController@index')->name("admin.home.index"); - Route::get('/admin/products', 'App\Http\Controllers\Admin\AdminProductController@index')->name("admin.product.index"); - Route::post('/admin/products/store', 'App\Http\Controllers\Admin\AdminProductController@store')->name("admin.product.store"); - Route::delete('/admin/products/{id}/delete', 'App\Http\Controllers\Admin\AdminProductController@delete')->name("admin.product.delete"); - Route::get('/admin/products/{id}/edit', 'App\Http\Controllers\Admin\AdminProductController@edit')->name("admin.product.edit"); - Route::put('/admin/products/{id}/update', 'App\Http\Controllers\Admin\AdminProductController@update')->name("admin.product.update"); -}); - -Auth::routes(); diff --git a/Chapter23/onlineStore/storage/app/.gitignore b/Chapter23/onlineStore/storage/app/.gitignore deleted file mode 100644 index 8f4803c..0000000 --- a/Chapter23/onlineStore/storage/app/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!public/ -!.gitignore diff --git a/Chapter23/onlineStore/storage/app/public/.gitignore b/Chapter23/onlineStore/storage/app/public/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter23/onlineStore/storage/app/public/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter23/onlineStore/storage/framework/.gitignore b/Chapter23/onlineStore/storage/framework/.gitignore deleted file mode 100644 index 05c4471..0000000 --- a/Chapter23/onlineStore/storage/framework/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -compiled.php -config.php -down -events.scanned.php -maintenance.php -routes.php -routes.scanned.php -schedule-* -services.json diff --git a/Chapter23/onlineStore/storage/framework/cache/.gitignore b/Chapter23/onlineStore/storage/framework/cache/.gitignore deleted file mode 100644 index 01e4a6c..0000000 --- a/Chapter23/onlineStore/storage/framework/cache/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!data/ -!.gitignore diff --git a/Chapter23/onlineStore/storage/framework/cache/data/.gitignore b/Chapter23/onlineStore/storage/framework/cache/data/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter23/onlineStore/storage/framework/cache/data/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter23/onlineStore/storage/framework/sessions/.gitignore b/Chapter23/onlineStore/storage/framework/sessions/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter23/onlineStore/storage/framework/sessions/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter23/onlineStore/storage/framework/testing/.gitignore b/Chapter23/onlineStore/storage/framework/testing/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter23/onlineStore/storage/framework/testing/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter23/onlineStore/storage/framework/views/.gitignore b/Chapter23/onlineStore/storage/framework/views/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter23/onlineStore/storage/framework/views/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter23/onlineStore/storage/logs/.gitignore b/Chapter23/onlineStore/storage/logs/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter23/onlineStore/storage/logs/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter23/onlineStore/tests/CreatesApplication.php b/Chapter23/onlineStore/tests/CreatesApplication.php deleted file mode 100644 index 547152f..0000000 --- a/Chapter23/onlineStore/tests/CreatesApplication.php +++ /dev/null @@ -1,22 +0,0 @@ -make(Kernel::class)->bootstrap(); - - return $app; - } -} diff --git a/Chapter23/onlineStore/tests/Feature/ExampleTest.php b/Chapter23/onlineStore/tests/Feature/ExampleTest.php deleted file mode 100644 index 78ccc21..0000000 --- a/Chapter23/onlineStore/tests/Feature/ExampleTest.php +++ /dev/null @@ -1,21 +0,0 @@ -get('/'); - - $response->assertStatus(200); - } -} diff --git a/Chapter23/onlineStore/tests/TestCase.php b/Chapter23/onlineStore/tests/TestCase.php deleted file mode 100644 index 2932d4a..0000000 --- a/Chapter23/onlineStore/tests/TestCase.php +++ /dev/null @@ -1,10 +0,0 @@ -assertTrue(true); - } -} diff --git a/Chapter23/onlineStore/webpack.mix.js b/Chapter23/onlineStore/webpack.mix.js deleted file mode 100644 index 1a2a958..0000000 --- a/Chapter23/onlineStore/webpack.mix.js +++ /dev/null @@ -1,16 +0,0 @@ -const mix = require('laravel-mix'); - -/* - |-------------------------------------------------------------------------- - | Mix Asset Management - |-------------------------------------------------------------------------- - | - | Mix provides a clean, fluent API for defining some Webpack build steps - | for your Laravel application. By default, we are compiling the Sass - | file for the application as well as bundling up all the JS files. - | - */ - -mix.js('resources/js/app.js', 'public/js') - .sass('resources/sass/app.scss', 'public/css') - .sourceMaps(); diff --git a/Chapter25/onlineStore/.editorconfig b/Chapter25/onlineStore/.editorconfig deleted file mode 100644 index 1671c9b..0000000 --- a/Chapter25/onlineStore/.editorconfig +++ /dev/null @@ -1,18 +0,0 @@ -root = true - -[*] -charset = utf-8 -end_of_line = lf -insert_final_newline = true -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true - -[*.md] -trim_trailing_whitespace = false - -[*.{yml,yaml}] -indent_size = 2 - -[docker-compose.yml] -indent_size = 4 diff --git a/Chapter25/onlineStore/.env.example b/Chapter25/onlineStore/.env.example deleted file mode 100644 index 8510237..0000000 --- a/Chapter25/onlineStore/.env.example +++ /dev/null @@ -1,52 +0,0 @@ -APP_NAME=Laravel -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=laravel -DB_USERNAME=root -DB_PASSWORD= - -BROADCAST_DRIVER=log -CACHE_DRIVER=file -FILESYSTEM_DISK=local -QUEUE_CONNECTION=sync -SESSION_DRIVER=file -SESSION_LIFETIME=120 - -MEMCACHED_HOST=127.0.0.1 - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -MAIL_MAILER=smtp -MAIL_HOST=mailhog -MAIL_PORT=1025 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS=null -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_APP_CLUSTER=mt1 - -MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/Chapter25/onlineStore/.gitattributes b/Chapter25/onlineStore/.gitattributes deleted file mode 100644 index 510d996..0000000 --- a/Chapter25/onlineStore/.gitattributes +++ /dev/null @@ -1,10 +0,0 @@ -* text=auto - -*.blade.php diff=html -*.css diff=css -*.html diff=html -*.md diff=markdown -*.php diff=php - -/.github export-ignore -CHANGELOG.md export-ignore diff --git a/Chapter25/onlineStore/.gitignore b/Chapter25/onlineStore/.gitignore deleted file mode 100644 index eb003b0..0000000 --- a/Chapter25/onlineStore/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -/node_modules -/public/hot -/public/storage -/storage/*.key -/vendor -.env -.env.backup -.phpunit.result.cache -docker-compose.override.yml -Homestead.json -Homestead.yaml -npm-debug.log -yarn-error.log -/.idea -/.vscode diff --git a/Chapter25/onlineStore/.styleci.yml b/Chapter25/onlineStore/.styleci.yml deleted file mode 100644 index 679a631..0000000 --- a/Chapter25/onlineStore/.styleci.yml +++ /dev/null @@ -1,13 +0,0 @@ -php: - preset: laravel - version: 8 - disabled: - - no_unused_imports - finder: - not-name: - - index.php -js: - finder: - not-name: - - webpack.mix.js -css: true diff --git a/Chapter25/onlineStore/README.md b/Chapter25/onlineStore/README.md deleted file mode 100644 index f171eca..0000000 --- a/Chapter25/onlineStore/README.md +++ /dev/null @@ -1,64 +0,0 @@ -

- -

-Build Status -Total Downloads -Latest Stable Version -License -

- -## About Laravel - -Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as: - -- [Simple, fast routing engine](https://laravel.com/docs/routing). -- [Powerful dependency injection container](https://laravel.com/docs/container). -- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage. -- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent). -- Database agnostic [schema migrations](https://laravel.com/docs/migrations). -- [Robust background job processing](https://laravel.com/docs/queues). -- [Real-time event broadcasting](https://laravel.com/docs/broadcasting). - -Laravel is accessible, powerful, and provides tools required for large, robust applications. - -## Learning Laravel - -Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework. - -If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 2000 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library. - -## Laravel Sponsors - -We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell). - -### Premium Partners - -- **[Vehikl](https://vehikl.com/)** -- **[Tighten Co.](https://tighten.co)** -- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** -- **[64 Robots](https://64robots.com)** -- **[Cubet Techno Labs](https://cubettech.com)** -- **[Cyber-Duck](https://cyber-duck.co.uk)** -- **[Many](https://www.many.co.uk)** -- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)** -- **[DevSquad](https://devsquad.com)** -- **[Curotec](https://www.curotec.com/services/technologies/laravel/)** -- **[OP.GG](https://op.gg)** -- **[WebReinvent](https://webreinvent.com/?utm_source=laravel&utm_medium=github&utm_campaign=patreon-sponsors)** -- **[Lendio](https://lendio.com)** - -## Contributing - -Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions). - -## Code of Conduct - -In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). - -## Security Vulnerabilities - -If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed. - -## License - -The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). diff --git a/Chapter25/onlineStore/app/Console/Kernel.php b/Chapter25/onlineStore/app/Console/Kernel.php deleted file mode 100644 index d8bc1d2..0000000 --- a/Chapter25/onlineStore/app/Console/Kernel.php +++ /dev/null @@ -1,32 +0,0 @@ -command('inspire')->hourly(); - } - - /** - * Register the commands for the application. - * - * @return void - */ - protected function commands() - { - $this->load(__DIR__.'/Commands'); - - require base_path('routes/console.php'); - } -} diff --git a/Chapter25/onlineStore/app/Exceptions/Handler.php b/Chapter25/onlineStore/app/Exceptions/Handler.php deleted file mode 100644 index 8e7fbd1..0000000 --- a/Chapter25/onlineStore/app/Exceptions/Handler.php +++ /dev/null @@ -1,41 +0,0 @@ -> - */ - protected $dontReport = [ - // - ]; - - /** - * A list of the inputs that are never flashed for validation exceptions. - * - * @var array - */ - protected $dontFlash = [ - 'current_password', - 'password', - 'password_confirmation', - ]; - - /** - * Register the exception handling callbacks for the application. - * - * @return void - */ - public function register() - { - $this->reportable(function (Throwable $e) { - // - }); - } -} diff --git a/Chapter25/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php b/Chapter25/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php deleted file mode 100644 index cd78cb3..0000000 --- a/Chapter25/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php +++ /dev/null @@ -1,16 +0,0 @@ -with("viewData", $viewData); - } -} diff --git a/Chapter25/onlineStore/app/Http/Controllers/Admin/AdminProductController.php b/Chapter25/onlineStore/app/Http/Controllers/Admin/AdminProductController.php deleted file mode 100644 index d1c6c52..0000000 --- a/Chapter25/onlineStore/app/Http/Controllers/Admin/AdminProductController.php +++ /dev/null @@ -1,79 +0,0 @@ -with("viewData", $viewData); - } - - public function store(Request $request) - { - Product::validate($request); - - $newProduct = new Product(); - $newProduct->setName($request->input('name')); - $newProduct->setDescription($request->input('description')); - $newProduct->setPrice($request->input('price')); - $newProduct->setImage("game.png"); - $newProduct->save(); - - if ($request->hasFile('image')) { - $imageName = $newProduct->getId().".".$request->file('image')->extension(); - Storage::disk('public')->put( - $imageName, - file_get_contents($request->file('image')->getRealPath()) - ); - $newProduct->setImage($imageName); - $newProduct->save(); - } - - return back(); - } - - public function delete($id) - { - Product::destroy($id); - return back(); - } - - public function edit($id) - { - $viewData = []; - $viewData["title"] = "Admin Page - Edit Product - Online Store"; - $viewData["product"] = Product::findOrFail($id); - return view('admin.product.edit')->with("viewData", $viewData); - } - - public function update(Request $request, $id) - { - Product::validate($request); - - $product = Product::findOrFail($id); - $product->setName($request->input('name')); - $product->setDescription($request->input('description')); - $product->setPrice($request->input('price')); - - if ($request->hasFile('image')) { - $imageName = $product->getId().".".$request->file('image')->extension(); - Storage::disk('public')->put( - $imageName, - file_get_contents($request->file('image')->getRealPath()) - ); - $product->setImage($imageName); - } - - $product->save(); - return redirect()->route('admin.product.index'); - } -} diff --git a/Chapter25/onlineStore/app/Http/Controllers/Auth/ConfirmPasswordController.php b/Chapter25/onlineStore/app/Http/Controllers/Auth/ConfirmPasswordController.php deleted file mode 100644 index 138c1f0..0000000 --- a/Chapter25/onlineStore/app/Http/Controllers/Auth/ConfirmPasswordController.php +++ /dev/null @@ -1,40 +0,0 @@ -middleware('auth'); - } -} diff --git a/Chapter25/onlineStore/app/Http/Controllers/Auth/ForgotPasswordController.php b/Chapter25/onlineStore/app/Http/Controllers/Auth/ForgotPasswordController.php deleted file mode 100644 index 465c39c..0000000 --- a/Chapter25/onlineStore/app/Http/Controllers/Auth/ForgotPasswordController.php +++ /dev/null @@ -1,22 +0,0 @@ -middleware('guest')->except('logout'); - } -} diff --git a/Chapter25/onlineStore/app/Http/Controllers/Auth/RegisterController.php b/Chapter25/onlineStore/app/Http/Controllers/Auth/RegisterController.php deleted file mode 100644 index 87e3a82..0000000 --- a/Chapter25/onlineStore/app/Http/Controllers/Auth/RegisterController.php +++ /dev/null @@ -1,74 +0,0 @@ -middleware('guest'); - } - - /** - * Get a validator for an incoming registration request. - * - * @param array $data - * @return \Illuminate\Contracts\Validation\Validator - */ - protected function validator(array $data) - { - return Validator::make($data, [ - 'name' => ['required', 'string', 'max:255'], - 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], - 'password' => ['required', 'string', 'min:8', 'confirmed'], - ]); - } - - /** - * Create a new user instance after a valid registration. - * - * @param array $data - * @return \App\Models\User - */ - protected function create(array $data) - { - return User::create([ - 'name' => $data['name'], - 'email' => $data['email'], - 'password' => Hash::make($data['password']), - 'balance' => 5000, - ]); - } -} diff --git a/Chapter25/onlineStore/app/Http/Controllers/Auth/ResetPasswordController.php b/Chapter25/onlineStore/app/Http/Controllers/Auth/ResetPasswordController.php deleted file mode 100644 index b1726a3..0000000 --- a/Chapter25/onlineStore/app/Http/Controllers/Auth/ResetPasswordController.php +++ /dev/null @@ -1,30 +0,0 @@ -middleware('auth'); - $this->middleware('signed')->only('verify'); - $this->middleware('throttle:6,1')->only('verify', 'resend'); - } -} diff --git a/Chapter25/onlineStore/app/Http/Controllers/CartController.php b/Chapter25/onlineStore/app/Http/Controllers/CartController.php deleted file mode 100644 index 87122bc..0000000 --- a/Chapter25/onlineStore/app/Http/Controllers/CartController.php +++ /dev/null @@ -1,43 +0,0 @@ -session()->get("products"); - if ($productsInSession) { - $productsInCart = Product::findMany(array_keys($productsInSession)); - $total = Product::sumPricesByQuantities($productsInCart, $productsInSession); - } - - $viewData = []; - $viewData["title"] = "Cart - Online Store"; - $viewData["subtitle"] = "Shopping Cart"; - $viewData["total"] = $total; - $viewData["products"] = $productsInCart; - return view('cart.index')->with("viewData", $viewData); - } - - public function add(Request $request, $id) - { - $products = $request->session()->get("products"); - $products[$id] = $request->input('quantity'); - $request->session()->put('products', $products); - - return redirect()->route('cart.index'); - } - - public function delete(Request $request) - { - $request->session()->forget('products'); - return back(); - } -} diff --git a/Chapter25/onlineStore/app/Http/Controllers/Controller.php b/Chapter25/onlineStore/app/Http/Controllers/Controller.php deleted file mode 100644 index a0a2a8a..0000000 --- a/Chapter25/onlineStore/app/Http/Controllers/Controller.php +++ /dev/null @@ -1,13 +0,0 @@ -with("viewData", $viewData); - } - - public function about() - { - $viewData = []; - $viewData["title"] = "About us - Online Store"; - $viewData["subtitle"] = "About us"; - $viewData["description"] = "This is an about page ..."; - $viewData["author"] = "Developed by: Your Name"; - return view('home.about')->with("viewData", $viewData); - } -} diff --git a/Chapter25/onlineStore/app/Http/Controllers/ProductController.php b/Chapter25/onlineStore/app/Http/Controllers/ProductController.php deleted file mode 100644 index d27a3a3..0000000 --- a/Chapter25/onlineStore/app/Http/Controllers/ProductController.php +++ /dev/null @@ -1,29 +0,0 @@ -with("viewData", $viewData); - } - - public function show($id) - { - $viewData = []; - $product = Product::findOrFail($id); - $viewData["title"] = $product->getName()." - Online Store"; - $viewData["subtitle"] = $product->getName()." - Product information"; - $viewData["product"] = $product; - return view('product.show')->with("viewData", $viewData); - } -} diff --git a/Chapter25/onlineStore/app/Http/Kernel.php b/Chapter25/onlineStore/app/Http/Kernel.php deleted file mode 100644 index c10d1c5..0000000 --- a/Chapter25/onlineStore/app/Http/Kernel.php +++ /dev/null @@ -1,68 +0,0 @@ - - */ - protected $middleware = [ - // \App\Http\Middleware\TrustHosts::class, - \App\Http\Middleware\TrustProxies::class, - \Fruitcake\Cors\HandleCors::class, - \App\Http\Middleware\PreventRequestsDuringMaintenance::class, - \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, - \App\Http\Middleware\TrimStrings::class, - \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, - ]; - - /** - * The application's route middleware groups. - * - * @var array> - */ - protected $middlewareGroups = [ - 'web' => [ - \App\Http\Middleware\EncryptCookies::class, - \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, - \Illuminate\Session\Middleware\StartSession::class, - // \Illuminate\Session\Middleware\AuthenticateSession::class, - \Illuminate\View\Middleware\ShareErrorsFromSession::class, - \App\Http\Middleware\VerifyCsrfToken::class, - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - - 'api' => [ - // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, - 'throttle:api', - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - ]; - - /** - * The application's route middleware. - * - * These middleware may be assigned to groups or used individually. - * - * @var array - */ - protected $routeMiddleware = [ - 'auth' => \App\Http\Middleware\Authenticate::class, - 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::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, - 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, - 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, - 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, - 'admin' => \App\Http\Middleware\AdminAuthMiddleware::class, - ]; -} diff --git a/Chapter25/onlineStore/app/Http/Middleware/AdminAuthMiddleware.php b/Chapter25/onlineStore/app/Http/Middleware/AdminAuthMiddleware.php deleted file mode 100644 index 6e5306b..0000000 --- a/Chapter25/onlineStore/app/Http/Middleware/AdminAuthMiddleware.php +++ /dev/null @@ -1,26 +0,0 @@ -getRole() == 'admin') { - return $next($request); - } else { - return redirect()->route('home.index'); - } - } -} diff --git a/Chapter25/onlineStore/app/Http/Middleware/Authenticate.php b/Chapter25/onlineStore/app/Http/Middleware/Authenticate.php deleted file mode 100644 index 704089a..0000000 --- a/Chapter25/onlineStore/app/Http/Middleware/Authenticate.php +++ /dev/null @@ -1,21 +0,0 @@ -expectsJson()) { - return route('login'); - } - } -} diff --git a/Chapter25/onlineStore/app/Http/Middleware/EncryptCookies.php b/Chapter25/onlineStore/app/Http/Middleware/EncryptCookies.php deleted file mode 100644 index 867695b..0000000 --- a/Chapter25/onlineStore/app/Http/Middleware/EncryptCookies.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter25/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/Chapter25/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php deleted file mode 100644 index 74cbd9a..0000000 --- a/Chapter25/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter25/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php b/Chapter25/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php deleted file mode 100644 index a2813a0..0000000 --- a/Chapter25/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php +++ /dev/null @@ -1,32 +0,0 @@ -check()) { - return redirect(RouteServiceProvider::HOME); - } - } - - return $next($request); - } -} diff --git a/Chapter25/onlineStore/app/Http/Middleware/TrimStrings.php b/Chapter25/onlineStore/app/Http/Middleware/TrimStrings.php deleted file mode 100644 index 88cadca..0000000 --- a/Chapter25/onlineStore/app/Http/Middleware/TrimStrings.php +++ /dev/null @@ -1,19 +0,0 @@ - - */ - protected $except = [ - 'current_password', - 'password', - 'password_confirmation', - ]; -} diff --git a/Chapter25/onlineStore/app/Http/Middleware/TrustHosts.php b/Chapter25/onlineStore/app/Http/Middleware/TrustHosts.php deleted file mode 100644 index 7186414..0000000 --- a/Chapter25/onlineStore/app/Http/Middleware/TrustHosts.php +++ /dev/null @@ -1,20 +0,0 @@ - - */ - public function hosts() - { - return [ - $this->allSubdomainsOfApplicationUrl(), - ]; - } -} diff --git a/Chapter25/onlineStore/app/Http/Middleware/TrustProxies.php b/Chapter25/onlineStore/app/Http/Middleware/TrustProxies.php deleted file mode 100644 index 3391630..0000000 --- a/Chapter25/onlineStore/app/Http/Middleware/TrustProxies.php +++ /dev/null @@ -1,28 +0,0 @@ -|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/Chapter25/onlineStore/app/Http/Middleware/VerifyCsrfToken.php b/Chapter25/onlineStore/app/Http/Middleware/VerifyCsrfToken.php deleted file mode 100644 index 9e86521..0000000 --- a/Chapter25/onlineStore/app/Http/Middleware/VerifyCsrfToken.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter25/onlineStore/app/Models/Product.php b/Chapter25/onlineStore/app/Models/Product.php deleted file mode 100644 index 0716c14..0000000 --- a/Chapter25/onlineStore/app/Models/Product.php +++ /dev/null @@ -1,109 +0,0 @@ -attributes['id'] - int - contains the product primary key (id) - * $this->attributes['name'] - string - contains the product name - * $this->attributes['description'] - string - contains the product description - * $this->attributes['image'] - string - contains the product image - * $this->attributes['price'] - int - contains the product price - * $this->attributes['created_at'] - timestamp - contains the product creation date - * $this->attributes['updated_at'] - timestamp - contains the product update date - */ - - public static function validate($request) - { - $request->validate([ - "name" => "required|max:255", - "description" => "required", - "price" => "required|numeric|gt:0", - 'image' => 'image', - ]); - } - - public static function sumPricesByQuantities($products, $productsInSession) - { - $total = 0; - foreach ($products as $product) { - $total = $total + ($product->getPrice()*$productsInSession[$product->getId()]); - } - - return $total; - } - - public function getId() - { - return $this->attributes['id']; - } - - public function setId($id) - { - $this->attributes['id'] = $id; - } - - public function getName() - { - return $this->attributes['name']; - } - - public function setName($name) - { - $this->attributes['name'] = $name; - } - - public function getDescription() - { - return $this->attributes['description']; - } - - public function setDescription($description) - { - $this->attributes['description'] = $description; - } - - public function getImage() - { - return $this->attributes['image']; - } - - public function setImage($image) - { - $this->attributes['image'] = $image; - } - - public function getPrice() - { - return $this->attributes['price']; - } - - public function setPrice($price) - { - $this->attributes['price'] = $price; - } - - public function getCreatedAt() - { - return $this->attributes['created_at']; - } - - public function setCreatedAt($createdAt) - { - $this->attributes['created_at'] = $createdAt; - } - - public function getUpdatedAt() - { - return $this->attributes['updated_at']; - } - - public function setUpdatedAt($updatedAt) - { - $this->attributes['updated_at'] = $updatedAt; - } -} diff --git a/Chapter25/onlineStore/app/Models/User.php b/Chapter25/onlineStore/app/Models/User.php deleted file mode 100644 index 0749c5a..0000000 --- a/Chapter25/onlineStore/app/Models/User.php +++ /dev/null @@ -1,139 +0,0 @@ -attributes['id'] - int - contains the user primary key (id) - * $this->attributes['name'] - string - contains the user name - * $this->attributes['email'] - string - contains the user email - * $this->attributes['email_verified_at'] - timestamp - contains the user email verification date - * $this->attributes['password'] - string - contains the user password - * $this->attributes['remember_token'] - string - contains the user password - * $this->attributes['role'] - string - contains the user role (client or admin) - * $this->attributes['balance'] - int - contains the user balance - * $this->attributes['created_at'] - timestamp - contains the user creation date - * $this->attributes['updated_at'] - timestamp - contains the user update date - */ - - /** - * The attributes that are mass assignable. - * - * @var array - */ - protected $fillable = [ - 'name', - 'email', - 'password', - 'balance', - ]; - - /** - * 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', - ]; - - public function getId() - { - return $this->attributes['id']; - } - - public function setId($id) - { - $this->attributes['id'] = $id; - } - - public function getName() - { - return $this->attributes['name']; - } - - public function setName($name) - { - $this->attributes['name'] = $name; - } - - public function getEmail() - { - return $this->attributes['email']; - } - - public function setEmail($email) - { - $this->attributes['email'] = $email; - } - - public function getPassword() - { - return $this->attributes['password']; - } - - public function setPassword($password) - { - $this->attributes['password'] = $password; - } - - public function getRole() - { - return $this->attributes['role']; - } - - public function setRole($role) - { - $this->attributes['role'] = $role; - } - - public function getBalance() - { - return $this->attributes['balance']; - } - - public function setBalance($balance) - { - $this->attributes['balance'] = $balance; - } - - public function getCreatedAt() - { - return $this->attributes['created_at']; - } - - public function setCreatedAt($createdAt) - { - $this->attributes['created_at'] = $createdAt; - } - - public function getUpdatedAt() - { - return $this->attributes['updated_at']; - } - - public function setUpdatedAt($updatedAt) - { - $this->attributes['updated_at'] = $updatedAt; - } -} diff --git a/Chapter25/onlineStore/app/Providers/AppServiceProvider.php b/Chapter25/onlineStore/app/Providers/AppServiceProvider.php deleted file mode 100644 index ee8ca5b..0000000 --- a/Chapter25/onlineStore/app/Providers/AppServiceProvider.php +++ /dev/null @@ -1,28 +0,0 @@ - - */ - protected $policies = [ - // 'App\Models\Model' => 'App\Policies\ModelPolicy', - ]; - - /** - * Register any authentication / authorization services. - * - * @return void - */ - public function boot() - { - $this->registerPolicies(); - - // - } -} diff --git a/Chapter25/onlineStore/app/Providers/BroadcastServiceProvider.php b/Chapter25/onlineStore/app/Providers/BroadcastServiceProvider.php deleted file mode 100644 index 395c518..0000000 --- a/Chapter25/onlineStore/app/Providers/BroadcastServiceProvider.php +++ /dev/null @@ -1,21 +0,0 @@ -> - */ - protected $listen = [ - Registered::class => [ - SendEmailVerificationNotification::class, - ], - ]; - - /** - * Register any events for your application. - * - * @return void - */ - public function boot() - { - // - } -} diff --git a/Chapter25/onlineStore/app/Providers/RouteServiceProvider.php b/Chapter25/onlineStore/app/Providers/RouteServiceProvider.php deleted file mode 100644 index fb766eb..0000000 --- a/Chapter25/onlineStore/app/Providers/RouteServiceProvider.php +++ /dev/null @@ -1,63 +0,0 @@ -configureRateLimiting(); - - $this->routes(function () { - Route::prefix('api') - ->middleware('api') - ->namespace($this->namespace) - ->group(base_path('routes/api.php')); - - Route::middleware('web') - ->namespace($this->namespace) - ->group(base_path('routes/web.php')); - }); - } - - /** - * Configure the rate limiters for the application. - * - * @return void - */ - protected function configureRateLimiting() - { - RateLimiter::for('api', function (Request $request) { - return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); - }); - } -} diff --git a/Chapter25/onlineStore/artisan b/Chapter25/onlineStore/artisan deleted file mode 100644 index 67a3329..0000000 --- a/Chapter25/onlineStore/artisan +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env php -make(Illuminate\Contracts\Console\Kernel::class); - -$status = $kernel->handle( - $input = new Symfony\Component\Console\Input\ArgvInput, - new Symfony\Component\Console\Output\ConsoleOutput -); - -/* -|-------------------------------------------------------------------------- -| Shutdown The Application -|-------------------------------------------------------------------------- -| -| Once Artisan has finished running, we will fire off the shutdown events -| so that any final work may be done by the application before we shut -| down the process. This is the last thing to happen to the request. -| -*/ - -$kernel->terminate($input, $status); - -exit($status); diff --git a/Chapter25/onlineStore/bootstrap/app.php b/Chapter25/onlineStore/bootstrap/app.php deleted file mode 100644 index 037e17d..0000000 --- a/Chapter25/onlineStore/bootstrap/app.php +++ /dev/null @@ -1,55 +0,0 @@ -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/Chapter25/onlineStore/bootstrap/cache/.gitignore b/Chapter25/onlineStore/bootstrap/cache/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter25/onlineStore/bootstrap/cache/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter25/onlineStore/composer.json b/Chapter25/onlineStore/composer.json deleted file mode 100644 index a9459b5..0000000 --- a/Chapter25/onlineStore/composer.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "name": "laravel/laravel", - "type": "project", - "description": "The Laravel Framework.", - "keywords": ["framework", "laravel"], - "license": "MIT", - "require": { - "php": "^8.0", - "fruitcake/laravel-cors": "^2.0.5", - "guzzlehttp/guzzle": "^7.2", - "laravel/framework": "^9.0", - "laravel/sanctum": "^2.14", - "laravel/tinker": "^2.7", - "laravel/ui": "^3.4" - }, - "require-dev": { - "fakerphp/faker": "^1.9.1", - "laravel/sail": "^1.0.1", - "mockery/mockery": "^1.4.4", - "nunomaduro/collision": "^6.1", - "phpunit/phpunit": "^9.5.10", - "spatie/laravel-ignition": "^1.0", - "squizlabs/php_codesniffer": "^3.6" - }, - "autoload": { - "psr-4": { - "App\\": "app/", - "Database\\Factories\\": "database/factories/", - "Database\\Seeders\\": "database/seeders/" - } - }, - "autoload-dev": { - "psr-4": { - "Tests\\": "tests/" - } - }, - "scripts": { - "post-autoload-dump": [ - "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", - "@php artisan package:discover --ansi" - ], - "post-update-cmd": [ - "@php artisan vendor:publish --tag=laravel-assets --ansi --force" - ], - "post-root-package-install": [ - "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" - ], - "post-create-project-cmd": [ - "@php artisan key:generate --ansi" - ] - }, - "extra": { - "laravel": { - "dont-discover": [] - } - }, - "config": { - "optimize-autoloader": true, - "preferred-install": "dist", - "sort-packages": true - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/Chapter25/onlineStore/composer.lock b/Chapter25/onlineStore/composer.lock deleted file mode 100644 index 78c86f1..0000000 --- a/Chapter25/onlineStore/composer.lock +++ /dev/null @@ -1,7921 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "d299b51f0f07ec600b4949240f4664af", - "packages": [ - { - "name": "asm89/stack-cors", - "version": "v2.1.1", - "source": { - "type": "git", - "url": "https://github.com/asm89/stack-cors.git", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4|^5|^6" - }, - "require-dev": { - "phpunit/phpunit": "^7|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "psr-4": { - "Asm89\\Stack\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alexander", - "email": "iam.asm89@gmail.com" - } - ], - "description": "Cross-origin resource sharing library and stack middleware", - "homepage": "https://github.com/asm89/stack-cors", - "keywords": [ - "cors", - "stack" - ], - "support": { - "issues": "https://github.com/asm89/stack-cors/issues", - "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" - }, - "time": "2022-01-18T09:12:03+00:00" - }, - { - "name": "brick/math", - "version": "0.9.3", - "source": { - "type": "git", - "url": "https://github.com/brick/math.git", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", - "vimeo/psalm": "4.9.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Brick\\Math\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Arbitrary-precision arithmetic library", - "keywords": [ - "Arbitrary-precision", - "BigInteger", - "BigRational", - "arithmetic", - "bigdecimal", - "bignum", - "brick", - "math" - ], - "support": { - "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.9.3" - }, - "funding": [ - { - "url": "https://github.com/BenMorel", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/brick/math", - "type": "tidelift" - } - ], - "time": "2021-08-15T20:50:18+00:00" - }, - { - "name": "dflydev/dot-access-data", - "version": "v3.0.1", - "source": { - "type": "git", - "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c", - "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": "^3.14" - }, - "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.1" - }, - "time": "2021-08-13T13:06:58+00:00" - }, - { - "name": "doctrine/inflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "vimeo/psalm": "^4.10" - }, - "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.4" - }, - "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": "2021-10-22T20:16:43+00:00" - }, - { - "name": "doctrine/lexer", - "version": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" - } - }, - "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/1.2.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%2Flexer", - "type": "tidelift" - } - ], - "time": "2022-01-12T08:27:12+00:00" - }, - { - "name": "dragonmantank/cron-expression", - "version": "v3.3.1", - "source": { - "type": "git", - "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "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.1" - }, - "funding": [ - { - "url": "https://github.com/dragonmantank", - "type": "github" - } - ], - "time": "2022-01-18T15:43:28+00:00" - }, - { - "name": "egulias/email-validator", - "version": "3.1.2", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ee0db30118f661fb166bcffbf5d82032df484697", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^1.2", - "php": ">=7.2", - "symfony/polyfill-intl-idn": "^1.15" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^8.5.8|^9.3.3", - "vimeo/psalm": "^4" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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/3.1.2" - }, - "funding": [ - { - "url": "https://github.com/egulias", - "type": "github" - } - ], - "time": "2021-10-11T09:18:27+00:00" - }, - { - "name": "fruitcake/laravel-cors", - "version": "v2.0.5", - "source": { - "type": "git", - "url": "https://github.com/fruitcake/laravel-cors.git", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "shasum": "" - }, - "require": { - "asm89/stack-cors": "^2.0.1", - "illuminate/contracts": "^6|^7|^8|^9", - "illuminate/support": "^6|^7|^8|^9", - "php": ">=7.2", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4.3.4|^5|^6" - }, - "require-dev": { - "laravel/framework": "^6|^7.24|^8", - "orchestra/testbench-dusk": "^4|^5|^6|^7", - "phpunit/phpunit": "^6|^7|^8|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - }, - "laravel": { - "providers": [ - "Fruitcake\\Cors\\CorsServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Fruitcake\\Cors\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fruitcake", - "homepage": "https://fruitcake.nl" - }, - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", - "keywords": [ - "api", - "cors", - "crossdomain", - "laravel" - ], - "support": { - "issues": "https://github.com/fruitcake/laravel-cors/issues", - "source": "https://github.com/fruitcake/laravel-cors/tree/v2.0.5" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "time": "2022-01-03T14:53:04+00:00" - }, - { - "name": "graham-campbell/result-type", - "version": "v1.0.4", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "0690bde05318336c7221785f2a932467f98b64ca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/0690bde05318336c7221785f2a932467f98b64ca", - "reference": "0690bde05318336c7221785f2a932467f98b64ca", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "phpoption/phpoption": "^1.8" - }, - "require-dev": { - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", - "type": "tidelift" - } - ], - "time": "2021-11-21T21:41:47+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "7.4.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.8.3 || ^2.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.4.1", - "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.5 || ^9.3.5", - "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": { - "branch-alias": { - "dev-master": "7.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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.4.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": "2021-12-06T18:43:05+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "1.5.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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/1.5.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "time": "2021-10-22T20:56:57+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.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.4.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.8 || ^9.3.10" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "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.1.0" - }, - "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": "2021-10-06T17:43:30+00:00" - }, - { - "name": "laravel/framework", - "version": "v9.0.1", - "source": { - "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "shasum": "" - }, - "require": { - "doctrine/inflector": "^2.0", - "dragonmantank/cron-expression": "^3.1", - "egulias/email-validator": "^3.1", - "ext-mbstring": "*", - "ext-openssl": "*", - "laravel/serializable-closure": "^1.0", - "league/commonmark": "^2.2", - "league/flysystem": "^3.0", - "monolog/monolog": "^2.0", - "nesbot/carbon": "^2.53.1", - "php": "^8.0.2", - "psr/container": "^1.1.1|^2.0.1", - "psr/log": "^1.0|^2.0|^3.0", - "psr/simple-cache": "^1.0|^2.0|^3.0", - "ramsey/uuid": "^4.2.2", - "symfony/console": "^6.0", - "symfony/error-handler": "^6.0", - "symfony/finder": "^6.0", - "symfony/http-foundation": "^6.0", - "symfony/http-kernel": "^6.0", - "symfony/mailer": "^6.0", - "symfony/mime": "^6.0", - "symfony/process": "^6.0", - "symfony/routing": "^6.0", - "symfony/var-dumper": "^6.0", - "tijsverkoyen/css-to-inline-styles": "^2.2.2", - "vlucas/phpdotenv": "^5.4.1", - "voku/portable-ascii": "^2.0" - }, - "conflict": { - "tightenco/collect": "<5.5.33" - }, - "provide": { - "psr/container-implementation": "1.1|2.0", - "psr/simple-cache-implementation": "1.0|2.0|3.0" - }, - "replace": { - "illuminate/auth": "self.version", - "illuminate/broadcasting": "self.version", - "illuminate/bus": "self.version", - "illuminate/cache": "self.version", - "illuminate/collections": "self.version", - "illuminate/conditionable": "self.version", - "illuminate/config": "self.version", - "illuminate/console": "self.version", - "illuminate/container": "self.version", - "illuminate/contracts": "self.version", - "illuminate/cookie": "self.version", - "illuminate/database": "self.version", - "illuminate/encryption": "self.version", - "illuminate/events": "self.version", - "illuminate/filesystem": "self.version", - "illuminate/hashing": "self.version", - "illuminate/http": "self.version", - "illuminate/log": "self.version", - "illuminate/macroable": "self.version", - "illuminate/mail": "self.version", - "illuminate/notifications": "self.version", - "illuminate/pagination": "self.version", - "illuminate/pipeline": "self.version", - "illuminate/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": { - "aws/aws-sdk-php": "^3.198.1", - "doctrine/dbal": "^2.13.3|^3.1.4", - "fakerphp/faker": "^1.9.2", - "guzzlehttp/guzzle": "^7.2", - "league/flysystem-aws-s3-v3": "^3.0", - "league/flysystem-ftp": "^3.0", - "league/flysystem-sftp-v3": "^3.0", - "mockery/mockery": "^1.4.4", - "orchestra/testbench-core": "^7.0", - "pda/pheanstalk": "^4.0", - "phpstan/phpstan": "^1.0", - "phpunit/phpunit": "^9.5.8", - "predis/predis": "^1.1.9", - "symfony/amazon-mailer": "^6.0", - "symfony/cache": "^6.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.198.1).", - "brianium/paratest": "Required to run tests in parallel (^6.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", - "ext-bcmath": "Required to use the multiple_of validation rule.", - "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.", - "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.2).", - "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-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", - "mockery/mockery": "Required to use mocking (^1.4.4).", - "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).", - "predis/predis": "Required to use the predis connector (^1.1.9).", - "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.0).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^6.0).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.0).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.0).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.0).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.x-dev" - } - }, - "autoload": { - "files": [ - "src/Illuminate/Collections/helpers.php", - "src/Illuminate/Events/functions.php", - "src/Illuminate/Foundation/helpers.php", - "src/Illuminate/Support/helpers.php" - ], - "psr-4": { - "Illuminate\\": "src/Illuminate/", - "Illuminate\\Support\\": [ - "src/Illuminate/Macroable/", - "src/Illuminate/Collections/", - "src/Illuminate/Conditionable/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Laravel Framework.", - "homepage": "https://laravel.com", - "keywords": [ - "framework", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2022-02-09T15:00:05+00:00" - }, - { - "name": "laravel/sanctum", - "version": "v2.14.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/sanctum.git", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/0647a87140c7522e75826cffcadb3ad6e01f71e9", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/contracts": "^6.9|^7.0|^8.0|^9.0", - "illuminate/database": "^6.9|^7.0|^8.0|^9.0", - "illuminate/support": "^6.9|^7.0|^8.0|^9.0", - "php": "^7.2|^8.0" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0", - "phpunit/phpunit": "^8.0|^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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": "2022-01-12T15:07:43+00:00" - }, - { - "name": "laravel/serializable-closure", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/serializable-closure.git", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/65c9faf50d567b65d81764a44526545689e3fe63", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "pestphp/pest": "^1.18", - "phpstan/phpstan": "^0.12.98", - "symfony/var-dumper": "^5.3" - }, - "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": "2022-02-01T16:29:39+00:00" - }, - { - "name": "laravel/tinker", - "version": "v2.7.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/tinker.git", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/5f2f9815b7631b9f586a3de7933c25f9327d4073", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073", - "shasum": "" - }, - "require": { - "illuminate/console": "^6.0|^7.0|^8.0|^9.0", - "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.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", - "phpunit/phpunit": "^8.5.8|^9.3.3" - }, - "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.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.7.0" - }, - "time": "2022-01-10T08:52:49+00:00" - }, - { - "name": "laravel/ui", - "version": "v3.4.3", - "source": { - "type": "git", - "url": "https://github.com/laravel/ui.git", - "reference": "64a0f43492c00780b2261c56cd7007a4f370d95b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/ui/zipball/64a0f43492c00780b2261c56cd7007a4f370d95b", - "reference": "64a0f43492c00780b2261c56cd7007a4f370d95b", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.42|^9.0", - "illuminate/filesystem": "^8.42|^9.0", - "illuminate/support": "^8.82|^9.0", - "illuminate/validation": "^8.42|^9.0", - "php": "^7.3|^8.0" - }, - "require-dev": { - "orchestra/testbench": "^6.23|^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - }, - "laravel": { - "providers": [ - "Laravel\\Ui\\UiServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Laravel\\Ui\\": "src/", - "Illuminate\\Foundation\\Auth\\": "auth-backend/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "Laravel UI utilities and presets.", - "keywords": [ - "laravel", - "ui" - ], - "support": { - "source": "https://github.com/laravel/ui/tree/v3.4.3" - }, - "time": "2022-02-08T14:19:32+00:00" - }, - { - "name": "league/commonmark", - "version": "2.2.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/commonmark.git", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "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.15" - }, - "require-dev": { - "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.0", - "commonmark/commonmark.js": "0.30.0", - "composer/package-versions-deprecated": "^1.8", - "erusev/parsedown": "^1.0", - "ext-json": "*", - "github/gfm": "0.29.0", - "michelf/php-markdown": "^1.4", - "phpstan/phpstan": "^0.12.88 || ^1.0.0", - "phpunit/phpunit": "^9.5.5", - "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", - "unleashedtech/php-coding-standard": "^3.1", - "vimeo/psalm": "^4.7.3" - }, - "suggest": { - "symfony/yaml": "v2.3+ required if using the Front Matter extension" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.3-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": "2022-01-25T14:37:33+00:00" - }, - { - "name": "league/config", - "version": "v1.1.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/config.git", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/config/zipball/a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^3.0.1", - "nette/schema": "^1.2", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.90", - "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": "2021-08-14T12:15:32+00:00" - }, - { - "name": "league/flysystem", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9f8b4260031bfef5497477da53dd57b2aaff0e06", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06", - "shasum": "" - }, - "require": { - "ext-json": "*", - "league/mime-type-detection": "^1.0.0", - "php": "^8.0.2" - }, - "conflict": { - "guzzlehttp/guzzle": "<7.0", - "guzzlehttp/ringphp": "<1.1.1", - "symfony/http-client": "<5.2" - }, - "require-dev": { - "async-aws/s3": "^1.5", - "async-aws/simple-s3": "^1.0", - "aws/aws-sdk-php": "^3.198.1", - "composer/semver": "^3.0", - "ext-fileinfo": "*", - "ext-ftp": "*", - "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.5", - "google/cloud-storage": "^1.23", - "phpseclib/phpseclib": "^2.0", - "phpstan/phpstan": "^0.12.26", - "phpunit/phpunit": "^9.5.11", - "sabre/dav": "^4.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.0.3" - }, - "funding": [ - { - "url": "https://offset.earth/frankdejonge", - "type": "custom" - }, - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2022-01-31T19:41:04+00:00" - }, - { - "name": "league/mime-type-detection", - "version": "1.9.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/aa70e813a6ad3d1558fc927863d47309b4c23e69", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.2", - "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" - }, - "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.9.0" - }, - "funding": [ - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2021-11-21T11:48:40+00:00" - }, - { - "name": "monolog/monolog", - "version": "2.3.5", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd4380d6fc37626e2f799f29d91195040137eba9", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "provide": { - "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7", - "graylog2/gelf-php": "^1.4.2", - "mongodb/mongodb": "^1.8", - "php-amqplib/php-amqplib": "~2.4 || ^3", - "php-console/php-console": "^3.1.3", - "phpspec/prophecy": "^1.6.1", - "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5", - "predis/predis": "^1.1", - "rollbar/rollbar": "^1.3", - "ruflin/elastica": ">=0.90@dev", - "swiftmailer/swiftmailer": "^5.3|^6.0" - }, - "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", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "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": "2.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/2.3.5" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" - } - ], - "time": "2021-10-01T21:08:31+00:00" - }, - { - "name": "nesbot/carbon", - "version": "2.56.0", - "source": { - "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1.8 || ^8.0", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "doctrine/dbal": "^2.0 || ^3.0", - "doctrine/orm": "^2.7", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "phpmd/phpmd": "^2.9", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.54 || ^1.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.14", - "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://opencollective.com/Carbon", - "type": "open_collective" - }, - { - "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", - "type": "tidelift" - } - ], - "time": "2022-01-21T17:08:38+00:00" - }, - { - "name": "nette/schema", - "version": "v1.2.2", - "source": { - "type": "git", - "url": "https://github.com/nette/schema.git", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/9a39cef03a5b34c7de64f551538cbba05c2be5df", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df", - "shasum": "" - }, - "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": ">=7.1 <8.2" - }, - "require-dev": { - "nette/tester": "^2.3 || ^2.4", - "phpstan/phpstan-nette": "^0.12", - "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.2" - }, - "time": "2021-10-15T11:40:02+00:00" - }, - { - "name": "nette/utils", - "version": "v3.2.7", - "source": { - "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/0af4e3de4df9f1543534beab255ccf459e7a2c99", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99", - "shasum": "" - }, - "require": { - "php": ">=7.2 <8.2" - }, - "conflict": { - "nette/di": "<3.0.6" - }, - "require-dev": { - "nette/tester": "~2.0", - "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.3" - }, - "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()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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 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/v3.2.7" - }, - "time": "2022-01-24T11:29:14+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.13.2", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", - "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.13.2" - }, - "time": "2021-11-30T19:35:32+00:00" - }, - { - "name": "phpoption/phpoption", - "version": "1.8.1", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-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.8.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", - "type": "tidelift" - } - ], - "time": "2021-12-04T23:24:31+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.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.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": "http://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/tree/master" - }, - "time": "2020-06-29T06:28:15+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.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": "http://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/master" - }, - "time": "2019-04-30T12:38:16+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.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": "http://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/master" - }, - "time": "2016-08-06T14:39: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.1", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "570292577277f06f590635381a7f761a6cf4f026" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/570292577277f06f590635381a7f761a6cf4f026", - "reference": "570292577277f06f590635381a7f761a6cf4f026", - "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" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "3.17.05.02" - }, - "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.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." - }, - "bin": [ - "bin/psysh" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "0.11.x-dev" - } - }, - "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.1" - }, - "time": "2022-01-03T13:58:38+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": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/ramsey/collection.git", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "shasum": "" - }, - "require": { - "php": "^7.3 || ^8", - "symfony/polyfill-php81": "^1.23" - }, - "require-dev": { - "captainhook/captainhook": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "ergebnis/composer-normalize": "^2.6", - "fakerphp/faker": "^1.5", - "hamcrest/hamcrest-php": "^2", - "jangregor/phpstan-prophecy": "^0.8", - "mockery/mockery": "^1.3", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1", - "phpstan/phpstan": "^0.12.32", - "phpstan/phpstan-mockery": "^0.12.5", - "phpstan/phpstan-phpunit": "^0.12.11", - "phpunit/phpunit": "^8.5 || ^9", - "psy/psysh": "^0.10.4", - "slevomat/coding-standard": "^6.3", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.4" - }, - "type": "library", - "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/1.2.2" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "time": "2021-10-10T03:01:02+00:00" - }, - { - "name": "ramsey/uuid", - "version": "4.2.3", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "shasum": "" - }, - "require": { - "brick/math": "^0.8 || ^0.9", - "ext-json": "*", - "php": "^7.2 || ^8.0", - "ramsey/collection": "^1.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php80": "^1.14" - }, - "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", - "moontoast/math": "^1.1", - "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.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-mockery": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^8.5 || ^9", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" - }, - "suggest": { - "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-ctype": "Enables faster processing of character classification using ctype functions.", - "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": { - "branch-alias": { - "dev-main": "4.x-dev" - }, - "captainhook": { - "force-install": true - } - }, - "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "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.2.3" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2021-09-25T23:10:38+00:00" - }, - { - "name": "symfony/console", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/22e8efd019c3270c4f79376234a3f8752cd25490", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.4|^6.0" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/css-selector", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/1955d595c12c111629cc814d3f2a2ff13580508a", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a", - "shasum": "" - }, - "require": { - "php": ">=8.0.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/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-11-01T23:48:49+00:00" - }, - { - "name": "symfony/error-handler", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/20343b3bad7ebafa38138ddcb97290a24722b57b", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" - }, - "bin": [ - "Resources/bin/patch-type-declarations" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to manage errors and ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6472ea2dd415e925b90ca82be64b8bc6157f3934", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/event-dispatcher-contracts": "^2|^3" - }, - "conflict": { - "symfony/dependency-injection": "<5.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^5.4|^6.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/aa5422287b75594b90ee9cd807caf8f0df491385", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/event-dispatcher": "^1" - }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-07-15T12:33:35+00:00" - }, - { - "name": "symfony/finder", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/8661b74dbabc23223f38c9b99d3f8ade71170430", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ad157299ced81a637fade1efcadd688d6deba5c1", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1" - }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/cache": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0" - }, - "suggest": { - "symfony/mime": "To use the file extension guesser" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v6.0.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/error-handler": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", - "symfony/twig-bridge": "<5.4", - "symfony/validator": "<5.4", - "twig/twig": "<2.13" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/process": "^5.4|^6.0", - "symfony/routing": "^5.4|^6.0", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-29T18:12:46+00:00" - }, - { - "name": "symfony/mailer", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mailer.git", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "shasum": "" - }, - "require": { - "egulias/email-validator": "^2.1.10|^3", - "php": ">=8.0.2", - "psr/event-dispatcher": "^1", - "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3" - }, - "conflict": { - "symfony/http-kernel": "<5.4" - }, - "require-dev": { - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/messenger": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/mime", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/2cd9601efd040e56f43360daa68f3c6b0534923a", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "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" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "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.24.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": "2021-10-20T20:35:02+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-11-23T21:10:46+00:00" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44", - "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.23-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.24.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": "2021-09-14T14:02:44+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.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": "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.24.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": "2021-11-30T18:21:41+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-05-27T09:17:38+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:33+00:00" - }, - { - "name": "symfony/polyfill-php81", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:11+00:00" - }, - { - "name": "symfony/process", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/298ed357274c1868c20a0061df256a1250a6c4af", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/routing", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/yaml": "<5.4" - }, - "require-dev": { - "doctrine/annotations": "^1.12", - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/36715ebf9fb9db73db0cb24263c79077c6fe8603", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/container": "^2.0" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "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.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": "2021-11-04T17:53:12+00:00" - }, - { - "name": "symfony/string", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/522144f0c4c004c80d56fa47e40e17028e2eefc2", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.0" - }, - "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/translation-contracts": "^2.0|^3.0", - "symfony/var-exporter": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "files": [ - "Resources/functions.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 an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/translation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/71bb15335798f8c4da110911bcf2d2fead7a430d", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.3|^3.0" - }, - "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" - }, - "provide": { - "symfony/translation-implementation": "2.3|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-07T00:29:03+00:00" - }, - { - "name": "symfony/translation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "suggest": { - "symfony/translation-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - } - }, - "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.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": "2021-09-07T12:43:40+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7b701676fc64f9ef11f9b4870f16b48f66be4834", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<5.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-17T16:30:44+00:00" - }, - { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.4", - "source": { - "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" - } - ], - "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", - "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "support": { - "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" - }, - "time": "2021-12-08T09:12:39+00:00" - }, - { - "name": "vlucas/phpdotenv", - "version": "v5.4.1", - "source": { - "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", - "shasum": "" - }, - "require": { - "ext-pcre": "*", - "graham-campbell/result-type": "^1.0.2", - "php": "^7.1.3 || ^8.0", - "phpoption/phpoption": "^1.8", - "symfony/polyfill-ctype": "^1.23", - "symfony/polyfill-mbstring": "^1.23.1", - "symfony/polyfill-php80": "^1.23.1" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" - }, - "suggest": { - "ext-filter": "Required to use the boolean validator." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.4-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.4.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", - "type": "tidelift" - } - ], - "time": "2021-12-12T23:22:04+00:00" - }, - { - "name": "voku/portable-ascii", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/voku/portable-ascii.git", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/9bd89e83cecdf8c37b64909454249eaed98b2c89", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89", - "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.0" - }, - "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-01-24T18:59:03+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "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.10.0" - }, - "time": "2021-03-09T10:59:23+00:00" - } - ], - "packages-dev": [ - { - "name": "doctrine/instantiator", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.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%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2020-11-10T18:47:58+00:00" - }, - { - "name": "facade/ignition-contracts", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/facade/ignition-contracts.git", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^v2.15.8", - "phpunit/phpunit": "^9.3.11", - "vimeo/psalm": "^3.17.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Facade\\IgnitionContracts\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://flareapp.io", - "role": "Developer" - } - ], - "description": "Solution contracts for Ignition", - "homepage": "https://github.com/facade/ignition-contracts", - "keywords": [ - "contracts", - "flare", - "ignition" - ], - "support": { - "issues": "https://github.com/facade/ignition-contracts/issues", - "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" - }, - "time": "2020-10-16T08:27:54+00:00" - }, - { - "name": "fakerphp/faker", - "version": "v1.19.0", - "source": { - "type": "git", - "url": "https://github.com/FakerPHP/Faker.git", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^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": "*", - "symfony/phpunit-bridge": "^4.4 || ^5.2" - }, - "suggest": { - "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", - "ext-curl": "Required by Faker\\Provider\\Image to download images.", - "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", - "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.19-dev" - } - }, - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "François Zaninotto" - } - ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], - "support": { - "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0" - }, - "time": "2022-02-02T17:38:57+00:00" - }, - { - "name": "filp/whoops", - "version": "2.14.5", - "source": { - "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "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.14.5" - }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "time": "2022-01-07T12:00:00+00:00" - }, - { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "shasum": "" - }, - "require": { - "php": "^5.3|^7.0|^8.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" - }, - "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "classmap": [ - "hamcrest" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "This is the PHP port of Hamcrest Matchers", - "keywords": [ - "test" - ], - "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" - }, - "time": "2020-07-09T08:09:16+00:00" - }, - { - "name": "laravel/sail", - "version": "v1.13.2", - "source": { - "type": "git", - "url": "https://github.com/laravel/sail.git", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.0|^9.0", - "illuminate/contracts": "^8.0|^9.0", - "illuminate/support": "^8.0|^9.0", - "php": "^7.3|^8.0" - }, - "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": "2022-02-08T14:14:12+00:00" - }, - { - "name": "mockery/mockery", - "version": "1.5.0", - "source": { - "type": "git", - "url": "https://github.com/mockery/mockery.git", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "shasum": "" - }, - "require": { - "hamcrest/hamcrest-php": "^2.0.1", - "lib-pcre": ">=7.0", - "php": "^7.3 || ^8.0" - }, - "conflict": { - "phpunit/phpunit": "<8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-0": { - "Mockery": "library/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" - } - ], - "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": { - "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.5.0" - }, - "time": "2022-01-20T13:18:17+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.10.2", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "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.10.2" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2020-11-13T09:40:50+00:00" - }, - { - "name": "nunomaduro/collision", - "version": "v6.1.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/collision.git", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "shasum": "" - }, - "require": { - "facade/ignition-contracts": "^1.0.2", - "filp/whoops": "^2.14.5", - "php": "^8.0.0", - "symfony/console": "^6.0.2" - }, - "require-dev": { - "brianium/paratest": "^6.4.1", - "laravel/framework": "^9.0", - "nunomaduro/larastan": "^1.0.2", - "nunomaduro/mock-final-classes": "^1.1.0", - "orchestra/testbench": "^7.0.0", - "phpunit/phpunit": "^9.5.11" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "6.x-dev" - }, - "laravel": { - "providers": [ - "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" - ] - } - }, - "autoload": { - "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": "2022-01-18T17:49:08+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.1.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/15a90844ad40f127afd244c0cad228de2a80052a", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a", - "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.1.1" - }, - "time": "2022-02-07T21:56:48+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.6.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "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.6.0" - }, - "time": "2022-01-04T19:58:01+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" - }, - "time": "2021-12-08T12:19:24+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "9.2.10", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d5850aaf931743067f4bfc1ae4cbd06468400687", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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 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", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.10" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-05T09:12:13+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "3.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-02T12:48:52+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "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/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:58:55+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T05:33:50+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.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/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:16:10+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "9.5.13", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/597cb647654ede35e43b137926dfdfef0fb11743", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.3.1", - "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": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.7", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", - "sebastian/version": "^3.0.2" - }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.13" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-01-24T07:33:35+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:08:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "1.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:08:54+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:30:19+00:00" - }, - { - "name": "sebastian/comparator", - "version": "4.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:49:45+00:00" - }, - { - "name": "sebastian/complexity", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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 calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:52:27+00:00" - }, - { - "name": "sebastian/diff", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:10:38+00:00" - }, - { - "name": "sebastian/environment", - "version": "5.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-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": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:52:38+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "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", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-11-11T14:18:36+00:00" - }, - { - "name": "sebastian/global-state", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-11T13:31:12+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-28T06:42:11+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "http://www.github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:17:30+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:45:17+00:00" - }, - { - "name": "sebastian/type", - "version": "2.3.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-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/2.3.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-15T12:49:02+00:00" - }, - { - "name": "sebastian/version", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:39:44+00:00" - }, - { - "name": "spatie/backtrace", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/backtrace.git", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "ext-json": "*", - "phpunit/phpunit": "^9.3", - "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": { - "issues": "https://github.com/spatie/backtrace/issues", - "source": "https://github.com/spatie/backtrace/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/sponsors/spatie", - "type": "github" - }, - { - "url": "https://spatie.be/open-source/support-us", - "type": "other" - } - ], - "time": "2021-11-09T10:57:15+00:00" - }, - { - "name": "spatie/flare-client-php", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/flare-client-php.git", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "shasum": "" - }, - "require": { - "illuminate/pipeline": "^8.0|^9.0", - "php": "^8.0", - "spatie/backtrace": "^1.2", - "symfony/http-foundation": "^5.0|^6.0", - "symfony/mime": "^5.2|^6.0", - "symfony/process": "^5.2|^6.0", - "symfony/var-dumper": "^5.2|^6.0" - }, - "require-dev": { - "dms/phpunit-arraysubset-asserts": "^0.3.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/phpunit-snapshot-assertions": "^4.0" - }, - "type": "library", - "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.0.1" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2022-02-04T15:21:00+00:00" - }, - { - "name": "spatie/ignition", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/spatie/ignition.git", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/d2d5ba823af3004268556e87dfc94449e4159f5a", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "monolog/monolog": "^2.0", - "php": "^8.0", - "spatie/flare-client-php": "^1.0", - "symfony/console": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "mockery/mockery": "^1.4", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/ray": "^1.32", - "symfony/process": "^5.4|^6.0" - }, - "type": "library", - "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": "2022-01-19T12:57:41+00:00" - }, - { - "name": "spatie/laravel-ignition", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/68250225a9f83b086462c2af1b1139dfde48fbd2", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*", - "illuminate/support": "^8.77|^9.0", - "monolog/monolog": "^2.3", - "php": "^8.0", - "spatie/flare-client-php": "^1.0.1", - "spatie/ignition": "^1.0", - "symfony/console": "^5.0|^6.0", - "symfony/var-dumper": "^5.0|^6.0" - }, - "require-dev": { - "filp/whoops": "^2.14", - "livewire/livewire": "^2.8|dev-develop", - "mockery/mockery": "^1.4", - "nunomaduro/larastan": "^1.0", - "orchestra/testbench": "^6.23|^7.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/laravel-ray": "^1.27" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Spatie\\LaravelIgnition\\IgnitionServiceProvider" - ], - "aliases": { - "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" - } - } - }, - "autoload": { - "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": "2022-02-04T15:25:56+00:00" - }, - { - "name": "squizlabs/php_codesniffer", - "version": "3.6.2", - "source": { - "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", - "shasum": "" - }, - "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.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": "lead" - } - ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", - "keywords": [ - "phpcs", - "standards" - ], - "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" - }, - "time": "2021-12-12T21:44:58+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2021-07-28T10:34:58+00:00" - } - ], - "aliases": [], - "minimum-stability": "dev", - "stability-flags": [], - "prefer-stable": true, - "prefer-lowest": false, - "platform": { - "php": "^8.0" - }, - "platform-dev": [], - "plugin-api-version": "2.1.0" -} diff --git a/Chapter25/onlineStore/config/app.php b/Chapter25/onlineStore/config/app.php deleted file mode 100644 index 1941d7c..0000000 --- a/Chapter25/onlineStore/config/app.php +++ /dev/null @@ -1,197 +0,0 @@ - env('APP_NAME', 'Laravel'), - - /* - |-------------------------------------------------------------------------- - | Application Environment - |-------------------------------------------------------------------------- - | - | This value determines the "environment" your application is currently - | running in. This may determine how you prefer to configure various - | services the application utilizes. Set this in your ".env" file. - | - */ - - 'env' => env('APP_ENV', 'production'), - - /* - |-------------------------------------------------------------------------- - | Application Debug Mode - |-------------------------------------------------------------------------- - | - | When your application is in debug mode, detailed error messages with - | stack traces will be shown on every error that occurs within your - | application. If disabled, a simple generic error page is shown. - | - */ - - 'debug' => (bool) env('APP_DEBUG', false), - - /* - |-------------------------------------------------------------------------- - | Application URL - |-------------------------------------------------------------------------- - | - | This URL is used by the console to properly generate URLs when using - | the Artisan command line tool. You should set this to the root of - | your application so that it is used when running Artisan tasks. - | - */ - - 'url' => env('APP_URL', 'http://localhost'), - - 'asset_url' => env('ASSET_URL', null), - - /* - |-------------------------------------------------------------------------- - | 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', - - /* - |-------------------------------------------------------------------------- - | 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' => [ - - /* - * Laravel Framework Service Providers... - */ - Illuminate\Auth\AuthServiceProvider::class, - Illuminate\Broadcasting\BroadcastServiceProvider::class, - Illuminate\Bus\BusServiceProvider::class, - Illuminate\Cache\CacheServiceProvider::class, - Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, - Illuminate\Cookie\CookieServiceProvider::class, - Illuminate\Database\DatabaseServiceProvider::class, - Illuminate\Encryption\EncryptionServiceProvider::class, - Illuminate\Filesystem\FilesystemServiceProvider::class, - Illuminate\Foundation\Providers\FoundationServiceProvider::class, - Illuminate\Hashing\HashServiceProvider::class, - Illuminate\Mail\MailServiceProvider::class, - Illuminate\Notifications\NotificationServiceProvider::class, - Illuminate\Pagination\PaginationServiceProvider::class, - Illuminate\Pipeline\PipelineServiceProvider::class, - Illuminate\Queue\QueueServiceProvider::class, - Illuminate\Redis\RedisServiceProvider::class, - Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, - Illuminate\Session\SessionServiceProvider::class, - Illuminate\Translation\TranslationServiceProvider::class, - Illuminate\Validation\ValidationServiceProvider::class, - Illuminate\View\ViewServiceProvider::class, - - /* - * 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, - - ], - - /* - |-------------------------------------------------------------------------- - | 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([ - // ... - ])->toArray(), - -]; diff --git a/Chapter25/onlineStore/config/auth.php b/Chapter25/onlineStore/config/auth.php deleted file mode 100644 index d8c6cee..0000000 --- a/Chapter25/onlineStore/config/auth.php +++ /dev/null @@ -1,111 +0,0 @@ - [ - '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 expire 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. - | - */ - - 'passwords' => [ - 'users' => [ - 'provider' => 'users', - 'table' => 'password_resets', - '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/Chapter25/onlineStore/config/broadcasting.php b/Chapter25/onlineStore/config/broadcasting.php deleted file mode 100644 index 67fcbbd..0000000 --- a/Chapter25/onlineStore/config/broadcasting.php +++ /dev/null @@ -1,67 +0,0 @@ - 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'), - 'useTLS' => true, - ], - '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/Chapter25/onlineStore/config/cache.php b/Chapter25/onlineStore/config/cache.php deleted file mode 100644 index 8736c7a..0000000 --- a/Chapter25/onlineStore/config/cache.php +++ /dev/null @@ -1,110 +0,0 @@ - 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'), - ], - - '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 a RAM based store such as APC or Memcached, there might - | be other applications utilizing the same cache. So, we'll specify a - | value to get prefixed to all our keys so we can avoid collisions. - | - */ - - 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'), - -]; diff --git a/Chapter25/onlineStore/config/cors.php b/Chapter25/onlineStore/config/cors.php deleted file mode 100644 index 8a39e6d..0000000 --- a/Chapter25/onlineStore/config/cors.php +++ /dev/null @@ -1,34 +0,0 @@ - ['api/*', 'sanctum/csrf-cookie'], - - 'allowed_methods' => ['*'], - - 'allowed_origins' => ['*'], - - 'allowed_origins_patterns' => [], - - 'allowed_headers' => ['*'], - - 'exposed_headers' => [], - - 'max_age' => 0, - - 'supports_credentials' => false, - -]; diff --git a/Chapter25/onlineStore/config/database.php b/Chapter25/onlineStore/config/database.php deleted file mode 100644 index 0faebae..0000000 --- a/Chapter25/onlineStore/config/database.php +++ /dev/null @@ -1,147 +0,0 @@ - env('DB_CONNECTION', 'mysql'), - - /* - |-------------------------------------------------------------------------- - | Database Connections - |-------------------------------------------------------------------------- - | - | Here are each of the database connections setup for your application. - | Of course, examples of configuring each database platform that is - | supported by Laravel is shown below to make development simple. - | - | - | All database work in Laravel is done through the PHP PDO facilities - | so make sure you have the driver for your particular database of - | choice installed on your machine before you begin development. - | - */ - - 'connections' => [ - - 'sqlite' => [ - 'driver' => 'sqlite', - 'url' => env('DATABASE_URL'), - 'database' => env('DB_DATABASE', database_path('database.sqlite')), - 'prefix' => '', - 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), - ], - - 'mysql' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '3306'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'unix_socket' => env('DB_SOCKET', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - 'pgsql' => [ - 'driver' => 'pgsql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '5432'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - 'search_path' => 'public', - 'sslmode' => 'prefer', - ], - - 'sqlsrv' => [ - 'driver' => 'sqlsrv', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', 'localhost'), - 'port' => env('DB_PORT', '1433'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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'), - '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'), - 'password' => env('REDIS_PASSWORD'), - 'port' => env('REDIS_PORT', '6379'), - 'database' => env('REDIS_CACHE_DB', '1'), - ], - - ], - -]; diff --git a/Chapter25/onlineStore/config/filesystems.php b/Chapter25/onlineStore/config/filesystems.php deleted file mode 100644 index cf5abce..0000000 --- a/Chapter25/onlineStore/config/filesystems.php +++ /dev/null @@ -1,73 +0,0 @@ - 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 setup for each driver as an example of the required options. - | - | Supported Drivers: "local", "ftp", "sftp", "s3" - | - */ - - 'disks' => [ - - 'local' => [ - 'driver' => 'local', - 'root' => storage_path('app'), - ], - - 'public' => [ - 'driver' => 'local', - 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', - 'visibility' => 'public', - ], - - '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), - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter25/onlineStore/config/hashing.php b/Chapter25/onlineStore/config/hashing.php deleted file mode 100644 index bcd3be4..0000000 --- a/Chapter25/onlineStore/config/hashing.php +++ /dev/null @@ -1,52 +0,0 @@ - '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/Chapter25/onlineStore/config/logging.php b/Chapter25/onlineStore/config/logging.php deleted file mode 100644 index fefe088..0000000 --- a/Chapter25/onlineStore/config/logging.php +++ /dev/null @@ -1,119 +0,0 @@ - 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' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), - - /* - |-------------------------------------------------------------------------- - | 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'), - ], - - 'daily' => [ - 'driver' => 'daily', - 'path' => storage_path('logs/laravel.log'), - 'level' => env('LOG_LEVEL', 'debug'), - 'days' => 14, - ], - - 'slack' => [ - 'driver' => 'slack', - 'url' => env('LOG_SLACK_WEBHOOK_URL'), - 'username' => 'Laravel Log', - 'emoji' => ':boom:', - 'level' => env('LOG_LEVEL', 'critical'), - ], - - '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'), - ], - ], - - 'stderr' => [ - 'driver' => 'monolog', - 'level' => env('LOG_LEVEL', 'debug'), - 'handler' => StreamHandler::class, - 'formatter' => env('LOG_STDERR_FORMATTER'), - 'with' => [ - 'stream' => 'php://stderr', - ], - ], - - 'syslog' => [ - 'driver' => 'syslog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'errorlog' => [ - 'driver' => 'errorlog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'null' => [ - 'driver' => 'monolog', - 'handler' => NullHandler::class, - ], - - 'emergency' => [ - 'path' => storage_path('logs/laravel.log'), - ], - ], - -]; diff --git a/Chapter25/onlineStore/config/mail.php b/Chapter25/onlineStore/config/mail.php deleted file mode 100644 index 87b6fe3..0000000 --- a/Chapter25/onlineStore/config/mail.php +++ /dev/null @@ -1,117 +0,0 @@ - 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", - | "postmark", "log", "array", "failover" - | - */ - - 'mailers' => [ - 'smtp' => [ - 'transport' => 'smtp', - '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, - ], - - 'ses' => [ - 'transport' => 'ses', - ], - - 'mailgun' => [ - 'transport' => 'mailgun', - ], - - 'postmark' => [ - 'transport' => 'postmark', - ], - - 'sendmail' => [ - 'transport' => 'sendmail', - 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -t -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/Chapter25/onlineStore/config/queue.php b/Chapter25/onlineStore/config/queue.php deleted file mode 100644 index 25ea5a8..0000000 --- a/Chapter25/onlineStore/config/queue.php +++ /dev/null @@ -1,93 +0,0 @@ - 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, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter25/onlineStore/config/sanctum.php b/Chapter25/onlineStore/config/sanctum.php deleted file mode 100644 index 9281c92..0000000 --- a/Chapter25/onlineStore/config/sanctum.php +++ /dev/null @@ -1,65 +0,0 @@ - explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( - '%s%s', - 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', - env('APP_URL') ? ','.parse_url(env('APP_URL'), PHP_URL_HOST) : '' - ))), - - /* - |-------------------------------------------------------------------------- - | 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/Chapter25/onlineStore/config/services.php b/Chapter25/onlineStore/config/services.php deleted file mode 100644 index 2a1d616..0000000 --- a/Chapter25/onlineStore/config/services.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - 'domain' => env('MAILGUN_DOMAIN'), - 'secret' => env('MAILGUN_SECRET'), - 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), - ], - - '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/Chapter25/onlineStore/config/session.php b/Chapter25/onlineStore/config/session.php deleted file mode 100644 index 8fed97c..0000000 --- a/Chapter25/onlineStore/config/session.php +++ /dev/null @@ -1,201 +0,0 @@ - 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/Chapter25/onlineStore/config/view.php b/Chapter25/onlineStore/config/view.php deleted file mode 100644 index 22b8a18..0000000 --- a/Chapter25/onlineStore/config/view.php +++ /dev/null @@ -1,36 +0,0 @@ - [ - 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/Chapter25/onlineStore/database/.gitignore b/Chapter25/onlineStore/database/.gitignore deleted file mode 100644 index 9b19b93..0000000 --- a/Chapter25/onlineStore/database/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.sqlite* diff --git a/Chapter25/onlineStore/database/factories/UserFactory.php b/Chapter25/onlineStore/database/factories/UserFactory.php deleted file mode 100644 index d6ca926..0000000 --- a/Chapter25/onlineStore/database/factories/UserFactory.php +++ /dev/null @@ -1,42 +0,0 @@ - - */ -class UserFactory extends Factory -{ - /** - * Define the model's default state. - * - * @return array - */ - public function definition() - { - return [ - 'name' => $this->faker->name(), - 'email' => $this->faker->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. - * - * @return \Illuminate\Database\Eloquent\Factories\Factory - */ - public function unverified() - { - return $this->state(function (array $attributes) { - return [ - 'email_verified_at' => null, - ]; - }); - } -} diff --git a/Chapter25/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php b/Chapter25/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php deleted file mode 100644 index cf6b776..0000000 --- a/Chapter25/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->string('name'); - $table->string('email')->unique(); - $table->timestamp('email_verified_at')->nullable(); - $table->string('password'); - $table->rememberToken(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('users'); - } -}; diff --git a/Chapter25/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php b/Chapter25/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php deleted file mode 100644 index 0ee0a36..0000000 --- a/Chapter25/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php +++ /dev/null @@ -1,32 +0,0 @@ -string('email')->index(); - $table->string('token'); - $table->timestamp('created_at')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('password_resets'); - } -} diff --git a/Chapter25/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/Chapter25/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php deleted file mode 100644 index 1719198..0000000 --- a/Chapter25/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php +++ /dev/null @@ -1,36 +0,0 @@ -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. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('failed_jobs'); - } -}; diff --git a/Chapter25/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/Chapter25/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php deleted file mode 100644 index fd235f8..0000000 --- a/Chapter25/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->morphs('tokenable'); - $table->string('name'); - $table->string('token', 64)->unique(); - $table->text('abilities')->nullable(); - $table->timestamp('last_used_at')->nullable(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('personal_access_tokens'); - } -}; diff --git a/Chapter25/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php b/Chapter25/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php deleted file mode 100644 index 2eecdc2..0000000 --- a/Chapter25/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php +++ /dev/null @@ -1,35 +0,0 @@ -id(); - $table->string('name'); - $table->text('description'); - $table->string('image'); - $table->integer('price'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('products'); - } -}; diff --git a/Chapter25/onlineStore/database/migrations/2022_02_12_140820_alter_users_table.php b/Chapter25/onlineStore/database/migrations/2022_02_12_140820_alter_users_table.php deleted file mode 100644 index 5bfcf7e..0000000 --- a/Chapter25/onlineStore/database/migrations/2022_02_12_140820_alter_users_table.php +++ /dev/null @@ -1,34 +0,0 @@ -string('role')->default('client'); - $table->integer('balance'); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::table('users', function (Blueprint $table) { - $table->dropColumn(['role']); - $table->dropColumn(['balance']); - }); - } -}; diff --git a/Chapter25/onlineStore/database/seeders/DatabaseSeeder.php b/Chapter25/onlineStore/database/seeders/DatabaseSeeder.php deleted file mode 100644 index 71f673f..0000000 --- a/Chapter25/onlineStore/database/seeders/DatabaseSeeder.php +++ /dev/null @@ -1,19 +0,0 @@ -create(); - } -} diff --git a/Chapter25/onlineStore/lang/en.json b/Chapter25/onlineStore/lang/en.json deleted file mode 100644 index 577680d..0000000 --- a/Chapter25/onlineStore/lang/en.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "The :attribute must contain at least one letter.": "The :attribute must contain at least one letter.", - "The :attribute must contain at least one number.": "The :attribute must contain at least one number.", - "The :attribute must contain at least one symbol.": "The :attribute must contain at least one symbol.", - "The :attribute must contain at least one uppercase and one lowercase letter.": "The :attribute must contain at least one uppercase and one lowercase letter.", - "The given :attribute has appeared in a data leak. Please choose a different :attribute.": "The given :attribute has appeared in a data leak. Please choose a different :attribute." -} diff --git a/Chapter25/onlineStore/lang/en/auth.php b/Chapter25/onlineStore/lang/en/auth.php deleted file mode 100644 index 6598e2c..0000000 --- a/Chapter25/onlineStore/lang/en/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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/Chapter25/onlineStore/lang/en/pagination.php b/Chapter25/onlineStore/lang/en/pagination.php deleted file mode 100644 index d481411..0000000 --- a/Chapter25/onlineStore/lang/en/pagination.php +++ /dev/null @@ -1,19 +0,0 @@ - '« Previous', - 'next' => 'Next »', - -]; diff --git a/Chapter25/onlineStore/lang/en/passwords.php b/Chapter25/onlineStore/lang/en/passwords.php deleted file mode 100644 index 2345a56..0000000 --- a/Chapter25/onlineStore/lang/en/passwords.php +++ /dev/null @@ -1,22 +0,0 @@ - '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/Chapter25/onlineStore/lang/en/validation.php b/Chapter25/onlineStore/lang/en/validation.php deleted file mode 100644 index 783003c..0000000 --- a/Chapter25/onlineStore/lang/en/validation.php +++ /dev/null @@ -1,163 +0,0 @@ - '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' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - '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' => [ - 'numeric' => 'The :attribute must be greater than :value.', - 'file' => 'The :attribute must be greater than :value kilobytes.', - 'string' => 'The :attribute must be greater than :value characters.', - 'array' => 'The :attribute must have more than :value items.', - ], - 'gte' => [ - 'numeric' => 'The :attribute must be greater than or equal to :value.', - 'file' => 'The :attribute must be greater than or equal to :value kilobytes.', - 'string' => 'The :attribute must be greater than or equal to :value characters.', - 'array' => 'The :attribute must have :value items or more.', - ], - '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' => [ - 'numeric' => 'The :attribute must be less than :value.', - 'file' => 'The :attribute must be less than :value kilobytes.', - 'string' => 'The :attribute must be less than :value characters.', - 'array' => 'The :attribute must have less than :value items.', - ], - 'lte' => [ - 'numeric' => 'The :attribute must be less than or equal to :value.', - 'file' => 'The :attribute must be less than or equal to :value kilobytes.', - 'string' => 'The :attribute must be less than or equal to :value characters.', - 'array' => 'The :attribute must not have more than :value items.', - ], - 'mac_address' => 'The :attribute must be a valid MAC address.', - 'max' => [ - 'numeric' => 'The :attribute must not be greater than :max.', - 'file' => 'The :attribute must not be greater than :max kilobytes.', - 'string' => 'The :attribute must not be greater than :max characters.', - 'array' => 'The :attribute must not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - '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.', - 'password' => 'The password is incorrect.', - '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' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - '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/Chapter25/onlineStore/package.json b/Chapter25/onlineStore/package.json deleted file mode 100644 index 7b71681..0000000 --- a/Chapter25/onlineStore/package.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "private": true, - "scripts": { - "dev": "npm run development", - "development": "mix", - "watch": "mix watch", - "watch-poll": "mix watch -- --watch-options-poll=1000", - "hot": "mix watch --hot", - "prod": "npm run production", - "production": "mix --production" - }, - "devDependencies": { - "@popperjs/core": "^2.10.2", - "axios": "^0.25", - "bootstrap": "^5.1.3", - "laravel-mix": "^6.0.6", - "lodash": "^4.17.19", - "postcss": "^8.1.14", - "sass": "^1.32.11", - "sass-loader": "^11.0.1" - } -} diff --git a/Chapter25/onlineStore/phpcs.xml b/Chapter25/onlineStore/phpcs.xml deleted file mode 100644 index a1cf2b6..0000000 --- a/Chapter25/onlineStore/phpcs.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - The coding standard for the Online Store project - - app/ - config/ - database/ - routes/ - */migrations/* - diff --git a/Chapter25/onlineStore/phpunit.xml b/Chapter25/onlineStore/phpunit.xml deleted file mode 100644 index 2ac86a1..0000000 --- a/Chapter25/onlineStore/phpunit.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - ./tests/Unit - - - ./tests/Feature - - - - - ./app - - - - - - - - - - - - - - diff --git a/Chapter25/onlineStore/public/.htaccess b/Chapter25/onlineStore/public/.htaccess deleted file mode 100644 index 3aec5e2..0000000 --- a/Chapter25/onlineStore/public/.htaccess +++ /dev/null @@ -1,21 +0,0 @@ - - - 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/Chapter25/onlineStore/public/css/admin.css b/Chapter25/onlineStore/public/css/admin.css deleted file mode 100644 index d9495a1..0000000 --- a/Chapter25/onlineStore/public/css/admin.css +++ /dev/null @@ -1,33 +0,0 @@ -.copyright { - background-color: #1a252f; -} - -.fixed { - -ms-flex: 0 0 250px; - flex: 0 0 250px; -} - -.content-grey { - background-color: #f8f9fc; -} - -hr { - margin-top: 0.8em; - margin-bottom: 0.8em; -} - -.img-profile { - height: 2rem; - width: 2rem; -} - -.profile-font { - color: #858796 !important; - font-size: 80%; - font-weight: 400; -} - -.card-header { - background-color: #f8f9fc; - border-bottom: 1px solid #e3e6f0; -} diff --git a/Chapter25/onlineStore/public/css/app.css b/Chapter25/onlineStore/public/css/app.css deleted file mode 100644 index cabac36..0000000 --- a/Chapter25/onlineStore/public/css/app.css +++ /dev/null @@ -1,20 +0,0 @@ -.bg-secondary { - background-color: #2c3e50 !important; -} - -.copyright { - background-color: #1a252f; -} - -.bg-primary { - background-color: #1abc9c !important; -} - -nav{ - font-weight: 700; -} - -.img-card{ - height: 18vw; - object-fit: cover; -} diff --git a/Chapter25/onlineStore/public/favicon.ico b/Chapter25/onlineStore/public/favicon.ico deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter25/onlineStore/public/img/game.png b/Chapter25/onlineStore/public/img/game.png deleted file mode 100644 index 85420e8bbc16098bf26b4ee63bde0e91a19d1f2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25896 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 cz>% diff --git a/Chapter25/onlineStore/public/img/safe.png b/Chapter25/onlineStore/public/img/safe.png deleted file mode 100644 index 445942c707af53210931f9f4f99f6d3cb69e5d89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19240 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
w==XB0?3|p=#`o%NsudE(E-U#KS3Snw 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 o>ir+C;RN10sIS0&a;p - - - - - - - - - - - - - - - - - - diff --git a/Chapter25/onlineStore/public/index.php b/Chapter25/onlineStore/public/index.php deleted file mode 100644 index 1d69f3a..0000000 --- a/Chapter25/onlineStore/public/index.php +++ /dev/null @@ -1,55 +0,0 @@ -make(Kernel::class); - -$response = $kernel->handle( - $request = Request::capture() -)->send(); - -$kernel->terminate($request, $response); diff --git a/Chapter25/onlineStore/public/robots.txt b/Chapter25/onlineStore/public/robots.txt deleted file mode 100644 index eb05362..0000000 --- a/Chapter25/onlineStore/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: diff --git a/Chapter25/onlineStore/resources/css/app.css b/Chapter25/onlineStore/resources/css/app.css deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter25/onlineStore/resources/js/app.js b/Chapter25/onlineStore/resources/js/app.js deleted file mode 100644 index 40c55f6..0000000 --- a/Chapter25/onlineStore/resources/js/app.js +++ /dev/null @@ -1 +0,0 @@ -require('./bootstrap'); diff --git a/Chapter25/onlineStore/resources/js/bootstrap.js b/Chapter25/onlineStore/resources/js/bootstrap.js deleted file mode 100644 index dcdc4df..0000000 --- a/Chapter25/onlineStore/resources/js/bootstrap.js +++ /dev/null @@ -1,32 +0,0 @@ -window._ = require('lodash'); - -try { - require('bootstrap'); -} catch (e) {} - -/** - * 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 = require('axios'); - -window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; - -/** - * 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'; - -// window.Pusher = require('pusher-js'); - -// window.Echo = new Echo({ -// broadcaster: 'pusher', -// key: process.env.MIX_PUSHER_APP_KEY, -// cluster: process.env.MIX_PUSHER_APP_CLUSTER, -// forceTLS: true -// }); diff --git a/Chapter25/onlineStore/resources/sass/_variables.scss b/Chapter25/onlineStore/resources/sass/_variables.scss deleted file mode 100644 index 172daaa..0000000 --- a/Chapter25/onlineStore/resources/sass/_variables.scss +++ /dev/null @@ -1,7 +0,0 @@ -// Body -$body-bg: #f8fafc; - -// Typography -$font-family-sans-serif: 'Nunito', sans-serif; -$font-size-base: 0.9rem; -$line-height-base: 1.6; diff --git a/Chapter25/onlineStore/resources/sass/app.scss b/Chapter25/onlineStore/resources/sass/app.scss deleted file mode 100644 index 3193ffa..0000000 --- a/Chapter25/onlineStore/resources/sass/app.scss +++ /dev/null @@ -1,8 +0,0 @@ -// Fonts -@import url('https://fonts.googleapis.com/css?family=Nunito'); - -// Variables -@import 'variables'; - -// Bootstrap -@import '~bootstrap/scss/bootstrap'; diff --git a/Chapter25/onlineStore/resources/views/admin/home/index.blade.php b/Chapter25/onlineStore/resources/views/admin/home/index.blade.php deleted file mode 100644 index a2b4868..0000000 --- a/Chapter25/onlineStore/resources/views/admin/home/index.blade.php +++ /dev/null @@ -1,12 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
-
- Admin Panel - Home Page -
-
- Welcome to the Admin Panel, use the sidebar to navigate between the different options. -
-
-@endsection diff --git a/Chapter25/onlineStore/resources/views/admin/product/edit.blade.php b/Chapter25/onlineStore/resources/views/admin/product/edit.blade.php deleted file mode 100644 index b8e03d8..0000000 --- a/Chapter25/onlineStore/resources/views/admin/product/edit.blade.php +++ /dev/null @@ -1,61 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
-
- Edit Product -
-
- @if($errors->any()) -
    - @foreach($errors->all() as $error) -
  • - {{ $error }}
  • - @endforeach -
- @endif - -
- @csrf - @method('PUT') -
-
-
- -
- -
-
-
-
-
- -
- -
-
-
-
-
-
-
- -
- -
-
-
-
-   -
-
-
- - -
- -
-
-
-@endsection diff --git a/Chapter25/onlineStore/resources/views/admin/product/index.blade.php b/Chapter25/onlineStore/resources/views/admin/product/index.blade.php deleted file mode 100644 index 19fbe4b..0000000 --- a/Chapter25/onlineStore/resources/views/admin/product/index.blade.php +++ /dev/null @@ -1,98 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
-
- Create Products -
-
- @if($errors->any()) -
    - @foreach($errors->all() as $error) -
  • - {{ $error }}
  • - @endforeach -
- @endif - -
- @csrf -
-
-
- -
- -
-
-
-
-
- -
- -
-
-
-
-
-
-
- -
- -
-
-
-
-   -
-
-
- - -
- -
-
-
- -
-
- Manage Products -
-
- - - - - - - - - - - @foreach ($viewData["products"] as $product) - - - - - - - @endforeach - -
IDNameEditDelete
{{ $product->getId() }}{{ $product->getName() }} - - - - -
- @csrf - @method('DELETE') - -
-
-
-
-@endsection diff --git a/Chapter25/onlineStore/resources/views/auth/login.blade.php b/Chapter25/onlineStore/resources/views/auth/login.blade.php deleted file mode 100644 index c7e5ea0..0000000 --- a/Chapter25/onlineStore/resources/views/auth/login.blade.php +++ /dev/null @@ -1,73 +0,0 @@ -@extends('layouts.app') - -@section('content') -
-@endsection diff --git a/Chapter25/onlineStore/resources/views/auth/passwords/confirm.blade.php b/Chapter25/onlineStore/resources/views/auth/passwords/confirm.blade.php deleted file mode 100644 index f8c8e61..0000000 --- a/Chapter25/onlineStore/resources/views/auth/passwords/confirm.blade.php +++ /dev/null @@ -1,49 +0,0 @@ -@extends('layouts.app') - -@section('content') - -@endsection diff --git a/Chapter25/onlineStore/resources/views/auth/passwords/email.blade.php b/Chapter25/onlineStore/resources/views/auth/passwords/email.blade.php deleted file mode 100644 index d1ac783..0000000 --- a/Chapter25/onlineStore/resources/views/auth/passwords/email.blade.php +++ /dev/null @@ -1,47 +0,0 @@ -@extends('layouts.app') - -@section('content') -
-
-
-
-
{{ __('Reset Password') }}
- -
- @if (session('status')) - - @endif - -
- @csrf - -
- - -
- - - @error('email') - - {{ $message }} - - @enderror -
-
- -
-
- -
-
-
-
-
-
-
-
-@endsection diff --git a/Chapter25/onlineStore/resources/views/auth/passwords/reset.blade.php b/Chapter25/onlineStore/resources/views/auth/passwords/reset.blade.php deleted file mode 100644 index dccf6c6..0000000 --- a/Chapter25/onlineStore/resources/views/auth/passwords/reset.blade.php +++ /dev/null @@ -1,65 +0,0 @@ -@extends('layouts.app') - -@section('content') -
-
-
-
-
{{ __('Reset Password') }}
- -
-
- @csrf - - - -
- - -
- - - @error('email') - - {{ $message }} - - @enderror -
-
- -
- - -
- - - @error('password') - - {{ $message }} - - @enderror -
-
- -
- - -
- -
-
- -
-
- -
-
-
-
-
-
-
-
-@endsection diff --git a/Chapter25/onlineStore/resources/views/auth/register.blade.php b/Chapter25/onlineStore/resources/views/auth/register.blade.php deleted file mode 100644 index e001a0b..0000000 --- a/Chapter25/onlineStore/resources/views/auth/register.blade.php +++ /dev/null @@ -1,77 +0,0 @@ -@extends('layouts.app') - -@section('content') -
-
-
-
-
{{ __('Register') }}
- -
-
- @csrf - -
- - -
- - - @error('name') - - {{ $message }} - - @enderror -
-
- -
- - -
- - - @error('email') - - {{ $message }} - - @enderror -
-
- -
- - -
- - - @error('password') - - {{ $message }} - - @enderror -
-
- -
- - -
- -
-
- -
-
- -
-
-
-
-
-
-
-
-@endsection diff --git a/Chapter25/onlineStore/resources/views/auth/verify.blade.php b/Chapter25/onlineStore/resources/views/auth/verify.blade.php deleted file mode 100644 index 9f8c1bc..0000000 --- a/Chapter25/onlineStore/resources/views/auth/verify.blade.php +++ /dev/null @@ -1,28 +0,0 @@ -@extends('layouts.app') - -@section('content') -
-
-
-
-
{{ __('Verify Your Email Address') }}
- -
- @if (session('resent')) - - @endif - - {{ __('Before proceeding, please check your email for a verification link.') }} - {{ __('If you did not receive the email') }}, -
- @csrf - . -
-
-
-
-
-
-@endsection diff --git a/Chapter25/onlineStore/resources/views/cart/index.blade.php b/Chapter25/onlineStore/resources/views/cart/index.blade.php deleted file mode 100644 index b45015b..0000000 --- a/Chapter25/onlineStore/resources/views/cart/index.blade.php +++ /dev/null @@ -1,43 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
-@endsection diff --git a/Chapter25/onlineStore/resources/views/home.blade.php b/Chapter25/onlineStore/resources/views/home.blade.php deleted file mode 100644 index 1f34466..0000000 --- a/Chapter25/onlineStore/resources/views/home.blade.php +++ /dev/null @@ -1,23 +0,0 @@ -@extends('layouts.app') - -@section('content') -
-
-
-
-
{{ __('Dashboard') }}
- -
- @if (session('status')) - - @endif - - {{ __('You are logged in!') }} -
-
-
-
-
-@endsection diff --git a/Chapter25/onlineStore/resources/views/home/about.blade.php b/Chapter25/onlineStore/resources/views/home/about.blade.php deleted file mode 100644 index f79abf3..0000000 --- a/Chapter25/onlineStore/resources/views/home/about.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
-
-
-

{{ $viewData["description"] }}

-
-
-

{{ $viewData["author"] }}

-
-
-
-@endsection diff --git a/Chapter25/onlineStore/resources/views/home/index.blade.php b/Chapter25/onlineStore/resources/views/home/index.blade.php deleted file mode 100644 index 1affb20..0000000 --- a/Chapter25/onlineStore/resources/views/home/index.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('content') -
-
- -
-
- -
-
- -
-
-@endsection diff --git a/Chapter25/onlineStore/resources/views/layouts/admin.blade.php b/Chapter25/onlineStore/resources/views/layouts/admin.blade.php deleted file mode 100644 index 4aff3f8..0000000 --- a/Chapter25/onlineStore/resources/views/layouts/admin.blade.php +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - @yield('title', 'Admin - Online Store') - - - -
- - - -
- - -
- @yield('content') -
-
-
- - - - - - - - - diff --git a/Chapter25/onlineStore/resources/views/layouts/app.blade.php b/Chapter25/onlineStore/resources/views/layouts/app.blade.php deleted file mode 100644 index 7b86f0e..0000000 --- a/Chapter25/onlineStore/resources/views/layouts/app.blade.php +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - @yield('title', 'Online Store') - - - - - -
-
-

@yield('subtitle', 'A Laravel Online Store')

-
-
- - -
- @yield('content') -
- - - - - - - diff --git a/Chapter25/onlineStore/resources/views/product/index.blade.php b/Chapter25/onlineStore/resources/views/product/index.blade.php deleted file mode 100644 index 64c3e18..0000000 --- a/Chapter25/onlineStore/resources/views/product/index.blade.php +++ /dev/null @@ -1,18 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
- @foreach ($viewData["products"] as $product) - - @endforeach -
-@endsection diff --git a/Chapter25/onlineStore/resources/views/product/show.blade.php b/Chapter25/onlineStore/resources/views/product/show.blade.php deleted file mode 100644 index 801ea09..0000000 --- a/Chapter25/onlineStore/resources/views/product/show.blade.php +++ /dev/null @@ -1,36 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
-
-
- getImage()) }}" class="img-fluid rounded-start"> -
-
-
-
- {{ $viewData["product"]->getName() }} (${{ $viewData["product"]->getPrice() }}) -
-

{{ $viewData["product"]->getDescription() }}

-

-

-
- @csrf -
-
-
Quantity
- -
-
-
- -
-
-
-

-
-
-
-
-@endsection diff --git a/Chapter25/onlineStore/resources/views/welcome.blade.php b/Chapter25/onlineStore/resources/views/welcome.blade.php deleted file mode 100644 index c587c72..0000000 --- a/Chapter25/onlineStore/resources/views/welcome.blade.php +++ /dev/null @@ -1,7 +0,0 @@ -@extends('layouts.app') -@section('title', 'Home Page - Online Store') -@section('content') -
- Welcome to the application -
-@endsection \ No newline at end of file diff --git a/Chapter25/onlineStore/routes/api.php b/Chapter25/onlineStore/routes/api.php deleted file mode 100644 index eb6fa48..0000000 --- a/Chapter25/onlineStore/routes/api.php +++ /dev/null @@ -1,19 +0,0 @@ -get('/user', function (Request $request) { - return $request->user(); -}); diff --git a/Chapter25/onlineStore/routes/channels.php b/Chapter25/onlineStore/routes/channels.php deleted file mode 100644 index 5d451e1..0000000 --- a/Chapter25/onlineStore/routes/channels.php +++ /dev/null @@ -1,18 +0,0 @@ -id === (int) $id; -}); diff --git a/Chapter25/onlineStore/routes/console.php b/Chapter25/onlineStore/routes/console.php deleted file mode 100644 index e05f4c9..0000000 --- a/Chapter25/onlineStore/routes/console.php +++ /dev/null @@ -1,19 +0,0 @@ -comment(Inspiring::quote()); -})->purpose('Display an inspiring quote'); diff --git a/Chapter25/onlineStore/routes/web.php b/Chapter25/onlineStore/routes/web.php deleted file mode 100644 index 9ed67aa..0000000 --- a/Chapter25/onlineStore/routes/web.php +++ /dev/null @@ -1,34 +0,0 @@ -name("home.index"); -Route::get('/about', 'App\Http\Controllers\HomeController@about')->name("home.about"); -Route::get('/products', 'App\Http\Controllers\ProductController@index')->name("product.index"); -Route::get('/products/{id}', 'App\Http\Controllers\ProductController@show')->name("product.show"); - -Route::get('/cart', 'App\Http\Controllers\CartController@index')->name("cart.index"); -Route::get('/cart/delete', 'App\Http\Controllers\CartController@delete')->name("cart.delete"); -Route::post('/cart/add/{id}', 'App\Http\Controllers\CartController@add')->name("cart.add"); - -Route::middleware('admin')->group(function () { - Route::get('/admin', 'App\Http\Controllers\Admin\AdminHomeController@index')->name("admin.home.index"); - Route::get('/admin/products', 'App\Http\Controllers\Admin\AdminProductController@index')->name("admin.product.index"); - Route::post('/admin/products/store', 'App\Http\Controllers\Admin\AdminProductController@store')->name("admin.product.store"); - Route::delete('/admin/products/{id}/delete', 'App\Http\Controllers\Admin\AdminProductController@delete')->name("admin.product.delete"); - Route::get('/admin/products/{id}/edit', 'App\Http\Controllers\Admin\AdminProductController@edit')->name("admin.product.edit"); - Route::put('/admin/products/{id}/update', 'App\Http\Controllers\Admin\AdminProductController@update')->name("admin.product.update"); -}); - -Auth::routes(); diff --git a/Chapter25/onlineStore/storage/app/.gitignore b/Chapter25/onlineStore/storage/app/.gitignore deleted file mode 100644 index 8f4803c..0000000 --- a/Chapter25/onlineStore/storage/app/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!public/ -!.gitignore diff --git a/Chapter25/onlineStore/storage/app/public/.gitignore b/Chapter25/onlineStore/storage/app/public/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter25/onlineStore/storage/app/public/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter25/onlineStore/storage/framework/.gitignore b/Chapter25/onlineStore/storage/framework/.gitignore deleted file mode 100644 index 05c4471..0000000 --- a/Chapter25/onlineStore/storage/framework/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -compiled.php -config.php -down -events.scanned.php -maintenance.php -routes.php -routes.scanned.php -schedule-* -services.json diff --git a/Chapter25/onlineStore/storage/framework/cache/.gitignore b/Chapter25/onlineStore/storage/framework/cache/.gitignore deleted file mode 100644 index 01e4a6c..0000000 --- a/Chapter25/onlineStore/storage/framework/cache/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!data/ -!.gitignore diff --git a/Chapter25/onlineStore/storage/framework/cache/data/.gitignore b/Chapter25/onlineStore/storage/framework/cache/data/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter25/onlineStore/storage/framework/cache/data/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter25/onlineStore/storage/framework/sessions/.gitignore b/Chapter25/onlineStore/storage/framework/sessions/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter25/onlineStore/storage/framework/sessions/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter25/onlineStore/storage/framework/testing/.gitignore b/Chapter25/onlineStore/storage/framework/testing/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter25/onlineStore/storage/framework/testing/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter25/onlineStore/storage/framework/views/.gitignore b/Chapter25/onlineStore/storage/framework/views/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter25/onlineStore/storage/framework/views/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter25/onlineStore/storage/logs/.gitignore b/Chapter25/onlineStore/storage/logs/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter25/onlineStore/storage/logs/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter25/onlineStore/tests/CreatesApplication.php b/Chapter25/onlineStore/tests/CreatesApplication.php deleted file mode 100644 index 547152f..0000000 --- a/Chapter25/onlineStore/tests/CreatesApplication.php +++ /dev/null @@ -1,22 +0,0 @@ -make(Kernel::class)->bootstrap(); - - return $app; - } -} diff --git a/Chapter25/onlineStore/tests/Feature/ExampleTest.php b/Chapter25/onlineStore/tests/Feature/ExampleTest.php deleted file mode 100644 index 78ccc21..0000000 --- a/Chapter25/onlineStore/tests/Feature/ExampleTest.php +++ /dev/null @@ -1,21 +0,0 @@ -get('/'); - - $response->assertStatus(200); - } -} diff --git a/Chapter25/onlineStore/tests/TestCase.php b/Chapter25/onlineStore/tests/TestCase.php deleted file mode 100644 index 2932d4a..0000000 --- a/Chapter25/onlineStore/tests/TestCase.php +++ /dev/null @@ -1,10 +0,0 @@ -assertTrue(true); - } -} diff --git a/Chapter25/onlineStore/webpack.mix.js b/Chapter25/onlineStore/webpack.mix.js deleted file mode 100644 index 1a2a958..0000000 --- a/Chapter25/onlineStore/webpack.mix.js +++ /dev/null @@ -1,16 +0,0 @@ -const mix = require('laravel-mix'); - -/* - |-------------------------------------------------------------------------- - | Mix Asset Management - |-------------------------------------------------------------------------- - | - | Mix provides a clean, fluent API for defining some Webpack build steps - | for your Laravel application. By default, we are compiling the Sass - | file for the application as well as bundling up all the JS files. - | - */ - -mix.js('resources/js/app.js', 'public/js') - .sass('resources/sass/app.scss', 'public/css') - .sourceMaps(); diff --git a/Chapter26/onlineStore/.editorconfig b/Chapter26/onlineStore/.editorconfig deleted file mode 100644 index 1671c9b..0000000 --- a/Chapter26/onlineStore/.editorconfig +++ /dev/null @@ -1,18 +0,0 @@ -root = true - -[*] -charset = utf-8 -end_of_line = lf -insert_final_newline = true -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true - -[*.md] -trim_trailing_whitespace = false - -[*.{yml,yaml}] -indent_size = 2 - -[docker-compose.yml] -indent_size = 4 diff --git a/Chapter26/onlineStore/.env.example b/Chapter26/onlineStore/.env.example deleted file mode 100644 index 8510237..0000000 --- a/Chapter26/onlineStore/.env.example +++ /dev/null @@ -1,52 +0,0 @@ -APP_NAME=Laravel -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=laravel -DB_USERNAME=root -DB_PASSWORD= - -BROADCAST_DRIVER=log -CACHE_DRIVER=file -FILESYSTEM_DISK=local -QUEUE_CONNECTION=sync -SESSION_DRIVER=file -SESSION_LIFETIME=120 - -MEMCACHED_HOST=127.0.0.1 - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -MAIL_MAILER=smtp -MAIL_HOST=mailhog -MAIL_PORT=1025 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS=null -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_APP_CLUSTER=mt1 - -MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/Chapter26/onlineStore/.gitattributes b/Chapter26/onlineStore/.gitattributes deleted file mode 100644 index 510d996..0000000 --- a/Chapter26/onlineStore/.gitattributes +++ /dev/null @@ -1,10 +0,0 @@ -* text=auto - -*.blade.php diff=html -*.css diff=css -*.html diff=html -*.md diff=markdown -*.php diff=php - -/.github export-ignore -CHANGELOG.md export-ignore diff --git a/Chapter26/onlineStore/.gitignore b/Chapter26/onlineStore/.gitignore deleted file mode 100644 index eb003b0..0000000 --- a/Chapter26/onlineStore/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -/node_modules -/public/hot -/public/storage -/storage/*.key -/vendor -.env -.env.backup -.phpunit.result.cache -docker-compose.override.yml -Homestead.json -Homestead.yaml -npm-debug.log -yarn-error.log -/.idea -/.vscode diff --git a/Chapter26/onlineStore/.styleci.yml b/Chapter26/onlineStore/.styleci.yml deleted file mode 100644 index 679a631..0000000 --- a/Chapter26/onlineStore/.styleci.yml +++ /dev/null @@ -1,13 +0,0 @@ -php: - preset: laravel - version: 8 - disabled: - - no_unused_imports - finder: - not-name: - - index.php -js: - finder: - not-name: - - webpack.mix.js -css: true diff --git a/Chapter26/onlineStore/README.md b/Chapter26/onlineStore/README.md deleted file mode 100644 index f171eca..0000000 --- a/Chapter26/onlineStore/README.md +++ /dev/null @@ -1,64 +0,0 @@ -

- -

-Build Status -Total Downloads -Latest Stable Version -License -

- -## About Laravel - -Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as: - -- [Simple, fast routing engine](https://laravel.com/docs/routing). -- [Powerful dependency injection container](https://laravel.com/docs/container). -- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage. -- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent). -- Database agnostic [schema migrations](https://laravel.com/docs/migrations). -- [Robust background job processing](https://laravel.com/docs/queues). -- [Real-time event broadcasting](https://laravel.com/docs/broadcasting). - -Laravel is accessible, powerful, and provides tools required for large, robust applications. - -## Learning Laravel - -Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework. - -If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 2000 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library. - -## Laravel Sponsors - -We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell). - -### Premium Partners - -- **[Vehikl](https://vehikl.com/)** -- **[Tighten Co.](https://tighten.co)** -- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** -- **[64 Robots](https://64robots.com)** -- **[Cubet Techno Labs](https://cubettech.com)** -- **[Cyber-Duck](https://cyber-duck.co.uk)** -- **[Many](https://www.many.co.uk)** -- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)** -- **[DevSquad](https://devsquad.com)** -- **[Curotec](https://www.curotec.com/services/technologies/laravel/)** -- **[OP.GG](https://op.gg)** -- **[WebReinvent](https://webreinvent.com/?utm_source=laravel&utm_medium=github&utm_campaign=patreon-sponsors)** -- **[Lendio](https://lendio.com)** - -## Contributing - -Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions). - -## Code of Conduct - -In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). - -## Security Vulnerabilities - -If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed. - -## License - -The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). diff --git a/Chapter26/onlineStore/app/Console/Kernel.php b/Chapter26/onlineStore/app/Console/Kernel.php deleted file mode 100644 index d8bc1d2..0000000 --- a/Chapter26/onlineStore/app/Console/Kernel.php +++ /dev/null @@ -1,32 +0,0 @@ -command('inspire')->hourly(); - } - - /** - * Register the commands for the application. - * - * @return void - */ - protected function commands() - { - $this->load(__DIR__.'/Commands'); - - require base_path('routes/console.php'); - } -} diff --git a/Chapter26/onlineStore/app/Exceptions/Handler.php b/Chapter26/onlineStore/app/Exceptions/Handler.php deleted file mode 100644 index 8e7fbd1..0000000 --- a/Chapter26/onlineStore/app/Exceptions/Handler.php +++ /dev/null @@ -1,41 +0,0 @@ -> - */ - protected $dontReport = [ - // - ]; - - /** - * A list of the inputs that are never flashed for validation exceptions. - * - * @var array - */ - protected $dontFlash = [ - 'current_password', - 'password', - 'password_confirmation', - ]; - - /** - * Register the exception handling callbacks for the application. - * - * @return void - */ - public function register() - { - $this->reportable(function (Throwable $e) { - // - }); - } -} diff --git a/Chapter26/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php b/Chapter26/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php deleted file mode 100644 index cd78cb3..0000000 --- a/Chapter26/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php +++ /dev/null @@ -1,16 +0,0 @@ -with("viewData", $viewData); - } -} diff --git a/Chapter26/onlineStore/app/Http/Controllers/Admin/AdminProductController.php b/Chapter26/onlineStore/app/Http/Controllers/Admin/AdminProductController.php deleted file mode 100644 index d1c6c52..0000000 --- a/Chapter26/onlineStore/app/Http/Controllers/Admin/AdminProductController.php +++ /dev/null @@ -1,79 +0,0 @@ -with("viewData", $viewData); - } - - public function store(Request $request) - { - Product::validate($request); - - $newProduct = new Product(); - $newProduct->setName($request->input('name')); - $newProduct->setDescription($request->input('description')); - $newProduct->setPrice($request->input('price')); - $newProduct->setImage("game.png"); - $newProduct->save(); - - if ($request->hasFile('image')) { - $imageName = $newProduct->getId().".".$request->file('image')->extension(); - Storage::disk('public')->put( - $imageName, - file_get_contents($request->file('image')->getRealPath()) - ); - $newProduct->setImage($imageName); - $newProduct->save(); - } - - return back(); - } - - public function delete($id) - { - Product::destroy($id); - return back(); - } - - public function edit($id) - { - $viewData = []; - $viewData["title"] = "Admin Page - Edit Product - Online Store"; - $viewData["product"] = Product::findOrFail($id); - return view('admin.product.edit')->with("viewData", $viewData); - } - - public function update(Request $request, $id) - { - Product::validate($request); - - $product = Product::findOrFail($id); - $product->setName($request->input('name')); - $product->setDescription($request->input('description')); - $product->setPrice($request->input('price')); - - if ($request->hasFile('image')) { - $imageName = $product->getId().".".$request->file('image')->extension(); - Storage::disk('public')->put( - $imageName, - file_get_contents($request->file('image')->getRealPath()) - ); - $product->setImage($imageName); - } - - $product->save(); - return redirect()->route('admin.product.index'); - } -} diff --git a/Chapter26/onlineStore/app/Http/Controllers/Auth/ConfirmPasswordController.php b/Chapter26/onlineStore/app/Http/Controllers/Auth/ConfirmPasswordController.php deleted file mode 100644 index 138c1f0..0000000 --- a/Chapter26/onlineStore/app/Http/Controllers/Auth/ConfirmPasswordController.php +++ /dev/null @@ -1,40 +0,0 @@ -middleware('auth'); - } -} diff --git a/Chapter26/onlineStore/app/Http/Controllers/Auth/ForgotPasswordController.php b/Chapter26/onlineStore/app/Http/Controllers/Auth/ForgotPasswordController.php deleted file mode 100644 index 465c39c..0000000 --- a/Chapter26/onlineStore/app/Http/Controllers/Auth/ForgotPasswordController.php +++ /dev/null @@ -1,22 +0,0 @@ -middleware('guest')->except('logout'); - } -} diff --git a/Chapter26/onlineStore/app/Http/Controllers/Auth/RegisterController.php b/Chapter26/onlineStore/app/Http/Controllers/Auth/RegisterController.php deleted file mode 100644 index 87e3a82..0000000 --- a/Chapter26/onlineStore/app/Http/Controllers/Auth/RegisterController.php +++ /dev/null @@ -1,74 +0,0 @@ -middleware('guest'); - } - - /** - * Get a validator for an incoming registration request. - * - * @param array $data - * @return \Illuminate\Contracts\Validation\Validator - */ - protected function validator(array $data) - { - return Validator::make($data, [ - 'name' => ['required', 'string', 'max:255'], - 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], - 'password' => ['required', 'string', 'min:8', 'confirmed'], - ]); - } - - /** - * Create a new user instance after a valid registration. - * - * @param array $data - * @return \App\Models\User - */ - protected function create(array $data) - { - return User::create([ - 'name' => $data['name'], - 'email' => $data['email'], - 'password' => Hash::make($data['password']), - 'balance' => 5000, - ]); - } -} diff --git a/Chapter26/onlineStore/app/Http/Controllers/Auth/ResetPasswordController.php b/Chapter26/onlineStore/app/Http/Controllers/Auth/ResetPasswordController.php deleted file mode 100644 index b1726a3..0000000 --- a/Chapter26/onlineStore/app/Http/Controllers/Auth/ResetPasswordController.php +++ /dev/null @@ -1,30 +0,0 @@ -middleware('auth'); - $this->middleware('signed')->only('verify'); - $this->middleware('throttle:6,1')->only('verify', 'resend'); - } -} diff --git a/Chapter26/onlineStore/app/Http/Controllers/CartController.php b/Chapter26/onlineStore/app/Http/Controllers/CartController.php deleted file mode 100644 index 87122bc..0000000 --- a/Chapter26/onlineStore/app/Http/Controllers/CartController.php +++ /dev/null @@ -1,43 +0,0 @@ -session()->get("products"); - if ($productsInSession) { - $productsInCart = Product::findMany(array_keys($productsInSession)); - $total = Product::sumPricesByQuantities($productsInCart, $productsInSession); - } - - $viewData = []; - $viewData["title"] = "Cart - Online Store"; - $viewData["subtitle"] = "Shopping Cart"; - $viewData["total"] = $total; - $viewData["products"] = $productsInCart; - return view('cart.index')->with("viewData", $viewData); - } - - public function add(Request $request, $id) - { - $products = $request->session()->get("products"); - $products[$id] = $request->input('quantity'); - $request->session()->put('products', $products); - - return redirect()->route('cart.index'); - } - - public function delete(Request $request) - { - $request->session()->forget('products'); - return back(); - } -} diff --git a/Chapter26/onlineStore/app/Http/Controllers/Controller.php b/Chapter26/onlineStore/app/Http/Controllers/Controller.php deleted file mode 100644 index a0a2a8a..0000000 --- a/Chapter26/onlineStore/app/Http/Controllers/Controller.php +++ /dev/null @@ -1,13 +0,0 @@ -with("viewData", $viewData); - } - - public function about() - { - $viewData = []; - $viewData["title"] = "About us - Online Store"; - $viewData["subtitle"] = "About us"; - $viewData["description"] = "This is an about page ..."; - $viewData["author"] = "Developed by: Your Name"; - return view('home.about')->with("viewData", $viewData); - } -} diff --git a/Chapter26/onlineStore/app/Http/Controllers/ProductController.php b/Chapter26/onlineStore/app/Http/Controllers/ProductController.php deleted file mode 100644 index d27a3a3..0000000 --- a/Chapter26/onlineStore/app/Http/Controllers/ProductController.php +++ /dev/null @@ -1,29 +0,0 @@ -with("viewData", $viewData); - } - - public function show($id) - { - $viewData = []; - $product = Product::findOrFail($id); - $viewData["title"] = $product->getName()." - Online Store"; - $viewData["subtitle"] = $product->getName()." - Product information"; - $viewData["product"] = $product; - return view('product.show')->with("viewData", $viewData); - } -} diff --git a/Chapter26/onlineStore/app/Http/Kernel.php b/Chapter26/onlineStore/app/Http/Kernel.php deleted file mode 100644 index c10d1c5..0000000 --- a/Chapter26/onlineStore/app/Http/Kernel.php +++ /dev/null @@ -1,68 +0,0 @@ - - */ - protected $middleware = [ - // \App\Http\Middleware\TrustHosts::class, - \App\Http\Middleware\TrustProxies::class, - \Fruitcake\Cors\HandleCors::class, - \App\Http\Middleware\PreventRequestsDuringMaintenance::class, - \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, - \App\Http\Middleware\TrimStrings::class, - \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, - ]; - - /** - * The application's route middleware groups. - * - * @var array> - */ - protected $middlewareGroups = [ - 'web' => [ - \App\Http\Middleware\EncryptCookies::class, - \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, - \Illuminate\Session\Middleware\StartSession::class, - // \Illuminate\Session\Middleware\AuthenticateSession::class, - \Illuminate\View\Middleware\ShareErrorsFromSession::class, - \App\Http\Middleware\VerifyCsrfToken::class, - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - - 'api' => [ - // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, - 'throttle:api', - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - ]; - - /** - * The application's route middleware. - * - * These middleware may be assigned to groups or used individually. - * - * @var array - */ - protected $routeMiddleware = [ - 'auth' => \App\Http\Middleware\Authenticate::class, - 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::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, - 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, - 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, - 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, - 'admin' => \App\Http\Middleware\AdminAuthMiddleware::class, - ]; -} diff --git a/Chapter26/onlineStore/app/Http/Middleware/AdminAuthMiddleware.php b/Chapter26/onlineStore/app/Http/Middleware/AdminAuthMiddleware.php deleted file mode 100644 index 6e5306b..0000000 --- a/Chapter26/onlineStore/app/Http/Middleware/AdminAuthMiddleware.php +++ /dev/null @@ -1,26 +0,0 @@ -getRole() == 'admin') { - return $next($request); - } else { - return redirect()->route('home.index'); - } - } -} diff --git a/Chapter26/onlineStore/app/Http/Middleware/Authenticate.php b/Chapter26/onlineStore/app/Http/Middleware/Authenticate.php deleted file mode 100644 index 704089a..0000000 --- a/Chapter26/onlineStore/app/Http/Middleware/Authenticate.php +++ /dev/null @@ -1,21 +0,0 @@ -expectsJson()) { - return route('login'); - } - } -} diff --git a/Chapter26/onlineStore/app/Http/Middleware/EncryptCookies.php b/Chapter26/onlineStore/app/Http/Middleware/EncryptCookies.php deleted file mode 100644 index 867695b..0000000 --- a/Chapter26/onlineStore/app/Http/Middleware/EncryptCookies.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter26/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/Chapter26/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php deleted file mode 100644 index 74cbd9a..0000000 --- a/Chapter26/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter26/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php b/Chapter26/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php deleted file mode 100644 index a2813a0..0000000 --- a/Chapter26/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php +++ /dev/null @@ -1,32 +0,0 @@ -check()) { - return redirect(RouteServiceProvider::HOME); - } - } - - return $next($request); - } -} diff --git a/Chapter26/onlineStore/app/Http/Middleware/TrimStrings.php b/Chapter26/onlineStore/app/Http/Middleware/TrimStrings.php deleted file mode 100644 index 88cadca..0000000 --- a/Chapter26/onlineStore/app/Http/Middleware/TrimStrings.php +++ /dev/null @@ -1,19 +0,0 @@ - - */ - protected $except = [ - 'current_password', - 'password', - 'password_confirmation', - ]; -} diff --git a/Chapter26/onlineStore/app/Http/Middleware/TrustHosts.php b/Chapter26/onlineStore/app/Http/Middleware/TrustHosts.php deleted file mode 100644 index 7186414..0000000 --- a/Chapter26/onlineStore/app/Http/Middleware/TrustHosts.php +++ /dev/null @@ -1,20 +0,0 @@ - - */ - public function hosts() - { - return [ - $this->allSubdomainsOfApplicationUrl(), - ]; - } -} diff --git a/Chapter26/onlineStore/app/Http/Middleware/TrustProxies.php b/Chapter26/onlineStore/app/Http/Middleware/TrustProxies.php deleted file mode 100644 index 3391630..0000000 --- a/Chapter26/onlineStore/app/Http/Middleware/TrustProxies.php +++ /dev/null @@ -1,28 +0,0 @@ -|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/Chapter26/onlineStore/app/Http/Middleware/VerifyCsrfToken.php b/Chapter26/onlineStore/app/Http/Middleware/VerifyCsrfToken.php deleted file mode 100644 index 9e86521..0000000 --- a/Chapter26/onlineStore/app/Http/Middleware/VerifyCsrfToken.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter26/onlineStore/app/Models/Item.php b/Chapter26/onlineStore/app/Models/Item.php deleted file mode 100644 index 8d19619..0000000 --- a/Chapter26/onlineStore/app/Models/Item.php +++ /dev/null @@ -1,133 +0,0 @@ -attributes['id'] - int - contains the item primary key (id) - * $this->attributes['quantity'] - int - contains the item quantity - * $this->attributes['price'] - int - contains the item price - * $this->attributes['order_id'] - int - contains the referenced order id - * $this->attributes['product_id'] - int - contains the referenced product id - * $this->attributes['created_at'] - timestamp - contains the item creation date - * $this->attributes['updated_at'] - timestamp - contains the item update date - * $this->order - Order - contains the associated Order - * $this->product - Product - contains the associated Product - */ - - public static function validate($request) - { - $request->validate([ - "price" => "required|numeric|gt:0", - "quantity" => "required|numeric|gt:0", - "product_id" => "required|exists:products,id", - "order_id" => "required|exists:orders,id", - ]); - } - - public function getId() - { - return $this->attributes['id']; - } - - public function setId($id) - { - $this->attributes['id'] = $id; - } - - public function getQuantity() - { - return $this->attributes['quantity']; - } - - public function setQuantity($quantity) - { - $this->attributes['quantity'] = $quantity; - } - - public function getPrice() - { - return $this->attributes['price']; - } - - public function setPrice($price) - { - $this->attributes['price'] = $price; - } - - public function getOrderId() - { - return $this->attributes['order_id']; - } - - public function setOrderId($orderId) - { - $this->attributes['order_id'] = $orderId; - } - - public function getProductId() - { - return $this->attributes['product_id']; - } - - public function setProductId($productId) - { - $this->attributes['product_id'] = $productId; - } - - public function getCreatedAt() - { - return $this->attributes['created_at']; - } - - public function setCreatedAt($createdAt) - { - $this->attributes['created_at'] = $createdAt; - } - - public function getUpdatedAt() - { - return $this->attributes['updated_at']; - } - - public function setUpdatedAt($updatedAt) - { - $this->attributes['updated_at'] = $updatedAt; - } - - public function order() - { - return $this->belongsTo(Order::class); - } - - public function getOrder() - { - return $this->order; - } - - public function setOrder($order) - { - $this->order = $order; - } - - public function product() - { - return $this->belongsTo(Product::class); - } - - public function getProduct() - { - return $this->product; - } - - public function setProduct($product) - { - $this->product = $product; - } -} diff --git a/Chapter26/onlineStore/app/Models/Order.php b/Chapter26/onlineStore/app/Models/Order.php deleted file mode 100644 index 28ce6ad..0000000 --- a/Chapter26/onlineStore/app/Models/Order.php +++ /dev/null @@ -1,109 +0,0 @@ -attributes['id'] - int - contains the order primary key (id) - * $this->attributes['total'] - string - contains the order name - * $this->attributes['user_id'] - int - contains the referenced user id - * $this->attributes['created_at'] - timestamp - contains the order creation date - * $this->attributes['updated_at'] - timestamp - contains the order update date - * $this->user - User - contains the associated User - * $this->items - Item[] - contains the associated items - */ - - public static function validate($request) - { - $request->validate([ - "total" => "required|numeric", - "user_id" => "required|exists:users,id", - ]); - } - - public function getId() - { - return $this->attributes['id']; - } - - public function setId($id) - { - $this->attributes['id'] = $id; - } - - public function getTotal() - { - return $this->attributes['total']; - } - - public function setTotal($total) - { - $this->attributes['total'] = $total; - } - - public function getUserId() - { - return $this->attributes['user_id']; - } - - public function setUserId($userId) - { - $this->attributes['user_id'] = $userId; - } - - public function getCreatedAt() - { - return $this->attributes['created_at']; - } - - public function setCreatedAt($createdAt) - { - $this->attributes['created_at'] = $createdAt; - } - - public function getUpdatedAt() - { - return $this->attributes['updated_at']; - } - - public function setUpdatedAt($updatedAt) - { - $this->attributes['updated_at'] = $updatedAt; - } - - public function user() - { - return $this->belongsTo(User::class); - } - - public function getUser() - { - return $this->user; - } - - public function setUser($user) - { - $this->user = $user; - } - - public function items() - { - return $this->hasMany(Item::class); - } - - public function getItems() - { - return $this->items; - } - - public function setItems($items) - { - $this->items = $items; - } -} diff --git a/Chapter26/onlineStore/app/Models/Product.php b/Chapter26/onlineStore/app/Models/Product.php deleted file mode 100644 index fb8585a..0000000 --- a/Chapter26/onlineStore/app/Models/Product.php +++ /dev/null @@ -1,126 +0,0 @@ -attributes['id'] - int - contains the product primary key (id) - * $this->attributes['name'] - string - contains the product name - * $this->attributes['description'] - string - contains the product description - * $this->attributes['image'] - string - contains the product image - * $this->attributes['price'] - int - contains the product price - * $this->attributes['created_at'] - timestamp - contains the product creation date - * $this->attributes['updated_at'] - timestamp - contains the product update date - * $this->items - Item[] - contains the associated items - */ - - public static function validate($request) - { - $request->validate([ - "name" => "required|max:255", - "description" => "required", - "price" => "required|numeric|gt:0", - 'image' => 'image', - ]); - } - - public static function sumPricesByQuantities($products, $productsInSession) - { - $total = 0; - foreach ($products as $product) { - $total = $total + ($product->getPrice()*$productsInSession[$product->getId()]); - } - - return $total; - } - - public function getId() - { - return $this->attributes['id']; - } - - public function setId($id) - { - $this->attributes['id'] = $id; - } - - public function getName() - { - return $this->attributes['name']; - } - - public function setName($name) - { - $this->attributes['name'] = $name; - } - - public function getDescription() - { - return $this->attributes['description']; - } - - public function setDescription($description) - { - $this->attributes['description'] = $description; - } - - public function getImage() - { - return $this->attributes['image']; - } - - public function setImage($image) - { - $this->attributes['image'] = $image; - } - - public function getPrice() - { - return $this->attributes['price']; - } - - public function setPrice($price) - { - $this->attributes['price'] = $price; - } - - public function getCreatedAt() - { - return $this->attributes['created_at']; - } - - public function setCreatedAt($createdAt) - { - $this->attributes['created_at'] = $createdAt; - } - - public function getUpdatedAt() - { - return $this->attributes['updated_at']; - } - - public function setUpdatedAt($updatedAt) - { - $this->attributes['updated_at'] = $updatedAt; - } - - public function items() - { - return $this->hasMany(Item::class); - } - - public function getItems() - { - return $this->items; - } - - public function setItems($items) - { - $this->items = $items; - } -} diff --git a/Chapter26/onlineStore/app/Models/User.php b/Chapter26/onlineStore/app/Models/User.php deleted file mode 100644 index 89aa45f..0000000 --- a/Chapter26/onlineStore/app/Models/User.php +++ /dev/null @@ -1,156 +0,0 @@ -attributes['id'] - int - contains the user primary key (id) - * $this->attributes['name'] - string - contains the user name - * $this->attributes['email'] - string - contains the user email - * $this->attributes['email_verified_at'] - timestamp - contains the user email verification date - * $this->attributes['password'] - string - contains the user password - * $this->attributes['remember_token'] - string - contains the user password - * $this->attributes['role'] - string - contains the user role (client or admin) - * $this->attributes['balance'] - int - contains the user balance - * $this->attributes['created_at'] - timestamp - contains the user creation date - * $this->attributes['updated_at'] - timestamp - contains the user update date - * $this->orders - Order[] - contains the associated orders - */ - - /** - * The attributes that are mass assignable. - * - * @var array - */ - protected $fillable = [ - 'name', - 'email', - 'password', - 'balance', - ]; - - /** - * 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', - ]; - - public function getId() - { - return $this->attributes['id']; - } - - public function setId($id) - { - $this->attributes['id'] = $id; - } - - public function getName() - { - return $this->attributes['name']; - } - - public function setName($name) - { - $this->attributes['name'] = $name; - } - - public function getEmail() - { - return $this->attributes['email']; - } - - public function setEmail($email) - { - $this->attributes['email'] = $email; - } - - public function getPassword() - { - return $this->attributes['password']; - } - - public function setPassword($password) - { - $this->attributes['password'] = $password; - } - - public function getRole() - { - return $this->attributes['role']; - } - - public function setRole($role) - { - $this->attributes['role'] = $role; - } - - public function getBalance() - { - return $this->attributes['balance']; - } - - public function setBalance($balance) - { - $this->attributes['balance'] = $balance; - } - - public function getCreatedAt() - { - return $this->attributes['created_at']; - } - - public function setCreatedAt($createdAt) - { - $this->attributes['created_at'] = $createdAt; - } - - public function getUpdatedAt() - { - return $this->attributes['updated_at']; - } - - public function setUpdatedAt($updatedAt) - { - $this->attributes['updated_at'] = $updatedAt; - } - - public function orders() - { - return $this->hasMany(Order::class); - } - - public function getOrders() - { - return $this->orders; - } - - public function setOrders($orders) - { - $this->orders = $orders; - } -} diff --git a/Chapter26/onlineStore/app/Providers/AppServiceProvider.php b/Chapter26/onlineStore/app/Providers/AppServiceProvider.php deleted file mode 100644 index ee8ca5b..0000000 --- a/Chapter26/onlineStore/app/Providers/AppServiceProvider.php +++ /dev/null @@ -1,28 +0,0 @@ - - */ - protected $policies = [ - // 'App\Models\Model' => 'App\Policies\ModelPolicy', - ]; - - /** - * Register any authentication / authorization services. - * - * @return void - */ - public function boot() - { - $this->registerPolicies(); - - // - } -} diff --git a/Chapter26/onlineStore/app/Providers/BroadcastServiceProvider.php b/Chapter26/onlineStore/app/Providers/BroadcastServiceProvider.php deleted file mode 100644 index 395c518..0000000 --- a/Chapter26/onlineStore/app/Providers/BroadcastServiceProvider.php +++ /dev/null @@ -1,21 +0,0 @@ -> - */ - protected $listen = [ - Registered::class => [ - SendEmailVerificationNotification::class, - ], - ]; - - /** - * Register any events for your application. - * - * @return void - */ - public function boot() - { - // - } -} diff --git a/Chapter26/onlineStore/app/Providers/RouteServiceProvider.php b/Chapter26/onlineStore/app/Providers/RouteServiceProvider.php deleted file mode 100644 index fb766eb..0000000 --- a/Chapter26/onlineStore/app/Providers/RouteServiceProvider.php +++ /dev/null @@ -1,63 +0,0 @@ -configureRateLimiting(); - - $this->routes(function () { - Route::prefix('api') - ->middleware('api') - ->namespace($this->namespace) - ->group(base_path('routes/api.php')); - - Route::middleware('web') - ->namespace($this->namespace) - ->group(base_path('routes/web.php')); - }); - } - - /** - * Configure the rate limiters for the application. - * - * @return void - */ - protected function configureRateLimiting() - { - RateLimiter::for('api', function (Request $request) { - return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); - }); - } -} diff --git a/Chapter26/onlineStore/artisan b/Chapter26/onlineStore/artisan deleted file mode 100644 index 67a3329..0000000 --- a/Chapter26/onlineStore/artisan +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env php -make(Illuminate\Contracts\Console\Kernel::class); - -$status = $kernel->handle( - $input = new Symfony\Component\Console\Input\ArgvInput, - new Symfony\Component\Console\Output\ConsoleOutput -); - -/* -|-------------------------------------------------------------------------- -| Shutdown The Application -|-------------------------------------------------------------------------- -| -| Once Artisan has finished running, we will fire off the shutdown events -| so that any final work may be done by the application before we shut -| down the process. This is the last thing to happen to the request. -| -*/ - -$kernel->terminate($input, $status); - -exit($status); diff --git a/Chapter26/onlineStore/bootstrap/app.php b/Chapter26/onlineStore/bootstrap/app.php deleted file mode 100644 index 037e17d..0000000 --- a/Chapter26/onlineStore/bootstrap/app.php +++ /dev/null @@ -1,55 +0,0 @@ -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/Chapter26/onlineStore/bootstrap/cache/.gitignore b/Chapter26/onlineStore/bootstrap/cache/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter26/onlineStore/bootstrap/cache/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter26/onlineStore/composer.json b/Chapter26/onlineStore/composer.json deleted file mode 100644 index a9459b5..0000000 --- a/Chapter26/onlineStore/composer.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "name": "laravel/laravel", - "type": "project", - "description": "The Laravel Framework.", - "keywords": ["framework", "laravel"], - "license": "MIT", - "require": { - "php": "^8.0", - "fruitcake/laravel-cors": "^2.0.5", - "guzzlehttp/guzzle": "^7.2", - "laravel/framework": "^9.0", - "laravel/sanctum": "^2.14", - "laravel/tinker": "^2.7", - "laravel/ui": "^3.4" - }, - "require-dev": { - "fakerphp/faker": "^1.9.1", - "laravel/sail": "^1.0.1", - "mockery/mockery": "^1.4.4", - "nunomaduro/collision": "^6.1", - "phpunit/phpunit": "^9.5.10", - "spatie/laravel-ignition": "^1.0", - "squizlabs/php_codesniffer": "^3.6" - }, - "autoload": { - "psr-4": { - "App\\": "app/", - "Database\\Factories\\": "database/factories/", - "Database\\Seeders\\": "database/seeders/" - } - }, - "autoload-dev": { - "psr-4": { - "Tests\\": "tests/" - } - }, - "scripts": { - "post-autoload-dump": [ - "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", - "@php artisan package:discover --ansi" - ], - "post-update-cmd": [ - "@php artisan vendor:publish --tag=laravel-assets --ansi --force" - ], - "post-root-package-install": [ - "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" - ], - "post-create-project-cmd": [ - "@php artisan key:generate --ansi" - ] - }, - "extra": { - "laravel": { - "dont-discover": [] - } - }, - "config": { - "optimize-autoloader": true, - "preferred-install": "dist", - "sort-packages": true - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/Chapter26/onlineStore/composer.lock b/Chapter26/onlineStore/composer.lock deleted file mode 100644 index 78c86f1..0000000 --- a/Chapter26/onlineStore/composer.lock +++ /dev/null @@ -1,7921 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "d299b51f0f07ec600b4949240f4664af", - "packages": [ - { - "name": "asm89/stack-cors", - "version": "v2.1.1", - "source": { - "type": "git", - "url": "https://github.com/asm89/stack-cors.git", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4|^5|^6" - }, - "require-dev": { - "phpunit/phpunit": "^7|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "psr-4": { - "Asm89\\Stack\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alexander", - "email": "iam.asm89@gmail.com" - } - ], - "description": "Cross-origin resource sharing library and stack middleware", - "homepage": "https://github.com/asm89/stack-cors", - "keywords": [ - "cors", - "stack" - ], - "support": { - "issues": "https://github.com/asm89/stack-cors/issues", - "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" - }, - "time": "2022-01-18T09:12:03+00:00" - }, - { - "name": "brick/math", - "version": "0.9.3", - "source": { - "type": "git", - "url": "https://github.com/brick/math.git", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", - "vimeo/psalm": "4.9.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Brick\\Math\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Arbitrary-precision arithmetic library", - "keywords": [ - "Arbitrary-precision", - "BigInteger", - "BigRational", - "arithmetic", - "bigdecimal", - "bignum", - "brick", - "math" - ], - "support": { - "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.9.3" - }, - "funding": [ - { - "url": "https://github.com/BenMorel", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/brick/math", - "type": "tidelift" - } - ], - "time": "2021-08-15T20:50:18+00:00" - }, - { - "name": "dflydev/dot-access-data", - "version": "v3.0.1", - "source": { - "type": "git", - "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c", - "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": "^3.14" - }, - "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.1" - }, - "time": "2021-08-13T13:06:58+00:00" - }, - { - "name": "doctrine/inflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "vimeo/psalm": "^4.10" - }, - "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.4" - }, - "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": "2021-10-22T20:16:43+00:00" - }, - { - "name": "doctrine/lexer", - "version": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" - } - }, - "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/1.2.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%2Flexer", - "type": "tidelift" - } - ], - "time": "2022-01-12T08:27:12+00:00" - }, - { - "name": "dragonmantank/cron-expression", - "version": "v3.3.1", - "source": { - "type": "git", - "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "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.1" - }, - "funding": [ - { - "url": "https://github.com/dragonmantank", - "type": "github" - } - ], - "time": "2022-01-18T15:43:28+00:00" - }, - { - "name": "egulias/email-validator", - "version": "3.1.2", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ee0db30118f661fb166bcffbf5d82032df484697", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^1.2", - "php": ">=7.2", - "symfony/polyfill-intl-idn": "^1.15" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^8.5.8|^9.3.3", - "vimeo/psalm": "^4" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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/3.1.2" - }, - "funding": [ - { - "url": "https://github.com/egulias", - "type": "github" - } - ], - "time": "2021-10-11T09:18:27+00:00" - }, - { - "name": "fruitcake/laravel-cors", - "version": "v2.0.5", - "source": { - "type": "git", - "url": "https://github.com/fruitcake/laravel-cors.git", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "shasum": "" - }, - "require": { - "asm89/stack-cors": "^2.0.1", - "illuminate/contracts": "^6|^7|^8|^9", - "illuminate/support": "^6|^7|^8|^9", - "php": ">=7.2", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4.3.4|^5|^6" - }, - "require-dev": { - "laravel/framework": "^6|^7.24|^8", - "orchestra/testbench-dusk": "^4|^5|^6|^7", - "phpunit/phpunit": "^6|^7|^8|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - }, - "laravel": { - "providers": [ - "Fruitcake\\Cors\\CorsServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Fruitcake\\Cors\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fruitcake", - "homepage": "https://fruitcake.nl" - }, - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", - "keywords": [ - "api", - "cors", - "crossdomain", - "laravel" - ], - "support": { - "issues": "https://github.com/fruitcake/laravel-cors/issues", - "source": "https://github.com/fruitcake/laravel-cors/tree/v2.0.5" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "time": "2022-01-03T14:53:04+00:00" - }, - { - "name": "graham-campbell/result-type", - "version": "v1.0.4", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "0690bde05318336c7221785f2a932467f98b64ca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/0690bde05318336c7221785f2a932467f98b64ca", - "reference": "0690bde05318336c7221785f2a932467f98b64ca", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "phpoption/phpoption": "^1.8" - }, - "require-dev": { - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", - "type": "tidelift" - } - ], - "time": "2021-11-21T21:41:47+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "7.4.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.8.3 || ^2.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.4.1", - "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.5 || ^9.3.5", - "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": { - "branch-alias": { - "dev-master": "7.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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.4.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": "2021-12-06T18:43:05+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "1.5.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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/1.5.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "time": "2021-10-22T20:56:57+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.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.4.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.8 || ^9.3.10" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "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.1.0" - }, - "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": "2021-10-06T17:43:30+00:00" - }, - { - "name": "laravel/framework", - "version": "v9.0.1", - "source": { - "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "shasum": "" - }, - "require": { - "doctrine/inflector": "^2.0", - "dragonmantank/cron-expression": "^3.1", - "egulias/email-validator": "^3.1", - "ext-mbstring": "*", - "ext-openssl": "*", - "laravel/serializable-closure": "^1.0", - "league/commonmark": "^2.2", - "league/flysystem": "^3.0", - "monolog/monolog": "^2.0", - "nesbot/carbon": "^2.53.1", - "php": "^8.0.2", - "psr/container": "^1.1.1|^2.0.1", - "psr/log": "^1.0|^2.0|^3.0", - "psr/simple-cache": "^1.0|^2.0|^3.0", - "ramsey/uuid": "^4.2.2", - "symfony/console": "^6.0", - "symfony/error-handler": "^6.0", - "symfony/finder": "^6.0", - "symfony/http-foundation": "^6.0", - "symfony/http-kernel": "^6.0", - "symfony/mailer": "^6.0", - "symfony/mime": "^6.0", - "symfony/process": "^6.0", - "symfony/routing": "^6.0", - "symfony/var-dumper": "^6.0", - "tijsverkoyen/css-to-inline-styles": "^2.2.2", - "vlucas/phpdotenv": "^5.4.1", - "voku/portable-ascii": "^2.0" - }, - "conflict": { - "tightenco/collect": "<5.5.33" - }, - "provide": { - "psr/container-implementation": "1.1|2.0", - "psr/simple-cache-implementation": "1.0|2.0|3.0" - }, - "replace": { - "illuminate/auth": "self.version", - "illuminate/broadcasting": "self.version", - "illuminate/bus": "self.version", - "illuminate/cache": "self.version", - "illuminate/collections": "self.version", - "illuminate/conditionable": "self.version", - "illuminate/config": "self.version", - "illuminate/console": "self.version", - "illuminate/container": "self.version", - "illuminate/contracts": "self.version", - "illuminate/cookie": "self.version", - "illuminate/database": "self.version", - "illuminate/encryption": "self.version", - "illuminate/events": "self.version", - "illuminate/filesystem": "self.version", - "illuminate/hashing": "self.version", - "illuminate/http": "self.version", - "illuminate/log": "self.version", - "illuminate/macroable": "self.version", - "illuminate/mail": "self.version", - "illuminate/notifications": "self.version", - "illuminate/pagination": "self.version", - "illuminate/pipeline": "self.version", - "illuminate/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": { - "aws/aws-sdk-php": "^3.198.1", - "doctrine/dbal": "^2.13.3|^3.1.4", - "fakerphp/faker": "^1.9.2", - "guzzlehttp/guzzle": "^7.2", - "league/flysystem-aws-s3-v3": "^3.0", - "league/flysystem-ftp": "^3.0", - "league/flysystem-sftp-v3": "^3.0", - "mockery/mockery": "^1.4.4", - "orchestra/testbench-core": "^7.0", - "pda/pheanstalk": "^4.0", - "phpstan/phpstan": "^1.0", - "phpunit/phpunit": "^9.5.8", - "predis/predis": "^1.1.9", - "symfony/amazon-mailer": "^6.0", - "symfony/cache": "^6.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.198.1).", - "brianium/paratest": "Required to run tests in parallel (^6.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", - "ext-bcmath": "Required to use the multiple_of validation rule.", - "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.", - "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.2).", - "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-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", - "mockery/mockery": "Required to use mocking (^1.4.4).", - "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).", - "predis/predis": "Required to use the predis connector (^1.1.9).", - "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.0).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^6.0).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.0).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.0).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.0).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.x-dev" - } - }, - "autoload": { - "files": [ - "src/Illuminate/Collections/helpers.php", - "src/Illuminate/Events/functions.php", - "src/Illuminate/Foundation/helpers.php", - "src/Illuminate/Support/helpers.php" - ], - "psr-4": { - "Illuminate\\": "src/Illuminate/", - "Illuminate\\Support\\": [ - "src/Illuminate/Macroable/", - "src/Illuminate/Collections/", - "src/Illuminate/Conditionable/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Laravel Framework.", - "homepage": "https://laravel.com", - "keywords": [ - "framework", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2022-02-09T15:00:05+00:00" - }, - { - "name": "laravel/sanctum", - "version": "v2.14.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/sanctum.git", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/0647a87140c7522e75826cffcadb3ad6e01f71e9", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/contracts": "^6.9|^7.0|^8.0|^9.0", - "illuminate/database": "^6.9|^7.0|^8.0|^9.0", - "illuminate/support": "^6.9|^7.0|^8.0|^9.0", - "php": "^7.2|^8.0" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0", - "phpunit/phpunit": "^8.0|^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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": "2022-01-12T15:07:43+00:00" - }, - { - "name": "laravel/serializable-closure", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/serializable-closure.git", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/65c9faf50d567b65d81764a44526545689e3fe63", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "pestphp/pest": "^1.18", - "phpstan/phpstan": "^0.12.98", - "symfony/var-dumper": "^5.3" - }, - "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": "2022-02-01T16:29:39+00:00" - }, - { - "name": "laravel/tinker", - "version": "v2.7.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/tinker.git", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/5f2f9815b7631b9f586a3de7933c25f9327d4073", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073", - "shasum": "" - }, - "require": { - "illuminate/console": "^6.0|^7.0|^8.0|^9.0", - "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.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", - "phpunit/phpunit": "^8.5.8|^9.3.3" - }, - "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.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.7.0" - }, - "time": "2022-01-10T08:52:49+00:00" - }, - { - "name": "laravel/ui", - "version": "v3.4.3", - "source": { - "type": "git", - "url": "https://github.com/laravel/ui.git", - "reference": "64a0f43492c00780b2261c56cd7007a4f370d95b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/ui/zipball/64a0f43492c00780b2261c56cd7007a4f370d95b", - "reference": "64a0f43492c00780b2261c56cd7007a4f370d95b", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.42|^9.0", - "illuminate/filesystem": "^8.42|^9.0", - "illuminate/support": "^8.82|^9.0", - "illuminate/validation": "^8.42|^9.0", - "php": "^7.3|^8.0" - }, - "require-dev": { - "orchestra/testbench": "^6.23|^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - }, - "laravel": { - "providers": [ - "Laravel\\Ui\\UiServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Laravel\\Ui\\": "src/", - "Illuminate\\Foundation\\Auth\\": "auth-backend/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "Laravel UI utilities and presets.", - "keywords": [ - "laravel", - "ui" - ], - "support": { - "source": "https://github.com/laravel/ui/tree/v3.4.3" - }, - "time": "2022-02-08T14:19:32+00:00" - }, - { - "name": "league/commonmark", - "version": "2.2.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/commonmark.git", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "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.15" - }, - "require-dev": { - "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.0", - "commonmark/commonmark.js": "0.30.0", - "composer/package-versions-deprecated": "^1.8", - "erusev/parsedown": "^1.0", - "ext-json": "*", - "github/gfm": "0.29.0", - "michelf/php-markdown": "^1.4", - "phpstan/phpstan": "^0.12.88 || ^1.0.0", - "phpunit/phpunit": "^9.5.5", - "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", - "unleashedtech/php-coding-standard": "^3.1", - "vimeo/psalm": "^4.7.3" - }, - "suggest": { - "symfony/yaml": "v2.3+ required if using the Front Matter extension" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.3-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": "2022-01-25T14:37:33+00:00" - }, - { - "name": "league/config", - "version": "v1.1.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/config.git", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/config/zipball/a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^3.0.1", - "nette/schema": "^1.2", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.90", - "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": "2021-08-14T12:15:32+00:00" - }, - { - "name": "league/flysystem", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9f8b4260031bfef5497477da53dd57b2aaff0e06", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06", - "shasum": "" - }, - "require": { - "ext-json": "*", - "league/mime-type-detection": "^1.0.0", - "php": "^8.0.2" - }, - "conflict": { - "guzzlehttp/guzzle": "<7.0", - "guzzlehttp/ringphp": "<1.1.1", - "symfony/http-client": "<5.2" - }, - "require-dev": { - "async-aws/s3": "^1.5", - "async-aws/simple-s3": "^1.0", - "aws/aws-sdk-php": "^3.198.1", - "composer/semver": "^3.0", - "ext-fileinfo": "*", - "ext-ftp": "*", - "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.5", - "google/cloud-storage": "^1.23", - "phpseclib/phpseclib": "^2.0", - "phpstan/phpstan": "^0.12.26", - "phpunit/phpunit": "^9.5.11", - "sabre/dav": "^4.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.0.3" - }, - "funding": [ - { - "url": "https://offset.earth/frankdejonge", - "type": "custom" - }, - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2022-01-31T19:41:04+00:00" - }, - { - "name": "league/mime-type-detection", - "version": "1.9.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/aa70e813a6ad3d1558fc927863d47309b4c23e69", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.2", - "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" - }, - "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.9.0" - }, - "funding": [ - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2021-11-21T11:48:40+00:00" - }, - { - "name": "monolog/monolog", - "version": "2.3.5", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd4380d6fc37626e2f799f29d91195040137eba9", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "provide": { - "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7", - "graylog2/gelf-php": "^1.4.2", - "mongodb/mongodb": "^1.8", - "php-amqplib/php-amqplib": "~2.4 || ^3", - "php-console/php-console": "^3.1.3", - "phpspec/prophecy": "^1.6.1", - "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5", - "predis/predis": "^1.1", - "rollbar/rollbar": "^1.3", - "ruflin/elastica": ">=0.90@dev", - "swiftmailer/swiftmailer": "^5.3|^6.0" - }, - "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", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "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": "2.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/2.3.5" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" - } - ], - "time": "2021-10-01T21:08:31+00:00" - }, - { - "name": "nesbot/carbon", - "version": "2.56.0", - "source": { - "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1.8 || ^8.0", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "doctrine/dbal": "^2.0 || ^3.0", - "doctrine/orm": "^2.7", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "phpmd/phpmd": "^2.9", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.54 || ^1.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.14", - "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://opencollective.com/Carbon", - "type": "open_collective" - }, - { - "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", - "type": "tidelift" - } - ], - "time": "2022-01-21T17:08:38+00:00" - }, - { - "name": "nette/schema", - "version": "v1.2.2", - "source": { - "type": "git", - "url": "https://github.com/nette/schema.git", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/9a39cef03a5b34c7de64f551538cbba05c2be5df", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df", - "shasum": "" - }, - "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": ">=7.1 <8.2" - }, - "require-dev": { - "nette/tester": "^2.3 || ^2.4", - "phpstan/phpstan-nette": "^0.12", - "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.2" - }, - "time": "2021-10-15T11:40:02+00:00" - }, - { - "name": "nette/utils", - "version": "v3.2.7", - "source": { - "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/0af4e3de4df9f1543534beab255ccf459e7a2c99", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99", - "shasum": "" - }, - "require": { - "php": ">=7.2 <8.2" - }, - "conflict": { - "nette/di": "<3.0.6" - }, - "require-dev": { - "nette/tester": "~2.0", - "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.3" - }, - "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()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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 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/v3.2.7" - }, - "time": "2022-01-24T11:29:14+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.13.2", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", - "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.13.2" - }, - "time": "2021-11-30T19:35:32+00:00" - }, - { - "name": "phpoption/phpoption", - "version": "1.8.1", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-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.8.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", - "type": "tidelift" - } - ], - "time": "2021-12-04T23:24:31+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.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.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": "http://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/tree/master" - }, - "time": "2020-06-29T06:28:15+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.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": "http://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/master" - }, - "time": "2019-04-30T12:38:16+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.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": "http://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/master" - }, - "time": "2016-08-06T14:39: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.1", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "570292577277f06f590635381a7f761a6cf4f026" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/570292577277f06f590635381a7f761a6cf4f026", - "reference": "570292577277f06f590635381a7f761a6cf4f026", - "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" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "3.17.05.02" - }, - "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.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." - }, - "bin": [ - "bin/psysh" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "0.11.x-dev" - } - }, - "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.1" - }, - "time": "2022-01-03T13:58:38+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": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/ramsey/collection.git", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "shasum": "" - }, - "require": { - "php": "^7.3 || ^8", - "symfony/polyfill-php81": "^1.23" - }, - "require-dev": { - "captainhook/captainhook": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "ergebnis/composer-normalize": "^2.6", - "fakerphp/faker": "^1.5", - "hamcrest/hamcrest-php": "^2", - "jangregor/phpstan-prophecy": "^0.8", - "mockery/mockery": "^1.3", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1", - "phpstan/phpstan": "^0.12.32", - "phpstan/phpstan-mockery": "^0.12.5", - "phpstan/phpstan-phpunit": "^0.12.11", - "phpunit/phpunit": "^8.5 || ^9", - "psy/psysh": "^0.10.4", - "slevomat/coding-standard": "^6.3", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.4" - }, - "type": "library", - "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/1.2.2" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "time": "2021-10-10T03:01:02+00:00" - }, - { - "name": "ramsey/uuid", - "version": "4.2.3", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "shasum": "" - }, - "require": { - "brick/math": "^0.8 || ^0.9", - "ext-json": "*", - "php": "^7.2 || ^8.0", - "ramsey/collection": "^1.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php80": "^1.14" - }, - "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", - "moontoast/math": "^1.1", - "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.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-mockery": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^8.5 || ^9", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" - }, - "suggest": { - "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-ctype": "Enables faster processing of character classification using ctype functions.", - "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": { - "branch-alias": { - "dev-main": "4.x-dev" - }, - "captainhook": { - "force-install": true - } - }, - "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "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.2.3" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2021-09-25T23:10:38+00:00" - }, - { - "name": "symfony/console", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/22e8efd019c3270c4f79376234a3f8752cd25490", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.4|^6.0" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/css-selector", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/1955d595c12c111629cc814d3f2a2ff13580508a", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a", - "shasum": "" - }, - "require": { - "php": ">=8.0.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/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-11-01T23:48:49+00:00" - }, - { - "name": "symfony/error-handler", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/20343b3bad7ebafa38138ddcb97290a24722b57b", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" - }, - "bin": [ - "Resources/bin/patch-type-declarations" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to manage errors and ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6472ea2dd415e925b90ca82be64b8bc6157f3934", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/event-dispatcher-contracts": "^2|^3" - }, - "conflict": { - "symfony/dependency-injection": "<5.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^5.4|^6.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/aa5422287b75594b90ee9cd807caf8f0df491385", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/event-dispatcher": "^1" - }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-07-15T12:33:35+00:00" - }, - { - "name": "symfony/finder", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/8661b74dbabc23223f38c9b99d3f8ade71170430", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ad157299ced81a637fade1efcadd688d6deba5c1", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1" - }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/cache": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0" - }, - "suggest": { - "symfony/mime": "To use the file extension guesser" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v6.0.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/error-handler": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", - "symfony/twig-bridge": "<5.4", - "symfony/validator": "<5.4", - "twig/twig": "<2.13" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/process": "^5.4|^6.0", - "symfony/routing": "^5.4|^6.0", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-29T18:12:46+00:00" - }, - { - "name": "symfony/mailer", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mailer.git", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "shasum": "" - }, - "require": { - "egulias/email-validator": "^2.1.10|^3", - "php": ">=8.0.2", - "psr/event-dispatcher": "^1", - "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3" - }, - "conflict": { - "symfony/http-kernel": "<5.4" - }, - "require-dev": { - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/messenger": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/mime", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/2cd9601efd040e56f43360daa68f3c6b0534923a", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "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" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "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.24.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": "2021-10-20T20:35:02+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-11-23T21:10:46+00:00" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44", - "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.23-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.24.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": "2021-09-14T14:02:44+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.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": "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.24.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": "2021-11-30T18:21:41+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-05-27T09:17:38+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:33+00:00" - }, - { - "name": "symfony/polyfill-php81", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:11+00:00" - }, - { - "name": "symfony/process", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/298ed357274c1868c20a0061df256a1250a6c4af", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/routing", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/yaml": "<5.4" - }, - "require-dev": { - "doctrine/annotations": "^1.12", - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/36715ebf9fb9db73db0cb24263c79077c6fe8603", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/container": "^2.0" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "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.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": "2021-11-04T17:53:12+00:00" - }, - { - "name": "symfony/string", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/522144f0c4c004c80d56fa47e40e17028e2eefc2", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.0" - }, - "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/translation-contracts": "^2.0|^3.0", - "symfony/var-exporter": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "files": [ - "Resources/functions.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 an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/translation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/71bb15335798f8c4da110911bcf2d2fead7a430d", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.3|^3.0" - }, - "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" - }, - "provide": { - "symfony/translation-implementation": "2.3|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-07T00:29:03+00:00" - }, - { - "name": "symfony/translation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "suggest": { - "symfony/translation-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - } - }, - "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.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": "2021-09-07T12:43:40+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7b701676fc64f9ef11f9b4870f16b48f66be4834", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<5.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-17T16:30:44+00:00" - }, - { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.4", - "source": { - "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" - } - ], - "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", - "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "support": { - "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" - }, - "time": "2021-12-08T09:12:39+00:00" - }, - { - "name": "vlucas/phpdotenv", - "version": "v5.4.1", - "source": { - "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", - "shasum": "" - }, - "require": { - "ext-pcre": "*", - "graham-campbell/result-type": "^1.0.2", - "php": "^7.1.3 || ^8.0", - "phpoption/phpoption": "^1.8", - "symfony/polyfill-ctype": "^1.23", - "symfony/polyfill-mbstring": "^1.23.1", - "symfony/polyfill-php80": "^1.23.1" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" - }, - "suggest": { - "ext-filter": "Required to use the boolean validator." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.4-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.4.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", - "type": "tidelift" - } - ], - "time": "2021-12-12T23:22:04+00:00" - }, - { - "name": "voku/portable-ascii", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/voku/portable-ascii.git", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/9bd89e83cecdf8c37b64909454249eaed98b2c89", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89", - "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.0" - }, - "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-01-24T18:59:03+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "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.10.0" - }, - "time": "2021-03-09T10:59:23+00:00" - } - ], - "packages-dev": [ - { - "name": "doctrine/instantiator", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.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%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2020-11-10T18:47:58+00:00" - }, - { - "name": "facade/ignition-contracts", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/facade/ignition-contracts.git", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^v2.15.8", - "phpunit/phpunit": "^9.3.11", - "vimeo/psalm": "^3.17.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Facade\\IgnitionContracts\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://flareapp.io", - "role": "Developer" - } - ], - "description": "Solution contracts for Ignition", - "homepage": "https://github.com/facade/ignition-contracts", - "keywords": [ - "contracts", - "flare", - "ignition" - ], - "support": { - "issues": "https://github.com/facade/ignition-contracts/issues", - "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" - }, - "time": "2020-10-16T08:27:54+00:00" - }, - { - "name": "fakerphp/faker", - "version": "v1.19.0", - "source": { - "type": "git", - "url": "https://github.com/FakerPHP/Faker.git", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^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": "*", - "symfony/phpunit-bridge": "^4.4 || ^5.2" - }, - "suggest": { - "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", - "ext-curl": "Required by Faker\\Provider\\Image to download images.", - "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", - "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.19-dev" - } - }, - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "François Zaninotto" - } - ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], - "support": { - "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0" - }, - "time": "2022-02-02T17:38:57+00:00" - }, - { - "name": "filp/whoops", - "version": "2.14.5", - "source": { - "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "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.14.5" - }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "time": "2022-01-07T12:00:00+00:00" - }, - { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "shasum": "" - }, - "require": { - "php": "^5.3|^7.0|^8.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" - }, - "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "classmap": [ - "hamcrest" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "This is the PHP port of Hamcrest Matchers", - "keywords": [ - "test" - ], - "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" - }, - "time": "2020-07-09T08:09:16+00:00" - }, - { - "name": "laravel/sail", - "version": "v1.13.2", - "source": { - "type": "git", - "url": "https://github.com/laravel/sail.git", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.0|^9.0", - "illuminate/contracts": "^8.0|^9.0", - "illuminate/support": "^8.0|^9.0", - "php": "^7.3|^8.0" - }, - "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": "2022-02-08T14:14:12+00:00" - }, - { - "name": "mockery/mockery", - "version": "1.5.0", - "source": { - "type": "git", - "url": "https://github.com/mockery/mockery.git", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "shasum": "" - }, - "require": { - "hamcrest/hamcrest-php": "^2.0.1", - "lib-pcre": ">=7.0", - "php": "^7.3 || ^8.0" - }, - "conflict": { - "phpunit/phpunit": "<8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-0": { - "Mockery": "library/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" - } - ], - "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": { - "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.5.0" - }, - "time": "2022-01-20T13:18:17+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.10.2", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "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.10.2" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2020-11-13T09:40:50+00:00" - }, - { - "name": "nunomaduro/collision", - "version": "v6.1.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/collision.git", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "shasum": "" - }, - "require": { - "facade/ignition-contracts": "^1.0.2", - "filp/whoops": "^2.14.5", - "php": "^8.0.0", - "symfony/console": "^6.0.2" - }, - "require-dev": { - "brianium/paratest": "^6.4.1", - "laravel/framework": "^9.0", - "nunomaduro/larastan": "^1.0.2", - "nunomaduro/mock-final-classes": "^1.1.0", - "orchestra/testbench": "^7.0.0", - "phpunit/phpunit": "^9.5.11" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "6.x-dev" - }, - "laravel": { - "providers": [ - "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" - ] - } - }, - "autoload": { - "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": "2022-01-18T17:49:08+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.1.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/15a90844ad40f127afd244c0cad228de2a80052a", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a", - "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.1.1" - }, - "time": "2022-02-07T21:56:48+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.6.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "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.6.0" - }, - "time": "2022-01-04T19:58:01+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" - }, - "time": "2021-12-08T12:19:24+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "9.2.10", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d5850aaf931743067f4bfc1ae4cbd06468400687", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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 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", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.10" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-05T09:12:13+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "3.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-02T12:48:52+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "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/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:58:55+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T05:33:50+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.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/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:16:10+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "9.5.13", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/597cb647654ede35e43b137926dfdfef0fb11743", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.3.1", - "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": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.7", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", - "sebastian/version": "^3.0.2" - }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.13" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-01-24T07:33:35+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:08:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "1.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:08:54+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:30:19+00:00" - }, - { - "name": "sebastian/comparator", - "version": "4.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:49:45+00:00" - }, - { - "name": "sebastian/complexity", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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 calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:52:27+00:00" - }, - { - "name": "sebastian/diff", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:10:38+00:00" - }, - { - "name": "sebastian/environment", - "version": "5.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-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": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:52:38+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "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", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-11-11T14:18:36+00:00" - }, - { - "name": "sebastian/global-state", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-11T13:31:12+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-28T06:42:11+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "http://www.github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:17:30+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:45:17+00:00" - }, - { - "name": "sebastian/type", - "version": "2.3.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-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/2.3.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-15T12:49:02+00:00" - }, - { - "name": "sebastian/version", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:39:44+00:00" - }, - { - "name": "spatie/backtrace", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/backtrace.git", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "ext-json": "*", - "phpunit/phpunit": "^9.3", - "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": { - "issues": "https://github.com/spatie/backtrace/issues", - "source": "https://github.com/spatie/backtrace/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/sponsors/spatie", - "type": "github" - }, - { - "url": "https://spatie.be/open-source/support-us", - "type": "other" - } - ], - "time": "2021-11-09T10:57:15+00:00" - }, - { - "name": "spatie/flare-client-php", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/flare-client-php.git", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "shasum": "" - }, - "require": { - "illuminate/pipeline": "^8.0|^9.0", - "php": "^8.0", - "spatie/backtrace": "^1.2", - "symfony/http-foundation": "^5.0|^6.0", - "symfony/mime": "^5.2|^6.0", - "symfony/process": "^5.2|^6.0", - "symfony/var-dumper": "^5.2|^6.0" - }, - "require-dev": { - "dms/phpunit-arraysubset-asserts": "^0.3.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/phpunit-snapshot-assertions": "^4.0" - }, - "type": "library", - "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.0.1" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2022-02-04T15:21:00+00:00" - }, - { - "name": "spatie/ignition", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/spatie/ignition.git", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/d2d5ba823af3004268556e87dfc94449e4159f5a", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "monolog/monolog": "^2.0", - "php": "^8.0", - "spatie/flare-client-php": "^1.0", - "symfony/console": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "mockery/mockery": "^1.4", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/ray": "^1.32", - "symfony/process": "^5.4|^6.0" - }, - "type": "library", - "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": "2022-01-19T12:57:41+00:00" - }, - { - "name": "spatie/laravel-ignition", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/68250225a9f83b086462c2af1b1139dfde48fbd2", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*", - "illuminate/support": "^8.77|^9.0", - "monolog/monolog": "^2.3", - "php": "^8.0", - "spatie/flare-client-php": "^1.0.1", - "spatie/ignition": "^1.0", - "symfony/console": "^5.0|^6.0", - "symfony/var-dumper": "^5.0|^6.0" - }, - "require-dev": { - "filp/whoops": "^2.14", - "livewire/livewire": "^2.8|dev-develop", - "mockery/mockery": "^1.4", - "nunomaduro/larastan": "^1.0", - "orchestra/testbench": "^6.23|^7.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/laravel-ray": "^1.27" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Spatie\\LaravelIgnition\\IgnitionServiceProvider" - ], - "aliases": { - "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" - } - } - }, - "autoload": { - "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": "2022-02-04T15:25:56+00:00" - }, - { - "name": "squizlabs/php_codesniffer", - "version": "3.6.2", - "source": { - "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", - "shasum": "" - }, - "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.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": "lead" - } - ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", - "keywords": [ - "phpcs", - "standards" - ], - "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" - }, - "time": "2021-12-12T21:44:58+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2021-07-28T10:34:58+00:00" - } - ], - "aliases": [], - "minimum-stability": "dev", - "stability-flags": [], - "prefer-stable": true, - "prefer-lowest": false, - "platform": { - "php": "^8.0" - }, - "platform-dev": [], - "plugin-api-version": "2.1.0" -} diff --git a/Chapter26/onlineStore/config/app.php b/Chapter26/onlineStore/config/app.php deleted file mode 100644 index 1941d7c..0000000 --- a/Chapter26/onlineStore/config/app.php +++ /dev/null @@ -1,197 +0,0 @@ - env('APP_NAME', 'Laravel'), - - /* - |-------------------------------------------------------------------------- - | Application Environment - |-------------------------------------------------------------------------- - | - | This value determines the "environment" your application is currently - | running in. This may determine how you prefer to configure various - | services the application utilizes. Set this in your ".env" file. - | - */ - - 'env' => env('APP_ENV', 'production'), - - /* - |-------------------------------------------------------------------------- - | Application Debug Mode - |-------------------------------------------------------------------------- - | - | When your application is in debug mode, detailed error messages with - | stack traces will be shown on every error that occurs within your - | application. If disabled, a simple generic error page is shown. - | - */ - - 'debug' => (bool) env('APP_DEBUG', false), - - /* - |-------------------------------------------------------------------------- - | Application URL - |-------------------------------------------------------------------------- - | - | This URL is used by the console to properly generate URLs when using - | the Artisan command line tool. You should set this to the root of - | your application so that it is used when running Artisan tasks. - | - */ - - 'url' => env('APP_URL', 'http://localhost'), - - 'asset_url' => env('ASSET_URL', null), - - /* - |-------------------------------------------------------------------------- - | 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', - - /* - |-------------------------------------------------------------------------- - | 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' => [ - - /* - * Laravel Framework Service Providers... - */ - Illuminate\Auth\AuthServiceProvider::class, - Illuminate\Broadcasting\BroadcastServiceProvider::class, - Illuminate\Bus\BusServiceProvider::class, - Illuminate\Cache\CacheServiceProvider::class, - Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, - Illuminate\Cookie\CookieServiceProvider::class, - Illuminate\Database\DatabaseServiceProvider::class, - Illuminate\Encryption\EncryptionServiceProvider::class, - Illuminate\Filesystem\FilesystemServiceProvider::class, - Illuminate\Foundation\Providers\FoundationServiceProvider::class, - Illuminate\Hashing\HashServiceProvider::class, - Illuminate\Mail\MailServiceProvider::class, - Illuminate\Notifications\NotificationServiceProvider::class, - Illuminate\Pagination\PaginationServiceProvider::class, - Illuminate\Pipeline\PipelineServiceProvider::class, - Illuminate\Queue\QueueServiceProvider::class, - Illuminate\Redis\RedisServiceProvider::class, - Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, - Illuminate\Session\SessionServiceProvider::class, - Illuminate\Translation\TranslationServiceProvider::class, - Illuminate\Validation\ValidationServiceProvider::class, - Illuminate\View\ViewServiceProvider::class, - - /* - * 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, - - ], - - /* - |-------------------------------------------------------------------------- - | 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([ - // ... - ])->toArray(), - -]; diff --git a/Chapter26/onlineStore/config/auth.php b/Chapter26/onlineStore/config/auth.php deleted file mode 100644 index d8c6cee..0000000 --- a/Chapter26/onlineStore/config/auth.php +++ /dev/null @@ -1,111 +0,0 @@ - [ - '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 expire 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. - | - */ - - 'passwords' => [ - 'users' => [ - 'provider' => 'users', - 'table' => 'password_resets', - '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/Chapter26/onlineStore/config/broadcasting.php b/Chapter26/onlineStore/config/broadcasting.php deleted file mode 100644 index 67fcbbd..0000000 --- a/Chapter26/onlineStore/config/broadcasting.php +++ /dev/null @@ -1,67 +0,0 @@ - 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'), - 'useTLS' => true, - ], - '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/Chapter26/onlineStore/config/cache.php b/Chapter26/onlineStore/config/cache.php deleted file mode 100644 index 8736c7a..0000000 --- a/Chapter26/onlineStore/config/cache.php +++ /dev/null @@ -1,110 +0,0 @@ - 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'), - ], - - '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 a RAM based store such as APC or Memcached, there might - | be other applications utilizing the same cache. So, we'll specify a - | value to get prefixed to all our keys so we can avoid collisions. - | - */ - - 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'), - -]; diff --git a/Chapter26/onlineStore/config/cors.php b/Chapter26/onlineStore/config/cors.php deleted file mode 100644 index 8a39e6d..0000000 --- a/Chapter26/onlineStore/config/cors.php +++ /dev/null @@ -1,34 +0,0 @@ - ['api/*', 'sanctum/csrf-cookie'], - - 'allowed_methods' => ['*'], - - 'allowed_origins' => ['*'], - - 'allowed_origins_patterns' => [], - - 'allowed_headers' => ['*'], - - 'exposed_headers' => [], - - 'max_age' => 0, - - 'supports_credentials' => false, - -]; diff --git a/Chapter26/onlineStore/config/database.php b/Chapter26/onlineStore/config/database.php deleted file mode 100644 index 0faebae..0000000 --- a/Chapter26/onlineStore/config/database.php +++ /dev/null @@ -1,147 +0,0 @@ - env('DB_CONNECTION', 'mysql'), - - /* - |-------------------------------------------------------------------------- - | Database Connections - |-------------------------------------------------------------------------- - | - | Here are each of the database connections setup for your application. - | Of course, examples of configuring each database platform that is - | supported by Laravel is shown below to make development simple. - | - | - | All database work in Laravel is done through the PHP PDO facilities - | so make sure you have the driver for your particular database of - | choice installed on your machine before you begin development. - | - */ - - 'connections' => [ - - 'sqlite' => [ - 'driver' => 'sqlite', - 'url' => env('DATABASE_URL'), - 'database' => env('DB_DATABASE', database_path('database.sqlite')), - 'prefix' => '', - 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), - ], - - 'mysql' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '3306'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'unix_socket' => env('DB_SOCKET', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - 'pgsql' => [ - 'driver' => 'pgsql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '5432'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - 'search_path' => 'public', - 'sslmode' => 'prefer', - ], - - 'sqlsrv' => [ - 'driver' => 'sqlsrv', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', 'localhost'), - 'port' => env('DB_PORT', '1433'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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'), - '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'), - 'password' => env('REDIS_PASSWORD'), - 'port' => env('REDIS_PORT', '6379'), - 'database' => env('REDIS_CACHE_DB', '1'), - ], - - ], - -]; diff --git a/Chapter26/onlineStore/config/filesystems.php b/Chapter26/onlineStore/config/filesystems.php deleted file mode 100644 index cf5abce..0000000 --- a/Chapter26/onlineStore/config/filesystems.php +++ /dev/null @@ -1,73 +0,0 @@ - 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 setup for each driver as an example of the required options. - | - | Supported Drivers: "local", "ftp", "sftp", "s3" - | - */ - - 'disks' => [ - - 'local' => [ - 'driver' => 'local', - 'root' => storage_path('app'), - ], - - 'public' => [ - 'driver' => 'local', - 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', - 'visibility' => 'public', - ], - - '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), - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter26/onlineStore/config/hashing.php b/Chapter26/onlineStore/config/hashing.php deleted file mode 100644 index bcd3be4..0000000 --- a/Chapter26/onlineStore/config/hashing.php +++ /dev/null @@ -1,52 +0,0 @@ - '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/Chapter26/onlineStore/config/logging.php b/Chapter26/onlineStore/config/logging.php deleted file mode 100644 index fefe088..0000000 --- a/Chapter26/onlineStore/config/logging.php +++ /dev/null @@ -1,119 +0,0 @@ - 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' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), - - /* - |-------------------------------------------------------------------------- - | 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'), - ], - - 'daily' => [ - 'driver' => 'daily', - 'path' => storage_path('logs/laravel.log'), - 'level' => env('LOG_LEVEL', 'debug'), - 'days' => 14, - ], - - 'slack' => [ - 'driver' => 'slack', - 'url' => env('LOG_SLACK_WEBHOOK_URL'), - 'username' => 'Laravel Log', - 'emoji' => ':boom:', - 'level' => env('LOG_LEVEL', 'critical'), - ], - - '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'), - ], - ], - - 'stderr' => [ - 'driver' => 'monolog', - 'level' => env('LOG_LEVEL', 'debug'), - 'handler' => StreamHandler::class, - 'formatter' => env('LOG_STDERR_FORMATTER'), - 'with' => [ - 'stream' => 'php://stderr', - ], - ], - - 'syslog' => [ - 'driver' => 'syslog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'errorlog' => [ - 'driver' => 'errorlog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'null' => [ - 'driver' => 'monolog', - 'handler' => NullHandler::class, - ], - - 'emergency' => [ - 'path' => storage_path('logs/laravel.log'), - ], - ], - -]; diff --git a/Chapter26/onlineStore/config/mail.php b/Chapter26/onlineStore/config/mail.php deleted file mode 100644 index 87b6fe3..0000000 --- a/Chapter26/onlineStore/config/mail.php +++ /dev/null @@ -1,117 +0,0 @@ - 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", - | "postmark", "log", "array", "failover" - | - */ - - 'mailers' => [ - 'smtp' => [ - 'transport' => 'smtp', - '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, - ], - - 'ses' => [ - 'transport' => 'ses', - ], - - 'mailgun' => [ - 'transport' => 'mailgun', - ], - - 'postmark' => [ - 'transport' => 'postmark', - ], - - 'sendmail' => [ - 'transport' => 'sendmail', - 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -t -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/Chapter26/onlineStore/config/queue.php b/Chapter26/onlineStore/config/queue.php deleted file mode 100644 index 25ea5a8..0000000 --- a/Chapter26/onlineStore/config/queue.php +++ /dev/null @@ -1,93 +0,0 @@ - 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, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter26/onlineStore/config/sanctum.php b/Chapter26/onlineStore/config/sanctum.php deleted file mode 100644 index 9281c92..0000000 --- a/Chapter26/onlineStore/config/sanctum.php +++ /dev/null @@ -1,65 +0,0 @@ - explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( - '%s%s', - 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', - env('APP_URL') ? ','.parse_url(env('APP_URL'), PHP_URL_HOST) : '' - ))), - - /* - |-------------------------------------------------------------------------- - | 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/Chapter26/onlineStore/config/services.php b/Chapter26/onlineStore/config/services.php deleted file mode 100644 index 2a1d616..0000000 --- a/Chapter26/onlineStore/config/services.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - 'domain' => env('MAILGUN_DOMAIN'), - 'secret' => env('MAILGUN_SECRET'), - 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), - ], - - '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/Chapter26/onlineStore/config/session.php b/Chapter26/onlineStore/config/session.php deleted file mode 100644 index 8fed97c..0000000 --- a/Chapter26/onlineStore/config/session.php +++ /dev/null @@ -1,201 +0,0 @@ - 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/Chapter26/onlineStore/config/view.php b/Chapter26/onlineStore/config/view.php deleted file mode 100644 index 22b8a18..0000000 --- a/Chapter26/onlineStore/config/view.php +++ /dev/null @@ -1,36 +0,0 @@ - [ - 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/Chapter26/onlineStore/database/.gitignore b/Chapter26/onlineStore/database/.gitignore deleted file mode 100644 index 9b19b93..0000000 --- a/Chapter26/onlineStore/database/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.sqlite* diff --git a/Chapter26/onlineStore/database/factories/UserFactory.php b/Chapter26/onlineStore/database/factories/UserFactory.php deleted file mode 100644 index d6ca926..0000000 --- a/Chapter26/onlineStore/database/factories/UserFactory.php +++ /dev/null @@ -1,42 +0,0 @@ - - */ -class UserFactory extends Factory -{ - /** - * Define the model's default state. - * - * @return array - */ - public function definition() - { - return [ - 'name' => $this->faker->name(), - 'email' => $this->faker->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. - * - * @return \Illuminate\Database\Eloquent\Factories\Factory - */ - public function unverified() - { - return $this->state(function (array $attributes) { - return [ - 'email_verified_at' => null, - ]; - }); - } -} diff --git a/Chapter26/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php b/Chapter26/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php deleted file mode 100644 index cf6b776..0000000 --- a/Chapter26/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->string('name'); - $table->string('email')->unique(); - $table->timestamp('email_verified_at')->nullable(); - $table->string('password'); - $table->rememberToken(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('users'); - } -}; diff --git a/Chapter26/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php b/Chapter26/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php deleted file mode 100644 index 0ee0a36..0000000 --- a/Chapter26/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php +++ /dev/null @@ -1,32 +0,0 @@ -string('email')->index(); - $table->string('token'); - $table->timestamp('created_at')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('password_resets'); - } -} diff --git a/Chapter26/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/Chapter26/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php deleted file mode 100644 index 1719198..0000000 --- a/Chapter26/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php +++ /dev/null @@ -1,36 +0,0 @@ -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. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('failed_jobs'); - } -}; diff --git a/Chapter26/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/Chapter26/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php deleted file mode 100644 index fd235f8..0000000 --- a/Chapter26/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->morphs('tokenable'); - $table->string('name'); - $table->string('token', 64)->unique(); - $table->text('abilities')->nullable(); - $table->timestamp('last_used_at')->nullable(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('personal_access_tokens'); - } -}; diff --git a/Chapter26/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php b/Chapter26/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php deleted file mode 100644 index 2eecdc2..0000000 --- a/Chapter26/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php +++ /dev/null @@ -1,35 +0,0 @@ -id(); - $table->string('name'); - $table->text('description'); - $table->string('image'); - $table->integer('price'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('products'); - } -}; diff --git a/Chapter26/onlineStore/database/migrations/2022_02_12_140820_alter_users_table.php b/Chapter26/onlineStore/database/migrations/2022_02_12_140820_alter_users_table.php deleted file mode 100644 index 5bfcf7e..0000000 --- a/Chapter26/onlineStore/database/migrations/2022_02_12_140820_alter_users_table.php +++ /dev/null @@ -1,34 +0,0 @@ -string('role')->default('client'); - $table->integer('balance'); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::table('users', function (Blueprint $table) { - $table->dropColumn(['role']); - $table->dropColumn(['balance']); - }); - } -}; diff --git a/Chapter26/onlineStore/database/migrations/2022_02_12_152713_create_orders_table.php b/Chapter26/onlineStore/database/migrations/2022_02_12_152713_create_orders_table.php deleted file mode 100644 index fc05fda..0000000 --- a/Chapter26/onlineStore/database/migrations/2022_02_12_152713_create_orders_table.php +++ /dev/null @@ -1,34 +0,0 @@ -id(); - $table->integer('total'); - $table->unsignedBigInteger('user_id'); - $table->foreign('user_id')->references('id')->on('users'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('orders'); - } -}; diff --git a/Chapter26/onlineStore/database/migrations/2022_02_12_152850_create_items_table.php b/Chapter26/onlineStore/database/migrations/2022_02_12_152850_create_items_table.php deleted file mode 100644 index d7dfac5..0000000 --- a/Chapter26/onlineStore/database/migrations/2022_02_12_152850_create_items_table.php +++ /dev/null @@ -1,37 +0,0 @@ -id(); - $table->integer('quantity'); - $table->integer('price'); - $table->unsignedBigInteger('order_id'); - $table->foreign('order_id')->references('id')->on('orders'); - $table->unsignedBigInteger('product_id'); - $table->foreign('product_id')->references('id')->on('products'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('items'); - } -}; diff --git a/Chapter26/onlineStore/database/seeders/DatabaseSeeder.php b/Chapter26/onlineStore/database/seeders/DatabaseSeeder.php deleted file mode 100644 index 71f673f..0000000 --- a/Chapter26/onlineStore/database/seeders/DatabaseSeeder.php +++ /dev/null @@ -1,19 +0,0 @@ -create(); - } -} diff --git a/Chapter26/onlineStore/lang/en.json b/Chapter26/onlineStore/lang/en.json deleted file mode 100644 index 577680d..0000000 --- a/Chapter26/onlineStore/lang/en.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "The :attribute must contain at least one letter.": "The :attribute must contain at least one letter.", - "The :attribute must contain at least one number.": "The :attribute must contain at least one number.", - "The :attribute must contain at least one symbol.": "The :attribute must contain at least one symbol.", - "The :attribute must contain at least one uppercase and one lowercase letter.": "The :attribute must contain at least one uppercase and one lowercase letter.", - "The given :attribute has appeared in a data leak. Please choose a different :attribute.": "The given :attribute has appeared in a data leak. Please choose a different :attribute." -} diff --git a/Chapter26/onlineStore/lang/en/auth.php b/Chapter26/onlineStore/lang/en/auth.php deleted file mode 100644 index 6598e2c..0000000 --- a/Chapter26/onlineStore/lang/en/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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/Chapter26/onlineStore/lang/en/pagination.php b/Chapter26/onlineStore/lang/en/pagination.php deleted file mode 100644 index d481411..0000000 --- a/Chapter26/onlineStore/lang/en/pagination.php +++ /dev/null @@ -1,19 +0,0 @@ - '« Previous', - 'next' => 'Next »', - -]; diff --git a/Chapter26/onlineStore/lang/en/passwords.php b/Chapter26/onlineStore/lang/en/passwords.php deleted file mode 100644 index 2345a56..0000000 --- a/Chapter26/onlineStore/lang/en/passwords.php +++ /dev/null @@ -1,22 +0,0 @@ - '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/Chapter26/onlineStore/lang/en/validation.php b/Chapter26/onlineStore/lang/en/validation.php deleted file mode 100644 index 783003c..0000000 --- a/Chapter26/onlineStore/lang/en/validation.php +++ /dev/null @@ -1,163 +0,0 @@ - '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' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - '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' => [ - 'numeric' => 'The :attribute must be greater than :value.', - 'file' => 'The :attribute must be greater than :value kilobytes.', - 'string' => 'The :attribute must be greater than :value characters.', - 'array' => 'The :attribute must have more than :value items.', - ], - 'gte' => [ - 'numeric' => 'The :attribute must be greater than or equal to :value.', - 'file' => 'The :attribute must be greater than or equal to :value kilobytes.', - 'string' => 'The :attribute must be greater than or equal to :value characters.', - 'array' => 'The :attribute must have :value items or more.', - ], - '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' => [ - 'numeric' => 'The :attribute must be less than :value.', - 'file' => 'The :attribute must be less than :value kilobytes.', - 'string' => 'The :attribute must be less than :value characters.', - 'array' => 'The :attribute must have less than :value items.', - ], - 'lte' => [ - 'numeric' => 'The :attribute must be less than or equal to :value.', - 'file' => 'The :attribute must be less than or equal to :value kilobytes.', - 'string' => 'The :attribute must be less than or equal to :value characters.', - 'array' => 'The :attribute must not have more than :value items.', - ], - 'mac_address' => 'The :attribute must be a valid MAC address.', - 'max' => [ - 'numeric' => 'The :attribute must not be greater than :max.', - 'file' => 'The :attribute must not be greater than :max kilobytes.', - 'string' => 'The :attribute must not be greater than :max characters.', - 'array' => 'The :attribute must not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - '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.', - 'password' => 'The password is incorrect.', - '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' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - '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/Chapter26/onlineStore/package.json b/Chapter26/onlineStore/package.json deleted file mode 100644 index 7b71681..0000000 --- a/Chapter26/onlineStore/package.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "private": true, - "scripts": { - "dev": "npm run development", - "development": "mix", - "watch": "mix watch", - "watch-poll": "mix watch -- --watch-options-poll=1000", - "hot": "mix watch --hot", - "prod": "npm run production", - "production": "mix --production" - }, - "devDependencies": { - "@popperjs/core": "^2.10.2", - "axios": "^0.25", - "bootstrap": "^5.1.3", - "laravel-mix": "^6.0.6", - "lodash": "^4.17.19", - "postcss": "^8.1.14", - "sass": "^1.32.11", - "sass-loader": "^11.0.1" - } -} diff --git a/Chapter26/onlineStore/phpcs.xml b/Chapter26/onlineStore/phpcs.xml deleted file mode 100644 index a1cf2b6..0000000 --- a/Chapter26/onlineStore/phpcs.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - The coding standard for the Online Store project - - app/ - config/ - database/ - routes/ - */migrations/* - diff --git a/Chapter26/onlineStore/phpunit.xml b/Chapter26/onlineStore/phpunit.xml deleted file mode 100644 index 2ac86a1..0000000 --- a/Chapter26/onlineStore/phpunit.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - ./tests/Unit - - - ./tests/Feature - - - - - ./app - - - - - - - - - - - - - - diff --git a/Chapter26/onlineStore/public/.htaccess b/Chapter26/onlineStore/public/.htaccess deleted file mode 100644 index 3aec5e2..0000000 --- a/Chapter26/onlineStore/public/.htaccess +++ /dev/null @@ -1,21 +0,0 @@ - - - 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/Chapter26/onlineStore/public/css/admin.css b/Chapter26/onlineStore/public/css/admin.css deleted file mode 100644 index d9495a1..0000000 --- a/Chapter26/onlineStore/public/css/admin.css +++ /dev/null @@ -1,33 +0,0 @@ -.copyright { - background-color: #1a252f; -} - -.fixed { - -ms-flex: 0 0 250px; - flex: 0 0 250px; -} - -.content-grey { - background-color: #f8f9fc; -} - -hr { - margin-top: 0.8em; - margin-bottom: 0.8em; -} - -.img-profile { - height: 2rem; - width: 2rem; -} - -.profile-font { - color: #858796 !important; - font-size: 80%; - font-weight: 400; -} - -.card-header { - background-color: #f8f9fc; - border-bottom: 1px solid #e3e6f0; -} diff --git a/Chapter26/onlineStore/public/css/app.css b/Chapter26/onlineStore/public/css/app.css deleted file mode 100644 index cabac36..0000000 --- a/Chapter26/onlineStore/public/css/app.css +++ /dev/null @@ -1,20 +0,0 @@ -.bg-secondary { - background-color: #2c3e50 !important; -} - -.copyright { - background-color: #1a252f; -} - -.bg-primary { - background-color: #1abc9c !important; -} - -nav{ - font-weight: 700; -} - -.img-card{ - height: 18vw; - object-fit: cover; -} diff --git a/Chapter26/onlineStore/public/favicon.ico b/Chapter26/onlineStore/public/favicon.ico deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter26/onlineStore/public/img/game.png b/Chapter26/onlineStore/public/img/game.png deleted file mode 100644 index 85420e8bbc16098bf26b4ee63bde0e91a19d1f2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25896 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 cz>% diff --git a/Chapter26/onlineStore/public/img/safe.png b/Chapter26/onlineStore/public/img/safe.png deleted file mode 100644 index 445942c707af53210931f9f4f99f6d3cb69e5d89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19240 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
w==XB0?3|p=#`o%NsudE(E-U#KS3Snw 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 o>ir+C;RN10sIS0&a;p - - - - - - - - - - - - - - - - - - diff --git a/Chapter26/onlineStore/public/index.php b/Chapter26/onlineStore/public/index.php deleted file mode 100644 index 1d69f3a..0000000 --- a/Chapter26/onlineStore/public/index.php +++ /dev/null @@ -1,55 +0,0 @@ -make(Kernel::class); - -$response = $kernel->handle( - $request = Request::capture() -)->send(); - -$kernel->terminate($request, $response); diff --git a/Chapter26/onlineStore/public/robots.txt b/Chapter26/onlineStore/public/robots.txt deleted file mode 100644 index eb05362..0000000 --- a/Chapter26/onlineStore/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: diff --git a/Chapter26/onlineStore/resources/css/app.css b/Chapter26/onlineStore/resources/css/app.css deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter26/onlineStore/resources/js/app.js b/Chapter26/onlineStore/resources/js/app.js deleted file mode 100644 index 40c55f6..0000000 --- a/Chapter26/onlineStore/resources/js/app.js +++ /dev/null @@ -1 +0,0 @@ -require('./bootstrap'); diff --git a/Chapter26/onlineStore/resources/js/bootstrap.js b/Chapter26/onlineStore/resources/js/bootstrap.js deleted file mode 100644 index dcdc4df..0000000 --- a/Chapter26/onlineStore/resources/js/bootstrap.js +++ /dev/null @@ -1,32 +0,0 @@ -window._ = require('lodash'); - -try { - require('bootstrap'); -} catch (e) {} - -/** - * 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 = require('axios'); - -window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; - -/** - * 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'; - -// window.Pusher = require('pusher-js'); - -// window.Echo = new Echo({ -// broadcaster: 'pusher', -// key: process.env.MIX_PUSHER_APP_KEY, -// cluster: process.env.MIX_PUSHER_APP_CLUSTER, -// forceTLS: true -// }); diff --git a/Chapter26/onlineStore/resources/sass/_variables.scss b/Chapter26/onlineStore/resources/sass/_variables.scss deleted file mode 100644 index 172daaa..0000000 --- a/Chapter26/onlineStore/resources/sass/_variables.scss +++ /dev/null @@ -1,7 +0,0 @@ -// Body -$body-bg: #f8fafc; - -// Typography -$font-family-sans-serif: 'Nunito', sans-serif; -$font-size-base: 0.9rem; -$line-height-base: 1.6; diff --git a/Chapter26/onlineStore/resources/sass/app.scss b/Chapter26/onlineStore/resources/sass/app.scss deleted file mode 100644 index 3193ffa..0000000 --- a/Chapter26/onlineStore/resources/sass/app.scss +++ /dev/null @@ -1,8 +0,0 @@ -// Fonts -@import url('https://fonts.googleapis.com/css?family=Nunito'); - -// Variables -@import 'variables'; - -// Bootstrap -@import '~bootstrap/scss/bootstrap'; diff --git a/Chapter26/onlineStore/resources/views/admin/home/index.blade.php b/Chapter26/onlineStore/resources/views/admin/home/index.blade.php deleted file mode 100644 index a2b4868..0000000 --- a/Chapter26/onlineStore/resources/views/admin/home/index.blade.php +++ /dev/null @@ -1,12 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
-
- Admin Panel - Home Page -
-
- Welcome to the Admin Panel, use the sidebar to navigate between the different options. -
-
-@endsection diff --git a/Chapter26/onlineStore/resources/views/admin/product/edit.blade.php b/Chapter26/onlineStore/resources/views/admin/product/edit.blade.php deleted file mode 100644 index b8e03d8..0000000 --- a/Chapter26/onlineStore/resources/views/admin/product/edit.blade.php +++ /dev/null @@ -1,61 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
-
- Edit Product -
-
- @if($errors->any()) -
    - @foreach($errors->all() as $error) -
  • - {{ $error }}
  • - @endforeach -
- @endif - -
- @csrf - @method('PUT') -
-
-
- -
- -
-
-
-
-
- -
- -
-
-
-
-
-
-
- -
- -
-
-
-
-   -
-
-
- - -
- -
-
-
-@endsection diff --git a/Chapter26/onlineStore/resources/views/admin/product/index.blade.php b/Chapter26/onlineStore/resources/views/admin/product/index.blade.php deleted file mode 100644 index 19fbe4b..0000000 --- a/Chapter26/onlineStore/resources/views/admin/product/index.blade.php +++ /dev/null @@ -1,98 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
-
- Create Products -
-
- @if($errors->any()) -
    - @foreach($errors->all() as $error) -
  • - {{ $error }}
  • - @endforeach -
- @endif - -
- @csrf -
-
-
- -
- -
-
-
-
-
- -
- -
-
-
-
-
-
-
- -
- -
-
-
-
-   -
-
-
- - -
- -
-
-
- -
-
- Manage Products -
-
- - - - - - - - - - - @foreach ($viewData["products"] as $product) - - - - - - - @endforeach - -
IDNameEditDelete
{{ $product->getId() }}{{ $product->getName() }} - - - - -
- @csrf - @method('DELETE') - -
-
-
-
-@endsection diff --git a/Chapter26/onlineStore/resources/views/auth/login.blade.php b/Chapter26/onlineStore/resources/views/auth/login.blade.php deleted file mode 100644 index c7e5ea0..0000000 --- a/Chapter26/onlineStore/resources/views/auth/login.blade.php +++ /dev/null @@ -1,73 +0,0 @@ -@extends('layouts.app') - -@section('content') -
-@endsection diff --git a/Chapter26/onlineStore/resources/views/auth/passwords/confirm.blade.php b/Chapter26/onlineStore/resources/views/auth/passwords/confirm.blade.php deleted file mode 100644 index f8c8e61..0000000 --- a/Chapter26/onlineStore/resources/views/auth/passwords/confirm.blade.php +++ /dev/null @@ -1,49 +0,0 @@ -@extends('layouts.app') - -@section('content') - -@endsection diff --git a/Chapter26/onlineStore/resources/views/auth/passwords/email.blade.php b/Chapter26/onlineStore/resources/views/auth/passwords/email.blade.php deleted file mode 100644 index d1ac783..0000000 --- a/Chapter26/onlineStore/resources/views/auth/passwords/email.blade.php +++ /dev/null @@ -1,47 +0,0 @@ -@extends('layouts.app') - -@section('content') -
-
-
-
-
{{ __('Reset Password') }}
- -
- @if (session('status')) - - @endif - -
- @csrf - -
- - -
- - - @error('email') - - {{ $message }} - - @enderror -
-
- -
-
- -
-
-
-
-
-
-
-
-@endsection diff --git a/Chapter26/onlineStore/resources/views/auth/passwords/reset.blade.php b/Chapter26/onlineStore/resources/views/auth/passwords/reset.blade.php deleted file mode 100644 index dccf6c6..0000000 --- a/Chapter26/onlineStore/resources/views/auth/passwords/reset.blade.php +++ /dev/null @@ -1,65 +0,0 @@ -@extends('layouts.app') - -@section('content') -
-
-
-
-
{{ __('Reset Password') }}
- -
-
- @csrf - - - -
- - -
- - - @error('email') - - {{ $message }} - - @enderror -
-
- -
- - -
- - - @error('password') - - {{ $message }} - - @enderror -
-
- -
- - -
- -
-
- -
-
- -
-
-
-
-
-
-
-
-@endsection diff --git a/Chapter26/onlineStore/resources/views/auth/register.blade.php b/Chapter26/onlineStore/resources/views/auth/register.blade.php deleted file mode 100644 index e001a0b..0000000 --- a/Chapter26/onlineStore/resources/views/auth/register.blade.php +++ /dev/null @@ -1,77 +0,0 @@ -@extends('layouts.app') - -@section('content') -
-
-
-
-
{{ __('Register') }}
- -
-
- @csrf - -
- - -
- - - @error('name') - - {{ $message }} - - @enderror -
-
- -
- - -
- - - @error('email') - - {{ $message }} - - @enderror -
-
- -
- - -
- - - @error('password') - - {{ $message }} - - @enderror -
-
- -
- - -
- -
-
- -
-
- -
-
-
-
-
-
-
-
-@endsection diff --git a/Chapter26/onlineStore/resources/views/auth/verify.blade.php b/Chapter26/onlineStore/resources/views/auth/verify.blade.php deleted file mode 100644 index 9f8c1bc..0000000 --- a/Chapter26/onlineStore/resources/views/auth/verify.blade.php +++ /dev/null @@ -1,28 +0,0 @@ -@extends('layouts.app') - -@section('content') -
-
-
-
-
{{ __('Verify Your Email Address') }}
- -
- @if (session('resent')) - - @endif - - {{ __('Before proceeding, please check your email for a verification link.') }} - {{ __('If you did not receive the email') }}, -
- @csrf - . -
-
-
-
-
-
-@endsection diff --git a/Chapter26/onlineStore/resources/views/cart/index.blade.php b/Chapter26/onlineStore/resources/views/cart/index.blade.php deleted file mode 100644 index b45015b..0000000 --- a/Chapter26/onlineStore/resources/views/cart/index.blade.php +++ /dev/null @@ -1,43 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
-@endsection diff --git a/Chapter26/onlineStore/resources/views/home.blade.php b/Chapter26/onlineStore/resources/views/home.blade.php deleted file mode 100644 index 1f34466..0000000 --- a/Chapter26/onlineStore/resources/views/home.blade.php +++ /dev/null @@ -1,23 +0,0 @@ -@extends('layouts.app') - -@section('content') -
-
-
-
-
{{ __('Dashboard') }}
- -
- @if (session('status')) - - @endif - - {{ __('You are logged in!') }} -
-
-
-
-
-@endsection diff --git a/Chapter26/onlineStore/resources/views/home/about.blade.php b/Chapter26/onlineStore/resources/views/home/about.blade.php deleted file mode 100644 index f79abf3..0000000 --- a/Chapter26/onlineStore/resources/views/home/about.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
-
-
-

{{ $viewData["description"] }}

-
-
-

{{ $viewData["author"] }}

-
-
-
-@endsection diff --git a/Chapter26/onlineStore/resources/views/home/index.blade.php b/Chapter26/onlineStore/resources/views/home/index.blade.php deleted file mode 100644 index 1affb20..0000000 --- a/Chapter26/onlineStore/resources/views/home/index.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('content') -
-
- -
-
- -
-
- -
-
-@endsection diff --git a/Chapter26/onlineStore/resources/views/layouts/admin.blade.php b/Chapter26/onlineStore/resources/views/layouts/admin.blade.php deleted file mode 100644 index 4aff3f8..0000000 --- a/Chapter26/onlineStore/resources/views/layouts/admin.blade.php +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - @yield('title', 'Admin - Online Store') - - - -
- - - -
- - -
- @yield('content') -
-
-
- - - - - - - - - diff --git a/Chapter26/onlineStore/resources/views/layouts/app.blade.php b/Chapter26/onlineStore/resources/views/layouts/app.blade.php deleted file mode 100644 index 7b86f0e..0000000 --- a/Chapter26/onlineStore/resources/views/layouts/app.blade.php +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - @yield('title', 'Online Store') - - - - - -
-
-

@yield('subtitle', 'A Laravel Online Store')

-
-
- - -
- @yield('content') -
- - - - - - - diff --git a/Chapter26/onlineStore/resources/views/product/index.blade.php b/Chapter26/onlineStore/resources/views/product/index.blade.php deleted file mode 100644 index 64c3e18..0000000 --- a/Chapter26/onlineStore/resources/views/product/index.blade.php +++ /dev/null @@ -1,18 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
- @foreach ($viewData["products"] as $product) - - @endforeach -
-@endsection diff --git a/Chapter26/onlineStore/resources/views/product/show.blade.php b/Chapter26/onlineStore/resources/views/product/show.blade.php deleted file mode 100644 index 801ea09..0000000 --- a/Chapter26/onlineStore/resources/views/product/show.blade.php +++ /dev/null @@ -1,36 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
-
-
- getImage()) }}" class="img-fluid rounded-start"> -
-
-
-
- {{ $viewData["product"]->getName() }} (${{ $viewData["product"]->getPrice() }}) -
-

{{ $viewData["product"]->getDescription() }}

-

-

-
- @csrf -
-
-
Quantity
- -
-
-
- -
-
-
-

-
-
-
-
-@endsection diff --git a/Chapter26/onlineStore/resources/views/welcome.blade.php b/Chapter26/onlineStore/resources/views/welcome.blade.php deleted file mode 100644 index c587c72..0000000 --- a/Chapter26/onlineStore/resources/views/welcome.blade.php +++ /dev/null @@ -1,7 +0,0 @@ -@extends('layouts.app') -@section('title', 'Home Page - Online Store') -@section('content') -
- Welcome to the application -
-@endsection \ No newline at end of file diff --git a/Chapter26/onlineStore/routes/api.php b/Chapter26/onlineStore/routes/api.php deleted file mode 100644 index eb6fa48..0000000 --- a/Chapter26/onlineStore/routes/api.php +++ /dev/null @@ -1,19 +0,0 @@ -get('/user', function (Request $request) { - return $request->user(); -}); diff --git a/Chapter26/onlineStore/routes/channels.php b/Chapter26/onlineStore/routes/channels.php deleted file mode 100644 index 5d451e1..0000000 --- a/Chapter26/onlineStore/routes/channels.php +++ /dev/null @@ -1,18 +0,0 @@ -id === (int) $id; -}); diff --git a/Chapter26/onlineStore/routes/console.php b/Chapter26/onlineStore/routes/console.php deleted file mode 100644 index e05f4c9..0000000 --- a/Chapter26/onlineStore/routes/console.php +++ /dev/null @@ -1,19 +0,0 @@ -comment(Inspiring::quote()); -})->purpose('Display an inspiring quote'); diff --git a/Chapter26/onlineStore/routes/web.php b/Chapter26/onlineStore/routes/web.php deleted file mode 100644 index 9ed67aa..0000000 --- a/Chapter26/onlineStore/routes/web.php +++ /dev/null @@ -1,34 +0,0 @@ -name("home.index"); -Route::get('/about', 'App\Http\Controllers\HomeController@about')->name("home.about"); -Route::get('/products', 'App\Http\Controllers\ProductController@index')->name("product.index"); -Route::get('/products/{id}', 'App\Http\Controllers\ProductController@show')->name("product.show"); - -Route::get('/cart', 'App\Http\Controllers\CartController@index')->name("cart.index"); -Route::get('/cart/delete', 'App\Http\Controllers\CartController@delete')->name("cart.delete"); -Route::post('/cart/add/{id}', 'App\Http\Controllers\CartController@add')->name("cart.add"); - -Route::middleware('admin')->group(function () { - Route::get('/admin', 'App\Http\Controllers\Admin\AdminHomeController@index')->name("admin.home.index"); - Route::get('/admin/products', 'App\Http\Controllers\Admin\AdminProductController@index')->name("admin.product.index"); - Route::post('/admin/products/store', 'App\Http\Controllers\Admin\AdminProductController@store')->name("admin.product.store"); - Route::delete('/admin/products/{id}/delete', 'App\Http\Controllers\Admin\AdminProductController@delete')->name("admin.product.delete"); - Route::get('/admin/products/{id}/edit', 'App\Http\Controllers\Admin\AdminProductController@edit')->name("admin.product.edit"); - Route::put('/admin/products/{id}/update', 'App\Http\Controllers\Admin\AdminProductController@update')->name("admin.product.update"); -}); - -Auth::routes(); diff --git a/Chapter26/onlineStore/storage/app/.gitignore b/Chapter26/onlineStore/storage/app/.gitignore deleted file mode 100644 index 8f4803c..0000000 --- a/Chapter26/onlineStore/storage/app/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!public/ -!.gitignore diff --git a/Chapter26/onlineStore/storage/app/public/.gitignore b/Chapter26/onlineStore/storage/app/public/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter26/onlineStore/storage/app/public/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter26/onlineStore/storage/framework/.gitignore b/Chapter26/onlineStore/storage/framework/.gitignore deleted file mode 100644 index 05c4471..0000000 --- a/Chapter26/onlineStore/storage/framework/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -compiled.php -config.php -down -events.scanned.php -maintenance.php -routes.php -routes.scanned.php -schedule-* -services.json diff --git a/Chapter26/onlineStore/storage/framework/cache/.gitignore b/Chapter26/onlineStore/storage/framework/cache/.gitignore deleted file mode 100644 index 01e4a6c..0000000 --- a/Chapter26/onlineStore/storage/framework/cache/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!data/ -!.gitignore diff --git a/Chapter26/onlineStore/storage/framework/cache/data/.gitignore b/Chapter26/onlineStore/storage/framework/cache/data/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter26/onlineStore/storage/framework/cache/data/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter26/onlineStore/storage/framework/sessions/.gitignore b/Chapter26/onlineStore/storage/framework/sessions/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter26/onlineStore/storage/framework/sessions/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter26/onlineStore/storage/framework/testing/.gitignore b/Chapter26/onlineStore/storage/framework/testing/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter26/onlineStore/storage/framework/testing/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter26/onlineStore/storage/framework/views/.gitignore b/Chapter26/onlineStore/storage/framework/views/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter26/onlineStore/storage/framework/views/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter26/onlineStore/storage/logs/.gitignore b/Chapter26/onlineStore/storage/logs/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter26/onlineStore/storage/logs/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter26/onlineStore/tests/CreatesApplication.php b/Chapter26/onlineStore/tests/CreatesApplication.php deleted file mode 100644 index 547152f..0000000 --- a/Chapter26/onlineStore/tests/CreatesApplication.php +++ /dev/null @@ -1,22 +0,0 @@ -make(Kernel::class)->bootstrap(); - - return $app; - } -} diff --git a/Chapter26/onlineStore/tests/Feature/ExampleTest.php b/Chapter26/onlineStore/tests/Feature/ExampleTest.php deleted file mode 100644 index 78ccc21..0000000 --- a/Chapter26/onlineStore/tests/Feature/ExampleTest.php +++ /dev/null @@ -1,21 +0,0 @@ -get('/'); - - $response->assertStatus(200); - } -} diff --git a/Chapter26/onlineStore/tests/TestCase.php b/Chapter26/onlineStore/tests/TestCase.php deleted file mode 100644 index 2932d4a..0000000 --- a/Chapter26/onlineStore/tests/TestCase.php +++ /dev/null @@ -1,10 +0,0 @@ -assertTrue(true); - } -} diff --git a/Chapter26/onlineStore/webpack.mix.js b/Chapter26/onlineStore/webpack.mix.js deleted file mode 100644 index 1a2a958..0000000 --- a/Chapter26/onlineStore/webpack.mix.js +++ /dev/null @@ -1,16 +0,0 @@ -const mix = require('laravel-mix'); - -/* - |-------------------------------------------------------------------------- - | Mix Asset Management - |-------------------------------------------------------------------------- - | - | Mix provides a clean, fluent API for defining some Webpack build steps - | for your Laravel application. By default, we are compiling the Sass - | file for the application as well as bundling up all the JS files. - | - */ - -mix.js('resources/js/app.js', 'public/js') - .sass('resources/sass/app.scss', 'public/css') - .sourceMaps(); diff --git a/Chapter27/onlineStore/.editorconfig b/Chapter27/onlineStore/.editorconfig deleted file mode 100644 index 1671c9b..0000000 --- a/Chapter27/onlineStore/.editorconfig +++ /dev/null @@ -1,18 +0,0 @@ -root = true - -[*] -charset = utf-8 -end_of_line = lf -insert_final_newline = true -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true - -[*.md] -trim_trailing_whitespace = false - -[*.{yml,yaml}] -indent_size = 2 - -[docker-compose.yml] -indent_size = 4 diff --git a/Chapter27/onlineStore/.env.example b/Chapter27/onlineStore/.env.example deleted file mode 100644 index 8510237..0000000 --- a/Chapter27/onlineStore/.env.example +++ /dev/null @@ -1,52 +0,0 @@ -APP_NAME=Laravel -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=laravel -DB_USERNAME=root -DB_PASSWORD= - -BROADCAST_DRIVER=log -CACHE_DRIVER=file -FILESYSTEM_DISK=local -QUEUE_CONNECTION=sync -SESSION_DRIVER=file -SESSION_LIFETIME=120 - -MEMCACHED_HOST=127.0.0.1 - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -MAIL_MAILER=smtp -MAIL_HOST=mailhog -MAIL_PORT=1025 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS=null -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_APP_CLUSTER=mt1 - -MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/Chapter27/onlineStore/.gitattributes b/Chapter27/onlineStore/.gitattributes deleted file mode 100644 index 510d996..0000000 --- a/Chapter27/onlineStore/.gitattributes +++ /dev/null @@ -1,10 +0,0 @@ -* text=auto - -*.blade.php diff=html -*.css diff=css -*.html diff=html -*.md diff=markdown -*.php diff=php - -/.github export-ignore -CHANGELOG.md export-ignore diff --git a/Chapter27/onlineStore/.gitignore b/Chapter27/onlineStore/.gitignore deleted file mode 100644 index eb003b0..0000000 --- a/Chapter27/onlineStore/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -/node_modules -/public/hot -/public/storage -/storage/*.key -/vendor -.env -.env.backup -.phpunit.result.cache -docker-compose.override.yml -Homestead.json -Homestead.yaml -npm-debug.log -yarn-error.log -/.idea -/.vscode diff --git a/Chapter27/onlineStore/.styleci.yml b/Chapter27/onlineStore/.styleci.yml deleted file mode 100644 index 679a631..0000000 --- a/Chapter27/onlineStore/.styleci.yml +++ /dev/null @@ -1,13 +0,0 @@ -php: - preset: laravel - version: 8 - disabled: - - no_unused_imports - finder: - not-name: - - index.php -js: - finder: - not-name: - - webpack.mix.js -css: true diff --git a/Chapter27/onlineStore/README.md b/Chapter27/onlineStore/README.md deleted file mode 100644 index f171eca..0000000 --- a/Chapter27/onlineStore/README.md +++ /dev/null @@ -1,64 +0,0 @@ -

- -

-Build Status -Total Downloads -Latest Stable Version -License -

- -## About Laravel - -Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as: - -- [Simple, fast routing engine](https://laravel.com/docs/routing). -- [Powerful dependency injection container](https://laravel.com/docs/container). -- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage. -- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent). -- Database agnostic [schema migrations](https://laravel.com/docs/migrations). -- [Robust background job processing](https://laravel.com/docs/queues). -- [Real-time event broadcasting](https://laravel.com/docs/broadcasting). - -Laravel is accessible, powerful, and provides tools required for large, robust applications. - -## Learning Laravel - -Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework. - -If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 2000 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library. - -## Laravel Sponsors - -We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell). - -### Premium Partners - -- **[Vehikl](https://vehikl.com/)** -- **[Tighten Co.](https://tighten.co)** -- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** -- **[64 Robots](https://64robots.com)** -- **[Cubet Techno Labs](https://cubettech.com)** -- **[Cyber-Duck](https://cyber-duck.co.uk)** -- **[Many](https://www.many.co.uk)** -- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)** -- **[DevSquad](https://devsquad.com)** -- **[Curotec](https://www.curotec.com/services/technologies/laravel/)** -- **[OP.GG](https://op.gg)** -- **[WebReinvent](https://webreinvent.com/?utm_source=laravel&utm_medium=github&utm_campaign=patreon-sponsors)** -- **[Lendio](https://lendio.com)** - -## Contributing - -Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions). - -## Code of Conduct - -In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). - -## Security Vulnerabilities - -If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed. - -## License - -The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). diff --git a/Chapter27/onlineStore/app/Console/Kernel.php b/Chapter27/onlineStore/app/Console/Kernel.php deleted file mode 100644 index d8bc1d2..0000000 --- a/Chapter27/onlineStore/app/Console/Kernel.php +++ /dev/null @@ -1,32 +0,0 @@ -command('inspire')->hourly(); - } - - /** - * Register the commands for the application. - * - * @return void - */ - protected function commands() - { - $this->load(__DIR__.'/Commands'); - - require base_path('routes/console.php'); - } -} diff --git a/Chapter27/onlineStore/app/Exceptions/Handler.php b/Chapter27/onlineStore/app/Exceptions/Handler.php deleted file mode 100644 index 8e7fbd1..0000000 --- a/Chapter27/onlineStore/app/Exceptions/Handler.php +++ /dev/null @@ -1,41 +0,0 @@ -> - */ - protected $dontReport = [ - // - ]; - - /** - * A list of the inputs that are never flashed for validation exceptions. - * - * @var array - */ - protected $dontFlash = [ - 'current_password', - 'password', - 'password_confirmation', - ]; - - /** - * Register the exception handling callbacks for the application. - * - * @return void - */ - public function register() - { - $this->reportable(function (Throwable $e) { - // - }); - } -} diff --git a/Chapter27/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php b/Chapter27/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php deleted file mode 100644 index cd78cb3..0000000 --- a/Chapter27/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php +++ /dev/null @@ -1,16 +0,0 @@ -with("viewData", $viewData); - } -} diff --git a/Chapter27/onlineStore/app/Http/Controllers/Admin/AdminProductController.php b/Chapter27/onlineStore/app/Http/Controllers/Admin/AdminProductController.php deleted file mode 100644 index d1c6c52..0000000 --- a/Chapter27/onlineStore/app/Http/Controllers/Admin/AdminProductController.php +++ /dev/null @@ -1,79 +0,0 @@ -with("viewData", $viewData); - } - - public function store(Request $request) - { - Product::validate($request); - - $newProduct = new Product(); - $newProduct->setName($request->input('name')); - $newProduct->setDescription($request->input('description')); - $newProduct->setPrice($request->input('price')); - $newProduct->setImage("game.png"); - $newProduct->save(); - - if ($request->hasFile('image')) { - $imageName = $newProduct->getId().".".$request->file('image')->extension(); - Storage::disk('public')->put( - $imageName, - file_get_contents($request->file('image')->getRealPath()) - ); - $newProduct->setImage($imageName); - $newProduct->save(); - } - - return back(); - } - - public function delete($id) - { - Product::destroy($id); - return back(); - } - - public function edit($id) - { - $viewData = []; - $viewData["title"] = "Admin Page - Edit Product - Online Store"; - $viewData["product"] = Product::findOrFail($id); - return view('admin.product.edit')->with("viewData", $viewData); - } - - public function update(Request $request, $id) - { - Product::validate($request); - - $product = Product::findOrFail($id); - $product->setName($request->input('name')); - $product->setDescription($request->input('description')); - $product->setPrice($request->input('price')); - - if ($request->hasFile('image')) { - $imageName = $product->getId().".".$request->file('image')->extension(); - Storage::disk('public')->put( - $imageName, - file_get_contents($request->file('image')->getRealPath()) - ); - $product->setImage($imageName); - } - - $product->save(); - return redirect()->route('admin.product.index'); - } -} diff --git a/Chapter27/onlineStore/app/Http/Controllers/Auth/ConfirmPasswordController.php b/Chapter27/onlineStore/app/Http/Controllers/Auth/ConfirmPasswordController.php deleted file mode 100644 index 138c1f0..0000000 --- a/Chapter27/onlineStore/app/Http/Controllers/Auth/ConfirmPasswordController.php +++ /dev/null @@ -1,40 +0,0 @@ -middleware('auth'); - } -} diff --git a/Chapter27/onlineStore/app/Http/Controllers/Auth/ForgotPasswordController.php b/Chapter27/onlineStore/app/Http/Controllers/Auth/ForgotPasswordController.php deleted file mode 100644 index 465c39c..0000000 --- a/Chapter27/onlineStore/app/Http/Controllers/Auth/ForgotPasswordController.php +++ /dev/null @@ -1,22 +0,0 @@ -middleware('guest')->except('logout'); - } -} diff --git a/Chapter27/onlineStore/app/Http/Controllers/Auth/RegisterController.php b/Chapter27/onlineStore/app/Http/Controllers/Auth/RegisterController.php deleted file mode 100644 index 87e3a82..0000000 --- a/Chapter27/onlineStore/app/Http/Controllers/Auth/RegisterController.php +++ /dev/null @@ -1,74 +0,0 @@ -middleware('guest'); - } - - /** - * Get a validator for an incoming registration request. - * - * @param array $data - * @return \Illuminate\Contracts\Validation\Validator - */ - protected function validator(array $data) - { - return Validator::make($data, [ - 'name' => ['required', 'string', 'max:255'], - 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], - 'password' => ['required', 'string', 'min:8', 'confirmed'], - ]); - } - - /** - * Create a new user instance after a valid registration. - * - * @param array $data - * @return \App\Models\User - */ - protected function create(array $data) - { - return User::create([ - 'name' => $data['name'], - 'email' => $data['email'], - 'password' => Hash::make($data['password']), - 'balance' => 5000, - ]); - } -} diff --git a/Chapter27/onlineStore/app/Http/Controllers/Auth/ResetPasswordController.php b/Chapter27/onlineStore/app/Http/Controllers/Auth/ResetPasswordController.php deleted file mode 100644 index b1726a3..0000000 --- a/Chapter27/onlineStore/app/Http/Controllers/Auth/ResetPasswordController.php +++ /dev/null @@ -1,30 +0,0 @@ -middleware('auth'); - $this->middleware('signed')->only('verify'); - $this->middleware('throttle:6,1')->only('verify', 'resend'); - } -} diff --git a/Chapter27/onlineStore/app/Http/Controllers/CartController.php b/Chapter27/onlineStore/app/Http/Controllers/CartController.php deleted file mode 100644 index 9dcfaba..0000000 --- a/Chapter27/onlineStore/app/Http/Controllers/CartController.php +++ /dev/null @@ -1,87 +0,0 @@ -session()->get("products"); - if ($productsInSession) { - $productsInCart = Product::findMany(array_keys($productsInSession)); - $total = Product::sumPricesByQuantities($productsInCart, $productsInSession); - } - - $viewData = []; - $viewData["title"] = "Cart - Online Store"; - $viewData["subtitle"] = "Shopping Cart"; - $viewData["total"] = $total; - $viewData["products"] = $productsInCart; - return view('cart.index')->with("viewData", $viewData); - } - - public function add(Request $request, $id) - { - $products = $request->session()->get("products"); - $products[$id] = $request->input('quantity'); - $request->session()->put('products', $products); - - return redirect()->route('cart.index'); - } - - public function delete(Request $request) - { - $request->session()->forget('products'); - return back(); - } - - public function purchase(Request $request) - { - $productsInSession = $request->session()->get("products"); - if ($productsInSession) { - $userId = Auth::user()->getId(); - $order = new Order(); - $order->setUserId($userId); - $order->setTotal(0); - $order->save(); - - $total = 0; - $productsInCart = Product::findMany(array_keys($productsInSession)); - foreach ($productsInCart as $product) { - $quantity = $productsInSession[$product->getId()]; - $item = new Item(); - $item->setQuantity($quantity); - $item->setPrice($product->getPrice()); - $item->setProductId($product->getId()); - $item->setOrderId($order->getId()); - $item->save(); - $total = $total + ($product->getPrice()*$quantity); - } - $order->setTotal($total); - $order->save(); - - $newBalance = Auth::user()->getBalance() - $total; - Auth::user()->setBalance($newBalance); - Auth::user()->save(); - - $request->session()->forget('products'); - - $viewData = []; - $viewData["title"] = "Purchase - Online Store"; - $viewData["subtitle"] = "Purchase Status"; - $viewData["order"] = $order; - return view('cart.purchase')->with("viewData", $viewData); - } else { - return redirect()->route('cart.index'); - } - } -} diff --git a/Chapter27/onlineStore/app/Http/Controllers/Controller.php b/Chapter27/onlineStore/app/Http/Controllers/Controller.php deleted file mode 100644 index a0a2a8a..0000000 --- a/Chapter27/onlineStore/app/Http/Controllers/Controller.php +++ /dev/null @@ -1,13 +0,0 @@ -with("viewData", $viewData); - } - - public function about() - { - $viewData = []; - $viewData["title"] = "About us - Online Store"; - $viewData["subtitle"] = "About us"; - $viewData["description"] = "This is an about page ..."; - $viewData["author"] = "Developed by: Your Name"; - return view('home.about')->with("viewData", $viewData); - } -} diff --git a/Chapter27/onlineStore/app/Http/Controllers/ProductController.php b/Chapter27/onlineStore/app/Http/Controllers/ProductController.php deleted file mode 100644 index d27a3a3..0000000 --- a/Chapter27/onlineStore/app/Http/Controllers/ProductController.php +++ /dev/null @@ -1,29 +0,0 @@ -with("viewData", $viewData); - } - - public function show($id) - { - $viewData = []; - $product = Product::findOrFail($id); - $viewData["title"] = $product->getName()." - Online Store"; - $viewData["subtitle"] = $product->getName()." - Product information"; - $viewData["product"] = $product; - return view('product.show')->with("viewData", $viewData); - } -} diff --git a/Chapter27/onlineStore/app/Http/Kernel.php b/Chapter27/onlineStore/app/Http/Kernel.php deleted file mode 100644 index c10d1c5..0000000 --- a/Chapter27/onlineStore/app/Http/Kernel.php +++ /dev/null @@ -1,68 +0,0 @@ - - */ - protected $middleware = [ - // \App\Http\Middleware\TrustHosts::class, - \App\Http\Middleware\TrustProxies::class, - \Fruitcake\Cors\HandleCors::class, - \App\Http\Middleware\PreventRequestsDuringMaintenance::class, - \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, - \App\Http\Middleware\TrimStrings::class, - \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, - ]; - - /** - * The application's route middleware groups. - * - * @var array> - */ - protected $middlewareGroups = [ - 'web' => [ - \App\Http\Middleware\EncryptCookies::class, - \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, - \Illuminate\Session\Middleware\StartSession::class, - // \Illuminate\Session\Middleware\AuthenticateSession::class, - \Illuminate\View\Middleware\ShareErrorsFromSession::class, - \App\Http\Middleware\VerifyCsrfToken::class, - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - - 'api' => [ - // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, - 'throttle:api', - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - ]; - - /** - * The application's route middleware. - * - * These middleware may be assigned to groups or used individually. - * - * @var array - */ - protected $routeMiddleware = [ - 'auth' => \App\Http\Middleware\Authenticate::class, - 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::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, - 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, - 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, - 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, - 'admin' => \App\Http\Middleware\AdminAuthMiddleware::class, - ]; -} diff --git a/Chapter27/onlineStore/app/Http/Middleware/AdminAuthMiddleware.php b/Chapter27/onlineStore/app/Http/Middleware/AdminAuthMiddleware.php deleted file mode 100644 index 6e5306b..0000000 --- a/Chapter27/onlineStore/app/Http/Middleware/AdminAuthMiddleware.php +++ /dev/null @@ -1,26 +0,0 @@ -getRole() == 'admin') { - return $next($request); - } else { - return redirect()->route('home.index'); - } - } -} diff --git a/Chapter27/onlineStore/app/Http/Middleware/Authenticate.php b/Chapter27/onlineStore/app/Http/Middleware/Authenticate.php deleted file mode 100644 index 704089a..0000000 --- a/Chapter27/onlineStore/app/Http/Middleware/Authenticate.php +++ /dev/null @@ -1,21 +0,0 @@ -expectsJson()) { - return route('login'); - } - } -} diff --git a/Chapter27/onlineStore/app/Http/Middleware/EncryptCookies.php b/Chapter27/onlineStore/app/Http/Middleware/EncryptCookies.php deleted file mode 100644 index 867695b..0000000 --- a/Chapter27/onlineStore/app/Http/Middleware/EncryptCookies.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter27/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/Chapter27/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php deleted file mode 100644 index 74cbd9a..0000000 --- a/Chapter27/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter27/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php b/Chapter27/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php deleted file mode 100644 index a2813a0..0000000 --- a/Chapter27/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php +++ /dev/null @@ -1,32 +0,0 @@ -check()) { - return redirect(RouteServiceProvider::HOME); - } - } - - return $next($request); - } -} diff --git a/Chapter27/onlineStore/app/Http/Middleware/TrimStrings.php b/Chapter27/onlineStore/app/Http/Middleware/TrimStrings.php deleted file mode 100644 index 88cadca..0000000 --- a/Chapter27/onlineStore/app/Http/Middleware/TrimStrings.php +++ /dev/null @@ -1,19 +0,0 @@ - - */ - protected $except = [ - 'current_password', - 'password', - 'password_confirmation', - ]; -} diff --git a/Chapter27/onlineStore/app/Http/Middleware/TrustHosts.php b/Chapter27/onlineStore/app/Http/Middleware/TrustHosts.php deleted file mode 100644 index 7186414..0000000 --- a/Chapter27/onlineStore/app/Http/Middleware/TrustHosts.php +++ /dev/null @@ -1,20 +0,0 @@ - - */ - public function hosts() - { - return [ - $this->allSubdomainsOfApplicationUrl(), - ]; - } -} diff --git a/Chapter27/onlineStore/app/Http/Middleware/TrustProxies.php b/Chapter27/onlineStore/app/Http/Middleware/TrustProxies.php deleted file mode 100644 index 3391630..0000000 --- a/Chapter27/onlineStore/app/Http/Middleware/TrustProxies.php +++ /dev/null @@ -1,28 +0,0 @@ -|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/Chapter27/onlineStore/app/Http/Middleware/VerifyCsrfToken.php b/Chapter27/onlineStore/app/Http/Middleware/VerifyCsrfToken.php deleted file mode 100644 index 9e86521..0000000 --- a/Chapter27/onlineStore/app/Http/Middleware/VerifyCsrfToken.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter27/onlineStore/app/Models/Item.php b/Chapter27/onlineStore/app/Models/Item.php deleted file mode 100644 index 8d19619..0000000 --- a/Chapter27/onlineStore/app/Models/Item.php +++ /dev/null @@ -1,133 +0,0 @@ -attributes['id'] - int - contains the item primary key (id) - * $this->attributes['quantity'] - int - contains the item quantity - * $this->attributes['price'] - int - contains the item price - * $this->attributes['order_id'] - int - contains the referenced order id - * $this->attributes['product_id'] - int - contains the referenced product id - * $this->attributes['created_at'] - timestamp - contains the item creation date - * $this->attributes['updated_at'] - timestamp - contains the item update date - * $this->order - Order - contains the associated Order - * $this->product - Product - contains the associated Product - */ - - public static function validate($request) - { - $request->validate([ - "price" => "required|numeric|gt:0", - "quantity" => "required|numeric|gt:0", - "product_id" => "required|exists:products,id", - "order_id" => "required|exists:orders,id", - ]); - } - - public function getId() - { - return $this->attributes['id']; - } - - public function setId($id) - { - $this->attributes['id'] = $id; - } - - public function getQuantity() - { - return $this->attributes['quantity']; - } - - public function setQuantity($quantity) - { - $this->attributes['quantity'] = $quantity; - } - - public function getPrice() - { - return $this->attributes['price']; - } - - public function setPrice($price) - { - $this->attributes['price'] = $price; - } - - public function getOrderId() - { - return $this->attributes['order_id']; - } - - public function setOrderId($orderId) - { - $this->attributes['order_id'] = $orderId; - } - - public function getProductId() - { - return $this->attributes['product_id']; - } - - public function setProductId($productId) - { - $this->attributes['product_id'] = $productId; - } - - public function getCreatedAt() - { - return $this->attributes['created_at']; - } - - public function setCreatedAt($createdAt) - { - $this->attributes['created_at'] = $createdAt; - } - - public function getUpdatedAt() - { - return $this->attributes['updated_at']; - } - - public function setUpdatedAt($updatedAt) - { - $this->attributes['updated_at'] = $updatedAt; - } - - public function order() - { - return $this->belongsTo(Order::class); - } - - public function getOrder() - { - return $this->order; - } - - public function setOrder($order) - { - $this->order = $order; - } - - public function product() - { - return $this->belongsTo(Product::class); - } - - public function getProduct() - { - return $this->product; - } - - public function setProduct($product) - { - $this->product = $product; - } -} diff --git a/Chapter27/onlineStore/app/Models/Order.php b/Chapter27/onlineStore/app/Models/Order.php deleted file mode 100644 index 28ce6ad..0000000 --- a/Chapter27/onlineStore/app/Models/Order.php +++ /dev/null @@ -1,109 +0,0 @@ -attributes['id'] - int - contains the order primary key (id) - * $this->attributes['total'] - string - contains the order name - * $this->attributes['user_id'] - int - contains the referenced user id - * $this->attributes['created_at'] - timestamp - contains the order creation date - * $this->attributes['updated_at'] - timestamp - contains the order update date - * $this->user - User - contains the associated User - * $this->items - Item[] - contains the associated items - */ - - public static function validate($request) - { - $request->validate([ - "total" => "required|numeric", - "user_id" => "required|exists:users,id", - ]); - } - - public function getId() - { - return $this->attributes['id']; - } - - public function setId($id) - { - $this->attributes['id'] = $id; - } - - public function getTotal() - { - return $this->attributes['total']; - } - - public function setTotal($total) - { - $this->attributes['total'] = $total; - } - - public function getUserId() - { - return $this->attributes['user_id']; - } - - public function setUserId($userId) - { - $this->attributes['user_id'] = $userId; - } - - public function getCreatedAt() - { - return $this->attributes['created_at']; - } - - public function setCreatedAt($createdAt) - { - $this->attributes['created_at'] = $createdAt; - } - - public function getUpdatedAt() - { - return $this->attributes['updated_at']; - } - - public function setUpdatedAt($updatedAt) - { - $this->attributes['updated_at'] = $updatedAt; - } - - public function user() - { - return $this->belongsTo(User::class); - } - - public function getUser() - { - return $this->user; - } - - public function setUser($user) - { - $this->user = $user; - } - - public function items() - { - return $this->hasMany(Item::class); - } - - public function getItems() - { - return $this->items; - } - - public function setItems($items) - { - $this->items = $items; - } -} diff --git a/Chapter27/onlineStore/app/Models/Product.php b/Chapter27/onlineStore/app/Models/Product.php deleted file mode 100644 index fb8585a..0000000 --- a/Chapter27/onlineStore/app/Models/Product.php +++ /dev/null @@ -1,126 +0,0 @@ -attributes['id'] - int - contains the product primary key (id) - * $this->attributes['name'] - string - contains the product name - * $this->attributes['description'] - string - contains the product description - * $this->attributes['image'] - string - contains the product image - * $this->attributes['price'] - int - contains the product price - * $this->attributes['created_at'] - timestamp - contains the product creation date - * $this->attributes['updated_at'] - timestamp - contains the product update date - * $this->items - Item[] - contains the associated items - */ - - public static function validate($request) - { - $request->validate([ - "name" => "required|max:255", - "description" => "required", - "price" => "required|numeric|gt:0", - 'image' => 'image', - ]); - } - - public static function sumPricesByQuantities($products, $productsInSession) - { - $total = 0; - foreach ($products as $product) { - $total = $total + ($product->getPrice()*$productsInSession[$product->getId()]); - } - - return $total; - } - - public function getId() - { - return $this->attributes['id']; - } - - public function setId($id) - { - $this->attributes['id'] = $id; - } - - public function getName() - { - return $this->attributes['name']; - } - - public function setName($name) - { - $this->attributes['name'] = $name; - } - - public function getDescription() - { - return $this->attributes['description']; - } - - public function setDescription($description) - { - $this->attributes['description'] = $description; - } - - public function getImage() - { - return $this->attributes['image']; - } - - public function setImage($image) - { - $this->attributes['image'] = $image; - } - - public function getPrice() - { - return $this->attributes['price']; - } - - public function setPrice($price) - { - $this->attributes['price'] = $price; - } - - public function getCreatedAt() - { - return $this->attributes['created_at']; - } - - public function setCreatedAt($createdAt) - { - $this->attributes['created_at'] = $createdAt; - } - - public function getUpdatedAt() - { - return $this->attributes['updated_at']; - } - - public function setUpdatedAt($updatedAt) - { - $this->attributes['updated_at'] = $updatedAt; - } - - public function items() - { - return $this->hasMany(Item::class); - } - - public function getItems() - { - return $this->items; - } - - public function setItems($items) - { - $this->items = $items; - } -} diff --git a/Chapter27/onlineStore/app/Models/User.php b/Chapter27/onlineStore/app/Models/User.php deleted file mode 100644 index 89aa45f..0000000 --- a/Chapter27/onlineStore/app/Models/User.php +++ /dev/null @@ -1,156 +0,0 @@ -attributes['id'] - int - contains the user primary key (id) - * $this->attributes['name'] - string - contains the user name - * $this->attributes['email'] - string - contains the user email - * $this->attributes['email_verified_at'] - timestamp - contains the user email verification date - * $this->attributes['password'] - string - contains the user password - * $this->attributes['remember_token'] - string - contains the user password - * $this->attributes['role'] - string - contains the user role (client or admin) - * $this->attributes['balance'] - int - contains the user balance - * $this->attributes['created_at'] - timestamp - contains the user creation date - * $this->attributes['updated_at'] - timestamp - contains the user update date - * $this->orders - Order[] - contains the associated orders - */ - - /** - * The attributes that are mass assignable. - * - * @var array - */ - protected $fillable = [ - 'name', - 'email', - 'password', - 'balance', - ]; - - /** - * 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', - ]; - - public function getId() - { - return $this->attributes['id']; - } - - public function setId($id) - { - $this->attributes['id'] = $id; - } - - public function getName() - { - return $this->attributes['name']; - } - - public function setName($name) - { - $this->attributes['name'] = $name; - } - - public function getEmail() - { - return $this->attributes['email']; - } - - public function setEmail($email) - { - $this->attributes['email'] = $email; - } - - public function getPassword() - { - return $this->attributes['password']; - } - - public function setPassword($password) - { - $this->attributes['password'] = $password; - } - - public function getRole() - { - return $this->attributes['role']; - } - - public function setRole($role) - { - $this->attributes['role'] = $role; - } - - public function getBalance() - { - return $this->attributes['balance']; - } - - public function setBalance($balance) - { - $this->attributes['balance'] = $balance; - } - - public function getCreatedAt() - { - return $this->attributes['created_at']; - } - - public function setCreatedAt($createdAt) - { - $this->attributes['created_at'] = $createdAt; - } - - public function getUpdatedAt() - { - return $this->attributes['updated_at']; - } - - public function setUpdatedAt($updatedAt) - { - $this->attributes['updated_at'] = $updatedAt; - } - - public function orders() - { - return $this->hasMany(Order::class); - } - - public function getOrders() - { - return $this->orders; - } - - public function setOrders($orders) - { - $this->orders = $orders; - } -} diff --git a/Chapter27/onlineStore/app/Providers/AppServiceProvider.php b/Chapter27/onlineStore/app/Providers/AppServiceProvider.php deleted file mode 100644 index ee8ca5b..0000000 --- a/Chapter27/onlineStore/app/Providers/AppServiceProvider.php +++ /dev/null @@ -1,28 +0,0 @@ - - */ - protected $policies = [ - // 'App\Models\Model' => 'App\Policies\ModelPolicy', - ]; - - /** - * Register any authentication / authorization services. - * - * @return void - */ - public function boot() - { - $this->registerPolicies(); - - // - } -} diff --git a/Chapter27/onlineStore/app/Providers/BroadcastServiceProvider.php b/Chapter27/onlineStore/app/Providers/BroadcastServiceProvider.php deleted file mode 100644 index 395c518..0000000 --- a/Chapter27/onlineStore/app/Providers/BroadcastServiceProvider.php +++ /dev/null @@ -1,21 +0,0 @@ -> - */ - protected $listen = [ - Registered::class => [ - SendEmailVerificationNotification::class, - ], - ]; - - /** - * Register any events for your application. - * - * @return void - */ - public function boot() - { - // - } -} diff --git a/Chapter27/onlineStore/app/Providers/RouteServiceProvider.php b/Chapter27/onlineStore/app/Providers/RouteServiceProvider.php deleted file mode 100644 index fb766eb..0000000 --- a/Chapter27/onlineStore/app/Providers/RouteServiceProvider.php +++ /dev/null @@ -1,63 +0,0 @@ -configureRateLimiting(); - - $this->routes(function () { - Route::prefix('api') - ->middleware('api') - ->namespace($this->namespace) - ->group(base_path('routes/api.php')); - - Route::middleware('web') - ->namespace($this->namespace) - ->group(base_path('routes/web.php')); - }); - } - - /** - * Configure the rate limiters for the application. - * - * @return void - */ - protected function configureRateLimiting() - { - RateLimiter::for('api', function (Request $request) { - return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); - }); - } -} diff --git a/Chapter27/onlineStore/artisan b/Chapter27/onlineStore/artisan deleted file mode 100644 index 67a3329..0000000 --- a/Chapter27/onlineStore/artisan +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env php -make(Illuminate\Contracts\Console\Kernel::class); - -$status = $kernel->handle( - $input = new Symfony\Component\Console\Input\ArgvInput, - new Symfony\Component\Console\Output\ConsoleOutput -); - -/* -|-------------------------------------------------------------------------- -| Shutdown The Application -|-------------------------------------------------------------------------- -| -| Once Artisan has finished running, we will fire off the shutdown events -| so that any final work may be done by the application before we shut -| down the process. This is the last thing to happen to the request. -| -*/ - -$kernel->terminate($input, $status); - -exit($status); diff --git a/Chapter27/onlineStore/bootstrap/app.php b/Chapter27/onlineStore/bootstrap/app.php deleted file mode 100644 index 037e17d..0000000 --- a/Chapter27/onlineStore/bootstrap/app.php +++ /dev/null @@ -1,55 +0,0 @@ -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/Chapter27/onlineStore/bootstrap/cache/.gitignore b/Chapter27/onlineStore/bootstrap/cache/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter27/onlineStore/bootstrap/cache/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter27/onlineStore/composer.json b/Chapter27/onlineStore/composer.json deleted file mode 100644 index a9459b5..0000000 --- a/Chapter27/onlineStore/composer.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "name": "laravel/laravel", - "type": "project", - "description": "The Laravel Framework.", - "keywords": ["framework", "laravel"], - "license": "MIT", - "require": { - "php": "^8.0", - "fruitcake/laravel-cors": "^2.0.5", - "guzzlehttp/guzzle": "^7.2", - "laravel/framework": "^9.0", - "laravel/sanctum": "^2.14", - "laravel/tinker": "^2.7", - "laravel/ui": "^3.4" - }, - "require-dev": { - "fakerphp/faker": "^1.9.1", - "laravel/sail": "^1.0.1", - "mockery/mockery": "^1.4.4", - "nunomaduro/collision": "^6.1", - "phpunit/phpunit": "^9.5.10", - "spatie/laravel-ignition": "^1.0", - "squizlabs/php_codesniffer": "^3.6" - }, - "autoload": { - "psr-4": { - "App\\": "app/", - "Database\\Factories\\": "database/factories/", - "Database\\Seeders\\": "database/seeders/" - } - }, - "autoload-dev": { - "psr-4": { - "Tests\\": "tests/" - } - }, - "scripts": { - "post-autoload-dump": [ - "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", - "@php artisan package:discover --ansi" - ], - "post-update-cmd": [ - "@php artisan vendor:publish --tag=laravel-assets --ansi --force" - ], - "post-root-package-install": [ - "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" - ], - "post-create-project-cmd": [ - "@php artisan key:generate --ansi" - ] - }, - "extra": { - "laravel": { - "dont-discover": [] - } - }, - "config": { - "optimize-autoloader": true, - "preferred-install": "dist", - "sort-packages": true - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/Chapter27/onlineStore/composer.lock b/Chapter27/onlineStore/composer.lock deleted file mode 100644 index 78c86f1..0000000 --- a/Chapter27/onlineStore/composer.lock +++ /dev/null @@ -1,7921 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "d299b51f0f07ec600b4949240f4664af", - "packages": [ - { - "name": "asm89/stack-cors", - "version": "v2.1.1", - "source": { - "type": "git", - "url": "https://github.com/asm89/stack-cors.git", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4|^5|^6" - }, - "require-dev": { - "phpunit/phpunit": "^7|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "psr-4": { - "Asm89\\Stack\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alexander", - "email": "iam.asm89@gmail.com" - } - ], - "description": "Cross-origin resource sharing library and stack middleware", - "homepage": "https://github.com/asm89/stack-cors", - "keywords": [ - "cors", - "stack" - ], - "support": { - "issues": "https://github.com/asm89/stack-cors/issues", - "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" - }, - "time": "2022-01-18T09:12:03+00:00" - }, - { - "name": "brick/math", - "version": "0.9.3", - "source": { - "type": "git", - "url": "https://github.com/brick/math.git", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", - "vimeo/psalm": "4.9.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Brick\\Math\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Arbitrary-precision arithmetic library", - "keywords": [ - "Arbitrary-precision", - "BigInteger", - "BigRational", - "arithmetic", - "bigdecimal", - "bignum", - "brick", - "math" - ], - "support": { - "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.9.3" - }, - "funding": [ - { - "url": "https://github.com/BenMorel", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/brick/math", - "type": "tidelift" - } - ], - "time": "2021-08-15T20:50:18+00:00" - }, - { - "name": "dflydev/dot-access-data", - "version": "v3.0.1", - "source": { - "type": "git", - "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c", - "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": "^3.14" - }, - "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.1" - }, - "time": "2021-08-13T13:06:58+00:00" - }, - { - "name": "doctrine/inflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "vimeo/psalm": "^4.10" - }, - "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.4" - }, - "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": "2021-10-22T20:16:43+00:00" - }, - { - "name": "doctrine/lexer", - "version": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" - } - }, - "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/1.2.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%2Flexer", - "type": "tidelift" - } - ], - "time": "2022-01-12T08:27:12+00:00" - }, - { - "name": "dragonmantank/cron-expression", - "version": "v3.3.1", - "source": { - "type": "git", - "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "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.1" - }, - "funding": [ - { - "url": "https://github.com/dragonmantank", - "type": "github" - } - ], - "time": "2022-01-18T15:43:28+00:00" - }, - { - "name": "egulias/email-validator", - "version": "3.1.2", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ee0db30118f661fb166bcffbf5d82032df484697", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^1.2", - "php": ">=7.2", - "symfony/polyfill-intl-idn": "^1.15" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^8.5.8|^9.3.3", - "vimeo/psalm": "^4" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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/3.1.2" - }, - "funding": [ - { - "url": "https://github.com/egulias", - "type": "github" - } - ], - "time": "2021-10-11T09:18:27+00:00" - }, - { - "name": "fruitcake/laravel-cors", - "version": "v2.0.5", - "source": { - "type": "git", - "url": "https://github.com/fruitcake/laravel-cors.git", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "shasum": "" - }, - "require": { - "asm89/stack-cors": "^2.0.1", - "illuminate/contracts": "^6|^7|^8|^9", - "illuminate/support": "^6|^7|^8|^9", - "php": ">=7.2", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4.3.4|^5|^6" - }, - "require-dev": { - "laravel/framework": "^6|^7.24|^8", - "orchestra/testbench-dusk": "^4|^5|^6|^7", - "phpunit/phpunit": "^6|^7|^8|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - }, - "laravel": { - "providers": [ - "Fruitcake\\Cors\\CorsServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Fruitcake\\Cors\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fruitcake", - "homepage": "https://fruitcake.nl" - }, - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", - "keywords": [ - "api", - "cors", - "crossdomain", - "laravel" - ], - "support": { - "issues": "https://github.com/fruitcake/laravel-cors/issues", - "source": "https://github.com/fruitcake/laravel-cors/tree/v2.0.5" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "time": "2022-01-03T14:53:04+00:00" - }, - { - "name": "graham-campbell/result-type", - "version": "v1.0.4", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "0690bde05318336c7221785f2a932467f98b64ca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/0690bde05318336c7221785f2a932467f98b64ca", - "reference": "0690bde05318336c7221785f2a932467f98b64ca", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "phpoption/phpoption": "^1.8" - }, - "require-dev": { - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", - "type": "tidelift" - } - ], - "time": "2021-11-21T21:41:47+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "7.4.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.8.3 || ^2.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.4.1", - "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.5 || ^9.3.5", - "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": { - "branch-alias": { - "dev-master": "7.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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.4.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": "2021-12-06T18:43:05+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "1.5.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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/1.5.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "time": "2021-10-22T20:56:57+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.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.4.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.8 || ^9.3.10" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "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.1.0" - }, - "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": "2021-10-06T17:43:30+00:00" - }, - { - "name": "laravel/framework", - "version": "v9.0.1", - "source": { - "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "shasum": "" - }, - "require": { - "doctrine/inflector": "^2.0", - "dragonmantank/cron-expression": "^3.1", - "egulias/email-validator": "^3.1", - "ext-mbstring": "*", - "ext-openssl": "*", - "laravel/serializable-closure": "^1.0", - "league/commonmark": "^2.2", - "league/flysystem": "^3.0", - "monolog/monolog": "^2.0", - "nesbot/carbon": "^2.53.1", - "php": "^8.0.2", - "psr/container": "^1.1.1|^2.0.1", - "psr/log": "^1.0|^2.0|^3.0", - "psr/simple-cache": "^1.0|^2.0|^3.0", - "ramsey/uuid": "^4.2.2", - "symfony/console": "^6.0", - "symfony/error-handler": "^6.0", - "symfony/finder": "^6.0", - "symfony/http-foundation": "^6.0", - "symfony/http-kernel": "^6.0", - "symfony/mailer": "^6.0", - "symfony/mime": "^6.0", - "symfony/process": "^6.0", - "symfony/routing": "^6.0", - "symfony/var-dumper": "^6.0", - "tijsverkoyen/css-to-inline-styles": "^2.2.2", - "vlucas/phpdotenv": "^5.4.1", - "voku/portable-ascii": "^2.0" - }, - "conflict": { - "tightenco/collect": "<5.5.33" - }, - "provide": { - "psr/container-implementation": "1.1|2.0", - "psr/simple-cache-implementation": "1.0|2.0|3.0" - }, - "replace": { - "illuminate/auth": "self.version", - "illuminate/broadcasting": "self.version", - "illuminate/bus": "self.version", - "illuminate/cache": "self.version", - "illuminate/collections": "self.version", - "illuminate/conditionable": "self.version", - "illuminate/config": "self.version", - "illuminate/console": "self.version", - "illuminate/container": "self.version", - "illuminate/contracts": "self.version", - "illuminate/cookie": "self.version", - "illuminate/database": "self.version", - "illuminate/encryption": "self.version", - "illuminate/events": "self.version", - "illuminate/filesystem": "self.version", - "illuminate/hashing": "self.version", - "illuminate/http": "self.version", - "illuminate/log": "self.version", - "illuminate/macroable": "self.version", - "illuminate/mail": "self.version", - "illuminate/notifications": "self.version", - "illuminate/pagination": "self.version", - "illuminate/pipeline": "self.version", - "illuminate/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": { - "aws/aws-sdk-php": "^3.198.1", - "doctrine/dbal": "^2.13.3|^3.1.4", - "fakerphp/faker": "^1.9.2", - "guzzlehttp/guzzle": "^7.2", - "league/flysystem-aws-s3-v3": "^3.0", - "league/flysystem-ftp": "^3.0", - "league/flysystem-sftp-v3": "^3.0", - "mockery/mockery": "^1.4.4", - "orchestra/testbench-core": "^7.0", - "pda/pheanstalk": "^4.0", - "phpstan/phpstan": "^1.0", - "phpunit/phpunit": "^9.5.8", - "predis/predis": "^1.1.9", - "symfony/amazon-mailer": "^6.0", - "symfony/cache": "^6.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.198.1).", - "brianium/paratest": "Required to run tests in parallel (^6.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", - "ext-bcmath": "Required to use the multiple_of validation rule.", - "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.", - "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.2).", - "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-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", - "mockery/mockery": "Required to use mocking (^1.4.4).", - "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).", - "predis/predis": "Required to use the predis connector (^1.1.9).", - "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.0).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^6.0).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.0).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.0).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.0).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.x-dev" - } - }, - "autoload": { - "files": [ - "src/Illuminate/Collections/helpers.php", - "src/Illuminate/Events/functions.php", - "src/Illuminate/Foundation/helpers.php", - "src/Illuminate/Support/helpers.php" - ], - "psr-4": { - "Illuminate\\": "src/Illuminate/", - "Illuminate\\Support\\": [ - "src/Illuminate/Macroable/", - "src/Illuminate/Collections/", - "src/Illuminate/Conditionable/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Laravel Framework.", - "homepage": "https://laravel.com", - "keywords": [ - "framework", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2022-02-09T15:00:05+00:00" - }, - { - "name": "laravel/sanctum", - "version": "v2.14.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/sanctum.git", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/0647a87140c7522e75826cffcadb3ad6e01f71e9", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/contracts": "^6.9|^7.0|^8.0|^9.0", - "illuminate/database": "^6.9|^7.0|^8.0|^9.0", - "illuminate/support": "^6.9|^7.0|^8.0|^9.0", - "php": "^7.2|^8.0" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0", - "phpunit/phpunit": "^8.0|^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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": "2022-01-12T15:07:43+00:00" - }, - { - "name": "laravel/serializable-closure", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/serializable-closure.git", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/65c9faf50d567b65d81764a44526545689e3fe63", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "pestphp/pest": "^1.18", - "phpstan/phpstan": "^0.12.98", - "symfony/var-dumper": "^5.3" - }, - "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": "2022-02-01T16:29:39+00:00" - }, - { - "name": "laravel/tinker", - "version": "v2.7.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/tinker.git", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/5f2f9815b7631b9f586a3de7933c25f9327d4073", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073", - "shasum": "" - }, - "require": { - "illuminate/console": "^6.0|^7.0|^8.0|^9.0", - "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.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", - "phpunit/phpunit": "^8.5.8|^9.3.3" - }, - "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.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.7.0" - }, - "time": "2022-01-10T08:52:49+00:00" - }, - { - "name": "laravel/ui", - "version": "v3.4.3", - "source": { - "type": "git", - "url": "https://github.com/laravel/ui.git", - "reference": "64a0f43492c00780b2261c56cd7007a4f370d95b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/ui/zipball/64a0f43492c00780b2261c56cd7007a4f370d95b", - "reference": "64a0f43492c00780b2261c56cd7007a4f370d95b", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.42|^9.0", - "illuminate/filesystem": "^8.42|^9.0", - "illuminate/support": "^8.82|^9.0", - "illuminate/validation": "^8.42|^9.0", - "php": "^7.3|^8.0" - }, - "require-dev": { - "orchestra/testbench": "^6.23|^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - }, - "laravel": { - "providers": [ - "Laravel\\Ui\\UiServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Laravel\\Ui\\": "src/", - "Illuminate\\Foundation\\Auth\\": "auth-backend/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "Laravel UI utilities and presets.", - "keywords": [ - "laravel", - "ui" - ], - "support": { - "source": "https://github.com/laravel/ui/tree/v3.4.3" - }, - "time": "2022-02-08T14:19:32+00:00" - }, - { - "name": "league/commonmark", - "version": "2.2.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/commonmark.git", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "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.15" - }, - "require-dev": { - "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.0", - "commonmark/commonmark.js": "0.30.0", - "composer/package-versions-deprecated": "^1.8", - "erusev/parsedown": "^1.0", - "ext-json": "*", - "github/gfm": "0.29.0", - "michelf/php-markdown": "^1.4", - "phpstan/phpstan": "^0.12.88 || ^1.0.0", - "phpunit/phpunit": "^9.5.5", - "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", - "unleashedtech/php-coding-standard": "^3.1", - "vimeo/psalm": "^4.7.3" - }, - "suggest": { - "symfony/yaml": "v2.3+ required if using the Front Matter extension" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.3-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": "2022-01-25T14:37:33+00:00" - }, - { - "name": "league/config", - "version": "v1.1.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/config.git", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/config/zipball/a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^3.0.1", - "nette/schema": "^1.2", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.90", - "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": "2021-08-14T12:15:32+00:00" - }, - { - "name": "league/flysystem", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9f8b4260031bfef5497477da53dd57b2aaff0e06", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06", - "shasum": "" - }, - "require": { - "ext-json": "*", - "league/mime-type-detection": "^1.0.0", - "php": "^8.0.2" - }, - "conflict": { - "guzzlehttp/guzzle": "<7.0", - "guzzlehttp/ringphp": "<1.1.1", - "symfony/http-client": "<5.2" - }, - "require-dev": { - "async-aws/s3": "^1.5", - "async-aws/simple-s3": "^1.0", - "aws/aws-sdk-php": "^3.198.1", - "composer/semver": "^3.0", - "ext-fileinfo": "*", - "ext-ftp": "*", - "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.5", - "google/cloud-storage": "^1.23", - "phpseclib/phpseclib": "^2.0", - "phpstan/phpstan": "^0.12.26", - "phpunit/phpunit": "^9.5.11", - "sabre/dav": "^4.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.0.3" - }, - "funding": [ - { - "url": "https://offset.earth/frankdejonge", - "type": "custom" - }, - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2022-01-31T19:41:04+00:00" - }, - { - "name": "league/mime-type-detection", - "version": "1.9.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/aa70e813a6ad3d1558fc927863d47309b4c23e69", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.2", - "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" - }, - "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.9.0" - }, - "funding": [ - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2021-11-21T11:48:40+00:00" - }, - { - "name": "monolog/monolog", - "version": "2.3.5", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd4380d6fc37626e2f799f29d91195040137eba9", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "provide": { - "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7", - "graylog2/gelf-php": "^1.4.2", - "mongodb/mongodb": "^1.8", - "php-amqplib/php-amqplib": "~2.4 || ^3", - "php-console/php-console": "^3.1.3", - "phpspec/prophecy": "^1.6.1", - "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5", - "predis/predis": "^1.1", - "rollbar/rollbar": "^1.3", - "ruflin/elastica": ">=0.90@dev", - "swiftmailer/swiftmailer": "^5.3|^6.0" - }, - "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", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "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": "2.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/2.3.5" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" - } - ], - "time": "2021-10-01T21:08:31+00:00" - }, - { - "name": "nesbot/carbon", - "version": "2.56.0", - "source": { - "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1.8 || ^8.0", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "doctrine/dbal": "^2.0 || ^3.0", - "doctrine/orm": "^2.7", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "phpmd/phpmd": "^2.9", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.54 || ^1.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.14", - "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://opencollective.com/Carbon", - "type": "open_collective" - }, - { - "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", - "type": "tidelift" - } - ], - "time": "2022-01-21T17:08:38+00:00" - }, - { - "name": "nette/schema", - "version": "v1.2.2", - "source": { - "type": "git", - "url": "https://github.com/nette/schema.git", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/9a39cef03a5b34c7de64f551538cbba05c2be5df", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df", - "shasum": "" - }, - "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": ">=7.1 <8.2" - }, - "require-dev": { - "nette/tester": "^2.3 || ^2.4", - "phpstan/phpstan-nette": "^0.12", - "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.2" - }, - "time": "2021-10-15T11:40:02+00:00" - }, - { - "name": "nette/utils", - "version": "v3.2.7", - "source": { - "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/0af4e3de4df9f1543534beab255ccf459e7a2c99", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99", - "shasum": "" - }, - "require": { - "php": ">=7.2 <8.2" - }, - "conflict": { - "nette/di": "<3.0.6" - }, - "require-dev": { - "nette/tester": "~2.0", - "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.3" - }, - "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()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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 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/v3.2.7" - }, - "time": "2022-01-24T11:29:14+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.13.2", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", - "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.13.2" - }, - "time": "2021-11-30T19:35:32+00:00" - }, - { - "name": "phpoption/phpoption", - "version": "1.8.1", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-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.8.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", - "type": "tidelift" - } - ], - "time": "2021-12-04T23:24:31+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.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.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": "http://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/tree/master" - }, - "time": "2020-06-29T06:28:15+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.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": "http://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/master" - }, - "time": "2019-04-30T12:38:16+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.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": "http://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/master" - }, - "time": "2016-08-06T14:39: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.1", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "570292577277f06f590635381a7f761a6cf4f026" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/570292577277f06f590635381a7f761a6cf4f026", - "reference": "570292577277f06f590635381a7f761a6cf4f026", - "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" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "3.17.05.02" - }, - "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.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." - }, - "bin": [ - "bin/psysh" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "0.11.x-dev" - } - }, - "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.1" - }, - "time": "2022-01-03T13:58:38+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": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/ramsey/collection.git", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "shasum": "" - }, - "require": { - "php": "^7.3 || ^8", - "symfony/polyfill-php81": "^1.23" - }, - "require-dev": { - "captainhook/captainhook": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "ergebnis/composer-normalize": "^2.6", - "fakerphp/faker": "^1.5", - "hamcrest/hamcrest-php": "^2", - "jangregor/phpstan-prophecy": "^0.8", - "mockery/mockery": "^1.3", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1", - "phpstan/phpstan": "^0.12.32", - "phpstan/phpstan-mockery": "^0.12.5", - "phpstan/phpstan-phpunit": "^0.12.11", - "phpunit/phpunit": "^8.5 || ^9", - "psy/psysh": "^0.10.4", - "slevomat/coding-standard": "^6.3", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.4" - }, - "type": "library", - "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/1.2.2" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "time": "2021-10-10T03:01:02+00:00" - }, - { - "name": "ramsey/uuid", - "version": "4.2.3", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "shasum": "" - }, - "require": { - "brick/math": "^0.8 || ^0.9", - "ext-json": "*", - "php": "^7.2 || ^8.0", - "ramsey/collection": "^1.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php80": "^1.14" - }, - "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", - "moontoast/math": "^1.1", - "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.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-mockery": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^8.5 || ^9", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" - }, - "suggest": { - "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-ctype": "Enables faster processing of character classification using ctype functions.", - "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": { - "branch-alias": { - "dev-main": "4.x-dev" - }, - "captainhook": { - "force-install": true - } - }, - "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "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.2.3" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2021-09-25T23:10:38+00:00" - }, - { - "name": "symfony/console", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/22e8efd019c3270c4f79376234a3f8752cd25490", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.4|^6.0" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/css-selector", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/1955d595c12c111629cc814d3f2a2ff13580508a", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a", - "shasum": "" - }, - "require": { - "php": ">=8.0.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/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-11-01T23:48:49+00:00" - }, - { - "name": "symfony/error-handler", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/20343b3bad7ebafa38138ddcb97290a24722b57b", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" - }, - "bin": [ - "Resources/bin/patch-type-declarations" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to manage errors and ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6472ea2dd415e925b90ca82be64b8bc6157f3934", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/event-dispatcher-contracts": "^2|^3" - }, - "conflict": { - "symfony/dependency-injection": "<5.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^5.4|^6.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/aa5422287b75594b90ee9cd807caf8f0df491385", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/event-dispatcher": "^1" - }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-07-15T12:33:35+00:00" - }, - { - "name": "symfony/finder", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/8661b74dbabc23223f38c9b99d3f8ade71170430", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ad157299ced81a637fade1efcadd688d6deba5c1", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1" - }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/cache": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0" - }, - "suggest": { - "symfony/mime": "To use the file extension guesser" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v6.0.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/error-handler": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", - "symfony/twig-bridge": "<5.4", - "symfony/validator": "<5.4", - "twig/twig": "<2.13" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/process": "^5.4|^6.0", - "symfony/routing": "^5.4|^6.0", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-29T18:12:46+00:00" - }, - { - "name": "symfony/mailer", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mailer.git", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "shasum": "" - }, - "require": { - "egulias/email-validator": "^2.1.10|^3", - "php": ">=8.0.2", - "psr/event-dispatcher": "^1", - "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3" - }, - "conflict": { - "symfony/http-kernel": "<5.4" - }, - "require-dev": { - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/messenger": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/mime", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/2cd9601efd040e56f43360daa68f3c6b0534923a", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "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" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "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.24.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": "2021-10-20T20:35:02+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-11-23T21:10:46+00:00" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44", - "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.23-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.24.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": "2021-09-14T14:02:44+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.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": "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.24.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": "2021-11-30T18:21:41+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-05-27T09:17:38+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:33+00:00" - }, - { - "name": "symfony/polyfill-php81", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:11+00:00" - }, - { - "name": "symfony/process", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/298ed357274c1868c20a0061df256a1250a6c4af", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/routing", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/yaml": "<5.4" - }, - "require-dev": { - "doctrine/annotations": "^1.12", - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/36715ebf9fb9db73db0cb24263c79077c6fe8603", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/container": "^2.0" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "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.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": "2021-11-04T17:53:12+00:00" - }, - { - "name": "symfony/string", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/522144f0c4c004c80d56fa47e40e17028e2eefc2", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.0" - }, - "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/translation-contracts": "^2.0|^3.0", - "symfony/var-exporter": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "files": [ - "Resources/functions.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 an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/translation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/71bb15335798f8c4da110911bcf2d2fead7a430d", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.3|^3.0" - }, - "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" - }, - "provide": { - "symfony/translation-implementation": "2.3|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-07T00:29:03+00:00" - }, - { - "name": "symfony/translation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "suggest": { - "symfony/translation-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - } - }, - "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.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": "2021-09-07T12:43:40+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7b701676fc64f9ef11f9b4870f16b48f66be4834", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<5.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-17T16:30:44+00:00" - }, - { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.4", - "source": { - "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" - } - ], - "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", - "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "support": { - "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" - }, - "time": "2021-12-08T09:12:39+00:00" - }, - { - "name": "vlucas/phpdotenv", - "version": "v5.4.1", - "source": { - "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", - "shasum": "" - }, - "require": { - "ext-pcre": "*", - "graham-campbell/result-type": "^1.0.2", - "php": "^7.1.3 || ^8.0", - "phpoption/phpoption": "^1.8", - "symfony/polyfill-ctype": "^1.23", - "symfony/polyfill-mbstring": "^1.23.1", - "symfony/polyfill-php80": "^1.23.1" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" - }, - "suggest": { - "ext-filter": "Required to use the boolean validator." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.4-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.4.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", - "type": "tidelift" - } - ], - "time": "2021-12-12T23:22:04+00:00" - }, - { - "name": "voku/portable-ascii", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/voku/portable-ascii.git", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/9bd89e83cecdf8c37b64909454249eaed98b2c89", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89", - "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.0" - }, - "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-01-24T18:59:03+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "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.10.0" - }, - "time": "2021-03-09T10:59:23+00:00" - } - ], - "packages-dev": [ - { - "name": "doctrine/instantiator", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.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%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2020-11-10T18:47:58+00:00" - }, - { - "name": "facade/ignition-contracts", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/facade/ignition-contracts.git", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^v2.15.8", - "phpunit/phpunit": "^9.3.11", - "vimeo/psalm": "^3.17.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Facade\\IgnitionContracts\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://flareapp.io", - "role": "Developer" - } - ], - "description": "Solution contracts for Ignition", - "homepage": "https://github.com/facade/ignition-contracts", - "keywords": [ - "contracts", - "flare", - "ignition" - ], - "support": { - "issues": "https://github.com/facade/ignition-contracts/issues", - "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" - }, - "time": "2020-10-16T08:27:54+00:00" - }, - { - "name": "fakerphp/faker", - "version": "v1.19.0", - "source": { - "type": "git", - "url": "https://github.com/FakerPHP/Faker.git", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^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": "*", - "symfony/phpunit-bridge": "^4.4 || ^5.2" - }, - "suggest": { - "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", - "ext-curl": "Required by Faker\\Provider\\Image to download images.", - "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", - "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.19-dev" - } - }, - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "François Zaninotto" - } - ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], - "support": { - "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0" - }, - "time": "2022-02-02T17:38:57+00:00" - }, - { - "name": "filp/whoops", - "version": "2.14.5", - "source": { - "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "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.14.5" - }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "time": "2022-01-07T12:00:00+00:00" - }, - { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "shasum": "" - }, - "require": { - "php": "^5.3|^7.0|^8.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" - }, - "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "classmap": [ - "hamcrest" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "This is the PHP port of Hamcrest Matchers", - "keywords": [ - "test" - ], - "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" - }, - "time": "2020-07-09T08:09:16+00:00" - }, - { - "name": "laravel/sail", - "version": "v1.13.2", - "source": { - "type": "git", - "url": "https://github.com/laravel/sail.git", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.0|^9.0", - "illuminate/contracts": "^8.0|^9.0", - "illuminate/support": "^8.0|^9.0", - "php": "^7.3|^8.0" - }, - "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": "2022-02-08T14:14:12+00:00" - }, - { - "name": "mockery/mockery", - "version": "1.5.0", - "source": { - "type": "git", - "url": "https://github.com/mockery/mockery.git", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "shasum": "" - }, - "require": { - "hamcrest/hamcrest-php": "^2.0.1", - "lib-pcre": ">=7.0", - "php": "^7.3 || ^8.0" - }, - "conflict": { - "phpunit/phpunit": "<8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-0": { - "Mockery": "library/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" - } - ], - "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": { - "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.5.0" - }, - "time": "2022-01-20T13:18:17+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.10.2", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "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.10.2" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2020-11-13T09:40:50+00:00" - }, - { - "name": "nunomaduro/collision", - "version": "v6.1.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/collision.git", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "shasum": "" - }, - "require": { - "facade/ignition-contracts": "^1.0.2", - "filp/whoops": "^2.14.5", - "php": "^8.0.0", - "symfony/console": "^6.0.2" - }, - "require-dev": { - "brianium/paratest": "^6.4.1", - "laravel/framework": "^9.0", - "nunomaduro/larastan": "^1.0.2", - "nunomaduro/mock-final-classes": "^1.1.0", - "orchestra/testbench": "^7.0.0", - "phpunit/phpunit": "^9.5.11" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "6.x-dev" - }, - "laravel": { - "providers": [ - "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" - ] - } - }, - "autoload": { - "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": "2022-01-18T17:49:08+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.1.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/15a90844ad40f127afd244c0cad228de2a80052a", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a", - "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.1.1" - }, - "time": "2022-02-07T21:56:48+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.6.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "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.6.0" - }, - "time": "2022-01-04T19:58:01+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" - }, - "time": "2021-12-08T12:19:24+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "9.2.10", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d5850aaf931743067f4bfc1ae4cbd06468400687", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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 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", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.10" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-05T09:12:13+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "3.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-02T12:48:52+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "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/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:58:55+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T05:33:50+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.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/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:16:10+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "9.5.13", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/597cb647654ede35e43b137926dfdfef0fb11743", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.3.1", - "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": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.7", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", - "sebastian/version": "^3.0.2" - }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.13" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-01-24T07:33:35+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:08:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "1.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:08:54+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:30:19+00:00" - }, - { - "name": "sebastian/comparator", - "version": "4.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:49:45+00:00" - }, - { - "name": "sebastian/complexity", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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 calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:52:27+00:00" - }, - { - "name": "sebastian/diff", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:10:38+00:00" - }, - { - "name": "sebastian/environment", - "version": "5.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-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": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:52:38+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "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", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-11-11T14:18:36+00:00" - }, - { - "name": "sebastian/global-state", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-11T13:31:12+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-28T06:42:11+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "http://www.github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:17:30+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:45:17+00:00" - }, - { - "name": "sebastian/type", - "version": "2.3.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-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/2.3.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-15T12:49:02+00:00" - }, - { - "name": "sebastian/version", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:39:44+00:00" - }, - { - "name": "spatie/backtrace", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/backtrace.git", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "ext-json": "*", - "phpunit/phpunit": "^9.3", - "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": { - "issues": "https://github.com/spatie/backtrace/issues", - "source": "https://github.com/spatie/backtrace/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/sponsors/spatie", - "type": "github" - }, - { - "url": "https://spatie.be/open-source/support-us", - "type": "other" - } - ], - "time": "2021-11-09T10:57:15+00:00" - }, - { - "name": "spatie/flare-client-php", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/flare-client-php.git", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "shasum": "" - }, - "require": { - "illuminate/pipeline": "^8.0|^9.0", - "php": "^8.0", - "spatie/backtrace": "^1.2", - "symfony/http-foundation": "^5.0|^6.0", - "symfony/mime": "^5.2|^6.0", - "symfony/process": "^5.2|^6.0", - "symfony/var-dumper": "^5.2|^6.0" - }, - "require-dev": { - "dms/phpunit-arraysubset-asserts": "^0.3.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/phpunit-snapshot-assertions": "^4.0" - }, - "type": "library", - "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.0.1" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2022-02-04T15:21:00+00:00" - }, - { - "name": "spatie/ignition", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/spatie/ignition.git", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/d2d5ba823af3004268556e87dfc94449e4159f5a", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "monolog/monolog": "^2.0", - "php": "^8.0", - "spatie/flare-client-php": "^1.0", - "symfony/console": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "mockery/mockery": "^1.4", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/ray": "^1.32", - "symfony/process": "^5.4|^6.0" - }, - "type": "library", - "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": "2022-01-19T12:57:41+00:00" - }, - { - "name": "spatie/laravel-ignition", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/68250225a9f83b086462c2af1b1139dfde48fbd2", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*", - "illuminate/support": "^8.77|^9.0", - "monolog/monolog": "^2.3", - "php": "^8.0", - "spatie/flare-client-php": "^1.0.1", - "spatie/ignition": "^1.0", - "symfony/console": "^5.0|^6.0", - "symfony/var-dumper": "^5.0|^6.0" - }, - "require-dev": { - "filp/whoops": "^2.14", - "livewire/livewire": "^2.8|dev-develop", - "mockery/mockery": "^1.4", - "nunomaduro/larastan": "^1.0", - "orchestra/testbench": "^6.23|^7.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/laravel-ray": "^1.27" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Spatie\\LaravelIgnition\\IgnitionServiceProvider" - ], - "aliases": { - "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" - } - } - }, - "autoload": { - "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": "2022-02-04T15:25:56+00:00" - }, - { - "name": "squizlabs/php_codesniffer", - "version": "3.6.2", - "source": { - "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", - "shasum": "" - }, - "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.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": "lead" - } - ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", - "keywords": [ - "phpcs", - "standards" - ], - "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" - }, - "time": "2021-12-12T21:44:58+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2021-07-28T10:34:58+00:00" - } - ], - "aliases": [], - "minimum-stability": "dev", - "stability-flags": [], - "prefer-stable": true, - "prefer-lowest": false, - "platform": { - "php": "^8.0" - }, - "platform-dev": [], - "plugin-api-version": "2.1.0" -} diff --git a/Chapter27/onlineStore/config/app.php b/Chapter27/onlineStore/config/app.php deleted file mode 100644 index 1941d7c..0000000 --- a/Chapter27/onlineStore/config/app.php +++ /dev/null @@ -1,197 +0,0 @@ - env('APP_NAME', 'Laravel'), - - /* - |-------------------------------------------------------------------------- - | Application Environment - |-------------------------------------------------------------------------- - | - | This value determines the "environment" your application is currently - | running in. This may determine how you prefer to configure various - | services the application utilizes. Set this in your ".env" file. - | - */ - - 'env' => env('APP_ENV', 'production'), - - /* - |-------------------------------------------------------------------------- - | Application Debug Mode - |-------------------------------------------------------------------------- - | - | When your application is in debug mode, detailed error messages with - | stack traces will be shown on every error that occurs within your - | application. If disabled, a simple generic error page is shown. - | - */ - - 'debug' => (bool) env('APP_DEBUG', false), - - /* - |-------------------------------------------------------------------------- - | Application URL - |-------------------------------------------------------------------------- - | - | This URL is used by the console to properly generate URLs when using - | the Artisan command line tool. You should set this to the root of - | your application so that it is used when running Artisan tasks. - | - */ - - 'url' => env('APP_URL', 'http://localhost'), - - 'asset_url' => env('ASSET_URL', null), - - /* - |-------------------------------------------------------------------------- - | 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', - - /* - |-------------------------------------------------------------------------- - | 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' => [ - - /* - * Laravel Framework Service Providers... - */ - Illuminate\Auth\AuthServiceProvider::class, - Illuminate\Broadcasting\BroadcastServiceProvider::class, - Illuminate\Bus\BusServiceProvider::class, - Illuminate\Cache\CacheServiceProvider::class, - Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, - Illuminate\Cookie\CookieServiceProvider::class, - Illuminate\Database\DatabaseServiceProvider::class, - Illuminate\Encryption\EncryptionServiceProvider::class, - Illuminate\Filesystem\FilesystemServiceProvider::class, - Illuminate\Foundation\Providers\FoundationServiceProvider::class, - Illuminate\Hashing\HashServiceProvider::class, - Illuminate\Mail\MailServiceProvider::class, - Illuminate\Notifications\NotificationServiceProvider::class, - Illuminate\Pagination\PaginationServiceProvider::class, - Illuminate\Pipeline\PipelineServiceProvider::class, - Illuminate\Queue\QueueServiceProvider::class, - Illuminate\Redis\RedisServiceProvider::class, - Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, - Illuminate\Session\SessionServiceProvider::class, - Illuminate\Translation\TranslationServiceProvider::class, - Illuminate\Validation\ValidationServiceProvider::class, - Illuminate\View\ViewServiceProvider::class, - - /* - * 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, - - ], - - /* - |-------------------------------------------------------------------------- - | 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([ - // ... - ])->toArray(), - -]; diff --git a/Chapter27/onlineStore/config/auth.php b/Chapter27/onlineStore/config/auth.php deleted file mode 100644 index d8c6cee..0000000 --- a/Chapter27/onlineStore/config/auth.php +++ /dev/null @@ -1,111 +0,0 @@ - [ - '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 expire 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. - | - */ - - 'passwords' => [ - 'users' => [ - 'provider' => 'users', - 'table' => 'password_resets', - '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/Chapter27/onlineStore/config/broadcasting.php b/Chapter27/onlineStore/config/broadcasting.php deleted file mode 100644 index 67fcbbd..0000000 --- a/Chapter27/onlineStore/config/broadcasting.php +++ /dev/null @@ -1,67 +0,0 @@ - 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'), - 'useTLS' => true, - ], - '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/Chapter27/onlineStore/config/cache.php b/Chapter27/onlineStore/config/cache.php deleted file mode 100644 index 8736c7a..0000000 --- a/Chapter27/onlineStore/config/cache.php +++ /dev/null @@ -1,110 +0,0 @@ - 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'), - ], - - '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 a RAM based store such as APC or Memcached, there might - | be other applications utilizing the same cache. So, we'll specify a - | value to get prefixed to all our keys so we can avoid collisions. - | - */ - - 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'), - -]; diff --git a/Chapter27/onlineStore/config/cors.php b/Chapter27/onlineStore/config/cors.php deleted file mode 100644 index 8a39e6d..0000000 --- a/Chapter27/onlineStore/config/cors.php +++ /dev/null @@ -1,34 +0,0 @@ - ['api/*', 'sanctum/csrf-cookie'], - - 'allowed_methods' => ['*'], - - 'allowed_origins' => ['*'], - - 'allowed_origins_patterns' => [], - - 'allowed_headers' => ['*'], - - 'exposed_headers' => [], - - 'max_age' => 0, - - 'supports_credentials' => false, - -]; diff --git a/Chapter27/onlineStore/config/database.php b/Chapter27/onlineStore/config/database.php deleted file mode 100644 index 0faebae..0000000 --- a/Chapter27/onlineStore/config/database.php +++ /dev/null @@ -1,147 +0,0 @@ - env('DB_CONNECTION', 'mysql'), - - /* - |-------------------------------------------------------------------------- - | Database Connections - |-------------------------------------------------------------------------- - | - | Here are each of the database connections setup for your application. - | Of course, examples of configuring each database platform that is - | supported by Laravel is shown below to make development simple. - | - | - | All database work in Laravel is done through the PHP PDO facilities - | so make sure you have the driver for your particular database of - | choice installed on your machine before you begin development. - | - */ - - 'connections' => [ - - 'sqlite' => [ - 'driver' => 'sqlite', - 'url' => env('DATABASE_URL'), - 'database' => env('DB_DATABASE', database_path('database.sqlite')), - 'prefix' => '', - 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), - ], - - 'mysql' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '3306'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'unix_socket' => env('DB_SOCKET', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - 'pgsql' => [ - 'driver' => 'pgsql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '5432'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - 'search_path' => 'public', - 'sslmode' => 'prefer', - ], - - 'sqlsrv' => [ - 'driver' => 'sqlsrv', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', 'localhost'), - 'port' => env('DB_PORT', '1433'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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'), - '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'), - 'password' => env('REDIS_PASSWORD'), - 'port' => env('REDIS_PORT', '6379'), - 'database' => env('REDIS_CACHE_DB', '1'), - ], - - ], - -]; diff --git a/Chapter27/onlineStore/config/filesystems.php b/Chapter27/onlineStore/config/filesystems.php deleted file mode 100644 index cf5abce..0000000 --- a/Chapter27/onlineStore/config/filesystems.php +++ /dev/null @@ -1,73 +0,0 @@ - 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 setup for each driver as an example of the required options. - | - | Supported Drivers: "local", "ftp", "sftp", "s3" - | - */ - - 'disks' => [ - - 'local' => [ - 'driver' => 'local', - 'root' => storage_path('app'), - ], - - 'public' => [ - 'driver' => 'local', - 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', - 'visibility' => 'public', - ], - - '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), - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter27/onlineStore/config/hashing.php b/Chapter27/onlineStore/config/hashing.php deleted file mode 100644 index bcd3be4..0000000 --- a/Chapter27/onlineStore/config/hashing.php +++ /dev/null @@ -1,52 +0,0 @@ - '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/Chapter27/onlineStore/config/logging.php b/Chapter27/onlineStore/config/logging.php deleted file mode 100644 index fefe088..0000000 --- a/Chapter27/onlineStore/config/logging.php +++ /dev/null @@ -1,119 +0,0 @@ - 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' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), - - /* - |-------------------------------------------------------------------------- - | 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'), - ], - - 'daily' => [ - 'driver' => 'daily', - 'path' => storage_path('logs/laravel.log'), - 'level' => env('LOG_LEVEL', 'debug'), - 'days' => 14, - ], - - 'slack' => [ - 'driver' => 'slack', - 'url' => env('LOG_SLACK_WEBHOOK_URL'), - 'username' => 'Laravel Log', - 'emoji' => ':boom:', - 'level' => env('LOG_LEVEL', 'critical'), - ], - - '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'), - ], - ], - - 'stderr' => [ - 'driver' => 'monolog', - 'level' => env('LOG_LEVEL', 'debug'), - 'handler' => StreamHandler::class, - 'formatter' => env('LOG_STDERR_FORMATTER'), - 'with' => [ - 'stream' => 'php://stderr', - ], - ], - - 'syslog' => [ - 'driver' => 'syslog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'errorlog' => [ - 'driver' => 'errorlog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'null' => [ - 'driver' => 'monolog', - 'handler' => NullHandler::class, - ], - - 'emergency' => [ - 'path' => storage_path('logs/laravel.log'), - ], - ], - -]; diff --git a/Chapter27/onlineStore/config/mail.php b/Chapter27/onlineStore/config/mail.php deleted file mode 100644 index 87b6fe3..0000000 --- a/Chapter27/onlineStore/config/mail.php +++ /dev/null @@ -1,117 +0,0 @@ - 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", - | "postmark", "log", "array", "failover" - | - */ - - 'mailers' => [ - 'smtp' => [ - 'transport' => 'smtp', - '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, - ], - - 'ses' => [ - 'transport' => 'ses', - ], - - 'mailgun' => [ - 'transport' => 'mailgun', - ], - - 'postmark' => [ - 'transport' => 'postmark', - ], - - 'sendmail' => [ - 'transport' => 'sendmail', - 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -t -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/Chapter27/onlineStore/config/queue.php b/Chapter27/onlineStore/config/queue.php deleted file mode 100644 index 25ea5a8..0000000 --- a/Chapter27/onlineStore/config/queue.php +++ /dev/null @@ -1,93 +0,0 @@ - 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, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter27/onlineStore/config/sanctum.php b/Chapter27/onlineStore/config/sanctum.php deleted file mode 100644 index 9281c92..0000000 --- a/Chapter27/onlineStore/config/sanctum.php +++ /dev/null @@ -1,65 +0,0 @@ - explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( - '%s%s', - 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', - env('APP_URL') ? ','.parse_url(env('APP_URL'), PHP_URL_HOST) : '' - ))), - - /* - |-------------------------------------------------------------------------- - | 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/Chapter27/onlineStore/config/services.php b/Chapter27/onlineStore/config/services.php deleted file mode 100644 index 2a1d616..0000000 --- a/Chapter27/onlineStore/config/services.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - 'domain' => env('MAILGUN_DOMAIN'), - 'secret' => env('MAILGUN_SECRET'), - 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), - ], - - '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/Chapter27/onlineStore/config/session.php b/Chapter27/onlineStore/config/session.php deleted file mode 100644 index 8fed97c..0000000 --- a/Chapter27/onlineStore/config/session.php +++ /dev/null @@ -1,201 +0,0 @@ - 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/Chapter27/onlineStore/config/view.php b/Chapter27/onlineStore/config/view.php deleted file mode 100644 index 22b8a18..0000000 --- a/Chapter27/onlineStore/config/view.php +++ /dev/null @@ -1,36 +0,0 @@ - [ - 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/Chapter27/onlineStore/database/.gitignore b/Chapter27/onlineStore/database/.gitignore deleted file mode 100644 index 9b19b93..0000000 --- a/Chapter27/onlineStore/database/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.sqlite* diff --git a/Chapter27/onlineStore/database/factories/UserFactory.php b/Chapter27/onlineStore/database/factories/UserFactory.php deleted file mode 100644 index d6ca926..0000000 --- a/Chapter27/onlineStore/database/factories/UserFactory.php +++ /dev/null @@ -1,42 +0,0 @@ - - */ -class UserFactory extends Factory -{ - /** - * Define the model's default state. - * - * @return array - */ - public function definition() - { - return [ - 'name' => $this->faker->name(), - 'email' => $this->faker->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. - * - * @return \Illuminate\Database\Eloquent\Factories\Factory - */ - public function unverified() - { - return $this->state(function (array $attributes) { - return [ - 'email_verified_at' => null, - ]; - }); - } -} diff --git a/Chapter27/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php b/Chapter27/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php deleted file mode 100644 index cf6b776..0000000 --- a/Chapter27/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->string('name'); - $table->string('email')->unique(); - $table->timestamp('email_verified_at')->nullable(); - $table->string('password'); - $table->rememberToken(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('users'); - } -}; diff --git a/Chapter27/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php b/Chapter27/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php deleted file mode 100644 index 0ee0a36..0000000 --- a/Chapter27/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php +++ /dev/null @@ -1,32 +0,0 @@ -string('email')->index(); - $table->string('token'); - $table->timestamp('created_at')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('password_resets'); - } -} diff --git a/Chapter27/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/Chapter27/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php deleted file mode 100644 index 1719198..0000000 --- a/Chapter27/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php +++ /dev/null @@ -1,36 +0,0 @@ -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. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('failed_jobs'); - } -}; diff --git a/Chapter27/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/Chapter27/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php deleted file mode 100644 index fd235f8..0000000 --- a/Chapter27/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->morphs('tokenable'); - $table->string('name'); - $table->string('token', 64)->unique(); - $table->text('abilities')->nullable(); - $table->timestamp('last_used_at')->nullable(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('personal_access_tokens'); - } -}; diff --git a/Chapter27/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php b/Chapter27/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php deleted file mode 100644 index 2eecdc2..0000000 --- a/Chapter27/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php +++ /dev/null @@ -1,35 +0,0 @@ -id(); - $table->string('name'); - $table->text('description'); - $table->string('image'); - $table->integer('price'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('products'); - } -}; diff --git a/Chapter27/onlineStore/database/migrations/2022_02_12_140820_alter_users_table.php b/Chapter27/onlineStore/database/migrations/2022_02_12_140820_alter_users_table.php deleted file mode 100644 index 5bfcf7e..0000000 --- a/Chapter27/onlineStore/database/migrations/2022_02_12_140820_alter_users_table.php +++ /dev/null @@ -1,34 +0,0 @@ -string('role')->default('client'); - $table->integer('balance'); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::table('users', function (Blueprint $table) { - $table->dropColumn(['role']); - $table->dropColumn(['balance']); - }); - } -}; diff --git a/Chapter27/onlineStore/database/migrations/2022_02_12_152713_create_orders_table.php b/Chapter27/onlineStore/database/migrations/2022_02_12_152713_create_orders_table.php deleted file mode 100644 index fc05fda..0000000 --- a/Chapter27/onlineStore/database/migrations/2022_02_12_152713_create_orders_table.php +++ /dev/null @@ -1,34 +0,0 @@ -id(); - $table->integer('total'); - $table->unsignedBigInteger('user_id'); - $table->foreign('user_id')->references('id')->on('users'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('orders'); - } -}; diff --git a/Chapter27/onlineStore/database/migrations/2022_02_12_152850_create_items_table.php b/Chapter27/onlineStore/database/migrations/2022_02_12_152850_create_items_table.php deleted file mode 100644 index d7dfac5..0000000 --- a/Chapter27/onlineStore/database/migrations/2022_02_12_152850_create_items_table.php +++ /dev/null @@ -1,37 +0,0 @@ -id(); - $table->integer('quantity'); - $table->integer('price'); - $table->unsignedBigInteger('order_id'); - $table->foreign('order_id')->references('id')->on('orders'); - $table->unsignedBigInteger('product_id'); - $table->foreign('product_id')->references('id')->on('products'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('items'); - } -}; diff --git a/Chapter27/onlineStore/database/seeders/DatabaseSeeder.php b/Chapter27/onlineStore/database/seeders/DatabaseSeeder.php deleted file mode 100644 index 71f673f..0000000 --- a/Chapter27/onlineStore/database/seeders/DatabaseSeeder.php +++ /dev/null @@ -1,19 +0,0 @@ -create(); - } -} diff --git a/Chapter27/onlineStore/lang/en.json b/Chapter27/onlineStore/lang/en.json deleted file mode 100644 index 577680d..0000000 --- a/Chapter27/onlineStore/lang/en.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "The :attribute must contain at least one letter.": "The :attribute must contain at least one letter.", - "The :attribute must contain at least one number.": "The :attribute must contain at least one number.", - "The :attribute must contain at least one symbol.": "The :attribute must contain at least one symbol.", - "The :attribute must contain at least one uppercase and one lowercase letter.": "The :attribute must contain at least one uppercase and one lowercase letter.", - "The given :attribute has appeared in a data leak. Please choose a different :attribute.": "The given :attribute has appeared in a data leak. Please choose a different :attribute." -} diff --git a/Chapter27/onlineStore/lang/en/auth.php b/Chapter27/onlineStore/lang/en/auth.php deleted file mode 100644 index 6598e2c..0000000 --- a/Chapter27/onlineStore/lang/en/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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/Chapter27/onlineStore/lang/en/pagination.php b/Chapter27/onlineStore/lang/en/pagination.php deleted file mode 100644 index d481411..0000000 --- a/Chapter27/onlineStore/lang/en/pagination.php +++ /dev/null @@ -1,19 +0,0 @@ - '« Previous', - 'next' => 'Next »', - -]; diff --git a/Chapter27/onlineStore/lang/en/passwords.php b/Chapter27/onlineStore/lang/en/passwords.php deleted file mode 100644 index 2345a56..0000000 --- a/Chapter27/onlineStore/lang/en/passwords.php +++ /dev/null @@ -1,22 +0,0 @@ - '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/Chapter27/onlineStore/lang/en/validation.php b/Chapter27/onlineStore/lang/en/validation.php deleted file mode 100644 index 783003c..0000000 --- a/Chapter27/onlineStore/lang/en/validation.php +++ /dev/null @@ -1,163 +0,0 @@ - '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' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - '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' => [ - 'numeric' => 'The :attribute must be greater than :value.', - 'file' => 'The :attribute must be greater than :value kilobytes.', - 'string' => 'The :attribute must be greater than :value characters.', - 'array' => 'The :attribute must have more than :value items.', - ], - 'gte' => [ - 'numeric' => 'The :attribute must be greater than or equal to :value.', - 'file' => 'The :attribute must be greater than or equal to :value kilobytes.', - 'string' => 'The :attribute must be greater than or equal to :value characters.', - 'array' => 'The :attribute must have :value items or more.', - ], - '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' => [ - 'numeric' => 'The :attribute must be less than :value.', - 'file' => 'The :attribute must be less than :value kilobytes.', - 'string' => 'The :attribute must be less than :value characters.', - 'array' => 'The :attribute must have less than :value items.', - ], - 'lte' => [ - 'numeric' => 'The :attribute must be less than or equal to :value.', - 'file' => 'The :attribute must be less than or equal to :value kilobytes.', - 'string' => 'The :attribute must be less than or equal to :value characters.', - 'array' => 'The :attribute must not have more than :value items.', - ], - 'mac_address' => 'The :attribute must be a valid MAC address.', - 'max' => [ - 'numeric' => 'The :attribute must not be greater than :max.', - 'file' => 'The :attribute must not be greater than :max kilobytes.', - 'string' => 'The :attribute must not be greater than :max characters.', - 'array' => 'The :attribute must not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - '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.', - 'password' => 'The password is incorrect.', - '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' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - '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/Chapter27/onlineStore/package.json b/Chapter27/onlineStore/package.json deleted file mode 100644 index 7b71681..0000000 --- a/Chapter27/onlineStore/package.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "private": true, - "scripts": { - "dev": "npm run development", - "development": "mix", - "watch": "mix watch", - "watch-poll": "mix watch -- --watch-options-poll=1000", - "hot": "mix watch --hot", - "prod": "npm run production", - "production": "mix --production" - }, - "devDependencies": { - "@popperjs/core": "^2.10.2", - "axios": "^0.25", - "bootstrap": "^5.1.3", - "laravel-mix": "^6.0.6", - "lodash": "^4.17.19", - "postcss": "^8.1.14", - "sass": "^1.32.11", - "sass-loader": "^11.0.1" - } -} diff --git a/Chapter27/onlineStore/phpcs.xml b/Chapter27/onlineStore/phpcs.xml deleted file mode 100644 index a1cf2b6..0000000 --- a/Chapter27/onlineStore/phpcs.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - The coding standard for the Online Store project - - app/ - config/ - database/ - routes/ - */migrations/* - diff --git a/Chapter27/onlineStore/phpunit.xml b/Chapter27/onlineStore/phpunit.xml deleted file mode 100644 index 2ac86a1..0000000 --- a/Chapter27/onlineStore/phpunit.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - ./tests/Unit - - - ./tests/Feature - - - - - ./app - - - - - - - - - - - - - - diff --git a/Chapter27/onlineStore/public/.htaccess b/Chapter27/onlineStore/public/.htaccess deleted file mode 100644 index 3aec5e2..0000000 --- a/Chapter27/onlineStore/public/.htaccess +++ /dev/null @@ -1,21 +0,0 @@ - - - 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/Chapter27/onlineStore/public/css/admin.css b/Chapter27/onlineStore/public/css/admin.css deleted file mode 100644 index d9495a1..0000000 --- a/Chapter27/onlineStore/public/css/admin.css +++ /dev/null @@ -1,33 +0,0 @@ -.copyright { - background-color: #1a252f; -} - -.fixed { - -ms-flex: 0 0 250px; - flex: 0 0 250px; -} - -.content-grey { - background-color: #f8f9fc; -} - -hr { - margin-top: 0.8em; - margin-bottom: 0.8em; -} - -.img-profile { - height: 2rem; - width: 2rem; -} - -.profile-font { - color: #858796 !important; - font-size: 80%; - font-weight: 400; -} - -.card-header { - background-color: #f8f9fc; - border-bottom: 1px solid #e3e6f0; -} diff --git a/Chapter27/onlineStore/public/css/app.css b/Chapter27/onlineStore/public/css/app.css deleted file mode 100644 index cabac36..0000000 --- a/Chapter27/onlineStore/public/css/app.css +++ /dev/null @@ -1,20 +0,0 @@ -.bg-secondary { - background-color: #2c3e50 !important; -} - -.copyright { - background-color: #1a252f; -} - -.bg-primary { - background-color: #1abc9c !important; -} - -nav{ - font-weight: 700; -} - -.img-card{ - height: 18vw; - object-fit: cover; -} diff --git a/Chapter27/onlineStore/public/favicon.ico b/Chapter27/onlineStore/public/favicon.ico deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter27/onlineStore/public/img/game.png b/Chapter27/onlineStore/public/img/game.png deleted file mode 100644 index 85420e8bbc16098bf26b4ee63bde0e91a19d1f2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25896 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 cz>% diff --git a/Chapter27/onlineStore/public/img/safe.png b/Chapter27/onlineStore/public/img/safe.png deleted file mode 100644 index 445942c707af53210931f9f4f99f6d3cb69e5d89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19240 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
w==XB0?3|p=#`o%NsudE(E-U#KS3Snw z;4wZCaSDCwf?7xR$-V`njZ0H2I+y>dL?+!C^E$@XAGyl_w(QawTwCkFeo~RiRD_JK zz1UV4OE9~UAlK2>4hUbTrkI2lrYUSUK9e4rmH5EF3JH}tii>~MdO>7UajV)JW+e07 z`kC_G-`39da7nWdMQI#rV)qy$x_GLq;Ka9EL;dLMmUJ^A%GR3ECk?A7rA;k74i!~=pkR=E$gZUR>ybJfV7Ju^oUxA^-R{S08UV8-_w54i)Z z_;V0ZVm->XmT`@Ur?Z}Qi(u&sYV zr%NY>qeWM|Sf-OL8?<<)QjP}O>rg@=M6=;il8;0HNzcyCtYs@c;M9N&A#!Q!^q2nR zODjL9Z-))F3Sv{K8QHEVatzAGs5+3P`QCLL?29C*2zpH|)3aiS<4M=P^LoObo8Onm z`EsXvyrUca@bO8A(C&opR#TNh2UKP&RD(H+!R}__b_={?Eb<=M`YJ0c>uhX-<<>i% z$n;HBJ+xxNxJg631YX26k* z3{P;1>T5@e92Rk4@Ek!TxIR^iMK%zUQO0o)6HvGpT2zvMu&&07etk64+1Y7TJv$c8 z8M%?-QH})I&Kcg);9R z^P*JSe0+>LLU^kiuI3zctURDEzE0*hq#Y)eTGJEpWNN?-^v zin6Jh8QqzLVTtvwoicK@$lef2fuSstko2~+lZm$LPMIxpL1|aQg4Z>VpE7%T!+vfe zY<&o0=(U9=Y%W0TxiwzgQAgO`-tM5I$%Atv$T8T?hR|hu8os;9_FZ)OA4Ap-qrBB= zNl15!)Q|!}?z?m}8ck;xyke&?Ktw}B(|pt~6cO`XLjIGr%k{NSf%Dn^0tkL)srP@+ zU%GBIh`w4myz&KBdjA8;ra=0i(L(@B$|?B@H~P4UH0r>w$yG^HCL<$@oiM>y)@{9* z(*EgBh4TjaTX~ww>K7Gt(-)_+btK|_kuDQy;DTKrgyt>wEGi5aR=hSbF_F{}T5aq) zP+MCYM)rhM#*ZQnI$9AXo-pAn%Gw;k71x!U3+KL*bPUR}9*yoBITGvW43bL!s(pcC z{pPuuy4Xgh@-*(^s6JE6@Uh+9rnO{UHpZYl;AR*!2dvNm7w6*QQYS%*z)HR-B{_Mn ztjEpmYnB#|U6@|dP&jn2sb1{(ORd^9kU+ZvCAvKu^qR;r^40qydZQhbLqSU2R-?GS zzRub<<3fxo1JTzpfE}9APBYHkOeR3oI(1aTIc z>r>8YWu?B8t*x!8sSMdpk|X`IGAc^`@BjI2YikY7J1HoMw6Kz{V~jmc)U9_Y1mzg) zTi!6iotZXSpTQo%*MHW#qh85sZ$J3YlPE0JEp%Ww{?O>cn-#Gon7r_wciq?*X=%2?WQ+XU>#e`~?z!$&KHrJ&?Ig#yXPUNXE zpSy`VNLQ3K%+%7?RaMp1ZI;bk&b=X1-vNG$|HY{2_@8f@5MtmZE~-n7h6EX}yX^<( zTFOq!-v-WK*f`r9g3v|R+#FPzc)XELtS1$9byKA%RT7y~#q{^ZZ1xr(ALO|M+xms{ zDd{0MH&vkSc#&S-G{nKms?frspKXjUHYs^boS+55(<@483)9xFv)dRNT3ob% zntoAIQY!vyHsw^Si!WO`Tdcwqqvtp6vt^v7>9&{TSmB>{BAakq`pvtEG=3S2O6^Wb zsz9l>^YbOg*~%q0gC0Y6?G^nC- zzsEKD>XYdF;7k_bKQ_HOVs|lqe*T$G()brIUL+)>hR_HMjgOB%e44G4W06vUp}yiXSPLS=IlAAkH=FB7SSgWB)lN=X?ho;4Z%C<4`SKgg~H&v@?b&p1r$#%B3rhAp>blG?&`0IdA z>!@u7@BJ+b4EZ*?V&N-A(jJMT+m{*%NSLoSpV((c+8|6i00i;=jz-qj@5m|OuY;`5 zC(rLQ>d%+iR%qvLQ)yCEru@~NAsw^Hz5YvKH9Nu;fJUmgM+K5pdv+aF^NXC6|=DW5juxu z=1SbsoB7=1M?!8x+6b%eP?waoe+RQ9#Uw)HBs9N-FdV|OzKR@I-d{^&XJcWR&*S8x zG%HocF)#Cf>6aJPebtw6sWmT3DT|0$Z|xd8Me>o$hz&yL{|#Uk5=s5l+*+5eq&QNe z(7I}K^t6gk@LqOvbF-+o9yp%J7q!kus~&=j2+e2DHx5NzhQ{ANVU0@f*jwvr^-73k zk1Ey);USigL~kFvqk>QNyl_*ZhlL~`Ze=A(d`tn}vV=#SyW#V0m4w!plGIjk)EZ`+ zOCUxCmBlgT3S0xuzl)#AE+71%3-=Ycm zT`<@0wM=0D=rMAf;Qhq=M*XK3FG2ps9wgGVH!$kswUbC&4Y6#v4j`AK(=aXCRFmu{arYm|IdXiD)@Dvb;a5y z0;-PTiNd_HBr?|WeX%c#W=amZ!h4-NlTokUTLkZ|P1^H(0+1*3-IbPHAEE;Ge3^1r z_lr*zIpUZni-k^!-1&H7i!3TZCZZ?tLgrMqc)&QHCdd+R1$lM6)q}@&GU*LW)j3)r zaf&T*YPBKrbGO3X(+kmyw1QD*CKQaO?v}3>|#>!IJ-gV*zze4=LE6ZF{n;>;6;@`;p$sK zUc{=W#GUBG9G{wPO`QYXufY_PAQYRKnMwHUbdJ5kKbC^a+G#2)W{@CTRZQen;wK{5 zA(lHTUfNtPXIUW=N|u@3C}Q=}I3C94cXk?hHLkm~J~*h1*52J~zVSe~dRuGj>9G>y zmY=)vXJJ)^%hV6873c?ekyG*tjM+QRD3DvQbn$RsQ-6KO{$2QbG#910TLV+h++!L4Y4>tPO8nH~W=}{0 zYm^)xUsX`?{LT?39GW5Ai=SYrIBF5EV)pk<&!?#v)MXd@@2R-|>=^$~xX4LZS2XF< z>c6>O%b2{xyBM}U-TJYfwd8@dR`H@SJZ3nE@%<0c6ioA@KATA&jFt&8g$U6sLjIq} zw*-ZCwYB3D5_%pz@|NP|;24~-JAf6jj%CN)qTpw0dlgaO>;m|0|1~A0GDF0(nb=04X4%=<`KlKNS5<>ULdI^Kc)WR1 z22T6WeZ3y|sijD@-u7#?28+^Crv)jyS0g((h#FU4bU?I2-lzp#C_piRToT`G$!(X zHs&JQUk()cw^E^PiUUKIk~)c({wreewjDc9&rbCfI|1$OjT3+WKY#vYIVOr#AQzp0 z&$;h?{6ZO_OqP7UUTRcZT6$fFw>zCyRi~}1*{R>$gqCVqpvt(-|3opP2`YMbUp`>~ zheQY*%tQdQCzYE#_!W@;FEvW7Qv;+At6ACDOz+=s@8}?~s(`;nd&7p80Q}=;26E`) zS5A~YAT9-k5P&=&tTaQ*RoDjl`dC?53aoX$iv`SLD+Q-jY)*&z`TCZb4i4j{$yLt) zJ$TTA03iKW*!XNh!jwZgI3Ygg=ilW`L27l~li)Cs?u1IzjsNZ-a6)d>7UI_Uj9;sm zv&9H~WG*Z$Vq;|`32fW{+VQBdX>n*!c{q^I$}{icOHjMOn|FEkKHoUxdK(-LKm|kN z*)u8-S^11O9j*3(bSzL;D!KN*gC30V4VWlNdEfWr!O7Y|8p*Ez@V!gV=>>j$OoDmf5VBtw5O9cueh9dsg#v%4_SrZMc+qigGXoSaHCm`2=04Onvn{ zn3JK9#!c*$EXm2e`Q{=%Hyn~@>kXSgg0_lmLU=@zepP7y>JgGTZQ+t|WHaFr5kn%V zX)xJb_g&o2{@@RtShzy3I9Px^#^Dm8fXZr^A?nB?{E!yCqVyyI(fT~2) z*Urky*2vD?-B-x%>~leV$#{nswP?djb-xIzo|UPJRFa(EK(Uf1bRwU*qtSo~`T6)JZqmHUGK5eD|6!b>Vg^Kw&Bl$ zmODV%2y94EKu-%^= z*=CVeDm{480+B`3`{BO=j`aBzyWJYwFP;D|I-HQ;VCmcnEcCyHm+5`)5Km`^Ua4HXC%&C@FxBQNiatx|{;sI4sYymjPEJEJACw_ExqWzOm#I6aOV=zKB~$wufGUn- zs>BL5ZpEKxiX56aX*#?h>PbaOWEK(<%E*o>oSYN+s5pSKEMz?cQ~{95$H*JsFun@9 zyL}d!PkxyHOxE$B7dGXNrJf@DK84CBARsuknE+7dSY%j2b#=JJd+$v_wW;p!{euch z*hlL+q)J&2LHfd?vTlWaJew2fdl~_*y3&lRxx%Qv`CWoX+XqW9E=(!h$awmZi?SXd zccA<6D3th4();{TP{*j#!NQ!kNI8N%t{>$q62KN$@Vq89Q664~=|$LC|J_K0E22lF zV6ed`VVA3-`V)9|P~9rx-pYFo4UN{6U{1us)}P@u_V%E$<7>$Qu27(o=v_AoiLyA6 zB%>C`?K3k}(9`2r4yn?)wk$D$v#&EgQj1V!B_xNGd2{K3dLZE;oKYY4L|PgkA{tkA zHV`hJ>**3{0QPKmtC9zxBx=)yz$Wc#3n<@^1arvA0p!NGUP|0#(*#j!fDGA761KjT zf=qeGQHhOV#6SBG|CZBDWUP=f&vJxS|@E#_;Wx5RcF*iZ%|wETSnCw zAOv5j)p1Zb5nC`4FAlj)GIk{;Ep6>^=zsqWm#Eaj3X}Y8AKA7wiAiKO-wN5 z+V1an%hLhs@2dN~J}=xq89b!c02W57@4WIj7=cO!`PlOWz9_6NqP!X917^_WcBWo= zHl%aPgzYlem%ta;mTpIDAQ6@S0Hkk4fAhPzj8$5WGe-s3y@>)@9a#sU3?L#RmM$(X zCMMDXVUNqut%U@#nyGE#;(Y zEKp+OYLtCfRgX@Z8esf3UZ8W3XnA}AGRf|IL28W;|$%yPU4SZHQ!wG!H(#dfN? zXejH6_Y?_mA?qa_K`ko(eQ~^QXddQ=CP_yYc0gFA9z@Q2K(V-F&{Bl^of=f756>Iy z-edwK{{v%522gQ;bRtlqI)Hf++}n>OSY{fWhYgi-6v0E^c|x8%Wf&js;Ryt=xT7Wj zg(8*HT6wdVkenP1-4IX1#UshJ1Dy-2`N-lXi#0(*P>BIMiPcpqexRPCW*!?gm~XBO5?a^!5hXr9!>CRm&j&p7|Rf;LdGl{eMixWlU{0LF4r@8*^AGf=zmWUhWMURUXT0sC5p763D9?*f;ROX=_1TD3Zd z<2+%xHJ`kp=k(waQqTQGgoWm!A;`377xqupCWp*d`{iL!8WQ!wmz9jfcc`lB%7##( zEdM2QRef{l0k!CQjnj|fC)UcZp}0OREiFF`Gq8Gf0EkkNBLbtSnL(xP((}p%8;yOm z^+{BpEhdWI%47~`WBX3f!+A81{%MzLBvGULDZ`vw*vZwYQIuP?P=kbFhlp7Q0T5Yf zl1+!*FHVfpBck(1-B*$OB`Zl1W`!CFeQOFu*$NU-a0)>2b%+;=z)*qSLbp;y3qpFj zUQBR9OszcY{>{8nyAkX(d?q-fNKT5(Czcm$y})K_b2Co@-eOlN=(*Gm(nrzf#|xgV z`o5mpP3q8ww&atNp|iYuQW7RPI~kD(Wd;MQr$sZ=K6or+KgKEF&iJNHao;Ck+yDS1gs7KMqd zgUYqfoS{j?tnusZC_mP~U5B9gi1c;FvN7UMci_W^3j@^EZvbwWEeMRyC_CdAUXk^~O!V3} zeZpmUa$YR5Z?}|N`LB!8Y%ij15kPZ#P1^#4K|t8x_{F1p1LwJUa|ZEk*+Xo0Q47M+ z5MN*4`-OJ%)4)cU9Cf`e8r7*<$=1qQl#tE_h}1O4jm9a3vwLD03x$5bLWDt8MQc5r zoScm9N7_m#mVSXYg8RUL03{)&fiFZ3{)xD0V#5ctwX|e+43z-(%BVK+HBx8x(~VIN zGccf!8tkvVqmmuay{D(4K_R|k06RuXvL_DwCy+hN+Whh8^euocx6o9}x;`A$&Y6kC zdeHDx{Vx3wkn_$s>?|dPRg$(4>)JUYJ;&v$Y2rHx1uIhFHgY7l{fUDMxSS$m>zt2F zT}WLed@wB%s1p>D-Qx)O*s<|_YgQrB^lBz!cHnSnx`2MzR+^PJ@_O|yUorYOr(?tj z^b{BkTz3&^6aUQBE{vY)I+l_+CSm5psGWn8N%otnQjNcAmD+gDY62OmIW-c;nSe}m zCx8Z`mn)1>Se)vZqTiU$+qGa+ga(N;nU6QWqwP>0{tjp@R86^|G8txFyQvFjrSaV9Xu zytN;A@3lbwP5=dfY06U*pbZ^Lkho_u1k?h(F6H=6kEz(8d|A~WojAq+9En7`i9`Rl z?f#lipBWGjErPbXtL|5!f7ic-&Q%@TXjt_|7(RUX@DSbzY8&tPX!eygD z!^(60t5v9x+TOfl!_556cO}bA6(oPWsgDGml*-CyI6|vJcZysjbj{Sr(eD#x1sR;7 z?U~T+<Ss-;B+_vn6KGAbvK zXCuJJAGq^)z$hyDyzB$EOBlhVxf#+?E?!j0J~Oue6TBDctI3HCXvnZL%gA&RPO97v*VvaVMTgKu`HDlLz>bH{}sJtlib@lnyyA+yeF(J)G; zr=lzec|Yi3Ds0@s#}z8HeV{$H`DV#g>_F#fxmSLpTjC3^C_?_#_gScZRrZ-gZ;J5J zQcmf|&S$&LmzC4(9WVW_13hn)6jHDah(Q3-#P4#FcItA)56JK?zt-YL1b`D=$LY=c z5eqJ4&z`}E8Fy=l5vEAb%k0qRizU}aOHgE~1JShNJlP&v_#$n(=;ZX6wP03=gQKLO z;nTsF=L?4GdwVq9S#{N?3-vc_GP0;iG3OQuMeyL5ur`Ys4d|>D@ks3WQcf2hZ9(KN z>4=Yy=kp1a78s&b*kW2)8PjKS# zdm&BbXBy+~nRC!;Kh2b;3Xem=Z*iSC1p*pEboftcYP{xer#C`pZF{J%E3_%sg*Np$ zi!?HOpAX)q4~lAFeWyCiDb@W(54?#^#D9M>ctgRP2XZODc|DBs$NbK-U9Rsjh)m_Gns!V?4SGrM!br1mr%G$9UN2wOBV z{)?87ro-H0Wq^kLi29*0DjQckIfB%3(z0--n2zL|~;RBK%m}%`tfSLNcM@?HN zgh%qj?%OJOkpf(MMC%4L(0&Bb2M?_eXkLHXd=6W3_(u!c`^1lOcy(zjWk&*RK7amS zqGAd1#@!5=T_0h5|2J~F@jdP*J`jaCC8N?6^5#^h`?hw^T?Tj{Xs5&U^+mh=F#gHV zPeG5n^YIQ*h0i(Ozokdpe%3B<&~a-iNAy>ZM{mQ$_P;*$10n_U%`GAO)n${++oeZW zj$(&xHrFqPqf!flp7|*9gMRpTDb7ejm7js2TX&LO%z1Y)BmJ8Lw<)n8-IW~o>Z8Ty z*My_>VS`Kx2gj`o1~GqjLT0o%fz@#p%Go4&QUJMNNyj z(F&DVEGe(w177+svzulAcVCtQ0CeYVV0ZWLQ}&t5r42-=``KFEcA5@gWb-wFS@Xr_ zi!qx!KrOB(#Z5P(Td@@tRzTyf9G2krOk0=dF*M~YKV>!(0z6g}b7a}P6I%S?lB6Ga zyFn<%t?P~VD=J?XK?ML3gEtNcxTzBlYS<{z;Bk)BH4nZ3E%L=2`40qt>%Ls)1&!Kk zpb-r{Gt5pQja&HDob7abJh`O!35py@hF3FJM>7cM-L0M=0iv4#3Wx zP9g2^Yr-F8JFPE!6{mEY?bm0`>nHBu?Pp7&c zG6$Uzu)tmUrMTVCX5gOl01=flppF1=_jm{o@Jxb^M&Mp0WBK}66;(sSFTnm@)-)mD z4DcVNm&N}3Yo0yXvPfasx!5^1-?IHX76O+!83GTJF!tZ4I7w)?#4lhE$}kdmMuCG0 zt0Cz04KdeC{toCmjI6jIKOL2iTA=OwJ+EH zJ`w=b_hnOv-QBK*)7Arfi4VeaG`!MpoDl|!$Ig7{@_WX7;8`ID_5t@Y0k^iz1{TH( z-p^~+p0Ww(`v<_lK5`%cw8}~N(~I|ZRR>=!F?kM5mHB)AEsz6lzh~uhan|I$C<0p4 z5#3_*Yh(L8<3&^M0-IS!K!a(TAV-_cnx!$X_Q&1(wOBkE{Ox9I(vb z0xc~oc9P(oXu=ZA?X)zwW1eC|8~9KW;N19v*(<*U_wUU#UOuH`o9{2+IUy$&0867U z(||Es4csV^yR=heYcuHh72u&40a73-6Wbr0rx*Ns1YCF4u{2}b<>PWy=aZIxEPD6o z3D8C9enP-N;shSO!C6^iJJrr$?anRct#>NlslS#qQMm{lS8xEP5RYZRyd>c1KYx$R zqm`EacSW7jJLavA-J^aaK=vchk|l;S=G9iz-U|NVX7DzGfp=$dt=6Szbrw)S{RlPa zjq>sLjk`Yee$@15MZlbRnF(~h%x|GX868VrA1u+z{}fydit^u=s z*OwKw1%`|Q+aix$|4OrLXS7Y&B^b@U*V0<+$>|A3hs_mB*0Epkc3(WN+`A4~u{kj1 zmc4U-yYk`eI|Zg)YbQ=Sa_ww~B&Xo!2stYe-j92}bSKUQ_WY}?fuY90V6`esr7+Nm(c$3WFl3~~RpHLB3~f@Pxe$0ih*B5 z?h@MWYEG8!UM8**^QN`S7URI+nC&Q64S(4=09${5S?bbv5Q1{3I2${&peWv zEa=0jK<6?1a#fe}2Xv$^a??Y5!*k&IA|u^FKrXo%^4m|IYp24gDYQ_#Zm|{}A)P+wuQC z`~ROE|KF1lk#JT_p`Bpzb#8`;*RoLqXCTK^-R!hcapkqp4 z>(O-kqk+OgR>vsyGA3Md$sKe%K$H%SRx3~YpQSM~Zt{2DrX-=Fn8-9s?br(ctQfhP zhUI-v`-CcHVobOsCVCz?3(>QJUn3;J#b5Pf+tE!ZU@X+f2J=FMdO!iJ*N9-DKK?p6!IwrYT=yX21!gP zV0E(D97q};S>D;P!p_O$l&Qeup6eVT?2*8=Im6w_gaANgynBNW+w-7il&PQC5sk!+JX(IxRf|nI%!wZ!OzlW*5Xz?vEX{HZvyEG11)T9m7 zXAzWe<-w(b3zt$;j}yeNh!y+u%RX@wN0)$WJY|!m5wu27Z?_dSH_rmM*d4&*W|SDD zjYB?8AaZcu)z4OHY%QzZHGJ}A7kZTsghHpY4FD0i$gP1gQF3vEYQ?Z0>rF*phL_Fj){XJ(8Iu zFg5q%M>>E%WA9+&8>u4ZcVZ^H(su=7{DgAoz$|T+Fg6J^i*LIMB1C2*w91a6HN9hF z`V?XLKN-hZIZVho{UPR_iA?#GlZ?&M~Tb3)r=w{B0Yqb8#wtmqC|+t#%bI zT;w4XV8>w+;Ee7@l1YL;NCZdLHqT%8QZA-DVgZ{ay-470PHUN{ML{Lk^aV7%{Y~sm zXw}RuyYOW`PfHqM;RvpuxOn(3OWq6iUps<10E7gY5|U=#O_a#J!9wO3MwEfLTcfsL z1#ONiU}>X0o{2bKEFh+c4bvJEu^15xxg600&oFhX9&6ecF^_lhUY39}13;F;=MjH< zCL*-)^>CM6YxGU5-|6@$6e@&{q)ZCC2-+)}F={_wcH6E}!|g;NU93ySJA>~#y+xYt z6Q{}*k+(;fmKvtb&A&KUb<;BH;E-2=3*%`6Z~t9(;D|>+|7V6q8;+vV>FjEAJ$mAh zAq|fVs4Z;>@W>t*FI}5@Rs5CiT;$zA-}35TT%1FAk8xmp?bc08sm&wC6)tk?Z+6AO z2lV2g6qVdwgszh~MFRkD`2hb3!;r3;U6%I?U7iXeHuJOyxgo$AK0<_jGeGD`A$}Jd zhyzb8fKZCX7pOn2`0hG1UL(og%Ou6+`4QfN5DG-O1(gv-G!T-y%c*litcj2#4=+{+ zjIwy-u#weU#gniK{RHUHa|d2V_Da-Jc^2Vq(fhE^(EOe3@1nvzm5G7HX}JLi`LeVt ze51|fY1VIhmv+BrhQ&5aMvK|98*DmGeV8B)FZUykepnw+mRvu9z@t4c#kMYegHF*6 zL!~vXWV?UPRSjpsz%=`K}s|y`O_rSjb z2Z^Swz@5au*mqe^-8q+Ii#5>>j`s^Wf?@z||CHLJxf(^@jf$dY9Lyyu;{c4-dZo=u( zAq1l5b#AWVUZ@}95CA;i1a z90O-&_=kI4DC546>mT;zZUnCe-0Cwu~6AU{to(QRsG7gfTtsJ8F0y9e+w z+ehXEY$l!arsH~Y@ej31M4rdf-N&{sMZ+^47HV5V%5e0}=)kcCB`YEZdi=BhK*)8% z`v_GqG%`39>g3XMLw&pq3YEd@-MR!04-Zf_f|$b(iG;d8xh9f-GHc0cp&nBk8>qf} zycw|=g2#)(6jCpK!8YL5Yx2fdmedm<68AH8!6mAAmR|xK0~{qg7IgVlahhrk?-vf3 zm3%k@y%Z{Xc6IOeHk6Ti0Yy@3{i!5So0SjHUHl4g*oGY(_6KfUjSWfFt!<-5RU|K5tD`B$^*ZhY}Ac#&K9dl&%^kILFFTT@p-Krzy%w$KS5=xXO}qlDBs5@BmU z2ZXiq<>uB`Ii@V7kg3*7L}T;6tMOIw>f{6P)YqbyNR0OKZ)oaiJ294dd8DJz~P zs#z?eu#LKx-LkSG#qtwaeAa9gyyb|ktY_u+x4Y40Bwo`-p23v>lukM9O^%RJfqdQ0 zS=8yYPt?_ZLPVOwlprse@o|S$`&jz-e#e!YAc06(%Rkx9zz($S+hYcto_B4M-8rhm ze)!%FCALldC)@G`2^%WvzX1=fYN3J&2zS%W*?zBAZ*J(rL&e~(E1ny@#@?24<#Sdh zGboNN05@5_l(FPDEh?a@u5Vw3L9YKT7WxI)Hzp|Mk8M<*;%*bnOwZCRk2R=zot^QM z#5I?gug<=bVxdo0*O#|M04Rw%##ReuAP@YUeTY;W+Ddw>Wg&+FuTxtBjEc-FkBO2b&% zB9x?JH#0C7;XLRJaeXnjj$49|sYBIstR{ZaLGe#1VJ>sijg20PSvURK{@?uf{k;-) zTAf%%p@e4-@#CV5#4gQ(q$9-}J_pOAlAbT5R+~qCogW7CkVXc4B^~`3szM=C1GdT( z|FhG;;8jSmsx+E&;8`aHaSc+w&gpTby>BOO!|IAmv2CJoxkkO-q zf7{tQaNTEM0g?T<^yU?%rVnrc%Jb*jmH2Lm?dtRemb~JWDKbvXSi@ZK`yVt&7iYh* zqSMj~cCP%y*r|)?H^uc0{^>o^HRiS~s7&!Izib071He<{WQq{o8H>Uny!TjdG4u*8 zIC6kkyA0Q4mk%)e<#i>wxOTiH^K7!dOv+c^#X70ZNzXSB(owfiHFa?cf)PQNN+jlMWhiXB*Y{AFKb`TtO zd}-XM&x;FW&_I2xy`ASRKnLOe+%ATrN6mUMWKC zd1ukJOQbRB?QGcfsT@w8YG!qqApAe5H*J0QDy8vTfDQ+#ih0`BPqrFD5tXVD9TalF zUED-Mdi^okgG&;eFo=I<=jq_)$|3;<;!~TSjdqD8oJ?@RVR>A?DMu7SvV7L)#~{|o zv!X3qYQX0d?3F7Os7^J}@UjM>7Y(rbyo_C6R8z`Mio=CtU~NEy(@DPXo&tAjzd+j_J9^J=gqPm)y1mb>It-EONiCVRA_G{ zO&rGbOvIB?q@adqMgelh4_q?1o%E_QLStlkz?#%E)sXrDeHEs-3~q=JSrn{;SN2!{ z&OlXzEfJ7S=a->Ty&+3SA4}JfRc7Ca<^&h2h}vJYLH22bNC4OblDC;Q-(pCCcodc7 zi4)$7b$NSp&EgQea6_sWF;ji9i9mV22lp1bp%*OI+F4eb|~hqiArrAdTXNSqgYS zCx(GkBaaw4NR)Xua8#Zez*h_!QV-ywXi?#4L)3qj2V-^9R=?Zia6*GCRs@W7d5EP7 z94mSZ7&zbkD?s6BLmry#1QwvXt}4WEY=Y;RQMd@xy_1T{6F`hjGG8&MwqJ4TLlv~} zzD#&v;p=VQs=$6S!g$+dSN(Jukg?+;s{@&X`o#lp829GC%NY;*`RS!)YA?3LV&@ip zz_m9j7%&;UPtc_M1gBmB?0TE8!+|Q3j{S*5PtTp*n!2ffYI2^UhVyzB3|DLbkl5L9 zPu$kgl2RFq5siL1?L*bg_7fKlj}f;wO~rZ5F&(tL$8Dgb8282o3dp1m1ab|=)kHP_jkYT1VTY7F;L4y0lt7oOZsFs z&^MtD7T4UW6KlJwQrppW6F1p*%JcX=tCbT0-&sm89w8GZ$lY`0mB$g7G#8WkDDQ^| zt9)It<9B;oC-#F9zBgY=!L9i#x7|PA$xN5-2}CIg5kEa?SvED&@QRx-Ir+0fGhWX6 z?k}ZyDx`U^b63hSu7AIbVS@lLd6{71Na-Gakz(V7i_AUu;f@ykhF`uf9ElFvnp~ zUY+Ou^GA4hi@T)znZ^us@1m>geqMc(W@?4hpXk^8Lf6296-N7B&;lh3IUeg;IBWhdW7I^tMhb-sY$4~UqG?AQdjE4CS_lOZB zuH8(RVT)}l7PRZ!-i`Jj2+~2p*p(ov#OTEk8Ae74C+)i%}E>clCDqgAa z6ZTsVpIBs3H^#<$?&)|X#aJBhf_^J!`$#;=+LFf1c{W?+y0V@owN{)Q-c0@9x;0Lk zt-^f>H`Sz##DHoQ`=o!Co9_ctR}$f}nXg;FE^peTo6ht@@Ai9!7VFP>H&&>xE`8V91L@bkXZxX*=Vpj{>35 zp6OhH=$SP~ZP(KZ;NB9fKh><#mVbw(i4aOysC(*r6QoF4A*$``Rtcp`%f}W3Mj|j$ zzc9`LFrJ@Qt&@8@-+a2yeV!hU8`oDzL+xY$A;MtKDMX4rC@dnI?ct!t&H46G$X&qjg7B_P~asF*u){+s0`JbY>`?`r#nqPP5ZlCOo~Ze7cc7FD}4C1r8TlKdr3 z{k`>P;a^Rf%zbFS^WoFYnK8Vd_FJ)1;F-6NmGw_ikpkY@C|1DQ z0JE`WF1Yl7!sOvmMBOSaqg1J#Ck=qBO-tu!i8+%RnJcD@yI|BBftsob!>NS@)Zu_Nk~3WW$fz|@Y%pemr!cIa-0XLeEP&o6R0AP zU4G}>rLt_H{n~BsGogfz38R23NsCa)W~1xJz=`oov_qlSv0qC`K1Amy0SsB_D*grV zS?UP5^aQ|HTue}M7fl(a1Zq{x6~JB~;tN2;*#X1j($R(qBCxP}?dieA^qdG_7a0@4 zReno!-(EGoOn#idt(BIQ8E@adSllv%%>>}GxD(!h@es)kur>H)VnS_(*H3ZR$=54i z%(?9Zx=eo|q}nd+e`M+uuaEBDh_p`vp)Ym)^ihrhcEnxu{zC#!ZVC|a-;Z$q7oF%Y zxFiKA|MK?>nsz9%lnJkWAK=>=qf6vE=>azA-GIPtk0m$hUHZTG33 zBsnW|_<gGFQGYCz+kqI`8TKY=K&1Ej=iVNM4RgqlPg%c(-?50f-H+YhMg>{V~$mHX@x45vt>dTp4HH^7xtbUQrj zOhc}0&T&v{@z!MYeX<f-Y3X@P98#)||nS1UAe^k<|G*`XzxM>!Kg?qVH9%vQ(>ZL#d46zulRF zqo?zpQFnIRUm2?O>!lr4b^pl;=`%8{n#C#EcP0#gVuobg4bn(dk?V}Q#-(*jxcFJ| ztSS9`QcaQiC4edkHlkmd9m?;Yrq}O3nky%D%_J?w9z<#~ac0PZfCyj)z-(G<)<1L? zcdd(oN@yS;RydT!SFXeG4 zqjhokcOJ{Fqzd@>bjrAuNHF+qu>!&F&Cj>ocBiKmNsyIcQ*C)9hJ!5}&2+dS>Bq66;0nU%$b$}X}v zxp8TJD6OEHHfrHIuM@L-GK ze@#_&)y}L6q)5ttpq-?l)v9PD;#B?%0?j(5RaPwKp!!61luZJF{y%4o7Dd(I&%*USZgnf zlF^I_-TVGa{T|RUFIcX{g_w~qqk4UECdi9#&x_BG-@O&a{nPG!N7iY2U0d>pgpXbg z&mvAFFOgX84?wTHI#`<;1Z}QZCeQNg)=UuDccj=Vqbj-I%D@BR1zkBW4H4j<=MB!e ztP;x(i$N0)QeP49@MNy9`?CFedZK+x{Q&_CxdJCP7R!=$$8gZFxKtsfV2f@*g_rqH zFjN9Izj3fOaBX;2%M5fsB#_ZYw2u4;>QE#2NUoX}V)1#HY~IUo2=xW2Bz*=Y@Apu) zng-q{Trd32LdaVH(iuEu24seM%{$4v5CYEK!NZ0{f%g!nb9aKnF&+7^p1Ht*)9AD6 zR+^{Bsu3aI+4J=|+nt7@mzlKO0Ir+@JPk)ZEd`p9lq2%`c9Z4+8yXQ>RuhrPxEI29 ze$z1!{PcIFW9LO3Y=B~UQc+h;B#Ei@a_=o5^Rmn0vfCf=pV@^P2s35FDhK^#e(GL; z-1A-Q@6}cwmfAuloP>?!a7t>Dh4+^Mv?gg_d)#>XvYFRfW4&0YXRA7$Sd2^sZ^-y^(4F@*rPvfAZo?;|0%^WHs)#jWet z+ybH;LT+3_=O~A{ojx|L>ecu*!J-p9p@8U>1y*=Ej1QK)GwVt$hf}$$U8hXhNOOER z@p<};m5qDq8>GFiK~GmyPN%I0R2Xq%3xxDQ<=iCNx%@#-5^|+I@b^+2kc2H)pm)2$ zdC86X!Icbt0c!Neoc)T!2*^!yl{No@+?z+NoY#%_YDUjCkGCdvIiU=BX8@(M&XjK% zkA+WmDvN7;8F@*ryjz4JmE?dl&2VVUg4IZ!g4T9Vjyu>GCaPbFy-?C|9(qP(ZgiC_ z4CMdxH1uZIS*e8dChi8p`F+ZKoA8N%@q#=j&jYfs+j~0+_`u8@s&@Dg72~WTTC>bg zvzg+FueB&Ch0QVql#yKL=a+xnotAM@3qEVbh5VAu`w5(PHD-c1hJbfDL&PKt7Vb)7 zTp0gD3B<2s_QYx#mdGvOHl+Mr0LpdTi7KVMI~3gz9ceC zsfOEgiT8!hPN{vcG106P>YXV{w!mz%IKUjZ$!PUAf^3=;kkxfOP5FS&tiy#hQlR-3 zI=A2(dtCS*GI~Md#a8F;fkI=Tmb5qFVNYQ|U+HHfeTNFz{pxz^Gtj*YzWf2QotB|} zcF8XpkltAcH0P(veK^}u5!0f3>1d?$j}x$$ia}vly8?;UfTiNN;C^Y+u*40;k#xkc z0;Pqal;HOl*kT41Qs>_0ep~i8cUU@-xXSEtfR$FJ7_0VuP4XMDnKc;g<`tN42S~OA zuC*hP6(yV=aj39pk4`q;$c z&3#gLF@e|&bl{gR0plDdpak7wks~uWH<{3T7RLr^eW(8MF;KAu7!WnTti?YCXjZ6j zTf*?BdA0iFgG9Z~|vq+d6({Du`QH^8&D2d0n8wO>|4t zhp9d4Lo?UJ4a5@Nv_Hc8uO-lPn$#VtO6JctImrthE@jdY@!Oq~1u~x3cfqKDkQVqJ z=)^K4fP-)tEnJF|k&x`>4v?#qFM%Ww**l{fyK-Yw+_8-LL`EMPZl8U$6c>T4NcEL~&N)|r@V6cbZ~*kFbICr&a(~xocfKh*ROz^( z_|vmtXY$AdBW`Yp7}=XK#J%)-y!?FTzHUq)kVsNRR5tetib(|5Ud;51HuLZA3jmQ5 zu-O6TRe|q3x(!hSZ|3aJCfrP(L1mR(#)^5JF(hih2AO+U`xf_U?Ra<3G-{&y`$cA@ z1hIMMvNX2ReC7o#p)m~es)%NS|Fs>y2iL*yW7@0t7b4B~3uYtc2wbC|-{rD3+$B7| z-%UrIL4HGMP^ZJu?5yFq_b`K#=!TQnm7X5@MS$*_om_d}!?*ni1=5t)wYZ?lay@(r z_bN1>y^f+;L4Krf9jzJc_M?8f2+}w!7d+q(q!5(_@yy|a&GYHwqO|l>ltx;DB2QN+ zffb}=PbgKI#M2ZE4h~9HZ@u;+xz8b$F^jt;fFy%rrS4xF=y8l$P9!`RB=Af17fMPN z0YB&bPP$d!>Wr3P3xPZ@F6xsMZhlO23J6dH<~rVuj2sOcg@#mTXU`su{;3_@ag~ma zRg8;P82ntjrIOT<5bry8Y_7%&YH1~I<;xu60apzZT#aRul%~g(ceG^1{oSZdIs&LZ#l7QREO9%Yy-qyI9lp1Py{W!U9=gm4vTu?n2M&Cge|_1chBpw^ z9!t@DjTagsjW!jkpJOhxHa@v2dz>_4t3jnNZNclc0)uWsWZT2XX(qp*mE5BioEMV{6R5#Ca^Ke-t zYu%spe+&(<-}BlE5MeyAjZd`BwpmxaaK9d7gbn%y(csy}85~DoUWiu?I6zkzPQ9)x zvwfR9i_f2Ag#y->8vI=ILPp__vt70=o7uqx&A(`gu@iM|1|B)5ZiRFF?#IE`3^Nui zskFECNh=ZAM*(!`&4a=omH$%E^C$zrEEg%HG=L!oa}YN5Cnt| z%6;nXwTM%Oa@aor5v^#EQ;Xye%DggL;@2^yKlg{ zuRW9tvUyca|9mX7x`Wl;V7GR;RC4hUx&~;qn6GeQcP2l8`WUz4s`P;Z+Fv4;v$p3` z3F%0h%`7GAk*3!VkQXx#@pRZt-Od=h}7Bkc|`vpVu&0__4ByoR$2g6=Vl?q`#DTdsT z;krwy(L1s!hkaf4wCt*Thh`Zu-AgyQ>Ml^}DL)4Ha&l});jB1G zvQfHJk<5TS!m#+>;nvM^cK$Vl)MS%dm{}s8GQqar3VCZ{WxoBy3t~Th#BK>(1jr{W zg{AQRINI0E5>G6dz7t}%yPTleV#eQgieGZ0-u|E>L&Cxp5P4`$`RpJt5u-SDb8E0ZK?pF}a;AZIa$HCf!o-1S{KAv->p{h0jpR-Rt^af~x zWo5}TSMC$Jj)7Sgrm2`t&G)lX4=xk00%<hipp-)w)`d~QC^3@!+!q8ACspw*s?0nl7PVUc!UMuA@P?nI|^D_Hx zz;2-=a|tDVrM37`EA8c%EvgLRh{-PNv}Qn}j67RW)SP=2@t*`Miy?Z{fL?cXfXhq< zdopnEsWI5b%;HsI(7oR|xutIqs5@fNIDTbniK#c?GZno@8006} zcX1pE=9r0^UHjoz)~U4EVCYS|F0WOlPoSOO-2url0fa-=dh^cZVj4($S1U(SCOm3< zn>GVPTnd?GRtIJ;l8;oKp1n}GzVB_Uwyca^G1T8)s;NmBENsQN&DA!%m2(WJIX&Nc zv}MY&8V0}48*m!M=L`;=+&?iIju(gi7S~B1b*smZi&n(MR7|oXgW6xie8*rZ6LY8r z)9paszO}b+U+aji0GgffwXT9?tOu&a$A7$-V5#7(BIiMA^Bqylx077{BH;4$?^3x~ znsOtoO37SrUp-;x&lY`!R;&QuCtm;Cvo90ae@V8N=Nu?z6LwH$m0%)#W2aG-E2NMB z|3=39eRiq)F9s#y!Xsdy3E}EM+911$)%PhF4Ntr&PN?B`tQy!Xrr{`RLMrg7yV`N} z2htBPBFy=0-_Z8q;RQucTE@0ldkupf9hz~2?2ErhYccTr8`iF)62()`i~VM@w1n8W zRP^@eTN(x(*}Wpj(KcK3$nlsWDjz(a&j)fWDkX>`#GPW4c(bmU^d2lzC2M+$4ZDwy zqdQK6rCI~ezTVr#5v`c5o_+CroDE)ny3btXZ#aH~(ZMKsi|Ql4a+2cUxy6+ZNc@rJns%&hdRc zUYh@g(Eqyji8*SFgwI7NFyYocoPs%|JGdmbB%KmB5^%GYTh~_anfmN04AVOUmhYV0 zS3(zY)Z(R0T_=0<>U-vB+)+ofD}+@?@c&sX?5X(VG)z~V4jQv^aT;i5V)tDzNB-(Q zZ8?&!fpFTfdu|kmjIJvMQ0e_U*lXTq-`ZA@`%nHK89I@|Xu<(O5%3+gocIWuNT2`V zD0~oFkjx^dQ9AE>(%V~a9=qx{@@s|P-5{`UYFjpGxJ*c&Q26}*^oyw_7tbdmHYeJO zBaI>ZlsPrhgl`@!>c40~39=k<{c09!P39y%9j+$pR%68Y7*rMkXY4r!lyr?=LhdK5 zGeGgA_ycgKHxeRR#n7-MTf--{HOFRq?!Ji*j(=D898#v`k#Z2fYOxn`>W7_ngq{65 zuR5f+lj)z6F?ZuYuTDh227Yd z4rlD>NMUA2VPQ`gckJGuD)?hEcKjwImWZI17_hEQ^a|G(!_*L0SYL(g-_MXqr;Au6 zrVN(%Gv^lXBJjdwz|rE?WJnHv+`fo57`g5E-t4qMd|(AjxkETG+jRCTsEwQWtL zKuth!uDx2akZo7rF>fa6u|AjUr8Jl+!AW3?wS#9b%ND*C1D^kvdSpk72K&H6pg)e; zc$*u)Ze3?kkkqE5&VICz;IL7ArJ2E9`un>HhuyIC7CKoKRtu2I-ks_^COWzKT4{~- zZ%8)8MRvy{nc3IgP`L`!?6_|22@MM-cf7KL?fn85^ILTr}Ih0Ssjb& zt*#L#X2xHO;xP`GKhx5tpn-e1p>3QkRZ?=sr(Y&JYZ6-e{{$`js&rdds)_GXpI?M4 zMs`n5?ah_*)ndF&kZy5(*ck%pUatAw+DEv#-+U7=THdIrk*&M}+AMwZO9yKF%q&}u z%L9+=&2t{Q^69PC|3=D3v6H{i_f?e^q#yX4?kf%=ZG#I_{#3UbRZNci3NDBY76^Bx zO#+!zI!?2Ct8Dxn81i1^LXkq-2Rh;G9hOwxNl3z{hc`3G&PM(IqLt7l<0xl<) z@*qE#c24eZ?Qd>}+@6!s$x}o~_}>6mx_N+@cY+{CS6?2aiW#1tYNa_ynjrNUF&K?= zl~s4?$EtawEdwkLLSkTxXYhK^b)-?GCZG!TZV$~KrJ??|w|#a|Q|h&b8`US=rZ3aG zPFFM)q_pBY=NPkxkt(7j!b3KXK(JsAA++FWz2AAN)?9SJdXir^XDN@ZzrOD<;_C2GE`nYdee ze&$AExT%EhNu1;LnTin3;FV}PCQ8D%t(&v78DhHQVz|fJt6K4$YF4i2OHWUCvsxQ% zz3cxpdrs|c+*mVW59;>^G$+F5#(!V0t^pDJhN82j4*-a+b0@*`Z^uIJJ13+5sG5(t z0;|c}Ph}-C>W}Ea4IFjaGAxP&);(wd_E`I)YWIdmmb;#$hTUs@HI58cmMglO>%B%C zmXPk@iMA60LH0W1h_WQkm0W3#wJLhr=pp1xbQ$;goq=B0^__*}vB{-du#%t2CO7IR zq~Nme`gr*~0xvUAmh3Qf@knsn(Ek>y#$t2>-8T>n8qDDt33& z+}82&8kVH-Tnznr*P z=A2%8X}GO*eo(xwALlnS{D8*^>(WxiXGlVx9WR#&o9~2g*-ixJMnKS7=Cqwa$=it~ z*Mr8m`Y>FfypFEp$96NU-O2|G#)#3nbDix0-zCMS{xrdY6sfOU0VAceP^G73D+6yQ zndiYVzpHe}^O4W}zMeHcvI*{xZRxr8-DMFzLEYtaf6-WrZrol@I({X-3IF)n+ZfQu z-}@RtPlGODP417rOOA+vp}kcj2L;9)WBO*Fw<+b6kR6t8m zGGPi*&>Tr(O5WB|L^&sxr!GqGlXx7R+BqcXo(ue4`wpl~o#XEzD(fy*fWs;nw{gUdu69Bq7)-iJI{jrede@yS>l3`s-0JJ2&ls@4<^ zq4zOkKP4=bxcPV%E@IjzQ-UQ9&;21M;PhFi;b}+e`MP%~(2+61md^9NRMv2px({Jg ziVC5AJdV2_r~Td?-ET^3 zE$iG55i&ExQg!+Te!q0)ewg*xyS+x?h?)f|<}Q9~IUPdntyYKoS9!r+br?HI$5py> zbUA2BcP91Vviz5>tjgAqv0kjX>nF?JuN#)(6ECc=g$F#`?Nn-d>NUWlm1}J4|Mp$; z817>co25{F7L_oR-}*`4EPm=&pScWdsJ>?HipVKOdlwHW>&dwTE;Yp+M9PAo=R_cv zr*$s~lTkxOa((Dg&TW^MhZbQ$LO32!FaGAB+K^3*$uqZ<{d9Co`O}#fFN10SvW3cR zWTa9Ed>y*Xrxz%m%t}1T%UNmrngfWcGDoQ<^y4eiKmog$IhQ_K$zkwNcmo54bkskU zp>tz%kBuKu!;U<dwyH=-C}nzdXxpQZrq%$dXev~VKtu-$!o<$E+|-$zLNA%BprSr z)UMq|AK={{rm!-hV0^!2sBRLWAQRlW^=tvX**qo0k*t$A|5gW4-sl|nSJN~onD)ui zK#%&9K(d_e@UO>1fbXG%hMdzY*ZaR-=<-RO5u3VDTi zEJfwE6N{-%;U@iI7TQa6I$S+l1(XiW1Jp#vgpe~LJyzbKZI=B@4W7`y7L`D786=UK zIv!Yx@tM`S}b95@J6hr{WeS@RVCkjK{cEh4%9A(YoId7R?YXe!hpNQrKs= z*U@nXH&DJmP2-HfHJkF!P`T}h)fQg~4Lj1q`N>lLab-3sG@P^zVVDLeGn1GNAwAx$ z`v_9Sf1as|*^l_F+nt`p#^w=X4xdnV))O+rOC(dHEe+_(zdVS?#cNDObHTDf!4 zlwHo2>zZ|~yU_9{3*jo_);9h*`v?ZQLbpmeEaO$#zLJ?O&&q2(Q=|t@_Fd^<`Koo61JdPwa7z%TBfehhiVm=mpM%G z(4q0V?cNWiY9^Ni8cIr7(4st;GOVYk6?c7kj|YpCF|`hU9fhg1T;g_hO;AN0?|i!y z_Z$GdQb8*pdwBFZkFMC$I)15zP8^h}xCO=zVsOS%W20B_`aEAb!sh7{I^9vX(`8jh zad1|k3AmY>m$D>e5LZxje_>!D3A(}zPILa^TiVU)Ql07O7eO7vN`+&uu>L&9C4f|5 zO&{uj=dba^Kx$F!Zpa?x;iiq7uU8QzcELvJQc6OPQ`>K)XyNNe8`) zD$1|<#Rqs-7FcLZY08~>)RY*LjZ&>v<81%Y=*&7nX2yu^ozItJO_)o4LIM>7K~cEw z5XItgg8uSC?H$yXwTMD_=(DWYH3UQ)P^gW_yYWgO!Q!8~p50WbL28PuSf7wjGg1t} z5|yiC@m3G3?$Csg+`eG@^HxdfCKt!aQCOli9^y;o&7|IW7z2-lhn6(xjC+hm}bgEF<{lkyM6QWo^kD?Byh*o{Zf6a!)D&_;z2FT=VA-d1(%aJ(6W9 zo@F^$bnbldBIg7B_qC5zzk(?XD|Qq4*Jga|*bt?B^|DGHs{zP`%W3-m6|!B9KJ#~D zk+m_m3p})T8nl0PuvgB0`S)*onUt5HE>ql48K=#uN=1#pVyDI6rXJUBo7CZ9L+K3m zn)T!l5Fe>CbJc21Lpy1AvHGt26i^$8n*X(t;=(YOYnU3^t@-8CPo&uJ>i|YCX|^_% zlhp&34Vy=u$!Mf1C{b|Fx(lvJWj(0cUW}mrhkNhNOciL-Mk(_VDlg9Jx0X$w-*N~@WCWA7RQOyEWr|B=ai^zbzvL8=Nm#o5AY6k6` z6h$@`t08Od(qdf+KRv7`A&dauK0)m-)bQ1)=-8-)PQ*Oge{9~-u*pe733PC%@a2%B zn4_|~9)xA*7!QEwGsCw3N(F`bHBYF9Jn)(eMuGO>D6F?t8$qF4Y;-SRQV#HNEbuG zjY!w7;rc%6^yy?#a3WYoDryNGYf}|BC&QasYBn{$xa{0AZ0pD|r$RTcL=J^oGSwlkeq^rCEF@fB*Qxq5-?V zZ6#DvWHX|Fk3#3bTvZ{}7)b6+VNchIflZu#D%lPOGV1Q0H<4UIY+k@yzi=fe;sKBG zcrwDCAg=eX8NW0sf54tX(Wt<_RBI1xZjaqAuotlQFYA;L_09~-DJJzZq5r@5`v*fW zJY$3u&#yYbm$lB6e=~>m-ZMwQ`eT?WuQvo{@ z_e#$`&Ze%+i)IgUOx|${&-UZ3R)1l_tFSst$p?<}=iI25iX!QWRUVBs0pKHwzGTTsusJ_~CD{SNJdxy%wD;RF91- zB61Gpm`r_hLTW4sxTIyG;cuV-+&Y%^HhJfORnApPy%|O1J!hh>$_3FIU`b#elQ?X0UrV6p6S@nj%*N|0U+NBU1N`C4p}xesk0rkoCUgFKTEDT zc$UCi&*p><-E;dnbP#*|eX6MUvQvl{vkKd`lTCBmfEJyEVt!uQAr$L~nS5eR%evf~ zBAM5U1KWmk{~Bi6=q8qpaqzlj(vSAYU7djw zQEc?owa}~eJw`yz22e0IKAj5N$X3Yoqc5MMEU0nNiyGbpYF_V2ayaNh3g$E%9Ht%K zYS8-*^4HpFrH*N_^Wndehi*(6x52xvdek@Vgq@WZeCo~Qnqf!~Cm_l<{$^s~HpG)pdPIgtYMN<8S74w(#vAT-g>) zO^mN*rlS!P%53tIknCj=Kh95v*&Z4W?=EeZCA-uvsUlgyl%v-iwCduH~29u3RJdSPyE{TSPQQ$rqREoFN*tHSu@7jM)Fyg7cd^GTI9%;ifR^QidZ-ov$f&WB|yA# z0dr0N$mEpxZOP(kiXh+orfp&Pye5^vAXQ)0MS;utjxXhJvoWz*z35F|^;~`AYAeg- z-968dctei!q4N}9o)z#qG>2T>D)dUlWLyzGcYd$BXJk?9>O4=vs^-<)_m~dT(9$i@ zr`5VwK2|ZtC6zwf;;>+9!blFz>>Rq?&6o(M$rTlDe13xCxBwUw3sXoR^w@bj+ft)- z-?Ff=$$#AWip0Z&mHK*S0aJ{)uf~66Jk7e|eoy#SE)yPFe{@=LSLP1e&SVReKiDcq z)1#qbBpUk#Kfi1`0AFzC@*f{>;c~y7BT2y$L(6a)I=pLOtdyaGyCdRS-X%MH;=YG^ zpS0i*Fj$FH=8IB7D%&_k%vBjUbK>&8yw!+MNtX@M341X6$0WPh$S;Zfb;EVwB86Vx zbPfVZ))%e5Rz_grw{pZ5%F|5Ep@V3{)zw=bEgGCuLuwI`Ra={XZl~oA+E)GWmAXA$ zVU~8u2kAU8fKV#%e^SgY(m1qS@8hiQ`I_bvXA*+rqV_gEFo#NY&dEjF!EaEAXT)u= z5JW6bP^16NMEm?HBlHhqT|>=T7eu7q9{2`xYL_r@1*pSQnVV)<({zWn56$t0iz5k4 zuvq`Q#q_FY#RMfu7f}=qxmP{^$(-n8@BDcYd3M8skBXQ4umZ##6v#2X>X|Pg{eaCs zjikUBE~;0yOTT;~9OHF!ass4wg0GGCh0P>2im6zvSAdT_z6?pjs@?NTLm;3#?Y9sQ zrGQVXEVagUdpZR%tkvY0@vUaV;;YfzX${WyY0p!_q3S;6RiN41IgcmxSIm)lkL`c? z!(M05aA{>pboA-!NWGcyDj%ru7_tIqc3O9FlU3H&tB?m{Og9jiyIEQYruEcpt2}|= z&)SR8+bM{0^`-r{qqcDZ2YoLmZdOQ3EhL)VFq#c!KwXfGfvD!Y_Z0o0cz1U#ExT@* z*YQL7)K?q5EIY^>aW;(jX|m~$ zii;O_mU@x@+>`kPh>QqJCJnuBWPnED;h;u1&SO_f@}kL;P|Y&pFL3Ebx5l z$0po0KX2p7ZaENoXx~M&tgCap6R;3Gmb7eAUTyLKn7ot%(&N^#;0N3iaV|>?^J3nV z>=!BH3N*Wv(G>X<@u4c;1&RXx+BqTcpW~s&q26YCC7`$^ibq-ZlHEMOi zr0Fe0UsPl&lYt!*2r0+%=H_Dqr;X#hM?P>4-u!$S zyA)dm4|JW7lyl8&sG7%!6XGeYyh{)61r*oa?%>N+$F@9vEQhF(t<{pFF7UJgn-j97 zUqsvW#e&yc(xQp04Xm1Ve!&I{!MHo&m1D$iWNKADyQNVznTyFo{RC|en7i4)MVqe( z;qiNioFl&4dBZ;Vr{CZYFA!E`s)w%oUWv_rM*}z05j|Hm^d8Yh8+fvZ-bwHv zkL^yXXuk`5;&I%XPMYx#4Y;HI~*;C#5x_#`txZ6EL zkmI(Y?V2%5+Z!hFM_c_KS*oC+$ggvgRT~reS->Z_COAQVejuo(FRd$<23_P~)T|!J zNBZ_UTBd}qAExaI@@92mDLi^gMKmyNc|>4`qR^{M9&t7$6@tLLaJ!k*7Z3XNx#14nef9%aUGs zLT2kT{YR(^uvE39)=Rx5(6GcBYX4^OUio%!%gAeVx|5b zDMMa%bIUnyZj#<`najD{hyAsn3>Ga|8nVjw0lI`3w$t}2wHs2EKIwZXzT-;rJ@57Y zHAlN4aFDB?yq?(#vXkJGw?bwK*7Drgb>dY&hvmh}{aGzoM3VhDxHVOXGM|&^v<&gvjUI}2 zR%^nf1OIf=AIc1wsb=J6r- z0Y|_Tig1dHNhjoRy;V+HA!*-C3!0ifIno&N46gtkKKpi#(}{56?vITJd9%Vfs=Xtc ztfvRVjaZ}aiV7{RJTOZ0!;-|yYrLLkDZXHG#F`l1f zHua-Dkjm)>P5eGIzF$;mFx6waG;zke3kRo0j8P;*LK}IDAs3K;HG+TI%mTyZOl8qf zUwj3uB78ol9_4CNJ)C`Ax3ZqzkiRe@FD+wVC7}ESzdap(Fy*~Bpl?cd9Ht~;en&|l zFZhS0X2)4S`gho|)$}U!g&1b#^98m$@6VC9G{o69&M%Jx?h$6!R}$;)>DJd8rW8oF zx+9SHUHbg5vLe7HHQ2(c3Yf}lc?n<)^SG_qqa3<>_s{u&8TShqJMGPT{o6TiCztrS z6+Y*!ncY;rFXSKb1C1{RBYPi$${HakjDqt#amTyPHks zK+|8z);&I_n86%wB@wsY*u@YD&HmvwEQJz?J*`;ZlP4@@mK{Fr{O7HyiM!Tw#I_oW zmx{%;y!_Q@{ta%X-KqA2_p-McW4QYEXvR3oXQ=n1ST`v|ezDTek0vF)ng$Rby0y`L0i!P{iaFQb0;wdrh7<3U2k)a)sP&$PpL}0$%;X(s`5XQb^~O8 z6dm4U$<7YZ5BLXo_~bvIxH%{N2f>xzi97smVz`)moTSE;?P8VrJl@8VMPr__rvkIW z>n9lB%FB>isZCH;r!XJ{0E!$iIN60|rdiSa&ES*ee4b)3y{3tTZ#u^XSiF=KcyzR@ z_t{<-=JL*)$ALn%60;?|Icv(gv2L@Y3p$Oi!OOo7@${*9l^y_xWjh4l!DcCmM28@?{||&w0{j4GTNNlIcuWK_PH@8pfei<8 zOd)|d6(Lh%5(yj`SgsK3v<5o_V#onhiOnL4+nhp5L&6Q7`!E3Wm(mF=9AyGA>SqyS zN?*di8bmeyA7TO_@YeN^0z0X@-{w z5HY~?1K<>e%tRM$xKtlu2rv@vr5_0J08PFexgTh=4THeN!E{OawB#_i%sQnb4XKqW z?^{^|-cW7PX~?V>ni+zM2X*ts-}^g}3Xntikrg#U^=WkAWyVAH>PT<6UhMQLnonAL zNf1qK8z2Q5#iI&HYNsQ26G=@Bfxn!uRV4K#s3^}1Vok4aU)Lf68m zeC753;Rbc#VUV%jdLN)(d(CXBPCIUh!99Y8V!=c6Sih-BLr}>EC@oWp`NlBBeOj_Lm4W?$RnW$cb7!tk_NC)qRc!$dnE{#I{Lt$fr0j2y(j3TBqBjmeS z00+e+7^*O$9@+Jj6?D%yN6p0aqQceMMuJh^ty>Wf=P*C0U%dqG>I=6h!^<^Nt}23p z0J(KD8qmYS?~;de0tOo|@l7+<&2=|0jtK;_Bm%KyVw1o}qgQ}jOmb0y)AbR7#@9cc z!64+ig&Th^0mT6!{VVwy4N)&7+L-Y+kJ z#mT@y`fy;n@~>Ya9Nc$W^GlJX@B!f5fC8Z2wSlpjoxOg()@_m&OxzbCNgbtF7=8ov zLhHlHrSNz$!n2XneL?_}$FH4T-97Cd9spo{T1DEt(gOpxK+kqR_^wT%>{)w{>*-(Sfc?gz% zP#!k@!!l8IC=7&dJSjYyFJL)%EO~Y^K;ODSH17W&8Sxok*jCf#GnyiZ zBApttz`o8gc={9T3}PZmuyQyA4#Gy|g|d?W0%|KR_t5g3h3)@dF2&xV{&Cv`N_v&9 zU!P=U`ht;c?N_Y*+i#ye{LN0-9?x_%qVM#@ZE(Nky8gG$vrnsmXorq{+*Lz*I z(Zm&l>mPT1?IB0=rP%Hr{a!u}?#QvqHF0|j^@MTv!tedM*0n5~PK^81PmBBf0!sbz z39RTf7FIO9lQWxnTsi7zWKMoNyu1>foM%L(!amq0$3FfsyDWC!6Vf!Gd_UurlEVPM zWXW=Rhy`8S&aIiTzpAA76#o7GOlmT)ICy6W_i?SHlIWp9P1?iYfGNHGn}{bg9Bnz{CxWUZ z@uM{zvuD5RDit3@8hscW*IUOYSa72g0`wX}ygjg%K`~1oe{{x1_fIS;z9KFcW~$Pi zvv_oiS5^4-7b#!gT~qh&;&A3#EgI>o-!s<7y~PfUX4R2#T+LB3y{!0dJ1CwzWhLHQ zvtguFQ*kI*Vt=*yR~{C11+8$Yv8kzat6E(j|3Q!o+}}^$jk=?$NsZ-cV78%YajYZ3 z^S4EY%}H~fPn;nAA1i)Nm`1H0{Vf~BCj@b$QP3pl4e}RyKmI2BIMn_8wy9AXh`B3$ zKd}G>OIs~4{`f7}|Lb>^>92(sBJD-Vdr~=9Kd#+cPVzE83ep{`T(*O~(93_T6fFbK zv&Eu%CrNCef76Aai%x$_ly+wz?u_k^BQ6UC{&$o9wG7dY@?_=9%16YAEu z86dNNo}Q44o$NGyLD~&Nk+BDUwDo$E^bCj_U3R$eV7**ewjLrY?_VP6(_|^jqd+7= zPBv;JJC>92oQ;2xt@^{0_ntZ0grB$LgtfU#*b&K++PN05Nz_}#0-9(pUqM5TugvoT zE~9t6v#z64>qOv@aOn5?{Bs0$K4@iV=h0}M$k~N%SZBf1yR5m<%FF;!vI@70Ih{^#^o_y> zx_rkY-5$QJxD(J71@4|Gr^oolpsiKQ*`8CoT*lC^-=}8p=*p(JZE`yliv4;OcEBw* zv>@dAev<{fq3Wo%f&iJPxt!N!Ks*PS^A~_`{=dC;10Xt~{{Q7_14!zG`v04&2*9=z o>ir+C;RN10sIS0&a;p - - - - - - - - - - - - - - - - - - diff --git a/Chapter27/onlineStore/public/index.php b/Chapter27/onlineStore/public/index.php deleted file mode 100644 index 1d69f3a..0000000 --- a/Chapter27/onlineStore/public/index.php +++ /dev/null @@ -1,55 +0,0 @@ -make(Kernel::class); - -$response = $kernel->handle( - $request = Request::capture() -)->send(); - -$kernel->terminate($request, $response); diff --git a/Chapter27/onlineStore/public/robots.txt b/Chapter27/onlineStore/public/robots.txt deleted file mode 100644 index eb05362..0000000 --- a/Chapter27/onlineStore/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: diff --git a/Chapter27/onlineStore/resources/css/app.css b/Chapter27/onlineStore/resources/css/app.css deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter27/onlineStore/resources/js/app.js b/Chapter27/onlineStore/resources/js/app.js deleted file mode 100644 index 40c55f6..0000000 --- a/Chapter27/onlineStore/resources/js/app.js +++ /dev/null @@ -1 +0,0 @@ -require('./bootstrap'); diff --git a/Chapter27/onlineStore/resources/js/bootstrap.js b/Chapter27/onlineStore/resources/js/bootstrap.js deleted file mode 100644 index dcdc4df..0000000 --- a/Chapter27/onlineStore/resources/js/bootstrap.js +++ /dev/null @@ -1,32 +0,0 @@ -window._ = require('lodash'); - -try { - require('bootstrap'); -} catch (e) {} - -/** - * 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 = require('axios'); - -window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; - -/** - * 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'; - -// window.Pusher = require('pusher-js'); - -// window.Echo = new Echo({ -// broadcaster: 'pusher', -// key: process.env.MIX_PUSHER_APP_KEY, -// cluster: process.env.MIX_PUSHER_APP_CLUSTER, -// forceTLS: true -// }); diff --git a/Chapter27/onlineStore/resources/sass/_variables.scss b/Chapter27/onlineStore/resources/sass/_variables.scss deleted file mode 100644 index 172daaa..0000000 --- a/Chapter27/onlineStore/resources/sass/_variables.scss +++ /dev/null @@ -1,7 +0,0 @@ -// Body -$body-bg: #f8fafc; - -// Typography -$font-family-sans-serif: 'Nunito', sans-serif; -$font-size-base: 0.9rem; -$line-height-base: 1.6; diff --git a/Chapter27/onlineStore/resources/sass/app.scss b/Chapter27/onlineStore/resources/sass/app.scss deleted file mode 100644 index 3193ffa..0000000 --- a/Chapter27/onlineStore/resources/sass/app.scss +++ /dev/null @@ -1,8 +0,0 @@ -// Fonts -@import url('https://fonts.googleapis.com/css?family=Nunito'); - -// Variables -@import 'variables'; - -// Bootstrap -@import '~bootstrap/scss/bootstrap'; diff --git a/Chapter27/onlineStore/resources/views/admin/home/index.blade.php b/Chapter27/onlineStore/resources/views/admin/home/index.blade.php deleted file mode 100644 index a2b4868..0000000 --- a/Chapter27/onlineStore/resources/views/admin/home/index.blade.php +++ /dev/null @@ -1,12 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
-
- Admin Panel - Home Page -
-
- Welcome to the Admin Panel, use the sidebar to navigate between the different options. -
-
-@endsection diff --git a/Chapter27/onlineStore/resources/views/admin/product/edit.blade.php b/Chapter27/onlineStore/resources/views/admin/product/edit.blade.php deleted file mode 100644 index b8e03d8..0000000 --- a/Chapter27/onlineStore/resources/views/admin/product/edit.blade.php +++ /dev/null @@ -1,61 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
-
- Edit Product -
-
- @if($errors->any()) -
    - @foreach($errors->all() as $error) -
  • - {{ $error }}
  • - @endforeach -
- @endif - -
- @csrf - @method('PUT') -
-
-
- -
- -
-
-
-
-
- -
- -
-
-
-
-
-
-
- -
- -
-
-
-
-   -
-
-
- - -
- -
-
-
-@endsection diff --git a/Chapter27/onlineStore/resources/views/admin/product/index.blade.php b/Chapter27/onlineStore/resources/views/admin/product/index.blade.php deleted file mode 100644 index 19fbe4b..0000000 --- a/Chapter27/onlineStore/resources/views/admin/product/index.blade.php +++ /dev/null @@ -1,98 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
-
- Create Products -
-
- @if($errors->any()) -
    - @foreach($errors->all() as $error) -
  • - {{ $error }}
  • - @endforeach -
- @endif - -
- @csrf -
-
-
- -
- -
-
-
-
-
- -
- -
-
-
-
-
-
-
- -
- -
-
-
-
-   -
-
-
- - -
- -
-
-
- -
-
- Manage Products -
-
- - - - - - - - - - - @foreach ($viewData["products"] as $product) - - - - - - - @endforeach - -
IDNameEditDelete
{{ $product->getId() }}{{ $product->getName() }} - - - - -
- @csrf - @method('DELETE') - -
-
-
-
-@endsection diff --git a/Chapter27/onlineStore/resources/views/auth/login.blade.php b/Chapter27/onlineStore/resources/views/auth/login.blade.php deleted file mode 100644 index c7e5ea0..0000000 --- a/Chapter27/onlineStore/resources/views/auth/login.blade.php +++ /dev/null @@ -1,73 +0,0 @@ -@extends('layouts.app') - -@section('content') -
-@endsection diff --git a/Chapter27/onlineStore/resources/views/auth/passwords/confirm.blade.php b/Chapter27/onlineStore/resources/views/auth/passwords/confirm.blade.php deleted file mode 100644 index f8c8e61..0000000 --- a/Chapter27/onlineStore/resources/views/auth/passwords/confirm.blade.php +++ /dev/null @@ -1,49 +0,0 @@ -@extends('layouts.app') - -@section('content') - -@endsection diff --git a/Chapter27/onlineStore/resources/views/auth/passwords/email.blade.php b/Chapter27/onlineStore/resources/views/auth/passwords/email.blade.php deleted file mode 100644 index d1ac783..0000000 --- a/Chapter27/onlineStore/resources/views/auth/passwords/email.blade.php +++ /dev/null @@ -1,47 +0,0 @@ -@extends('layouts.app') - -@section('content') -
-
-
-
-
{{ __('Reset Password') }}
- -
- @if (session('status')) - - @endif - -
- @csrf - -
- - -
- - - @error('email') - - {{ $message }} - - @enderror -
-
- -
-
- -
-
-
-
-
-
-
-
-@endsection diff --git a/Chapter27/onlineStore/resources/views/auth/passwords/reset.blade.php b/Chapter27/onlineStore/resources/views/auth/passwords/reset.blade.php deleted file mode 100644 index dccf6c6..0000000 --- a/Chapter27/onlineStore/resources/views/auth/passwords/reset.blade.php +++ /dev/null @@ -1,65 +0,0 @@ -@extends('layouts.app') - -@section('content') -
-
-
-
-
{{ __('Reset Password') }}
- -
-
- @csrf - - - -
- - -
- - - @error('email') - - {{ $message }} - - @enderror -
-
- -
- - -
- - - @error('password') - - {{ $message }} - - @enderror -
-
- -
- - -
- -
-
- -
-
- -
-
-
-
-
-
-
-
-@endsection diff --git a/Chapter27/onlineStore/resources/views/auth/register.blade.php b/Chapter27/onlineStore/resources/views/auth/register.blade.php deleted file mode 100644 index e001a0b..0000000 --- a/Chapter27/onlineStore/resources/views/auth/register.blade.php +++ /dev/null @@ -1,77 +0,0 @@ -@extends('layouts.app') - -@section('content') -
-
-
-
-
{{ __('Register') }}
- -
-
- @csrf - -
- - -
- - - @error('name') - - {{ $message }} - - @enderror -
-
- -
- - -
- - - @error('email') - - {{ $message }} - - @enderror -
-
- -
- - -
- - - @error('password') - - {{ $message }} - - @enderror -
-
- -
- - -
- -
-
- -
-
- -
-
-
-
-
-
-
-
-@endsection diff --git a/Chapter27/onlineStore/resources/views/auth/verify.blade.php b/Chapter27/onlineStore/resources/views/auth/verify.blade.php deleted file mode 100644 index 9f8c1bc..0000000 --- a/Chapter27/onlineStore/resources/views/auth/verify.blade.php +++ /dev/null @@ -1,28 +0,0 @@ -@extends('layouts.app') - -@section('content') -
-
-
-
-
{{ __('Verify Your Email Address') }}
- -
- @if (session('resent')) - - @endif - - {{ __('Before proceeding, please check your email for a verification link.') }} - {{ __('If you did not receive the email') }}, -
- @csrf - . -
-
-
-
-
-
-@endsection diff --git a/Chapter27/onlineStore/resources/views/cart/index.blade.php b/Chapter27/onlineStore/resources/views/cart/index.blade.php deleted file mode 100644 index d9e2cd5..0000000 --- a/Chapter27/onlineStore/resources/views/cart/index.blade.php +++ /dev/null @@ -1,45 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
-@endsection diff --git a/Chapter27/onlineStore/resources/views/cart/purchase.blade.php b/Chapter27/onlineStore/resources/views/cart/purchase.blade.php deleted file mode 100644 index 83b04d3..0000000 --- a/Chapter27/onlineStore/resources/views/cart/purchase.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
-
- Purchase Completed -
-
- -
-
-@endsection diff --git a/Chapter27/onlineStore/resources/views/home.blade.php b/Chapter27/onlineStore/resources/views/home.blade.php deleted file mode 100644 index 1f34466..0000000 --- a/Chapter27/onlineStore/resources/views/home.blade.php +++ /dev/null @@ -1,23 +0,0 @@ -@extends('layouts.app') - -@section('content') -
-
-
-
-
{{ __('Dashboard') }}
- -
- @if (session('status')) - - @endif - - {{ __('You are logged in!') }} -
-
-
-
-
-@endsection diff --git a/Chapter27/onlineStore/resources/views/home/about.blade.php b/Chapter27/onlineStore/resources/views/home/about.blade.php deleted file mode 100644 index f79abf3..0000000 --- a/Chapter27/onlineStore/resources/views/home/about.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
-
-
-

{{ $viewData["description"] }}

-
-
-

{{ $viewData["author"] }}

-
-
-
-@endsection diff --git a/Chapter27/onlineStore/resources/views/home/index.blade.php b/Chapter27/onlineStore/resources/views/home/index.blade.php deleted file mode 100644 index 1affb20..0000000 --- a/Chapter27/onlineStore/resources/views/home/index.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('content') -
-
- -
-
- -
-
- -
-
-@endsection diff --git a/Chapter27/onlineStore/resources/views/layouts/admin.blade.php b/Chapter27/onlineStore/resources/views/layouts/admin.blade.php deleted file mode 100644 index 4aff3f8..0000000 --- a/Chapter27/onlineStore/resources/views/layouts/admin.blade.php +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - @yield('title', 'Admin - Online Store') - - - -
- - - -
- - -
- @yield('content') -
-
-
- - - - - - - - - diff --git a/Chapter27/onlineStore/resources/views/layouts/app.blade.php b/Chapter27/onlineStore/resources/views/layouts/app.blade.php deleted file mode 100644 index 7b86f0e..0000000 --- a/Chapter27/onlineStore/resources/views/layouts/app.blade.php +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - @yield('title', 'Online Store') - - - - - -
-
-

@yield('subtitle', 'A Laravel Online Store')

-
-
- - -
- @yield('content') -
- - - - - - - diff --git a/Chapter27/onlineStore/resources/views/product/index.blade.php b/Chapter27/onlineStore/resources/views/product/index.blade.php deleted file mode 100644 index 64c3e18..0000000 --- a/Chapter27/onlineStore/resources/views/product/index.blade.php +++ /dev/null @@ -1,18 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
- @foreach ($viewData["products"] as $product) - - @endforeach -
-@endsection diff --git a/Chapter27/onlineStore/resources/views/product/show.blade.php b/Chapter27/onlineStore/resources/views/product/show.blade.php deleted file mode 100644 index 801ea09..0000000 --- a/Chapter27/onlineStore/resources/views/product/show.blade.php +++ /dev/null @@ -1,36 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
-
-
- getImage()) }}" class="img-fluid rounded-start"> -
-
-
-
- {{ $viewData["product"]->getName() }} (${{ $viewData["product"]->getPrice() }}) -
-

{{ $viewData["product"]->getDescription() }}

-

-

-
- @csrf -
-
-
Quantity
- -
-
-
- -
-
-
-

-
-
-
-
-@endsection diff --git a/Chapter27/onlineStore/resources/views/welcome.blade.php b/Chapter27/onlineStore/resources/views/welcome.blade.php deleted file mode 100644 index c587c72..0000000 --- a/Chapter27/onlineStore/resources/views/welcome.blade.php +++ /dev/null @@ -1,7 +0,0 @@ -@extends('layouts.app') -@section('title', 'Home Page - Online Store') -@section('content') -
- Welcome to the application -
-@endsection \ No newline at end of file diff --git a/Chapter27/onlineStore/routes/api.php b/Chapter27/onlineStore/routes/api.php deleted file mode 100644 index eb6fa48..0000000 --- a/Chapter27/onlineStore/routes/api.php +++ /dev/null @@ -1,19 +0,0 @@ -get('/user', function (Request $request) { - return $request->user(); -}); diff --git a/Chapter27/onlineStore/routes/channels.php b/Chapter27/onlineStore/routes/channels.php deleted file mode 100644 index 5d451e1..0000000 --- a/Chapter27/onlineStore/routes/channels.php +++ /dev/null @@ -1,18 +0,0 @@ -id === (int) $id; -}); diff --git a/Chapter27/onlineStore/routes/console.php b/Chapter27/onlineStore/routes/console.php deleted file mode 100644 index e05f4c9..0000000 --- a/Chapter27/onlineStore/routes/console.php +++ /dev/null @@ -1,19 +0,0 @@ -comment(Inspiring::quote()); -})->purpose('Display an inspiring quote'); diff --git a/Chapter27/onlineStore/routes/web.php b/Chapter27/onlineStore/routes/web.php deleted file mode 100644 index 879fdb9..0000000 --- a/Chapter27/onlineStore/routes/web.php +++ /dev/null @@ -1,38 +0,0 @@ -name("home.index"); -Route::get('/about', 'App\Http\Controllers\HomeController@about')->name("home.about"); -Route::get('/products', 'App\Http\Controllers\ProductController@index')->name("product.index"); -Route::get('/products/{id}', 'App\Http\Controllers\ProductController@show')->name("product.show"); - -Route::get('/cart', 'App\Http\Controllers\CartController@index')->name("cart.index"); -Route::get('/cart/delete', 'App\Http\Controllers\CartController@delete')->name("cart.delete"); -Route::post('/cart/add/{id}', 'App\Http\Controllers\CartController@add')->name("cart.add"); - -Route::middleware('auth')->group(function () { - Route::get('/cart/purchase', 'App\Http\Controllers\CartController@purchase')->name("cart.purchase"); -}); - -Route::middleware('admin')->group(function () { - Route::get('/admin', 'App\Http\Controllers\Admin\AdminHomeController@index')->name("admin.home.index"); - Route::get('/admin/products', 'App\Http\Controllers\Admin\AdminProductController@index')->name("admin.product.index"); - Route::post('/admin/products/store', 'App\Http\Controllers\Admin\AdminProductController@store')->name("admin.product.store"); - Route::delete('/admin/products/{id}/delete', 'App\Http\Controllers\Admin\AdminProductController@delete')->name("admin.product.delete"); - Route::get('/admin/products/{id}/edit', 'App\Http\Controllers\Admin\AdminProductController@edit')->name("admin.product.edit"); - Route::put('/admin/products/{id}/update', 'App\Http\Controllers\Admin\AdminProductController@update')->name("admin.product.update"); -}); - -Auth::routes(); diff --git a/Chapter27/onlineStore/storage/app/.gitignore b/Chapter27/onlineStore/storage/app/.gitignore deleted file mode 100644 index 8f4803c..0000000 --- a/Chapter27/onlineStore/storage/app/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!public/ -!.gitignore diff --git a/Chapter27/onlineStore/storage/app/public/.gitignore b/Chapter27/onlineStore/storage/app/public/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter27/onlineStore/storage/app/public/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter27/onlineStore/storage/framework/.gitignore b/Chapter27/onlineStore/storage/framework/.gitignore deleted file mode 100644 index 05c4471..0000000 --- a/Chapter27/onlineStore/storage/framework/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -compiled.php -config.php -down -events.scanned.php -maintenance.php -routes.php -routes.scanned.php -schedule-* -services.json diff --git a/Chapter27/onlineStore/storage/framework/cache/.gitignore b/Chapter27/onlineStore/storage/framework/cache/.gitignore deleted file mode 100644 index 01e4a6c..0000000 --- a/Chapter27/onlineStore/storage/framework/cache/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!data/ -!.gitignore diff --git a/Chapter27/onlineStore/storage/framework/cache/data/.gitignore b/Chapter27/onlineStore/storage/framework/cache/data/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter27/onlineStore/storage/framework/cache/data/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter27/onlineStore/storage/framework/sessions/.gitignore b/Chapter27/onlineStore/storage/framework/sessions/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter27/onlineStore/storage/framework/sessions/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter27/onlineStore/storage/framework/testing/.gitignore b/Chapter27/onlineStore/storage/framework/testing/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter27/onlineStore/storage/framework/testing/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter27/onlineStore/storage/framework/views/.gitignore b/Chapter27/onlineStore/storage/framework/views/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter27/onlineStore/storage/framework/views/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter27/onlineStore/storage/logs/.gitignore b/Chapter27/onlineStore/storage/logs/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter27/onlineStore/storage/logs/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter27/onlineStore/tests/CreatesApplication.php b/Chapter27/onlineStore/tests/CreatesApplication.php deleted file mode 100644 index 547152f..0000000 --- a/Chapter27/onlineStore/tests/CreatesApplication.php +++ /dev/null @@ -1,22 +0,0 @@ -make(Kernel::class)->bootstrap(); - - return $app; - } -} diff --git a/Chapter27/onlineStore/tests/Feature/ExampleTest.php b/Chapter27/onlineStore/tests/Feature/ExampleTest.php deleted file mode 100644 index 78ccc21..0000000 --- a/Chapter27/onlineStore/tests/Feature/ExampleTest.php +++ /dev/null @@ -1,21 +0,0 @@ -get('/'); - - $response->assertStatus(200); - } -} diff --git a/Chapter27/onlineStore/tests/TestCase.php b/Chapter27/onlineStore/tests/TestCase.php deleted file mode 100644 index 2932d4a..0000000 --- a/Chapter27/onlineStore/tests/TestCase.php +++ /dev/null @@ -1,10 +0,0 @@ -assertTrue(true); - } -} diff --git a/Chapter27/onlineStore/webpack.mix.js b/Chapter27/onlineStore/webpack.mix.js deleted file mode 100644 index 1a2a958..0000000 --- a/Chapter27/onlineStore/webpack.mix.js +++ /dev/null @@ -1,16 +0,0 @@ -const mix = require('laravel-mix'); - -/* - |-------------------------------------------------------------------------- - | Mix Asset Management - |-------------------------------------------------------------------------- - | - | Mix provides a clean, fluent API for defining some Webpack build steps - | for your Laravel application. By default, we are compiling the Sass - | file for the application as well as bundling up all the JS files. - | - */ - -mix.js('resources/js/app.js', 'public/js') - .sass('resources/sass/app.scss', 'public/css') - .sourceMaps(); diff --git a/Chapter28/onlineStore/.editorconfig b/Chapter28/onlineStore/.editorconfig deleted file mode 100644 index 1671c9b..0000000 --- a/Chapter28/onlineStore/.editorconfig +++ /dev/null @@ -1,18 +0,0 @@ -root = true - -[*] -charset = utf-8 -end_of_line = lf -insert_final_newline = true -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true - -[*.md] -trim_trailing_whitespace = false - -[*.{yml,yaml}] -indent_size = 2 - -[docker-compose.yml] -indent_size = 4 diff --git a/Chapter28/onlineStore/.env.example b/Chapter28/onlineStore/.env.example deleted file mode 100644 index 8510237..0000000 --- a/Chapter28/onlineStore/.env.example +++ /dev/null @@ -1,52 +0,0 @@ -APP_NAME=Laravel -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=laravel -DB_USERNAME=root -DB_PASSWORD= - -BROADCAST_DRIVER=log -CACHE_DRIVER=file -FILESYSTEM_DISK=local -QUEUE_CONNECTION=sync -SESSION_DRIVER=file -SESSION_LIFETIME=120 - -MEMCACHED_HOST=127.0.0.1 - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -MAIL_MAILER=smtp -MAIL_HOST=mailhog -MAIL_PORT=1025 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS=null -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_APP_CLUSTER=mt1 - -MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/Chapter28/onlineStore/.gitattributes b/Chapter28/onlineStore/.gitattributes deleted file mode 100644 index 510d996..0000000 --- a/Chapter28/onlineStore/.gitattributes +++ /dev/null @@ -1,10 +0,0 @@ -* text=auto - -*.blade.php diff=html -*.css diff=css -*.html diff=html -*.md diff=markdown -*.php diff=php - -/.github export-ignore -CHANGELOG.md export-ignore diff --git a/Chapter28/onlineStore/.gitignore b/Chapter28/onlineStore/.gitignore deleted file mode 100644 index eb003b0..0000000 --- a/Chapter28/onlineStore/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -/node_modules -/public/hot -/public/storage -/storage/*.key -/vendor -.env -.env.backup -.phpunit.result.cache -docker-compose.override.yml -Homestead.json -Homestead.yaml -npm-debug.log -yarn-error.log -/.idea -/.vscode diff --git a/Chapter28/onlineStore/.styleci.yml b/Chapter28/onlineStore/.styleci.yml deleted file mode 100644 index 679a631..0000000 --- a/Chapter28/onlineStore/.styleci.yml +++ /dev/null @@ -1,13 +0,0 @@ -php: - preset: laravel - version: 8 - disabled: - - no_unused_imports - finder: - not-name: - - index.php -js: - finder: - not-name: - - webpack.mix.js -css: true diff --git a/Chapter28/onlineStore/README.md b/Chapter28/onlineStore/README.md deleted file mode 100644 index f171eca..0000000 --- a/Chapter28/onlineStore/README.md +++ /dev/null @@ -1,64 +0,0 @@ -

- -

-Build Status -Total Downloads -Latest Stable Version -License -

- -## About Laravel - -Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as: - -- [Simple, fast routing engine](https://laravel.com/docs/routing). -- [Powerful dependency injection container](https://laravel.com/docs/container). -- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage. -- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent). -- Database agnostic [schema migrations](https://laravel.com/docs/migrations). -- [Robust background job processing](https://laravel.com/docs/queues). -- [Real-time event broadcasting](https://laravel.com/docs/broadcasting). - -Laravel is accessible, powerful, and provides tools required for large, robust applications. - -## Learning Laravel - -Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework. - -If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 2000 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library. - -## Laravel Sponsors - -We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell). - -### Premium Partners - -- **[Vehikl](https://vehikl.com/)** -- **[Tighten Co.](https://tighten.co)** -- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** -- **[64 Robots](https://64robots.com)** -- **[Cubet Techno Labs](https://cubettech.com)** -- **[Cyber-Duck](https://cyber-duck.co.uk)** -- **[Many](https://www.many.co.uk)** -- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)** -- **[DevSquad](https://devsquad.com)** -- **[Curotec](https://www.curotec.com/services/technologies/laravel/)** -- **[OP.GG](https://op.gg)** -- **[WebReinvent](https://webreinvent.com/?utm_source=laravel&utm_medium=github&utm_campaign=patreon-sponsors)** -- **[Lendio](https://lendio.com)** - -## Contributing - -Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions). - -## Code of Conduct - -In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). - -## Security Vulnerabilities - -If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed. - -## License - -The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). diff --git a/Chapter28/onlineStore/app/Console/Kernel.php b/Chapter28/onlineStore/app/Console/Kernel.php deleted file mode 100644 index d8bc1d2..0000000 --- a/Chapter28/onlineStore/app/Console/Kernel.php +++ /dev/null @@ -1,32 +0,0 @@ -command('inspire')->hourly(); - } - - /** - * Register the commands for the application. - * - * @return void - */ - protected function commands() - { - $this->load(__DIR__.'/Commands'); - - require base_path('routes/console.php'); - } -} diff --git a/Chapter28/onlineStore/app/Exceptions/Handler.php b/Chapter28/onlineStore/app/Exceptions/Handler.php deleted file mode 100644 index 8e7fbd1..0000000 --- a/Chapter28/onlineStore/app/Exceptions/Handler.php +++ /dev/null @@ -1,41 +0,0 @@ -> - */ - protected $dontReport = [ - // - ]; - - /** - * A list of the inputs that are never flashed for validation exceptions. - * - * @var array - */ - protected $dontFlash = [ - 'current_password', - 'password', - 'password_confirmation', - ]; - - /** - * Register the exception handling callbacks for the application. - * - * @return void - */ - public function register() - { - $this->reportable(function (Throwable $e) { - // - }); - } -} diff --git a/Chapter28/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php b/Chapter28/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php deleted file mode 100644 index cd78cb3..0000000 --- a/Chapter28/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php +++ /dev/null @@ -1,16 +0,0 @@ -with("viewData", $viewData); - } -} diff --git a/Chapter28/onlineStore/app/Http/Controllers/Admin/AdminProductController.php b/Chapter28/onlineStore/app/Http/Controllers/Admin/AdminProductController.php deleted file mode 100644 index d1c6c52..0000000 --- a/Chapter28/onlineStore/app/Http/Controllers/Admin/AdminProductController.php +++ /dev/null @@ -1,79 +0,0 @@ -with("viewData", $viewData); - } - - public function store(Request $request) - { - Product::validate($request); - - $newProduct = new Product(); - $newProduct->setName($request->input('name')); - $newProduct->setDescription($request->input('description')); - $newProduct->setPrice($request->input('price')); - $newProduct->setImage("game.png"); - $newProduct->save(); - - if ($request->hasFile('image')) { - $imageName = $newProduct->getId().".".$request->file('image')->extension(); - Storage::disk('public')->put( - $imageName, - file_get_contents($request->file('image')->getRealPath()) - ); - $newProduct->setImage($imageName); - $newProduct->save(); - } - - return back(); - } - - public function delete($id) - { - Product::destroy($id); - return back(); - } - - public function edit($id) - { - $viewData = []; - $viewData["title"] = "Admin Page - Edit Product - Online Store"; - $viewData["product"] = Product::findOrFail($id); - return view('admin.product.edit')->with("viewData", $viewData); - } - - public function update(Request $request, $id) - { - Product::validate($request); - - $product = Product::findOrFail($id); - $product->setName($request->input('name')); - $product->setDescription($request->input('description')); - $product->setPrice($request->input('price')); - - if ($request->hasFile('image')) { - $imageName = $product->getId().".".$request->file('image')->extension(); - Storage::disk('public')->put( - $imageName, - file_get_contents($request->file('image')->getRealPath()) - ); - $product->setImage($imageName); - } - - $product->save(); - return redirect()->route('admin.product.index'); - } -} diff --git a/Chapter28/onlineStore/app/Http/Controllers/Auth/ConfirmPasswordController.php b/Chapter28/onlineStore/app/Http/Controllers/Auth/ConfirmPasswordController.php deleted file mode 100644 index 138c1f0..0000000 --- a/Chapter28/onlineStore/app/Http/Controllers/Auth/ConfirmPasswordController.php +++ /dev/null @@ -1,40 +0,0 @@ -middleware('auth'); - } -} diff --git a/Chapter28/onlineStore/app/Http/Controllers/Auth/ForgotPasswordController.php b/Chapter28/onlineStore/app/Http/Controllers/Auth/ForgotPasswordController.php deleted file mode 100644 index 465c39c..0000000 --- a/Chapter28/onlineStore/app/Http/Controllers/Auth/ForgotPasswordController.php +++ /dev/null @@ -1,22 +0,0 @@ -middleware('guest')->except('logout'); - } -} diff --git a/Chapter28/onlineStore/app/Http/Controllers/Auth/RegisterController.php b/Chapter28/onlineStore/app/Http/Controllers/Auth/RegisterController.php deleted file mode 100644 index 87e3a82..0000000 --- a/Chapter28/onlineStore/app/Http/Controllers/Auth/RegisterController.php +++ /dev/null @@ -1,74 +0,0 @@ -middleware('guest'); - } - - /** - * Get a validator for an incoming registration request. - * - * @param array $data - * @return \Illuminate\Contracts\Validation\Validator - */ - protected function validator(array $data) - { - return Validator::make($data, [ - 'name' => ['required', 'string', 'max:255'], - 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], - 'password' => ['required', 'string', 'min:8', 'confirmed'], - ]); - } - - /** - * Create a new user instance after a valid registration. - * - * @param array $data - * @return \App\Models\User - */ - protected function create(array $data) - { - return User::create([ - 'name' => $data['name'], - 'email' => $data['email'], - 'password' => Hash::make($data['password']), - 'balance' => 5000, - ]); - } -} diff --git a/Chapter28/onlineStore/app/Http/Controllers/Auth/ResetPasswordController.php b/Chapter28/onlineStore/app/Http/Controllers/Auth/ResetPasswordController.php deleted file mode 100644 index b1726a3..0000000 --- a/Chapter28/onlineStore/app/Http/Controllers/Auth/ResetPasswordController.php +++ /dev/null @@ -1,30 +0,0 @@ -middleware('auth'); - $this->middleware('signed')->only('verify'); - $this->middleware('throttle:6,1')->only('verify', 'resend'); - } -} diff --git a/Chapter28/onlineStore/app/Http/Controllers/CartController.php b/Chapter28/onlineStore/app/Http/Controllers/CartController.php deleted file mode 100644 index 9dcfaba..0000000 --- a/Chapter28/onlineStore/app/Http/Controllers/CartController.php +++ /dev/null @@ -1,87 +0,0 @@ -session()->get("products"); - if ($productsInSession) { - $productsInCart = Product::findMany(array_keys($productsInSession)); - $total = Product::sumPricesByQuantities($productsInCart, $productsInSession); - } - - $viewData = []; - $viewData["title"] = "Cart - Online Store"; - $viewData["subtitle"] = "Shopping Cart"; - $viewData["total"] = $total; - $viewData["products"] = $productsInCart; - return view('cart.index')->with("viewData", $viewData); - } - - public function add(Request $request, $id) - { - $products = $request->session()->get("products"); - $products[$id] = $request->input('quantity'); - $request->session()->put('products', $products); - - return redirect()->route('cart.index'); - } - - public function delete(Request $request) - { - $request->session()->forget('products'); - return back(); - } - - public function purchase(Request $request) - { - $productsInSession = $request->session()->get("products"); - if ($productsInSession) { - $userId = Auth::user()->getId(); - $order = new Order(); - $order->setUserId($userId); - $order->setTotal(0); - $order->save(); - - $total = 0; - $productsInCart = Product::findMany(array_keys($productsInSession)); - foreach ($productsInCart as $product) { - $quantity = $productsInSession[$product->getId()]; - $item = new Item(); - $item->setQuantity($quantity); - $item->setPrice($product->getPrice()); - $item->setProductId($product->getId()); - $item->setOrderId($order->getId()); - $item->save(); - $total = $total + ($product->getPrice()*$quantity); - } - $order->setTotal($total); - $order->save(); - - $newBalance = Auth::user()->getBalance() - $total; - Auth::user()->setBalance($newBalance); - Auth::user()->save(); - - $request->session()->forget('products'); - - $viewData = []; - $viewData["title"] = "Purchase - Online Store"; - $viewData["subtitle"] = "Purchase Status"; - $viewData["order"] = $order; - return view('cart.purchase')->with("viewData", $viewData); - } else { - return redirect()->route('cart.index'); - } - } -} diff --git a/Chapter28/onlineStore/app/Http/Controllers/Controller.php b/Chapter28/onlineStore/app/Http/Controllers/Controller.php deleted file mode 100644 index a0a2a8a..0000000 --- a/Chapter28/onlineStore/app/Http/Controllers/Controller.php +++ /dev/null @@ -1,13 +0,0 @@ -with("viewData", $viewData); - } - - public function about() - { - $viewData = []; - $viewData["title"] = "About us - Online Store"; - $viewData["subtitle"] = "About us"; - $viewData["description"] = "This is an about page ..."; - $viewData["author"] = "Developed by: Your Name"; - return view('home.about')->with("viewData", $viewData); - } -} diff --git a/Chapter28/onlineStore/app/Http/Controllers/MyAccountController.php b/Chapter28/onlineStore/app/Http/Controllers/MyAccountController.php deleted file mode 100644 index 11e9e50..0000000 --- a/Chapter28/onlineStore/app/Http/Controllers/MyAccountController.php +++ /dev/null @@ -1,19 +0,0 @@ -where('user_id', Auth::user()->getId())->get(); - return view('myaccount.orders')->with("viewData", $viewData); - } -} diff --git a/Chapter28/onlineStore/app/Http/Controllers/ProductController.php b/Chapter28/onlineStore/app/Http/Controllers/ProductController.php deleted file mode 100644 index d27a3a3..0000000 --- a/Chapter28/onlineStore/app/Http/Controllers/ProductController.php +++ /dev/null @@ -1,29 +0,0 @@ -with("viewData", $viewData); - } - - public function show($id) - { - $viewData = []; - $product = Product::findOrFail($id); - $viewData["title"] = $product->getName()." - Online Store"; - $viewData["subtitle"] = $product->getName()." - Product information"; - $viewData["product"] = $product; - return view('product.show')->with("viewData", $viewData); - } -} diff --git a/Chapter28/onlineStore/app/Http/Kernel.php b/Chapter28/onlineStore/app/Http/Kernel.php deleted file mode 100644 index c10d1c5..0000000 --- a/Chapter28/onlineStore/app/Http/Kernel.php +++ /dev/null @@ -1,68 +0,0 @@ - - */ - protected $middleware = [ - // \App\Http\Middleware\TrustHosts::class, - \App\Http\Middleware\TrustProxies::class, - \Fruitcake\Cors\HandleCors::class, - \App\Http\Middleware\PreventRequestsDuringMaintenance::class, - \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, - \App\Http\Middleware\TrimStrings::class, - \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, - ]; - - /** - * The application's route middleware groups. - * - * @var array> - */ - protected $middlewareGroups = [ - 'web' => [ - \App\Http\Middleware\EncryptCookies::class, - \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, - \Illuminate\Session\Middleware\StartSession::class, - // \Illuminate\Session\Middleware\AuthenticateSession::class, - \Illuminate\View\Middleware\ShareErrorsFromSession::class, - \App\Http\Middleware\VerifyCsrfToken::class, - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - - 'api' => [ - // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, - 'throttle:api', - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - ]; - - /** - * The application's route middleware. - * - * These middleware may be assigned to groups or used individually. - * - * @var array - */ - protected $routeMiddleware = [ - 'auth' => \App\Http\Middleware\Authenticate::class, - 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::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, - 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, - 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, - 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, - 'admin' => \App\Http\Middleware\AdminAuthMiddleware::class, - ]; -} diff --git a/Chapter28/onlineStore/app/Http/Middleware/AdminAuthMiddleware.php b/Chapter28/onlineStore/app/Http/Middleware/AdminAuthMiddleware.php deleted file mode 100644 index 6e5306b..0000000 --- a/Chapter28/onlineStore/app/Http/Middleware/AdminAuthMiddleware.php +++ /dev/null @@ -1,26 +0,0 @@ -getRole() == 'admin') { - return $next($request); - } else { - return redirect()->route('home.index'); - } - } -} diff --git a/Chapter28/onlineStore/app/Http/Middleware/Authenticate.php b/Chapter28/onlineStore/app/Http/Middleware/Authenticate.php deleted file mode 100644 index 704089a..0000000 --- a/Chapter28/onlineStore/app/Http/Middleware/Authenticate.php +++ /dev/null @@ -1,21 +0,0 @@ -expectsJson()) { - return route('login'); - } - } -} diff --git a/Chapter28/onlineStore/app/Http/Middleware/EncryptCookies.php b/Chapter28/onlineStore/app/Http/Middleware/EncryptCookies.php deleted file mode 100644 index 867695b..0000000 --- a/Chapter28/onlineStore/app/Http/Middleware/EncryptCookies.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter28/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/Chapter28/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php deleted file mode 100644 index 74cbd9a..0000000 --- a/Chapter28/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter28/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php b/Chapter28/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php deleted file mode 100644 index a2813a0..0000000 --- a/Chapter28/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php +++ /dev/null @@ -1,32 +0,0 @@ -check()) { - return redirect(RouteServiceProvider::HOME); - } - } - - return $next($request); - } -} diff --git a/Chapter28/onlineStore/app/Http/Middleware/TrimStrings.php b/Chapter28/onlineStore/app/Http/Middleware/TrimStrings.php deleted file mode 100644 index 88cadca..0000000 --- a/Chapter28/onlineStore/app/Http/Middleware/TrimStrings.php +++ /dev/null @@ -1,19 +0,0 @@ - - */ - protected $except = [ - 'current_password', - 'password', - 'password_confirmation', - ]; -} diff --git a/Chapter28/onlineStore/app/Http/Middleware/TrustHosts.php b/Chapter28/onlineStore/app/Http/Middleware/TrustHosts.php deleted file mode 100644 index 7186414..0000000 --- a/Chapter28/onlineStore/app/Http/Middleware/TrustHosts.php +++ /dev/null @@ -1,20 +0,0 @@ - - */ - public function hosts() - { - return [ - $this->allSubdomainsOfApplicationUrl(), - ]; - } -} diff --git a/Chapter28/onlineStore/app/Http/Middleware/TrustProxies.php b/Chapter28/onlineStore/app/Http/Middleware/TrustProxies.php deleted file mode 100644 index 3391630..0000000 --- a/Chapter28/onlineStore/app/Http/Middleware/TrustProxies.php +++ /dev/null @@ -1,28 +0,0 @@ -|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/Chapter28/onlineStore/app/Http/Middleware/VerifyCsrfToken.php b/Chapter28/onlineStore/app/Http/Middleware/VerifyCsrfToken.php deleted file mode 100644 index 9e86521..0000000 --- a/Chapter28/onlineStore/app/Http/Middleware/VerifyCsrfToken.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter28/onlineStore/app/Models/Item.php b/Chapter28/onlineStore/app/Models/Item.php deleted file mode 100644 index 8d19619..0000000 --- a/Chapter28/onlineStore/app/Models/Item.php +++ /dev/null @@ -1,133 +0,0 @@ -attributes['id'] - int - contains the item primary key (id) - * $this->attributes['quantity'] - int - contains the item quantity - * $this->attributes['price'] - int - contains the item price - * $this->attributes['order_id'] - int - contains the referenced order id - * $this->attributes['product_id'] - int - contains the referenced product id - * $this->attributes['created_at'] - timestamp - contains the item creation date - * $this->attributes['updated_at'] - timestamp - contains the item update date - * $this->order - Order - contains the associated Order - * $this->product - Product - contains the associated Product - */ - - public static function validate($request) - { - $request->validate([ - "price" => "required|numeric|gt:0", - "quantity" => "required|numeric|gt:0", - "product_id" => "required|exists:products,id", - "order_id" => "required|exists:orders,id", - ]); - } - - public function getId() - { - return $this->attributes['id']; - } - - public function setId($id) - { - $this->attributes['id'] = $id; - } - - public function getQuantity() - { - return $this->attributes['quantity']; - } - - public function setQuantity($quantity) - { - $this->attributes['quantity'] = $quantity; - } - - public function getPrice() - { - return $this->attributes['price']; - } - - public function setPrice($price) - { - $this->attributes['price'] = $price; - } - - public function getOrderId() - { - return $this->attributes['order_id']; - } - - public function setOrderId($orderId) - { - $this->attributes['order_id'] = $orderId; - } - - public function getProductId() - { - return $this->attributes['product_id']; - } - - public function setProductId($productId) - { - $this->attributes['product_id'] = $productId; - } - - public function getCreatedAt() - { - return $this->attributes['created_at']; - } - - public function setCreatedAt($createdAt) - { - $this->attributes['created_at'] = $createdAt; - } - - public function getUpdatedAt() - { - return $this->attributes['updated_at']; - } - - public function setUpdatedAt($updatedAt) - { - $this->attributes['updated_at'] = $updatedAt; - } - - public function order() - { - return $this->belongsTo(Order::class); - } - - public function getOrder() - { - return $this->order; - } - - public function setOrder($order) - { - $this->order = $order; - } - - public function product() - { - return $this->belongsTo(Product::class); - } - - public function getProduct() - { - return $this->product; - } - - public function setProduct($product) - { - $this->product = $product; - } -} diff --git a/Chapter28/onlineStore/app/Models/Order.php b/Chapter28/onlineStore/app/Models/Order.php deleted file mode 100644 index 28ce6ad..0000000 --- a/Chapter28/onlineStore/app/Models/Order.php +++ /dev/null @@ -1,109 +0,0 @@ -attributes['id'] - int - contains the order primary key (id) - * $this->attributes['total'] - string - contains the order name - * $this->attributes['user_id'] - int - contains the referenced user id - * $this->attributes['created_at'] - timestamp - contains the order creation date - * $this->attributes['updated_at'] - timestamp - contains the order update date - * $this->user - User - contains the associated User - * $this->items - Item[] - contains the associated items - */ - - public static function validate($request) - { - $request->validate([ - "total" => "required|numeric", - "user_id" => "required|exists:users,id", - ]); - } - - public function getId() - { - return $this->attributes['id']; - } - - public function setId($id) - { - $this->attributes['id'] = $id; - } - - public function getTotal() - { - return $this->attributes['total']; - } - - public function setTotal($total) - { - $this->attributes['total'] = $total; - } - - public function getUserId() - { - return $this->attributes['user_id']; - } - - public function setUserId($userId) - { - $this->attributes['user_id'] = $userId; - } - - public function getCreatedAt() - { - return $this->attributes['created_at']; - } - - public function setCreatedAt($createdAt) - { - $this->attributes['created_at'] = $createdAt; - } - - public function getUpdatedAt() - { - return $this->attributes['updated_at']; - } - - public function setUpdatedAt($updatedAt) - { - $this->attributes['updated_at'] = $updatedAt; - } - - public function user() - { - return $this->belongsTo(User::class); - } - - public function getUser() - { - return $this->user; - } - - public function setUser($user) - { - $this->user = $user; - } - - public function items() - { - return $this->hasMany(Item::class); - } - - public function getItems() - { - return $this->items; - } - - public function setItems($items) - { - $this->items = $items; - } -} diff --git a/Chapter28/onlineStore/app/Models/Product.php b/Chapter28/onlineStore/app/Models/Product.php deleted file mode 100644 index fb8585a..0000000 --- a/Chapter28/onlineStore/app/Models/Product.php +++ /dev/null @@ -1,126 +0,0 @@ -attributes['id'] - int - contains the product primary key (id) - * $this->attributes['name'] - string - contains the product name - * $this->attributes['description'] - string - contains the product description - * $this->attributes['image'] - string - contains the product image - * $this->attributes['price'] - int - contains the product price - * $this->attributes['created_at'] - timestamp - contains the product creation date - * $this->attributes['updated_at'] - timestamp - contains the product update date - * $this->items - Item[] - contains the associated items - */ - - public static function validate($request) - { - $request->validate([ - "name" => "required|max:255", - "description" => "required", - "price" => "required|numeric|gt:0", - 'image' => 'image', - ]); - } - - public static function sumPricesByQuantities($products, $productsInSession) - { - $total = 0; - foreach ($products as $product) { - $total = $total + ($product->getPrice()*$productsInSession[$product->getId()]); - } - - return $total; - } - - public function getId() - { - return $this->attributes['id']; - } - - public function setId($id) - { - $this->attributes['id'] = $id; - } - - public function getName() - { - return $this->attributes['name']; - } - - public function setName($name) - { - $this->attributes['name'] = $name; - } - - public function getDescription() - { - return $this->attributes['description']; - } - - public function setDescription($description) - { - $this->attributes['description'] = $description; - } - - public function getImage() - { - return $this->attributes['image']; - } - - public function setImage($image) - { - $this->attributes['image'] = $image; - } - - public function getPrice() - { - return $this->attributes['price']; - } - - public function setPrice($price) - { - $this->attributes['price'] = $price; - } - - public function getCreatedAt() - { - return $this->attributes['created_at']; - } - - public function setCreatedAt($createdAt) - { - $this->attributes['created_at'] = $createdAt; - } - - public function getUpdatedAt() - { - return $this->attributes['updated_at']; - } - - public function setUpdatedAt($updatedAt) - { - $this->attributes['updated_at'] = $updatedAt; - } - - public function items() - { - return $this->hasMany(Item::class); - } - - public function getItems() - { - return $this->items; - } - - public function setItems($items) - { - $this->items = $items; - } -} diff --git a/Chapter28/onlineStore/app/Models/User.php b/Chapter28/onlineStore/app/Models/User.php deleted file mode 100644 index 89aa45f..0000000 --- a/Chapter28/onlineStore/app/Models/User.php +++ /dev/null @@ -1,156 +0,0 @@ -attributes['id'] - int - contains the user primary key (id) - * $this->attributes['name'] - string - contains the user name - * $this->attributes['email'] - string - contains the user email - * $this->attributes['email_verified_at'] - timestamp - contains the user email verification date - * $this->attributes['password'] - string - contains the user password - * $this->attributes['remember_token'] - string - contains the user password - * $this->attributes['role'] - string - contains the user role (client or admin) - * $this->attributes['balance'] - int - contains the user balance - * $this->attributes['created_at'] - timestamp - contains the user creation date - * $this->attributes['updated_at'] - timestamp - contains the user update date - * $this->orders - Order[] - contains the associated orders - */ - - /** - * The attributes that are mass assignable. - * - * @var array - */ - protected $fillable = [ - 'name', - 'email', - 'password', - 'balance', - ]; - - /** - * 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', - ]; - - public function getId() - { - return $this->attributes['id']; - } - - public function setId($id) - { - $this->attributes['id'] = $id; - } - - public function getName() - { - return $this->attributes['name']; - } - - public function setName($name) - { - $this->attributes['name'] = $name; - } - - public function getEmail() - { - return $this->attributes['email']; - } - - public function setEmail($email) - { - $this->attributes['email'] = $email; - } - - public function getPassword() - { - return $this->attributes['password']; - } - - public function setPassword($password) - { - $this->attributes['password'] = $password; - } - - public function getRole() - { - return $this->attributes['role']; - } - - public function setRole($role) - { - $this->attributes['role'] = $role; - } - - public function getBalance() - { - return $this->attributes['balance']; - } - - public function setBalance($balance) - { - $this->attributes['balance'] = $balance; - } - - public function getCreatedAt() - { - return $this->attributes['created_at']; - } - - public function setCreatedAt($createdAt) - { - $this->attributes['created_at'] = $createdAt; - } - - public function getUpdatedAt() - { - return $this->attributes['updated_at']; - } - - public function setUpdatedAt($updatedAt) - { - $this->attributes['updated_at'] = $updatedAt; - } - - public function orders() - { - return $this->hasMany(Order::class); - } - - public function getOrders() - { - return $this->orders; - } - - public function setOrders($orders) - { - $this->orders = $orders; - } -} diff --git a/Chapter28/onlineStore/app/Providers/AppServiceProvider.php b/Chapter28/onlineStore/app/Providers/AppServiceProvider.php deleted file mode 100644 index ee8ca5b..0000000 --- a/Chapter28/onlineStore/app/Providers/AppServiceProvider.php +++ /dev/null @@ -1,28 +0,0 @@ - - */ - protected $policies = [ - // 'App\Models\Model' => 'App\Policies\ModelPolicy', - ]; - - /** - * Register any authentication / authorization services. - * - * @return void - */ - public function boot() - { - $this->registerPolicies(); - - // - } -} diff --git a/Chapter28/onlineStore/app/Providers/BroadcastServiceProvider.php b/Chapter28/onlineStore/app/Providers/BroadcastServiceProvider.php deleted file mode 100644 index 395c518..0000000 --- a/Chapter28/onlineStore/app/Providers/BroadcastServiceProvider.php +++ /dev/null @@ -1,21 +0,0 @@ -> - */ - protected $listen = [ - Registered::class => [ - SendEmailVerificationNotification::class, - ], - ]; - - /** - * Register any events for your application. - * - * @return void - */ - public function boot() - { - // - } -} diff --git a/Chapter28/onlineStore/app/Providers/RouteServiceProvider.php b/Chapter28/onlineStore/app/Providers/RouteServiceProvider.php deleted file mode 100644 index fb766eb..0000000 --- a/Chapter28/onlineStore/app/Providers/RouteServiceProvider.php +++ /dev/null @@ -1,63 +0,0 @@ -configureRateLimiting(); - - $this->routes(function () { - Route::prefix('api') - ->middleware('api') - ->namespace($this->namespace) - ->group(base_path('routes/api.php')); - - Route::middleware('web') - ->namespace($this->namespace) - ->group(base_path('routes/web.php')); - }); - } - - /** - * Configure the rate limiters for the application. - * - * @return void - */ - protected function configureRateLimiting() - { - RateLimiter::for('api', function (Request $request) { - return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); - }); - } -} diff --git a/Chapter28/onlineStore/artisan b/Chapter28/onlineStore/artisan deleted file mode 100644 index 67a3329..0000000 --- a/Chapter28/onlineStore/artisan +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env php -make(Illuminate\Contracts\Console\Kernel::class); - -$status = $kernel->handle( - $input = new Symfony\Component\Console\Input\ArgvInput, - new Symfony\Component\Console\Output\ConsoleOutput -); - -/* -|-------------------------------------------------------------------------- -| Shutdown The Application -|-------------------------------------------------------------------------- -| -| Once Artisan has finished running, we will fire off the shutdown events -| so that any final work may be done by the application before we shut -| down the process. This is the last thing to happen to the request. -| -*/ - -$kernel->terminate($input, $status); - -exit($status); diff --git a/Chapter28/onlineStore/bootstrap/app.php b/Chapter28/onlineStore/bootstrap/app.php deleted file mode 100644 index 037e17d..0000000 --- a/Chapter28/onlineStore/bootstrap/app.php +++ /dev/null @@ -1,55 +0,0 @@ -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/Chapter28/onlineStore/bootstrap/cache/.gitignore b/Chapter28/onlineStore/bootstrap/cache/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter28/onlineStore/bootstrap/cache/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter28/onlineStore/composer.json b/Chapter28/onlineStore/composer.json deleted file mode 100644 index a9459b5..0000000 --- a/Chapter28/onlineStore/composer.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "name": "laravel/laravel", - "type": "project", - "description": "The Laravel Framework.", - "keywords": ["framework", "laravel"], - "license": "MIT", - "require": { - "php": "^8.0", - "fruitcake/laravel-cors": "^2.0.5", - "guzzlehttp/guzzle": "^7.2", - "laravel/framework": "^9.0", - "laravel/sanctum": "^2.14", - "laravel/tinker": "^2.7", - "laravel/ui": "^3.4" - }, - "require-dev": { - "fakerphp/faker": "^1.9.1", - "laravel/sail": "^1.0.1", - "mockery/mockery": "^1.4.4", - "nunomaduro/collision": "^6.1", - "phpunit/phpunit": "^9.5.10", - "spatie/laravel-ignition": "^1.0", - "squizlabs/php_codesniffer": "^3.6" - }, - "autoload": { - "psr-4": { - "App\\": "app/", - "Database\\Factories\\": "database/factories/", - "Database\\Seeders\\": "database/seeders/" - } - }, - "autoload-dev": { - "psr-4": { - "Tests\\": "tests/" - } - }, - "scripts": { - "post-autoload-dump": [ - "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", - "@php artisan package:discover --ansi" - ], - "post-update-cmd": [ - "@php artisan vendor:publish --tag=laravel-assets --ansi --force" - ], - "post-root-package-install": [ - "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" - ], - "post-create-project-cmd": [ - "@php artisan key:generate --ansi" - ] - }, - "extra": { - "laravel": { - "dont-discover": [] - } - }, - "config": { - "optimize-autoloader": true, - "preferred-install": "dist", - "sort-packages": true - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/Chapter28/onlineStore/composer.lock b/Chapter28/onlineStore/composer.lock deleted file mode 100644 index 78c86f1..0000000 --- a/Chapter28/onlineStore/composer.lock +++ /dev/null @@ -1,7921 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "d299b51f0f07ec600b4949240f4664af", - "packages": [ - { - "name": "asm89/stack-cors", - "version": "v2.1.1", - "source": { - "type": "git", - "url": "https://github.com/asm89/stack-cors.git", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4|^5|^6" - }, - "require-dev": { - "phpunit/phpunit": "^7|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "psr-4": { - "Asm89\\Stack\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alexander", - "email": "iam.asm89@gmail.com" - } - ], - "description": "Cross-origin resource sharing library and stack middleware", - "homepage": "https://github.com/asm89/stack-cors", - "keywords": [ - "cors", - "stack" - ], - "support": { - "issues": "https://github.com/asm89/stack-cors/issues", - "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" - }, - "time": "2022-01-18T09:12:03+00:00" - }, - { - "name": "brick/math", - "version": "0.9.3", - "source": { - "type": "git", - "url": "https://github.com/brick/math.git", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", - "vimeo/psalm": "4.9.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Brick\\Math\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Arbitrary-precision arithmetic library", - "keywords": [ - "Arbitrary-precision", - "BigInteger", - "BigRational", - "arithmetic", - "bigdecimal", - "bignum", - "brick", - "math" - ], - "support": { - "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.9.3" - }, - "funding": [ - { - "url": "https://github.com/BenMorel", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/brick/math", - "type": "tidelift" - } - ], - "time": "2021-08-15T20:50:18+00:00" - }, - { - "name": "dflydev/dot-access-data", - "version": "v3.0.1", - "source": { - "type": "git", - "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c", - "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": "^3.14" - }, - "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.1" - }, - "time": "2021-08-13T13:06:58+00:00" - }, - { - "name": "doctrine/inflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "vimeo/psalm": "^4.10" - }, - "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.4" - }, - "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": "2021-10-22T20:16:43+00:00" - }, - { - "name": "doctrine/lexer", - "version": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" - } - }, - "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/1.2.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%2Flexer", - "type": "tidelift" - } - ], - "time": "2022-01-12T08:27:12+00:00" - }, - { - "name": "dragonmantank/cron-expression", - "version": "v3.3.1", - "source": { - "type": "git", - "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "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.1" - }, - "funding": [ - { - "url": "https://github.com/dragonmantank", - "type": "github" - } - ], - "time": "2022-01-18T15:43:28+00:00" - }, - { - "name": "egulias/email-validator", - "version": "3.1.2", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ee0db30118f661fb166bcffbf5d82032df484697", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^1.2", - "php": ">=7.2", - "symfony/polyfill-intl-idn": "^1.15" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^8.5.8|^9.3.3", - "vimeo/psalm": "^4" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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/3.1.2" - }, - "funding": [ - { - "url": "https://github.com/egulias", - "type": "github" - } - ], - "time": "2021-10-11T09:18:27+00:00" - }, - { - "name": "fruitcake/laravel-cors", - "version": "v2.0.5", - "source": { - "type": "git", - "url": "https://github.com/fruitcake/laravel-cors.git", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "shasum": "" - }, - "require": { - "asm89/stack-cors": "^2.0.1", - "illuminate/contracts": "^6|^7|^8|^9", - "illuminate/support": "^6|^7|^8|^9", - "php": ">=7.2", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4.3.4|^5|^6" - }, - "require-dev": { - "laravel/framework": "^6|^7.24|^8", - "orchestra/testbench-dusk": "^4|^5|^6|^7", - "phpunit/phpunit": "^6|^7|^8|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - }, - "laravel": { - "providers": [ - "Fruitcake\\Cors\\CorsServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Fruitcake\\Cors\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fruitcake", - "homepage": "https://fruitcake.nl" - }, - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", - "keywords": [ - "api", - "cors", - "crossdomain", - "laravel" - ], - "support": { - "issues": "https://github.com/fruitcake/laravel-cors/issues", - "source": "https://github.com/fruitcake/laravel-cors/tree/v2.0.5" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "time": "2022-01-03T14:53:04+00:00" - }, - { - "name": "graham-campbell/result-type", - "version": "v1.0.4", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "0690bde05318336c7221785f2a932467f98b64ca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/0690bde05318336c7221785f2a932467f98b64ca", - "reference": "0690bde05318336c7221785f2a932467f98b64ca", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "phpoption/phpoption": "^1.8" - }, - "require-dev": { - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", - "type": "tidelift" - } - ], - "time": "2021-11-21T21:41:47+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "7.4.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.8.3 || ^2.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.4.1", - "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.5 || ^9.3.5", - "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": { - "branch-alias": { - "dev-master": "7.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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.4.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": "2021-12-06T18:43:05+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "1.5.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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/1.5.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "time": "2021-10-22T20:56:57+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.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.4.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.8 || ^9.3.10" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "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.1.0" - }, - "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": "2021-10-06T17:43:30+00:00" - }, - { - "name": "laravel/framework", - "version": "v9.0.1", - "source": { - "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "shasum": "" - }, - "require": { - "doctrine/inflector": "^2.0", - "dragonmantank/cron-expression": "^3.1", - "egulias/email-validator": "^3.1", - "ext-mbstring": "*", - "ext-openssl": "*", - "laravel/serializable-closure": "^1.0", - "league/commonmark": "^2.2", - "league/flysystem": "^3.0", - "monolog/monolog": "^2.0", - "nesbot/carbon": "^2.53.1", - "php": "^8.0.2", - "psr/container": "^1.1.1|^2.0.1", - "psr/log": "^1.0|^2.0|^3.0", - "psr/simple-cache": "^1.0|^2.0|^3.0", - "ramsey/uuid": "^4.2.2", - "symfony/console": "^6.0", - "symfony/error-handler": "^6.0", - "symfony/finder": "^6.0", - "symfony/http-foundation": "^6.0", - "symfony/http-kernel": "^6.0", - "symfony/mailer": "^6.0", - "symfony/mime": "^6.0", - "symfony/process": "^6.0", - "symfony/routing": "^6.0", - "symfony/var-dumper": "^6.0", - "tijsverkoyen/css-to-inline-styles": "^2.2.2", - "vlucas/phpdotenv": "^5.4.1", - "voku/portable-ascii": "^2.0" - }, - "conflict": { - "tightenco/collect": "<5.5.33" - }, - "provide": { - "psr/container-implementation": "1.1|2.0", - "psr/simple-cache-implementation": "1.0|2.0|3.0" - }, - "replace": { - "illuminate/auth": "self.version", - "illuminate/broadcasting": "self.version", - "illuminate/bus": "self.version", - "illuminate/cache": "self.version", - "illuminate/collections": "self.version", - "illuminate/conditionable": "self.version", - "illuminate/config": "self.version", - "illuminate/console": "self.version", - "illuminate/container": "self.version", - "illuminate/contracts": "self.version", - "illuminate/cookie": "self.version", - "illuminate/database": "self.version", - "illuminate/encryption": "self.version", - "illuminate/events": "self.version", - "illuminate/filesystem": "self.version", - "illuminate/hashing": "self.version", - "illuminate/http": "self.version", - "illuminate/log": "self.version", - "illuminate/macroable": "self.version", - "illuminate/mail": "self.version", - "illuminate/notifications": "self.version", - "illuminate/pagination": "self.version", - "illuminate/pipeline": "self.version", - "illuminate/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": { - "aws/aws-sdk-php": "^3.198.1", - "doctrine/dbal": "^2.13.3|^3.1.4", - "fakerphp/faker": "^1.9.2", - "guzzlehttp/guzzle": "^7.2", - "league/flysystem-aws-s3-v3": "^3.0", - "league/flysystem-ftp": "^3.0", - "league/flysystem-sftp-v3": "^3.0", - "mockery/mockery": "^1.4.4", - "orchestra/testbench-core": "^7.0", - "pda/pheanstalk": "^4.0", - "phpstan/phpstan": "^1.0", - "phpunit/phpunit": "^9.5.8", - "predis/predis": "^1.1.9", - "symfony/amazon-mailer": "^6.0", - "symfony/cache": "^6.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.198.1).", - "brianium/paratest": "Required to run tests in parallel (^6.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", - "ext-bcmath": "Required to use the multiple_of validation rule.", - "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.", - "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.2).", - "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-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", - "mockery/mockery": "Required to use mocking (^1.4.4).", - "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).", - "predis/predis": "Required to use the predis connector (^1.1.9).", - "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.0).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^6.0).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.0).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.0).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.0).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.x-dev" - } - }, - "autoload": { - "files": [ - "src/Illuminate/Collections/helpers.php", - "src/Illuminate/Events/functions.php", - "src/Illuminate/Foundation/helpers.php", - "src/Illuminate/Support/helpers.php" - ], - "psr-4": { - "Illuminate\\": "src/Illuminate/", - "Illuminate\\Support\\": [ - "src/Illuminate/Macroable/", - "src/Illuminate/Collections/", - "src/Illuminate/Conditionable/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Laravel Framework.", - "homepage": "https://laravel.com", - "keywords": [ - "framework", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2022-02-09T15:00:05+00:00" - }, - { - "name": "laravel/sanctum", - "version": "v2.14.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/sanctum.git", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/0647a87140c7522e75826cffcadb3ad6e01f71e9", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/contracts": "^6.9|^7.0|^8.0|^9.0", - "illuminate/database": "^6.9|^7.0|^8.0|^9.0", - "illuminate/support": "^6.9|^7.0|^8.0|^9.0", - "php": "^7.2|^8.0" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0", - "phpunit/phpunit": "^8.0|^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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": "2022-01-12T15:07:43+00:00" - }, - { - "name": "laravel/serializable-closure", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/serializable-closure.git", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/65c9faf50d567b65d81764a44526545689e3fe63", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "pestphp/pest": "^1.18", - "phpstan/phpstan": "^0.12.98", - "symfony/var-dumper": "^5.3" - }, - "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": "2022-02-01T16:29:39+00:00" - }, - { - "name": "laravel/tinker", - "version": "v2.7.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/tinker.git", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/5f2f9815b7631b9f586a3de7933c25f9327d4073", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073", - "shasum": "" - }, - "require": { - "illuminate/console": "^6.0|^7.0|^8.0|^9.0", - "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.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", - "phpunit/phpunit": "^8.5.8|^9.3.3" - }, - "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.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.7.0" - }, - "time": "2022-01-10T08:52:49+00:00" - }, - { - "name": "laravel/ui", - "version": "v3.4.3", - "source": { - "type": "git", - "url": "https://github.com/laravel/ui.git", - "reference": "64a0f43492c00780b2261c56cd7007a4f370d95b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/ui/zipball/64a0f43492c00780b2261c56cd7007a4f370d95b", - "reference": "64a0f43492c00780b2261c56cd7007a4f370d95b", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.42|^9.0", - "illuminate/filesystem": "^8.42|^9.0", - "illuminate/support": "^8.82|^9.0", - "illuminate/validation": "^8.42|^9.0", - "php": "^7.3|^8.0" - }, - "require-dev": { - "orchestra/testbench": "^6.23|^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - }, - "laravel": { - "providers": [ - "Laravel\\Ui\\UiServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Laravel\\Ui\\": "src/", - "Illuminate\\Foundation\\Auth\\": "auth-backend/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "Laravel UI utilities and presets.", - "keywords": [ - "laravel", - "ui" - ], - "support": { - "source": "https://github.com/laravel/ui/tree/v3.4.3" - }, - "time": "2022-02-08T14:19:32+00:00" - }, - { - "name": "league/commonmark", - "version": "2.2.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/commonmark.git", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "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.15" - }, - "require-dev": { - "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.0", - "commonmark/commonmark.js": "0.30.0", - "composer/package-versions-deprecated": "^1.8", - "erusev/parsedown": "^1.0", - "ext-json": "*", - "github/gfm": "0.29.0", - "michelf/php-markdown": "^1.4", - "phpstan/phpstan": "^0.12.88 || ^1.0.0", - "phpunit/phpunit": "^9.5.5", - "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", - "unleashedtech/php-coding-standard": "^3.1", - "vimeo/psalm": "^4.7.3" - }, - "suggest": { - "symfony/yaml": "v2.3+ required if using the Front Matter extension" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.3-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": "2022-01-25T14:37:33+00:00" - }, - { - "name": "league/config", - "version": "v1.1.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/config.git", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/config/zipball/a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^3.0.1", - "nette/schema": "^1.2", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.90", - "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": "2021-08-14T12:15:32+00:00" - }, - { - "name": "league/flysystem", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9f8b4260031bfef5497477da53dd57b2aaff0e06", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06", - "shasum": "" - }, - "require": { - "ext-json": "*", - "league/mime-type-detection": "^1.0.0", - "php": "^8.0.2" - }, - "conflict": { - "guzzlehttp/guzzle": "<7.0", - "guzzlehttp/ringphp": "<1.1.1", - "symfony/http-client": "<5.2" - }, - "require-dev": { - "async-aws/s3": "^1.5", - "async-aws/simple-s3": "^1.0", - "aws/aws-sdk-php": "^3.198.1", - "composer/semver": "^3.0", - "ext-fileinfo": "*", - "ext-ftp": "*", - "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.5", - "google/cloud-storage": "^1.23", - "phpseclib/phpseclib": "^2.0", - "phpstan/phpstan": "^0.12.26", - "phpunit/phpunit": "^9.5.11", - "sabre/dav": "^4.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.0.3" - }, - "funding": [ - { - "url": "https://offset.earth/frankdejonge", - "type": "custom" - }, - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2022-01-31T19:41:04+00:00" - }, - { - "name": "league/mime-type-detection", - "version": "1.9.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/aa70e813a6ad3d1558fc927863d47309b4c23e69", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.2", - "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" - }, - "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.9.0" - }, - "funding": [ - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2021-11-21T11:48:40+00:00" - }, - { - "name": "monolog/monolog", - "version": "2.3.5", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd4380d6fc37626e2f799f29d91195040137eba9", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "provide": { - "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7", - "graylog2/gelf-php": "^1.4.2", - "mongodb/mongodb": "^1.8", - "php-amqplib/php-amqplib": "~2.4 || ^3", - "php-console/php-console": "^3.1.3", - "phpspec/prophecy": "^1.6.1", - "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5", - "predis/predis": "^1.1", - "rollbar/rollbar": "^1.3", - "ruflin/elastica": ">=0.90@dev", - "swiftmailer/swiftmailer": "^5.3|^6.0" - }, - "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", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "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": "2.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/2.3.5" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" - } - ], - "time": "2021-10-01T21:08:31+00:00" - }, - { - "name": "nesbot/carbon", - "version": "2.56.0", - "source": { - "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1.8 || ^8.0", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "doctrine/dbal": "^2.0 || ^3.0", - "doctrine/orm": "^2.7", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "phpmd/phpmd": "^2.9", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.54 || ^1.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.14", - "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://opencollective.com/Carbon", - "type": "open_collective" - }, - { - "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", - "type": "tidelift" - } - ], - "time": "2022-01-21T17:08:38+00:00" - }, - { - "name": "nette/schema", - "version": "v1.2.2", - "source": { - "type": "git", - "url": "https://github.com/nette/schema.git", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/9a39cef03a5b34c7de64f551538cbba05c2be5df", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df", - "shasum": "" - }, - "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": ">=7.1 <8.2" - }, - "require-dev": { - "nette/tester": "^2.3 || ^2.4", - "phpstan/phpstan-nette": "^0.12", - "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.2" - }, - "time": "2021-10-15T11:40:02+00:00" - }, - { - "name": "nette/utils", - "version": "v3.2.7", - "source": { - "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/0af4e3de4df9f1543534beab255ccf459e7a2c99", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99", - "shasum": "" - }, - "require": { - "php": ">=7.2 <8.2" - }, - "conflict": { - "nette/di": "<3.0.6" - }, - "require-dev": { - "nette/tester": "~2.0", - "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.3" - }, - "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()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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 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/v3.2.7" - }, - "time": "2022-01-24T11:29:14+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.13.2", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", - "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.13.2" - }, - "time": "2021-11-30T19:35:32+00:00" - }, - { - "name": "phpoption/phpoption", - "version": "1.8.1", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-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.8.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", - "type": "tidelift" - } - ], - "time": "2021-12-04T23:24:31+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.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.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": "http://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/tree/master" - }, - "time": "2020-06-29T06:28:15+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.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": "http://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/master" - }, - "time": "2019-04-30T12:38:16+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.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": "http://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/master" - }, - "time": "2016-08-06T14:39: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.1", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "570292577277f06f590635381a7f761a6cf4f026" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/570292577277f06f590635381a7f761a6cf4f026", - "reference": "570292577277f06f590635381a7f761a6cf4f026", - "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" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "3.17.05.02" - }, - "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.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." - }, - "bin": [ - "bin/psysh" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "0.11.x-dev" - } - }, - "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.1" - }, - "time": "2022-01-03T13:58:38+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": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/ramsey/collection.git", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "shasum": "" - }, - "require": { - "php": "^7.3 || ^8", - "symfony/polyfill-php81": "^1.23" - }, - "require-dev": { - "captainhook/captainhook": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "ergebnis/composer-normalize": "^2.6", - "fakerphp/faker": "^1.5", - "hamcrest/hamcrest-php": "^2", - "jangregor/phpstan-prophecy": "^0.8", - "mockery/mockery": "^1.3", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1", - "phpstan/phpstan": "^0.12.32", - "phpstan/phpstan-mockery": "^0.12.5", - "phpstan/phpstan-phpunit": "^0.12.11", - "phpunit/phpunit": "^8.5 || ^9", - "psy/psysh": "^0.10.4", - "slevomat/coding-standard": "^6.3", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.4" - }, - "type": "library", - "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/1.2.2" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "time": "2021-10-10T03:01:02+00:00" - }, - { - "name": "ramsey/uuid", - "version": "4.2.3", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "shasum": "" - }, - "require": { - "brick/math": "^0.8 || ^0.9", - "ext-json": "*", - "php": "^7.2 || ^8.0", - "ramsey/collection": "^1.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php80": "^1.14" - }, - "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", - "moontoast/math": "^1.1", - "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.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-mockery": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^8.5 || ^9", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" - }, - "suggest": { - "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-ctype": "Enables faster processing of character classification using ctype functions.", - "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": { - "branch-alias": { - "dev-main": "4.x-dev" - }, - "captainhook": { - "force-install": true - } - }, - "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "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.2.3" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2021-09-25T23:10:38+00:00" - }, - { - "name": "symfony/console", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/22e8efd019c3270c4f79376234a3f8752cd25490", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.4|^6.0" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/css-selector", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/1955d595c12c111629cc814d3f2a2ff13580508a", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a", - "shasum": "" - }, - "require": { - "php": ">=8.0.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/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-11-01T23:48:49+00:00" - }, - { - "name": "symfony/error-handler", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/20343b3bad7ebafa38138ddcb97290a24722b57b", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" - }, - "bin": [ - "Resources/bin/patch-type-declarations" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to manage errors and ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6472ea2dd415e925b90ca82be64b8bc6157f3934", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/event-dispatcher-contracts": "^2|^3" - }, - "conflict": { - "symfony/dependency-injection": "<5.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^5.4|^6.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/aa5422287b75594b90ee9cd807caf8f0df491385", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/event-dispatcher": "^1" - }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-07-15T12:33:35+00:00" - }, - { - "name": "symfony/finder", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/8661b74dbabc23223f38c9b99d3f8ade71170430", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ad157299ced81a637fade1efcadd688d6deba5c1", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1" - }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/cache": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0" - }, - "suggest": { - "symfony/mime": "To use the file extension guesser" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v6.0.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/error-handler": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", - "symfony/twig-bridge": "<5.4", - "symfony/validator": "<5.4", - "twig/twig": "<2.13" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/process": "^5.4|^6.0", - "symfony/routing": "^5.4|^6.0", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-29T18:12:46+00:00" - }, - { - "name": "symfony/mailer", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mailer.git", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "shasum": "" - }, - "require": { - "egulias/email-validator": "^2.1.10|^3", - "php": ">=8.0.2", - "psr/event-dispatcher": "^1", - "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3" - }, - "conflict": { - "symfony/http-kernel": "<5.4" - }, - "require-dev": { - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/messenger": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/mime", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/2cd9601efd040e56f43360daa68f3c6b0534923a", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "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" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "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.24.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": "2021-10-20T20:35:02+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-11-23T21:10:46+00:00" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44", - "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.23-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.24.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": "2021-09-14T14:02:44+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.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": "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.24.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": "2021-11-30T18:21:41+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-05-27T09:17:38+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:33+00:00" - }, - { - "name": "symfony/polyfill-php81", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:11+00:00" - }, - { - "name": "symfony/process", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/298ed357274c1868c20a0061df256a1250a6c4af", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/routing", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/yaml": "<5.4" - }, - "require-dev": { - "doctrine/annotations": "^1.12", - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/36715ebf9fb9db73db0cb24263c79077c6fe8603", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/container": "^2.0" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "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.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": "2021-11-04T17:53:12+00:00" - }, - { - "name": "symfony/string", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/522144f0c4c004c80d56fa47e40e17028e2eefc2", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.0" - }, - "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/translation-contracts": "^2.0|^3.0", - "symfony/var-exporter": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "files": [ - "Resources/functions.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 an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/translation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/71bb15335798f8c4da110911bcf2d2fead7a430d", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.3|^3.0" - }, - "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" - }, - "provide": { - "symfony/translation-implementation": "2.3|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-07T00:29:03+00:00" - }, - { - "name": "symfony/translation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "suggest": { - "symfony/translation-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - } - }, - "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.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": "2021-09-07T12:43:40+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7b701676fc64f9ef11f9b4870f16b48f66be4834", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<5.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-17T16:30:44+00:00" - }, - { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.4", - "source": { - "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" - } - ], - "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", - "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "support": { - "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" - }, - "time": "2021-12-08T09:12:39+00:00" - }, - { - "name": "vlucas/phpdotenv", - "version": "v5.4.1", - "source": { - "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", - "shasum": "" - }, - "require": { - "ext-pcre": "*", - "graham-campbell/result-type": "^1.0.2", - "php": "^7.1.3 || ^8.0", - "phpoption/phpoption": "^1.8", - "symfony/polyfill-ctype": "^1.23", - "symfony/polyfill-mbstring": "^1.23.1", - "symfony/polyfill-php80": "^1.23.1" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" - }, - "suggest": { - "ext-filter": "Required to use the boolean validator." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.4-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.4.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", - "type": "tidelift" - } - ], - "time": "2021-12-12T23:22:04+00:00" - }, - { - "name": "voku/portable-ascii", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/voku/portable-ascii.git", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/9bd89e83cecdf8c37b64909454249eaed98b2c89", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89", - "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.0" - }, - "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-01-24T18:59:03+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "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.10.0" - }, - "time": "2021-03-09T10:59:23+00:00" - } - ], - "packages-dev": [ - { - "name": "doctrine/instantiator", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.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%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2020-11-10T18:47:58+00:00" - }, - { - "name": "facade/ignition-contracts", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/facade/ignition-contracts.git", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^v2.15.8", - "phpunit/phpunit": "^9.3.11", - "vimeo/psalm": "^3.17.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Facade\\IgnitionContracts\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://flareapp.io", - "role": "Developer" - } - ], - "description": "Solution contracts for Ignition", - "homepage": "https://github.com/facade/ignition-contracts", - "keywords": [ - "contracts", - "flare", - "ignition" - ], - "support": { - "issues": "https://github.com/facade/ignition-contracts/issues", - "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" - }, - "time": "2020-10-16T08:27:54+00:00" - }, - { - "name": "fakerphp/faker", - "version": "v1.19.0", - "source": { - "type": "git", - "url": "https://github.com/FakerPHP/Faker.git", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^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": "*", - "symfony/phpunit-bridge": "^4.4 || ^5.2" - }, - "suggest": { - "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", - "ext-curl": "Required by Faker\\Provider\\Image to download images.", - "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", - "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.19-dev" - } - }, - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "François Zaninotto" - } - ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], - "support": { - "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0" - }, - "time": "2022-02-02T17:38:57+00:00" - }, - { - "name": "filp/whoops", - "version": "2.14.5", - "source": { - "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "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.14.5" - }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "time": "2022-01-07T12:00:00+00:00" - }, - { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "shasum": "" - }, - "require": { - "php": "^5.3|^7.0|^8.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" - }, - "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "classmap": [ - "hamcrest" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "This is the PHP port of Hamcrest Matchers", - "keywords": [ - "test" - ], - "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" - }, - "time": "2020-07-09T08:09:16+00:00" - }, - { - "name": "laravel/sail", - "version": "v1.13.2", - "source": { - "type": "git", - "url": "https://github.com/laravel/sail.git", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.0|^9.0", - "illuminate/contracts": "^8.0|^9.0", - "illuminate/support": "^8.0|^9.0", - "php": "^7.3|^8.0" - }, - "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": "2022-02-08T14:14:12+00:00" - }, - { - "name": "mockery/mockery", - "version": "1.5.0", - "source": { - "type": "git", - "url": "https://github.com/mockery/mockery.git", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "shasum": "" - }, - "require": { - "hamcrest/hamcrest-php": "^2.0.1", - "lib-pcre": ">=7.0", - "php": "^7.3 || ^8.0" - }, - "conflict": { - "phpunit/phpunit": "<8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-0": { - "Mockery": "library/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" - } - ], - "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": { - "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.5.0" - }, - "time": "2022-01-20T13:18:17+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.10.2", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "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.10.2" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2020-11-13T09:40:50+00:00" - }, - { - "name": "nunomaduro/collision", - "version": "v6.1.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/collision.git", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "shasum": "" - }, - "require": { - "facade/ignition-contracts": "^1.0.2", - "filp/whoops": "^2.14.5", - "php": "^8.0.0", - "symfony/console": "^6.0.2" - }, - "require-dev": { - "brianium/paratest": "^6.4.1", - "laravel/framework": "^9.0", - "nunomaduro/larastan": "^1.0.2", - "nunomaduro/mock-final-classes": "^1.1.0", - "orchestra/testbench": "^7.0.0", - "phpunit/phpunit": "^9.5.11" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "6.x-dev" - }, - "laravel": { - "providers": [ - "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" - ] - } - }, - "autoload": { - "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": "2022-01-18T17:49:08+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.1.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/15a90844ad40f127afd244c0cad228de2a80052a", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a", - "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.1.1" - }, - "time": "2022-02-07T21:56:48+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.6.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "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.6.0" - }, - "time": "2022-01-04T19:58:01+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" - }, - "time": "2021-12-08T12:19:24+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "9.2.10", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d5850aaf931743067f4bfc1ae4cbd06468400687", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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 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", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.10" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-05T09:12:13+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "3.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-02T12:48:52+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "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/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:58:55+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T05:33:50+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.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/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:16:10+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "9.5.13", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/597cb647654ede35e43b137926dfdfef0fb11743", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.3.1", - "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": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.7", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", - "sebastian/version": "^3.0.2" - }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.13" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-01-24T07:33:35+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:08:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "1.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:08:54+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:30:19+00:00" - }, - { - "name": "sebastian/comparator", - "version": "4.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:49:45+00:00" - }, - { - "name": "sebastian/complexity", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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 calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:52:27+00:00" - }, - { - "name": "sebastian/diff", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:10:38+00:00" - }, - { - "name": "sebastian/environment", - "version": "5.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-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": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:52:38+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "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", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-11-11T14:18:36+00:00" - }, - { - "name": "sebastian/global-state", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-11T13:31:12+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-28T06:42:11+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "http://www.github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:17:30+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:45:17+00:00" - }, - { - "name": "sebastian/type", - "version": "2.3.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-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/2.3.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-15T12:49:02+00:00" - }, - { - "name": "sebastian/version", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:39:44+00:00" - }, - { - "name": "spatie/backtrace", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/backtrace.git", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "ext-json": "*", - "phpunit/phpunit": "^9.3", - "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": { - "issues": "https://github.com/spatie/backtrace/issues", - "source": "https://github.com/spatie/backtrace/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/sponsors/spatie", - "type": "github" - }, - { - "url": "https://spatie.be/open-source/support-us", - "type": "other" - } - ], - "time": "2021-11-09T10:57:15+00:00" - }, - { - "name": "spatie/flare-client-php", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/flare-client-php.git", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "shasum": "" - }, - "require": { - "illuminate/pipeline": "^8.0|^9.0", - "php": "^8.0", - "spatie/backtrace": "^1.2", - "symfony/http-foundation": "^5.0|^6.0", - "symfony/mime": "^5.2|^6.0", - "symfony/process": "^5.2|^6.0", - "symfony/var-dumper": "^5.2|^6.0" - }, - "require-dev": { - "dms/phpunit-arraysubset-asserts": "^0.3.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/phpunit-snapshot-assertions": "^4.0" - }, - "type": "library", - "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.0.1" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2022-02-04T15:21:00+00:00" - }, - { - "name": "spatie/ignition", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/spatie/ignition.git", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/d2d5ba823af3004268556e87dfc94449e4159f5a", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "monolog/monolog": "^2.0", - "php": "^8.0", - "spatie/flare-client-php": "^1.0", - "symfony/console": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "mockery/mockery": "^1.4", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/ray": "^1.32", - "symfony/process": "^5.4|^6.0" - }, - "type": "library", - "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": "2022-01-19T12:57:41+00:00" - }, - { - "name": "spatie/laravel-ignition", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/68250225a9f83b086462c2af1b1139dfde48fbd2", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*", - "illuminate/support": "^8.77|^9.0", - "monolog/monolog": "^2.3", - "php": "^8.0", - "spatie/flare-client-php": "^1.0.1", - "spatie/ignition": "^1.0", - "symfony/console": "^5.0|^6.0", - "symfony/var-dumper": "^5.0|^6.0" - }, - "require-dev": { - "filp/whoops": "^2.14", - "livewire/livewire": "^2.8|dev-develop", - "mockery/mockery": "^1.4", - "nunomaduro/larastan": "^1.0", - "orchestra/testbench": "^6.23|^7.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/laravel-ray": "^1.27" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Spatie\\LaravelIgnition\\IgnitionServiceProvider" - ], - "aliases": { - "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" - } - } - }, - "autoload": { - "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": "2022-02-04T15:25:56+00:00" - }, - { - "name": "squizlabs/php_codesniffer", - "version": "3.6.2", - "source": { - "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", - "shasum": "" - }, - "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.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": "lead" - } - ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", - "keywords": [ - "phpcs", - "standards" - ], - "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" - }, - "time": "2021-12-12T21:44:58+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2021-07-28T10:34:58+00:00" - } - ], - "aliases": [], - "minimum-stability": "dev", - "stability-flags": [], - "prefer-stable": true, - "prefer-lowest": false, - "platform": { - "php": "^8.0" - }, - "platform-dev": [], - "plugin-api-version": "2.1.0" -} diff --git a/Chapter28/onlineStore/config/app.php b/Chapter28/onlineStore/config/app.php deleted file mode 100644 index 1941d7c..0000000 --- a/Chapter28/onlineStore/config/app.php +++ /dev/null @@ -1,197 +0,0 @@ - env('APP_NAME', 'Laravel'), - - /* - |-------------------------------------------------------------------------- - | Application Environment - |-------------------------------------------------------------------------- - | - | This value determines the "environment" your application is currently - | running in. This may determine how you prefer to configure various - | services the application utilizes. Set this in your ".env" file. - | - */ - - 'env' => env('APP_ENV', 'production'), - - /* - |-------------------------------------------------------------------------- - | Application Debug Mode - |-------------------------------------------------------------------------- - | - | When your application is in debug mode, detailed error messages with - | stack traces will be shown on every error that occurs within your - | application. If disabled, a simple generic error page is shown. - | - */ - - 'debug' => (bool) env('APP_DEBUG', false), - - /* - |-------------------------------------------------------------------------- - | Application URL - |-------------------------------------------------------------------------- - | - | This URL is used by the console to properly generate URLs when using - | the Artisan command line tool. You should set this to the root of - | your application so that it is used when running Artisan tasks. - | - */ - - 'url' => env('APP_URL', 'http://localhost'), - - 'asset_url' => env('ASSET_URL', null), - - /* - |-------------------------------------------------------------------------- - | 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', - - /* - |-------------------------------------------------------------------------- - | 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' => [ - - /* - * Laravel Framework Service Providers... - */ - Illuminate\Auth\AuthServiceProvider::class, - Illuminate\Broadcasting\BroadcastServiceProvider::class, - Illuminate\Bus\BusServiceProvider::class, - Illuminate\Cache\CacheServiceProvider::class, - Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, - Illuminate\Cookie\CookieServiceProvider::class, - Illuminate\Database\DatabaseServiceProvider::class, - Illuminate\Encryption\EncryptionServiceProvider::class, - Illuminate\Filesystem\FilesystemServiceProvider::class, - Illuminate\Foundation\Providers\FoundationServiceProvider::class, - Illuminate\Hashing\HashServiceProvider::class, - Illuminate\Mail\MailServiceProvider::class, - Illuminate\Notifications\NotificationServiceProvider::class, - Illuminate\Pagination\PaginationServiceProvider::class, - Illuminate\Pipeline\PipelineServiceProvider::class, - Illuminate\Queue\QueueServiceProvider::class, - Illuminate\Redis\RedisServiceProvider::class, - Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, - Illuminate\Session\SessionServiceProvider::class, - Illuminate\Translation\TranslationServiceProvider::class, - Illuminate\Validation\ValidationServiceProvider::class, - Illuminate\View\ViewServiceProvider::class, - - /* - * 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, - - ], - - /* - |-------------------------------------------------------------------------- - | 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([ - // ... - ])->toArray(), - -]; diff --git a/Chapter28/onlineStore/config/auth.php b/Chapter28/onlineStore/config/auth.php deleted file mode 100644 index d8c6cee..0000000 --- a/Chapter28/onlineStore/config/auth.php +++ /dev/null @@ -1,111 +0,0 @@ - [ - '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 expire 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. - | - */ - - 'passwords' => [ - 'users' => [ - 'provider' => 'users', - 'table' => 'password_resets', - '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/Chapter28/onlineStore/config/broadcasting.php b/Chapter28/onlineStore/config/broadcasting.php deleted file mode 100644 index 67fcbbd..0000000 --- a/Chapter28/onlineStore/config/broadcasting.php +++ /dev/null @@ -1,67 +0,0 @@ - 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'), - 'useTLS' => true, - ], - '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/Chapter28/onlineStore/config/cache.php b/Chapter28/onlineStore/config/cache.php deleted file mode 100644 index 8736c7a..0000000 --- a/Chapter28/onlineStore/config/cache.php +++ /dev/null @@ -1,110 +0,0 @@ - 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'), - ], - - '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 a RAM based store such as APC or Memcached, there might - | be other applications utilizing the same cache. So, we'll specify a - | value to get prefixed to all our keys so we can avoid collisions. - | - */ - - 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'), - -]; diff --git a/Chapter28/onlineStore/config/cors.php b/Chapter28/onlineStore/config/cors.php deleted file mode 100644 index 8a39e6d..0000000 --- a/Chapter28/onlineStore/config/cors.php +++ /dev/null @@ -1,34 +0,0 @@ - ['api/*', 'sanctum/csrf-cookie'], - - 'allowed_methods' => ['*'], - - 'allowed_origins' => ['*'], - - 'allowed_origins_patterns' => [], - - 'allowed_headers' => ['*'], - - 'exposed_headers' => [], - - 'max_age' => 0, - - 'supports_credentials' => false, - -]; diff --git a/Chapter28/onlineStore/config/database.php b/Chapter28/onlineStore/config/database.php deleted file mode 100644 index 0faebae..0000000 --- a/Chapter28/onlineStore/config/database.php +++ /dev/null @@ -1,147 +0,0 @@ - env('DB_CONNECTION', 'mysql'), - - /* - |-------------------------------------------------------------------------- - | Database Connections - |-------------------------------------------------------------------------- - | - | Here are each of the database connections setup for your application. - | Of course, examples of configuring each database platform that is - | supported by Laravel is shown below to make development simple. - | - | - | All database work in Laravel is done through the PHP PDO facilities - | so make sure you have the driver for your particular database of - | choice installed on your machine before you begin development. - | - */ - - 'connections' => [ - - 'sqlite' => [ - 'driver' => 'sqlite', - 'url' => env('DATABASE_URL'), - 'database' => env('DB_DATABASE', database_path('database.sqlite')), - 'prefix' => '', - 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), - ], - - 'mysql' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '3306'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'unix_socket' => env('DB_SOCKET', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - 'pgsql' => [ - 'driver' => 'pgsql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '5432'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - 'search_path' => 'public', - 'sslmode' => 'prefer', - ], - - 'sqlsrv' => [ - 'driver' => 'sqlsrv', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', 'localhost'), - 'port' => env('DB_PORT', '1433'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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'), - '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'), - 'password' => env('REDIS_PASSWORD'), - 'port' => env('REDIS_PORT', '6379'), - 'database' => env('REDIS_CACHE_DB', '1'), - ], - - ], - -]; diff --git a/Chapter28/onlineStore/config/filesystems.php b/Chapter28/onlineStore/config/filesystems.php deleted file mode 100644 index cf5abce..0000000 --- a/Chapter28/onlineStore/config/filesystems.php +++ /dev/null @@ -1,73 +0,0 @@ - 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 setup for each driver as an example of the required options. - | - | Supported Drivers: "local", "ftp", "sftp", "s3" - | - */ - - 'disks' => [ - - 'local' => [ - 'driver' => 'local', - 'root' => storage_path('app'), - ], - - 'public' => [ - 'driver' => 'local', - 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', - 'visibility' => 'public', - ], - - '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), - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter28/onlineStore/config/hashing.php b/Chapter28/onlineStore/config/hashing.php deleted file mode 100644 index bcd3be4..0000000 --- a/Chapter28/onlineStore/config/hashing.php +++ /dev/null @@ -1,52 +0,0 @@ - '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/Chapter28/onlineStore/config/logging.php b/Chapter28/onlineStore/config/logging.php deleted file mode 100644 index fefe088..0000000 --- a/Chapter28/onlineStore/config/logging.php +++ /dev/null @@ -1,119 +0,0 @@ - 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' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), - - /* - |-------------------------------------------------------------------------- - | 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'), - ], - - 'daily' => [ - 'driver' => 'daily', - 'path' => storage_path('logs/laravel.log'), - 'level' => env('LOG_LEVEL', 'debug'), - 'days' => 14, - ], - - 'slack' => [ - 'driver' => 'slack', - 'url' => env('LOG_SLACK_WEBHOOK_URL'), - 'username' => 'Laravel Log', - 'emoji' => ':boom:', - 'level' => env('LOG_LEVEL', 'critical'), - ], - - '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'), - ], - ], - - 'stderr' => [ - 'driver' => 'monolog', - 'level' => env('LOG_LEVEL', 'debug'), - 'handler' => StreamHandler::class, - 'formatter' => env('LOG_STDERR_FORMATTER'), - 'with' => [ - 'stream' => 'php://stderr', - ], - ], - - 'syslog' => [ - 'driver' => 'syslog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'errorlog' => [ - 'driver' => 'errorlog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'null' => [ - 'driver' => 'monolog', - 'handler' => NullHandler::class, - ], - - 'emergency' => [ - 'path' => storage_path('logs/laravel.log'), - ], - ], - -]; diff --git a/Chapter28/onlineStore/config/mail.php b/Chapter28/onlineStore/config/mail.php deleted file mode 100644 index 87b6fe3..0000000 --- a/Chapter28/onlineStore/config/mail.php +++ /dev/null @@ -1,117 +0,0 @@ - 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", - | "postmark", "log", "array", "failover" - | - */ - - 'mailers' => [ - 'smtp' => [ - 'transport' => 'smtp', - '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, - ], - - 'ses' => [ - 'transport' => 'ses', - ], - - 'mailgun' => [ - 'transport' => 'mailgun', - ], - - 'postmark' => [ - 'transport' => 'postmark', - ], - - 'sendmail' => [ - 'transport' => 'sendmail', - 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -t -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/Chapter28/onlineStore/config/queue.php b/Chapter28/onlineStore/config/queue.php deleted file mode 100644 index 25ea5a8..0000000 --- a/Chapter28/onlineStore/config/queue.php +++ /dev/null @@ -1,93 +0,0 @@ - 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, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter28/onlineStore/config/sanctum.php b/Chapter28/onlineStore/config/sanctum.php deleted file mode 100644 index 9281c92..0000000 --- a/Chapter28/onlineStore/config/sanctum.php +++ /dev/null @@ -1,65 +0,0 @@ - explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( - '%s%s', - 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', - env('APP_URL') ? ','.parse_url(env('APP_URL'), PHP_URL_HOST) : '' - ))), - - /* - |-------------------------------------------------------------------------- - | 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/Chapter28/onlineStore/config/services.php b/Chapter28/onlineStore/config/services.php deleted file mode 100644 index 2a1d616..0000000 --- a/Chapter28/onlineStore/config/services.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - 'domain' => env('MAILGUN_DOMAIN'), - 'secret' => env('MAILGUN_SECRET'), - 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), - ], - - '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/Chapter28/onlineStore/config/session.php b/Chapter28/onlineStore/config/session.php deleted file mode 100644 index 8fed97c..0000000 --- a/Chapter28/onlineStore/config/session.php +++ /dev/null @@ -1,201 +0,0 @@ - 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/Chapter28/onlineStore/config/view.php b/Chapter28/onlineStore/config/view.php deleted file mode 100644 index 22b8a18..0000000 --- a/Chapter28/onlineStore/config/view.php +++ /dev/null @@ -1,36 +0,0 @@ - [ - 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/Chapter28/onlineStore/database/.gitignore b/Chapter28/onlineStore/database/.gitignore deleted file mode 100644 index 9b19b93..0000000 --- a/Chapter28/onlineStore/database/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.sqlite* diff --git a/Chapter28/onlineStore/database/factories/UserFactory.php b/Chapter28/onlineStore/database/factories/UserFactory.php deleted file mode 100644 index d6ca926..0000000 --- a/Chapter28/onlineStore/database/factories/UserFactory.php +++ /dev/null @@ -1,42 +0,0 @@ - - */ -class UserFactory extends Factory -{ - /** - * Define the model's default state. - * - * @return array - */ - public function definition() - { - return [ - 'name' => $this->faker->name(), - 'email' => $this->faker->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. - * - * @return \Illuminate\Database\Eloquent\Factories\Factory - */ - public function unverified() - { - return $this->state(function (array $attributes) { - return [ - 'email_verified_at' => null, - ]; - }); - } -} diff --git a/Chapter28/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php b/Chapter28/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php deleted file mode 100644 index cf6b776..0000000 --- a/Chapter28/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->string('name'); - $table->string('email')->unique(); - $table->timestamp('email_verified_at')->nullable(); - $table->string('password'); - $table->rememberToken(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('users'); - } -}; diff --git a/Chapter28/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php b/Chapter28/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php deleted file mode 100644 index 0ee0a36..0000000 --- a/Chapter28/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php +++ /dev/null @@ -1,32 +0,0 @@ -string('email')->index(); - $table->string('token'); - $table->timestamp('created_at')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('password_resets'); - } -} diff --git a/Chapter28/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/Chapter28/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php deleted file mode 100644 index 1719198..0000000 --- a/Chapter28/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php +++ /dev/null @@ -1,36 +0,0 @@ -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. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('failed_jobs'); - } -}; diff --git a/Chapter28/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/Chapter28/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php deleted file mode 100644 index fd235f8..0000000 --- a/Chapter28/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->morphs('tokenable'); - $table->string('name'); - $table->string('token', 64)->unique(); - $table->text('abilities')->nullable(); - $table->timestamp('last_used_at')->nullable(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('personal_access_tokens'); - } -}; diff --git a/Chapter28/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php b/Chapter28/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php deleted file mode 100644 index 2eecdc2..0000000 --- a/Chapter28/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php +++ /dev/null @@ -1,35 +0,0 @@ -id(); - $table->string('name'); - $table->text('description'); - $table->string('image'); - $table->integer('price'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('products'); - } -}; diff --git a/Chapter28/onlineStore/database/migrations/2022_02_12_140820_alter_users_table.php b/Chapter28/onlineStore/database/migrations/2022_02_12_140820_alter_users_table.php deleted file mode 100644 index 5bfcf7e..0000000 --- a/Chapter28/onlineStore/database/migrations/2022_02_12_140820_alter_users_table.php +++ /dev/null @@ -1,34 +0,0 @@ -string('role')->default('client'); - $table->integer('balance'); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::table('users', function (Blueprint $table) { - $table->dropColumn(['role']); - $table->dropColumn(['balance']); - }); - } -}; diff --git a/Chapter28/onlineStore/database/migrations/2022_02_12_152713_create_orders_table.php b/Chapter28/onlineStore/database/migrations/2022_02_12_152713_create_orders_table.php deleted file mode 100644 index fc05fda..0000000 --- a/Chapter28/onlineStore/database/migrations/2022_02_12_152713_create_orders_table.php +++ /dev/null @@ -1,34 +0,0 @@ -id(); - $table->integer('total'); - $table->unsignedBigInteger('user_id'); - $table->foreign('user_id')->references('id')->on('users'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('orders'); - } -}; diff --git a/Chapter28/onlineStore/database/migrations/2022_02_12_152850_create_items_table.php b/Chapter28/onlineStore/database/migrations/2022_02_12_152850_create_items_table.php deleted file mode 100644 index d7dfac5..0000000 --- a/Chapter28/onlineStore/database/migrations/2022_02_12_152850_create_items_table.php +++ /dev/null @@ -1,37 +0,0 @@ -id(); - $table->integer('quantity'); - $table->integer('price'); - $table->unsignedBigInteger('order_id'); - $table->foreign('order_id')->references('id')->on('orders'); - $table->unsignedBigInteger('product_id'); - $table->foreign('product_id')->references('id')->on('products'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('items'); - } -}; diff --git a/Chapter28/onlineStore/database/seeders/DatabaseSeeder.php b/Chapter28/onlineStore/database/seeders/DatabaseSeeder.php deleted file mode 100644 index 71f673f..0000000 --- a/Chapter28/onlineStore/database/seeders/DatabaseSeeder.php +++ /dev/null @@ -1,19 +0,0 @@ -create(); - } -} diff --git a/Chapter28/onlineStore/lang/en.json b/Chapter28/onlineStore/lang/en.json deleted file mode 100644 index 577680d..0000000 --- a/Chapter28/onlineStore/lang/en.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "The :attribute must contain at least one letter.": "The :attribute must contain at least one letter.", - "The :attribute must contain at least one number.": "The :attribute must contain at least one number.", - "The :attribute must contain at least one symbol.": "The :attribute must contain at least one symbol.", - "The :attribute must contain at least one uppercase and one lowercase letter.": "The :attribute must contain at least one uppercase and one lowercase letter.", - "The given :attribute has appeared in a data leak. Please choose a different :attribute.": "The given :attribute has appeared in a data leak. Please choose a different :attribute." -} diff --git a/Chapter28/onlineStore/lang/en/auth.php b/Chapter28/onlineStore/lang/en/auth.php deleted file mode 100644 index 6598e2c..0000000 --- a/Chapter28/onlineStore/lang/en/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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/Chapter28/onlineStore/lang/en/pagination.php b/Chapter28/onlineStore/lang/en/pagination.php deleted file mode 100644 index d481411..0000000 --- a/Chapter28/onlineStore/lang/en/pagination.php +++ /dev/null @@ -1,19 +0,0 @@ - '« Previous', - 'next' => 'Next »', - -]; diff --git a/Chapter28/onlineStore/lang/en/passwords.php b/Chapter28/onlineStore/lang/en/passwords.php deleted file mode 100644 index 2345a56..0000000 --- a/Chapter28/onlineStore/lang/en/passwords.php +++ /dev/null @@ -1,22 +0,0 @@ - '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/Chapter28/onlineStore/lang/en/validation.php b/Chapter28/onlineStore/lang/en/validation.php deleted file mode 100644 index 783003c..0000000 --- a/Chapter28/onlineStore/lang/en/validation.php +++ /dev/null @@ -1,163 +0,0 @@ - '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' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - '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' => [ - 'numeric' => 'The :attribute must be greater than :value.', - 'file' => 'The :attribute must be greater than :value kilobytes.', - 'string' => 'The :attribute must be greater than :value characters.', - 'array' => 'The :attribute must have more than :value items.', - ], - 'gte' => [ - 'numeric' => 'The :attribute must be greater than or equal to :value.', - 'file' => 'The :attribute must be greater than or equal to :value kilobytes.', - 'string' => 'The :attribute must be greater than or equal to :value characters.', - 'array' => 'The :attribute must have :value items or more.', - ], - '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' => [ - 'numeric' => 'The :attribute must be less than :value.', - 'file' => 'The :attribute must be less than :value kilobytes.', - 'string' => 'The :attribute must be less than :value characters.', - 'array' => 'The :attribute must have less than :value items.', - ], - 'lte' => [ - 'numeric' => 'The :attribute must be less than or equal to :value.', - 'file' => 'The :attribute must be less than or equal to :value kilobytes.', - 'string' => 'The :attribute must be less than or equal to :value characters.', - 'array' => 'The :attribute must not have more than :value items.', - ], - 'mac_address' => 'The :attribute must be a valid MAC address.', - 'max' => [ - 'numeric' => 'The :attribute must not be greater than :max.', - 'file' => 'The :attribute must not be greater than :max kilobytes.', - 'string' => 'The :attribute must not be greater than :max characters.', - 'array' => 'The :attribute must not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - '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.', - 'password' => 'The password is incorrect.', - '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' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - '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/Chapter28/onlineStore/package.json b/Chapter28/onlineStore/package.json deleted file mode 100644 index 7b71681..0000000 --- a/Chapter28/onlineStore/package.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "private": true, - "scripts": { - "dev": "npm run development", - "development": "mix", - "watch": "mix watch", - "watch-poll": "mix watch -- --watch-options-poll=1000", - "hot": "mix watch --hot", - "prod": "npm run production", - "production": "mix --production" - }, - "devDependencies": { - "@popperjs/core": "^2.10.2", - "axios": "^0.25", - "bootstrap": "^5.1.3", - "laravel-mix": "^6.0.6", - "lodash": "^4.17.19", - "postcss": "^8.1.14", - "sass": "^1.32.11", - "sass-loader": "^11.0.1" - } -} diff --git a/Chapter28/onlineStore/phpcs.xml b/Chapter28/onlineStore/phpcs.xml deleted file mode 100644 index a1cf2b6..0000000 --- a/Chapter28/onlineStore/phpcs.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - The coding standard for the Online Store project - - app/ - config/ - database/ - routes/ - */migrations/* - diff --git a/Chapter28/onlineStore/phpunit.xml b/Chapter28/onlineStore/phpunit.xml deleted file mode 100644 index 2ac86a1..0000000 --- a/Chapter28/onlineStore/phpunit.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - ./tests/Unit - - - ./tests/Feature - - - - - ./app - - - - - - - - - - - - - - diff --git a/Chapter28/onlineStore/public/.htaccess b/Chapter28/onlineStore/public/.htaccess deleted file mode 100644 index 3aec5e2..0000000 --- a/Chapter28/onlineStore/public/.htaccess +++ /dev/null @@ -1,21 +0,0 @@ - - - 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/Chapter28/onlineStore/public/css/admin.css b/Chapter28/onlineStore/public/css/admin.css deleted file mode 100644 index d9495a1..0000000 --- a/Chapter28/onlineStore/public/css/admin.css +++ /dev/null @@ -1,33 +0,0 @@ -.copyright { - background-color: #1a252f; -} - -.fixed { - -ms-flex: 0 0 250px; - flex: 0 0 250px; -} - -.content-grey { - background-color: #f8f9fc; -} - -hr { - margin-top: 0.8em; - margin-bottom: 0.8em; -} - -.img-profile { - height: 2rem; - width: 2rem; -} - -.profile-font { - color: #858796 !important; - font-size: 80%; - font-weight: 400; -} - -.card-header { - background-color: #f8f9fc; - border-bottom: 1px solid #e3e6f0; -} diff --git a/Chapter28/onlineStore/public/css/app.css b/Chapter28/onlineStore/public/css/app.css deleted file mode 100644 index cabac36..0000000 --- a/Chapter28/onlineStore/public/css/app.css +++ /dev/null @@ -1,20 +0,0 @@ -.bg-secondary { - background-color: #2c3e50 !important; -} - -.copyright { - background-color: #1a252f; -} - -.bg-primary { - background-color: #1abc9c !important; -} - -nav{ - font-weight: 700; -} - -.img-card{ - height: 18vw; - object-fit: cover; -} diff --git a/Chapter28/onlineStore/public/favicon.ico b/Chapter28/onlineStore/public/favicon.ico deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter28/onlineStore/public/img/game.png b/Chapter28/onlineStore/public/img/game.png deleted file mode 100644 index 85420e8bbc16098bf26b4ee63bde0e91a19d1f2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25896 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 cz>% diff --git a/Chapter28/onlineStore/public/img/safe.png b/Chapter28/onlineStore/public/img/safe.png deleted file mode 100644 index 445942c707af53210931f9f4f99f6d3cb69e5d89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19240 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
w==XB0?3|p=#`o%NsudE(E-U#KS3Snw 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 o>ir+C;RN10sIS0&a;p - - - - - - - - - - - - - - - - - - diff --git a/Chapter28/onlineStore/public/index.php b/Chapter28/onlineStore/public/index.php deleted file mode 100644 index 1d69f3a..0000000 --- a/Chapter28/onlineStore/public/index.php +++ /dev/null @@ -1,55 +0,0 @@ -make(Kernel::class); - -$response = $kernel->handle( - $request = Request::capture() -)->send(); - -$kernel->terminate($request, $response); diff --git a/Chapter28/onlineStore/public/robots.txt b/Chapter28/onlineStore/public/robots.txt deleted file mode 100644 index eb05362..0000000 --- a/Chapter28/onlineStore/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: diff --git a/Chapter28/onlineStore/resources/css/app.css b/Chapter28/onlineStore/resources/css/app.css deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter28/onlineStore/resources/js/app.js b/Chapter28/onlineStore/resources/js/app.js deleted file mode 100644 index 40c55f6..0000000 --- a/Chapter28/onlineStore/resources/js/app.js +++ /dev/null @@ -1 +0,0 @@ -require('./bootstrap'); diff --git a/Chapter28/onlineStore/resources/js/bootstrap.js b/Chapter28/onlineStore/resources/js/bootstrap.js deleted file mode 100644 index dcdc4df..0000000 --- a/Chapter28/onlineStore/resources/js/bootstrap.js +++ /dev/null @@ -1,32 +0,0 @@ -window._ = require('lodash'); - -try { - require('bootstrap'); -} catch (e) {} - -/** - * 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 = require('axios'); - -window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; - -/** - * 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'; - -// window.Pusher = require('pusher-js'); - -// window.Echo = new Echo({ -// broadcaster: 'pusher', -// key: process.env.MIX_PUSHER_APP_KEY, -// cluster: process.env.MIX_PUSHER_APP_CLUSTER, -// forceTLS: true -// }); diff --git a/Chapter28/onlineStore/resources/sass/_variables.scss b/Chapter28/onlineStore/resources/sass/_variables.scss deleted file mode 100644 index 172daaa..0000000 --- a/Chapter28/onlineStore/resources/sass/_variables.scss +++ /dev/null @@ -1,7 +0,0 @@ -// Body -$body-bg: #f8fafc; - -// Typography -$font-family-sans-serif: 'Nunito', sans-serif; -$font-size-base: 0.9rem; -$line-height-base: 1.6; diff --git a/Chapter28/onlineStore/resources/sass/app.scss b/Chapter28/onlineStore/resources/sass/app.scss deleted file mode 100644 index 3193ffa..0000000 --- a/Chapter28/onlineStore/resources/sass/app.scss +++ /dev/null @@ -1,8 +0,0 @@ -// Fonts -@import url('https://fonts.googleapis.com/css?family=Nunito'); - -// Variables -@import 'variables'; - -// Bootstrap -@import '~bootstrap/scss/bootstrap'; diff --git a/Chapter28/onlineStore/resources/views/admin/home/index.blade.php b/Chapter28/onlineStore/resources/views/admin/home/index.blade.php deleted file mode 100644 index a2b4868..0000000 --- a/Chapter28/onlineStore/resources/views/admin/home/index.blade.php +++ /dev/null @@ -1,12 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
-
- Admin Panel - Home Page -
-
- Welcome to the Admin Panel, use the sidebar to navigate between the different options. -
-
-@endsection diff --git a/Chapter28/onlineStore/resources/views/admin/product/edit.blade.php b/Chapter28/onlineStore/resources/views/admin/product/edit.blade.php deleted file mode 100644 index b8e03d8..0000000 --- a/Chapter28/onlineStore/resources/views/admin/product/edit.blade.php +++ /dev/null @@ -1,61 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
-
- Edit Product -
-
- @if($errors->any()) -
    - @foreach($errors->all() as $error) -
  • - {{ $error }}
  • - @endforeach -
- @endif - -
- @csrf - @method('PUT') -
-
-
- -
- -
-
-
-
-
- -
- -
-
-
-
-
-
-
- -
- -
-
-
-
-   -
-
-
- - -
- -
-
-
-@endsection diff --git a/Chapter28/onlineStore/resources/views/admin/product/index.blade.php b/Chapter28/onlineStore/resources/views/admin/product/index.blade.php deleted file mode 100644 index 19fbe4b..0000000 --- a/Chapter28/onlineStore/resources/views/admin/product/index.blade.php +++ /dev/null @@ -1,98 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
-
- Create Products -
-
- @if($errors->any()) -
    - @foreach($errors->all() as $error) -
  • - {{ $error }}
  • - @endforeach -
- @endif - -
- @csrf -
-
-
- -
- -
-
-
-
-
- -
- -
-
-
-
-
-
-
- -
- -
-
-
-
-   -
-
-
- - -
- -
-
-
- -
-
- Manage Products -
-
- - - - - - - - - - - @foreach ($viewData["products"] as $product) - - - - - - - @endforeach - -
IDNameEditDelete
{{ $product->getId() }}{{ $product->getName() }} - - - - -
- @csrf - @method('DELETE') - -
-
-
-
-@endsection diff --git a/Chapter28/onlineStore/resources/views/auth/login.blade.php b/Chapter28/onlineStore/resources/views/auth/login.blade.php deleted file mode 100644 index c7e5ea0..0000000 --- a/Chapter28/onlineStore/resources/views/auth/login.blade.php +++ /dev/null @@ -1,73 +0,0 @@ -@extends('layouts.app') - -@section('content') -
-@endsection diff --git a/Chapter28/onlineStore/resources/views/auth/passwords/confirm.blade.php b/Chapter28/onlineStore/resources/views/auth/passwords/confirm.blade.php deleted file mode 100644 index f8c8e61..0000000 --- a/Chapter28/onlineStore/resources/views/auth/passwords/confirm.blade.php +++ /dev/null @@ -1,49 +0,0 @@ -@extends('layouts.app') - -@section('content') - -@endsection diff --git a/Chapter28/onlineStore/resources/views/auth/passwords/email.blade.php b/Chapter28/onlineStore/resources/views/auth/passwords/email.blade.php deleted file mode 100644 index d1ac783..0000000 --- a/Chapter28/onlineStore/resources/views/auth/passwords/email.blade.php +++ /dev/null @@ -1,47 +0,0 @@ -@extends('layouts.app') - -@section('content') -
-
-
-
-
{{ __('Reset Password') }}
- -
- @if (session('status')) - - @endif - -
- @csrf - -
- - -
- - - @error('email') - - {{ $message }} - - @enderror -
-
- -
-
- -
-
-
-
-
-
-
-
-@endsection diff --git a/Chapter28/onlineStore/resources/views/auth/passwords/reset.blade.php b/Chapter28/onlineStore/resources/views/auth/passwords/reset.blade.php deleted file mode 100644 index dccf6c6..0000000 --- a/Chapter28/onlineStore/resources/views/auth/passwords/reset.blade.php +++ /dev/null @@ -1,65 +0,0 @@ -@extends('layouts.app') - -@section('content') -
-
-
-
-
{{ __('Reset Password') }}
- -
-
- @csrf - - - -
- - -
- - - @error('email') - - {{ $message }} - - @enderror -
-
- -
- - -
- - - @error('password') - - {{ $message }} - - @enderror -
-
- -
- - -
- -
-
- -
-
- -
-
-
-
-
-
-
-
-@endsection diff --git a/Chapter28/onlineStore/resources/views/auth/register.blade.php b/Chapter28/onlineStore/resources/views/auth/register.blade.php deleted file mode 100644 index e001a0b..0000000 --- a/Chapter28/onlineStore/resources/views/auth/register.blade.php +++ /dev/null @@ -1,77 +0,0 @@ -@extends('layouts.app') - -@section('content') -
-
-
-
-
{{ __('Register') }}
- -
-
- @csrf - -
- - -
- - - @error('name') - - {{ $message }} - - @enderror -
-
- -
- - -
- - - @error('email') - - {{ $message }} - - @enderror -
-
- -
- - -
- - - @error('password') - - {{ $message }} - - @enderror -
-
- -
- - -
- -
-
- -
-
- -
-
-
-
-
-
-
-
-@endsection diff --git a/Chapter28/onlineStore/resources/views/auth/verify.blade.php b/Chapter28/onlineStore/resources/views/auth/verify.blade.php deleted file mode 100644 index 9f8c1bc..0000000 --- a/Chapter28/onlineStore/resources/views/auth/verify.blade.php +++ /dev/null @@ -1,28 +0,0 @@ -@extends('layouts.app') - -@section('content') -
-
-
-
-
{{ __('Verify Your Email Address') }}
- -
- @if (session('resent')) - - @endif - - {{ __('Before proceeding, please check your email for a verification link.') }} - {{ __('If you did not receive the email') }}, -
- @csrf - . -
-
-
-
-
-
-@endsection diff --git a/Chapter28/onlineStore/resources/views/cart/index.blade.php b/Chapter28/onlineStore/resources/views/cart/index.blade.php deleted file mode 100644 index d9e2cd5..0000000 --- a/Chapter28/onlineStore/resources/views/cart/index.blade.php +++ /dev/null @@ -1,45 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
-@endsection diff --git a/Chapter28/onlineStore/resources/views/cart/purchase.blade.php b/Chapter28/onlineStore/resources/views/cart/purchase.blade.php deleted file mode 100644 index 83b04d3..0000000 --- a/Chapter28/onlineStore/resources/views/cart/purchase.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
-
- Purchase Completed -
-
- -
-
-@endsection diff --git a/Chapter28/onlineStore/resources/views/home.blade.php b/Chapter28/onlineStore/resources/views/home.blade.php deleted file mode 100644 index 1f34466..0000000 --- a/Chapter28/onlineStore/resources/views/home.blade.php +++ /dev/null @@ -1,23 +0,0 @@ -@extends('layouts.app') - -@section('content') -
-
-
-
-
{{ __('Dashboard') }}
- -
- @if (session('status')) - - @endif - - {{ __('You are logged in!') }} -
-
-
-
-
-@endsection diff --git a/Chapter28/onlineStore/resources/views/home/about.blade.php b/Chapter28/onlineStore/resources/views/home/about.blade.php deleted file mode 100644 index f79abf3..0000000 --- a/Chapter28/onlineStore/resources/views/home/about.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
-
-
-

{{ $viewData["description"] }}

-
-
-

{{ $viewData["author"] }}

-
-
-
-@endsection diff --git a/Chapter28/onlineStore/resources/views/home/index.blade.php b/Chapter28/onlineStore/resources/views/home/index.blade.php deleted file mode 100644 index 1affb20..0000000 --- a/Chapter28/onlineStore/resources/views/home/index.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('content') -
-
- -
-
- -
-
- -
-
-@endsection diff --git a/Chapter28/onlineStore/resources/views/layouts/admin.blade.php b/Chapter28/onlineStore/resources/views/layouts/admin.blade.php deleted file mode 100644 index 4aff3f8..0000000 --- a/Chapter28/onlineStore/resources/views/layouts/admin.blade.php +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - @yield('title', 'Admin - Online Store') - - - -
- - - -
- - -
- @yield('content') -
-
-
- - - - - - - - - diff --git a/Chapter28/onlineStore/resources/views/layouts/app.blade.php b/Chapter28/onlineStore/resources/views/layouts/app.blade.php deleted file mode 100644 index f4e1381..0000000 --- a/Chapter28/onlineStore/resources/views/layouts/app.blade.php +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - - - @yield('title', 'Online Store') - - - - - -
-
-

@yield('subtitle', 'A Laravel Online Store')

-
-
- - -
- @yield('content') -
- - - - - - - diff --git a/Chapter28/onlineStore/resources/views/myaccount/orders.blade.php b/Chapter28/onlineStore/resources/views/myaccount/orders.blade.php deleted file mode 100644 index b94b4c2..0000000 --- a/Chapter28/onlineStore/resources/views/myaccount/orders.blade.php +++ /dev/null @@ -1,44 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -@forelse ($viewData["orders"] as $order) -
-
- Order #{{ $order->getId() }} -
-
- Date: {{ $order->getCreatedAt() }}
- Total: ${{ $order->getTotal() }}
- - - - - - - - - - - @foreach ($order->getItems() as $item) - - - - - - - @endforeach - -
Item IDProduct NamePriceQuantity
{{ $item->getId() }} - - {{ $item->getProduct()->getName() }} - - ${{ $item->getPrice() }}{{ $item->getQuantity() }}
-
-
-@empty - -@endforelse -@endsection diff --git a/Chapter28/onlineStore/resources/views/product/index.blade.php b/Chapter28/onlineStore/resources/views/product/index.blade.php deleted file mode 100644 index 64c3e18..0000000 --- a/Chapter28/onlineStore/resources/views/product/index.blade.php +++ /dev/null @@ -1,18 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
- @foreach ($viewData["products"] as $product) - - @endforeach -
-@endsection diff --git a/Chapter28/onlineStore/resources/views/product/show.blade.php b/Chapter28/onlineStore/resources/views/product/show.blade.php deleted file mode 100644 index 801ea09..0000000 --- a/Chapter28/onlineStore/resources/views/product/show.blade.php +++ /dev/null @@ -1,36 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
-
-
- getImage()) }}" class="img-fluid rounded-start"> -
-
-
-
- {{ $viewData["product"]->getName() }} (${{ $viewData["product"]->getPrice() }}) -
-

{{ $viewData["product"]->getDescription() }}

-

-

-
- @csrf -
-
-
Quantity
- -
-
-
- -
-
-
-

-
-
-
-
-@endsection diff --git a/Chapter28/onlineStore/resources/views/welcome.blade.php b/Chapter28/onlineStore/resources/views/welcome.blade.php deleted file mode 100644 index c587c72..0000000 --- a/Chapter28/onlineStore/resources/views/welcome.blade.php +++ /dev/null @@ -1,7 +0,0 @@ -@extends('layouts.app') -@section('title', 'Home Page - Online Store') -@section('content') -
- Welcome to the application -
-@endsection \ No newline at end of file diff --git a/Chapter28/onlineStore/routes/api.php b/Chapter28/onlineStore/routes/api.php deleted file mode 100644 index eb6fa48..0000000 --- a/Chapter28/onlineStore/routes/api.php +++ /dev/null @@ -1,19 +0,0 @@ -get('/user', function (Request $request) { - return $request->user(); -}); diff --git a/Chapter28/onlineStore/routes/channels.php b/Chapter28/onlineStore/routes/channels.php deleted file mode 100644 index 5d451e1..0000000 --- a/Chapter28/onlineStore/routes/channels.php +++ /dev/null @@ -1,18 +0,0 @@ -id === (int) $id; -}); diff --git a/Chapter28/onlineStore/routes/console.php b/Chapter28/onlineStore/routes/console.php deleted file mode 100644 index e05f4c9..0000000 --- a/Chapter28/onlineStore/routes/console.php +++ /dev/null @@ -1,19 +0,0 @@ -comment(Inspiring::quote()); -})->purpose('Display an inspiring quote'); diff --git a/Chapter28/onlineStore/routes/web.php b/Chapter28/onlineStore/routes/web.php deleted file mode 100644 index 5252f46..0000000 --- a/Chapter28/onlineStore/routes/web.php +++ /dev/null @@ -1,39 +0,0 @@ -name("home.index"); -Route::get('/about', 'App\Http\Controllers\HomeController@about')->name("home.about"); -Route::get('/products', 'App\Http\Controllers\ProductController@index')->name("product.index"); -Route::get('/products/{id}', 'App\Http\Controllers\ProductController@show')->name("product.show"); - -Route::get('/cart', 'App\Http\Controllers\CartController@index')->name("cart.index"); -Route::get('/cart/delete', 'App\Http\Controllers\CartController@delete')->name("cart.delete"); -Route::post('/cart/add/{id}', 'App\Http\Controllers\CartController@add')->name("cart.add"); - -Route::middleware('auth')->group(function () { - Route::get('/cart/purchase', 'App\Http\Controllers\CartController@purchase')->name("cart.purchase"); - Route::get('/my-account/orders', 'App\Http\Controllers\MyAccountController@orders')->name("myaccount.orders"); -}); - -Route::middleware('admin')->group(function () { - Route::get('/admin', 'App\Http\Controllers\Admin\AdminHomeController@index')->name("admin.home.index"); - Route::get('/admin/products', 'App\Http\Controllers\Admin\AdminProductController@index')->name("admin.product.index"); - Route::post('/admin/products/store', 'App\Http\Controllers\Admin\AdminProductController@store')->name("admin.product.store"); - Route::delete('/admin/products/{id}/delete', 'App\Http\Controllers\Admin\AdminProductController@delete')->name("admin.product.delete"); - Route::get('/admin/products/{id}/edit', 'App\Http\Controllers\Admin\AdminProductController@edit')->name("admin.product.edit"); - Route::put('/admin/products/{id}/update', 'App\Http\Controllers\Admin\AdminProductController@update')->name("admin.product.update"); -}); - -Auth::routes(); diff --git a/Chapter28/onlineStore/storage/app/.gitignore b/Chapter28/onlineStore/storage/app/.gitignore deleted file mode 100644 index 8f4803c..0000000 --- a/Chapter28/onlineStore/storage/app/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!public/ -!.gitignore diff --git a/Chapter28/onlineStore/storage/app/public/.gitignore b/Chapter28/onlineStore/storage/app/public/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter28/onlineStore/storage/app/public/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter28/onlineStore/storage/framework/.gitignore b/Chapter28/onlineStore/storage/framework/.gitignore deleted file mode 100644 index 05c4471..0000000 --- a/Chapter28/onlineStore/storage/framework/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -compiled.php -config.php -down -events.scanned.php -maintenance.php -routes.php -routes.scanned.php -schedule-* -services.json diff --git a/Chapter28/onlineStore/storage/framework/cache/.gitignore b/Chapter28/onlineStore/storage/framework/cache/.gitignore deleted file mode 100644 index 01e4a6c..0000000 --- a/Chapter28/onlineStore/storage/framework/cache/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!data/ -!.gitignore diff --git a/Chapter28/onlineStore/storage/framework/cache/data/.gitignore b/Chapter28/onlineStore/storage/framework/cache/data/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter28/onlineStore/storage/framework/cache/data/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter28/onlineStore/storage/framework/sessions/.gitignore b/Chapter28/onlineStore/storage/framework/sessions/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter28/onlineStore/storage/framework/sessions/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter28/onlineStore/storage/framework/testing/.gitignore b/Chapter28/onlineStore/storage/framework/testing/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter28/onlineStore/storage/framework/testing/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter28/onlineStore/storage/framework/views/.gitignore b/Chapter28/onlineStore/storage/framework/views/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter28/onlineStore/storage/framework/views/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter28/onlineStore/storage/logs/.gitignore b/Chapter28/onlineStore/storage/logs/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter28/onlineStore/storage/logs/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter28/onlineStore/tests/CreatesApplication.php b/Chapter28/onlineStore/tests/CreatesApplication.php deleted file mode 100644 index 547152f..0000000 --- a/Chapter28/onlineStore/tests/CreatesApplication.php +++ /dev/null @@ -1,22 +0,0 @@ -make(Kernel::class)->bootstrap(); - - return $app; - } -} diff --git a/Chapter28/onlineStore/tests/Feature/ExampleTest.php b/Chapter28/onlineStore/tests/Feature/ExampleTest.php deleted file mode 100644 index 78ccc21..0000000 --- a/Chapter28/onlineStore/tests/Feature/ExampleTest.php +++ /dev/null @@ -1,21 +0,0 @@ -get('/'); - - $response->assertStatus(200); - } -} diff --git a/Chapter28/onlineStore/tests/TestCase.php b/Chapter28/onlineStore/tests/TestCase.php deleted file mode 100644 index 2932d4a..0000000 --- a/Chapter28/onlineStore/tests/TestCase.php +++ /dev/null @@ -1,10 +0,0 @@ -assertTrue(true); - } -} diff --git a/Chapter28/onlineStore/webpack.mix.js b/Chapter28/onlineStore/webpack.mix.js deleted file mode 100644 index 1a2a958..0000000 --- a/Chapter28/onlineStore/webpack.mix.js +++ /dev/null @@ -1,16 +0,0 @@ -const mix = require('laravel-mix'); - -/* - |-------------------------------------------------------------------------- - | Mix Asset Management - |-------------------------------------------------------------------------- - | - | Mix provides a clean, fluent API for defining some Webpack build steps - | for your Laravel application. By default, we are compiling the Sass - | file for the application as well as bundling up all the JS files. - | - */ - -mix.js('resources/js/app.js', 'public/js') - .sass('resources/sass/app.scss', 'public/css') - .sourceMaps(); diff --git a/app/Http/Controllers/ProductController.php b/app/Http/Controllers/ProductController.php index 3fd214e..cbddd15 100644 --- a/app/Http/Controllers/ProductController.php +++ b/app/Http/Controllers/ProductController.php @@ -14,23 +14,12 @@ public function index(Request $request) $viewData = []; $viewData["title"] = "Products - Online Store"; $viewData["subtitle"] = "List of products"; - - // Initialisation de la requête pour récupérer les produits $query = Product::query(); - - // Vérifier si un ID de catégorie est présent dans la requête if ($request->has('category_id') && $request->category_id != '') { - // Filtrer les produits par la catégorie sélectionnée $query->where('categorie_id', $request->category_id); } - - // Exécuter la requête pour obtenir les produits filtrés $viewData["products"] = $query->get(); - - // Récupérer toutes les catégories $viewData["categories"] = Categorie::all(); - - // Retourner la vue avec les produits filtrés et les catégories return view('product.index')->with("viewData", $viewData); } diff --git a/app/Models/Fournisseur.php b/app/Models/Fournisseur.php new file mode 100644 index 0000000..f22a978 --- /dev/null +++ b/app/Models/Fournisseur.php @@ -0,0 +1,10 @@ +id(); + $table->string("raison"); + $table->string("social"); + $table->string("adresse"); + $table->string("tele"); + $table->string("email")->unique(); + $table->string("description")->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('fournisseurs'); + } +}; From 668998ef1422a43d7b9068400ac8da9f35f7ac90 Mon Sep 17 00:00:00 2001 From: boulganafatimaezzahra Date: Thu, 20 Mar 2025 11:40:22 +0000 Subject: [PATCH 11/41] ajouter de cle etranger fournisseur --- app/Models/Fournisseur.php | 5 +++- app/Models/Product.php | 10 +++++-- ...olumn_id_fournisseur_to_products_table.php | 29 +++++++++++++++++++ 3 files changed, 41 insertions(+), 3 deletions(-) create mode 100644 database/migrations/2025_03_20_113137_add_column_id_fournisseur_to_products_table.php diff --git a/app/Models/Fournisseur.php b/app/Models/Fournisseur.php index f22a978..83ee5c3 100644 --- a/app/Models/Fournisseur.php +++ b/app/Models/Fournisseur.php @@ -6,5 +6,8 @@ class Fournisseur extends Model { - // + protected $fillable=["raison","social","adresse","tele","email","description"]; + public function products(){ + return $this->hasMany(Product::class); + } } diff --git a/app/Models/Product.php b/app/Models/Product.php index 4058873..b1bc3e1 100644 --- a/app/Models/Product.php +++ b/app/Models/Product.php @@ -20,7 +20,7 @@ class Product extends Model * $this->items - Item[] - contains the associated items */ use HasFactory; - protected $fillable = ['name', 'description', 'image', 'price', 'categorie_id', 'quantity_store']; + protected $fillable = ['name', 'description', 'image', 'price', 'categorie_id', 'quantity_store',"fournisseur_id"]; public static function validate($request) { @@ -30,7 +30,8 @@ public static function validate($request) "price" => "required|numeric|gt:0", 'image' => 'image', "quantity_store"=>"required|numeric|gt:0", - "categorie_id"=>"reduired|exists:categories,id" + "categorie_id"=>"reduired|exists:categories,id", + "fournisseur_id"=>"required|exists:fournisseurs,id" ]); } @@ -150,4 +151,9 @@ public function setQuantityStore($quantity_store) { $this->attributes['quantity_store'] = $quantity_store; } + + public function fournisseurs() + { + return $this->belongsTo(Fournisseur::class, 'fournisseur_id'); + } } diff --git a/database/migrations/2025_03_20_113137_add_column_id_fournisseur_to_products_table.php b/database/migrations/2025_03_20_113137_add_column_id_fournisseur_to_products_table.php new file mode 100644 index 0000000..85ebe2f --- /dev/null +++ b/database/migrations/2025_03_20_113137_add_column_id_fournisseur_to_products_table.php @@ -0,0 +1,29 @@ +foreignId("fournisseur_id")->constrained()->cascadeOnDelete(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('products', function (Blueprint $table) { + $table->dropForeign(['fournisseur_id']); + $table->dropColumn("fournisseur_id"); + }); + } +}; From eb47f3bf3a5817ac185ead970ce1853a534f6f43 Mon Sep 17 00:00:00 2001 From: boulganafatimaezzahra Date: Thu, 20 Mar 2025 11:48:58 +0000 Subject: [PATCH 12/41] aded fournisseur et cle etranger to db --- app/Models/Fournisseur.php | 1 + app/Models/Product.php | 2 +- ..._20_113137_add_column_id_fournisseur_to_products_table.php | 4 +++- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/app/Models/Fournisseur.php b/app/Models/Fournisseur.php index 83ee5c3..174dd49 100644 --- a/app/Models/Fournisseur.php +++ b/app/Models/Fournisseur.php @@ -6,6 +6,7 @@ class Fournisseur extends Model { + protected $table = 'fournisseurs'; protected $fillable=["raison","social","adresse","tele","email","description"]; public function products(){ return $this->hasMany(Product::class); diff --git a/app/Models/Product.php b/app/Models/Product.php index b1bc3e1..3795efb 100644 --- a/app/Models/Product.php +++ b/app/Models/Product.php @@ -152,7 +152,7 @@ public function setQuantityStore($quantity_store) $this->attributes['quantity_store'] = $quantity_store; } - public function fournisseurs() + public function fournisseur() { return $this->belongsTo(Fournisseur::class, 'fournisseur_id'); } diff --git a/database/migrations/2025_03_20_113137_add_column_id_fournisseur_to_products_table.php b/database/migrations/2025_03_20_113137_add_column_id_fournisseur_to_products_table.php index 85ebe2f..234e593 100644 --- a/database/migrations/2025_03_20_113137_add_column_id_fournisseur_to_products_table.php +++ b/database/migrations/2025_03_20_113137_add_column_id_fournisseur_to_products_table.php @@ -12,7 +12,9 @@ public function up(): void { Schema::table('products', function (Blueprint $table) { - $table->foreignId("fournisseur_id")->constrained()->cascadeOnDelete(); + if (!Schema::hasColumn('products', 'fournisseur_id')) { + $table->foreignId('fournisseur_id')->constrained()->cascadeOnDelete(); + } }); } From 0f7b8685649bca8fff51b005fce23bc91c0856ea Mon Sep 17 00:00:00 2001 From: boulganafatimaezzahra Date: Thu, 20 Mar 2025 11:54:55 +0000 Subject: [PATCH 13/41] ajout de controller fournissuer --- .../Controllers/FournisseurController.php | 64 +++++++++++++++++++ routes/web.php | 3 +- 2 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 app/Http/Controllers/FournisseurController.php diff --git a/app/Http/Controllers/FournisseurController.php b/app/Http/Controllers/FournisseurController.php new file mode 100644 index 0000000..353336a --- /dev/null +++ b/app/Http/Controllers/FournisseurController.php @@ -0,0 +1,64 @@ +validate([ + 'raison' => 'required|string|max:255', + 'social' => 'required|string|max:255', + 'adresse' => 'required|string|max:255', + 'tele' => 'required|string|max:255', + 'email' => 'required|email|max:255|unique:fournisseurs', + 'description' => 'nullable|string|max:500', + ]); + + Fournisseur::create($request->all()); + + return redirect()->route('fournisseurs.index'); + } + + public function edit(Fournisseur $fournisseur) + { + return view('fournisseurs.edit', compact('fournisseur')); + } + + public function update(Request $request, Fournisseur $fournisseur) + { + $request->validate([ + 'raison' => 'required|string|max:255', + 'social' => 'required|string|max:255', + 'adresse' => 'required|string|max:255', + 'tele' => 'required|string|max:255', + 'email' => 'required|email|max:255|unique:fournisseurs,email,' . $fournisseur->id, + 'description' => 'nullable|string|max:500', + ]); + + $fournisseur->update($request->all()); + + return redirect()->route('fournisseurs.index'); + } + + public function destroy(Fournisseur $fournisseur) + { + $fournisseur->delete(); + return redirect()->route('fournisseurs.index'); + } +} diff --git a/routes/web.php b/routes/web.php index af1cb3d..68dbdfe 100644 --- a/routes/web.php +++ b/routes/web.php @@ -2,6 +2,7 @@ use Illuminate\Support\Facades\Route; use App\Http\Controllers\CategorieController; +use App\Http\Controllers\FournisseurController; /* |-------------------------------------------------------------------------- @@ -40,4 +41,4 @@ Auth::routes(); Route::resource('category', CategorieController::class); - +Route::resource('fournisseurs', FournisseurController::class); From 5c7c76df46bc0541af61961e9c602eddd451b0cf Mon Sep 17 00:00:00 2001 From: boulganafatimaezzahra Date: Thu, 20 Mar 2025 12:09:14 +0000 Subject: [PATCH 14/41] ajout de fournisseur controlleur --- .../Admin/AdminProductController.php | 10 +++++-- ...4_add_quantity_store_to_products_table.php | 28 +++++++++++++++++++ 2 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 database/migrations/2025_03_20_120514_add_quantity_store_to_products_table.php diff --git a/app/Http/Controllers/Admin/AdminProductController.php b/app/Http/Controllers/Admin/AdminProductController.php index d1c6c52..2e127f3 100644 --- a/app/Http/Controllers/Admin/AdminProductController.php +++ b/app/Http/Controllers/Admin/AdminProductController.php @@ -4,6 +4,7 @@ use App\Models\Product; use App\Http\Controllers\Controller; +use App\Models\Fournisseur; use Illuminate\Http\Request; use Illuminate\Support\Facades\Storage; @@ -43,6 +44,10 @@ public function store(Request $request) public function delete($id) { + $product=Product::findOrFail($id); + if($product->image && Storage::disk("public")->exists($product->image)){ + Storage::disk("public")->delete($product->image); + } Product::destroy($id); return back(); } @@ -51,6 +56,7 @@ public function edit($id) { $viewData = []; $viewData["title"] = "Admin Page - Edit Product - Online Store"; + $viewData["fournisseurs"]=Fournisseur::all(); $viewData["product"] = Product::findOrFail($id); return view('admin.product.edit')->with("viewData", $viewData); } @@ -63,7 +69,7 @@ public function update(Request $request, $id) $product->setName($request->input('name')); $product->setDescription($request->input('description')); $product->setPrice($request->input('price')); - + $product->fournisseur_id = $request->input('fournisseur_id'); if ($request->hasFile('image')) { $imageName = $product->getId().".".$request->file('image')->extension(); Storage::disk('public')->put( @@ -74,6 +80,6 @@ public function update(Request $request, $id) } $product->save(); - return redirect()->route('admin.product.index'); + return redirect()->route('admin.product.index')->with('success', 'Product updated successfully!'); } } diff --git a/database/migrations/2025_03_20_120514_add_quantity_store_to_products_table.php b/database/migrations/2025_03_20_120514_add_quantity_store_to_products_table.php new file mode 100644 index 0000000..e2ba824 --- /dev/null +++ b/database/migrations/2025_03_20_120514_add_quantity_store_to_products_table.php @@ -0,0 +1,28 @@ +integer('quantity_store')->default(1); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('products', function (Blueprint $table) { + $table->dropColumn('quantity_store'); + }); + } +}; From 18a342adbf09c3eaa41b2e8052df680308bce7c8 Mon Sep 17 00:00:00 2001 From: Imane Date: Thu, 20 Mar 2025 14:08:42 +0000 Subject: [PATCH 15/41] Delelte all unnecessary folders --- BookImages/Book images.pdf | Bin 3154233 -> 0 bytes Chapter03/onlineStore/.editorconfig | 18 - Chapter03/onlineStore/.env.example | 52 - Chapter03/onlineStore/.gitattributes | 10 - Chapter03/onlineStore/.gitignore | 15 - Chapter03/onlineStore/.styleci.yml | 13 - Chapter03/onlineStore/README.md | 64 - Chapter03/onlineStore/app/Console/Kernel.php | 32 - .../onlineStore/app/Exceptions/Handler.php | 41 - .../app/Http/Controllers/Controller.php | 13 - Chapter03/onlineStore/app/Http/Kernel.php | 67 - .../app/Http/Middleware/Authenticate.php | 21 - .../app/Http/Middleware/EncryptCookies.php | 17 - .../PreventRequestsDuringMaintenance.php | 17 - .../Middleware/RedirectIfAuthenticated.php | 32 - .../app/Http/Middleware/TrimStrings.php | 19 - .../app/Http/Middleware/TrustHosts.php | 20 - .../app/Http/Middleware/TrustProxies.php | 28 - .../app/Http/Middleware/VerifyCsrfToken.php | 17 - Chapter03/onlineStore/app/Models/User.php | 44 - .../app/Providers/AppServiceProvider.php | 28 - .../app/Providers/AuthServiceProvider.php | 30 - .../Providers/BroadcastServiceProvider.php | 21 - .../app/Providers/EventServiceProvider.php | 32 - .../app/Providers/RouteServiceProvider.php | 63 - Chapter03/onlineStore/artisan | 53 - Chapter03/onlineStore/bootstrap/app.php | 55 - .../onlineStore/bootstrap/cache/.gitignore | 2 - Chapter03/onlineStore/composer.json | 62 - Chapter03/onlineStore/composer.lock | 7804 ---------------- Chapter03/onlineStore/config/app.php | 197 - Chapter03/onlineStore/config/auth.php | 111 - Chapter03/onlineStore/config/broadcasting.php | 67 - Chapter03/onlineStore/config/cache.php | 110 - Chapter03/onlineStore/config/cors.php | 34 - Chapter03/onlineStore/config/database.php | 147 - Chapter03/onlineStore/config/filesystems.php | 73 - Chapter03/onlineStore/config/hashing.php | 52 - Chapter03/onlineStore/config/logging.php | 119 - Chapter03/onlineStore/config/mail.php | 117 - Chapter03/onlineStore/config/queue.php | 93 - Chapter03/onlineStore/config/sanctum.php | 65 - Chapter03/onlineStore/config/services.php | 33 - Chapter03/onlineStore/config/session.php | 201 - Chapter03/onlineStore/config/view.php | 36 - Chapter03/onlineStore/database/.gitignore | 1 - .../database/factories/UserFactory.php | 42 - .../2014_10_12_000000_create_users_table.php | 36 - ...12_100000_create_password_resets_table.php | 32 - ..._08_19_000000_create_failed_jobs_table.php | 36 - ...01_create_personal_access_tokens_table.php | 36 - .../database/seeders/DatabaseSeeder.php | 19 - Chapter03/onlineStore/lang/en.json | 7 - Chapter03/onlineStore/lang/en/auth.php | 20 - Chapter03/onlineStore/lang/en/pagination.php | 19 - Chapter03/onlineStore/lang/en/passwords.php | 22 - Chapter03/onlineStore/lang/en/validation.php | 163 - Chapter03/onlineStore/package.json | 18 - Chapter03/onlineStore/phpunit.xml | 31 - Chapter03/onlineStore/public/.htaccess | 21 - Chapter03/onlineStore/public/favicon.ico | 0 Chapter03/onlineStore/public/index.php | 55 - Chapter03/onlineStore/public/robots.txt | 2 - Chapter03/onlineStore/resources/css/app.css | 0 Chapter03/onlineStore/resources/js/app.js | 1 - .../onlineStore/resources/js/bootstrap.js | 28 - .../resources/views/welcome.blade.php | 132 - Chapter03/onlineStore/routes/api.php | 19 - Chapter03/onlineStore/routes/channels.php | 18 - Chapter03/onlineStore/routes/console.php | 19 - Chapter03/onlineStore/routes/web.php | 18 - Chapter03/onlineStore/storage/app/.gitignore | 3 - .../onlineStore/storage/app/public/.gitignore | 2 - .../onlineStore/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 - Chapter03/onlineStore/storage/logs/.gitignore | 2 - .../onlineStore/tests/CreatesApplication.php | 22 - .../onlineStore/tests/Feature/ExampleTest.php | 21 - Chapter03/onlineStore/tests/TestCase.php | 10 - .../onlineStore/tests/Unit/ExampleTest.php | 18 - Chapter03/onlineStore/webpack.mix.js | 17 - Chapter05/onlineStore/.editorconfig | 18 - Chapter05/onlineStore/.env.example | 52 - Chapter05/onlineStore/.gitattributes | 10 - Chapter05/onlineStore/.gitignore | 15 - Chapter05/onlineStore/.styleci.yml | 13 - Chapter05/onlineStore/README.md | 64 - Chapter05/onlineStore/app/Console/Kernel.php | 32 - .../onlineStore/app/Exceptions/Handler.php | 41 - .../app/Http/Controllers/Controller.php | 13 - Chapter05/onlineStore/app/Http/Kernel.php | 67 - .../app/Http/Middleware/Authenticate.php | 21 - .../app/Http/Middleware/EncryptCookies.php | 17 - .../PreventRequestsDuringMaintenance.php | 17 - .../Middleware/RedirectIfAuthenticated.php | 32 - .../app/Http/Middleware/TrimStrings.php | 19 - .../app/Http/Middleware/TrustHosts.php | 20 - .../app/Http/Middleware/TrustProxies.php | 28 - .../app/Http/Middleware/VerifyCsrfToken.php | 17 - Chapter05/onlineStore/app/Models/User.php | 44 - .../app/Providers/AppServiceProvider.php | 28 - .../app/Providers/AuthServiceProvider.php | 30 - .../Providers/BroadcastServiceProvider.php | 21 - .../app/Providers/EventServiceProvider.php | 32 - .../app/Providers/RouteServiceProvider.php | 63 - Chapter05/onlineStore/artisan | 53 - Chapter05/onlineStore/bootstrap/app.php | 55 - .../onlineStore/bootstrap/cache/.gitignore | 2 - Chapter05/onlineStore/composer.json | 62 - Chapter05/onlineStore/composer.lock | 7804 ---------------- Chapter05/onlineStore/config/app.php | 197 - Chapter05/onlineStore/config/auth.php | 111 - Chapter05/onlineStore/config/broadcasting.php | 67 - Chapter05/onlineStore/config/cache.php | 110 - Chapter05/onlineStore/config/cors.php | 34 - Chapter05/onlineStore/config/database.php | 147 - Chapter05/onlineStore/config/filesystems.php | 73 - Chapter05/onlineStore/config/hashing.php | 52 - Chapter05/onlineStore/config/logging.php | 119 - Chapter05/onlineStore/config/mail.php | 117 - Chapter05/onlineStore/config/queue.php | 93 - Chapter05/onlineStore/config/sanctum.php | 65 - Chapter05/onlineStore/config/services.php | 33 - Chapter05/onlineStore/config/session.php | 201 - Chapter05/onlineStore/config/view.php | 36 - Chapter05/onlineStore/database/.gitignore | 1 - .../database/factories/UserFactory.php | 42 - .../2014_10_12_000000_create_users_table.php | 36 - ...12_100000_create_password_resets_table.php | 32 - ..._08_19_000000_create_failed_jobs_table.php | 36 - ...01_create_personal_access_tokens_table.php | 36 - .../database/seeders/DatabaseSeeder.php | 19 - Chapter05/onlineStore/lang/en.json | 7 - Chapter05/onlineStore/lang/en/auth.php | 20 - Chapter05/onlineStore/lang/en/pagination.php | 19 - Chapter05/onlineStore/lang/en/passwords.php | 22 - Chapter05/onlineStore/lang/en/validation.php | 163 - Chapter05/onlineStore/package.json | 18 - Chapter05/onlineStore/phpunit.xml | 31 - Chapter05/onlineStore/public/.htaccess | 21 - Chapter05/onlineStore/public/css/app.css | 20 - Chapter05/onlineStore/public/favicon.ico | 0 Chapter05/onlineStore/public/index.php | 55 - Chapter05/onlineStore/public/robots.txt | 2 - Chapter05/onlineStore/resources/css/app.css | 0 Chapter05/onlineStore/resources/js/app.js | 1 - .../onlineStore/resources/js/bootstrap.js | 28 - .../resources/views/layouts/app.blade.php | 54 - .../resources/views/welcome.blade.php | 7 - Chapter05/onlineStore/routes/api.php | 19 - Chapter05/onlineStore/routes/channels.php | 18 - Chapter05/onlineStore/routes/console.php | 19 - Chapter05/onlineStore/routes/web.php | 18 - Chapter05/onlineStore/storage/app/.gitignore | 3 - .../onlineStore/storage/app/public/.gitignore | 2 - .../onlineStore/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 - Chapter05/onlineStore/storage/logs/.gitignore | 2 - .../onlineStore/tests/CreatesApplication.php | 22 - .../onlineStore/tests/Feature/ExampleTest.php | 21 - Chapter05/onlineStore/tests/TestCase.php | 10 - .../onlineStore/tests/Unit/ExampleTest.php | 18 - Chapter05/onlineStore/webpack.mix.js | 17 - Chapter06/onlineStore/.editorconfig | 18 - Chapter06/onlineStore/.env.example | 52 - Chapter06/onlineStore/.gitattributes | 10 - Chapter06/onlineStore/.gitignore | 15 - Chapter06/onlineStore/.styleci.yml | 13 - Chapter06/onlineStore/README.md | 64 - Chapter06/onlineStore/app/Console/Kernel.php | 32 - .../onlineStore/app/Exceptions/Handler.php | 41 - .../app/Http/Controllers/Controller.php | 13 - .../app/Http/Controllers/HomeController.php | 27 - Chapter06/onlineStore/app/Http/Kernel.php | 67 - .../app/Http/Middleware/Authenticate.php | 21 - .../app/Http/Middleware/EncryptCookies.php | 17 - .../PreventRequestsDuringMaintenance.php | 17 - .../Middleware/RedirectIfAuthenticated.php | 32 - .../app/Http/Middleware/TrimStrings.php | 19 - .../app/Http/Middleware/TrustHosts.php | 20 - .../app/Http/Middleware/TrustProxies.php | 28 - .../app/Http/Middleware/VerifyCsrfToken.php | 17 - Chapter06/onlineStore/app/Models/User.php | 44 - .../app/Providers/AppServiceProvider.php | 28 - .../app/Providers/AuthServiceProvider.php | 30 - .../Providers/BroadcastServiceProvider.php | 21 - .../app/Providers/EventServiceProvider.php | 32 - .../app/Providers/RouteServiceProvider.php | 63 - Chapter06/onlineStore/artisan | 53 - Chapter06/onlineStore/bootstrap/app.php | 55 - .../onlineStore/bootstrap/cache/.gitignore | 2 - Chapter06/onlineStore/composer.json | 62 - Chapter06/onlineStore/composer.lock | 7804 ---------------- Chapter06/onlineStore/config/app.php | 197 - Chapter06/onlineStore/config/auth.php | 111 - Chapter06/onlineStore/config/broadcasting.php | 67 - Chapter06/onlineStore/config/cache.php | 110 - Chapter06/onlineStore/config/cors.php | 34 - Chapter06/onlineStore/config/database.php | 147 - Chapter06/onlineStore/config/filesystems.php | 73 - Chapter06/onlineStore/config/hashing.php | 52 - Chapter06/onlineStore/config/logging.php | 119 - Chapter06/onlineStore/config/mail.php | 117 - Chapter06/onlineStore/config/queue.php | 93 - Chapter06/onlineStore/config/sanctum.php | 65 - Chapter06/onlineStore/config/services.php | 33 - Chapter06/onlineStore/config/session.php | 201 - Chapter06/onlineStore/config/view.php | 36 - Chapter06/onlineStore/database/.gitignore | 1 - .../database/factories/UserFactory.php | 42 - .../2014_10_12_000000_create_users_table.php | 36 - ...12_100000_create_password_resets_table.php | 32 - ..._08_19_000000_create_failed_jobs_table.php | 36 - ...01_create_personal_access_tokens_table.php | 36 - .../database/seeders/DatabaseSeeder.php | 19 - Chapter06/onlineStore/lang/en.json | 7 - Chapter06/onlineStore/lang/en/auth.php | 20 - Chapter06/onlineStore/lang/en/pagination.php | 19 - Chapter06/onlineStore/lang/en/passwords.php | 22 - Chapter06/onlineStore/lang/en/validation.php | 163 - Chapter06/onlineStore/package.json | 18 - Chapter06/onlineStore/phpunit.xml | 31 - Chapter06/onlineStore/public/.htaccess | 21 - Chapter06/onlineStore/public/css/app.css | 20 - Chapter06/onlineStore/public/favicon.ico | 0 Chapter06/onlineStore/public/img/game.png | Bin 25896 -> 0 bytes Chapter06/onlineStore/public/img/safe.png | Bin 19240 -> 0 bytes .../onlineStore/public/img/submarine.png | Bin 24330 -> 0 bytes Chapter06/onlineStore/public/index.php | 55 - Chapter06/onlineStore/public/robots.txt | 2 - Chapter06/onlineStore/resources/css/app.css | 0 Chapter06/onlineStore/resources/js/app.js | 1 - .../onlineStore/resources/js/bootstrap.js | 28 - .../resources/views/home/about.blade.php | 15 - .../resources/views/home/index.blade.php | 15 - .../resources/views/layouts/app.blade.php | 54 - .../resources/views/welcome.blade.php | 7 - Chapter06/onlineStore/routes/api.php | 19 - Chapter06/onlineStore/routes/channels.php | 18 - Chapter06/onlineStore/routes/console.php | 19 - Chapter06/onlineStore/routes/web.php | 21 - Chapter06/onlineStore/storage/app/.gitignore | 3 - .../onlineStore/storage/app/public/.gitignore | 2 - .../onlineStore/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 - Chapter06/onlineStore/storage/logs/.gitignore | 2 - .../onlineStore/tests/CreatesApplication.php | 22 - .../onlineStore/tests/Feature/ExampleTest.php | 21 - Chapter06/onlineStore/tests/TestCase.php | 10 - .../onlineStore/tests/Unit/ExampleTest.php | 18 - Chapter06/onlineStore/webpack.mix.js | 17 - Chapter07/onlineStore/.editorconfig | 18 - Chapter07/onlineStore/.env.example | 52 - Chapter07/onlineStore/.gitattributes | 10 - Chapter07/onlineStore/.gitignore | 15 - Chapter07/onlineStore/.styleci.yml | 13 - Chapter07/onlineStore/README.md | 64 - Chapter07/onlineStore/app/Console/Kernel.php | 32 - .../onlineStore/app/Exceptions/Handler.php | 41 - .../app/Http/Controllers/Controller.php | 13 - .../app/Http/Controllers/HomeController.php | 25 - Chapter07/onlineStore/app/Http/Kernel.php | 67 - .../app/Http/Middleware/Authenticate.php | 21 - .../app/Http/Middleware/EncryptCookies.php | 17 - .../PreventRequestsDuringMaintenance.php | 17 - .../Middleware/RedirectIfAuthenticated.php | 32 - .../app/Http/Middleware/TrimStrings.php | 19 - .../app/Http/Middleware/TrustHosts.php | 20 - .../app/Http/Middleware/TrustProxies.php | 28 - .../app/Http/Middleware/VerifyCsrfToken.php | 17 - Chapter07/onlineStore/app/Models/User.php | 44 - .../app/Providers/AppServiceProvider.php | 28 - .../app/Providers/AuthServiceProvider.php | 30 - .../Providers/BroadcastServiceProvider.php | 21 - .../app/Providers/EventServiceProvider.php | 32 - .../app/Providers/RouteServiceProvider.php | 63 - Chapter07/onlineStore/artisan | 53 - Chapter07/onlineStore/bootstrap/app.php | 55 - .../onlineStore/bootstrap/cache/.gitignore | 2 - Chapter07/onlineStore/composer.json | 62 - Chapter07/onlineStore/composer.lock | 7804 ---------------- Chapter07/onlineStore/config/app.php | 197 - Chapter07/onlineStore/config/auth.php | 111 - Chapter07/onlineStore/config/broadcasting.php | 67 - Chapter07/onlineStore/config/cache.php | 110 - Chapter07/onlineStore/config/cors.php | 34 - Chapter07/onlineStore/config/database.php | 147 - Chapter07/onlineStore/config/filesystems.php | 73 - Chapter07/onlineStore/config/hashing.php | 52 - Chapter07/onlineStore/config/logging.php | 119 - Chapter07/onlineStore/config/mail.php | 117 - Chapter07/onlineStore/config/queue.php | 93 - Chapter07/onlineStore/config/sanctum.php | 65 - Chapter07/onlineStore/config/services.php | 33 - Chapter07/onlineStore/config/session.php | 201 - Chapter07/onlineStore/config/view.php | 36 - Chapter07/onlineStore/database/.gitignore | 1 - .../database/factories/UserFactory.php | 42 - .../2014_10_12_000000_create_users_table.php | 36 - ...12_100000_create_password_resets_table.php | 32 - ..._08_19_000000_create_failed_jobs_table.php | 36 - ...01_create_personal_access_tokens_table.php | 36 - .../database/seeders/DatabaseSeeder.php | 19 - Chapter07/onlineStore/lang/en.json | 7 - Chapter07/onlineStore/lang/en/auth.php | 20 - Chapter07/onlineStore/lang/en/pagination.php | 19 - Chapter07/onlineStore/lang/en/passwords.php | 22 - Chapter07/onlineStore/lang/en/validation.php | 163 - Chapter07/onlineStore/package.json | 18 - Chapter07/onlineStore/phpunit.xml | 31 - Chapter07/onlineStore/public/.htaccess | 21 - Chapter07/onlineStore/public/css/app.css | 20 - Chapter07/onlineStore/public/favicon.ico | 0 Chapter07/onlineStore/public/img/game.png | Bin 25896 -> 0 bytes Chapter07/onlineStore/public/img/safe.png | Bin 19240 -> 0 bytes .../onlineStore/public/img/submarine.png | Bin 24330 -> 0 bytes Chapter07/onlineStore/public/index.php | 55 - Chapter07/onlineStore/public/robots.txt | 2 - Chapter07/onlineStore/resources/css/app.css | 0 Chapter07/onlineStore/resources/js/app.js | 1 - .../onlineStore/resources/js/bootstrap.js | 28 - .../resources/views/home/about.blade.php | 15 - .../resources/views/home/index.blade.php | 15 - .../resources/views/layouts/app.blade.php | 54 - .../resources/views/welcome.blade.php | 7 - Chapter07/onlineStore/routes/api.php | 19 - Chapter07/onlineStore/routes/channels.php | 18 - Chapter07/onlineStore/routes/console.php | 19 - Chapter07/onlineStore/routes/web.php | 17 - Chapter07/onlineStore/storage/app/.gitignore | 3 - .../onlineStore/storage/app/public/.gitignore | 2 - .../onlineStore/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 - Chapter07/onlineStore/storage/logs/.gitignore | 2 - .../onlineStore/tests/CreatesApplication.php | 22 - .../onlineStore/tests/Feature/ExampleTest.php | 21 - Chapter07/onlineStore/tests/TestCase.php | 10 - .../onlineStore/tests/Unit/ExampleTest.php | 18 - Chapter07/onlineStore/webpack.mix.js | 17 - Chapter08/onlineStore/.editorconfig | 18 - Chapter08/onlineStore/.env.example | 52 - Chapter08/onlineStore/.gitattributes | 10 - Chapter08/onlineStore/.gitignore | 15 - Chapter08/onlineStore/.styleci.yml | 13 - Chapter08/onlineStore/README.md | 64 - Chapter08/onlineStore/app/Console/Kernel.php | 32 - .../onlineStore/app/Exceptions/Handler.php | 41 - .../app/Http/Controllers/Controller.php | 13 - .../app/Http/Controllers/HomeController.php | 25 - Chapter08/onlineStore/app/Http/Kernel.php | 67 - .../app/Http/Middleware/Authenticate.php | 21 - .../app/Http/Middleware/EncryptCookies.php | 17 - .../PreventRequestsDuringMaintenance.php | 17 - .../Middleware/RedirectIfAuthenticated.php | 32 - .../app/Http/Middleware/TrimStrings.php | 19 - .../app/Http/Middleware/TrustHosts.php | 20 - .../app/Http/Middleware/TrustProxies.php | 28 - .../app/Http/Middleware/VerifyCsrfToken.php | 17 - Chapter08/onlineStore/app/Models/User.php | 44 - .../app/Providers/AppServiceProvider.php | 28 - .../app/Providers/AuthServiceProvider.php | 30 - .../Providers/BroadcastServiceProvider.php | 21 - .../app/Providers/EventServiceProvider.php | 32 - .../app/Providers/RouteServiceProvider.php | 63 - Chapter08/onlineStore/artisan | 53 - Chapter08/onlineStore/bootstrap/app.php | 55 - .../onlineStore/bootstrap/cache/.gitignore | 2 - Chapter08/onlineStore/composer.json | 63 - Chapter08/onlineStore/composer.lock | 7860 ---------------- Chapter08/onlineStore/config/app.php | 197 - Chapter08/onlineStore/config/auth.php | 111 - Chapter08/onlineStore/config/broadcasting.php | 67 - Chapter08/onlineStore/config/cache.php | 110 - Chapter08/onlineStore/config/cors.php | 34 - Chapter08/onlineStore/config/database.php | 147 - Chapter08/onlineStore/config/filesystems.php | 73 - Chapter08/onlineStore/config/hashing.php | 52 - Chapter08/onlineStore/config/logging.php | 119 - Chapter08/onlineStore/config/mail.php | 117 - Chapter08/onlineStore/config/queue.php | 93 - Chapter08/onlineStore/config/sanctum.php | 65 - Chapter08/onlineStore/config/services.php | 33 - Chapter08/onlineStore/config/session.php | 201 - Chapter08/onlineStore/config/view.php | 36 - Chapter08/onlineStore/database/.gitignore | 1 - .../database/factories/UserFactory.php | 42 - .../2014_10_12_000000_create_users_table.php | 36 - ...12_100000_create_password_resets_table.php | 32 - ..._08_19_000000_create_failed_jobs_table.php | 36 - ...01_create_personal_access_tokens_table.php | 36 - .../database/seeders/DatabaseSeeder.php | 19 - Chapter08/onlineStore/lang/en.json | 7 - Chapter08/onlineStore/lang/en/auth.php | 20 - Chapter08/onlineStore/lang/en/pagination.php | 19 - Chapter08/onlineStore/lang/en/passwords.php | 22 - Chapter08/onlineStore/lang/en/validation.php | 163 - Chapter08/onlineStore/package.json | 18 - Chapter08/onlineStore/phpcs.xml | 10 - Chapter08/onlineStore/phpunit.xml | 31 - Chapter08/onlineStore/public/.htaccess | 21 - Chapter08/onlineStore/public/css/app.css | 20 - Chapter08/onlineStore/public/favicon.ico | 0 Chapter08/onlineStore/public/img/game.png | Bin 25896 -> 0 bytes Chapter08/onlineStore/public/img/safe.png | Bin 19240 -> 0 bytes .../onlineStore/public/img/submarine.png | Bin 24330 -> 0 bytes Chapter08/onlineStore/public/index.php | 55 - Chapter08/onlineStore/public/robots.txt | 2 - Chapter08/onlineStore/resources/css/app.css | 0 Chapter08/onlineStore/resources/js/app.js | 1 - .../onlineStore/resources/js/bootstrap.js | 28 - .../resources/views/home/about.blade.php | 15 - .../resources/views/home/index.blade.php | 15 - .../resources/views/layouts/app.blade.php | 54 - .../resources/views/welcome.blade.php | 7 - Chapter08/onlineStore/routes/api.php | 19 - Chapter08/onlineStore/routes/channels.php | 18 - Chapter08/onlineStore/routes/console.php | 19 - Chapter08/onlineStore/routes/web.php | 17 - Chapter08/onlineStore/storage/app/.gitignore | 3 - .../onlineStore/storage/app/public/.gitignore | 2 - .../onlineStore/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 - Chapter08/onlineStore/storage/logs/.gitignore | 2 - .../onlineStore/tests/CreatesApplication.php | 22 - .../onlineStore/tests/Feature/ExampleTest.php | 21 - Chapter08/onlineStore/tests/TestCase.php | 10 - .../onlineStore/tests/Unit/ExampleTest.php | 18 - Chapter08/onlineStore/webpack.mix.js | 17 - Chapter09/onlineStore/.editorconfig | 18 - Chapter09/onlineStore/.env.example | 52 - Chapter09/onlineStore/.gitattributes | 10 - Chapter09/onlineStore/.gitignore | 15 - Chapter09/onlineStore/.styleci.yml | 13 - Chapter09/onlineStore/README.md | 64 - Chapter09/onlineStore/app/Console/Kernel.php | 32 - .../onlineStore/app/Exceptions/Handler.php | 41 - .../app/Http/Controllers/Controller.php | 13 - .../app/Http/Controllers/HomeController.php | 25 - .../Http/Controllers/ProductController.php | 34 - Chapter09/onlineStore/app/Http/Kernel.php | 67 - .../app/Http/Middleware/Authenticate.php | 21 - .../app/Http/Middleware/EncryptCookies.php | 17 - .../PreventRequestsDuringMaintenance.php | 17 - .../Middleware/RedirectIfAuthenticated.php | 32 - .../app/Http/Middleware/TrimStrings.php | 19 - .../app/Http/Middleware/TrustHosts.php | 20 - .../app/Http/Middleware/TrustProxies.php | 28 - .../app/Http/Middleware/VerifyCsrfToken.php | 17 - Chapter09/onlineStore/app/Models/User.php | 44 - .../app/Providers/AppServiceProvider.php | 28 - .../app/Providers/AuthServiceProvider.php | 30 - .../Providers/BroadcastServiceProvider.php | 21 - .../app/Providers/EventServiceProvider.php | 32 - .../app/Providers/RouteServiceProvider.php | 63 - Chapter09/onlineStore/artisan | 53 - Chapter09/onlineStore/bootstrap/app.php | 55 - .../onlineStore/bootstrap/cache/.gitignore | 2 - Chapter09/onlineStore/composer.json | 63 - Chapter09/onlineStore/composer.lock | 7860 ---------------- Chapter09/onlineStore/config/app.php | 197 - Chapter09/onlineStore/config/auth.php | 111 - Chapter09/onlineStore/config/broadcasting.php | 67 - Chapter09/onlineStore/config/cache.php | 110 - Chapter09/onlineStore/config/cors.php | 34 - Chapter09/onlineStore/config/database.php | 147 - Chapter09/onlineStore/config/filesystems.php | 73 - Chapter09/onlineStore/config/hashing.php | 52 - Chapter09/onlineStore/config/logging.php | 119 - Chapter09/onlineStore/config/mail.php | 117 - Chapter09/onlineStore/config/queue.php | 93 - Chapter09/onlineStore/config/sanctum.php | 65 - Chapter09/onlineStore/config/services.php | 33 - Chapter09/onlineStore/config/session.php | 201 - Chapter09/onlineStore/config/view.php | 36 - Chapter09/onlineStore/database/.gitignore | 1 - .../database/factories/UserFactory.php | 42 - .../2014_10_12_000000_create_users_table.php | 36 - ...12_100000_create_password_resets_table.php | 32 - ..._08_19_000000_create_failed_jobs_table.php | 36 - ...01_create_personal_access_tokens_table.php | 36 - .../database/seeders/DatabaseSeeder.php | 19 - Chapter09/onlineStore/lang/en.json | 7 - Chapter09/onlineStore/lang/en/auth.php | 20 - Chapter09/onlineStore/lang/en/pagination.php | 19 - Chapter09/onlineStore/lang/en/passwords.php | 22 - Chapter09/onlineStore/lang/en/validation.php | 163 - Chapter09/onlineStore/package.json | 18 - Chapter09/onlineStore/phpcs.xml | 10 - Chapter09/onlineStore/phpunit.xml | 31 - Chapter09/onlineStore/public/.htaccess | 21 - Chapter09/onlineStore/public/css/app.css | 20 - Chapter09/onlineStore/public/favicon.ico | 0 Chapter09/onlineStore/public/img/game.png | Bin 25896 -> 0 bytes Chapter09/onlineStore/public/img/safe.png | Bin 19240 -> 0 bytes .../onlineStore/public/img/submarine.png | Bin 24330 -> 0 bytes Chapter09/onlineStore/public/index.php | 55 - Chapter09/onlineStore/public/robots.txt | 2 - Chapter09/onlineStore/resources/css/app.css | 0 Chapter09/onlineStore/resources/js/app.js | 1 - .../onlineStore/resources/js/bootstrap.js | 28 - .../resources/views/home/about.blade.php | 15 - .../resources/views/home/index.blade.php | 15 - .../resources/views/layouts/app.blade.php | 55 - .../resources/views/product/index.blade.php | 18 - .../resources/views/product/show.blade.php | 21 - .../resources/views/welcome.blade.php | 7 - Chapter09/onlineStore/routes/api.php | 19 - Chapter09/onlineStore/routes/channels.php | 18 - Chapter09/onlineStore/routes/console.php | 19 - Chapter09/onlineStore/routes/web.php | 19 - Chapter09/onlineStore/storage/app/.gitignore | 3 - .../onlineStore/storage/app/public/.gitignore | 2 - .../onlineStore/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 - Chapter09/onlineStore/storage/logs/.gitignore | 2 - .../onlineStore/tests/CreatesApplication.php | 22 - .../onlineStore/tests/Feature/ExampleTest.php | 21 - Chapter09/onlineStore/tests/TestCase.php | 10 - .../onlineStore/tests/Unit/ExampleTest.php | 18 - Chapter09/onlineStore/webpack.mix.js | 17 - Chapter11/onlineStore/.editorconfig | 18 - Chapter11/onlineStore/.env.example | 52 - Chapter11/onlineStore/.gitattributes | 10 - Chapter11/onlineStore/.gitignore | 15 - Chapter11/onlineStore/.styleci.yml | 13 - .../onlineStore/CHAPTER-11-SQL-QUERY.txt | 4 - Chapter11/onlineStore/README.md | 8 - Chapter11/onlineStore/app/Console/Kernel.php | 32 - .../onlineStore/app/Exceptions/Handler.php | 41 - .../app/Http/Controllers/Controller.php | 13 - .../app/Http/Controllers/HomeController.php | 25 - .../Http/Controllers/ProductController.php | 34 - Chapter11/onlineStore/app/Http/Kernel.php | 67 - .../app/Http/Middleware/Authenticate.php | 21 - .../app/Http/Middleware/EncryptCookies.php | 17 - .../PreventRequestsDuringMaintenance.php | 17 - .../Middleware/RedirectIfAuthenticated.php | 32 - .../app/Http/Middleware/TrimStrings.php | 19 - .../app/Http/Middleware/TrustHosts.php | 20 - .../app/Http/Middleware/TrustProxies.php | 28 - .../app/Http/Middleware/VerifyCsrfToken.php | 17 - Chapter11/onlineStore/app/Models/User.php | 44 - .../app/Providers/AppServiceProvider.php | 28 - .../app/Providers/AuthServiceProvider.php | 30 - .../Providers/BroadcastServiceProvider.php | 21 - .../app/Providers/EventServiceProvider.php | 32 - .../app/Providers/RouteServiceProvider.php | 63 - Chapter11/onlineStore/artisan | 53 - Chapter11/onlineStore/bootstrap/app.php | 55 - .../onlineStore/bootstrap/cache/.gitignore | 2 - Chapter11/onlineStore/composer.json | 63 - Chapter11/onlineStore/composer.lock | 7860 ---------------- Chapter11/onlineStore/config/app.php | 197 - Chapter11/onlineStore/config/auth.php | 111 - Chapter11/onlineStore/config/broadcasting.php | 67 - Chapter11/onlineStore/config/cache.php | 110 - Chapter11/onlineStore/config/cors.php | 34 - Chapter11/onlineStore/config/database.php | 147 - Chapter11/onlineStore/config/filesystems.php | 73 - Chapter11/onlineStore/config/hashing.php | 52 - Chapter11/onlineStore/config/logging.php | 119 - Chapter11/onlineStore/config/mail.php | 117 - Chapter11/onlineStore/config/queue.php | 93 - Chapter11/onlineStore/config/sanctum.php | 65 - Chapter11/onlineStore/config/services.php | 33 - Chapter11/onlineStore/config/session.php | 201 - Chapter11/onlineStore/config/view.php | 36 - Chapter11/onlineStore/database/.gitignore | 1 - .../database/factories/UserFactory.php | 42 - .../2014_10_12_000000_create_users_table.php | 36 - ...12_100000_create_password_resets_table.php | 32 - ..._08_19_000000_create_failed_jobs_table.php | 36 - ...01_create_personal_access_tokens_table.php | 36 - ...022_02_11_153916_create_products_table.php | 35 - .../database/seeders/DatabaseSeeder.php | 19 - Chapter11/onlineStore/lang/en.json | 7 - Chapter11/onlineStore/lang/en/auth.php | 20 - Chapter11/onlineStore/lang/en/pagination.php | 19 - Chapter11/onlineStore/lang/en/passwords.php | 22 - Chapter11/onlineStore/lang/en/validation.php | 163 - Chapter11/onlineStore/package.json | 18 - Chapter11/onlineStore/phpcs.xml | 10 - Chapter11/onlineStore/phpunit.xml | 31 - Chapter11/onlineStore/public/.htaccess | 21 - Chapter11/onlineStore/public/css/app.css | 20 - Chapter11/onlineStore/public/favicon.ico | 0 Chapter11/onlineStore/public/img/game.png | Bin 25896 -> 0 bytes Chapter11/onlineStore/public/img/safe.png | Bin 19240 -> 0 bytes .../onlineStore/public/img/submarine.png | Bin 24330 -> 0 bytes Chapter11/onlineStore/public/index.php | 55 - Chapter11/onlineStore/public/robots.txt | 2 - Chapter11/onlineStore/resources/css/app.css | 0 Chapter11/onlineStore/resources/js/app.js | 1 - .../onlineStore/resources/js/bootstrap.js | 28 - .../resources/views/home/about.blade.php | 15 - .../resources/views/home/index.blade.php | 15 - .../resources/views/layouts/app.blade.php | 55 - .../resources/views/product/index.blade.php | 18 - .../resources/views/product/show.blade.php | 21 - .../resources/views/welcome.blade.php | 7 - Chapter11/onlineStore/routes/api.php | 19 - Chapter11/onlineStore/routes/channels.php | 18 - Chapter11/onlineStore/routes/console.php | 19 - Chapter11/onlineStore/routes/web.php | 19 - Chapter11/onlineStore/storage/app/.gitignore | 3 - .../onlineStore/storage/app/public/.gitignore | 2 - .../onlineStore/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 - Chapter11/onlineStore/storage/logs/.gitignore | 2 - .../onlineStore/tests/CreatesApplication.php | 22 - .../onlineStore/tests/Feature/ExampleTest.php | 21 - Chapter11/onlineStore/tests/TestCase.php | 10 - .../onlineStore/tests/Unit/ExampleTest.php | 18 - Chapter11/onlineStore/webpack.mix.js | 17 - Chapter12/onlineStore/.editorconfig | 18 - Chapter12/onlineStore/.env.example | 52 - Chapter12/onlineStore/.gitattributes | 10 - Chapter12/onlineStore/.gitignore | 15 - Chapter12/onlineStore/.styleci.yml | 13 - Chapter12/onlineStore/README.md | 64 - Chapter12/onlineStore/app/Console/Kernel.php | 32 - .../onlineStore/app/Exceptions/Handler.php | 41 - .../app/Http/Controllers/Controller.php | 13 - .../app/Http/Controllers/HomeController.php | 25 - .../Http/Controllers/ProductController.php | 34 - Chapter12/onlineStore/app/Http/Kernel.php | 67 - .../app/Http/Middleware/Authenticate.php | 21 - .../app/Http/Middleware/EncryptCookies.php | 17 - .../PreventRequestsDuringMaintenance.php | 17 - .../Middleware/RedirectIfAuthenticated.php | 32 - .../app/Http/Middleware/TrimStrings.php | 19 - .../app/Http/Middleware/TrustHosts.php | 20 - .../app/Http/Middleware/TrustProxies.php | 28 - .../app/Http/Middleware/VerifyCsrfToken.php | 17 - Chapter12/onlineStore/app/Models/Product.php | 11 - Chapter12/onlineStore/app/Models/User.php | 44 - .../app/Providers/AppServiceProvider.php | 28 - .../app/Providers/AuthServiceProvider.php | 30 - .../Providers/BroadcastServiceProvider.php | 21 - .../app/Providers/EventServiceProvider.php | 32 - .../app/Providers/RouteServiceProvider.php | 63 - Chapter12/onlineStore/artisan | 53 - Chapter12/onlineStore/bootstrap/app.php | 55 - .../onlineStore/bootstrap/cache/.gitignore | 2 - Chapter12/onlineStore/composer.json | 63 - Chapter12/onlineStore/composer.lock | 7860 ---------------- Chapter12/onlineStore/config/app.php | 197 - Chapter12/onlineStore/config/auth.php | 111 - Chapter12/onlineStore/config/broadcasting.php | 67 - Chapter12/onlineStore/config/cache.php | 110 - Chapter12/onlineStore/config/cors.php | 34 - Chapter12/onlineStore/config/database.php | 147 - Chapter12/onlineStore/config/filesystems.php | 73 - Chapter12/onlineStore/config/hashing.php | 52 - Chapter12/onlineStore/config/logging.php | 119 - Chapter12/onlineStore/config/mail.php | 117 - Chapter12/onlineStore/config/queue.php | 93 - Chapter12/onlineStore/config/sanctum.php | 65 - Chapter12/onlineStore/config/services.php | 33 - Chapter12/onlineStore/config/session.php | 201 - Chapter12/onlineStore/config/view.php | 36 - Chapter12/onlineStore/database/.gitignore | 1 - .../database/factories/UserFactory.php | 42 - .../2014_10_12_000000_create_users_table.php | 36 - ...12_100000_create_password_resets_table.php | 32 - ..._08_19_000000_create_failed_jobs_table.php | 36 - ...01_create_personal_access_tokens_table.php | 36 - ...022_02_11_153916_create_products_table.php | 35 - .../database/seeders/DatabaseSeeder.php | 19 - Chapter12/onlineStore/lang/en.json | 7 - Chapter12/onlineStore/lang/en/auth.php | 20 - Chapter12/onlineStore/lang/en/pagination.php | 19 - Chapter12/onlineStore/lang/en/passwords.php | 22 - Chapter12/onlineStore/lang/en/validation.php | 163 - Chapter12/onlineStore/package.json | 18 - Chapter12/onlineStore/phpcs.xml | 10 - Chapter12/onlineStore/phpunit.xml | 31 - Chapter12/onlineStore/public/.htaccess | 21 - Chapter12/onlineStore/public/css/app.css | 20 - Chapter12/onlineStore/public/favicon.ico | 0 Chapter12/onlineStore/public/img/game.png | Bin 25896 -> 0 bytes Chapter12/onlineStore/public/img/safe.png | Bin 19240 -> 0 bytes .../onlineStore/public/img/submarine.png | Bin 24330 -> 0 bytes Chapter12/onlineStore/public/index.php | 55 - Chapter12/onlineStore/public/robots.txt | 2 - Chapter12/onlineStore/resources/css/app.css | 0 Chapter12/onlineStore/resources/js/app.js | 1 - .../onlineStore/resources/js/bootstrap.js | 28 - .../resources/views/home/about.blade.php | 15 - .../resources/views/home/index.blade.php | 15 - .../resources/views/layouts/app.blade.php | 55 - .../resources/views/product/index.blade.php | 18 - .../resources/views/product/show.blade.php | 21 - .../resources/views/welcome.blade.php | 7 - Chapter12/onlineStore/routes/api.php | 19 - Chapter12/onlineStore/routes/channels.php | 18 - Chapter12/onlineStore/routes/console.php | 19 - Chapter12/onlineStore/routes/web.php | 19 - Chapter12/onlineStore/storage/app/.gitignore | 3 - .../onlineStore/storage/app/public/.gitignore | 2 - .../onlineStore/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 - Chapter12/onlineStore/storage/logs/.gitignore | 2 - .../onlineStore/tests/CreatesApplication.php | 22 - .../onlineStore/tests/Feature/ExampleTest.php | 21 - Chapter12/onlineStore/tests/TestCase.php | 10 - .../onlineStore/tests/Unit/ExampleTest.php | 18 - Chapter12/onlineStore/webpack.mix.js | 17 - Chapter13/onlineStore/.editorconfig | 18 - Chapter13/onlineStore/.env.example | 52 - Chapter13/onlineStore/.gitattributes | 10 - Chapter13/onlineStore/.gitignore | 15 - Chapter13/onlineStore/.styleci.yml | 13 - Chapter13/onlineStore/README.md | 64 - Chapter13/onlineStore/app/Console/Kernel.php | 32 - .../onlineStore/app/Exceptions/Handler.php | 41 - .../app/Http/Controllers/Controller.php | 13 - .../app/Http/Controllers/HomeController.php | 25 - .../Http/Controllers/ProductController.php | 29 - Chapter13/onlineStore/app/Http/Kernel.php | 67 - .../app/Http/Middleware/Authenticate.php | 21 - .../app/Http/Middleware/EncryptCookies.php | 17 - .../PreventRequestsDuringMaintenance.php | 17 - .../Middleware/RedirectIfAuthenticated.php | 32 - .../app/Http/Middleware/TrimStrings.php | 19 - .../app/Http/Middleware/TrustHosts.php | 20 - .../app/Http/Middleware/TrustProxies.php | 28 - .../app/Http/Middleware/VerifyCsrfToken.php | 17 - Chapter13/onlineStore/app/Models/Product.php | 11 - Chapter13/onlineStore/app/Models/User.php | 44 - .../app/Providers/AppServiceProvider.php | 28 - .../app/Providers/AuthServiceProvider.php | 30 - .../Providers/BroadcastServiceProvider.php | 21 - .../app/Providers/EventServiceProvider.php | 32 - .../app/Providers/RouteServiceProvider.php | 63 - Chapter13/onlineStore/artisan | 53 - Chapter13/onlineStore/bootstrap/app.php | 55 - .../onlineStore/bootstrap/cache/.gitignore | 2 - Chapter13/onlineStore/composer.json | 63 - Chapter13/onlineStore/composer.lock | 7860 ---------------- Chapter13/onlineStore/config/app.php | 197 - Chapter13/onlineStore/config/auth.php | 111 - Chapter13/onlineStore/config/broadcasting.php | 67 - Chapter13/onlineStore/config/cache.php | 110 - Chapter13/onlineStore/config/cors.php | 34 - Chapter13/onlineStore/config/database.php | 147 - Chapter13/onlineStore/config/filesystems.php | 73 - Chapter13/onlineStore/config/hashing.php | 52 - Chapter13/onlineStore/config/logging.php | 119 - Chapter13/onlineStore/config/mail.php | 117 - Chapter13/onlineStore/config/queue.php | 93 - Chapter13/onlineStore/config/sanctum.php | 65 - Chapter13/onlineStore/config/services.php | 33 - Chapter13/onlineStore/config/session.php | 201 - Chapter13/onlineStore/config/view.php | 36 - Chapter13/onlineStore/database/.gitignore | 1 - .../database/factories/UserFactory.php | 42 - .../2014_10_12_000000_create_users_table.php | 36 - ...12_100000_create_password_resets_table.php | 32 - ..._08_19_000000_create_failed_jobs_table.php | 36 - ...01_create_personal_access_tokens_table.php | 36 - ...022_02_11_153916_create_products_table.php | 35 - .../database/seeders/DatabaseSeeder.php | 19 - Chapter13/onlineStore/lang/en.json | 7 - Chapter13/onlineStore/lang/en/auth.php | 20 - Chapter13/onlineStore/lang/en/pagination.php | 19 - Chapter13/onlineStore/lang/en/passwords.php | 22 - Chapter13/onlineStore/lang/en/validation.php | 163 - Chapter13/onlineStore/package.json | 18 - Chapter13/onlineStore/phpcs.xml | 10 - Chapter13/onlineStore/phpunit.xml | 31 - Chapter13/onlineStore/public/.htaccess | 21 - Chapter13/onlineStore/public/css/app.css | 20 - Chapter13/onlineStore/public/favicon.ico | 0 Chapter13/onlineStore/public/img/game.png | Bin 25896 -> 0 bytes Chapter13/onlineStore/public/img/safe.png | Bin 19240 -> 0 bytes .../onlineStore/public/img/submarine.png | Bin 24330 -> 0 bytes Chapter13/onlineStore/public/index.php | 55 - Chapter13/onlineStore/public/robots.txt | 2 - Chapter13/onlineStore/resources/css/app.css | 0 Chapter13/onlineStore/resources/js/app.js | 1 - .../onlineStore/resources/js/bootstrap.js | 28 - .../resources/views/home/about.blade.php | 15 - .../resources/views/home/index.blade.php | 15 - .../resources/views/layouts/app.blade.php | 55 - .../resources/views/product/index.blade.php | 18 - .../resources/views/product/show.blade.php | 21 - .../resources/views/welcome.blade.php | 7 - Chapter13/onlineStore/routes/api.php | 19 - Chapter13/onlineStore/routes/channels.php | 18 - Chapter13/onlineStore/routes/console.php | 19 - Chapter13/onlineStore/routes/web.php | 19 - Chapter13/onlineStore/storage/app/.gitignore | 3 - .../onlineStore/storage/app/public/.gitignore | 2 - .../onlineStore/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 - Chapter13/onlineStore/storage/logs/.gitignore | 2 - .../onlineStore/tests/CreatesApplication.php | 22 - .../onlineStore/tests/Feature/ExampleTest.php | 21 - Chapter13/onlineStore/tests/TestCase.php | 10 - .../onlineStore/tests/Unit/ExampleTest.php | 18 - Chapter13/onlineStore/webpack.mix.js | 17 - Chapter14/onlineStore/.editorconfig | 18 - Chapter14/onlineStore/.env.example | 52 - Chapter14/onlineStore/.gitattributes | 10 - Chapter14/onlineStore/.gitignore | 15 - Chapter14/onlineStore/.styleci.yml | 13 - Chapter14/onlineStore/README.md | 64 - Chapter14/onlineStore/app/Console/Kernel.php | 32 - .../onlineStore/app/Exceptions/Handler.php | 41 - .../app/Http/Controllers/Controller.php | 13 - .../app/Http/Controllers/HomeController.php | 25 - .../Http/Controllers/ProductController.php | 29 - Chapter14/onlineStore/app/Http/Kernel.php | 67 - .../app/Http/Middleware/Authenticate.php | 21 - .../app/Http/Middleware/EncryptCookies.php | 17 - .../PreventRequestsDuringMaintenance.php | 17 - .../Middleware/RedirectIfAuthenticated.php | 32 - .../app/Http/Middleware/TrimStrings.php | 19 - .../app/Http/Middleware/TrustHosts.php | 20 - .../app/Http/Middleware/TrustProxies.php | 28 - .../app/Http/Middleware/VerifyCsrfToken.php | 17 - Chapter14/onlineStore/app/Models/Product.php | 89 - Chapter14/onlineStore/app/Models/User.php | 44 - .../app/Providers/AppServiceProvider.php | 28 - .../app/Providers/AuthServiceProvider.php | 30 - .../Providers/BroadcastServiceProvider.php | 21 - .../app/Providers/EventServiceProvider.php | 32 - .../app/Providers/RouteServiceProvider.php | 63 - Chapter14/onlineStore/artisan | 53 - Chapter14/onlineStore/bootstrap/app.php | 55 - .../onlineStore/bootstrap/cache/.gitignore | 2 - Chapter14/onlineStore/composer.json | 63 - Chapter14/onlineStore/composer.lock | 7860 ---------------- Chapter14/onlineStore/config/app.php | 197 - Chapter14/onlineStore/config/auth.php | 111 - Chapter14/onlineStore/config/broadcasting.php | 67 - Chapter14/onlineStore/config/cache.php | 110 - Chapter14/onlineStore/config/cors.php | 34 - Chapter14/onlineStore/config/database.php | 147 - Chapter14/onlineStore/config/filesystems.php | 73 - Chapter14/onlineStore/config/hashing.php | 52 - Chapter14/onlineStore/config/logging.php | 119 - Chapter14/onlineStore/config/mail.php | 117 - Chapter14/onlineStore/config/queue.php | 93 - Chapter14/onlineStore/config/sanctum.php | 65 - Chapter14/onlineStore/config/services.php | 33 - Chapter14/onlineStore/config/session.php | 201 - Chapter14/onlineStore/config/view.php | 36 - Chapter14/onlineStore/database/.gitignore | 1 - .../database/factories/UserFactory.php | 42 - .../2014_10_12_000000_create_users_table.php | 36 - ...12_100000_create_password_resets_table.php | 32 - ..._08_19_000000_create_failed_jobs_table.php | 36 - ...01_create_personal_access_tokens_table.php | 36 - ...022_02_11_153916_create_products_table.php | 35 - .../database/seeders/DatabaseSeeder.php | 19 - Chapter14/onlineStore/lang/en.json | 7 - Chapter14/onlineStore/lang/en/auth.php | 20 - Chapter14/onlineStore/lang/en/pagination.php | 19 - Chapter14/onlineStore/lang/en/passwords.php | 22 - Chapter14/onlineStore/lang/en/validation.php | 163 - Chapter14/onlineStore/package.json | 18 - Chapter14/onlineStore/phpcs.xml | 10 - Chapter14/onlineStore/phpunit.xml | 31 - Chapter14/onlineStore/public/.htaccess | 21 - Chapter14/onlineStore/public/css/app.css | 20 - Chapter14/onlineStore/public/favicon.ico | 0 Chapter14/onlineStore/public/img/game.png | Bin 25896 -> 0 bytes Chapter14/onlineStore/public/img/safe.png | Bin 19240 -> 0 bytes .../onlineStore/public/img/submarine.png | Bin 24330 -> 0 bytes Chapter14/onlineStore/public/index.php | 55 - Chapter14/onlineStore/public/robots.txt | 2 - Chapter14/onlineStore/resources/css/app.css | 0 Chapter14/onlineStore/resources/js/app.js | 1 - .../onlineStore/resources/js/bootstrap.js | 28 - .../resources/views/home/about.blade.php | 15 - .../resources/views/home/index.blade.php | 15 - .../resources/views/layouts/app.blade.php | 55 - .../resources/views/product/index.blade.php | 18 - .../resources/views/product/show.blade.php | 21 - .../resources/views/welcome.blade.php | 7 - Chapter14/onlineStore/routes/api.php | 19 - Chapter14/onlineStore/routes/channels.php | 18 - Chapter14/onlineStore/routes/console.php | 19 - Chapter14/onlineStore/routes/web.php | 19 - Chapter14/onlineStore/storage/app/.gitignore | 3 - .../onlineStore/storage/app/public/.gitignore | 2 - .../onlineStore/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 - Chapter14/onlineStore/storage/logs/.gitignore | 2 - .../onlineStore/tests/CreatesApplication.php | 22 - .../onlineStore/tests/Feature/ExampleTest.php | 21 - Chapter14/onlineStore/tests/TestCase.php | 10 - .../onlineStore/tests/Unit/ExampleTest.php | 18 - Chapter14/onlineStore/webpack.mix.js | 17 - Chapter15/onlineStore/.editorconfig | 18 - Chapter15/onlineStore/.env.example | 52 - Chapter15/onlineStore/.gitattributes | 10 - Chapter15/onlineStore/.gitignore | 15 - Chapter15/onlineStore/.styleci.yml | 13 - Chapter15/onlineStore/README.md | 64 - Chapter15/onlineStore/app/Console/Kernel.php | 32 - .../onlineStore/app/Exceptions/Handler.php | 41 - .../Controllers/Admin/AdminHomeController.php | 16 - .../app/Http/Controllers/Controller.php | 13 - .../app/Http/Controllers/HomeController.php | 25 - .../Http/Controllers/ProductController.php | 29 - Chapter15/onlineStore/app/Http/Kernel.php | 67 - .../app/Http/Middleware/Authenticate.php | 21 - .../app/Http/Middleware/EncryptCookies.php | 17 - .../PreventRequestsDuringMaintenance.php | 17 - .../Middleware/RedirectIfAuthenticated.php | 32 - .../app/Http/Middleware/TrimStrings.php | 19 - .../app/Http/Middleware/TrustHosts.php | 20 - .../app/Http/Middleware/TrustProxies.php | 28 - .../app/Http/Middleware/VerifyCsrfToken.php | 17 - Chapter15/onlineStore/app/Models/Product.php | 89 - Chapter15/onlineStore/app/Models/User.php | 44 - .../app/Providers/AppServiceProvider.php | 28 - .../app/Providers/AuthServiceProvider.php | 30 - .../Providers/BroadcastServiceProvider.php | 21 - .../app/Providers/EventServiceProvider.php | 32 - .../app/Providers/RouteServiceProvider.php | 63 - Chapter15/onlineStore/artisan | 53 - Chapter15/onlineStore/bootstrap/app.php | 55 - .../onlineStore/bootstrap/cache/.gitignore | 2 - Chapter15/onlineStore/composer.json | 63 - Chapter15/onlineStore/composer.lock | 7860 ---------------- Chapter15/onlineStore/config/app.php | 197 - Chapter15/onlineStore/config/auth.php | 111 - Chapter15/onlineStore/config/broadcasting.php | 67 - Chapter15/onlineStore/config/cache.php | 110 - Chapter15/onlineStore/config/cors.php | 34 - Chapter15/onlineStore/config/database.php | 147 - Chapter15/onlineStore/config/filesystems.php | 73 - Chapter15/onlineStore/config/hashing.php | 52 - Chapter15/onlineStore/config/logging.php | 119 - Chapter15/onlineStore/config/mail.php | 117 - Chapter15/onlineStore/config/queue.php | 93 - Chapter15/onlineStore/config/sanctum.php | 65 - Chapter15/onlineStore/config/services.php | 33 - Chapter15/onlineStore/config/session.php | 201 - Chapter15/onlineStore/config/view.php | 36 - Chapter15/onlineStore/database/.gitignore | 1 - .../database/factories/UserFactory.php | 42 - .../2014_10_12_000000_create_users_table.php | 36 - ...12_100000_create_password_resets_table.php | 32 - ..._08_19_000000_create_failed_jobs_table.php | 36 - ...01_create_personal_access_tokens_table.php | 36 - ...022_02_11_153916_create_products_table.php | 35 - .../database/seeders/DatabaseSeeder.php | 19 - Chapter15/onlineStore/lang/en.json | 7 - Chapter15/onlineStore/lang/en/auth.php | 20 - Chapter15/onlineStore/lang/en/pagination.php | 19 - Chapter15/onlineStore/lang/en/passwords.php | 22 - Chapter15/onlineStore/lang/en/validation.php | 163 - Chapter15/onlineStore/package.json | 18 - Chapter15/onlineStore/phpcs.xml | 10 - Chapter15/onlineStore/phpunit.xml | 31 - Chapter15/onlineStore/public/.htaccess | 21 - Chapter15/onlineStore/public/css/admin.css | 33 - Chapter15/onlineStore/public/css/app.css | 20 - Chapter15/onlineStore/public/favicon.ico | 0 Chapter15/onlineStore/public/img/game.png | Bin 25896 -> 0 bytes Chapter15/onlineStore/public/img/safe.png | Bin 19240 -> 0 bytes .../onlineStore/public/img/submarine.png | Bin 24330 -> 0 bytes .../onlineStore/public/img/undraw_profile.svg | 38 - Chapter15/onlineStore/public/index.php | 55 - Chapter15/onlineStore/public/robots.txt | 2 - Chapter15/onlineStore/resources/css/app.css | 0 Chapter15/onlineStore/resources/js/app.js | 1 - .../onlineStore/resources/js/bootstrap.js | 28 - .../views/admin/home/index.blade.php | 12 - .../resources/views/home/about.blade.php | 15 - .../resources/views/home/index.blade.php | 15 - .../resources/views/layouts/admin.blade.php | 59 - .../resources/views/layouts/app.blade.php | 55 - .../resources/views/product/index.blade.php | 18 - .../resources/views/product/show.blade.php | 21 - .../resources/views/welcome.blade.php | 7 - Chapter15/onlineStore/routes/api.php | 19 - Chapter15/onlineStore/routes/channels.php | 18 - Chapter15/onlineStore/routes/console.php | 19 - Chapter15/onlineStore/routes/web.php | 20 - Chapter15/onlineStore/storage/app/.gitignore | 3 - .../onlineStore/storage/app/public/.gitignore | 2 - .../onlineStore/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 - Chapter15/onlineStore/storage/logs/.gitignore | 2 - .../onlineStore/tests/CreatesApplication.php | 22 - .../onlineStore/tests/Feature/ExampleTest.php | 21 - Chapter15/onlineStore/tests/TestCase.php | 10 - .../onlineStore/tests/Unit/ExampleTest.php | 18 - Chapter15/onlineStore/webpack.mix.js | 17 - Chapter16/onlineStore/.editorconfig | 18 - Chapter16/onlineStore/.env.example | 52 - Chapter16/onlineStore/.gitattributes | 10 - Chapter16/onlineStore/.gitignore | 15 - Chapter16/onlineStore/.styleci.yml | 13 - Chapter16/onlineStore/README.md | 64 - Chapter16/onlineStore/app/Console/Kernel.php | 32 - .../onlineStore/app/Exceptions/Handler.php | 41 - .../Controllers/Admin/AdminHomeController.php | 16 - .../Admin/AdminProductController.php | 18 - .../app/Http/Controllers/Controller.php | 13 - .../app/Http/Controllers/HomeController.php | 25 - .../Http/Controllers/ProductController.php | 29 - Chapter16/onlineStore/app/Http/Kernel.php | 67 - .../app/Http/Middleware/Authenticate.php | 21 - .../app/Http/Middleware/EncryptCookies.php | 17 - .../PreventRequestsDuringMaintenance.php | 17 - .../Middleware/RedirectIfAuthenticated.php | 32 - .../app/Http/Middleware/TrimStrings.php | 19 - .../app/Http/Middleware/TrustHosts.php | 20 - .../app/Http/Middleware/TrustProxies.php | 28 - .../app/Http/Middleware/VerifyCsrfToken.php | 17 - Chapter16/onlineStore/app/Models/Product.php | 89 - Chapter16/onlineStore/app/Models/User.php | 44 - .../app/Providers/AppServiceProvider.php | 28 - .../app/Providers/AuthServiceProvider.php | 30 - .../Providers/BroadcastServiceProvider.php | 21 - .../app/Providers/EventServiceProvider.php | 32 - .../app/Providers/RouteServiceProvider.php | 63 - Chapter16/onlineStore/artisan | 53 - Chapter16/onlineStore/bootstrap/app.php | 55 - .../onlineStore/bootstrap/cache/.gitignore | 2 - Chapter16/onlineStore/composer.json | 63 - Chapter16/onlineStore/composer.lock | 7860 ---------------- Chapter16/onlineStore/config/app.php | 197 - Chapter16/onlineStore/config/auth.php | 111 - Chapter16/onlineStore/config/broadcasting.php | 67 - Chapter16/onlineStore/config/cache.php | 110 - Chapter16/onlineStore/config/cors.php | 34 - Chapter16/onlineStore/config/database.php | 147 - Chapter16/onlineStore/config/filesystems.php | 73 - Chapter16/onlineStore/config/hashing.php | 52 - Chapter16/onlineStore/config/logging.php | 119 - Chapter16/onlineStore/config/mail.php | 117 - Chapter16/onlineStore/config/queue.php | 93 - Chapter16/onlineStore/config/sanctum.php | 65 - Chapter16/onlineStore/config/services.php | 33 - Chapter16/onlineStore/config/session.php | 201 - Chapter16/onlineStore/config/view.php | 36 - Chapter16/onlineStore/database/.gitignore | 1 - .../database/factories/UserFactory.php | 42 - .../2014_10_12_000000_create_users_table.php | 36 - ...12_100000_create_password_resets_table.php | 32 - ..._08_19_000000_create_failed_jobs_table.php | 36 - ...01_create_personal_access_tokens_table.php | 36 - ...022_02_11_153916_create_products_table.php | 35 - .../database/seeders/DatabaseSeeder.php | 19 - Chapter16/onlineStore/lang/en.json | 7 - Chapter16/onlineStore/lang/en/auth.php | 20 - Chapter16/onlineStore/lang/en/pagination.php | 19 - Chapter16/onlineStore/lang/en/passwords.php | 22 - Chapter16/onlineStore/lang/en/validation.php | 163 - Chapter16/onlineStore/package.json | 18 - Chapter16/onlineStore/phpcs.xml | 10 - Chapter16/onlineStore/phpunit.xml | 31 - Chapter16/onlineStore/public/.htaccess | 21 - Chapter16/onlineStore/public/css/admin.css | 33 - Chapter16/onlineStore/public/css/app.css | 20 - Chapter16/onlineStore/public/favicon.ico | 0 Chapter16/onlineStore/public/img/game.png | Bin 25896 -> 0 bytes Chapter16/onlineStore/public/img/safe.png | Bin 19240 -> 0 bytes .../onlineStore/public/img/submarine.png | Bin 24330 -> 0 bytes .../onlineStore/public/img/undraw_profile.svg | 38 - Chapter16/onlineStore/public/index.php | 55 - Chapter16/onlineStore/public/robots.txt | 2 - Chapter16/onlineStore/resources/css/app.css | 0 Chapter16/onlineStore/resources/js/app.js | 1 - .../onlineStore/resources/js/bootstrap.js | 28 - .../views/admin/home/index.blade.php | 12 - .../views/admin/product/index.blade.php | 31 - .../resources/views/home/about.blade.php | 15 - .../resources/views/home/index.blade.php | 15 - .../resources/views/layouts/admin.blade.php | 59 - .../resources/views/layouts/app.blade.php | 55 - .../resources/views/product/index.blade.php | 18 - .../resources/views/product/show.blade.php | 21 - .../resources/views/welcome.blade.php | 7 - Chapter16/onlineStore/routes/api.php | 19 - Chapter16/onlineStore/routes/channels.php | 18 - Chapter16/onlineStore/routes/console.php | 19 - Chapter16/onlineStore/routes/web.php | 21 - Chapter16/onlineStore/storage/app/.gitignore | 3 - .../onlineStore/storage/app/public/.gitignore | 2 - .../onlineStore/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 - Chapter16/onlineStore/storage/logs/.gitignore | 2 - .../onlineStore/tests/CreatesApplication.php | 22 - .../onlineStore/tests/Feature/ExampleTest.php | 21 - Chapter16/onlineStore/tests/TestCase.php | 10 - .../onlineStore/tests/Unit/ExampleTest.php | 18 - Chapter16/onlineStore/webpack.mix.js | 17 - Chapter17-Advanced/onlineStore/.editorconfig | 18 - Chapter17-Advanced/onlineStore/.env.example | 52 - Chapter17-Advanced/onlineStore/.gitattributes | 10 - Chapter17-Advanced/onlineStore/.gitignore | 15 - Chapter17-Advanced/onlineStore/.styleci.yml | 13 - Chapter17-Advanced/onlineStore/README.md | 64 - .../onlineStore/app/Console/Kernel.php | 32 - .../onlineStore/app/Exceptions/Handler.php | 41 - .../Controllers/Admin/AdminHomeController.php | 16 - .../Admin/AdminProductController.php | 34 - .../app/Http/Controllers/Controller.php | 13 - .../app/Http/Controllers/HomeController.php | 25 - .../Http/Controllers/ProductController.php | 29 - .../onlineStore/app/Http/Kernel.php | 67 - .../app/Http/Middleware/Authenticate.php | 21 - .../app/Http/Middleware/EncryptCookies.php | 17 - .../PreventRequestsDuringMaintenance.php | 17 - .../Middleware/RedirectIfAuthenticated.php | 32 - .../app/Http/Middleware/TrimStrings.php | 19 - .../app/Http/Middleware/TrustHosts.php | 20 - .../app/Http/Middleware/TrustProxies.php | 28 - .../app/Http/Middleware/VerifyCsrfToken.php | 17 - .../onlineStore/app/Models/Product.php | 99 - .../onlineStore/app/Models/User.php | 44 - .../app/Providers/AppServiceProvider.php | 28 - .../app/Providers/AuthServiceProvider.php | 30 - .../Providers/BroadcastServiceProvider.php | 21 - .../app/Providers/EventServiceProvider.php | 32 - .../app/Providers/RouteServiceProvider.php | 63 - .../app/Traits/HasClassicSetter.php | 31 - Chapter17-Advanced/onlineStore/artisan | 53 - .../onlineStore/bootstrap/app.php | 55 - .../onlineStore/bootstrap/cache/.gitignore | 2 - Chapter17-Advanced/onlineStore/composer.json | 63 - Chapter17-Advanced/onlineStore/composer.lock | 7860 ---------------- Chapter17-Advanced/onlineStore/config/app.php | 197 - .../onlineStore/config/auth.php | 111 - .../onlineStore/config/broadcasting.php | 67 - .../onlineStore/config/cache.php | 110 - .../onlineStore/config/cors.php | 34 - .../onlineStore/config/database.php | 147 - .../onlineStore/config/filesystems.php | 73 - .../onlineStore/config/hashing.php | 52 - .../onlineStore/config/logging.php | 119 - .../onlineStore/config/mail.php | 117 - .../onlineStore/config/queue.php | 93 - .../onlineStore/config/sanctum.php | 65 - .../onlineStore/config/services.php | 33 - .../onlineStore/config/session.php | 201 - .../onlineStore/config/view.php | 36 - .../onlineStore/database/.gitignore | 1 - .../database/factories/UserFactory.php | 42 - .../2014_10_12_000000_create_users_table.php | 36 - ...12_100000_create_password_resets_table.php | 32 - ..._08_19_000000_create_failed_jobs_table.php | 36 - ...01_create_personal_access_tokens_table.php | 36 - ...022_02_11_153916_create_products_table.php | 35 - .../database/seeders/DatabaseSeeder.php | 19 - Chapter17-Advanced/onlineStore/lang/en.json | 7 - .../onlineStore/lang/en/auth.php | 20 - .../onlineStore/lang/en/pagination.php | 19 - .../onlineStore/lang/en/passwords.php | 22 - .../onlineStore/lang/en/validation.php | 163 - Chapter17-Advanced/onlineStore/package.json | 18 - Chapter17-Advanced/onlineStore/phpcs.xml | 10 - Chapter17-Advanced/onlineStore/phpunit.xml | 31 - .../onlineStore/public/.htaccess | 21 - .../onlineStore/public/css/admin.css | 33 - .../onlineStore/public/css/app.css | 20 - .../onlineStore/public/favicon.ico | 0 .../onlineStore/public/img/game.png | Bin 25896 -> 0 bytes .../onlineStore/public/img/safe.png | Bin 19240 -> 0 bytes .../onlineStore/public/img/submarine.png | Bin 24330 -> 0 bytes .../onlineStore/public/img/undraw_profile.svg | 38 - .../onlineStore/public/index.php | 55 - .../onlineStore/public/robots.txt | 2 - .../onlineStore/resources/css/app.css | 0 .../onlineStore/resources/js/app.js | 1 - .../onlineStore/resources/js/bootstrap.js | 28 - .../views/admin/home/index.blade.php | 12 - .../views/admin/product/index.blade.php | 73 - .../resources/views/home/about.blade.php | 15 - .../resources/views/home/index.blade.php | 15 - .../resources/views/layouts/admin.blade.php | 59 - .../resources/views/layouts/app.blade.php | 55 - .../resources/views/product/index.blade.php | 18 - .../resources/views/product/show.blade.php | 21 - .../resources/views/welcome.blade.php | 7 - Chapter17-Advanced/onlineStore/routes/api.php | 19 - .../onlineStore/routes/channels.php | 18 - .../onlineStore/routes/console.php | 19 - Chapter17-Advanced/onlineStore/routes/web.php | 22 - .../onlineStore/storage/app/.gitignore | 3 - .../onlineStore/storage/app/public/.gitignore | 2 - .../onlineStore/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 - .../onlineStore/storage/logs/.gitignore | 2 - .../onlineStore/tests/CreatesApplication.php | 22 - .../onlineStore/tests/Feature/ExampleTest.php | 21 - .../onlineStore/tests/TestCase.php | 10 - .../onlineStore/tests/Unit/ExampleTest.php | 18 - Chapter17-Advanced/onlineStore/webpack.mix.js | 17 - Chapter17/onlineStore/.editorconfig | 18 - Chapter17/onlineStore/.env.example | 52 - Chapter17/onlineStore/.gitattributes | 10 - Chapter17/onlineStore/.gitignore | 15 - Chapter17/onlineStore/.styleci.yml | 13 - Chapter17/onlineStore/README.md | 64 - Chapter17/onlineStore/app/Console/Kernel.php | 32 - .../onlineStore/app/Exceptions/Handler.php | 41 - .../Controllers/Admin/AdminHomeController.php | 16 - .../Admin/AdminProductController.php | 37 - .../app/Http/Controllers/Controller.php | 13 - .../app/Http/Controllers/HomeController.php | 25 - .../Http/Controllers/ProductController.php | 29 - Chapter17/onlineStore/app/Http/Kernel.php | 67 - .../app/Http/Middleware/Authenticate.php | 21 - .../app/Http/Middleware/EncryptCookies.php | 17 - .../PreventRequestsDuringMaintenance.php | 17 - .../Middleware/RedirectIfAuthenticated.php | 32 - .../app/Http/Middleware/TrimStrings.php | 19 - .../app/Http/Middleware/TrustHosts.php | 20 - .../app/Http/Middleware/TrustProxies.php | 28 - .../app/Http/Middleware/VerifyCsrfToken.php | 17 - Chapter17/onlineStore/app/Models/Product.php | 89 - Chapter17/onlineStore/app/Models/User.php | 44 - .../app/Providers/AppServiceProvider.php | 28 - .../app/Providers/AuthServiceProvider.php | 30 - .../Providers/BroadcastServiceProvider.php | 21 - .../app/Providers/EventServiceProvider.php | 32 - .../app/Providers/RouteServiceProvider.php | 63 - Chapter17/onlineStore/artisan | 53 - Chapter17/onlineStore/bootstrap/app.php | 55 - .../onlineStore/bootstrap/cache/.gitignore | 2 - Chapter17/onlineStore/composer.json | 63 - Chapter17/onlineStore/composer.lock | 7860 ---------------- Chapter17/onlineStore/config/app.php | 197 - Chapter17/onlineStore/config/auth.php | 111 - Chapter17/onlineStore/config/broadcasting.php | 67 - Chapter17/onlineStore/config/cache.php | 110 - Chapter17/onlineStore/config/cors.php | 34 - Chapter17/onlineStore/config/database.php | 147 - Chapter17/onlineStore/config/filesystems.php | 73 - Chapter17/onlineStore/config/hashing.php | 52 - Chapter17/onlineStore/config/logging.php | 119 - Chapter17/onlineStore/config/mail.php | 117 - Chapter17/onlineStore/config/queue.php | 93 - Chapter17/onlineStore/config/sanctum.php | 65 - Chapter17/onlineStore/config/services.php | 33 - Chapter17/onlineStore/config/session.php | 201 - Chapter17/onlineStore/config/view.php | 36 - Chapter17/onlineStore/database/.gitignore | 1 - .../database/factories/UserFactory.php | 42 - .../2014_10_12_000000_create_users_table.php | 36 - ...12_100000_create_password_resets_table.php | 32 - ..._08_19_000000_create_failed_jobs_table.php | 36 - ...01_create_personal_access_tokens_table.php | 36 - ...022_02_11_153916_create_products_table.php | 35 - .../database/seeders/DatabaseSeeder.php | 19 - Chapter17/onlineStore/lang/en.json | 7 - Chapter17/onlineStore/lang/en/auth.php | 20 - Chapter17/onlineStore/lang/en/pagination.php | 19 - Chapter17/onlineStore/lang/en/passwords.php | 22 - Chapter17/onlineStore/lang/en/validation.php | 163 - Chapter17/onlineStore/package.json | 18 - Chapter17/onlineStore/phpcs.xml | 10 - Chapter17/onlineStore/phpunit.xml | 31 - Chapter17/onlineStore/public/.htaccess | 21 - Chapter17/onlineStore/public/css/admin.css | 33 - Chapter17/onlineStore/public/css/app.css | 20 - Chapter17/onlineStore/public/favicon.ico | 0 Chapter17/onlineStore/public/img/game.png | Bin 25896 -> 0 bytes Chapter17/onlineStore/public/img/safe.png | Bin 19240 -> 0 bytes .../onlineStore/public/img/submarine.png | Bin 24330 -> 0 bytes .../onlineStore/public/img/undraw_profile.svg | 38 - Chapter17/onlineStore/public/index.php | 55 - Chapter17/onlineStore/public/robots.txt | 2 - Chapter17/onlineStore/resources/css/app.css | 0 Chapter17/onlineStore/resources/js/app.js | 1 - .../onlineStore/resources/js/bootstrap.js | 28 - .../views/admin/home/index.blade.php | 12 - .../views/admin/product/index.blade.php | 73 - .../resources/views/home/about.blade.php | 15 - .../resources/views/home/index.blade.php | 15 - .../resources/views/layouts/admin.blade.php | 59 - .../resources/views/layouts/app.blade.php | 55 - .../resources/views/product/index.blade.php | 18 - .../resources/views/product/show.blade.php | 21 - .../resources/views/welcome.blade.php | 7 - Chapter17/onlineStore/routes/api.php | 19 - Chapter17/onlineStore/routes/channels.php | 18 - Chapter17/onlineStore/routes/console.php | 19 - Chapter17/onlineStore/routes/web.php | 22 - Chapter17/onlineStore/storage/app/.gitignore | 3 - .../onlineStore/storage/app/public/.gitignore | 2 - .../onlineStore/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 - Chapter17/onlineStore/storage/logs/.gitignore | 2 - .../onlineStore/tests/CreatesApplication.php | 22 - .../onlineStore/tests/Feature/ExampleTest.php | 21 - Chapter17/onlineStore/tests/TestCase.php | 10 - .../onlineStore/tests/Unit/ExampleTest.php | 18 - Chapter17/onlineStore/webpack.mix.js | 17 - Chapter18/onlineStore/.editorconfig | 18 - Chapter18/onlineStore/.env.example | 52 - Chapter18/onlineStore/.gitattributes | 10 - Chapter18/onlineStore/.gitignore | 15 - Chapter18/onlineStore/.styleci.yml | 13 - Chapter18/onlineStore/README.md | 64 - Chapter18/onlineStore/app/Console/Kernel.php | 32 - .../onlineStore/app/Exceptions/Handler.php | 41 - .../Controllers/Admin/AdminHomeController.php | 16 - .../Admin/AdminProductController.php | 48 - .../app/Http/Controllers/Controller.php | 13 - .../app/Http/Controllers/HomeController.php | 25 - .../Http/Controllers/ProductController.php | 29 - Chapter18/onlineStore/app/Http/Kernel.php | 67 - .../app/Http/Middleware/Authenticate.php | 21 - .../app/Http/Middleware/EncryptCookies.php | 17 - .../PreventRequestsDuringMaintenance.php | 17 - .../Middleware/RedirectIfAuthenticated.php | 32 - .../app/Http/Middleware/TrimStrings.php | 19 - .../app/Http/Middleware/TrustHosts.php | 20 - .../app/Http/Middleware/TrustProxies.php | 28 - .../app/Http/Middleware/VerifyCsrfToken.php | 17 - Chapter18/onlineStore/app/Models/Product.php | 89 - Chapter18/onlineStore/app/Models/User.php | 44 - .../app/Providers/AppServiceProvider.php | 28 - .../app/Providers/AuthServiceProvider.php | 30 - .../Providers/BroadcastServiceProvider.php | 21 - .../app/Providers/EventServiceProvider.php | 32 - .../app/Providers/RouteServiceProvider.php | 63 - Chapter18/onlineStore/artisan | 53 - Chapter18/onlineStore/bootstrap/app.php | 55 - .../onlineStore/bootstrap/cache/.gitignore | 2 - Chapter18/onlineStore/composer.json | 63 - Chapter18/onlineStore/composer.lock | 7860 ---------------- Chapter18/onlineStore/config/app.php | 197 - Chapter18/onlineStore/config/auth.php | 111 - Chapter18/onlineStore/config/broadcasting.php | 67 - Chapter18/onlineStore/config/cache.php | 110 - Chapter18/onlineStore/config/cors.php | 34 - Chapter18/onlineStore/config/database.php | 147 - Chapter18/onlineStore/config/filesystems.php | 73 - Chapter18/onlineStore/config/hashing.php | 52 - Chapter18/onlineStore/config/logging.php | 119 - Chapter18/onlineStore/config/mail.php | 117 - Chapter18/onlineStore/config/queue.php | 93 - Chapter18/onlineStore/config/sanctum.php | 65 - Chapter18/onlineStore/config/services.php | 33 - Chapter18/onlineStore/config/session.php | 201 - Chapter18/onlineStore/config/view.php | 36 - Chapter18/onlineStore/database/.gitignore | 1 - .../database/factories/UserFactory.php | 42 - .../2014_10_12_000000_create_users_table.php | 36 - ...12_100000_create_password_resets_table.php | 32 - ..._08_19_000000_create_failed_jobs_table.php | 36 - ...01_create_personal_access_tokens_table.php | 36 - ...022_02_11_153916_create_products_table.php | 35 - .../database/seeders/DatabaseSeeder.php | 19 - Chapter18/onlineStore/lang/en.json | 7 - Chapter18/onlineStore/lang/en/auth.php | 20 - Chapter18/onlineStore/lang/en/pagination.php | 19 - Chapter18/onlineStore/lang/en/passwords.php | 22 - Chapter18/onlineStore/lang/en/validation.php | 163 - Chapter18/onlineStore/package.json | 18 - Chapter18/onlineStore/phpcs.xml | 10 - Chapter18/onlineStore/phpunit.xml | 31 - Chapter18/onlineStore/public/.htaccess | 21 - Chapter18/onlineStore/public/css/admin.css | 33 - Chapter18/onlineStore/public/css/app.css | 20 - Chapter18/onlineStore/public/favicon.ico | 0 Chapter18/onlineStore/public/img/game.png | Bin 25896 -> 0 bytes Chapter18/onlineStore/public/img/safe.png | Bin 19240 -> 0 bytes .../onlineStore/public/img/submarine.png | Bin 24330 -> 0 bytes .../onlineStore/public/img/undraw_profile.svg | 38 - Chapter18/onlineStore/public/index.php | 55 - Chapter18/onlineStore/public/robots.txt | 2 - Chapter18/onlineStore/resources/css/app.css | 0 Chapter18/onlineStore/resources/js/app.js | 1 - .../onlineStore/resources/js/bootstrap.js | 28 - .../views/admin/home/index.blade.php | 12 - .../views/admin/product/index.blade.php | 86 - .../resources/views/home/about.blade.php | 15 - .../resources/views/home/index.blade.php | 15 - .../resources/views/layouts/admin.blade.php | 59 - .../resources/views/layouts/app.blade.php | 55 - .../resources/views/product/index.blade.php | 18 - .../resources/views/product/show.blade.php | 21 - .../resources/views/welcome.blade.php | 7 - Chapter18/onlineStore/routes/api.php | 19 - Chapter18/onlineStore/routes/channels.php | 18 - Chapter18/onlineStore/routes/console.php | 19 - Chapter18/onlineStore/routes/web.php | 22 - Chapter18/onlineStore/storage/app/.gitignore | 3 - .../onlineStore/storage/app/public/.gitignore | 2 - .../onlineStore/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 - Chapter18/onlineStore/storage/logs/.gitignore | 2 - .../onlineStore/tests/CreatesApplication.php | 22 - .../onlineStore/tests/Feature/ExampleTest.php | 21 - Chapter18/onlineStore/tests/TestCase.php | 10 - .../onlineStore/tests/Unit/ExampleTest.php | 18 - Chapter18/onlineStore/webpack.mix.js | 17 - Chapter19/onlineStore/.editorconfig | 18 - Chapter19/onlineStore/.env.example | 52 - Chapter19/onlineStore/.gitattributes | 10 - Chapter19/onlineStore/.gitignore | 15 - Chapter19/onlineStore/.styleci.yml | 13 - Chapter19/onlineStore/README.md | 64 - Chapter19/onlineStore/app/Console/Kernel.php | 32 - .../onlineStore/app/Exceptions/Handler.php | 41 - .../Controllers/Admin/AdminHomeController.php | 16 - .../Admin/AdminProductController.php | 89 - .../app/Http/Controllers/Controller.php | 13 - .../app/Http/Controllers/HomeController.php | 25 - .../Http/Controllers/ProductController.php | 29 - Chapter19/onlineStore/app/Http/Kernel.php | 67 - .../app/Http/Middleware/Authenticate.php | 21 - .../app/Http/Middleware/EncryptCookies.php | 17 - .../PreventRequestsDuringMaintenance.php | 17 - .../Middleware/RedirectIfAuthenticated.php | 32 - .../app/Http/Middleware/TrimStrings.php | 19 - .../app/Http/Middleware/TrustHosts.php | 20 - .../app/Http/Middleware/TrustProxies.php | 28 - .../app/Http/Middleware/VerifyCsrfToken.php | 17 - Chapter19/onlineStore/app/Models/Product.php | 89 - Chapter19/onlineStore/app/Models/User.php | 44 - .../app/Providers/AppServiceProvider.php | 28 - .../app/Providers/AuthServiceProvider.php | 30 - .../Providers/BroadcastServiceProvider.php | 21 - .../app/Providers/EventServiceProvider.php | 32 - .../app/Providers/RouteServiceProvider.php | 63 - Chapter19/onlineStore/artisan | 53 - Chapter19/onlineStore/bootstrap/app.php | 55 - .../onlineStore/bootstrap/cache/.gitignore | 2 - Chapter19/onlineStore/composer.json | 63 - Chapter19/onlineStore/composer.lock | 7860 ---------------- Chapter19/onlineStore/config/app.php | 197 - Chapter19/onlineStore/config/auth.php | 111 - Chapter19/onlineStore/config/broadcasting.php | 67 - Chapter19/onlineStore/config/cache.php | 110 - Chapter19/onlineStore/config/cors.php | 34 - Chapter19/onlineStore/config/database.php | 147 - Chapter19/onlineStore/config/filesystems.php | 73 - Chapter19/onlineStore/config/hashing.php | 52 - Chapter19/onlineStore/config/logging.php | 119 - Chapter19/onlineStore/config/mail.php | 117 - Chapter19/onlineStore/config/queue.php | 93 - Chapter19/onlineStore/config/sanctum.php | 65 - Chapter19/onlineStore/config/services.php | 33 - Chapter19/onlineStore/config/session.php | 201 - Chapter19/onlineStore/config/view.php | 36 - Chapter19/onlineStore/database/.gitignore | 1 - .../database/factories/UserFactory.php | 42 - .../2014_10_12_000000_create_users_table.php | 36 - ...12_100000_create_password_resets_table.php | 32 - ..._08_19_000000_create_failed_jobs_table.php | 36 - ...01_create_personal_access_tokens_table.php | 36 - ...022_02_11_153916_create_products_table.php | 35 - .../database/seeders/DatabaseSeeder.php | 19 - Chapter19/onlineStore/lang/en.json | 7 - Chapter19/onlineStore/lang/en/auth.php | 20 - Chapter19/onlineStore/lang/en/pagination.php | 19 - Chapter19/onlineStore/lang/en/passwords.php | 22 - Chapter19/onlineStore/lang/en/validation.php | 163 - Chapter19/onlineStore/package.json | 18 - Chapter19/onlineStore/phpcs.xml | 10 - Chapter19/onlineStore/phpunit.xml | 31 - Chapter19/onlineStore/public/.htaccess | 21 - Chapter19/onlineStore/public/css/admin.css | 33 - Chapter19/onlineStore/public/css/app.css | 20 - Chapter19/onlineStore/public/favicon.ico | 0 Chapter19/onlineStore/public/img/game.png | Bin 25896 -> 0 bytes Chapter19/onlineStore/public/img/safe.png | Bin 19240 -> 0 bytes .../onlineStore/public/img/submarine.png | Bin 24330 -> 0 bytes .../onlineStore/public/img/undraw_profile.svg | 38 - Chapter19/onlineStore/public/index.php | 55 - Chapter19/onlineStore/public/robots.txt | 2 - Chapter19/onlineStore/resources/css/app.css | 0 Chapter19/onlineStore/resources/js/app.js | 1 - .../onlineStore/resources/js/bootstrap.js | 28 - .../views/admin/home/index.blade.php | 12 - .../views/admin/product/edit.blade.php | 61 - .../views/admin/product/index.blade.php | 98 - .../resources/views/home/about.blade.php | 15 - .../resources/views/home/index.blade.php | 15 - .../resources/views/layouts/admin.blade.php | 60 - .../resources/views/layouts/app.blade.php | 55 - .../resources/views/product/index.blade.php | 18 - .../resources/views/product/show.blade.php | 21 - .../resources/views/welcome.blade.php | 7 - Chapter19/onlineStore/routes/api.php | 19 - Chapter19/onlineStore/routes/channels.php | 18 - Chapter19/onlineStore/routes/console.php | 19 - Chapter19/onlineStore/routes/web.php | 25 - Chapter19/onlineStore/storage/app/.gitignore | 3 - .../onlineStore/storage/app/public/.gitignore | 2 - .../onlineStore/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 - Chapter19/onlineStore/storage/logs/.gitignore | 2 - .../onlineStore/tests/CreatesApplication.php | 22 - .../onlineStore/tests/Feature/ExampleTest.php | 21 - Chapter19/onlineStore/tests/TestCase.php | 10 - .../onlineStore/tests/Unit/ExampleTest.php | 18 - Chapter19/onlineStore/webpack.mix.js | 17 - Chapter20/onlineStore/.editorconfig | 18 - Chapter20/onlineStore/.env.example | 52 - Chapter20/onlineStore/.gitattributes | 10 - Chapter20/onlineStore/.gitignore | 15 - Chapter20/onlineStore/.styleci.yml | 13 - Chapter20/onlineStore/README.md | 64 - Chapter20/onlineStore/app/Console/Kernel.php | 32 - .../onlineStore/app/Exceptions/Handler.php | 41 - .../Controllers/Admin/AdminHomeController.php | 16 - .../Admin/AdminProductController.php | 79 - .../app/Http/Controllers/Controller.php | 13 - .../app/Http/Controllers/HomeController.php | 25 - .../Http/Controllers/ProductController.php | 29 - Chapter20/onlineStore/app/Http/Kernel.php | 67 - .../app/Http/Middleware/Authenticate.php | 21 - .../app/Http/Middleware/EncryptCookies.php | 17 - .../PreventRequestsDuringMaintenance.php | 17 - .../Middleware/RedirectIfAuthenticated.php | 32 - .../app/Http/Middleware/TrimStrings.php | 19 - .../app/Http/Middleware/TrustHosts.php | 20 - .../app/Http/Middleware/TrustProxies.php | 28 - .../app/Http/Middleware/VerifyCsrfToken.php | 17 - Chapter20/onlineStore/app/Models/Product.php | 99 - Chapter20/onlineStore/app/Models/User.php | 44 - .../app/Providers/AppServiceProvider.php | 28 - .../app/Providers/AuthServiceProvider.php | 30 - .../Providers/BroadcastServiceProvider.php | 21 - .../app/Providers/EventServiceProvider.php | 32 - .../app/Providers/RouteServiceProvider.php | 63 - Chapter20/onlineStore/artisan | 53 - Chapter20/onlineStore/bootstrap/app.php | 55 - .../onlineStore/bootstrap/cache/.gitignore | 2 - Chapter20/onlineStore/composer.json | 63 - Chapter20/onlineStore/composer.lock | 7860 ---------------- Chapter20/onlineStore/config/app.php | 197 - Chapter20/onlineStore/config/auth.php | 111 - Chapter20/onlineStore/config/broadcasting.php | 67 - Chapter20/onlineStore/config/cache.php | 110 - Chapter20/onlineStore/config/cors.php | 34 - Chapter20/onlineStore/config/database.php | 147 - Chapter20/onlineStore/config/filesystems.php | 73 - Chapter20/onlineStore/config/hashing.php | 52 - Chapter20/onlineStore/config/logging.php | 119 - Chapter20/onlineStore/config/mail.php | 117 - Chapter20/onlineStore/config/queue.php | 93 - Chapter20/onlineStore/config/sanctum.php | 65 - Chapter20/onlineStore/config/services.php | 33 - Chapter20/onlineStore/config/session.php | 201 - Chapter20/onlineStore/config/view.php | 36 - Chapter20/onlineStore/database/.gitignore | 1 - .../database/factories/UserFactory.php | 42 - .../2014_10_12_000000_create_users_table.php | 36 - ...12_100000_create_password_resets_table.php | 32 - ..._08_19_000000_create_failed_jobs_table.php | 36 - ...01_create_personal_access_tokens_table.php | 36 - ...022_02_11_153916_create_products_table.php | 35 - .../database/seeders/DatabaseSeeder.php | 19 - Chapter20/onlineStore/lang/en.json | 7 - Chapter20/onlineStore/lang/en/auth.php | 20 - Chapter20/onlineStore/lang/en/pagination.php | 19 - Chapter20/onlineStore/lang/en/passwords.php | 22 - Chapter20/onlineStore/lang/en/validation.php | 163 - Chapter20/onlineStore/package.json | 18 - Chapter20/onlineStore/phpcs.xml | 10 - Chapter20/onlineStore/phpunit.xml | 31 - Chapter20/onlineStore/public/.htaccess | 21 - Chapter20/onlineStore/public/css/admin.css | 33 - Chapter20/onlineStore/public/css/app.css | 20 - Chapter20/onlineStore/public/favicon.ico | 0 Chapter20/onlineStore/public/img/game.png | Bin 25896 -> 0 bytes Chapter20/onlineStore/public/img/safe.png | Bin 19240 -> 0 bytes .../onlineStore/public/img/submarine.png | Bin 24330 -> 0 bytes .../onlineStore/public/img/undraw_profile.svg | 38 - Chapter20/onlineStore/public/index.php | 55 - Chapter20/onlineStore/public/robots.txt | 2 - Chapter20/onlineStore/resources/css/app.css | 0 Chapter20/onlineStore/resources/js/app.js | 1 - .../onlineStore/resources/js/bootstrap.js | 28 - .../views/admin/home/index.blade.php | 12 - .../views/admin/product/edit.blade.php | 61 - .../views/admin/product/index.blade.php | 98 - .../resources/views/home/about.blade.php | 15 - .../resources/views/home/index.blade.php | 15 - .../resources/views/layouts/admin.blade.php | 60 - .../resources/views/layouts/app.blade.php | 55 - .../resources/views/product/index.blade.php | 18 - .../resources/views/product/show.blade.php | 21 - .../resources/views/welcome.blade.php | 7 - Chapter20/onlineStore/routes/api.php | 19 - Chapter20/onlineStore/routes/channels.php | 18 - Chapter20/onlineStore/routes/console.php | 19 - Chapter20/onlineStore/routes/web.php | 25 - Chapter20/onlineStore/storage/app/.gitignore | 3 - .../onlineStore/storage/app/public/.gitignore | 2 - .../onlineStore/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 - Chapter20/onlineStore/storage/logs/.gitignore | 2 - .../onlineStore/tests/CreatesApplication.php | 22 - .../onlineStore/tests/Feature/ExampleTest.php | 21 - Chapter20/onlineStore/tests/TestCase.php | 10 - .../onlineStore/tests/Unit/ExampleTest.php | 18 - Chapter20/onlineStore/webpack.mix.js | 17 - Chapter21/onlineStore/.editorconfig | 18 - Chapter21/onlineStore/.env.example | 52 - Chapter21/onlineStore/.gitattributes | 10 - Chapter21/onlineStore/.gitignore | 15 - Chapter21/onlineStore/.styleci.yml | 13 - Chapter21/onlineStore/README.md | 64 - Chapter21/onlineStore/app/Console/Kernel.php | 32 - .../onlineStore/app/Exceptions/Handler.php | 41 - .../Controllers/Admin/AdminHomeController.php | 16 - .../Admin/AdminProductController.php | 79 - .../Auth/ConfirmPasswordController.php | 40 - .../Auth/ForgotPasswordController.php | 22 - .../Http/Controllers/Auth/LoginController.php | 40 - .../Controllers/Auth/RegisterController.php | 73 - .../Auth/ResetPasswordController.php | 30 - .../Auth/VerificationController.php | 42 - .../app/Http/Controllers/Controller.php | 13 - .../app/Http/Controllers/HomeController.php | 25 - .../Http/Controllers/ProductController.php | 29 - Chapter21/onlineStore/app/Http/Kernel.php | 67 - .../app/Http/Middleware/Authenticate.php | 21 - .../app/Http/Middleware/EncryptCookies.php | 17 - .../PreventRequestsDuringMaintenance.php | 17 - .../Middleware/RedirectIfAuthenticated.php | 32 - .../app/Http/Middleware/TrimStrings.php | 19 - .../app/Http/Middleware/TrustHosts.php | 20 - .../app/Http/Middleware/TrustProxies.php | 28 - .../app/Http/Middleware/VerifyCsrfToken.php | 17 - Chapter21/onlineStore/app/Models/Product.php | 99 - Chapter21/onlineStore/app/Models/User.php | 44 - .../app/Providers/AppServiceProvider.php | 28 - .../app/Providers/AuthServiceProvider.php | 30 - .../Providers/BroadcastServiceProvider.php | 21 - .../app/Providers/EventServiceProvider.php | 32 - .../app/Providers/RouteServiceProvider.php | 63 - Chapter21/onlineStore/artisan | 53 - Chapter21/onlineStore/bootstrap/app.php | 55 - .../onlineStore/bootstrap/cache/.gitignore | 2 - Chapter21/onlineStore/composer.json | 64 - Chapter21/onlineStore/composer.lock | 7921 ----------------- Chapter21/onlineStore/config/app.php | 197 - Chapter21/onlineStore/config/auth.php | 111 - Chapter21/onlineStore/config/broadcasting.php | 67 - Chapter21/onlineStore/config/cache.php | 110 - Chapter21/onlineStore/config/cors.php | 34 - Chapter21/onlineStore/config/database.php | 147 - Chapter21/onlineStore/config/filesystems.php | 73 - Chapter21/onlineStore/config/hashing.php | 52 - Chapter21/onlineStore/config/logging.php | 119 - Chapter21/onlineStore/config/mail.php | 117 - Chapter21/onlineStore/config/queue.php | 93 - Chapter21/onlineStore/config/sanctum.php | 65 - Chapter21/onlineStore/config/services.php | 33 - Chapter21/onlineStore/config/session.php | 201 - Chapter21/onlineStore/config/view.php | 36 - Chapter21/onlineStore/database/.gitignore | 1 - .../database/factories/UserFactory.php | 42 - .../2014_10_12_000000_create_users_table.php | 36 - ...12_100000_create_password_resets_table.php | 32 - ..._08_19_000000_create_failed_jobs_table.php | 36 - ...01_create_personal_access_tokens_table.php | 36 - ...022_02_11_153916_create_products_table.php | 35 - .../database/seeders/DatabaseSeeder.php | 19 - Chapter21/onlineStore/lang/en.json | 7 - Chapter21/onlineStore/lang/en/auth.php | 20 - Chapter21/onlineStore/lang/en/pagination.php | 19 - Chapter21/onlineStore/lang/en/passwords.php | 22 - Chapter21/onlineStore/lang/en/validation.php | 163 - Chapter21/onlineStore/package.json | 22 - Chapter21/onlineStore/phpcs.xml | 10 - Chapter21/onlineStore/phpunit.xml | 31 - Chapter21/onlineStore/public/.htaccess | 21 - Chapter21/onlineStore/public/css/admin.css | 33 - Chapter21/onlineStore/public/css/app.css | 20 - Chapter21/onlineStore/public/favicon.ico | 0 Chapter21/onlineStore/public/img/game.png | Bin 25896 -> 0 bytes Chapter21/onlineStore/public/img/safe.png | Bin 19240 -> 0 bytes .../onlineStore/public/img/submarine.png | Bin 24330 -> 0 bytes .../onlineStore/public/img/undraw_profile.svg | 38 - Chapter21/onlineStore/public/index.php | 55 - Chapter21/onlineStore/public/robots.txt | 2 - Chapter21/onlineStore/resources/css/app.css | 0 Chapter21/onlineStore/resources/js/app.js | 1 - .../onlineStore/resources/js/bootstrap.js | 32 - .../resources/sass/_variables.scss | 7 - Chapter21/onlineStore/resources/sass/app.scss | 8 - .../views/admin/home/index.blade.php | 12 - .../views/admin/product/edit.blade.php | 61 - .../views/admin/product/index.blade.php | 98 - .../resources/views/auth/login.blade.php | 73 - .../views/auth/passwords/confirm.blade.php | 49 - .../views/auth/passwords/email.blade.php | 47 - .../views/auth/passwords/reset.blade.php | 65 - .../resources/views/auth/register.blade.php | 77 - .../resources/views/auth/verify.blade.php | 28 - .../resources/views/home.blade.php | 23 - .../resources/views/home/about.blade.php | 15 - .../resources/views/home/index.blade.php | 15 - .../resources/views/layouts/admin.blade.php | 60 - .../resources/views/layouts/app.blade.php | 66 - .../resources/views/product/index.blade.php | 18 - .../resources/views/product/show.blade.php | 21 - .../resources/views/welcome.blade.php | 7 - Chapter21/onlineStore/routes/api.php | 19 - Chapter21/onlineStore/routes/channels.php | 18 - Chapter21/onlineStore/routes/console.php | 19 - Chapter21/onlineStore/routes/web.php | 27 - Chapter21/onlineStore/storage/app/.gitignore | 3 - .../onlineStore/storage/app/public/.gitignore | 2 - .../onlineStore/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 - Chapter21/onlineStore/storage/logs/.gitignore | 2 - .../onlineStore/tests/CreatesApplication.php | 22 - .../onlineStore/tests/Feature/ExampleTest.php | 21 - Chapter21/onlineStore/tests/TestCase.php | 10 - .../onlineStore/tests/Unit/ExampleTest.php | 18 - Chapter21/onlineStore/webpack.mix.js | 16 - Chapter22/onlineStore/.editorconfig | 18 - Chapter22/onlineStore/.env.example | 52 - Chapter22/onlineStore/.gitattributes | 10 - Chapter22/onlineStore/.gitignore | 15 - Chapter22/onlineStore/.styleci.yml | 13 - Chapter22/onlineStore/README.md | 64 - Chapter22/onlineStore/app/Console/Kernel.php | 32 - .../onlineStore/app/Exceptions/Handler.php | 41 - .../Controllers/Admin/AdminHomeController.php | 16 - .../Admin/AdminProductController.php | 79 - .../Auth/ConfirmPasswordController.php | 40 - .../Auth/ForgotPasswordController.php | 22 - .../Http/Controllers/Auth/LoginController.php | 40 - .../Controllers/Auth/RegisterController.php | 74 - .../Auth/ResetPasswordController.php | 30 - .../Auth/VerificationController.php | 42 - .../app/Http/Controllers/Controller.php | 13 - .../app/Http/Controllers/HomeController.php | 25 - .../Http/Controllers/ProductController.php | 29 - Chapter22/onlineStore/app/Http/Kernel.php | 67 - .../app/Http/Middleware/Authenticate.php | 21 - .../app/Http/Middleware/EncryptCookies.php | 17 - .../PreventRequestsDuringMaintenance.php | 17 - .../Middleware/RedirectIfAuthenticated.php | 32 - .../app/Http/Middleware/TrimStrings.php | 19 - .../app/Http/Middleware/TrustHosts.php | 20 - .../app/Http/Middleware/TrustProxies.php | 28 - .../app/Http/Middleware/VerifyCsrfToken.php | 17 - Chapter22/onlineStore/app/Models/Product.php | 99 - Chapter22/onlineStore/app/Models/User.php | 139 - .../app/Providers/AppServiceProvider.php | 28 - .../app/Providers/AuthServiceProvider.php | 30 - .../Providers/BroadcastServiceProvider.php | 21 - .../app/Providers/EventServiceProvider.php | 32 - .../app/Providers/RouteServiceProvider.php | 63 - Chapter22/onlineStore/artisan | 53 - Chapter22/onlineStore/bootstrap/app.php | 55 - .../onlineStore/bootstrap/cache/.gitignore | 2 - Chapter22/onlineStore/composer.json | 64 - Chapter22/onlineStore/composer.lock | 7921 ----------------- Chapter22/onlineStore/config/app.php | 197 - Chapter22/onlineStore/config/auth.php | 111 - Chapter22/onlineStore/config/broadcasting.php | 67 - Chapter22/onlineStore/config/cache.php | 110 - Chapter22/onlineStore/config/cors.php | 34 - Chapter22/onlineStore/config/database.php | 147 - Chapter22/onlineStore/config/filesystems.php | 73 - Chapter22/onlineStore/config/hashing.php | 52 - Chapter22/onlineStore/config/logging.php | 119 - Chapter22/onlineStore/config/mail.php | 117 - Chapter22/onlineStore/config/queue.php | 93 - Chapter22/onlineStore/config/sanctum.php | 65 - Chapter22/onlineStore/config/services.php | 33 - Chapter22/onlineStore/config/session.php | 201 - Chapter22/onlineStore/config/view.php | 36 - Chapter22/onlineStore/database/.gitignore | 1 - .../database/factories/UserFactory.php | 42 - .../2014_10_12_000000_create_users_table.php | 36 - ...12_100000_create_password_resets_table.php | 32 - ..._08_19_000000_create_failed_jobs_table.php | 36 - ...01_create_personal_access_tokens_table.php | 36 - ...022_02_11_153916_create_products_table.php | 35 - .../2022_02_12_140820_alter_users_table.php | 34 - .../database/seeders/DatabaseSeeder.php | 19 - Chapter22/onlineStore/lang/en.json | 7 - Chapter22/onlineStore/lang/en/auth.php | 20 - Chapter22/onlineStore/lang/en/pagination.php | 19 - Chapter22/onlineStore/lang/en/passwords.php | 22 - Chapter22/onlineStore/lang/en/validation.php | 163 - Chapter22/onlineStore/package.json | 22 - Chapter22/onlineStore/phpcs.xml | 10 - Chapter22/onlineStore/phpunit.xml | 31 - Chapter22/onlineStore/public/.htaccess | 21 - Chapter22/onlineStore/public/css/admin.css | 33 - Chapter22/onlineStore/public/css/app.css | 20 - Chapter22/onlineStore/public/favicon.ico | 0 Chapter22/onlineStore/public/img/game.png | Bin 25896 -> 0 bytes Chapter22/onlineStore/public/img/safe.png | Bin 19240 -> 0 bytes .../onlineStore/public/img/submarine.png | Bin 24330 -> 0 bytes .../onlineStore/public/img/undraw_profile.svg | 38 - Chapter22/onlineStore/public/index.php | 55 - Chapter22/onlineStore/public/robots.txt | 2 - Chapter22/onlineStore/resources/css/app.css | 0 Chapter22/onlineStore/resources/js/app.js | 1 - .../onlineStore/resources/js/bootstrap.js | 32 - .../resources/sass/_variables.scss | 7 - Chapter22/onlineStore/resources/sass/app.scss | 8 - .../views/admin/home/index.blade.php | 12 - .../views/admin/product/edit.blade.php | 61 - .../views/admin/product/index.blade.php | 98 - .../resources/views/auth/login.blade.php | 73 - .../views/auth/passwords/confirm.blade.php | 49 - .../views/auth/passwords/email.blade.php | 47 - .../views/auth/passwords/reset.blade.php | 65 - .../resources/views/auth/register.blade.php | 77 - .../resources/views/auth/verify.blade.php | 28 - .../resources/views/home.blade.php | 23 - .../resources/views/home/about.blade.php | 15 - .../resources/views/home/index.blade.php | 15 - .../resources/views/layouts/admin.blade.php | 60 - .../resources/views/layouts/app.blade.php | 66 - .../resources/views/product/index.blade.php | 18 - .../resources/views/product/show.blade.php | 21 - .../resources/views/welcome.blade.php | 7 - Chapter22/onlineStore/routes/api.php | 19 - Chapter22/onlineStore/routes/channels.php | 18 - Chapter22/onlineStore/routes/console.php | 19 - Chapter22/onlineStore/routes/web.php | 27 - Chapter22/onlineStore/storage/app/.gitignore | 3 - .../onlineStore/storage/app/public/.gitignore | 2 - .../onlineStore/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 - Chapter22/onlineStore/storage/logs/.gitignore | 2 - .../onlineStore/tests/CreatesApplication.php | 22 - .../onlineStore/tests/Feature/ExampleTest.php | 21 - Chapter22/onlineStore/tests/TestCase.php | 10 - .../onlineStore/tests/Unit/ExampleTest.php | 18 - Chapter22/onlineStore/webpack.mix.js | 16 - Chapter23/onlineStore/.editorconfig | 18 - Chapter23/onlineStore/.env.example | 52 - Chapter23/onlineStore/.gitattributes | 10 - Chapter23/onlineStore/.gitignore | 15 - Chapter23/onlineStore/.styleci.yml | 13 - Chapter23/onlineStore/README.md | 64 - Chapter23/onlineStore/app/Console/Kernel.php | 32 - .../onlineStore/app/Exceptions/Handler.php | 41 - .../Controllers/Admin/AdminHomeController.php | 16 - .../Admin/AdminProductController.php | 79 - .../Auth/ConfirmPasswordController.php | 40 - .../Auth/ForgotPasswordController.php | 22 - .../Http/Controllers/Auth/LoginController.php | 40 - .../Controllers/Auth/RegisterController.php | 74 - .../Auth/ResetPasswordController.php | 30 - .../Auth/VerificationController.php | 42 - .../app/Http/Controllers/Controller.php | 13 - .../app/Http/Controllers/HomeController.php | 25 - .../Http/Controllers/ProductController.php | 29 - Chapter23/onlineStore/app/Http/Kernel.php | 68 - .../Http/Middleware/AdminAuthMiddleware.php | 26 - .../app/Http/Middleware/Authenticate.php | 21 - .../app/Http/Middleware/EncryptCookies.php | 17 - .../PreventRequestsDuringMaintenance.php | 17 - .../Middleware/RedirectIfAuthenticated.php | 32 - .../app/Http/Middleware/TrimStrings.php | 19 - .../app/Http/Middleware/TrustHosts.php | 20 - .../app/Http/Middleware/TrustProxies.php | 28 - .../app/Http/Middleware/VerifyCsrfToken.php | 17 - Chapter23/onlineStore/app/Models/Product.php | 99 - Chapter23/onlineStore/app/Models/User.php | 139 - .../app/Providers/AppServiceProvider.php | 28 - .../app/Providers/AuthServiceProvider.php | 30 - .../Providers/BroadcastServiceProvider.php | 21 - .../app/Providers/EventServiceProvider.php | 32 - .../app/Providers/RouteServiceProvider.php | 63 - Chapter23/onlineStore/artisan | 53 - Chapter23/onlineStore/bootstrap/app.php | 55 - .../onlineStore/bootstrap/cache/.gitignore | 2 - Chapter23/onlineStore/composer.json | 64 - Chapter23/onlineStore/composer.lock | 7921 ----------------- Chapter23/onlineStore/config/app.php | 197 - Chapter23/onlineStore/config/auth.php | 111 - Chapter23/onlineStore/config/broadcasting.php | 67 - Chapter23/onlineStore/config/cache.php | 110 - Chapter23/onlineStore/config/cors.php | 34 - Chapter23/onlineStore/config/database.php | 147 - Chapter23/onlineStore/config/filesystems.php | 73 - Chapter23/onlineStore/config/hashing.php | 52 - Chapter23/onlineStore/config/logging.php | 119 - Chapter23/onlineStore/config/mail.php | 117 - Chapter23/onlineStore/config/queue.php | 93 - Chapter23/onlineStore/config/sanctum.php | 65 - Chapter23/onlineStore/config/services.php | 33 - Chapter23/onlineStore/config/session.php | 201 - Chapter23/onlineStore/config/view.php | 36 - Chapter23/onlineStore/database/.gitignore | 1 - .../database/factories/UserFactory.php | 42 - .../2014_10_12_000000_create_users_table.php | 36 - ...12_100000_create_password_resets_table.php | 32 - ..._08_19_000000_create_failed_jobs_table.php | 36 - ...01_create_personal_access_tokens_table.php | 36 - ...022_02_11_153916_create_products_table.php | 35 - .../2022_02_12_140820_alter_users_table.php | 34 - .../database/seeders/DatabaseSeeder.php | 19 - Chapter23/onlineStore/lang/en.json | 7 - Chapter23/onlineStore/lang/en/auth.php | 20 - Chapter23/onlineStore/lang/en/pagination.php | 19 - Chapter23/onlineStore/lang/en/passwords.php | 22 - Chapter23/onlineStore/lang/en/validation.php | 163 - Chapter23/onlineStore/package.json | 22 - Chapter23/onlineStore/phpcs.xml | 10 - Chapter23/onlineStore/phpunit.xml | 31 - Chapter23/onlineStore/public/.htaccess | 21 - Chapter23/onlineStore/public/css/admin.css | 33 - Chapter23/onlineStore/public/css/app.css | 20 - Chapter23/onlineStore/public/favicon.ico | 0 Chapter23/onlineStore/public/img/game.png | Bin 25896 -> 0 bytes Chapter23/onlineStore/public/img/safe.png | Bin 19240 -> 0 bytes .../onlineStore/public/img/submarine.png | Bin 24330 -> 0 bytes .../onlineStore/public/img/undraw_profile.svg | 38 - Chapter23/onlineStore/public/index.php | 55 - Chapter23/onlineStore/public/robots.txt | 2 - Chapter23/onlineStore/resources/css/app.css | 0 Chapter23/onlineStore/resources/js/app.js | 1 - .../onlineStore/resources/js/bootstrap.js | 32 - .../resources/sass/_variables.scss | 7 - Chapter23/onlineStore/resources/sass/app.scss | 8 - .../views/admin/home/index.blade.php | 12 - .../views/admin/product/edit.blade.php | 61 - .../views/admin/product/index.blade.php | 98 - .../resources/views/auth/login.blade.php | 73 - .../views/auth/passwords/confirm.blade.php | 49 - .../views/auth/passwords/email.blade.php | 47 - .../views/auth/passwords/reset.blade.php | 65 - .../resources/views/auth/register.blade.php | 77 - .../resources/views/auth/verify.blade.php | 28 - .../resources/views/home.blade.php | 23 - .../resources/views/home/about.blade.php | 15 - .../resources/views/home/index.blade.php | 15 - .../resources/views/layouts/admin.blade.php | 60 - .../resources/views/layouts/app.blade.php | 66 - .../resources/views/product/index.blade.php | 18 - .../resources/views/product/show.blade.php | 21 - .../resources/views/welcome.blade.php | 7 - Chapter23/onlineStore/routes/api.php | 19 - Chapter23/onlineStore/routes/channels.php | 18 - Chapter23/onlineStore/routes/console.php | 19 - Chapter23/onlineStore/routes/web.php | 30 - Chapter23/onlineStore/storage/app/.gitignore | 3 - .../onlineStore/storage/app/public/.gitignore | 2 - .../onlineStore/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 - Chapter23/onlineStore/storage/logs/.gitignore | 2 - .../onlineStore/tests/CreatesApplication.php | 22 - .../onlineStore/tests/Feature/ExampleTest.php | 21 - Chapter23/onlineStore/tests/TestCase.php | 10 - .../onlineStore/tests/Unit/ExampleTest.php | 18 - Chapter23/onlineStore/webpack.mix.js | 16 - Chapter25/onlineStore/.editorconfig | 18 - Chapter25/onlineStore/.env.example | 52 - Chapter25/onlineStore/.gitattributes | 10 - Chapter25/onlineStore/.gitignore | 15 - Chapter25/onlineStore/.styleci.yml | 13 - Chapter25/onlineStore/README.md | 64 - Chapter25/onlineStore/app/Console/Kernel.php | 32 - .../onlineStore/app/Exceptions/Handler.php | 41 - .../Controllers/Admin/AdminHomeController.php | 16 - .../Admin/AdminProductController.php | 79 - .../Auth/ConfirmPasswordController.php | 40 - .../Auth/ForgotPasswordController.php | 22 - .../Http/Controllers/Auth/LoginController.php | 40 - .../Controllers/Auth/RegisterController.php | 74 - .../Auth/ResetPasswordController.php | 30 - .../Auth/VerificationController.php | 42 - .../app/Http/Controllers/CartController.php | 43 - .../app/Http/Controllers/Controller.php | 13 - .../app/Http/Controllers/HomeController.php | 25 - .../Http/Controllers/ProductController.php | 29 - Chapter25/onlineStore/app/Http/Kernel.php | 68 - .../Http/Middleware/AdminAuthMiddleware.php | 26 - .../app/Http/Middleware/Authenticate.php | 21 - .../app/Http/Middleware/EncryptCookies.php | 17 - .../PreventRequestsDuringMaintenance.php | 17 - .../Middleware/RedirectIfAuthenticated.php | 32 - .../app/Http/Middleware/TrimStrings.php | 19 - .../app/Http/Middleware/TrustHosts.php | 20 - .../app/Http/Middleware/TrustProxies.php | 28 - .../app/Http/Middleware/VerifyCsrfToken.php | 17 - Chapter25/onlineStore/app/Models/Product.php | 109 - Chapter25/onlineStore/app/Models/User.php | 139 - .../app/Providers/AppServiceProvider.php | 28 - .../app/Providers/AuthServiceProvider.php | 30 - .../Providers/BroadcastServiceProvider.php | 21 - .../app/Providers/EventServiceProvider.php | 32 - .../app/Providers/RouteServiceProvider.php | 63 - Chapter25/onlineStore/artisan | 53 - Chapter25/onlineStore/bootstrap/app.php | 55 - .../onlineStore/bootstrap/cache/.gitignore | 2 - Chapter25/onlineStore/composer.json | 64 - Chapter25/onlineStore/composer.lock | 7921 ----------------- Chapter25/onlineStore/config/app.php | 197 - Chapter25/onlineStore/config/auth.php | 111 - Chapter25/onlineStore/config/broadcasting.php | 67 - Chapter25/onlineStore/config/cache.php | 110 - Chapter25/onlineStore/config/cors.php | 34 - Chapter25/onlineStore/config/database.php | 147 - Chapter25/onlineStore/config/filesystems.php | 73 - Chapter25/onlineStore/config/hashing.php | 52 - Chapter25/onlineStore/config/logging.php | 119 - Chapter25/onlineStore/config/mail.php | 117 - Chapter25/onlineStore/config/queue.php | 93 - Chapter25/onlineStore/config/sanctum.php | 65 - Chapter25/onlineStore/config/services.php | 33 - Chapter25/onlineStore/config/session.php | 201 - Chapter25/onlineStore/config/view.php | 36 - Chapter25/onlineStore/database/.gitignore | 1 - .../database/factories/UserFactory.php | 42 - .../2014_10_12_000000_create_users_table.php | 36 - ...12_100000_create_password_resets_table.php | 32 - ..._08_19_000000_create_failed_jobs_table.php | 36 - ...01_create_personal_access_tokens_table.php | 36 - ...022_02_11_153916_create_products_table.php | 35 - .../2022_02_12_140820_alter_users_table.php | 34 - .../database/seeders/DatabaseSeeder.php | 19 - Chapter25/onlineStore/lang/en.json | 7 - Chapter25/onlineStore/lang/en/auth.php | 20 - Chapter25/onlineStore/lang/en/pagination.php | 19 - Chapter25/onlineStore/lang/en/passwords.php | 22 - Chapter25/onlineStore/lang/en/validation.php | 163 - Chapter25/onlineStore/package.json | 22 - Chapter25/onlineStore/phpcs.xml | 10 - Chapter25/onlineStore/phpunit.xml | 31 - Chapter25/onlineStore/public/.htaccess | 21 - Chapter25/onlineStore/public/css/admin.css | 33 - Chapter25/onlineStore/public/css/app.css | 20 - Chapter25/onlineStore/public/favicon.ico | 0 Chapter25/onlineStore/public/img/game.png | Bin 25896 -> 0 bytes Chapter25/onlineStore/public/img/safe.png | Bin 19240 -> 0 bytes .../onlineStore/public/img/submarine.png | Bin 24330 -> 0 bytes .../onlineStore/public/img/undraw_profile.svg | 38 - Chapter25/onlineStore/public/index.php | 55 - Chapter25/onlineStore/public/robots.txt | 2 - Chapter25/onlineStore/resources/css/app.css | 0 Chapter25/onlineStore/resources/js/app.js | 1 - .../onlineStore/resources/js/bootstrap.js | 32 - .../resources/sass/_variables.scss | 7 - Chapter25/onlineStore/resources/sass/app.scss | 8 - .../views/admin/home/index.blade.php | 12 - .../views/admin/product/edit.blade.php | 61 - .../views/admin/product/index.blade.php | 98 - .../resources/views/auth/login.blade.php | 73 - .../views/auth/passwords/confirm.blade.php | 49 - .../views/auth/passwords/email.blade.php | 47 - .../views/auth/passwords/reset.blade.php | 65 - .../resources/views/auth/register.blade.php | 77 - .../resources/views/auth/verify.blade.php | 28 - .../resources/views/cart/index.blade.php | 43 - .../resources/views/home.blade.php | 23 - .../resources/views/home/about.blade.php | 15 - .../resources/views/home/index.blade.php | 15 - .../resources/views/layouts/admin.blade.php | 60 - .../resources/views/layouts/app.blade.php | 67 - .../resources/views/product/index.blade.php | 18 - .../resources/views/product/show.blade.php | 36 - .../resources/views/welcome.blade.php | 7 - Chapter25/onlineStore/routes/api.php | 19 - Chapter25/onlineStore/routes/channels.php | 18 - Chapter25/onlineStore/routes/console.php | 19 - Chapter25/onlineStore/routes/web.php | 34 - Chapter25/onlineStore/storage/app/.gitignore | 3 - .../onlineStore/storage/app/public/.gitignore | 2 - .../onlineStore/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 - Chapter25/onlineStore/storage/logs/.gitignore | 2 - .../onlineStore/tests/CreatesApplication.php | 22 - .../onlineStore/tests/Feature/ExampleTest.php | 21 - Chapter25/onlineStore/tests/TestCase.php | 10 - .../onlineStore/tests/Unit/ExampleTest.php | 18 - Chapter25/onlineStore/webpack.mix.js | 16 - Chapter26/onlineStore/.editorconfig | 18 - Chapter26/onlineStore/.env.example | 52 - Chapter26/onlineStore/.gitattributes | 10 - Chapter26/onlineStore/.gitignore | 15 - Chapter26/onlineStore/.styleci.yml | 13 - Chapter26/onlineStore/README.md | 64 - Chapter26/onlineStore/app/Console/Kernel.php | 32 - .../onlineStore/app/Exceptions/Handler.php | 41 - .../Controllers/Admin/AdminHomeController.php | 16 - .../Admin/AdminProductController.php | 79 - .../Auth/ConfirmPasswordController.php | 40 - .../Auth/ForgotPasswordController.php | 22 - .../Http/Controllers/Auth/LoginController.php | 40 - .../Controllers/Auth/RegisterController.php | 74 - .../Auth/ResetPasswordController.php | 30 - .../Auth/VerificationController.php | 42 - .../app/Http/Controllers/CartController.php | 43 - .../app/Http/Controllers/Controller.php | 13 - .../app/Http/Controllers/HomeController.php | 25 - .../Http/Controllers/ProductController.php | 29 - Chapter26/onlineStore/app/Http/Kernel.php | 68 - .../Http/Middleware/AdminAuthMiddleware.php | 26 - .../app/Http/Middleware/Authenticate.php | 21 - .../app/Http/Middleware/EncryptCookies.php | 17 - .../PreventRequestsDuringMaintenance.php | 17 - .../Middleware/RedirectIfAuthenticated.php | 32 - .../app/Http/Middleware/TrimStrings.php | 19 - .../app/Http/Middleware/TrustHosts.php | 20 - .../app/Http/Middleware/TrustProxies.php | 28 - .../app/Http/Middleware/VerifyCsrfToken.php | 17 - Chapter26/onlineStore/app/Models/Item.php | 133 - Chapter26/onlineStore/app/Models/Order.php | 109 - Chapter26/onlineStore/app/Models/Product.php | 126 - Chapter26/onlineStore/app/Models/User.php | 156 - .../app/Providers/AppServiceProvider.php | 28 - .../app/Providers/AuthServiceProvider.php | 30 - .../Providers/BroadcastServiceProvider.php | 21 - .../app/Providers/EventServiceProvider.php | 32 - .../app/Providers/RouteServiceProvider.php | 63 - Chapter26/onlineStore/artisan | 53 - Chapter26/onlineStore/bootstrap/app.php | 55 - .../onlineStore/bootstrap/cache/.gitignore | 2 - Chapter26/onlineStore/composer.json | 64 - Chapter26/onlineStore/composer.lock | 7921 ----------------- Chapter26/onlineStore/config/app.php | 197 - Chapter26/onlineStore/config/auth.php | 111 - Chapter26/onlineStore/config/broadcasting.php | 67 - Chapter26/onlineStore/config/cache.php | 110 - Chapter26/onlineStore/config/cors.php | 34 - Chapter26/onlineStore/config/database.php | 147 - Chapter26/onlineStore/config/filesystems.php | 73 - Chapter26/onlineStore/config/hashing.php | 52 - Chapter26/onlineStore/config/logging.php | 119 - Chapter26/onlineStore/config/mail.php | 117 - Chapter26/onlineStore/config/queue.php | 93 - Chapter26/onlineStore/config/sanctum.php | 65 - Chapter26/onlineStore/config/services.php | 33 - Chapter26/onlineStore/config/session.php | 201 - Chapter26/onlineStore/config/view.php | 36 - Chapter26/onlineStore/database/.gitignore | 1 - .../database/factories/UserFactory.php | 42 - .../2014_10_12_000000_create_users_table.php | 36 - ...12_100000_create_password_resets_table.php | 32 - ..._08_19_000000_create_failed_jobs_table.php | 36 - ...01_create_personal_access_tokens_table.php | 36 - ...022_02_11_153916_create_products_table.php | 35 - .../2022_02_12_140820_alter_users_table.php | 34 - .../2022_02_12_152713_create_orders_table.php | 34 - .../2022_02_12_152850_create_items_table.php | 37 - .../database/seeders/DatabaseSeeder.php | 19 - Chapter26/onlineStore/lang/en.json | 7 - Chapter26/onlineStore/lang/en/auth.php | 20 - Chapter26/onlineStore/lang/en/pagination.php | 19 - Chapter26/onlineStore/lang/en/passwords.php | 22 - Chapter26/onlineStore/lang/en/validation.php | 163 - Chapter26/onlineStore/package.json | 22 - Chapter26/onlineStore/phpcs.xml | 10 - Chapter26/onlineStore/phpunit.xml | 31 - Chapter26/onlineStore/public/.htaccess | 21 - Chapter26/onlineStore/public/css/admin.css | 33 - Chapter26/onlineStore/public/css/app.css | 20 - Chapter26/onlineStore/public/favicon.ico | 0 Chapter26/onlineStore/public/img/game.png | Bin 25896 -> 0 bytes Chapter26/onlineStore/public/img/safe.png | Bin 19240 -> 0 bytes .../onlineStore/public/img/submarine.png | Bin 24330 -> 0 bytes .../onlineStore/public/img/undraw_profile.svg | 38 - Chapter26/onlineStore/public/index.php | 55 - Chapter26/onlineStore/public/robots.txt | 2 - Chapter26/onlineStore/resources/css/app.css | 0 Chapter26/onlineStore/resources/js/app.js | 1 - .../onlineStore/resources/js/bootstrap.js | 32 - .../resources/sass/_variables.scss | 7 - Chapter26/onlineStore/resources/sass/app.scss | 8 - .../views/admin/home/index.blade.php | 12 - .../views/admin/product/edit.blade.php | 61 - .../views/admin/product/index.blade.php | 98 - .../resources/views/auth/login.blade.php | 73 - .../views/auth/passwords/confirm.blade.php | 49 - .../views/auth/passwords/email.blade.php | 47 - .../views/auth/passwords/reset.blade.php | 65 - .../resources/views/auth/register.blade.php | 77 - .../resources/views/auth/verify.blade.php | 28 - .../resources/views/cart/index.blade.php | 43 - .../resources/views/home.blade.php | 23 - .../resources/views/home/about.blade.php | 15 - .../resources/views/home/index.blade.php | 15 - .../resources/views/layouts/admin.blade.php | 60 - .../resources/views/layouts/app.blade.php | 67 - .../resources/views/product/index.blade.php | 18 - .../resources/views/product/show.blade.php | 36 - .../resources/views/welcome.blade.php | 7 - Chapter26/onlineStore/routes/api.php | 19 - Chapter26/onlineStore/routes/channels.php | 18 - Chapter26/onlineStore/routes/console.php | 19 - Chapter26/onlineStore/routes/web.php | 34 - Chapter26/onlineStore/storage/app/.gitignore | 3 - .../onlineStore/storage/app/public/.gitignore | 2 - .../onlineStore/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 - Chapter26/onlineStore/storage/logs/.gitignore | 2 - .../onlineStore/tests/CreatesApplication.php | 22 - .../onlineStore/tests/Feature/ExampleTest.php | 21 - Chapter26/onlineStore/tests/TestCase.php | 10 - .../onlineStore/tests/Unit/ExampleTest.php | 18 - Chapter26/onlineStore/webpack.mix.js | 16 - Chapter27/onlineStore/.editorconfig | 18 - Chapter27/onlineStore/.env.example | 52 - Chapter27/onlineStore/.gitattributes | 10 - Chapter27/onlineStore/.gitignore | 15 - Chapter27/onlineStore/.styleci.yml | 13 - Chapter27/onlineStore/README.md | 64 - Chapter27/onlineStore/app/Console/Kernel.php | 32 - .../onlineStore/app/Exceptions/Handler.php | 41 - .../Controllers/Admin/AdminHomeController.php | 16 - .../Admin/AdminProductController.php | 79 - .../Auth/ConfirmPasswordController.php | 40 - .../Auth/ForgotPasswordController.php | 22 - .../Http/Controllers/Auth/LoginController.php | 40 - .../Controllers/Auth/RegisterController.php | 74 - .../Auth/ResetPasswordController.php | 30 - .../Auth/VerificationController.php | 42 - .../app/Http/Controllers/CartController.php | 87 - .../app/Http/Controllers/Controller.php | 13 - .../app/Http/Controllers/HomeController.php | 25 - .../Http/Controllers/ProductController.php | 29 - Chapter27/onlineStore/app/Http/Kernel.php | 68 - .../Http/Middleware/AdminAuthMiddleware.php | 26 - .../app/Http/Middleware/Authenticate.php | 21 - .../app/Http/Middleware/EncryptCookies.php | 17 - .../PreventRequestsDuringMaintenance.php | 17 - .../Middleware/RedirectIfAuthenticated.php | 32 - .../app/Http/Middleware/TrimStrings.php | 19 - .../app/Http/Middleware/TrustHosts.php | 20 - .../app/Http/Middleware/TrustProxies.php | 28 - .../app/Http/Middleware/VerifyCsrfToken.php | 17 - Chapter27/onlineStore/app/Models/Item.php | 133 - Chapter27/onlineStore/app/Models/Order.php | 109 - Chapter27/onlineStore/app/Models/Product.php | 126 - Chapter27/onlineStore/app/Models/User.php | 156 - .../app/Providers/AppServiceProvider.php | 28 - .../app/Providers/AuthServiceProvider.php | 30 - .../Providers/BroadcastServiceProvider.php | 21 - .../app/Providers/EventServiceProvider.php | 32 - .../app/Providers/RouteServiceProvider.php | 63 - Chapter27/onlineStore/artisan | 53 - Chapter27/onlineStore/bootstrap/app.php | 55 - .../onlineStore/bootstrap/cache/.gitignore | 2 - Chapter27/onlineStore/composer.json | 64 - Chapter27/onlineStore/composer.lock | 7921 ----------------- Chapter27/onlineStore/config/app.php | 197 - Chapter27/onlineStore/config/auth.php | 111 - Chapter27/onlineStore/config/broadcasting.php | 67 - Chapter27/onlineStore/config/cache.php | 110 - Chapter27/onlineStore/config/cors.php | 34 - Chapter27/onlineStore/config/database.php | 147 - Chapter27/onlineStore/config/filesystems.php | 73 - Chapter27/onlineStore/config/hashing.php | 52 - Chapter27/onlineStore/config/logging.php | 119 - Chapter27/onlineStore/config/mail.php | 117 - Chapter27/onlineStore/config/queue.php | 93 - Chapter27/onlineStore/config/sanctum.php | 65 - Chapter27/onlineStore/config/services.php | 33 - Chapter27/onlineStore/config/session.php | 201 - Chapter27/onlineStore/config/view.php | 36 - Chapter27/onlineStore/database/.gitignore | 1 - .../database/factories/UserFactory.php | 42 - .../2014_10_12_000000_create_users_table.php | 36 - ...12_100000_create_password_resets_table.php | 32 - ..._08_19_000000_create_failed_jobs_table.php | 36 - ...01_create_personal_access_tokens_table.php | 36 - ...022_02_11_153916_create_products_table.php | 35 - .../2022_02_12_140820_alter_users_table.php | 34 - .../2022_02_12_152713_create_orders_table.php | 34 - .../2022_02_12_152850_create_items_table.php | 37 - .../database/seeders/DatabaseSeeder.php | 19 - Chapter27/onlineStore/lang/en.json | 7 - Chapter27/onlineStore/lang/en/auth.php | 20 - Chapter27/onlineStore/lang/en/pagination.php | 19 - Chapter27/onlineStore/lang/en/passwords.php | 22 - Chapter27/onlineStore/lang/en/validation.php | 163 - Chapter27/onlineStore/package.json | 22 - Chapter27/onlineStore/phpcs.xml | 10 - Chapter27/onlineStore/phpunit.xml | 31 - Chapter27/onlineStore/public/.htaccess | 21 - Chapter27/onlineStore/public/css/admin.css | 33 - Chapter27/onlineStore/public/css/app.css | 20 - Chapter27/onlineStore/public/favicon.ico | 0 Chapter27/onlineStore/public/img/game.png | Bin 25896 -> 0 bytes Chapter27/onlineStore/public/img/safe.png | Bin 19240 -> 0 bytes .../onlineStore/public/img/submarine.png | Bin 24330 -> 0 bytes .../onlineStore/public/img/undraw_profile.svg | 38 - Chapter27/onlineStore/public/index.php | 55 - Chapter27/onlineStore/public/robots.txt | 2 - Chapter27/onlineStore/resources/css/app.css | 0 Chapter27/onlineStore/resources/js/app.js | 1 - .../onlineStore/resources/js/bootstrap.js | 32 - .../resources/sass/_variables.scss | 7 - Chapter27/onlineStore/resources/sass/app.scss | 8 - .../views/admin/home/index.blade.php | 12 - .../views/admin/product/edit.blade.php | 61 - .../views/admin/product/index.blade.php | 98 - .../resources/views/auth/login.blade.php | 73 - .../views/auth/passwords/confirm.blade.php | 49 - .../views/auth/passwords/email.blade.php | 47 - .../views/auth/passwords/reset.blade.php | 65 - .../resources/views/auth/register.blade.php | 77 - .../resources/views/auth/verify.blade.php | 28 - .../resources/views/cart/index.blade.php | 45 - .../resources/views/cart/purchase.blade.php | 15 - .../resources/views/home.blade.php | 23 - .../resources/views/home/about.blade.php | 15 - .../resources/views/home/index.blade.php | 15 - .../resources/views/layouts/admin.blade.php | 60 - .../resources/views/layouts/app.blade.php | 67 - .../resources/views/product/index.blade.php | 18 - .../resources/views/product/show.blade.php | 36 - .../resources/views/welcome.blade.php | 7 - Chapter27/onlineStore/routes/api.php | 19 - Chapter27/onlineStore/routes/channels.php | 18 - Chapter27/onlineStore/routes/console.php | 19 - Chapter27/onlineStore/routes/web.php | 38 - Chapter27/onlineStore/storage/app/.gitignore | 3 - .../onlineStore/storage/app/public/.gitignore | 2 - .../onlineStore/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 - Chapter27/onlineStore/storage/logs/.gitignore | 2 - .../onlineStore/tests/CreatesApplication.php | 22 - .../onlineStore/tests/Feature/ExampleTest.php | 21 - Chapter27/onlineStore/tests/TestCase.php | 10 - .../onlineStore/tests/Unit/ExampleTest.php | 18 - Chapter27/onlineStore/webpack.mix.js | 16 - Chapter28/onlineStore/.editorconfig | 18 - Chapter28/onlineStore/.env.example | 52 - Chapter28/onlineStore/.gitattributes | 10 - Chapter28/onlineStore/.gitignore | 15 - Chapter28/onlineStore/.styleci.yml | 13 - Chapter28/onlineStore/README.md | 64 - Chapter28/onlineStore/app/Console/Kernel.php | 32 - .../onlineStore/app/Exceptions/Handler.php | 41 - .../Controllers/Admin/AdminHomeController.php | 16 - .../Admin/AdminProductController.php | 79 - .../Auth/ConfirmPasswordController.php | 40 - .../Auth/ForgotPasswordController.php | 22 - .../Http/Controllers/Auth/LoginController.php | 40 - .../Controllers/Auth/RegisterController.php | 74 - .../Auth/ResetPasswordController.php | 30 - .../Auth/VerificationController.php | 42 - .../app/Http/Controllers/CartController.php | 87 - .../app/Http/Controllers/Controller.php | 13 - .../app/Http/Controllers/HomeController.php | 25 - .../Http/Controllers/MyAccountController.php | 19 - .../Http/Controllers/ProductController.php | 29 - Chapter28/onlineStore/app/Http/Kernel.php | 68 - .../Http/Middleware/AdminAuthMiddleware.php | 26 - .../app/Http/Middleware/Authenticate.php | 21 - .../app/Http/Middleware/EncryptCookies.php | 17 - .../PreventRequestsDuringMaintenance.php | 17 - .../Middleware/RedirectIfAuthenticated.php | 32 - .../app/Http/Middleware/TrimStrings.php | 19 - .../app/Http/Middleware/TrustHosts.php | 20 - .../app/Http/Middleware/TrustProxies.php | 28 - .../app/Http/Middleware/VerifyCsrfToken.php | 17 - Chapter28/onlineStore/app/Models/Item.php | 133 - Chapter28/onlineStore/app/Models/Order.php | 109 - Chapter28/onlineStore/app/Models/Product.php | 126 - Chapter28/onlineStore/app/Models/User.php | 156 - .../app/Providers/AppServiceProvider.php | 28 - .../app/Providers/AuthServiceProvider.php | 30 - .../Providers/BroadcastServiceProvider.php | 21 - .../app/Providers/EventServiceProvider.php | 32 - .../app/Providers/RouteServiceProvider.php | 63 - Chapter28/onlineStore/artisan | 53 - Chapter28/onlineStore/bootstrap/app.php | 55 - .../onlineStore/bootstrap/cache/.gitignore | 2 - Chapter28/onlineStore/composer.json | 64 - Chapter28/onlineStore/composer.lock | 7921 ----------------- Chapter28/onlineStore/config/app.php | 197 - Chapter28/onlineStore/config/auth.php | 111 - Chapter28/onlineStore/config/broadcasting.php | 67 - Chapter28/onlineStore/config/cache.php | 110 - Chapter28/onlineStore/config/cors.php | 34 - Chapter28/onlineStore/config/database.php | 147 - Chapter28/onlineStore/config/filesystems.php | 73 - Chapter28/onlineStore/config/hashing.php | 52 - Chapter28/onlineStore/config/logging.php | 119 - Chapter28/onlineStore/config/mail.php | 117 - Chapter28/onlineStore/config/queue.php | 93 - Chapter28/onlineStore/config/sanctum.php | 65 - Chapter28/onlineStore/config/services.php | 33 - Chapter28/onlineStore/config/session.php | 201 - Chapter28/onlineStore/config/view.php | 36 - Chapter28/onlineStore/database/.gitignore | 1 - .../database/factories/UserFactory.php | 42 - .../2014_10_12_000000_create_users_table.php | 36 - ...12_100000_create_password_resets_table.php | 32 - ..._08_19_000000_create_failed_jobs_table.php | 36 - ...01_create_personal_access_tokens_table.php | 36 - ...022_02_11_153916_create_products_table.php | 35 - .../2022_02_12_140820_alter_users_table.php | 34 - .../2022_02_12_152713_create_orders_table.php | 34 - .../2022_02_12_152850_create_items_table.php | 37 - .../database/seeders/DatabaseSeeder.php | 19 - Chapter28/onlineStore/lang/en.json | 7 - Chapter28/onlineStore/lang/en/auth.php | 20 - Chapter28/onlineStore/lang/en/pagination.php | 19 - Chapter28/onlineStore/lang/en/passwords.php | 22 - Chapter28/onlineStore/lang/en/validation.php | 163 - Chapter28/onlineStore/package.json | 22 - Chapter28/onlineStore/phpcs.xml | 10 - Chapter28/onlineStore/phpunit.xml | 31 - Chapter28/onlineStore/public/.htaccess | 21 - Chapter28/onlineStore/public/css/admin.css | 33 - Chapter28/onlineStore/public/css/app.css | 20 - Chapter28/onlineStore/public/favicon.ico | 0 Chapter28/onlineStore/public/img/game.png | Bin 25896 -> 0 bytes Chapter28/onlineStore/public/img/safe.png | Bin 19240 -> 0 bytes .../onlineStore/public/img/submarine.png | Bin 24330 -> 0 bytes .../onlineStore/public/img/undraw_profile.svg | 38 - Chapter28/onlineStore/public/index.php | 55 - Chapter28/onlineStore/public/robots.txt | 2 - Chapter28/onlineStore/resources/css/app.css | 0 Chapter28/onlineStore/resources/js/app.js | 1 - .../onlineStore/resources/js/bootstrap.js | 32 - .../resources/sass/_variables.scss | 7 - Chapter28/onlineStore/resources/sass/app.scss | 8 - .../views/admin/home/index.blade.php | 12 - .../views/admin/product/edit.blade.php | 61 - .../views/admin/product/index.blade.php | 98 - .../resources/views/auth/login.blade.php | 73 - .../views/auth/passwords/confirm.blade.php | 49 - .../views/auth/passwords/email.blade.php | 47 - .../views/auth/passwords/reset.blade.php | 65 - .../resources/views/auth/register.blade.php | 77 - .../resources/views/auth/verify.blade.php | 28 - .../resources/views/cart/index.blade.php | 45 - .../resources/views/cart/purchase.blade.php | 15 - .../resources/views/home.blade.php | 23 - .../resources/views/home/about.blade.php | 15 - .../resources/views/home/index.blade.php | 15 - .../resources/views/layouts/admin.blade.php | 60 - .../resources/views/layouts/app.blade.php | 68 - .../views/myaccount/orders.blade.php | 44 - .../resources/views/product/index.blade.php | 18 - .../resources/views/product/show.blade.php | 36 - .../resources/views/welcome.blade.php | 7 - Chapter28/onlineStore/routes/api.php | 19 - Chapter28/onlineStore/routes/channels.php | 18 - Chapter28/onlineStore/routes/console.php | 19 - Chapter28/onlineStore/routes/web.php | 39 - Chapter28/onlineStore/storage/app/.gitignore | 3 - .../onlineStore/storage/app/public/.gitignore | 2 - .../onlineStore/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 - Chapter28/onlineStore/storage/logs/.gitignore | 2 - .../onlineStore/tests/CreatesApplication.php | 22 - .../onlineStore/tests/Feature/ExampleTest.php | 21 - Chapter28/onlineStore/tests/TestCase.php | 10 - .../onlineStore/tests/Unit/ExampleTest.php | 18 - Chapter28/onlineStore/webpack.mix.js | 16 - 2554 files changed, 282512 deletions(-) delete mode 100644 BookImages/Book images.pdf delete mode 100644 Chapter03/onlineStore/.editorconfig delete mode 100644 Chapter03/onlineStore/.env.example delete mode 100644 Chapter03/onlineStore/.gitattributes delete mode 100644 Chapter03/onlineStore/.gitignore delete mode 100644 Chapter03/onlineStore/.styleci.yml delete mode 100644 Chapter03/onlineStore/README.md delete mode 100644 Chapter03/onlineStore/app/Console/Kernel.php delete mode 100644 Chapter03/onlineStore/app/Exceptions/Handler.php delete mode 100644 Chapter03/onlineStore/app/Http/Controllers/Controller.php delete mode 100644 Chapter03/onlineStore/app/Http/Kernel.php delete mode 100644 Chapter03/onlineStore/app/Http/Middleware/Authenticate.php delete mode 100644 Chapter03/onlineStore/app/Http/Middleware/EncryptCookies.php delete mode 100644 Chapter03/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php delete mode 100644 Chapter03/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php delete mode 100644 Chapter03/onlineStore/app/Http/Middleware/TrimStrings.php delete mode 100644 Chapter03/onlineStore/app/Http/Middleware/TrustHosts.php delete mode 100644 Chapter03/onlineStore/app/Http/Middleware/TrustProxies.php delete mode 100644 Chapter03/onlineStore/app/Http/Middleware/VerifyCsrfToken.php delete mode 100644 Chapter03/onlineStore/app/Models/User.php delete mode 100644 Chapter03/onlineStore/app/Providers/AppServiceProvider.php delete mode 100644 Chapter03/onlineStore/app/Providers/AuthServiceProvider.php delete mode 100644 Chapter03/onlineStore/app/Providers/BroadcastServiceProvider.php delete mode 100644 Chapter03/onlineStore/app/Providers/EventServiceProvider.php delete mode 100644 Chapter03/onlineStore/app/Providers/RouteServiceProvider.php delete mode 100644 Chapter03/onlineStore/artisan delete mode 100644 Chapter03/onlineStore/bootstrap/app.php delete mode 100644 Chapter03/onlineStore/bootstrap/cache/.gitignore delete mode 100644 Chapter03/onlineStore/composer.json delete mode 100644 Chapter03/onlineStore/composer.lock delete mode 100644 Chapter03/onlineStore/config/app.php delete mode 100644 Chapter03/onlineStore/config/auth.php delete mode 100644 Chapter03/onlineStore/config/broadcasting.php delete mode 100644 Chapter03/onlineStore/config/cache.php delete mode 100644 Chapter03/onlineStore/config/cors.php delete mode 100644 Chapter03/onlineStore/config/database.php delete mode 100644 Chapter03/onlineStore/config/filesystems.php delete mode 100644 Chapter03/onlineStore/config/hashing.php delete mode 100644 Chapter03/onlineStore/config/logging.php delete mode 100644 Chapter03/onlineStore/config/mail.php delete mode 100644 Chapter03/onlineStore/config/queue.php delete mode 100644 Chapter03/onlineStore/config/sanctum.php delete mode 100644 Chapter03/onlineStore/config/services.php delete mode 100644 Chapter03/onlineStore/config/session.php delete mode 100644 Chapter03/onlineStore/config/view.php delete mode 100644 Chapter03/onlineStore/database/.gitignore delete mode 100644 Chapter03/onlineStore/database/factories/UserFactory.php delete mode 100644 Chapter03/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php delete mode 100644 Chapter03/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php delete mode 100644 Chapter03/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php delete mode 100644 Chapter03/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php delete mode 100644 Chapter03/onlineStore/database/seeders/DatabaseSeeder.php delete mode 100644 Chapter03/onlineStore/lang/en.json delete mode 100644 Chapter03/onlineStore/lang/en/auth.php delete mode 100644 Chapter03/onlineStore/lang/en/pagination.php delete mode 100644 Chapter03/onlineStore/lang/en/passwords.php delete mode 100644 Chapter03/onlineStore/lang/en/validation.php delete mode 100644 Chapter03/onlineStore/package.json delete mode 100644 Chapter03/onlineStore/phpunit.xml delete mode 100644 Chapter03/onlineStore/public/.htaccess delete mode 100644 Chapter03/onlineStore/public/favicon.ico delete mode 100644 Chapter03/onlineStore/public/index.php delete mode 100644 Chapter03/onlineStore/public/robots.txt delete mode 100644 Chapter03/onlineStore/resources/css/app.css delete mode 100644 Chapter03/onlineStore/resources/js/app.js delete mode 100644 Chapter03/onlineStore/resources/js/bootstrap.js delete mode 100644 Chapter03/onlineStore/resources/views/welcome.blade.php delete mode 100644 Chapter03/onlineStore/routes/api.php delete mode 100644 Chapter03/onlineStore/routes/channels.php delete mode 100644 Chapter03/onlineStore/routes/console.php delete mode 100644 Chapter03/onlineStore/routes/web.php delete mode 100644 Chapter03/onlineStore/storage/app/.gitignore delete mode 100644 Chapter03/onlineStore/storage/app/public/.gitignore delete mode 100644 Chapter03/onlineStore/storage/framework/.gitignore delete mode 100644 Chapter03/onlineStore/storage/framework/cache/.gitignore delete mode 100644 Chapter03/onlineStore/storage/framework/cache/data/.gitignore delete mode 100644 Chapter03/onlineStore/storage/framework/sessions/.gitignore delete mode 100644 Chapter03/onlineStore/storage/framework/testing/.gitignore delete mode 100644 Chapter03/onlineStore/storage/framework/views/.gitignore delete mode 100644 Chapter03/onlineStore/storage/logs/.gitignore delete mode 100644 Chapter03/onlineStore/tests/CreatesApplication.php delete mode 100644 Chapter03/onlineStore/tests/Feature/ExampleTest.php delete mode 100644 Chapter03/onlineStore/tests/TestCase.php delete mode 100644 Chapter03/onlineStore/tests/Unit/ExampleTest.php delete mode 100644 Chapter03/onlineStore/webpack.mix.js delete mode 100644 Chapter05/onlineStore/.editorconfig delete mode 100644 Chapter05/onlineStore/.env.example delete mode 100644 Chapter05/onlineStore/.gitattributes delete mode 100644 Chapter05/onlineStore/.gitignore delete mode 100644 Chapter05/onlineStore/.styleci.yml delete mode 100644 Chapter05/onlineStore/README.md delete mode 100644 Chapter05/onlineStore/app/Console/Kernel.php delete mode 100644 Chapter05/onlineStore/app/Exceptions/Handler.php delete mode 100644 Chapter05/onlineStore/app/Http/Controllers/Controller.php delete mode 100644 Chapter05/onlineStore/app/Http/Kernel.php delete mode 100644 Chapter05/onlineStore/app/Http/Middleware/Authenticate.php delete mode 100644 Chapter05/onlineStore/app/Http/Middleware/EncryptCookies.php delete mode 100644 Chapter05/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php delete mode 100644 Chapter05/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php delete mode 100644 Chapter05/onlineStore/app/Http/Middleware/TrimStrings.php delete mode 100644 Chapter05/onlineStore/app/Http/Middleware/TrustHosts.php delete mode 100644 Chapter05/onlineStore/app/Http/Middleware/TrustProxies.php delete mode 100644 Chapter05/onlineStore/app/Http/Middleware/VerifyCsrfToken.php delete mode 100644 Chapter05/onlineStore/app/Models/User.php delete mode 100644 Chapter05/onlineStore/app/Providers/AppServiceProvider.php delete mode 100644 Chapter05/onlineStore/app/Providers/AuthServiceProvider.php delete mode 100644 Chapter05/onlineStore/app/Providers/BroadcastServiceProvider.php delete mode 100644 Chapter05/onlineStore/app/Providers/EventServiceProvider.php delete mode 100644 Chapter05/onlineStore/app/Providers/RouteServiceProvider.php delete mode 100644 Chapter05/onlineStore/artisan delete mode 100644 Chapter05/onlineStore/bootstrap/app.php delete mode 100644 Chapter05/onlineStore/bootstrap/cache/.gitignore delete mode 100644 Chapter05/onlineStore/composer.json delete mode 100644 Chapter05/onlineStore/composer.lock delete mode 100644 Chapter05/onlineStore/config/app.php delete mode 100644 Chapter05/onlineStore/config/auth.php delete mode 100644 Chapter05/onlineStore/config/broadcasting.php delete mode 100644 Chapter05/onlineStore/config/cache.php delete mode 100644 Chapter05/onlineStore/config/cors.php delete mode 100644 Chapter05/onlineStore/config/database.php delete mode 100644 Chapter05/onlineStore/config/filesystems.php delete mode 100644 Chapter05/onlineStore/config/hashing.php delete mode 100644 Chapter05/onlineStore/config/logging.php delete mode 100644 Chapter05/onlineStore/config/mail.php delete mode 100644 Chapter05/onlineStore/config/queue.php delete mode 100644 Chapter05/onlineStore/config/sanctum.php delete mode 100644 Chapter05/onlineStore/config/services.php delete mode 100644 Chapter05/onlineStore/config/session.php delete mode 100644 Chapter05/onlineStore/config/view.php delete mode 100644 Chapter05/onlineStore/database/.gitignore delete mode 100644 Chapter05/onlineStore/database/factories/UserFactory.php delete mode 100644 Chapter05/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php delete mode 100644 Chapter05/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php delete mode 100644 Chapter05/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php delete mode 100644 Chapter05/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php delete mode 100644 Chapter05/onlineStore/database/seeders/DatabaseSeeder.php delete mode 100644 Chapter05/onlineStore/lang/en.json delete mode 100644 Chapter05/onlineStore/lang/en/auth.php delete mode 100644 Chapter05/onlineStore/lang/en/pagination.php delete mode 100644 Chapter05/onlineStore/lang/en/passwords.php delete mode 100644 Chapter05/onlineStore/lang/en/validation.php delete mode 100644 Chapter05/onlineStore/package.json delete mode 100644 Chapter05/onlineStore/phpunit.xml delete mode 100644 Chapter05/onlineStore/public/.htaccess delete mode 100644 Chapter05/onlineStore/public/css/app.css delete mode 100644 Chapter05/onlineStore/public/favicon.ico delete mode 100644 Chapter05/onlineStore/public/index.php delete mode 100644 Chapter05/onlineStore/public/robots.txt delete mode 100644 Chapter05/onlineStore/resources/css/app.css delete mode 100644 Chapter05/onlineStore/resources/js/app.js delete mode 100644 Chapter05/onlineStore/resources/js/bootstrap.js delete mode 100644 Chapter05/onlineStore/resources/views/layouts/app.blade.php delete mode 100644 Chapter05/onlineStore/resources/views/welcome.blade.php delete mode 100644 Chapter05/onlineStore/routes/api.php delete mode 100644 Chapter05/onlineStore/routes/channels.php delete mode 100644 Chapter05/onlineStore/routes/console.php delete mode 100644 Chapter05/onlineStore/routes/web.php delete mode 100644 Chapter05/onlineStore/storage/app/.gitignore delete mode 100644 Chapter05/onlineStore/storage/app/public/.gitignore delete mode 100644 Chapter05/onlineStore/storage/framework/.gitignore delete mode 100644 Chapter05/onlineStore/storage/framework/cache/.gitignore delete mode 100644 Chapter05/onlineStore/storage/framework/cache/data/.gitignore delete mode 100644 Chapter05/onlineStore/storage/framework/sessions/.gitignore delete mode 100644 Chapter05/onlineStore/storage/framework/testing/.gitignore delete mode 100644 Chapter05/onlineStore/storage/framework/views/.gitignore delete mode 100644 Chapter05/onlineStore/storage/logs/.gitignore delete mode 100644 Chapter05/onlineStore/tests/CreatesApplication.php delete mode 100644 Chapter05/onlineStore/tests/Feature/ExampleTest.php delete mode 100644 Chapter05/onlineStore/tests/TestCase.php delete mode 100644 Chapter05/onlineStore/tests/Unit/ExampleTest.php delete mode 100644 Chapter05/onlineStore/webpack.mix.js delete mode 100644 Chapter06/onlineStore/.editorconfig delete mode 100644 Chapter06/onlineStore/.env.example delete mode 100644 Chapter06/onlineStore/.gitattributes delete mode 100644 Chapter06/onlineStore/.gitignore delete mode 100644 Chapter06/onlineStore/.styleci.yml delete mode 100644 Chapter06/onlineStore/README.md delete mode 100644 Chapter06/onlineStore/app/Console/Kernel.php delete mode 100644 Chapter06/onlineStore/app/Exceptions/Handler.php delete mode 100644 Chapter06/onlineStore/app/Http/Controllers/Controller.php delete mode 100644 Chapter06/onlineStore/app/Http/Controllers/HomeController.php delete mode 100644 Chapter06/onlineStore/app/Http/Kernel.php delete mode 100644 Chapter06/onlineStore/app/Http/Middleware/Authenticate.php delete mode 100644 Chapter06/onlineStore/app/Http/Middleware/EncryptCookies.php delete mode 100644 Chapter06/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php delete mode 100644 Chapter06/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php delete mode 100644 Chapter06/onlineStore/app/Http/Middleware/TrimStrings.php delete mode 100644 Chapter06/onlineStore/app/Http/Middleware/TrustHosts.php delete mode 100644 Chapter06/onlineStore/app/Http/Middleware/TrustProxies.php delete mode 100644 Chapter06/onlineStore/app/Http/Middleware/VerifyCsrfToken.php delete mode 100644 Chapter06/onlineStore/app/Models/User.php delete mode 100644 Chapter06/onlineStore/app/Providers/AppServiceProvider.php delete mode 100644 Chapter06/onlineStore/app/Providers/AuthServiceProvider.php delete mode 100644 Chapter06/onlineStore/app/Providers/BroadcastServiceProvider.php delete mode 100644 Chapter06/onlineStore/app/Providers/EventServiceProvider.php delete mode 100644 Chapter06/onlineStore/app/Providers/RouteServiceProvider.php delete mode 100644 Chapter06/onlineStore/artisan delete mode 100644 Chapter06/onlineStore/bootstrap/app.php delete mode 100644 Chapter06/onlineStore/bootstrap/cache/.gitignore delete mode 100644 Chapter06/onlineStore/composer.json delete mode 100644 Chapter06/onlineStore/composer.lock delete mode 100644 Chapter06/onlineStore/config/app.php delete mode 100644 Chapter06/onlineStore/config/auth.php delete mode 100644 Chapter06/onlineStore/config/broadcasting.php delete mode 100644 Chapter06/onlineStore/config/cache.php delete mode 100644 Chapter06/onlineStore/config/cors.php delete mode 100644 Chapter06/onlineStore/config/database.php delete mode 100644 Chapter06/onlineStore/config/filesystems.php delete mode 100644 Chapter06/onlineStore/config/hashing.php delete mode 100644 Chapter06/onlineStore/config/logging.php delete mode 100644 Chapter06/onlineStore/config/mail.php delete mode 100644 Chapter06/onlineStore/config/queue.php delete mode 100644 Chapter06/onlineStore/config/sanctum.php delete mode 100644 Chapter06/onlineStore/config/services.php delete mode 100644 Chapter06/onlineStore/config/session.php delete mode 100644 Chapter06/onlineStore/config/view.php delete mode 100644 Chapter06/onlineStore/database/.gitignore delete mode 100644 Chapter06/onlineStore/database/factories/UserFactory.php delete mode 100644 Chapter06/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php delete mode 100644 Chapter06/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php delete mode 100644 Chapter06/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php delete mode 100644 Chapter06/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php delete mode 100644 Chapter06/onlineStore/database/seeders/DatabaseSeeder.php delete mode 100644 Chapter06/onlineStore/lang/en.json delete mode 100644 Chapter06/onlineStore/lang/en/auth.php delete mode 100644 Chapter06/onlineStore/lang/en/pagination.php delete mode 100644 Chapter06/onlineStore/lang/en/passwords.php delete mode 100644 Chapter06/onlineStore/lang/en/validation.php delete mode 100644 Chapter06/onlineStore/package.json delete mode 100644 Chapter06/onlineStore/phpunit.xml delete mode 100644 Chapter06/onlineStore/public/.htaccess delete mode 100644 Chapter06/onlineStore/public/css/app.css delete mode 100644 Chapter06/onlineStore/public/favicon.ico delete mode 100644 Chapter06/onlineStore/public/img/game.png delete mode 100644 Chapter06/onlineStore/public/img/safe.png delete mode 100644 Chapter06/onlineStore/public/img/submarine.png delete mode 100644 Chapter06/onlineStore/public/index.php delete mode 100644 Chapter06/onlineStore/public/robots.txt delete mode 100644 Chapter06/onlineStore/resources/css/app.css delete mode 100644 Chapter06/onlineStore/resources/js/app.js delete mode 100644 Chapter06/onlineStore/resources/js/bootstrap.js delete mode 100644 Chapter06/onlineStore/resources/views/home/about.blade.php delete mode 100644 Chapter06/onlineStore/resources/views/home/index.blade.php delete mode 100644 Chapter06/onlineStore/resources/views/layouts/app.blade.php delete mode 100644 Chapter06/onlineStore/resources/views/welcome.blade.php delete mode 100644 Chapter06/onlineStore/routes/api.php delete mode 100644 Chapter06/onlineStore/routes/channels.php delete mode 100644 Chapter06/onlineStore/routes/console.php delete mode 100644 Chapter06/onlineStore/routes/web.php delete mode 100644 Chapter06/onlineStore/storage/app/.gitignore delete mode 100644 Chapter06/onlineStore/storage/app/public/.gitignore delete mode 100644 Chapter06/onlineStore/storage/framework/.gitignore delete mode 100644 Chapter06/onlineStore/storage/framework/cache/.gitignore delete mode 100644 Chapter06/onlineStore/storage/framework/cache/data/.gitignore delete mode 100644 Chapter06/onlineStore/storage/framework/sessions/.gitignore delete mode 100644 Chapter06/onlineStore/storage/framework/testing/.gitignore delete mode 100644 Chapter06/onlineStore/storage/framework/views/.gitignore delete mode 100644 Chapter06/onlineStore/storage/logs/.gitignore delete mode 100644 Chapter06/onlineStore/tests/CreatesApplication.php delete mode 100644 Chapter06/onlineStore/tests/Feature/ExampleTest.php delete mode 100644 Chapter06/onlineStore/tests/TestCase.php delete mode 100644 Chapter06/onlineStore/tests/Unit/ExampleTest.php delete mode 100644 Chapter06/onlineStore/webpack.mix.js delete mode 100644 Chapter07/onlineStore/.editorconfig delete mode 100644 Chapter07/onlineStore/.env.example delete mode 100644 Chapter07/onlineStore/.gitattributes delete mode 100644 Chapter07/onlineStore/.gitignore delete mode 100644 Chapter07/onlineStore/.styleci.yml delete mode 100644 Chapter07/onlineStore/README.md delete mode 100644 Chapter07/onlineStore/app/Console/Kernel.php delete mode 100644 Chapter07/onlineStore/app/Exceptions/Handler.php delete mode 100644 Chapter07/onlineStore/app/Http/Controllers/Controller.php delete mode 100644 Chapter07/onlineStore/app/Http/Controllers/HomeController.php delete mode 100644 Chapter07/onlineStore/app/Http/Kernel.php delete mode 100644 Chapter07/onlineStore/app/Http/Middleware/Authenticate.php delete mode 100644 Chapter07/onlineStore/app/Http/Middleware/EncryptCookies.php delete mode 100644 Chapter07/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php delete mode 100644 Chapter07/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php delete mode 100644 Chapter07/onlineStore/app/Http/Middleware/TrimStrings.php delete mode 100644 Chapter07/onlineStore/app/Http/Middleware/TrustHosts.php delete mode 100644 Chapter07/onlineStore/app/Http/Middleware/TrustProxies.php delete mode 100644 Chapter07/onlineStore/app/Http/Middleware/VerifyCsrfToken.php delete mode 100644 Chapter07/onlineStore/app/Models/User.php delete mode 100644 Chapter07/onlineStore/app/Providers/AppServiceProvider.php delete mode 100644 Chapter07/onlineStore/app/Providers/AuthServiceProvider.php delete mode 100644 Chapter07/onlineStore/app/Providers/BroadcastServiceProvider.php delete mode 100644 Chapter07/onlineStore/app/Providers/EventServiceProvider.php delete mode 100644 Chapter07/onlineStore/app/Providers/RouteServiceProvider.php delete mode 100644 Chapter07/onlineStore/artisan delete mode 100644 Chapter07/onlineStore/bootstrap/app.php delete mode 100644 Chapter07/onlineStore/bootstrap/cache/.gitignore delete mode 100644 Chapter07/onlineStore/composer.json delete mode 100644 Chapter07/onlineStore/composer.lock delete mode 100644 Chapter07/onlineStore/config/app.php delete mode 100644 Chapter07/onlineStore/config/auth.php delete mode 100644 Chapter07/onlineStore/config/broadcasting.php delete mode 100644 Chapter07/onlineStore/config/cache.php delete mode 100644 Chapter07/onlineStore/config/cors.php delete mode 100644 Chapter07/onlineStore/config/database.php delete mode 100644 Chapter07/onlineStore/config/filesystems.php delete mode 100644 Chapter07/onlineStore/config/hashing.php delete mode 100644 Chapter07/onlineStore/config/logging.php delete mode 100644 Chapter07/onlineStore/config/mail.php delete mode 100644 Chapter07/onlineStore/config/queue.php delete mode 100644 Chapter07/onlineStore/config/sanctum.php delete mode 100644 Chapter07/onlineStore/config/services.php delete mode 100644 Chapter07/onlineStore/config/session.php delete mode 100644 Chapter07/onlineStore/config/view.php delete mode 100644 Chapter07/onlineStore/database/.gitignore delete mode 100644 Chapter07/onlineStore/database/factories/UserFactory.php delete mode 100644 Chapter07/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php delete mode 100644 Chapter07/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php delete mode 100644 Chapter07/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php delete mode 100644 Chapter07/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php delete mode 100644 Chapter07/onlineStore/database/seeders/DatabaseSeeder.php delete mode 100644 Chapter07/onlineStore/lang/en.json delete mode 100644 Chapter07/onlineStore/lang/en/auth.php delete mode 100644 Chapter07/onlineStore/lang/en/pagination.php delete mode 100644 Chapter07/onlineStore/lang/en/passwords.php delete mode 100644 Chapter07/onlineStore/lang/en/validation.php delete mode 100644 Chapter07/onlineStore/package.json delete mode 100644 Chapter07/onlineStore/phpunit.xml delete mode 100644 Chapter07/onlineStore/public/.htaccess delete mode 100644 Chapter07/onlineStore/public/css/app.css delete mode 100644 Chapter07/onlineStore/public/favicon.ico delete mode 100644 Chapter07/onlineStore/public/img/game.png delete mode 100644 Chapter07/onlineStore/public/img/safe.png delete mode 100644 Chapter07/onlineStore/public/img/submarine.png delete mode 100644 Chapter07/onlineStore/public/index.php delete mode 100644 Chapter07/onlineStore/public/robots.txt delete mode 100644 Chapter07/onlineStore/resources/css/app.css delete mode 100644 Chapter07/onlineStore/resources/js/app.js delete mode 100644 Chapter07/onlineStore/resources/js/bootstrap.js delete mode 100644 Chapter07/onlineStore/resources/views/home/about.blade.php delete mode 100644 Chapter07/onlineStore/resources/views/home/index.blade.php delete mode 100644 Chapter07/onlineStore/resources/views/layouts/app.blade.php delete mode 100644 Chapter07/onlineStore/resources/views/welcome.blade.php delete mode 100644 Chapter07/onlineStore/routes/api.php delete mode 100644 Chapter07/onlineStore/routes/channels.php delete mode 100644 Chapter07/onlineStore/routes/console.php delete mode 100644 Chapter07/onlineStore/routes/web.php delete mode 100644 Chapter07/onlineStore/storage/app/.gitignore delete mode 100644 Chapter07/onlineStore/storage/app/public/.gitignore delete mode 100644 Chapter07/onlineStore/storage/framework/.gitignore delete mode 100644 Chapter07/onlineStore/storage/framework/cache/.gitignore delete mode 100644 Chapter07/onlineStore/storage/framework/cache/data/.gitignore delete mode 100644 Chapter07/onlineStore/storage/framework/sessions/.gitignore delete mode 100644 Chapter07/onlineStore/storage/framework/testing/.gitignore delete mode 100644 Chapter07/onlineStore/storage/framework/views/.gitignore delete mode 100644 Chapter07/onlineStore/storage/logs/.gitignore delete mode 100644 Chapter07/onlineStore/tests/CreatesApplication.php delete mode 100644 Chapter07/onlineStore/tests/Feature/ExampleTest.php delete mode 100644 Chapter07/onlineStore/tests/TestCase.php delete mode 100644 Chapter07/onlineStore/tests/Unit/ExampleTest.php delete mode 100644 Chapter07/onlineStore/webpack.mix.js delete mode 100644 Chapter08/onlineStore/.editorconfig delete mode 100644 Chapter08/onlineStore/.env.example delete mode 100644 Chapter08/onlineStore/.gitattributes delete mode 100644 Chapter08/onlineStore/.gitignore delete mode 100644 Chapter08/onlineStore/.styleci.yml delete mode 100644 Chapter08/onlineStore/README.md delete mode 100644 Chapter08/onlineStore/app/Console/Kernel.php delete mode 100644 Chapter08/onlineStore/app/Exceptions/Handler.php delete mode 100644 Chapter08/onlineStore/app/Http/Controllers/Controller.php delete mode 100644 Chapter08/onlineStore/app/Http/Controllers/HomeController.php delete mode 100644 Chapter08/onlineStore/app/Http/Kernel.php delete mode 100644 Chapter08/onlineStore/app/Http/Middleware/Authenticate.php delete mode 100644 Chapter08/onlineStore/app/Http/Middleware/EncryptCookies.php delete mode 100644 Chapter08/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php delete mode 100644 Chapter08/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php delete mode 100644 Chapter08/onlineStore/app/Http/Middleware/TrimStrings.php delete mode 100644 Chapter08/onlineStore/app/Http/Middleware/TrustHosts.php delete mode 100644 Chapter08/onlineStore/app/Http/Middleware/TrustProxies.php delete mode 100644 Chapter08/onlineStore/app/Http/Middleware/VerifyCsrfToken.php delete mode 100644 Chapter08/onlineStore/app/Models/User.php delete mode 100644 Chapter08/onlineStore/app/Providers/AppServiceProvider.php delete mode 100644 Chapter08/onlineStore/app/Providers/AuthServiceProvider.php delete mode 100644 Chapter08/onlineStore/app/Providers/BroadcastServiceProvider.php delete mode 100644 Chapter08/onlineStore/app/Providers/EventServiceProvider.php delete mode 100644 Chapter08/onlineStore/app/Providers/RouteServiceProvider.php delete mode 100644 Chapter08/onlineStore/artisan delete mode 100644 Chapter08/onlineStore/bootstrap/app.php delete mode 100644 Chapter08/onlineStore/bootstrap/cache/.gitignore delete mode 100644 Chapter08/onlineStore/composer.json delete mode 100644 Chapter08/onlineStore/composer.lock delete mode 100644 Chapter08/onlineStore/config/app.php delete mode 100644 Chapter08/onlineStore/config/auth.php delete mode 100644 Chapter08/onlineStore/config/broadcasting.php delete mode 100644 Chapter08/onlineStore/config/cache.php delete mode 100644 Chapter08/onlineStore/config/cors.php delete mode 100644 Chapter08/onlineStore/config/database.php delete mode 100644 Chapter08/onlineStore/config/filesystems.php delete mode 100644 Chapter08/onlineStore/config/hashing.php delete mode 100644 Chapter08/onlineStore/config/logging.php delete mode 100644 Chapter08/onlineStore/config/mail.php delete mode 100644 Chapter08/onlineStore/config/queue.php delete mode 100644 Chapter08/onlineStore/config/sanctum.php delete mode 100644 Chapter08/onlineStore/config/services.php delete mode 100644 Chapter08/onlineStore/config/session.php delete mode 100644 Chapter08/onlineStore/config/view.php delete mode 100644 Chapter08/onlineStore/database/.gitignore delete mode 100644 Chapter08/onlineStore/database/factories/UserFactory.php delete mode 100644 Chapter08/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php delete mode 100644 Chapter08/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php delete mode 100644 Chapter08/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php delete mode 100644 Chapter08/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php delete mode 100644 Chapter08/onlineStore/database/seeders/DatabaseSeeder.php delete mode 100644 Chapter08/onlineStore/lang/en.json delete mode 100644 Chapter08/onlineStore/lang/en/auth.php delete mode 100644 Chapter08/onlineStore/lang/en/pagination.php delete mode 100644 Chapter08/onlineStore/lang/en/passwords.php delete mode 100644 Chapter08/onlineStore/lang/en/validation.php delete mode 100644 Chapter08/onlineStore/package.json delete mode 100644 Chapter08/onlineStore/phpcs.xml delete mode 100644 Chapter08/onlineStore/phpunit.xml delete mode 100644 Chapter08/onlineStore/public/.htaccess delete mode 100644 Chapter08/onlineStore/public/css/app.css delete mode 100644 Chapter08/onlineStore/public/favicon.ico delete mode 100644 Chapter08/onlineStore/public/img/game.png delete mode 100644 Chapter08/onlineStore/public/img/safe.png delete mode 100644 Chapter08/onlineStore/public/img/submarine.png delete mode 100644 Chapter08/onlineStore/public/index.php delete mode 100644 Chapter08/onlineStore/public/robots.txt delete mode 100644 Chapter08/onlineStore/resources/css/app.css delete mode 100644 Chapter08/onlineStore/resources/js/app.js delete mode 100644 Chapter08/onlineStore/resources/js/bootstrap.js delete mode 100644 Chapter08/onlineStore/resources/views/home/about.blade.php delete mode 100644 Chapter08/onlineStore/resources/views/home/index.blade.php delete mode 100644 Chapter08/onlineStore/resources/views/layouts/app.blade.php delete mode 100644 Chapter08/onlineStore/resources/views/welcome.blade.php delete mode 100644 Chapter08/onlineStore/routes/api.php delete mode 100644 Chapter08/onlineStore/routes/channels.php delete mode 100644 Chapter08/onlineStore/routes/console.php delete mode 100644 Chapter08/onlineStore/routes/web.php delete mode 100644 Chapter08/onlineStore/storage/app/.gitignore delete mode 100644 Chapter08/onlineStore/storage/app/public/.gitignore delete mode 100644 Chapter08/onlineStore/storage/framework/.gitignore delete mode 100644 Chapter08/onlineStore/storage/framework/cache/.gitignore delete mode 100644 Chapter08/onlineStore/storage/framework/cache/data/.gitignore delete mode 100644 Chapter08/onlineStore/storage/framework/sessions/.gitignore delete mode 100644 Chapter08/onlineStore/storage/framework/testing/.gitignore delete mode 100644 Chapter08/onlineStore/storage/framework/views/.gitignore delete mode 100644 Chapter08/onlineStore/storage/logs/.gitignore delete mode 100644 Chapter08/onlineStore/tests/CreatesApplication.php delete mode 100644 Chapter08/onlineStore/tests/Feature/ExampleTest.php delete mode 100644 Chapter08/onlineStore/tests/TestCase.php delete mode 100644 Chapter08/onlineStore/tests/Unit/ExampleTest.php delete mode 100644 Chapter08/onlineStore/webpack.mix.js delete mode 100644 Chapter09/onlineStore/.editorconfig delete mode 100644 Chapter09/onlineStore/.env.example delete mode 100644 Chapter09/onlineStore/.gitattributes delete mode 100644 Chapter09/onlineStore/.gitignore delete mode 100644 Chapter09/onlineStore/.styleci.yml delete mode 100644 Chapter09/onlineStore/README.md delete mode 100644 Chapter09/onlineStore/app/Console/Kernel.php delete mode 100644 Chapter09/onlineStore/app/Exceptions/Handler.php delete mode 100644 Chapter09/onlineStore/app/Http/Controllers/Controller.php delete mode 100644 Chapter09/onlineStore/app/Http/Controllers/HomeController.php delete mode 100644 Chapter09/onlineStore/app/Http/Controllers/ProductController.php delete mode 100644 Chapter09/onlineStore/app/Http/Kernel.php delete mode 100644 Chapter09/onlineStore/app/Http/Middleware/Authenticate.php delete mode 100644 Chapter09/onlineStore/app/Http/Middleware/EncryptCookies.php delete mode 100644 Chapter09/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php delete mode 100644 Chapter09/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php delete mode 100644 Chapter09/onlineStore/app/Http/Middleware/TrimStrings.php delete mode 100644 Chapter09/onlineStore/app/Http/Middleware/TrustHosts.php delete mode 100644 Chapter09/onlineStore/app/Http/Middleware/TrustProxies.php delete mode 100644 Chapter09/onlineStore/app/Http/Middleware/VerifyCsrfToken.php delete mode 100644 Chapter09/onlineStore/app/Models/User.php delete mode 100644 Chapter09/onlineStore/app/Providers/AppServiceProvider.php delete mode 100644 Chapter09/onlineStore/app/Providers/AuthServiceProvider.php delete mode 100644 Chapter09/onlineStore/app/Providers/BroadcastServiceProvider.php delete mode 100644 Chapter09/onlineStore/app/Providers/EventServiceProvider.php delete mode 100644 Chapter09/onlineStore/app/Providers/RouteServiceProvider.php delete mode 100644 Chapter09/onlineStore/artisan delete mode 100644 Chapter09/onlineStore/bootstrap/app.php delete mode 100644 Chapter09/onlineStore/bootstrap/cache/.gitignore delete mode 100644 Chapter09/onlineStore/composer.json delete mode 100644 Chapter09/onlineStore/composer.lock delete mode 100644 Chapter09/onlineStore/config/app.php delete mode 100644 Chapter09/onlineStore/config/auth.php delete mode 100644 Chapter09/onlineStore/config/broadcasting.php delete mode 100644 Chapter09/onlineStore/config/cache.php delete mode 100644 Chapter09/onlineStore/config/cors.php delete mode 100644 Chapter09/onlineStore/config/database.php delete mode 100644 Chapter09/onlineStore/config/filesystems.php delete mode 100644 Chapter09/onlineStore/config/hashing.php delete mode 100644 Chapter09/onlineStore/config/logging.php delete mode 100644 Chapter09/onlineStore/config/mail.php delete mode 100644 Chapter09/onlineStore/config/queue.php delete mode 100644 Chapter09/onlineStore/config/sanctum.php delete mode 100644 Chapter09/onlineStore/config/services.php delete mode 100644 Chapter09/onlineStore/config/session.php delete mode 100644 Chapter09/onlineStore/config/view.php delete mode 100644 Chapter09/onlineStore/database/.gitignore delete mode 100644 Chapter09/onlineStore/database/factories/UserFactory.php delete mode 100644 Chapter09/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php delete mode 100644 Chapter09/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php delete mode 100644 Chapter09/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php delete mode 100644 Chapter09/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php delete mode 100644 Chapter09/onlineStore/database/seeders/DatabaseSeeder.php delete mode 100644 Chapter09/onlineStore/lang/en.json delete mode 100644 Chapter09/onlineStore/lang/en/auth.php delete mode 100644 Chapter09/onlineStore/lang/en/pagination.php delete mode 100644 Chapter09/onlineStore/lang/en/passwords.php delete mode 100644 Chapter09/onlineStore/lang/en/validation.php delete mode 100644 Chapter09/onlineStore/package.json delete mode 100644 Chapter09/onlineStore/phpcs.xml delete mode 100644 Chapter09/onlineStore/phpunit.xml delete mode 100644 Chapter09/onlineStore/public/.htaccess delete mode 100644 Chapter09/onlineStore/public/css/app.css delete mode 100644 Chapter09/onlineStore/public/favicon.ico delete mode 100644 Chapter09/onlineStore/public/img/game.png delete mode 100644 Chapter09/onlineStore/public/img/safe.png delete mode 100644 Chapter09/onlineStore/public/img/submarine.png delete mode 100644 Chapter09/onlineStore/public/index.php delete mode 100644 Chapter09/onlineStore/public/robots.txt delete mode 100644 Chapter09/onlineStore/resources/css/app.css delete mode 100644 Chapter09/onlineStore/resources/js/app.js delete mode 100644 Chapter09/onlineStore/resources/js/bootstrap.js delete mode 100644 Chapter09/onlineStore/resources/views/home/about.blade.php delete mode 100644 Chapter09/onlineStore/resources/views/home/index.blade.php delete mode 100644 Chapter09/onlineStore/resources/views/layouts/app.blade.php delete mode 100644 Chapter09/onlineStore/resources/views/product/index.blade.php delete mode 100644 Chapter09/onlineStore/resources/views/product/show.blade.php delete mode 100644 Chapter09/onlineStore/resources/views/welcome.blade.php delete mode 100644 Chapter09/onlineStore/routes/api.php delete mode 100644 Chapter09/onlineStore/routes/channels.php delete mode 100644 Chapter09/onlineStore/routes/console.php delete mode 100644 Chapter09/onlineStore/routes/web.php delete mode 100644 Chapter09/onlineStore/storage/app/.gitignore delete mode 100644 Chapter09/onlineStore/storage/app/public/.gitignore delete mode 100644 Chapter09/onlineStore/storage/framework/.gitignore delete mode 100644 Chapter09/onlineStore/storage/framework/cache/.gitignore delete mode 100644 Chapter09/onlineStore/storage/framework/cache/data/.gitignore delete mode 100644 Chapter09/onlineStore/storage/framework/sessions/.gitignore delete mode 100644 Chapter09/onlineStore/storage/framework/testing/.gitignore delete mode 100644 Chapter09/onlineStore/storage/framework/views/.gitignore delete mode 100644 Chapter09/onlineStore/storage/logs/.gitignore delete mode 100644 Chapter09/onlineStore/tests/CreatesApplication.php delete mode 100644 Chapter09/onlineStore/tests/Feature/ExampleTest.php delete mode 100644 Chapter09/onlineStore/tests/TestCase.php delete mode 100644 Chapter09/onlineStore/tests/Unit/ExampleTest.php delete mode 100644 Chapter09/onlineStore/webpack.mix.js delete mode 100644 Chapter11/onlineStore/.editorconfig delete mode 100644 Chapter11/onlineStore/.env.example delete mode 100644 Chapter11/onlineStore/.gitattributes delete mode 100644 Chapter11/onlineStore/.gitignore delete mode 100644 Chapter11/onlineStore/.styleci.yml delete mode 100644 Chapter11/onlineStore/CHAPTER-11-SQL-QUERY.txt delete mode 100644 Chapter11/onlineStore/README.md delete mode 100644 Chapter11/onlineStore/app/Console/Kernel.php delete mode 100644 Chapter11/onlineStore/app/Exceptions/Handler.php delete mode 100644 Chapter11/onlineStore/app/Http/Controllers/Controller.php delete mode 100644 Chapter11/onlineStore/app/Http/Controllers/HomeController.php delete mode 100644 Chapter11/onlineStore/app/Http/Controllers/ProductController.php delete mode 100644 Chapter11/onlineStore/app/Http/Kernel.php delete mode 100644 Chapter11/onlineStore/app/Http/Middleware/Authenticate.php delete mode 100644 Chapter11/onlineStore/app/Http/Middleware/EncryptCookies.php delete mode 100644 Chapter11/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php delete mode 100644 Chapter11/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php delete mode 100644 Chapter11/onlineStore/app/Http/Middleware/TrimStrings.php delete mode 100644 Chapter11/onlineStore/app/Http/Middleware/TrustHosts.php delete mode 100644 Chapter11/onlineStore/app/Http/Middleware/TrustProxies.php delete mode 100644 Chapter11/onlineStore/app/Http/Middleware/VerifyCsrfToken.php delete mode 100644 Chapter11/onlineStore/app/Models/User.php delete mode 100644 Chapter11/onlineStore/app/Providers/AppServiceProvider.php delete mode 100644 Chapter11/onlineStore/app/Providers/AuthServiceProvider.php delete mode 100644 Chapter11/onlineStore/app/Providers/BroadcastServiceProvider.php delete mode 100644 Chapter11/onlineStore/app/Providers/EventServiceProvider.php delete mode 100644 Chapter11/onlineStore/app/Providers/RouteServiceProvider.php delete mode 100644 Chapter11/onlineStore/artisan delete mode 100644 Chapter11/onlineStore/bootstrap/app.php delete mode 100644 Chapter11/onlineStore/bootstrap/cache/.gitignore delete mode 100644 Chapter11/onlineStore/composer.json delete mode 100644 Chapter11/onlineStore/composer.lock delete mode 100644 Chapter11/onlineStore/config/app.php delete mode 100644 Chapter11/onlineStore/config/auth.php delete mode 100644 Chapter11/onlineStore/config/broadcasting.php delete mode 100644 Chapter11/onlineStore/config/cache.php delete mode 100644 Chapter11/onlineStore/config/cors.php delete mode 100644 Chapter11/onlineStore/config/database.php delete mode 100644 Chapter11/onlineStore/config/filesystems.php delete mode 100644 Chapter11/onlineStore/config/hashing.php delete mode 100644 Chapter11/onlineStore/config/logging.php delete mode 100644 Chapter11/onlineStore/config/mail.php delete mode 100644 Chapter11/onlineStore/config/queue.php delete mode 100644 Chapter11/onlineStore/config/sanctum.php delete mode 100644 Chapter11/onlineStore/config/services.php delete mode 100644 Chapter11/onlineStore/config/session.php delete mode 100644 Chapter11/onlineStore/config/view.php delete mode 100644 Chapter11/onlineStore/database/.gitignore delete mode 100644 Chapter11/onlineStore/database/factories/UserFactory.php delete mode 100644 Chapter11/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php delete mode 100644 Chapter11/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php delete mode 100644 Chapter11/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php delete mode 100644 Chapter11/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php delete mode 100644 Chapter11/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php delete mode 100644 Chapter11/onlineStore/database/seeders/DatabaseSeeder.php delete mode 100644 Chapter11/onlineStore/lang/en.json delete mode 100644 Chapter11/onlineStore/lang/en/auth.php delete mode 100644 Chapter11/onlineStore/lang/en/pagination.php delete mode 100644 Chapter11/onlineStore/lang/en/passwords.php delete mode 100644 Chapter11/onlineStore/lang/en/validation.php delete mode 100644 Chapter11/onlineStore/package.json delete mode 100644 Chapter11/onlineStore/phpcs.xml delete mode 100644 Chapter11/onlineStore/phpunit.xml delete mode 100644 Chapter11/onlineStore/public/.htaccess delete mode 100644 Chapter11/onlineStore/public/css/app.css delete mode 100644 Chapter11/onlineStore/public/favicon.ico delete mode 100644 Chapter11/onlineStore/public/img/game.png delete mode 100644 Chapter11/onlineStore/public/img/safe.png delete mode 100644 Chapter11/onlineStore/public/img/submarine.png delete mode 100644 Chapter11/onlineStore/public/index.php delete mode 100644 Chapter11/onlineStore/public/robots.txt delete mode 100644 Chapter11/onlineStore/resources/css/app.css delete mode 100644 Chapter11/onlineStore/resources/js/app.js delete mode 100644 Chapter11/onlineStore/resources/js/bootstrap.js delete mode 100644 Chapter11/onlineStore/resources/views/home/about.blade.php delete mode 100644 Chapter11/onlineStore/resources/views/home/index.blade.php delete mode 100644 Chapter11/onlineStore/resources/views/layouts/app.blade.php delete mode 100644 Chapter11/onlineStore/resources/views/product/index.blade.php delete mode 100644 Chapter11/onlineStore/resources/views/product/show.blade.php delete mode 100644 Chapter11/onlineStore/resources/views/welcome.blade.php delete mode 100644 Chapter11/onlineStore/routes/api.php delete mode 100644 Chapter11/onlineStore/routes/channels.php delete mode 100644 Chapter11/onlineStore/routes/console.php delete mode 100644 Chapter11/onlineStore/routes/web.php delete mode 100644 Chapter11/onlineStore/storage/app/.gitignore delete mode 100644 Chapter11/onlineStore/storage/app/public/.gitignore delete mode 100644 Chapter11/onlineStore/storage/framework/.gitignore delete mode 100644 Chapter11/onlineStore/storage/framework/cache/.gitignore delete mode 100644 Chapter11/onlineStore/storage/framework/cache/data/.gitignore delete mode 100644 Chapter11/onlineStore/storage/framework/sessions/.gitignore delete mode 100644 Chapter11/onlineStore/storage/framework/testing/.gitignore delete mode 100644 Chapter11/onlineStore/storage/framework/views/.gitignore delete mode 100644 Chapter11/onlineStore/storage/logs/.gitignore delete mode 100644 Chapter11/onlineStore/tests/CreatesApplication.php delete mode 100644 Chapter11/onlineStore/tests/Feature/ExampleTest.php delete mode 100644 Chapter11/onlineStore/tests/TestCase.php delete mode 100644 Chapter11/onlineStore/tests/Unit/ExampleTest.php delete mode 100644 Chapter11/onlineStore/webpack.mix.js delete mode 100644 Chapter12/onlineStore/.editorconfig delete mode 100644 Chapter12/onlineStore/.env.example delete mode 100644 Chapter12/onlineStore/.gitattributes delete mode 100644 Chapter12/onlineStore/.gitignore delete mode 100644 Chapter12/onlineStore/.styleci.yml delete mode 100644 Chapter12/onlineStore/README.md delete mode 100644 Chapter12/onlineStore/app/Console/Kernel.php delete mode 100644 Chapter12/onlineStore/app/Exceptions/Handler.php delete mode 100644 Chapter12/onlineStore/app/Http/Controllers/Controller.php delete mode 100644 Chapter12/onlineStore/app/Http/Controllers/HomeController.php delete mode 100644 Chapter12/onlineStore/app/Http/Controllers/ProductController.php delete mode 100644 Chapter12/onlineStore/app/Http/Kernel.php delete mode 100644 Chapter12/onlineStore/app/Http/Middleware/Authenticate.php delete mode 100644 Chapter12/onlineStore/app/Http/Middleware/EncryptCookies.php delete mode 100644 Chapter12/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php delete mode 100644 Chapter12/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php delete mode 100644 Chapter12/onlineStore/app/Http/Middleware/TrimStrings.php delete mode 100644 Chapter12/onlineStore/app/Http/Middleware/TrustHosts.php delete mode 100644 Chapter12/onlineStore/app/Http/Middleware/TrustProxies.php delete mode 100644 Chapter12/onlineStore/app/Http/Middleware/VerifyCsrfToken.php delete mode 100644 Chapter12/onlineStore/app/Models/Product.php delete mode 100644 Chapter12/onlineStore/app/Models/User.php delete mode 100644 Chapter12/onlineStore/app/Providers/AppServiceProvider.php delete mode 100644 Chapter12/onlineStore/app/Providers/AuthServiceProvider.php delete mode 100644 Chapter12/onlineStore/app/Providers/BroadcastServiceProvider.php delete mode 100644 Chapter12/onlineStore/app/Providers/EventServiceProvider.php delete mode 100644 Chapter12/onlineStore/app/Providers/RouteServiceProvider.php delete mode 100644 Chapter12/onlineStore/artisan delete mode 100644 Chapter12/onlineStore/bootstrap/app.php delete mode 100644 Chapter12/onlineStore/bootstrap/cache/.gitignore delete mode 100644 Chapter12/onlineStore/composer.json delete mode 100644 Chapter12/onlineStore/composer.lock delete mode 100644 Chapter12/onlineStore/config/app.php delete mode 100644 Chapter12/onlineStore/config/auth.php delete mode 100644 Chapter12/onlineStore/config/broadcasting.php delete mode 100644 Chapter12/onlineStore/config/cache.php delete mode 100644 Chapter12/onlineStore/config/cors.php delete mode 100644 Chapter12/onlineStore/config/database.php delete mode 100644 Chapter12/onlineStore/config/filesystems.php delete mode 100644 Chapter12/onlineStore/config/hashing.php delete mode 100644 Chapter12/onlineStore/config/logging.php delete mode 100644 Chapter12/onlineStore/config/mail.php delete mode 100644 Chapter12/onlineStore/config/queue.php delete mode 100644 Chapter12/onlineStore/config/sanctum.php delete mode 100644 Chapter12/onlineStore/config/services.php delete mode 100644 Chapter12/onlineStore/config/session.php delete mode 100644 Chapter12/onlineStore/config/view.php delete mode 100644 Chapter12/onlineStore/database/.gitignore delete mode 100644 Chapter12/onlineStore/database/factories/UserFactory.php delete mode 100644 Chapter12/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php delete mode 100644 Chapter12/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php delete mode 100644 Chapter12/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php delete mode 100644 Chapter12/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php delete mode 100644 Chapter12/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php delete mode 100644 Chapter12/onlineStore/database/seeders/DatabaseSeeder.php delete mode 100644 Chapter12/onlineStore/lang/en.json delete mode 100644 Chapter12/onlineStore/lang/en/auth.php delete mode 100644 Chapter12/onlineStore/lang/en/pagination.php delete mode 100644 Chapter12/onlineStore/lang/en/passwords.php delete mode 100644 Chapter12/onlineStore/lang/en/validation.php delete mode 100644 Chapter12/onlineStore/package.json delete mode 100644 Chapter12/onlineStore/phpcs.xml delete mode 100644 Chapter12/onlineStore/phpunit.xml delete mode 100644 Chapter12/onlineStore/public/.htaccess delete mode 100644 Chapter12/onlineStore/public/css/app.css delete mode 100644 Chapter12/onlineStore/public/favicon.ico delete mode 100644 Chapter12/onlineStore/public/img/game.png delete mode 100644 Chapter12/onlineStore/public/img/safe.png delete mode 100644 Chapter12/onlineStore/public/img/submarine.png delete mode 100644 Chapter12/onlineStore/public/index.php delete mode 100644 Chapter12/onlineStore/public/robots.txt delete mode 100644 Chapter12/onlineStore/resources/css/app.css delete mode 100644 Chapter12/onlineStore/resources/js/app.js delete mode 100644 Chapter12/onlineStore/resources/js/bootstrap.js delete mode 100644 Chapter12/onlineStore/resources/views/home/about.blade.php delete mode 100644 Chapter12/onlineStore/resources/views/home/index.blade.php delete mode 100644 Chapter12/onlineStore/resources/views/layouts/app.blade.php delete mode 100644 Chapter12/onlineStore/resources/views/product/index.blade.php delete mode 100644 Chapter12/onlineStore/resources/views/product/show.blade.php delete mode 100644 Chapter12/onlineStore/resources/views/welcome.blade.php delete mode 100644 Chapter12/onlineStore/routes/api.php delete mode 100644 Chapter12/onlineStore/routes/channels.php delete mode 100644 Chapter12/onlineStore/routes/console.php delete mode 100644 Chapter12/onlineStore/routes/web.php delete mode 100644 Chapter12/onlineStore/storage/app/.gitignore delete mode 100644 Chapter12/onlineStore/storage/app/public/.gitignore delete mode 100644 Chapter12/onlineStore/storage/framework/.gitignore delete mode 100644 Chapter12/onlineStore/storage/framework/cache/.gitignore delete mode 100644 Chapter12/onlineStore/storage/framework/cache/data/.gitignore delete mode 100644 Chapter12/onlineStore/storage/framework/sessions/.gitignore delete mode 100644 Chapter12/onlineStore/storage/framework/testing/.gitignore delete mode 100644 Chapter12/onlineStore/storage/framework/views/.gitignore delete mode 100644 Chapter12/onlineStore/storage/logs/.gitignore delete mode 100644 Chapter12/onlineStore/tests/CreatesApplication.php delete mode 100644 Chapter12/onlineStore/tests/Feature/ExampleTest.php delete mode 100644 Chapter12/onlineStore/tests/TestCase.php delete mode 100644 Chapter12/onlineStore/tests/Unit/ExampleTest.php delete mode 100644 Chapter12/onlineStore/webpack.mix.js delete mode 100644 Chapter13/onlineStore/.editorconfig delete mode 100644 Chapter13/onlineStore/.env.example delete mode 100644 Chapter13/onlineStore/.gitattributes delete mode 100644 Chapter13/onlineStore/.gitignore delete mode 100644 Chapter13/onlineStore/.styleci.yml delete mode 100644 Chapter13/onlineStore/README.md delete mode 100644 Chapter13/onlineStore/app/Console/Kernel.php delete mode 100644 Chapter13/onlineStore/app/Exceptions/Handler.php delete mode 100644 Chapter13/onlineStore/app/Http/Controllers/Controller.php delete mode 100644 Chapter13/onlineStore/app/Http/Controllers/HomeController.php delete mode 100644 Chapter13/onlineStore/app/Http/Controllers/ProductController.php delete mode 100644 Chapter13/onlineStore/app/Http/Kernel.php delete mode 100644 Chapter13/onlineStore/app/Http/Middleware/Authenticate.php delete mode 100644 Chapter13/onlineStore/app/Http/Middleware/EncryptCookies.php delete mode 100644 Chapter13/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php delete mode 100644 Chapter13/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php delete mode 100644 Chapter13/onlineStore/app/Http/Middleware/TrimStrings.php delete mode 100644 Chapter13/onlineStore/app/Http/Middleware/TrustHosts.php delete mode 100644 Chapter13/onlineStore/app/Http/Middleware/TrustProxies.php delete mode 100644 Chapter13/onlineStore/app/Http/Middleware/VerifyCsrfToken.php delete mode 100644 Chapter13/onlineStore/app/Models/Product.php delete mode 100644 Chapter13/onlineStore/app/Models/User.php delete mode 100644 Chapter13/onlineStore/app/Providers/AppServiceProvider.php delete mode 100644 Chapter13/onlineStore/app/Providers/AuthServiceProvider.php delete mode 100644 Chapter13/onlineStore/app/Providers/BroadcastServiceProvider.php delete mode 100644 Chapter13/onlineStore/app/Providers/EventServiceProvider.php delete mode 100644 Chapter13/onlineStore/app/Providers/RouteServiceProvider.php delete mode 100644 Chapter13/onlineStore/artisan delete mode 100644 Chapter13/onlineStore/bootstrap/app.php delete mode 100644 Chapter13/onlineStore/bootstrap/cache/.gitignore delete mode 100644 Chapter13/onlineStore/composer.json delete mode 100644 Chapter13/onlineStore/composer.lock delete mode 100644 Chapter13/onlineStore/config/app.php delete mode 100644 Chapter13/onlineStore/config/auth.php delete mode 100644 Chapter13/onlineStore/config/broadcasting.php delete mode 100644 Chapter13/onlineStore/config/cache.php delete mode 100644 Chapter13/onlineStore/config/cors.php delete mode 100644 Chapter13/onlineStore/config/database.php delete mode 100644 Chapter13/onlineStore/config/filesystems.php delete mode 100644 Chapter13/onlineStore/config/hashing.php delete mode 100644 Chapter13/onlineStore/config/logging.php delete mode 100644 Chapter13/onlineStore/config/mail.php delete mode 100644 Chapter13/onlineStore/config/queue.php delete mode 100644 Chapter13/onlineStore/config/sanctum.php delete mode 100644 Chapter13/onlineStore/config/services.php delete mode 100644 Chapter13/onlineStore/config/session.php delete mode 100644 Chapter13/onlineStore/config/view.php delete mode 100644 Chapter13/onlineStore/database/.gitignore delete mode 100644 Chapter13/onlineStore/database/factories/UserFactory.php delete mode 100644 Chapter13/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php delete mode 100644 Chapter13/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php delete mode 100644 Chapter13/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php delete mode 100644 Chapter13/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php delete mode 100644 Chapter13/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php delete mode 100644 Chapter13/onlineStore/database/seeders/DatabaseSeeder.php delete mode 100644 Chapter13/onlineStore/lang/en.json delete mode 100644 Chapter13/onlineStore/lang/en/auth.php delete mode 100644 Chapter13/onlineStore/lang/en/pagination.php delete mode 100644 Chapter13/onlineStore/lang/en/passwords.php delete mode 100644 Chapter13/onlineStore/lang/en/validation.php delete mode 100644 Chapter13/onlineStore/package.json delete mode 100644 Chapter13/onlineStore/phpcs.xml delete mode 100644 Chapter13/onlineStore/phpunit.xml delete mode 100644 Chapter13/onlineStore/public/.htaccess delete mode 100644 Chapter13/onlineStore/public/css/app.css delete mode 100644 Chapter13/onlineStore/public/favicon.ico delete mode 100644 Chapter13/onlineStore/public/img/game.png delete mode 100644 Chapter13/onlineStore/public/img/safe.png delete mode 100644 Chapter13/onlineStore/public/img/submarine.png delete mode 100644 Chapter13/onlineStore/public/index.php delete mode 100644 Chapter13/onlineStore/public/robots.txt delete mode 100644 Chapter13/onlineStore/resources/css/app.css delete mode 100644 Chapter13/onlineStore/resources/js/app.js delete mode 100644 Chapter13/onlineStore/resources/js/bootstrap.js delete mode 100644 Chapter13/onlineStore/resources/views/home/about.blade.php delete mode 100644 Chapter13/onlineStore/resources/views/home/index.blade.php delete mode 100644 Chapter13/onlineStore/resources/views/layouts/app.blade.php delete mode 100644 Chapter13/onlineStore/resources/views/product/index.blade.php delete mode 100644 Chapter13/onlineStore/resources/views/product/show.blade.php delete mode 100644 Chapter13/onlineStore/resources/views/welcome.blade.php delete mode 100644 Chapter13/onlineStore/routes/api.php delete mode 100644 Chapter13/onlineStore/routes/channels.php delete mode 100644 Chapter13/onlineStore/routes/console.php delete mode 100644 Chapter13/onlineStore/routes/web.php delete mode 100644 Chapter13/onlineStore/storage/app/.gitignore delete mode 100644 Chapter13/onlineStore/storage/app/public/.gitignore delete mode 100644 Chapter13/onlineStore/storage/framework/.gitignore delete mode 100644 Chapter13/onlineStore/storage/framework/cache/.gitignore delete mode 100644 Chapter13/onlineStore/storage/framework/cache/data/.gitignore delete mode 100644 Chapter13/onlineStore/storage/framework/sessions/.gitignore delete mode 100644 Chapter13/onlineStore/storage/framework/testing/.gitignore delete mode 100644 Chapter13/onlineStore/storage/framework/views/.gitignore delete mode 100644 Chapter13/onlineStore/storage/logs/.gitignore delete mode 100644 Chapter13/onlineStore/tests/CreatesApplication.php delete mode 100644 Chapter13/onlineStore/tests/Feature/ExampleTest.php delete mode 100644 Chapter13/onlineStore/tests/TestCase.php delete mode 100644 Chapter13/onlineStore/tests/Unit/ExampleTest.php delete mode 100644 Chapter13/onlineStore/webpack.mix.js delete mode 100644 Chapter14/onlineStore/.editorconfig delete mode 100644 Chapter14/onlineStore/.env.example delete mode 100644 Chapter14/onlineStore/.gitattributes delete mode 100644 Chapter14/onlineStore/.gitignore delete mode 100644 Chapter14/onlineStore/.styleci.yml delete mode 100644 Chapter14/onlineStore/README.md delete mode 100644 Chapter14/onlineStore/app/Console/Kernel.php delete mode 100644 Chapter14/onlineStore/app/Exceptions/Handler.php delete mode 100644 Chapter14/onlineStore/app/Http/Controllers/Controller.php delete mode 100644 Chapter14/onlineStore/app/Http/Controllers/HomeController.php delete mode 100644 Chapter14/onlineStore/app/Http/Controllers/ProductController.php delete mode 100644 Chapter14/onlineStore/app/Http/Kernel.php delete mode 100644 Chapter14/onlineStore/app/Http/Middleware/Authenticate.php delete mode 100644 Chapter14/onlineStore/app/Http/Middleware/EncryptCookies.php delete mode 100644 Chapter14/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php delete mode 100644 Chapter14/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php delete mode 100644 Chapter14/onlineStore/app/Http/Middleware/TrimStrings.php delete mode 100644 Chapter14/onlineStore/app/Http/Middleware/TrustHosts.php delete mode 100644 Chapter14/onlineStore/app/Http/Middleware/TrustProxies.php delete mode 100644 Chapter14/onlineStore/app/Http/Middleware/VerifyCsrfToken.php delete mode 100644 Chapter14/onlineStore/app/Models/Product.php delete mode 100644 Chapter14/onlineStore/app/Models/User.php delete mode 100644 Chapter14/onlineStore/app/Providers/AppServiceProvider.php delete mode 100644 Chapter14/onlineStore/app/Providers/AuthServiceProvider.php delete mode 100644 Chapter14/onlineStore/app/Providers/BroadcastServiceProvider.php delete mode 100644 Chapter14/onlineStore/app/Providers/EventServiceProvider.php delete mode 100644 Chapter14/onlineStore/app/Providers/RouteServiceProvider.php delete mode 100644 Chapter14/onlineStore/artisan delete mode 100644 Chapter14/onlineStore/bootstrap/app.php delete mode 100644 Chapter14/onlineStore/bootstrap/cache/.gitignore delete mode 100644 Chapter14/onlineStore/composer.json delete mode 100644 Chapter14/onlineStore/composer.lock delete mode 100644 Chapter14/onlineStore/config/app.php delete mode 100644 Chapter14/onlineStore/config/auth.php delete mode 100644 Chapter14/onlineStore/config/broadcasting.php delete mode 100644 Chapter14/onlineStore/config/cache.php delete mode 100644 Chapter14/onlineStore/config/cors.php delete mode 100644 Chapter14/onlineStore/config/database.php delete mode 100644 Chapter14/onlineStore/config/filesystems.php delete mode 100644 Chapter14/onlineStore/config/hashing.php delete mode 100644 Chapter14/onlineStore/config/logging.php delete mode 100644 Chapter14/onlineStore/config/mail.php delete mode 100644 Chapter14/onlineStore/config/queue.php delete mode 100644 Chapter14/onlineStore/config/sanctum.php delete mode 100644 Chapter14/onlineStore/config/services.php delete mode 100644 Chapter14/onlineStore/config/session.php delete mode 100644 Chapter14/onlineStore/config/view.php delete mode 100644 Chapter14/onlineStore/database/.gitignore delete mode 100644 Chapter14/onlineStore/database/factories/UserFactory.php delete mode 100644 Chapter14/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php delete mode 100644 Chapter14/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php delete mode 100644 Chapter14/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php delete mode 100644 Chapter14/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php delete mode 100644 Chapter14/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php delete mode 100644 Chapter14/onlineStore/database/seeders/DatabaseSeeder.php delete mode 100644 Chapter14/onlineStore/lang/en.json delete mode 100644 Chapter14/onlineStore/lang/en/auth.php delete mode 100644 Chapter14/onlineStore/lang/en/pagination.php delete mode 100644 Chapter14/onlineStore/lang/en/passwords.php delete mode 100644 Chapter14/onlineStore/lang/en/validation.php delete mode 100644 Chapter14/onlineStore/package.json delete mode 100644 Chapter14/onlineStore/phpcs.xml delete mode 100644 Chapter14/onlineStore/phpunit.xml delete mode 100644 Chapter14/onlineStore/public/.htaccess delete mode 100644 Chapter14/onlineStore/public/css/app.css delete mode 100644 Chapter14/onlineStore/public/favicon.ico delete mode 100644 Chapter14/onlineStore/public/img/game.png delete mode 100644 Chapter14/onlineStore/public/img/safe.png delete mode 100644 Chapter14/onlineStore/public/img/submarine.png delete mode 100644 Chapter14/onlineStore/public/index.php delete mode 100644 Chapter14/onlineStore/public/robots.txt delete mode 100644 Chapter14/onlineStore/resources/css/app.css delete mode 100644 Chapter14/onlineStore/resources/js/app.js delete mode 100644 Chapter14/onlineStore/resources/js/bootstrap.js delete mode 100644 Chapter14/onlineStore/resources/views/home/about.blade.php delete mode 100644 Chapter14/onlineStore/resources/views/home/index.blade.php delete mode 100644 Chapter14/onlineStore/resources/views/layouts/app.blade.php delete mode 100644 Chapter14/onlineStore/resources/views/product/index.blade.php delete mode 100644 Chapter14/onlineStore/resources/views/product/show.blade.php delete mode 100644 Chapter14/onlineStore/resources/views/welcome.blade.php delete mode 100644 Chapter14/onlineStore/routes/api.php delete mode 100644 Chapter14/onlineStore/routes/channels.php delete mode 100644 Chapter14/onlineStore/routes/console.php delete mode 100644 Chapter14/onlineStore/routes/web.php delete mode 100644 Chapter14/onlineStore/storage/app/.gitignore delete mode 100644 Chapter14/onlineStore/storage/app/public/.gitignore delete mode 100644 Chapter14/onlineStore/storage/framework/.gitignore delete mode 100644 Chapter14/onlineStore/storage/framework/cache/.gitignore delete mode 100644 Chapter14/onlineStore/storage/framework/cache/data/.gitignore delete mode 100644 Chapter14/onlineStore/storage/framework/sessions/.gitignore delete mode 100644 Chapter14/onlineStore/storage/framework/testing/.gitignore delete mode 100644 Chapter14/onlineStore/storage/framework/views/.gitignore delete mode 100644 Chapter14/onlineStore/storage/logs/.gitignore delete mode 100644 Chapter14/onlineStore/tests/CreatesApplication.php delete mode 100644 Chapter14/onlineStore/tests/Feature/ExampleTest.php delete mode 100644 Chapter14/onlineStore/tests/TestCase.php delete mode 100644 Chapter14/onlineStore/tests/Unit/ExampleTest.php delete mode 100644 Chapter14/onlineStore/webpack.mix.js delete mode 100644 Chapter15/onlineStore/.editorconfig delete mode 100644 Chapter15/onlineStore/.env.example delete mode 100644 Chapter15/onlineStore/.gitattributes delete mode 100644 Chapter15/onlineStore/.gitignore delete mode 100644 Chapter15/onlineStore/.styleci.yml delete mode 100644 Chapter15/onlineStore/README.md delete mode 100644 Chapter15/onlineStore/app/Console/Kernel.php delete mode 100644 Chapter15/onlineStore/app/Exceptions/Handler.php delete mode 100644 Chapter15/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php delete mode 100644 Chapter15/onlineStore/app/Http/Controllers/Controller.php delete mode 100644 Chapter15/onlineStore/app/Http/Controllers/HomeController.php delete mode 100644 Chapter15/onlineStore/app/Http/Controllers/ProductController.php delete mode 100644 Chapter15/onlineStore/app/Http/Kernel.php delete mode 100644 Chapter15/onlineStore/app/Http/Middleware/Authenticate.php delete mode 100644 Chapter15/onlineStore/app/Http/Middleware/EncryptCookies.php delete mode 100644 Chapter15/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php delete mode 100644 Chapter15/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php delete mode 100644 Chapter15/onlineStore/app/Http/Middleware/TrimStrings.php delete mode 100644 Chapter15/onlineStore/app/Http/Middleware/TrustHosts.php delete mode 100644 Chapter15/onlineStore/app/Http/Middleware/TrustProxies.php delete mode 100644 Chapter15/onlineStore/app/Http/Middleware/VerifyCsrfToken.php delete mode 100644 Chapter15/onlineStore/app/Models/Product.php delete mode 100644 Chapter15/onlineStore/app/Models/User.php delete mode 100644 Chapter15/onlineStore/app/Providers/AppServiceProvider.php delete mode 100644 Chapter15/onlineStore/app/Providers/AuthServiceProvider.php delete mode 100644 Chapter15/onlineStore/app/Providers/BroadcastServiceProvider.php delete mode 100644 Chapter15/onlineStore/app/Providers/EventServiceProvider.php delete mode 100644 Chapter15/onlineStore/app/Providers/RouteServiceProvider.php delete mode 100644 Chapter15/onlineStore/artisan delete mode 100644 Chapter15/onlineStore/bootstrap/app.php delete mode 100644 Chapter15/onlineStore/bootstrap/cache/.gitignore delete mode 100644 Chapter15/onlineStore/composer.json delete mode 100644 Chapter15/onlineStore/composer.lock delete mode 100644 Chapter15/onlineStore/config/app.php delete mode 100644 Chapter15/onlineStore/config/auth.php delete mode 100644 Chapter15/onlineStore/config/broadcasting.php delete mode 100644 Chapter15/onlineStore/config/cache.php delete mode 100644 Chapter15/onlineStore/config/cors.php delete mode 100644 Chapter15/onlineStore/config/database.php delete mode 100644 Chapter15/onlineStore/config/filesystems.php delete mode 100644 Chapter15/onlineStore/config/hashing.php delete mode 100644 Chapter15/onlineStore/config/logging.php delete mode 100644 Chapter15/onlineStore/config/mail.php delete mode 100644 Chapter15/onlineStore/config/queue.php delete mode 100644 Chapter15/onlineStore/config/sanctum.php delete mode 100644 Chapter15/onlineStore/config/services.php delete mode 100644 Chapter15/onlineStore/config/session.php delete mode 100644 Chapter15/onlineStore/config/view.php delete mode 100644 Chapter15/onlineStore/database/.gitignore delete mode 100644 Chapter15/onlineStore/database/factories/UserFactory.php delete mode 100644 Chapter15/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php delete mode 100644 Chapter15/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php delete mode 100644 Chapter15/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php delete mode 100644 Chapter15/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php delete mode 100644 Chapter15/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php delete mode 100644 Chapter15/onlineStore/database/seeders/DatabaseSeeder.php delete mode 100644 Chapter15/onlineStore/lang/en.json delete mode 100644 Chapter15/onlineStore/lang/en/auth.php delete mode 100644 Chapter15/onlineStore/lang/en/pagination.php delete mode 100644 Chapter15/onlineStore/lang/en/passwords.php delete mode 100644 Chapter15/onlineStore/lang/en/validation.php delete mode 100644 Chapter15/onlineStore/package.json delete mode 100644 Chapter15/onlineStore/phpcs.xml delete mode 100644 Chapter15/onlineStore/phpunit.xml delete mode 100644 Chapter15/onlineStore/public/.htaccess delete mode 100644 Chapter15/onlineStore/public/css/admin.css delete mode 100644 Chapter15/onlineStore/public/css/app.css delete mode 100644 Chapter15/onlineStore/public/favicon.ico delete mode 100644 Chapter15/onlineStore/public/img/game.png delete mode 100644 Chapter15/onlineStore/public/img/safe.png delete mode 100644 Chapter15/onlineStore/public/img/submarine.png delete mode 100644 Chapter15/onlineStore/public/img/undraw_profile.svg delete mode 100644 Chapter15/onlineStore/public/index.php delete mode 100644 Chapter15/onlineStore/public/robots.txt delete mode 100644 Chapter15/onlineStore/resources/css/app.css delete mode 100644 Chapter15/onlineStore/resources/js/app.js delete mode 100644 Chapter15/onlineStore/resources/js/bootstrap.js delete mode 100644 Chapter15/onlineStore/resources/views/admin/home/index.blade.php delete mode 100644 Chapter15/onlineStore/resources/views/home/about.blade.php delete mode 100644 Chapter15/onlineStore/resources/views/home/index.blade.php delete mode 100644 Chapter15/onlineStore/resources/views/layouts/admin.blade.php delete mode 100644 Chapter15/onlineStore/resources/views/layouts/app.blade.php delete mode 100644 Chapter15/onlineStore/resources/views/product/index.blade.php delete mode 100644 Chapter15/onlineStore/resources/views/product/show.blade.php delete mode 100644 Chapter15/onlineStore/resources/views/welcome.blade.php delete mode 100644 Chapter15/onlineStore/routes/api.php delete mode 100644 Chapter15/onlineStore/routes/channels.php delete mode 100644 Chapter15/onlineStore/routes/console.php delete mode 100644 Chapter15/onlineStore/routes/web.php delete mode 100644 Chapter15/onlineStore/storage/app/.gitignore delete mode 100644 Chapter15/onlineStore/storage/app/public/.gitignore delete mode 100644 Chapter15/onlineStore/storage/framework/.gitignore delete mode 100644 Chapter15/onlineStore/storage/framework/cache/.gitignore delete mode 100644 Chapter15/onlineStore/storage/framework/cache/data/.gitignore delete mode 100644 Chapter15/onlineStore/storage/framework/sessions/.gitignore delete mode 100644 Chapter15/onlineStore/storage/framework/testing/.gitignore delete mode 100644 Chapter15/onlineStore/storage/framework/views/.gitignore delete mode 100644 Chapter15/onlineStore/storage/logs/.gitignore delete mode 100644 Chapter15/onlineStore/tests/CreatesApplication.php delete mode 100644 Chapter15/onlineStore/tests/Feature/ExampleTest.php delete mode 100644 Chapter15/onlineStore/tests/TestCase.php delete mode 100644 Chapter15/onlineStore/tests/Unit/ExampleTest.php delete mode 100644 Chapter15/onlineStore/webpack.mix.js delete mode 100644 Chapter16/onlineStore/.editorconfig delete mode 100644 Chapter16/onlineStore/.env.example delete mode 100644 Chapter16/onlineStore/.gitattributes delete mode 100644 Chapter16/onlineStore/.gitignore delete mode 100644 Chapter16/onlineStore/.styleci.yml delete mode 100644 Chapter16/onlineStore/README.md delete mode 100644 Chapter16/onlineStore/app/Console/Kernel.php delete mode 100644 Chapter16/onlineStore/app/Exceptions/Handler.php delete mode 100644 Chapter16/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php delete mode 100644 Chapter16/onlineStore/app/Http/Controllers/Admin/AdminProductController.php delete mode 100644 Chapter16/onlineStore/app/Http/Controllers/Controller.php delete mode 100644 Chapter16/onlineStore/app/Http/Controllers/HomeController.php delete mode 100644 Chapter16/onlineStore/app/Http/Controllers/ProductController.php delete mode 100644 Chapter16/onlineStore/app/Http/Kernel.php delete mode 100644 Chapter16/onlineStore/app/Http/Middleware/Authenticate.php delete mode 100644 Chapter16/onlineStore/app/Http/Middleware/EncryptCookies.php delete mode 100644 Chapter16/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php delete mode 100644 Chapter16/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php delete mode 100644 Chapter16/onlineStore/app/Http/Middleware/TrimStrings.php delete mode 100644 Chapter16/onlineStore/app/Http/Middleware/TrustHosts.php delete mode 100644 Chapter16/onlineStore/app/Http/Middleware/TrustProxies.php delete mode 100644 Chapter16/onlineStore/app/Http/Middleware/VerifyCsrfToken.php delete mode 100644 Chapter16/onlineStore/app/Models/Product.php delete mode 100644 Chapter16/onlineStore/app/Models/User.php delete mode 100644 Chapter16/onlineStore/app/Providers/AppServiceProvider.php delete mode 100644 Chapter16/onlineStore/app/Providers/AuthServiceProvider.php delete mode 100644 Chapter16/onlineStore/app/Providers/BroadcastServiceProvider.php delete mode 100644 Chapter16/onlineStore/app/Providers/EventServiceProvider.php delete mode 100644 Chapter16/onlineStore/app/Providers/RouteServiceProvider.php delete mode 100644 Chapter16/onlineStore/artisan delete mode 100644 Chapter16/onlineStore/bootstrap/app.php delete mode 100644 Chapter16/onlineStore/bootstrap/cache/.gitignore delete mode 100644 Chapter16/onlineStore/composer.json delete mode 100644 Chapter16/onlineStore/composer.lock delete mode 100644 Chapter16/onlineStore/config/app.php delete mode 100644 Chapter16/onlineStore/config/auth.php delete mode 100644 Chapter16/onlineStore/config/broadcasting.php delete mode 100644 Chapter16/onlineStore/config/cache.php delete mode 100644 Chapter16/onlineStore/config/cors.php delete mode 100644 Chapter16/onlineStore/config/database.php delete mode 100644 Chapter16/onlineStore/config/filesystems.php delete mode 100644 Chapter16/onlineStore/config/hashing.php delete mode 100644 Chapter16/onlineStore/config/logging.php delete mode 100644 Chapter16/onlineStore/config/mail.php delete mode 100644 Chapter16/onlineStore/config/queue.php delete mode 100644 Chapter16/onlineStore/config/sanctum.php delete mode 100644 Chapter16/onlineStore/config/services.php delete mode 100644 Chapter16/onlineStore/config/session.php delete mode 100644 Chapter16/onlineStore/config/view.php delete mode 100644 Chapter16/onlineStore/database/.gitignore delete mode 100644 Chapter16/onlineStore/database/factories/UserFactory.php delete mode 100644 Chapter16/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php delete mode 100644 Chapter16/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php delete mode 100644 Chapter16/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php delete mode 100644 Chapter16/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php delete mode 100644 Chapter16/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php delete mode 100644 Chapter16/onlineStore/database/seeders/DatabaseSeeder.php delete mode 100644 Chapter16/onlineStore/lang/en.json delete mode 100644 Chapter16/onlineStore/lang/en/auth.php delete mode 100644 Chapter16/onlineStore/lang/en/pagination.php delete mode 100644 Chapter16/onlineStore/lang/en/passwords.php delete mode 100644 Chapter16/onlineStore/lang/en/validation.php delete mode 100644 Chapter16/onlineStore/package.json delete mode 100644 Chapter16/onlineStore/phpcs.xml delete mode 100644 Chapter16/onlineStore/phpunit.xml delete mode 100644 Chapter16/onlineStore/public/.htaccess delete mode 100644 Chapter16/onlineStore/public/css/admin.css delete mode 100644 Chapter16/onlineStore/public/css/app.css delete mode 100644 Chapter16/onlineStore/public/favicon.ico delete mode 100644 Chapter16/onlineStore/public/img/game.png delete mode 100644 Chapter16/onlineStore/public/img/safe.png delete mode 100644 Chapter16/onlineStore/public/img/submarine.png delete mode 100644 Chapter16/onlineStore/public/img/undraw_profile.svg delete mode 100644 Chapter16/onlineStore/public/index.php delete mode 100644 Chapter16/onlineStore/public/robots.txt delete mode 100644 Chapter16/onlineStore/resources/css/app.css delete mode 100644 Chapter16/onlineStore/resources/js/app.js delete mode 100644 Chapter16/onlineStore/resources/js/bootstrap.js delete mode 100644 Chapter16/onlineStore/resources/views/admin/home/index.blade.php delete mode 100644 Chapter16/onlineStore/resources/views/admin/product/index.blade.php delete mode 100644 Chapter16/onlineStore/resources/views/home/about.blade.php delete mode 100644 Chapter16/onlineStore/resources/views/home/index.blade.php delete mode 100644 Chapter16/onlineStore/resources/views/layouts/admin.blade.php delete mode 100644 Chapter16/onlineStore/resources/views/layouts/app.blade.php delete mode 100644 Chapter16/onlineStore/resources/views/product/index.blade.php delete mode 100644 Chapter16/onlineStore/resources/views/product/show.blade.php delete mode 100644 Chapter16/onlineStore/resources/views/welcome.blade.php delete mode 100644 Chapter16/onlineStore/routes/api.php delete mode 100644 Chapter16/onlineStore/routes/channels.php delete mode 100644 Chapter16/onlineStore/routes/console.php delete mode 100644 Chapter16/onlineStore/routes/web.php delete mode 100644 Chapter16/onlineStore/storage/app/.gitignore delete mode 100644 Chapter16/onlineStore/storage/app/public/.gitignore delete mode 100644 Chapter16/onlineStore/storage/framework/.gitignore delete mode 100644 Chapter16/onlineStore/storage/framework/cache/.gitignore delete mode 100644 Chapter16/onlineStore/storage/framework/cache/data/.gitignore delete mode 100644 Chapter16/onlineStore/storage/framework/sessions/.gitignore delete mode 100644 Chapter16/onlineStore/storage/framework/testing/.gitignore delete mode 100644 Chapter16/onlineStore/storage/framework/views/.gitignore delete mode 100644 Chapter16/onlineStore/storage/logs/.gitignore delete mode 100644 Chapter16/onlineStore/tests/CreatesApplication.php delete mode 100644 Chapter16/onlineStore/tests/Feature/ExampleTest.php delete mode 100644 Chapter16/onlineStore/tests/TestCase.php delete mode 100644 Chapter16/onlineStore/tests/Unit/ExampleTest.php delete mode 100644 Chapter16/onlineStore/webpack.mix.js delete mode 100644 Chapter17-Advanced/onlineStore/.editorconfig delete mode 100644 Chapter17-Advanced/onlineStore/.env.example delete mode 100644 Chapter17-Advanced/onlineStore/.gitattributes delete mode 100644 Chapter17-Advanced/onlineStore/.gitignore delete mode 100644 Chapter17-Advanced/onlineStore/.styleci.yml delete mode 100644 Chapter17-Advanced/onlineStore/README.md delete mode 100644 Chapter17-Advanced/onlineStore/app/Console/Kernel.php delete mode 100644 Chapter17-Advanced/onlineStore/app/Exceptions/Handler.php delete mode 100644 Chapter17-Advanced/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php delete mode 100644 Chapter17-Advanced/onlineStore/app/Http/Controllers/Admin/AdminProductController.php delete mode 100644 Chapter17-Advanced/onlineStore/app/Http/Controllers/Controller.php delete mode 100644 Chapter17-Advanced/onlineStore/app/Http/Controllers/HomeController.php delete mode 100644 Chapter17-Advanced/onlineStore/app/Http/Controllers/ProductController.php delete mode 100644 Chapter17-Advanced/onlineStore/app/Http/Kernel.php delete mode 100644 Chapter17-Advanced/onlineStore/app/Http/Middleware/Authenticate.php delete mode 100644 Chapter17-Advanced/onlineStore/app/Http/Middleware/EncryptCookies.php delete mode 100644 Chapter17-Advanced/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php delete mode 100644 Chapter17-Advanced/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php delete mode 100644 Chapter17-Advanced/onlineStore/app/Http/Middleware/TrimStrings.php delete mode 100644 Chapter17-Advanced/onlineStore/app/Http/Middleware/TrustHosts.php delete mode 100644 Chapter17-Advanced/onlineStore/app/Http/Middleware/TrustProxies.php delete mode 100644 Chapter17-Advanced/onlineStore/app/Http/Middleware/VerifyCsrfToken.php delete mode 100644 Chapter17-Advanced/onlineStore/app/Models/Product.php delete mode 100644 Chapter17-Advanced/onlineStore/app/Models/User.php delete mode 100644 Chapter17-Advanced/onlineStore/app/Providers/AppServiceProvider.php delete mode 100644 Chapter17-Advanced/onlineStore/app/Providers/AuthServiceProvider.php delete mode 100644 Chapter17-Advanced/onlineStore/app/Providers/BroadcastServiceProvider.php delete mode 100644 Chapter17-Advanced/onlineStore/app/Providers/EventServiceProvider.php delete mode 100644 Chapter17-Advanced/onlineStore/app/Providers/RouteServiceProvider.php delete mode 100644 Chapter17-Advanced/onlineStore/app/Traits/HasClassicSetter.php delete mode 100644 Chapter17-Advanced/onlineStore/artisan delete mode 100644 Chapter17-Advanced/onlineStore/bootstrap/app.php delete mode 100644 Chapter17-Advanced/onlineStore/bootstrap/cache/.gitignore delete mode 100644 Chapter17-Advanced/onlineStore/composer.json delete mode 100644 Chapter17-Advanced/onlineStore/composer.lock delete mode 100644 Chapter17-Advanced/onlineStore/config/app.php delete mode 100644 Chapter17-Advanced/onlineStore/config/auth.php delete mode 100644 Chapter17-Advanced/onlineStore/config/broadcasting.php delete mode 100644 Chapter17-Advanced/onlineStore/config/cache.php delete mode 100644 Chapter17-Advanced/onlineStore/config/cors.php delete mode 100644 Chapter17-Advanced/onlineStore/config/database.php delete mode 100644 Chapter17-Advanced/onlineStore/config/filesystems.php delete mode 100644 Chapter17-Advanced/onlineStore/config/hashing.php delete mode 100644 Chapter17-Advanced/onlineStore/config/logging.php delete mode 100644 Chapter17-Advanced/onlineStore/config/mail.php delete mode 100644 Chapter17-Advanced/onlineStore/config/queue.php delete mode 100644 Chapter17-Advanced/onlineStore/config/sanctum.php delete mode 100644 Chapter17-Advanced/onlineStore/config/services.php delete mode 100644 Chapter17-Advanced/onlineStore/config/session.php delete mode 100644 Chapter17-Advanced/onlineStore/config/view.php delete mode 100644 Chapter17-Advanced/onlineStore/database/.gitignore delete mode 100644 Chapter17-Advanced/onlineStore/database/factories/UserFactory.php delete mode 100644 Chapter17-Advanced/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php delete mode 100644 Chapter17-Advanced/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php delete mode 100644 Chapter17-Advanced/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php delete mode 100644 Chapter17-Advanced/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php delete mode 100644 Chapter17-Advanced/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php delete mode 100644 Chapter17-Advanced/onlineStore/database/seeders/DatabaseSeeder.php delete mode 100644 Chapter17-Advanced/onlineStore/lang/en.json delete mode 100644 Chapter17-Advanced/onlineStore/lang/en/auth.php delete mode 100644 Chapter17-Advanced/onlineStore/lang/en/pagination.php delete mode 100644 Chapter17-Advanced/onlineStore/lang/en/passwords.php delete mode 100644 Chapter17-Advanced/onlineStore/lang/en/validation.php delete mode 100644 Chapter17-Advanced/onlineStore/package.json delete mode 100644 Chapter17-Advanced/onlineStore/phpcs.xml delete mode 100644 Chapter17-Advanced/onlineStore/phpunit.xml delete mode 100644 Chapter17-Advanced/onlineStore/public/.htaccess delete mode 100644 Chapter17-Advanced/onlineStore/public/css/admin.css delete mode 100644 Chapter17-Advanced/onlineStore/public/css/app.css delete mode 100644 Chapter17-Advanced/onlineStore/public/favicon.ico delete mode 100644 Chapter17-Advanced/onlineStore/public/img/game.png delete mode 100644 Chapter17-Advanced/onlineStore/public/img/safe.png delete mode 100644 Chapter17-Advanced/onlineStore/public/img/submarine.png delete mode 100644 Chapter17-Advanced/onlineStore/public/img/undraw_profile.svg delete mode 100644 Chapter17-Advanced/onlineStore/public/index.php delete mode 100644 Chapter17-Advanced/onlineStore/public/robots.txt delete mode 100644 Chapter17-Advanced/onlineStore/resources/css/app.css delete mode 100644 Chapter17-Advanced/onlineStore/resources/js/app.js delete mode 100644 Chapter17-Advanced/onlineStore/resources/js/bootstrap.js delete mode 100644 Chapter17-Advanced/onlineStore/resources/views/admin/home/index.blade.php delete mode 100644 Chapter17-Advanced/onlineStore/resources/views/admin/product/index.blade.php delete mode 100644 Chapter17-Advanced/onlineStore/resources/views/home/about.blade.php delete mode 100644 Chapter17-Advanced/onlineStore/resources/views/home/index.blade.php delete mode 100644 Chapter17-Advanced/onlineStore/resources/views/layouts/admin.blade.php delete mode 100644 Chapter17-Advanced/onlineStore/resources/views/layouts/app.blade.php delete mode 100644 Chapter17-Advanced/onlineStore/resources/views/product/index.blade.php delete mode 100644 Chapter17-Advanced/onlineStore/resources/views/product/show.blade.php delete mode 100644 Chapter17-Advanced/onlineStore/resources/views/welcome.blade.php delete mode 100644 Chapter17-Advanced/onlineStore/routes/api.php delete mode 100644 Chapter17-Advanced/onlineStore/routes/channels.php delete mode 100644 Chapter17-Advanced/onlineStore/routes/console.php delete mode 100644 Chapter17-Advanced/onlineStore/routes/web.php delete mode 100644 Chapter17-Advanced/onlineStore/storage/app/.gitignore delete mode 100644 Chapter17-Advanced/onlineStore/storage/app/public/.gitignore delete mode 100644 Chapter17-Advanced/onlineStore/storage/framework/.gitignore delete mode 100644 Chapter17-Advanced/onlineStore/storage/framework/cache/.gitignore delete mode 100644 Chapter17-Advanced/onlineStore/storage/framework/cache/data/.gitignore delete mode 100644 Chapter17-Advanced/onlineStore/storage/framework/sessions/.gitignore delete mode 100644 Chapter17-Advanced/onlineStore/storage/framework/testing/.gitignore delete mode 100644 Chapter17-Advanced/onlineStore/storage/framework/views/.gitignore delete mode 100644 Chapter17-Advanced/onlineStore/storage/logs/.gitignore delete mode 100644 Chapter17-Advanced/onlineStore/tests/CreatesApplication.php delete mode 100644 Chapter17-Advanced/onlineStore/tests/Feature/ExampleTest.php delete mode 100644 Chapter17-Advanced/onlineStore/tests/TestCase.php delete mode 100644 Chapter17-Advanced/onlineStore/tests/Unit/ExampleTest.php delete mode 100644 Chapter17-Advanced/onlineStore/webpack.mix.js delete mode 100644 Chapter17/onlineStore/.editorconfig delete mode 100644 Chapter17/onlineStore/.env.example delete mode 100644 Chapter17/onlineStore/.gitattributes delete mode 100644 Chapter17/onlineStore/.gitignore delete mode 100644 Chapter17/onlineStore/.styleci.yml delete mode 100644 Chapter17/onlineStore/README.md delete mode 100644 Chapter17/onlineStore/app/Console/Kernel.php delete mode 100644 Chapter17/onlineStore/app/Exceptions/Handler.php delete mode 100644 Chapter17/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php delete mode 100644 Chapter17/onlineStore/app/Http/Controllers/Admin/AdminProductController.php delete mode 100644 Chapter17/onlineStore/app/Http/Controllers/Controller.php delete mode 100644 Chapter17/onlineStore/app/Http/Controllers/HomeController.php delete mode 100644 Chapter17/onlineStore/app/Http/Controllers/ProductController.php delete mode 100644 Chapter17/onlineStore/app/Http/Kernel.php delete mode 100644 Chapter17/onlineStore/app/Http/Middleware/Authenticate.php delete mode 100644 Chapter17/onlineStore/app/Http/Middleware/EncryptCookies.php delete mode 100644 Chapter17/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php delete mode 100644 Chapter17/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php delete mode 100644 Chapter17/onlineStore/app/Http/Middleware/TrimStrings.php delete mode 100644 Chapter17/onlineStore/app/Http/Middleware/TrustHosts.php delete mode 100644 Chapter17/onlineStore/app/Http/Middleware/TrustProxies.php delete mode 100644 Chapter17/onlineStore/app/Http/Middleware/VerifyCsrfToken.php delete mode 100644 Chapter17/onlineStore/app/Models/Product.php delete mode 100644 Chapter17/onlineStore/app/Models/User.php delete mode 100644 Chapter17/onlineStore/app/Providers/AppServiceProvider.php delete mode 100644 Chapter17/onlineStore/app/Providers/AuthServiceProvider.php delete mode 100644 Chapter17/onlineStore/app/Providers/BroadcastServiceProvider.php delete mode 100644 Chapter17/onlineStore/app/Providers/EventServiceProvider.php delete mode 100644 Chapter17/onlineStore/app/Providers/RouteServiceProvider.php delete mode 100644 Chapter17/onlineStore/artisan delete mode 100644 Chapter17/onlineStore/bootstrap/app.php delete mode 100644 Chapter17/onlineStore/bootstrap/cache/.gitignore delete mode 100644 Chapter17/onlineStore/composer.json delete mode 100644 Chapter17/onlineStore/composer.lock delete mode 100644 Chapter17/onlineStore/config/app.php delete mode 100644 Chapter17/onlineStore/config/auth.php delete mode 100644 Chapter17/onlineStore/config/broadcasting.php delete mode 100644 Chapter17/onlineStore/config/cache.php delete mode 100644 Chapter17/onlineStore/config/cors.php delete mode 100644 Chapter17/onlineStore/config/database.php delete mode 100644 Chapter17/onlineStore/config/filesystems.php delete mode 100644 Chapter17/onlineStore/config/hashing.php delete mode 100644 Chapter17/onlineStore/config/logging.php delete mode 100644 Chapter17/onlineStore/config/mail.php delete mode 100644 Chapter17/onlineStore/config/queue.php delete mode 100644 Chapter17/onlineStore/config/sanctum.php delete mode 100644 Chapter17/onlineStore/config/services.php delete mode 100644 Chapter17/onlineStore/config/session.php delete mode 100644 Chapter17/onlineStore/config/view.php delete mode 100644 Chapter17/onlineStore/database/.gitignore delete mode 100644 Chapter17/onlineStore/database/factories/UserFactory.php delete mode 100644 Chapter17/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php delete mode 100644 Chapter17/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php delete mode 100644 Chapter17/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php delete mode 100644 Chapter17/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php delete mode 100644 Chapter17/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php delete mode 100644 Chapter17/onlineStore/database/seeders/DatabaseSeeder.php delete mode 100644 Chapter17/onlineStore/lang/en.json delete mode 100644 Chapter17/onlineStore/lang/en/auth.php delete mode 100644 Chapter17/onlineStore/lang/en/pagination.php delete mode 100644 Chapter17/onlineStore/lang/en/passwords.php delete mode 100644 Chapter17/onlineStore/lang/en/validation.php delete mode 100644 Chapter17/onlineStore/package.json delete mode 100644 Chapter17/onlineStore/phpcs.xml delete mode 100644 Chapter17/onlineStore/phpunit.xml delete mode 100644 Chapter17/onlineStore/public/.htaccess delete mode 100644 Chapter17/onlineStore/public/css/admin.css delete mode 100644 Chapter17/onlineStore/public/css/app.css delete mode 100644 Chapter17/onlineStore/public/favicon.ico delete mode 100644 Chapter17/onlineStore/public/img/game.png delete mode 100644 Chapter17/onlineStore/public/img/safe.png delete mode 100644 Chapter17/onlineStore/public/img/submarine.png delete mode 100644 Chapter17/onlineStore/public/img/undraw_profile.svg delete mode 100644 Chapter17/onlineStore/public/index.php delete mode 100644 Chapter17/onlineStore/public/robots.txt delete mode 100644 Chapter17/onlineStore/resources/css/app.css delete mode 100644 Chapter17/onlineStore/resources/js/app.js delete mode 100644 Chapter17/onlineStore/resources/js/bootstrap.js delete mode 100644 Chapter17/onlineStore/resources/views/admin/home/index.blade.php delete mode 100644 Chapter17/onlineStore/resources/views/admin/product/index.blade.php delete mode 100644 Chapter17/onlineStore/resources/views/home/about.blade.php delete mode 100644 Chapter17/onlineStore/resources/views/home/index.blade.php delete mode 100644 Chapter17/onlineStore/resources/views/layouts/admin.blade.php delete mode 100644 Chapter17/onlineStore/resources/views/layouts/app.blade.php delete mode 100644 Chapter17/onlineStore/resources/views/product/index.blade.php delete mode 100644 Chapter17/onlineStore/resources/views/product/show.blade.php delete mode 100644 Chapter17/onlineStore/resources/views/welcome.blade.php delete mode 100644 Chapter17/onlineStore/routes/api.php delete mode 100644 Chapter17/onlineStore/routes/channels.php delete mode 100644 Chapter17/onlineStore/routes/console.php delete mode 100644 Chapter17/onlineStore/routes/web.php delete mode 100644 Chapter17/onlineStore/storage/app/.gitignore delete mode 100644 Chapter17/onlineStore/storage/app/public/.gitignore delete mode 100644 Chapter17/onlineStore/storage/framework/.gitignore delete mode 100644 Chapter17/onlineStore/storage/framework/cache/.gitignore delete mode 100644 Chapter17/onlineStore/storage/framework/cache/data/.gitignore delete mode 100644 Chapter17/onlineStore/storage/framework/sessions/.gitignore delete mode 100644 Chapter17/onlineStore/storage/framework/testing/.gitignore delete mode 100644 Chapter17/onlineStore/storage/framework/views/.gitignore delete mode 100644 Chapter17/onlineStore/storage/logs/.gitignore delete mode 100644 Chapter17/onlineStore/tests/CreatesApplication.php delete mode 100644 Chapter17/onlineStore/tests/Feature/ExampleTest.php delete mode 100644 Chapter17/onlineStore/tests/TestCase.php delete mode 100644 Chapter17/onlineStore/tests/Unit/ExampleTest.php delete mode 100644 Chapter17/onlineStore/webpack.mix.js delete mode 100644 Chapter18/onlineStore/.editorconfig delete mode 100644 Chapter18/onlineStore/.env.example delete mode 100644 Chapter18/onlineStore/.gitattributes delete mode 100644 Chapter18/onlineStore/.gitignore delete mode 100644 Chapter18/onlineStore/.styleci.yml delete mode 100644 Chapter18/onlineStore/README.md delete mode 100644 Chapter18/onlineStore/app/Console/Kernel.php delete mode 100644 Chapter18/onlineStore/app/Exceptions/Handler.php delete mode 100644 Chapter18/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php delete mode 100644 Chapter18/onlineStore/app/Http/Controllers/Admin/AdminProductController.php delete mode 100644 Chapter18/onlineStore/app/Http/Controllers/Controller.php delete mode 100644 Chapter18/onlineStore/app/Http/Controllers/HomeController.php delete mode 100644 Chapter18/onlineStore/app/Http/Controllers/ProductController.php delete mode 100644 Chapter18/onlineStore/app/Http/Kernel.php delete mode 100644 Chapter18/onlineStore/app/Http/Middleware/Authenticate.php delete mode 100644 Chapter18/onlineStore/app/Http/Middleware/EncryptCookies.php delete mode 100644 Chapter18/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php delete mode 100644 Chapter18/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php delete mode 100644 Chapter18/onlineStore/app/Http/Middleware/TrimStrings.php delete mode 100644 Chapter18/onlineStore/app/Http/Middleware/TrustHosts.php delete mode 100644 Chapter18/onlineStore/app/Http/Middleware/TrustProxies.php delete mode 100644 Chapter18/onlineStore/app/Http/Middleware/VerifyCsrfToken.php delete mode 100644 Chapter18/onlineStore/app/Models/Product.php delete mode 100644 Chapter18/onlineStore/app/Models/User.php delete mode 100644 Chapter18/onlineStore/app/Providers/AppServiceProvider.php delete mode 100644 Chapter18/onlineStore/app/Providers/AuthServiceProvider.php delete mode 100644 Chapter18/onlineStore/app/Providers/BroadcastServiceProvider.php delete mode 100644 Chapter18/onlineStore/app/Providers/EventServiceProvider.php delete mode 100644 Chapter18/onlineStore/app/Providers/RouteServiceProvider.php delete mode 100644 Chapter18/onlineStore/artisan delete mode 100644 Chapter18/onlineStore/bootstrap/app.php delete mode 100644 Chapter18/onlineStore/bootstrap/cache/.gitignore delete mode 100644 Chapter18/onlineStore/composer.json delete mode 100644 Chapter18/onlineStore/composer.lock delete mode 100644 Chapter18/onlineStore/config/app.php delete mode 100644 Chapter18/onlineStore/config/auth.php delete mode 100644 Chapter18/onlineStore/config/broadcasting.php delete mode 100644 Chapter18/onlineStore/config/cache.php delete mode 100644 Chapter18/onlineStore/config/cors.php delete mode 100644 Chapter18/onlineStore/config/database.php delete mode 100644 Chapter18/onlineStore/config/filesystems.php delete mode 100644 Chapter18/onlineStore/config/hashing.php delete mode 100644 Chapter18/onlineStore/config/logging.php delete mode 100644 Chapter18/onlineStore/config/mail.php delete mode 100644 Chapter18/onlineStore/config/queue.php delete mode 100644 Chapter18/onlineStore/config/sanctum.php delete mode 100644 Chapter18/onlineStore/config/services.php delete mode 100644 Chapter18/onlineStore/config/session.php delete mode 100644 Chapter18/onlineStore/config/view.php delete mode 100644 Chapter18/onlineStore/database/.gitignore delete mode 100644 Chapter18/onlineStore/database/factories/UserFactory.php delete mode 100644 Chapter18/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php delete mode 100644 Chapter18/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php delete mode 100644 Chapter18/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php delete mode 100644 Chapter18/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php delete mode 100644 Chapter18/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php delete mode 100644 Chapter18/onlineStore/database/seeders/DatabaseSeeder.php delete mode 100644 Chapter18/onlineStore/lang/en.json delete mode 100644 Chapter18/onlineStore/lang/en/auth.php delete mode 100644 Chapter18/onlineStore/lang/en/pagination.php delete mode 100644 Chapter18/onlineStore/lang/en/passwords.php delete mode 100644 Chapter18/onlineStore/lang/en/validation.php delete mode 100644 Chapter18/onlineStore/package.json delete mode 100644 Chapter18/onlineStore/phpcs.xml delete mode 100644 Chapter18/onlineStore/phpunit.xml delete mode 100644 Chapter18/onlineStore/public/.htaccess delete mode 100644 Chapter18/onlineStore/public/css/admin.css delete mode 100644 Chapter18/onlineStore/public/css/app.css delete mode 100644 Chapter18/onlineStore/public/favicon.ico delete mode 100644 Chapter18/onlineStore/public/img/game.png delete mode 100644 Chapter18/onlineStore/public/img/safe.png delete mode 100644 Chapter18/onlineStore/public/img/submarine.png delete mode 100644 Chapter18/onlineStore/public/img/undraw_profile.svg delete mode 100644 Chapter18/onlineStore/public/index.php delete mode 100644 Chapter18/onlineStore/public/robots.txt delete mode 100644 Chapter18/onlineStore/resources/css/app.css delete mode 100644 Chapter18/onlineStore/resources/js/app.js delete mode 100644 Chapter18/onlineStore/resources/js/bootstrap.js delete mode 100644 Chapter18/onlineStore/resources/views/admin/home/index.blade.php delete mode 100644 Chapter18/onlineStore/resources/views/admin/product/index.blade.php delete mode 100644 Chapter18/onlineStore/resources/views/home/about.blade.php delete mode 100644 Chapter18/onlineStore/resources/views/home/index.blade.php delete mode 100644 Chapter18/onlineStore/resources/views/layouts/admin.blade.php delete mode 100644 Chapter18/onlineStore/resources/views/layouts/app.blade.php delete mode 100644 Chapter18/onlineStore/resources/views/product/index.blade.php delete mode 100644 Chapter18/onlineStore/resources/views/product/show.blade.php delete mode 100644 Chapter18/onlineStore/resources/views/welcome.blade.php delete mode 100644 Chapter18/onlineStore/routes/api.php delete mode 100644 Chapter18/onlineStore/routes/channels.php delete mode 100644 Chapter18/onlineStore/routes/console.php delete mode 100644 Chapter18/onlineStore/routes/web.php delete mode 100644 Chapter18/onlineStore/storage/app/.gitignore delete mode 100644 Chapter18/onlineStore/storage/app/public/.gitignore delete mode 100644 Chapter18/onlineStore/storage/framework/.gitignore delete mode 100644 Chapter18/onlineStore/storage/framework/cache/.gitignore delete mode 100644 Chapter18/onlineStore/storage/framework/cache/data/.gitignore delete mode 100644 Chapter18/onlineStore/storage/framework/sessions/.gitignore delete mode 100644 Chapter18/onlineStore/storage/framework/testing/.gitignore delete mode 100644 Chapter18/onlineStore/storage/framework/views/.gitignore delete mode 100644 Chapter18/onlineStore/storage/logs/.gitignore delete mode 100644 Chapter18/onlineStore/tests/CreatesApplication.php delete mode 100644 Chapter18/onlineStore/tests/Feature/ExampleTest.php delete mode 100644 Chapter18/onlineStore/tests/TestCase.php delete mode 100644 Chapter18/onlineStore/tests/Unit/ExampleTest.php delete mode 100644 Chapter18/onlineStore/webpack.mix.js delete mode 100644 Chapter19/onlineStore/.editorconfig delete mode 100644 Chapter19/onlineStore/.env.example delete mode 100644 Chapter19/onlineStore/.gitattributes delete mode 100644 Chapter19/onlineStore/.gitignore delete mode 100644 Chapter19/onlineStore/.styleci.yml delete mode 100644 Chapter19/onlineStore/README.md delete mode 100644 Chapter19/onlineStore/app/Console/Kernel.php delete mode 100644 Chapter19/onlineStore/app/Exceptions/Handler.php delete mode 100644 Chapter19/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php delete mode 100644 Chapter19/onlineStore/app/Http/Controllers/Admin/AdminProductController.php delete mode 100644 Chapter19/onlineStore/app/Http/Controllers/Controller.php delete mode 100644 Chapter19/onlineStore/app/Http/Controllers/HomeController.php delete mode 100644 Chapter19/onlineStore/app/Http/Controllers/ProductController.php delete mode 100644 Chapter19/onlineStore/app/Http/Kernel.php delete mode 100644 Chapter19/onlineStore/app/Http/Middleware/Authenticate.php delete mode 100644 Chapter19/onlineStore/app/Http/Middleware/EncryptCookies.php delete mode 100644 Chapter19/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php delete mode 100644 Chapter19/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php delete mode 100644 Chapter19/onlineStore/app/Http/Middleware/TrimStrings.php delete mode 100644 Chapter19/onlineStore/app/Http/Middleware/TrustHosts.php delete mode 100644 Chapter19/onlineStore/app/Http/Middleware/TrustProxies.php delete mode 100644 Chapter19/onlineStore/app/Http/Middleware/VerifyCsrfToken.php delete mode 100644 Chapter19/onlineStore/app/Models/Product.php delete mode 100644 Chapter19/onlineStore/app/Models/User.php delete mode 100644 Chapter19/onlineStore/app/Providers/AppServiceProvider.php delete mode 100644 Chapter19/onlineStore/app/Providers/AuthServiceProvider.php delete mode 100644 Chapter19/onlineStore/app/Providers/BroadcastServiceProvider.php delete mode 100644 Chapter19/onlineStore/app/Providers/EventServiceProvider.php delete mode 100644 Chapter19/onlineStore/app/Providers/RouteServiceProvider.php delete mode 100644 Chapter19/onlineStore/artisan delete mode 100644 Chapter19/onlineStore/bootstrap/app.php delete mode 100644 Chapter19/onlineStore/bootstrap/cache/.gitignore delete mode 100644 Chapter19/onlineStore/composer.json delete mode 100644 Chapter19/onlineStore/composer.lock delete mode 100644 Chapter19/onlineStore/config/app.php delete mode 100644 Chapter19/onlineStore/config/auth.php delete mode 100644 Chapter19/onlineStore/config/broadcasting.php delete mode 100644 Chapter19/onlineStore/config/cache.php delete mode 100644 Chapter19/onlineStore/config/cors.php delete mode 100644 Chapter19/onlineStore/config/database.php delete mode 100644 Chapter19/onlineStore/config/filesystems.php delete mode 100644 Chapter19/onlineStore/config/hashing.php delete mode 100644 Chapter19/onlineStore/config/logging.php delete mode 100644 Chapter19/onlineStore/config/mail.php delete mode 100644 Chapter19/onlineStore/config/queue.php delete mode 100644 Chapter19/onlineStore/config/sanctum.php delete mode 100644 Chapter19/onlineStore/config/services.php delete mode 100644 Chapter19/onlineStore/config/session.php delete mode 100644 Chapter19/onlineStore/config/view.php delete mode 100644 Chapter19/onlineStore/database/.gitignore delete mode 100644 Chapter19/onlineStore/database/factories/UserFactory.php delete mode 100644 Chapter19/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php delete mode 100644 Chapter19/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php delete mode 100644 Chapter19/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php delete mode 100644 Chapter19/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php delete mode 100644 Chapter19/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php delete mode 100644 Chapter19/onlineStore/database/seeders/DatabaseSeeder.php delete mode 100644 Chapter19/onlineStore/lang/en.json delete mode 100644 Chapter19/onlineStore/lang/en/auth.php delete mode 100644 Chapter19/onlineStore/lang/en/pagination.php delete mode 100644 Chapter19/onlineStore/lang/en/passwords.php delete mode 100644 Chapter19/onlineStore/lang/en/validation.php delete mode 100644 Chapter19/onlineStore/package.json delete mode 100644 Chapter19/onlineStore/phpcs.xml delete mode 100644 Chapter19/onlineStore/phpunit.xml delete mode 100644 Chapter19/onlineStore/public/.htaccess delete mode 100644 Chapter19/onlineStore/public/css/admin.css delete mode 100644 Chapter19/onlineStore/public/css/app.css delete mode 100644 Chapter19/onlineStore/public/favicon.ico delete mode 100644 Chapter19/onlineStore/public/img/game.png delete mode 100644 Chapter19/onlineStore/public/img/safe.png delete mode 100644 Chapter19/onlineStore/public/img/submarine.png delete mode 100644 Chapter19/onlineStore/public/img/undraw_profile.svg delete mode 100644 Chapter19/onlineStore/public/index.php delete mode 100644 Chapter19/onlineStore/public/robots.txt delete mode 100644 Chapter19/onlineStore/resources/css/app.css delete mode 100644 Chapter19/onlineStore/resources/js/app.js delete mode 100644 Chapter19/onlineStore/resources/js/bootstrap.js delete mode 100644 Chapter19/onlineStore/resources/views/admin/home/index.blade.php delete mode 100644 Chapter19/onlineStore/resources/views/admin/product/edit.blade.php delete mode 100644 Chapter19/onlineStore/resources/views/admin/product/index.blade.php delete mode 100644 Chapter19/onlineStore/resources/views/home/about.blade.php delete mode 100644 Chapter19/onlineStore/resources/views/home/index.blade.php delete mode 100644 Chapter19/onlineStore/resources/views/layouts/admin.blade.php delete mode 100644 Chapter19/onlineStore/resources/views/layouts/app.blade.php delete mode 100644 Chapter19/onlineStore/resources/views/product/index.blade.php delete mode 100644 Chapter19/onlineStore/resources/views/product/show.blade.php delete mode 100644 Chapter19/onlineStore/resources/views/welcome.blade.php delete mode 100644 Chapter19/onlineStore/routes/api.php delete mode 100644 Chapter19/onlineStore/routes/channels.php delete mode 100644 Chapter19/onlineStore/routes/console.php delete mode 100644 Chapter19/onlineStore/routes/web.php delete mode 100644 Chapter19/onlineStore/storage/app/.gitignore delete mode 100644 Chapter19/onlineStore/storage/app/public/.gitignore delete mode 100644 Chapter19/onlineStore/storage/framework/.gitignore delete mode 100644 Chapter19/onlineStore/storage/framework/cache/.gitignore delete mode 100644 Chapter19/onlineStore/storage/framework/cache/data/.gitignore delete mode 100644 Chapter19/onlineStore/storage/framework/sessions/.gitignore delete mode 100644 Chapter19/onlineStore/storage/framework/testing/.gitignore delete mode 100644 Chapter19/onlineStore/storage/framework/views/.gitignore delete mode 100644 Chapter19/onlineStore/storage/logs/.gitignore delete mode 100644 Chapter19/onlineStore/tests/CreatesApplication.php delete mode 100644 Chapter19/onlineStore/tests/Feature/ExampleTest.php delete mode 100644 Chapter19/onlineStore/tests/TestCase.php delete mode 100644 Chapter19/onlineStore/tests/Unit/ExampleTest.php delete mode 100644 Chapter19/onlineStore/webpack.mix.js delete mode 100644 Chapter20/onlineStore/.editorconfig delete mode 100644 Chapter20/onlineStore/.env.example delete mode 100644 Chapter20/onlineStore/.gitattributes delete mode 100644 Chapter20/onlineStore/.gitignore delete mode 100644 Chapter20/onlineStore/.styleci.yml delete mode 100644 Chapter20/onlineStore/README.md delete mode 100644 Chapter20/onlineStore/app/Console/Kernel.php delete mode 100644 Chapter20/onlineStore/app/Exceptions/Handler.php delete mode 100644 Chapter20/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php delete mode 100644 Chapter20/onlineStore/app/Http/Controllers/Admin/AdminProductController.php delete mode 100644 Chapter20/onlineStore/app/Http/Controllers/Controller.php delete mode 100644 Chapter20/onlineStore/app/Http/Controllers/HomeController.php delete mode 100644 Chapter20/onlineStore/app/Http/Controllers/ProductController.php delete mode 100644 Chapter20/onlineStore/app/Http/Kernel.php delete mode 100644 Chapter20/onlineStore/app/Http/Middleware/Authenticate.php delete mode 100644 Chapter20/onlineStore/app/Http/Middleware/EncryptCookies.php delete mode 100644 Chapter20/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php delete mode 100644 Chapter20/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php delete mode 100644 Chapter20/onlineStore/app/Http/Middleware/TrimStrings.php delete mode 100644 Chapter20/onlineStore/app/Http/Middleware/TrustHosts.php delete mode 100644 Chapter20/onlineStore/app/Http/Middleware/TrustProxies.php delete mode 100644 Chapter20/onlineStore/app/Http/Middleware/VerifyCsrfToken.php delete mode 100644 Chapter20/onlineStore/app/Models/Product.php delete mode 100644 Chapter20/onlineStore/app/Models/User.php delete mode 100644 Chapter20/onlineStore/app/Providers/AppServiceProvider.php delete mode 100644 Chapter20/onlineStore/app/Providers/AuthServiceProvider.php delete mode 100644 Chapter20/onlineStore/app/Providers/BroadcastServiceProvider.php delete mode 100644 Chapter20/onlineStore/app/Providers/EventServiceProvider.php delete mode 100644 Chapter20/onlineStore/app/Providers/RouteServiceProvider.php delete mode 100644 Chapter20/onlineStore/artisan delete mode 100644 Chapter20/onlineStore/bootstrap/app.php delete mode 100644 Chapter20/onlineStore/bootstrap/cache/.gitignore delete mode 100644 Chapter20/onlineStore/composer.json delete mode 100644 Chapter20/onlineStore/composer.lock delete mode 100644 Chapter20/onlineStore/config/app.php delete mode 100644 Chapter20/onlineStore/config/auth.php delete mode 100644 Chapter20/onlineStore/config/broadcasting.php delete mode 100644 Chapter20/onlineStore/config/cache.php delete mode 100644 Chapter20/onlineStore/config/cors.php delete mode 100644 Chapter20/onlineStore/config/database.php delete mode 100644 Chapter20/onlineStore/config/filesystems.php delete mode 100644 Chapter20/onlineStore/config/hashing.php delete mode 100644 Chapter20/onlineStore/config/logging.php delete mode 100644 Chapter20/onlineStore/config/mail.php delete mode 100644 Chapter20/onlineStore/config/queue.php delete mode 100644 Chapter20/onlineStore/config/sanctum.php delete mode 100644 Chapter20/onlineStore/config/services.php delete mode 100644 Chapter20/onlineStore/config/session.php delete mode 100644 Chapter20/onlineStore/config/view.php delete mode 100644 Chapter20/onlineStore/database/.gitignore delete mode 100644 Chapter20/onlineStore/database/factories/UserFactory.php delete mode 100644 Chapter20/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php delete mode 100644 Chapter20/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php delete mode 100644 Chapter20/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php delete mode 100644 Chapter20/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php delete mode 100644 Chapter20/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php delete mode 100644 Chapter20/onlineStore/database/seeders/DatabaseSeeder.php delete mode 100644 Chapter20/onlineStore/lang/en.json delete mode 100644 Chapter20/onlineStore/lang/en/auth.php delete mode 100644 Chapter20/onlineStore/lang/en/pagination.php delete mode 100644 Chapter20/onlineStore/lang/en/passwords.php delete mode 100644 Chapter20/onlineStore/lang/en/validation.php delete mode 100644 Chapter20/onlineStore/package.json delete mode 100644 Chapter20/onlineStore/phpcs.xml delete mode 100644 Chapter20/onlineStore/phpunit.xml delete mode 100644 Chapter20/onlineStore/public/.htaccess delete mode 100644 Chapter20/onlineStore/public/css/admin.css delete mode 100644 Chapter20/onlineStore/public/css/app.css delete mode 100644 Chapter20/onlineStore/public/favicon.ico delete mode 100644 Chapter20/onlineStore/public/img/game.png delete mode 100644 Chapter20/onlineStore/public/img/safe.png delete mode 100644 Chapter20/onlineStore/public/img/submarine.png delete mode 100644 Chapter20/onlineStore/public/img/undraw_profile.svg delete mode 100644 Chapter20/onlineStore/public/index.php delete mode 100644 Chapter20/onlineStore/public/robots.txt delete mode 100644 Chapter20/onlineStore/resources/css/app.css delete mode 100644 Chapter20/onlineStore/resources/js/app.js delete mode 100644 Chapter20/onlineStore/resources/js/bootstrap.js delete mode 100644 Chapter20/onlineStore/resources/views/admin/home/index.blade.php delete mode 100644 Chapter20/onlineStore/resources/views/admin/product/edit.blade.php delete mode 100644 Chapter20/onlineStore/resources/views/admin/product/index.blade.php delete mode 100644 Chapter20/onlineStore/resources/views/home/about.blade.php delete mode 100644 Chapter20/onlineStore/resources/views/home/index.blade.php delete mode 100644 Chapter20/onlineStore/resources/views/layouts/admin.blade.php delete mode 100644 Chapter20/onlineStore/resources/views/layouts/app.blade.php delete mode 100644 Chapter20/onlineStore/resources/views/product/index.blade.php delete mode 100644 Chapter20/onlineStore/resources/views/product/show.blade.php delete mode 100644 Chapter20/onlineStore/resources/views/welcome.blade.php delete mode 100644 Chapter20/onlineStore/routes/api.php delete mode 100644 Chapter20/onlineStore/routes/channels.php delete mode 100644 Chapter20/onlineStore/routes/console.php delete mode 100644 Chapter20/onlineStore/routes/web.php delete mode 100644 Chapter20/onlineStore/storage/app/.gitignore delete mode 100644 Chapter20/onlineStore/storage/app/public/.gitignore delete mode 100644 Chapter20/onlineStore/storage/framework/.gitignore delete mode 100644 Chapter20/onlineStore/storage/framework/cache/.gitignore delete mode 100644 Chapter20/onlineStore/storage/framework/cache/data/.gitignore delete mode 100644 Chapter20/onlineStore/storage/framework/sessions/.gitignore delete mode 100644 Chapter20/onlineStore/storage/framework/testing/.gitignore delete mode 100644 Chapter20/onlineStore/storage/framework/views/.gitignore delete mode 100644 Chapter20/onlineStore/storage/logs/.gitignore delete mode 100644 Chapter20/onlineStore/tests/CreatesApplication.php delete mode 100644 Chapter20/onlineStore/tests/Feature/ExampleTest.php delete mode 100644 Chapter20/onlineStore/tests/TestCase.php delete mode 100644 Chapter20/onlineStore/tests/Unit/ExampleTest.php delete mode 100644 Chapter20/onlineStore/webpack.mix.js delete mode 100644 Chapter21/onlineStore/.editorconfig delete mode 100644 Chapter21/onlineStore/.env.example delete mode 100644 Chapter21/onlineStore/.gitattributes delete mode 100644 Chapter21/onlineStore/.gitignore delete mode 100644 Chapter21/onlineStore/.styleci.yml delete mode 100644 Chapter21/onlineStore/README.md delete mode 100644 Chapter21/onlineStore/app/Console/Kernel.php delete mode 100644 Chapter21/onlineStore/app/Exceptions/Handler.php delete mode 100644 Chapter21/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php delete mode 100644 Chapter21/onlineStore/app/Http/Controllers/Admin/AdminProductController.php delete mode 100644 Chapter21/onlineStore/app/Http/Controllers/Auth/ConfirmPasswordController.php delete mode 100644 Chapter21/onlineStore/app/Http/Controllers/Auth/ForgotPasswordController.php delete mode 100644 Chapter21/onlineStore/app/Http/Controllers/Auth/LoginController.php delete mode 100644 Chapter21/onlineStore/app/Http/Controllers/Auth/RegisterController.php delete mode 100644 Chapter21/onlineStore/app/Http/Controllers/Auth/ResetPasswordController.php delete mode 100644 Chapter21/onlineStore/app/Http/Controllers/Auth/VerificationController.php delete mode 100644 Chapter21/onlineStore/app/Http/Controllers/Controller.php delete mode 100644 Chapter21/onlineStore/app/Http/Controllers/HomeController.php delete mode 100644 Chapter21/onlineStore/app/Http/Controllers/ProductController.php delete mode 100644 Chapter21/onlineStore/app/Http/Kernel.php delete mode 100644 Chapter21/onlineStore/app/Http/Middleware/Authenticate.php delete mode 100644 Chapter21/onlineStore/app/Http/Middleware/EncryptCookies.php delete mode 100644 Chapter21/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php delete mode 100644 Chapter21/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php delete mode 100644 Chapter21/onlineStore/app/Http/Middleware/TrimStrings.php delete mode 100644 Chapter21/onlineStore/app/Http/Middleware/TrustHosts.php delete mode 100644 Chapter21/onlineStore/app/Http/Middleware/TrustProxies.php delete mode 100644 Chapter21/onlineStore/app/Http/Middleware/VerifyCsrfToken.php delete mode 100644 Chapter21/onlineStore/app/Models/Product.php delete mode 100644 Chapter21/onlineStore/app/Models/User.php delete mode 100644 Chapter21/onlineStore/app/Providers/AppServiceProvider.php delete mode 100644 Chapter21/onlineStore/app/Providers/AuthServiceProvider.php delete mode 100644 Chapter21/onlineStore/app/Providers/BroadcastServiceProvider.php delete mode 100644 Chapter21/onlineStore/app/Providers/EventServiceProvider.php delete mode 100644 Chapter21/onlineStore/app/Providers/RouteServiceProvider.php delete mode 100644 Chapter21/onlineStore/artisan delete mode 100644 Chapter21/onlineStore/bootstrap/app.php delete mode 100644 Chapter21/onlineStore/bootstrap/cache/.gitignore delete mode 100644 Chapter21/onlineStore/composer.json delete mode 100644 Chapter21/onlineStore/composer.lock delete mode 100644 Chapter21/onlineStore/config/app.php delete mode 100644 Chapter21/onlineStore/config/auth.php delete mode 100644 Chapter21/onlineStore/config/broadcasting.php delete mode 100644 Chapter21/onlineStore/config/cache.php delete mode 100644 Chapter21/onlineStore/config/cors.php delete mode 100644 Chapter21/onlineStore/config/database.php delete mode 100644 Chapter21/onlineStore/config/filesystems.php delete mode 100644 Chapter21/onlineStore/config/hashing.php delete mode 100644 Chapter21/onlineStore/config/logging.php delete mode 100644 Chapter21/onlineStore/config/mail.php delete mode 100644 Chapter21/onlineStore/config/queue.php delete mode 100644 Chapter21/onlineStore/config/sanctum.php delete mode 100644 Chapter21/onlineStore/config/services.php delete mode 100644 Chapter21/onlineStore/config/session.php delete mode 100644 Chapter21/onlineStore/config/view.php delete mode 100644 Chapter21/onlineStore/database/.gitignore delete mode 100644 Chapter21/onlineStore/database/factories/UserFactory.php delete mode 100644 Chapter21/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php delete mode 100644 Chapter21/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php delete mode 100644 Chapter21/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php delete mode 100644 Chapter21/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php delete mode 100644 Chapter21/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php delete mode 100644 Chapter21/onlineStore/database/seeders/DatabaseSeeder.php delete mode 100644 Chapter21/onlineStore/lang/en.json delete mode 100644 Chapter21/onlineStore/lang/en/auth.php delete mode 100644 Chapter21/onlineStore/lang/en/pagination.php delete mode 100644 Chapter21/onlineStore/lang/en/passwords.php delete mode 100644 Chapter21/onlineStore/lang/en/validation.php delete mode 100644 Chapter21/onlineStore/package.json delete mode 100644 Chapter21/onlineStore/phpcs.xml delete mode 100644 Chapter21/onlineStore/phpunit.xml delete mode 100644 Chapter21/onlineStore/public/.htaccess delete mode 100644 Chapter21/onlineStore/public/css/admin.css delete mode 100644 Chapter21/onlineStore/public/css/app.css delete mode 100644 Chapter21/onlineStore/public/favicon.ico delete mode 100644 Chapter21/onlineStore/public/img/game.png delete mode 100644 Chapter21/onlineStore/public/img/safe.png delete mode 100644 Chapter21/onlineStore/public/img/submarine.png delete mode 100644 Chapter21/onlineStore/public/img/undraw_profile.svg delete mode 100644 Chapter21/onlineStore/public/index.php delete mode 100644 Chapter21/onlineStore/public/robots.txt delete mode 100644 Chapter21/onlineStore/resources/css/app.css delete mode 100644 Chapter21/onlineStore/resources/js/app.js delete mode 100644 Chapter21/onlineStore/resources/js/bootstrap.js delete mode 100644 Chapter21/onlineStore/resources/sass/_variables.scss delete mode 100644 Chapter21/onlineStore/resources/sass/app.scss delete mode 100644 Chapter21/onlineStore/resources/views/admin/home/index.blade.php delete mode 100644 Chapter21/onlineStore/resources/views/admin/product/edit.blade.php delete mode 100644 Chapter21/onlineStore/resources/views/admin/product/index.blade.php delete mode 100644 Chapter21/onlineStore/resources/views/auth/login.blade.php delete mode 100644 Chapter21/onlineStore/resources/views/auth/passwords/confirm.blade.php delete mode 100644 Chapter21/onlineStore/resources/views/auth/passwords/email.blade.php delete mode 100644 Chapter21/onlineStore/resources/views/auth/passwords/reset.blade.php delete mode 100644 Chapter21/onlineStore/resources/views/auth/register.blade.php delete mode 100644 Chapter21/onlineStore/resources/views/auth/verify.blade.php delete mode 100644 Chapter21/onlineStore/resources/views/home.blade.php delete mode 100644 Chapter21/onlineStore/resources/views/home/about.blade.php delete mode 100644 Chapter21/onlineStore/resources/views/home/index.blade.php delete mode 100644 Chapter21/onlineStore/resources/views/layouts/admin.blade.php delete mode 100644 Chapter21/onlineStore/resources/views/layouts/app.blade.php delete mode 100644 Chapter21/onlineStore/resources/views/product/index.blade.php delete mode 100644 Chapter21/onlineStore/resources/views/product/show.blade.php delete mode 100644 Chapter21/onlineStore/resources/views/welcome.blade.php delete mode 100644 Chapter21/onlineStore/routes/api.php delete mode 100644 Chapter21/onlineStore/routes/channels.php delete mode 100644 Chapter21/onlineStore/routes/console.php delete mode 100644 Chapter21/onlineStore/routes/web.php delete mode 100644 Chapter21/onlineStore/storage/app/.gitignore delete mode 100644 Chapter21/onlineStore/storage/app/public/.gitignore delete mode 100644 Chapter21/onlineStore/storage/framework/.gitignore delete mode 100644 Chapter21/onlineStore/storage/framework/cache/.gitignore delete mode 100644 Chapter21/onlineStore/storage/framework/cache/data/.gitignore delete mode 100644 Chapter21/onlineStore/storage/framework/sessions/.gitignore delete mode 100644 Chapter21/onlineStore/storage/framework/testing/.gitignore delete mode 100644 Chapter21/onlineStore/storage/framework/views/.gitignore delete mode 100644 Chapter21/onlineStore/storage/logs/.gitignore delete mode 100644 Chapter21/onlineStore/tests/CreatesApplication.php delete mode 100644 Chapter21/onlineStore/tests/Feature/ExampleTest.php delete mode 100644 Chapter21/onlineStore/tests/TestCase.php delete mode 100644 Chapter21/onlineStore/tests/Unit/ExampleTest.php delete mode 100644 Chapter21/onlineStore/webpack.mix.js delete mode 100644 Chapter22/onlineStore/.editorconfig delete mode 100644 Chapter22/onlineStore/.env.example delete mode 100644 Chapter22/onlineStore/.gitattributes delete mode 100644 Chapter22/onlineStore/.gitignore delete mode 100644 Chapter22/onlineStore/.styleci.yml delete mode 100644 Chapter22/onlineStore/README.md delete mode 100644 Chapter22/onlineStore/app/Console/Kernel.php delete mode 100644 Chapter22/onlineStore/app/Exceptions/Handler.php delete mode 100644 Chapter22/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php delete mode 100644 Chapter22/onlineStore/app/Http/Controllers/Admin/AdminProductController.php delete mode 100644 Chapter22/onlineStore/app/Http/Controllers/Auth/ConfirmPasswordController.php delete mode 100644 Chapter22/onlineStore/app/Http/Controllers/Auth/ForgotPasswordController.php delete mode 100644 Chapter22/onlineStore/app/Http/Controllers/Auth/LoginController.php delete mode 100644 Chapter22/onlineStore/app/Http/Controllers/Auth/RegisterController.php delete mode 100644 Chapter22/onlineStore/app/Http/Controllers/Auth/ResetPasswordController.php delete mode 100644 Chapter22/onlineStore/app/Http/Controllers/Auth/VerificationController.php delete mode 100644 Chapter22/onlineStore/app/Http/Controllers/Controller.php delete mode 100644 Chapter22/onlineStore/app/Http/Controllers/HomeController.php delete mode 100644 Chapter22/onlineStore/app/Http/Controllers/ProductController.php delete mode 100644 Chapter22/onlineStore/app/Http/Kernel.php delete mode 100644 Chapter22/onlineStore/app/Http/Middleware/Authenticate.php delete mode 100644 Chapter22/onlineStore/app/Http/Middleware/EncryptCookies.php delete mode 100644 Chapter22/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php delete mode 100644 Chapter22/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php delete mode 100644 Chapter22/onlineStore/app/Http/Middleware/TrimStrings.php delete mode 100644 Chapter22/onlineStore/app/Http/Middleware/TrustHosts.php delete mode 100644 Chapter22/onlineStore/app/Http/Middleware/TrustProxies.php delete mode 100644 Chapter22/onlineStore/app/Http/Middleware/VerifyCsrfToken.php delete mode 100644 Chapter22/onlineStore/app/Models/Product.php delete mode 100644 Chapter22/onlineStore/app/Models/User.php delete mode 100644 Chapter22/onlineStore/app/Providers/AppServiceProvider.php delete mode 100644 Chapter22/onlineStore/app/Providers/AuthServiceProvider.php delete mode 100644 Chapter22/onlineStore/app/Providers/BroadcastServiceProvider.php delete mode 100644 Chapter22/onlineStore/app/Providers/EventServiceProvider.php delete mode 100644 Chapter22/onlineStore/app/Providers/RouteServiceProvider.php delete mode 100644 Chapter22/onlineStore/artisan delete mode 100644 Chapter22/onlineStore/bootstrap/app.php delete mode 100644 Chapter22/onlineStore/bootstrap/cache/.gitignore delete mode 100644 Chapter22/onlineStore/composer.json delete mode 100644 Chapter22/onlineStore/composer.lock delete mode 100644 Chapter22/onlineStore/config/app.php delete mode 100644 Chapter22/onlineStore/config/auth.php delete mode 100644 Chapter22/onlineStore/config/broadcasting.php delete mode 100644 Chapter22/onlineStore/config/cache.php delete mode 100644 Chapter22/onlineStore/config/cors.php delete mode 100644 Chapter22/onlineStore/config/database.php delete mode 100644 Chapter22/onlineStore/config/filesystems.php delete mode 100644 Chapter22/onlineStore/config/hashing.php delete mode 100644 Chapter22/onlineStore/config/logging.php delete mode 100644 Chapter22/onlineStore/config/mail.php delete mode 100644 Chapter22/onlineStore/config/queue.php delete mode 100644 Chapter22/onlineStore/config/sanctum.php delete mode 100644 Chapter22/onlineStore/config/services.php delete mode 100644 Chapter22/onlineStore/config/session.php delete mode 100644 Chapter22/onlineStore/config/view.php delete mode 100644 Chapter22/onlineStore/database/.gitignore delete mode 100644 Chapter22/onlineStore/database/factories/UserFactory.php delete mode 100644 Chapter22/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php delete mode 100644 Chapter22/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php delete mode 100644 Chapter22/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php delete mode 100644 Chapter22/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php delete mode 100644 Chapter22/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php delete mode 100644 Chapter22/onlineStore/database/migrations/2022_02_12_140820_alter_users_table.php delete mode 100644 Chapter22/onlineStore/database/seeders/DatabaseSeeder.php delete mode 100644 Chapter22/onlineStore/lang/en.json delete mode 100644 Chapter22/onlineStore/lang/en/auth.php delete mode 100644 Chapter22/onlineStore/lang/en/pagination.php delete mode 100644 Chapter22/onlineStore/lang/en/passwords.php delete mode 100644 Chapter22/onlineStore/lang/en/validation.php delete mode 100644 Chapter22/onlineStore/package.json delete mode 100644 Chapter22/onlineStore/phpcs.xml delete mode 100644 Chapter22/onlineStore/phpunit.xml delete mode 100644 Chapter22/onlineStore/public/.htaccess delete mode 100644 Chapter22/onlineStore/public/css/admin.css delete mode 100644 Chapter22/onlineStore/public/css/app.css delete mode 100644 Chapter22/onlineStore/public/favicon.ico delete mode 100644 Chapter22/onlineStore/public/img/game.png delete mode 100644 Chapter22/onlineStore/public/img/safe.png delete mode 100644 Chapter22/onlineStore/public/img/submarine.png delete mode 100644 Chapter22/onlineStore/public/img/undraw_profile.svg delete mode 100644 Chapter22/onlineStore/public/index.php delete mode 100644 Chapter22/onlineStore/public/robots.txt delete mode 100644 Chapter22/onlineStore/resources/css/app.css delete mode 100644 Chapter22/onlineStore/resources/js/app.js delete mode 100644 Chapter22/onlineStore/resources/js/bootstrap.js delete mode 100644 Chapter22/onlineStore/resources/sass/_variables.scss delete mode 100644 Chapter22/onlineStore/resources/sass/app.scss delete mode 100644 Chapter22/onlineStore/resources/views/admin/home/index.blade.php delete mode 100644 Chapter22/onlineStore/resources/views/admin/product/edit.blade.php delete mode 100644 Chapter22/onlineStore/resources/views/admin/product/index.blade.php delete mode 100644 Chapter22/onlineStore/resources/views/auth/login.blade.php delete mode 100644 Chapter22/onlineStore/resources/views/auth/passwords/confirm.blade.php delete mode 100644 Chapter22/onlineStore/resources/views/auth/passwords/email.blade.php delete mode 100644 Chapter22/onlineStore/resources/views/auth/passwords/reset.blade.php delete mode 100644 Chapter22/onlineStore/resources/views/auth/register.blade.php delete mode 100644 Chapter22/onlineStore/resources/views/auth/verify.blade.php delete mode 100644 Chapter22/onlineStore/resources/views/home.blade.php delete mode 100644 Chapter22/onlineStore/resources/views/home/about.blade.php delete mode 100644 Chapter22/onlineStore/resources/views/home/index.blade.php delete mode 100644 Chapter22/onlineStore/resources/views/layouts/admin.blade.php delete mode 100644 Chapter22/onlineStore/resources/views/layouts/app.blade.php delete mode 100644 Chapter22/onlineStore/resources/views/product/index.blade.php delete mode 100644 Chapter22/onlineStore/resources/views/product/show.blade.php delete mode 100644 Chapter22/onlineStore/resources/views/welcome.blade.php delete mode 100644 Chapter22/onlineStore/routes/api.php delete mode 100644 Chapter22/onlineStore/routes/channels.php delete mode 100644 Chapter22/onlineStore/routes/console.php delete mode 100644 Chapter22/onlineStore/routes/web.php delete mode 100644 Chapter22/onlineStore/storage/app/.gitignore delete mode 100644 Chapter22/onlineStore/storage/app/public/.gitignore delete mode 100644 Chapter22/onlineStore/storage/framework/.gitignore delete mode 100644 Chapter22/onlineStore/storage/framework/cache/.gitignore delete mode 100644 Chapter22/onlineStore/storage/framework/cache/data/.gitignore delete mode 100644 Chapter22/onlineStore/storage/framework/sessions/.gitignore delete mode 100644 Chapter22/onlineStore/storage/framework/testing/.gitignore delete mode 100644 Chapter22/onlineStore/storage/framework/views/.gitignore delete mode 100644 Chapter22/onlineStore/storage/logs/.gitignore delete mode 100644 Chapter22/onlineStore/tests/CreatesApplication.php delete mode 100644 Chapter22/onlineStore/tests/Feature/ExampleTest.php delete mode 100644 Chapter22/onlineStore/tests/TestCase.php delete mode 100644 Chapter22/onlineStore/tests/Unit/ExampleTest.php delete mode 100644 Chapter22/onlineStore/webpack.mix.js delete mode 100644 Chapter23/onlineStore/.editorconfig delete mode 100644 Chapter23/onlineStore/.env.example delete mode 100644 Chapter23/onlineStore/.gitattributes delete mode 100644 Chapter23/onlineStore/.gitignore delete mode 100644 Chapter23/onlineStore/.styleci.yml delete mode 100644 Chapter23/onlineStore/README.md delete mode 100644 Chapter23/onlineStore/app/Console/Kernel.php delete mode 100644 Chapter23/onlineStore/app/Exceptions/Handler.php delete mode 100644 Chapter23/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php delete mode 100644 Chapter23/onlineStore/app/Http/Controllers/Admin/AdminProductController.php delete mode 100644 Chapter23/onlineStore/app/Http/Controllers/Auth/ConfirmPasswordController.php delete mode 100644 Chapter23/onlineStore/app/Http/Controllers/Auth/ForgotPasswordController.php delete mode 100644 Chapter23/onlineStore/app/Http/Controllers/Auth/LoginController.php delete mode 100644 Chapter23/onlineStore/app/Http/Controllers/Auth/RegisterController.php delete mode 100644 Chapter23/onlineStore/app/Http/Controllers/Auth/ResetPasswordController.php delete mode 100644 Chapter23/onlineStore/app/Http/Controllers/Auth/VerificationController.php delete mode 100644 Chapter23/onlineStore/app/Http/Controllers/Controller.php delete mode 100644 Chapter23/onlineStore/app/Http/Controllers/HomeController.php delete mode 100644 Chapter23/onlineStore/app/Http/Controllers/ProductController.php delete mode 100644 Chapter23/onlineStore/app/Http/Kernel.php delete mode 100644 Chapter23/onlineStore/app/Http/Middleware/AdminAuthMiddleware.php delete mode 100644 Chapter23/onlineStore/app/Http/Middleware/Authenticate.php delete mode 100644 Chapter23/onlineStore/app/Http/Middleware/EncryptCookies.php delete mode 100644 Chapter23/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php delete mode 100644 Chapter23/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php delete mode 100644 Chapter23/onlineStore/app/Http/Middleware/TrimStrings.php delete mode 100644 Chapter23/onlineStore/app/Http/Middleware/TrustHosts.php delete mode 100644 Chapter23/onlineStore/app/Http/Middleware/TrustProxies.php delete mode 100644 Chapter23/onlineStore/app/Http/Middleware/VerifyCsrfToken.php delete mode 100644 Chapter23/onlineStore/app/Models/Product.php delete mode 100644 Chapter23/onlineStore/app/Models/User.php delete mode 100644 Chapter23/onlineStore/app/Providers/AppServiceProvider.php delete mode 100644 Chapter23/onlineStore/app/Providers/AuthServiceProvider.php delete mode 100644 Chapter23/onlineStore/app/Providers/BroadcastServiceProvider.php delete mode 100644 Chapter23/onlineStore/app/Providers/EventServiceProvider.php delete mode 100644 Chapter23/onlineStore/app/Providers/RouteServiceProvider.php delete mode 100644 Chapter23/onlineStore/artisan delete mode 100644 Chapter23/onlineStore/bootstrap/app.php delete mode 100644 Chapter23/onlineStore/bootstrap/cache/.gitignore delete mode 100644 Chapter23/onlineStore/composer.json delete mode 100644 Chapter23/onlineStore/composer.lock delete mode 100644 Chapter23/onlineStore/config/app.php delete mode 100644 Chapter23/onlineStore/config/auth.php delete mode 100644 Chapter23/onlineStore/config/broadcasting.php delete mode 100644 Chapter23/onlineStore/config/cache.php delete mode 100644 Chapter23/onlineStore/config/cors.php delete mode 100644 Chapter23/onlineStore/config/database.php delete mode 100644 Chapter23/onlineStore/config/filesystems.php delete mode 100644 Chapter23/onlineStore/config/hashing.php delete mode 100644 Chapter23/onlineStore/config/logging.php delete mode 100644 Chapter23/onlineStore/config/mail.php delete mode 100644 Chapter23/onlineStore/config/queue.php delete mode 100644 Chapter23/onlineStore/config/sanctum.php delete mode 100644 Chapter23/onlineStore/config/services.php delete mode 100644 Chapter23/onlineStore/config/session.php delete mode 100644 Chapter23/onlineStore/config/view.php delete mode 100644 Chapter23/onlineStore/database/.gitignore delete mode 100644 Chapter23/onlineStore/database/factories/UserFactory.php delete mode 100644 Chapter23/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php delete mode 100644 Chapter23/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php delete mode 100644 Chapter23/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php delete mode 100644 Chapter23/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php delete mode 100644 Chapter23/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php delete mode 100644 Chapter23/onlineStore/database/migrations/2022_02_12_140820_alter_users_table.php delete mode 100644 Chapter23/onlineStore/database/seeders/DatabaseSeeder.php delete mode 100644 Chapter23/onlineStore/lang/en.json delete mode 100644 Chapter23/onlineStore/lang/en/auth.php delete mode 100644 Chapter23/onlineStore/lang/en/pagination.php delete mode 100644 Chapter23/onlineStore/lang/en/passwords.php delete mode 100644 Chapter23/onlineStore/lang/en/validation.php delete mode 100644 Chapter23/onlineStore/package.json delete mode 100644 Chapter23/onlineStore/phpcs.xml delete mode 100644 Chapter23/onlineStore/phpunit.xml delete mode 100644 Chapter23/onlineStore/public/.htaccess delete mode 100644 Chapter23/onlineStore/public/css/admin.css delete mode 100644 Chapter23/onlineStore/public/css/app.css delete mode 100644 Chapter23/onlineStore/public/favicon.ico delete mode 100644 Chapter23/onlineStore/public/img/game.png delete mode 100644 Chapter23/onlineStore/public/img/safe.png delete mode 100644 Chapter23/onlineStore/public/img/submarine.png delete mode 100644 Chapter23/onlineStore/public/img/undraw_profile.svg delete mode 100644 Chapter23/onlineStore/public/index.php delete mode 100644 Chapter23/onlineStore/public/robots.txt delete mode 100644 Chapter23/onlineStore/resources/css/app.css delete mode 100644 Chapter23/onlineStore/resources/js/app.js delete mode 100644 Chapter23/onlineStore/resources/js/bootstrap.js delete mode 100644 Chapter23/onlineStore/resources/sass/_variables.scss delete mode 100644 Chapter23/onlineStore/resources/sass/app.scss delete mode 100644 Chapter23/onlineStore/resources/views/admin/home/index.blade.php delete mode 100644 Chapter23/onlineStore/resources/views/admin/product/edit.blade.php delete mode 100644 Chapter23/onlineStore/resources/views/admin/product/index.blade.php delete mode 100644 Chapter23/onlineStore/resources/views/auth/login.blade.php delete mode 100644 Chapter23/onlineStore/resources/views/auth/passwords/confirm.blade.php delete mode 100644 Chapter23/onlineStore/resources/views/auth/passwords/email.blade.php delete mode 100644 Chapter23/onlineStore/resources/views/auth/passwords/reset.blade.php delete mode 100644 Chapter23/onlineStore/resources/views/auth/register.blade.php delete mode 100644 Chapter23/onlineStore/resources/views/auth/verify.blade.php delete mode 100644 Chapter23/onlineStore/resources/views/home.blade.php delete mode 100644 Chapter23/onlineStore/resources/views/home/about.blade.php delete mode 100644 Chapter23/onlineStore/resources/views/home/index.blade.php delete mode 100644 Chapter23/onlineStore/resources/views/layouts/admin.blade.php delete mode 100644 Chapter23/onlineStore/resources/views/layouts/app.blade.php delete mode 100644 Chapter23/onlineStore/resources/views/product/index.blade.php delete mode 100644 Chapter23/onlineStore/resources/views/product/show.blade.php delete mode 100644 Chapter23/onlineStore/resources/views/welcome.blade.php delete mode 100644 Chapter23/onlineStore/routes/api.php delete mode 100644 Chapter23/onlineStore/routes/channels.php delete mode 100644 Chapter23/onlineStore/routes/console.php delete mode 100644 Chapter23/onlineStore/routes/web.php delete mode 100644 Chapter23/onlineStore/storage/app/.gitignore delete mode 100644 Chapter23/onlineStore/storage/app/public/.gitignore delete mode 100644 Chapter23/onlineStore/storage/framework/.gitignore delete mode 100644 Chapter23/onlineStore/storage/framework/cache/.gitignore delete mode 100644 Chapter23/onlineStore/storage/framework/cache/data/.gitignore delete mode 100644 Chapter23/onlineStore/storage/framework/sessions/.gitignore delete mode 100644 Chapter23/onlineStore/storage/framework/testing/.gitignore delete mode 100644 Chapter23/onlineStore/storage/framework/views/.gitignore delete mode 100644 Chapter23/onlineStore/storage/logs/.gitignore delete mode 100644 Chapter23/onlineStore/tests/CreatesApplication.php delete mode 100644 Chapter23/onlineStore/tests/Feature/ExampleTest.php delete mode 100644 Chapter23/onlineStore/tests/TestCase.php delete mode 100644 Chapter23/onlineStore/tests/Unit/ExampleTest.php delete mode 100644 Chapter23/onlineStore/webpack.mix.js delete mode 100644 Chapter25/onlineStore/.editorconfig delete mode 100644 Chapter25/onlineStore/.env.example delete mode 100644 Chapter25/onlineStore/.gitattributes delete mode 100644 Chapter25/onlineStore/.gitignore delete mode 100644 Chapter25/onlineStore/.styleci.yml delete mode 100644 Chapter25/onlineStore/README.md delete mode 100644 Chapter25/onlineStore/app/Console/Kernel.php delete mode 100644 Chapter25/onlineStore/app/Exceptions/Handler.php delete mode 100644 Chapter25/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php delete mode 100644 Chapter25/onlineStore/app/Http/Controllers/Admin/AdminProductController.php delete mode 100644 Chapter25/onlineStore/app/Http/Controllers/Auth/ConfirmPasswordController.php delete mode 100644 Chapter25/onlineStore/app/Http/Controllers/Auth/ForgotPasswordController.php delete mode 100644 Chapter25/onlineStore/app/Http/Controllers/Auth/LoginController.php delete mode 100644 Chapter25/onlineStore/app/Http/Controllers/Auth/RegisterController.php delete mode 100644 Chapter25/onlineStore/app/Http/Controllers/Auth/ResetPasswordController.php delete mode 100644 Chapter25/onlineStore/app/Http/Controllers/Auth/VerificationController.php delete mode 100644 Chapter25/onlineStore/app/Http/Controllers/CartController.php delete mode 100644 Chapter25/onlineStore/app/Http/Controllers/Controller.php delete mode 100644 Chapter25/onlineStore/app/Http/Controllers/HomeController.php delete mode 100644 Chapter25/onlineStore/app/Http/Controllers/ProductController.php delete mode 100644 Chapter25/onlineStore/app/Http/Kernel.php delete mode 100644 Chapter25/onlineStore/app/Http/Middleware/AdminAuthMiddleware.php delete mode 100644 Chapter25/onlineStore/app/Http/Middleware/Authenticate.php delete mode 100644 Chapter25/onlineStore/app/Http/Middleware/EncryptCookies.php delete mode 100644 Chapter25/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php delete mode 100644 Chapter25/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php delete mode 100644 Chapter25/onlineStore/app/Http/Middleware/TrimStrings.php delete mode 100644 Chapter25/onlineStore/app/Http/Middleware/TrustHosts.php delete mode 100644 Chapter25/onlineStore/app/Http/Middleware/TrustProxies.php delete mode 100644 Chapter25/onlineStore/app/Http/Middleware/VerifyCsrfToken.php delete mode 100644 Chapter25/onlineStore/app/Models/Product.php delete mode 100644 Chapter25/onlineStore/app/Models/User.php delete mode 100644 Chapter25/onlineStore/app/Providers/AppServiceProvider.php delete mode 100644 Chapter25/onlineStore/app/Providers/AuthServiceProvider.php delete mode 100644 Chapter25/onlineStore/app/Providers/BroadcastServiceProvider.php delete mode 100644 Chapter25/onlineStore/app/Providers/EventServiceProvider.php delete mode 100644 Chapter25/onlineStore/app/Providers/RouteServiceProvider.php delete mode 100644 Chapter25/onlineStore/artisan delete mode 100644 Chapter25/onlineStore/bootstrap/app.php delete mode 100644 Chapter25/onlineStore/bootstrap/cache/.gitignore delete mode 100644 Chapter25/onlineStore/composer.json delete mode 100644 Chapter25/onlineStore/composer.lock delete mode 100644 Chapter25/onlineStore/config/app.php delete mode 100644 Chapter25/onlineStore/config/auth.php delete mode 100644 Chapter25/onlineStore/config/broadcasting.php delete mode 100644 Chapter25/onlineStore/config/cache.php delete mode 100644 Chapter25/onlineStore/config/cors.php delete mode 100644 Chapter25/onlineStore/config/database.php delete mode 100644 Chapter25/onlineStore/config/filesystems.php delete mode 100644 Chapter25/onlineStore/config/hashing.php delete mode 100644 Chapter25/onlineStore/config/logging.php delete mode 100644 Chapter25/onlineStore/config/mail.php delete mode 100644 Chapter25/onlineStore/config/queue.php delete mode 100644 Chapter25/onlineStore/config/sanctum.php delete mode 100644 Chapter25/onlineStore/config/services.php delete mode 100644 Chapter25/onlineStore/config/session.php delete mode 100644 Chapter25/onlineStore/config/view.php delete mode 100644 Chapter25/onlineStore/database/.gitignore delete mode 100644 Chapter25/onlineStore/database/factories/UserFactory.php delete mode 100644 Chapter25/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php delete mode 100644 Chapter25/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php delete mode 100644 Chapter25/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php delete mode 100644 Chapter25/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php delete mode 100644 Chapter25/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php delete mode 100644 Chapter25/onlineStore/database/migrations/2022_02_12_140820_alter_users_table.php delete mode 100644 Chapter25/onlineStore/database/seeders/DatabaseSeeder.php delete mode 100644 Chapter25/onlineStore/lang/en.json delete mode 100644 Chapter25/onlineStore/lang/en/auth.php delete mode 100644 Chapter25/onlineStore/lang/en/pagination.php delete mode 100644 Chapter25/onlineStore/lang/en/passwords.php delete mode 100644 Chapter25/onlineStore/lang/en/validation.php delete mode 100644 Chapter25/onlineStore/package.json delete mode 100644 Chapter25/onlineStore/phpcs.xml delete mode 100644 Chapter25/onlineStore/phpunit.xml delete mode 100644 Chapter25/onlineStore/public/.htaccess delete mode 100644 Chapter25/onlineStore/public/css/admin.css delete mode 100644 Chapter25/onlineStore/public/css/app.css delete mode 100644 Chapter25/onlineStore/public/favicon.ico delete mode 100644 Chapter25/onlineStore/public/img/game.png delete mode 100644 Chapter25/onlineStore/public/img/safe.png delete mode 100644 Chapter25/onlineStore/public/img/submarine.png delete mode 100644 Chapter25/onlineStore/public/img/undraw_profile.svg delete mode 100644 Chapter25/onlineStore/public/index.php delete mode 100644 Chapter25/onlineStore/public/robots.txt delete mode 100644 Chapter25/onlineStore/resources/css/app.css delete mode 100644 Chapter25/onlineStore/resources/js/app.js delete mode 100644 Chapter25/onlineStore/resources/js/bootstrap.js delete mode 100644 Chapter25/onlineStore/resources/sass/_variables.scss delete mode 100644 Chapter25/onlineStore/resources/sass/app.scss delete mode 100644 Chapter25/onlineStore/resources/views/admin/home/index.blade.php delete mode 100644 Chapter25/onlineStore/resources/views/admin/product/edit.blade.php delete mode 100644 Chapter25/onlineStore/resources/views/admin/product/index.blade.php delete mode 100644 Chapter25/onlineStore/resources/views/auth/login.blade.php delete mode 100644 Chapter25/onlineStore/resources/views/auth/passwords/confirm.blade.php delete mode 100644 Chapter25/onlineStore/resources/views/auth/passwords/email.blade.php delete mode 100644 Chapter25/onlineStore/resources/views/auth/passwords/reset.blade.php delete mode 100644 Chapter25/onlineStore/resources/views/auth/register.blade.php delete mode 100644 Chapter25/onlineStore/resources/views/auth/verify.blade.php delete mode 100644 Chapter25/onlineStore/resources/views/cart/index.blade.php delete mode 100644 Chapter25/onlineStore/resources/views/home.blade.php delete mode 100644 Chapter25/onlineStore/resources/views/home/about.blade.php delete mode 100644 Chapter25/onlineStore/resources/views/home/index.blade.php delete mode 100644 Chapter25/onlineStore/resources/views/layouts/admin.blade.php delete mode 100644 Chapter25/onlineStore/resources/views/layouts/app.blade.php delete mode 100644 Chapter25/onlineStore/resources/views/product/index.blade.php delete mode 100644 Chapter25/onlineStore/resources/views/product/show.blade.php delete mode 100644 Chapter25/onlineStore/resources/views/welcome.blade.php delete mode 100644 Chapter25/onlineStore/routes/api.php delete mode 100644 Chapter25/onlineStore/routes/channels.php delete mode 100644 Chapter25/onlineStore/routes/console.php delete mode 100644 Chapter25/onlineStore/routes/web.php delete mode 100644 Chapter25/onlineStore/storage/app/.gitignore delete mode 100644 Chapter25/onlineStore/storage/app/public/.gitignore delete mode 100644 Chapter25/onlineStore/storage/framework/.gitignore delete mode 100644 Chapter25/onlineStore/storage/framework/cache/.gitignore delete mode 100644 Chapter25/onlineStore/storage/framework/cache/data/.gitignore delete mode 100644 Chapter25/onlineStore/storage/framework/sessions/.gitignore delete mode 100644 Chapter25/onlineStore/storage/framework/testing/.gitignore delete mode 100644 Chapter25/onlineStore/storage/framework/views/.gitignore delete mode 100644 Chapter25/onlineStore/storage/logs/.gitignore delete mode 100644 Chapter25/onlineStore/tests/CreatesApplication.php delete mode 100644 Chapter25/onlineStore/tests/Feature/ExampleTest.php delete mode 100644 Chapter25/onlineStore/tests/TestCase.php delete mode 100644 Chapter25/onlineStore/tests/Unit/ExampleTest.php delete mode 100644 Chapter25/onlineStore/webpack.mix.js delete mode 100644 Chapter26/onlineStore/.editorconfig delete mode 100644 Chapter26/onlineStore/.env.example delete mode 100644 Chapter26/onlineStore/.gitattributes delete mode 100644 Chapter26/onlineStore/.gitignore delete mode 100644 Chapter26/onlineStore/.styleci.yml delete mode 100644 Chapter26/onlineStore/README.md delete mode 100644 Chapter26/onlineStore/app/Console/Kernel.php delete mode 100644 Chapter26/onlineStore/app/Exceptions/Handler.php delete mode 100644 Chapter26/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php delete mode 100644 Chapter26/onlineStore/app/Http/Controllers/Admin/AdminProductController.php delete mode 100644 Chapter26/onlineStore/app/Http/Controllers/Auth/ConfirmPasswordController.php delete mode 100644 Chapter26/onlineStore/app/Http/Controllers/Auth/ForgotPasswordController.php delete mode 100644 Chapter26/onlineStore/app/Http/Controllers/Auth/LoginController.php delete mode 100644 Chapter26/onlineStore/app/Http/Controllers/Auth/RegisterController.php delete mode 100644 Chapter26/onlineStore/app/Http/Controllers/Auth/ResetPasswordController.php delete mode 100644 Chapter26/onlineStore/app/Http/Controllers/Auth/VerificationController.php delete mode 100644 Chapter26/onlineStore/app/Http/Controllers/CartController.php delete mode 100644 Chapter26/onlineStore/app/Http/Controllers/Controller.php delete mode 100644 Chapter26/onlineStore/app/Http/Controllers/HomeController.php delete mode 100644 Chapter26/onlineStore/app/Http/Controllers/ProductController.php delete mode 100644 Chapter26/onlineStore/app/Http/Kernel.php delete mode 100644 Chapter26/onlineStore/app/Http/Middleware/AdminAuthMiddleware.php delete mode 100644 Chapter26/onlineStore/app/Http/Middleware/Authenticate.php delete mode 100644 Chapter26/onlineStore/app/Http/Middleware/EncryptCookies.php delete mode 100644 Chapter26/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php delete mode 100644 Chapter26/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php delete mode 100644 Chapter26/onlineStore/app/Http/Middleware/TrimStrings.php delete mode 100644 Chapter26/onlineStore/app/Http/Middleware/TrustHosts.php delete mode 100644 Chapter26/onlineStore/app/Http/Middleware/TrustProxies.php delete mode 100644 Chapter26/onlineStore/app/Http/Middleware/VerifyCsrfToken.php delete mode 100644 Chapter26/onlineStore/app/Models/Item.php delete mode 100644 Chapter26/onlineStore/app/Models/Order.php delete mode 100644 Chapter26/onlineStore/app/Models/Product.php delete mode 100644 Chapter26/onlineStore/app/Models/User.php delete mode 100644 Chapter26/onlineStore/app/Providers/AppServiceProvider.php delete mode 100644 Chapter26/onlineStore/app/Providers/AuthServiceProvider.php delete mode 100644 Chapter26/onlineStore/app/Providers/BroadcastServiceProvider.php delete mode 100644 Chapter26/onlineStore/app/Providers/EventServiceProvider.php delete mode 100644 Chapter26/onlineStore/app/Providers/RouteServiceProvider.php delete mode 100644 Chapter26/onlineStore/artisan delete mode 100644 Chapter26/onlineStore/bootstrap/app.php delete mode 100644 Chapter26/onlineStore/bootstrap/cache/.gitignore delete mode 100644 Chapter26/onlineStore/composer.json delete mode 100644 Chapter26/onlineStore/composer.lock delete mode 100644 Chapter26/onlineStore/config/app.php delete mode 100644 Chapter26/onlineStore/config/auth.php delete mode 100644 Chapter26/onlineStore/config/broadcasting.php delete mode 100644 Chapter26/onlineStore/config/cache.php delete mode 100644 Chapter26/onlineStore/config/cors.php delete mode 100644 Chapter26/onlineStore/config/database.php delete mode 100644 Chapter26/onlineStore/config/filesystems.php delete mode 100644 Chapter26/onlineStore/config/hashing.php delete mode 100644 Chapter26/onlineStore/config/logging.php delete mode 100644 Chapter26/onlineStore/config/mail.php delete mode 100644 Chapter26/onlineStore/config/queue.php delete mode 100644 Chapter26/onlineStore/config/sanctum.php delete mode 100644 Chapter26/onlineStore/config/services.php delete mode 100644 Chapter26/onlineStore/config/session.php delete mode 100644 Chapter26/onlineStore/config/view.php delete mode 100644 Chapter26/onlineStore/database/.gitignore delete mode 100644 Chapter26/onlineStore/database/factories/UserFactory.php delete mode 100644 Chapter26/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php delete mode 100644 Chapter26/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php delete mode 100644 Chapter26/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php delete mode 100644 Chapter26/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php delete mode 100644 Chapter26/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php delete mode 100644 Chapter26/onlineStore/database/migrations/2022_02_12_140820_alter_users_table.php delete mode 100644 Chapter26/onlineStore/database/migrations/2022_02_12_152713_create_orders_table.php delete mode 100644 Chapter26/onlineStore/database/migrations/2022_02_12_152850_create_items_table.php delete mode 100644 Chapter26/onlineStore/database/seeders/DatabaseSeeder.php delete mode 100644 Chapter26/onlineStore/lang/en.json delete mode 100644 Chapter26/onlineStore/lang/en/auth.php delete mode 100644 Chapter26/onlineStore/lang/en/pagination.php delete mode 100644 Chapter26/onlineStore/lang/en/passwords.php delete mode 100644 Chapter26/onlineStore/lang/en/validation.php delete mode 100644 Chapter26/onlineStore/package.json delete mode 100644 Chapter26/onlineStore/phpcs.xml delete mode 100644 Chapter26/onlineStore/phpunit.xml delete mode 100644 Chapter26/onlineStore/public/.htaccess delete mode 100644 Chapter26/onlineStore/public/css/admin.css delete mode 100644 Chapter26/onlineStore/public/css/app.css delete mode 100644 Chapter26/onlineStore/public/favicon.ico delete mode 100644 Chapter26/onlineStore/public/img/game.png delete mode 100644 Chapter26/onlineStore/public/img/safe.png delete mode 100644 Chapter26/onlineStore/public/img/submarine.png delete mode 100644 Chapter26/onlineStore/public/img/undraw_profile.svg delete mode 100644 Chapter26/onlineStore/public/index.php delete mode 100644 Chapter26/onlineStore/public/robots.txt delete mode 100644 Chapter26/onlineStore/resources/css/app.css delete mode 100644 Chapter26/onlineStore/resources/js/app.js delete mode 100644 Chapter26/onlineStore/resources/js/bootstrap.js delete mode 100644 Chapter26/onlineStore/resources/sass/_variables.scss delete mode 100644 Chapter26/onlineStore/resources/sass/app.scss delete mode 100644 Chapter26/onlineStore/resources/views/admin/home/index.blade.php delete mode 100644 Chapter26/onlineStore/resources/views/admin/product/edit.blade.php delete mode 100644 Chapter26/onlineStore/resources/views/admin/product/index.blade.php delete mode 100644 Chapter26/onlineStore/resources/views/auth/login.blade.php delete mode 100644 Chapter26/onlineStore/resources/views/auth/passwords/confirm.blade.php delete mode 100644 Chapter26/onlineStore/resources/views/auth/passwords/email.blade.php delete mode 100644 Chapter26/onlineStore/resources/views/auth/passwords/reset.blade.php delete mode 100644 Chapter26/onlineStore/resources/views/auth/register.blade.php delete mode 100644 Chapter26/onlineStore/resources/views/auth/verify.blade.php delete mode 100644 Chapter26/onlineStore/resources/views/cart/index.blade.php delete mode 100644 Chapter26/onlineStore/resources/views/home.blade.php delete mode 100644 Chapter26/onlineStore/resources/views/home/about.blade.php delete mode 100644 Chapter26/onlineStore/resources/views/home/index.blade.php delete mode 100644 Chapter26/onlineStore/resources/views/layouts/admin.blade.php delete mode 100644 Chapter26/onlineStore/resources/views/layouts/app.blade.php delete mode 100644 Chapter26/onlineStore/resources/views/product/index.blade.php delete mode 100644 Chapter26/onlineStore/resources/views/product/show.blade.php delete mode 100644 Chapter26/onlineStore/resources/views/welcome.blade.php delete mode 100644 Chapter26/onlineStore/routes/api.php delete mode 100644 Chapter26/onlineStore/routes/channels.php delete mode 100644 Chapter26/onlineStore/routes/console.php delete mode 100644 Chapter26/onlineStore/routes/web.php delete mode 100644 Chapter26/onlineStore/storage/app/.gitignore delete mode 100644 Chapter26/onlineStore/storage/app/public/.gitignore delete mode 100644 Chapter26/onlineStore/storage/framework/.gitignore delete mode 100644 Chapter26/onlineStore/storage/framework/cache/.gitignore delete mode 100644 Chapter26/onlineStore/storage/framework/cache/data/.gitignore delete mode 100644 Chapter26/onlineStore/storage/framework/sessions/.gitignore delete mode 100644 Chapter26/onlineStore/storage/framework/testing/.gitignore delete mode 100644 Chapter26/onlineStore/storage/framework/views/.gitignore delete mode 100644 Chapter26/onlineStore/storage/logs/.gitignore delete mode 100644 Chapter26/onlineStore/tests/CreatesApplication.php delete mode 100644 Chapter26/onlineStore/tests/Feature/ExampleTest.php delete mode 100644 Chapter26/onlineStore/tests/TestCase.php delete mode 100644 Chapter26/onlineStore/tests/Unit/ExampleTest.php delete mode 100644 Chapter26/onlineStore/webpack.mix.js delete mode 100644 Chapter27/onlineStore/.editorconfig delete mode 100644 Chapter27/onlineStore/.env.example delete mode 100644 Chapter27/onlineStore/.gitattributes delete mode 100644 Chapter27/onlineStore/.gitignore delete mode 100644 Chapter27/onlineStore/.styleci.yml delete mode 100644 Chapter27/onlineStore/README.md delete mode 100644 Chapter27/onlineStore/app/Console/Kernel.php delete mode 100644 Chapter27/onlineStore/app/Exceptions/Handler.php delete mode 100644 Chapter27/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php delete mode 100644 Chapter27/onlineStore/app/Http/Controllers/Admin/AdminProductController.php delete mode 100644 Chapter27/onlineStore/app/Http/Controllers/Auth/ConfirmPasswordController.php delete mode 100644 Chapter27/onlineStore/app/Http/Controllers/Auth/ForgotPasswordController.php delete mode 100644 Chapter27/onlineStore/app/Http/Controllers/Auth/LoginController.php delete mode 100644 Chapter27/onlineStore/app/Http/Controllers/Auth/RegisterController.php delete mode 100644 Chapter27/onlineStore/app/Http/Controllers/Auth/ResetPasswordController.php delete mode 100644 Chapter27/onlineStore/app/Http/Controllers/Auth/VerificationController.php delete mode 100644 Chapter27/onlineStore/app/Http/Controllers/CartController.php delete mode 100644 Chapter27/onlineStore/app/Http/Controllers/Controller.php delete mode 100644 Chapter27/onlineStore/app/Http/Controllers/HomeController.php delete mode 100644 Chapter27/onlineStore/app/Http/Controllers/ProductController.php delete mode 100644 Chapter27/onlineStore/app/Http/Kernel.php delete mode 100644 Chapter27/onlineStore/app/Http/Middleware/AdminAuthMiddleware.php delete mode 100644 Chapter27/onlineStore/app/Http/Middleware/Authenticate.php delete mode 100644 Chapter27/onlineStore/app/Http/Middleware/EncryptCookies.php delete mode 100644 Chapter27/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php delete mode 100644 Chapter27/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php delete mode 100644 Chapter27/onlineStore/app/Http/Middleware/TrimStrings.php delete mode 100644 Chapter27/onlineStore/app/Http/Middleware/TrustHosts.php delete mode 100644 Chapter27/onlineStore/app/Http/Middleware/TrustProxies.php delete mode 100644 Chapter27/onlineStore/app/Http/Middleware/VerifyCsrfToken.php delete mode 100644 Chapter27/onlineStore/app/Models/Item.php delete mode 100644 Chapter27/onlineStore/app/Models/Order.php delete mode 100644 Chapter27/onlineStore/app/Models/Product.php delete mode 100644 Chapter27/onlineStore/app/Models/User.php delete mode 100644 Chapter27/onlineStore/app/Providers/AppServiceProvider.php delete mode 100644 Chapter27/onlineStore/app/Providers/AuthServiceProvider.php delete mode 100644 Chapter27/onlineStore/app/Providers/BroadcastServiceProvider.php delete mode 100644 Chapter27/onlineStore/app/Providers/EventServiceProvider.php delete mode 100644 Chapter27/onlineStore/app/Providers/RouteServiceProvider.php delete mode 100644 Chapter27/onlineStore/artisan delete mode 100644 Chapter27/onlineStore/bootstrap/app.php delete mode 100644 Chapter27/onlineStore/bootstrap/cache/.gitignore delete mode 100644 Chapter27/onlineStore/composer.json delete mode 100644 Chapter27/onlineStore/composer.lock delete mode 100644 Chapter27/onlineStore/config/app.php delete mode 100644 Chapter27/onlineStore/config/auth.php delete mode 100644 Chapter27/onlineStore/config/broadcasting.php delete mode 100644 Chapter27/onlineStore/config/cache.php delete mode 100644 Chapter27/onlineStore/config/cors.php delete mode 100644 Chapter27/onlineStore/config/database.php delete mode 100644 Chapter27/onlineStore/config/filesystems.php delete mode 100644 Chapter27/onlineStore/config/hashing.php delete mode 100644 Chapter27/onlineStore/config/logging.php delete mode 100644 Chapter27/onlineStore/config/mail.php delete mode 100644 Chapter27/onlineStore/config/queue.php delete mode 100644 Chapter27/onlineStore/config/sanctum.php delete mode 100644 Chapter27/onlineStore/config/services.php delete mode 100644 Chapter27/onlineStore/config/session.php delete mode 100644 Chapter27/onlineStore/config/view.php delete mode 100644 Chapter27/onlineStore/database/.gitignore delete mode 100644 Chapter27/onlineStore/database/factories/UserFactory.php delete mode 100644 Chapter27/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php delete mode 100644 Chapter27/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php delete mode 100644 Chapter27/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php delete mode 100644 Chapter27/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php delete mode 100644 Chapter27/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php delete mode 100644 Chapter27/onlineStore/database/migrations/2022_02_12_140820_alter_users_table.php delete mode 100644 Chapter27/onlineStore/database/migrations/2022_02_12_152713_create_orders_table.php delete mode 100644 Chapter27/onlineStore/database/migrations/2022_02_12_152850_create_items_table.php delete mode 100644 Chapter27/onlineStore/database/seeders/DatabaseSeeder.php delete mode 100644 Chapter27/onlineStore/lang/en.json delete mode 100644 Chapter27/onlineStore/lang/en/auth.php delete mode 100644 Chapter27/onlineStore/lang/en/pagination.php delete mode 100644 Chapter27/onlineStore/lang/en/passwords.php delete mode 100644 Chapter27/onlineStore/lang/en/validation.php delete mode 100644 Chapter27/onlineStore/package.json delete mode 100644 Chapter27/onlineStore/phpcs.xml delete mode 100644 Chapter27/onlineStore/phpunit.xml delete mode 100644 Chapter27/onlineStore/public/.htaccess delete mode 100644 Chapter27/onlineStore/public/css/admin.css delete mode 100644 Chapter27/onlineStore/public/css/app.css delete mode 100644 Chapter27/onlineStore/public/favicon.ico delete mode 100644 Chapter27/onlineStore/public/img/game.png delete mode 100644 Chapter27/onlineStore/public/img/safe.png delete mode 100644 Chapter27/onlineStore/public/img/submarine.png delete mode 100644 Chapter27/onlineStore/public/img/undraw_profile.svg delete mode 100644 Chapter27/onlineStore/public/index.php delete mode 100644 Chapter27/onlineStore/public/robots.txt delete mode 100644 Chapter27/onlineStore/resources/css/app.css delete mode 100644 Chapter27/onlineStore/resources/js/app.js delete mode 100644 Chapter27/onlineStore/resources/js/bootstrap.js delete mode 100644 Chapter27/onlineStore/resources/sass/_variables.scss delete mode 100644 Chapter27/onlineStore/resources/sass/app.scss delete mode 100644 Chapter27/onlineStore/resources/views/admin/home/index.blade.php delete mode 100644 Chapter27/onlineStore/resources/views/admin/product/edit.blade.php delete mode 100644 Chapter27/onlineStore/resources/views/admin/product/index.blade.php delete mode 100644 Chapter27/onlineStore/resources/views/auth/login.blade.php delete mode 100644 Chapter27/onlineStore/resources/views/auth/passwords/confirm.blade.php delete mode 100644 Chapter27/onlineStore/resources/views/auth/passwords/email.blade.php delete mode 100644 Chapter27/onlineStore/resources/views/auth/passwords/reset.blade.php delete mode 100644 Chapter27/onlineStore/resources/views/auth/register.blade.php delete mode 100644 Chapter27/onlineStore/resources/views/auth/verify.blade.php delete mode 100644 Chapter27/onlineStore/resources/views/cart/index.blade.php delete mode 100644 Chapter27/onlineStore/resources/views/cart/purchase.blade.php delete mode 100644 Chapter27/onlineStore/resources/views/home.blade.php delete mode 100644 Chapter27/onlineStore/resources/views/home/about.blade.php delete mode 100644 Chapter27/onlineStore/resources/views/home/index.blade.php delete mode 100644 Chapter27/onlineStore/resources/views/layouts/admin.blade.php delete mode 100644 Chapter27/onlineStore/resources/views/layouts/app.blade.php delete mode 100644 Chapter27/onlineStore/resources/views/product/index.blade.php delete mode 100644 Chapter27/onlineStore/resources/views/product/show.blade.php delete mode 100644 Chapter27/onlineStore/resources/views/welcome.blade.php delete mode 100644 Chapter27/onlineStore/routes/api.php delete mode 100644 Chapter27/onlineStore/routes/channels.php delete mode 100644 Chapter27/onlineStore/routes/console.php delete mode 100644 Chapter27/onlineStore/routes/web.php delete mode 100644 Chapter27/onlineStore/storage/app/.gitignore delete mode 100644 Chapter27/onlineStore/storage/app/public/.gitignore delete mode 100644 Chapter27/onlineStore/storage/framework/.gitignore delete mode 100644 Chapter27/onlineStore/storage/framework/cache/.gitignore delete mode 100644 Chapter27/onlineStore/storage/framework/cache/data/.gitignore delete mode 100644 Chapter27/onlineStore/storage/framework/sessions/.gitignore delete mode 100644 Chapter27/onlineStore/storage/framework/testing/.gitignore delete mode 100644 Chapter27/onlineStore/storage/framework/views/.gitignore delete mode 100644 Chapter27/onlineStore/storage/logs/.gitignore delete mode 100644 Chapter27/onlineStore/tests/CreatesApplication.php delete mode 100644 Chapter27/onlineStore/tests/Feature/ExampleTest.php delete mode 100644 Chapter27/onlineStore/tests/TestCase.php delete mode 100644 Chapter27/onlineStore/tests/Unit/ExampleTest.php delete mode 100644 Chapter27/onlineStore/webpack.mix.js delete mode 100644 Chapter28/onlineStore/.editorconfig delete mode 100644 Chapter28/onlineStore/.env.example delete mode 100644 Chapter28/onlineStore/.gitattributes delete mode 100644 Chapter28/onlineStore/.gitignore delete mode 100644 Chapter28/onlineStore/.styleci.yml delete mode 100644 Chapter28/onlineStore/README.md delete mode 100644 Chapter28/onlineStore/app/Console/Kernel.php delete mode 100644 Chapter28/onlineStore/app/Exceptions/Handler.php delete mode 100644 Chapter28/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php delete mode 100644 Chapter28/onlineStore/app/Http/Controllers/Admin/AdminProductController.php delete mode 100644 Chapter28/onlineStore/app/Http/Controllers/Auth/ConfirmPasswordController.php delete mode 100644 Chapter28/onlineStore/app/Http/Controllers/Auth/ForgotPasswordController.php delete mode 100644 Chapter28/onlineStore/app/Http/Controllers/Auth/LoginController.php delete mode 100644 Chapter28/onlineStore/app/Http/Controllers/Auth/RegisterController.php delete mode 100644 Chapter28/onlineStore/app/Http/Controllers/Auth/ResetPasswordController.php delete mode 100644 Chapter28/onlineStore/app/Http/Controllers/Auth/VerificationController.php delete mode 100644 Chapter28/onlineStore/app/Http/Controllers/CartController.php delete mode 100644 Chapter28/onlineStore/app/Http/Controllers/Controller.php delete mode 100644 Chapter28/onlineStore/app/Http/Controllers/HomeController.php delete mode 100644 Chapter28/onlineStore/app/Http/Controllers/MyAccountController.php delete mode 100644 Chapter28/onlineStore/app/Http/Controllers/ProductController.php delete mode 100644 Chapter28/onlineStore/app/Http/Kernel.php delete mode 100644 Chapter28/onlineStore/app/Http/Middleware/AdminAuthMiddleware.php delete mode 100644 Chapter28/onlineStore/app/Http/Middleware/Authenticate.php delete mode 100644 Chapter28/onlineStore/app/Http/Middleware/EncryptCookies.php delete mode 100644 Chapter28/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php delete mode 100644 Chapter28/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php delete mode 100644 Chapter28/onlineStore/app/Http/Middleware/TrimStrings.php delete mode 100644 Chapter28/onlineStore/app/Http/Middleware/TrustHosts.php delete mode 100644 Chapter28/onlineStore/app/Http/Middleware/TrustProxies.php delete mode 100644 Chapter28/onlineStore/app/Http/Middleware/VerifyCsrfToken.php delete mode 100644 Chapter28/onlineStore/app/Models/Item.php delete mode 100644 Chapter28/onlineStore/app/Models/Order.php delete mode 100644 Chapter28/onlineStore/app/Models/Product.php delete mode 100644 Chapter28/onlineStore/app/Models/User.php delete mode 100644 Chapter28/onlineStore/app/Providers/AppServiceProvider.php delete mode 100644 Chapter28/onlineStore/app/Providers/AuthServiceProvider.php delete mode 100644 Chapter28/onlineStore/app/Providers/BroadcastServiceProvider.php delete mode 100644 Chapter28/onlineStore/app/Providers/EventServiceProvider.php delete mode 100644 Chapter28/onlineStore/app/Providers/RouteServiceProvider.php delete mode 100644 Chapter28/onlineStore/artisan delete mode 100644 Chapter28/onlineStore/bootstrap/app.php delete mode 100644 Chapter28/onlineStore/bootstrap/cache/.gitignore delete mode 100644 Chapter28/onlineStore/composer.json delete mode 100644 Chapter28/onlineStore/composer.lock delete mode 100644 Chapter28/onlineStore/config/app.php delete mode 100644 Chapter28/onlineStore/config/auth.php delete mode 100644 Chapter28/onlineStore/config/broadcasting.php delete mode 100644 Chapter28/onlineStore/config/cache.php delete mode 100644 Chapter28/onlineStore/config/cors.php delete mode 100644 Chapter28/onlineStore/config/database.php delete mode 100644 Chapter28/onlineStore/config/filesystems.php delete mode 100644 Chapter28/onlineStore/config/hashing.php delete mode 100644 Chapter28/onlineStore/config/logging.php delete mode 100644 Chapter28/onlineStore/config/mail.php delete mode 100644 Chapter28/onlineStore/config/queue.php delete mode 100644 Chapter28/onlineStore/config/sanctum.php delete mode 100644 Chapter28/onlineStore/config/services.php delete mode 100644 Chapter28/onlineStore/config/session.php delete mode 100644 Chapter28/onlineStore/config/view.php delete mode 100644 Chapter28/onlineStore/database/.gitignore delete mode 100644 Chapter28/onlineStore/database/factories/UserFactory.php delete mode 100644 Chapter28/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php delete mode 100644 Chapter28/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php delete mode 100644 Chapter28/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php delete mode 100644 Chapter28/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php delete mode 100644 Chapter28/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php delete mode 100644 Chapter28/onlineStore/database/migrations/2022_02_12_140820_alter_users_table.php delete mode 100644 Chapter28/onlineStore/database/migrations/2022_02_12_152713_create_orders_table.php delete mode 100644 Chapter28/onlineStore/database/migrations/2022_02_12_152850_create_items_table.php delete mode 100644 Chapter28/onlineStore/database/seeders/DatabaseSeeder.php delete mode 100644 Chapter28/onlineStore/lang/en.json delete mode 100644 Chapter28/onlineStore/lang/en/auth.php delete mode 100644 Chapter28/onlineStore/lang/en/pagination.php delete mode 100644 Chapter28/onlineStore/lang/en/passwords.php delete mode 100644 Chapter28/onlineStore/lang/en/validation.php delete mode 100644 Chapter28/onlineStore/package.json delete mode 100644 Chapter28/onlineStore/phpcs.xml delete mode 100644 Chapter28/onlineStore/phpunit.xml delete mode 100644 Chapter28/onlineStore/public/.htaccess delete mode 100644 Chapter28/onlineStore/public/css/admin.css delete mode 100644 Chapter28/onlineStore/public/css/app.css delete mode 100644 Chapter28/onlineStore/public/favicon.ico delete mode 100644 Chapter28/onlineStore/public/img/game.png delete mode 100644 Chapter28/onlineStore/public/img/safe.png delete mode 100644 Chapter28/onlineStore/public/img/submarine.png delete mode 100644 Chapter28/onlineStore/public/img/undraw_profile.svg delete mode 100644 Chapter28/onlineStore/public/index.php delete mode 100644 Chapter28/onlineStore/public/robots.txt delete mode 100644 Chapter28/onlineStore/resources/css/app.css delete mode 100644 Chapter28/onlineStore/resources/js/app.js delete mode 100644 Chapter28/onlineStore/resources/js/bootstrap.js delete mode 100644 Chapter28/onlineStore/resources/sass/_variables.scss delete mode 100644 Chapter28/onlineStore/resources/sass/app.scss delete mode 100644 Chapter28/onlineStore/resources/views/admin/home/index.blade.php delete mode 100644 Chapter28/onlineStore/resources/views/admin/product/edit.blade.php delete mode 100644 Chapter28/onlineStore/resources/views/admin/product/index.blade.php delete mode 100644 Chapter28/onlineStore/resources/views/auth/login.blade.php delete mode 100644 Chapter28/onlineStore/resources/views/auth/passwords/confirm.blade.php delete mode 100644 Chapter28/onlineStore/resources/views/auth/passwords/email.blade.php delete mode 100644 Chapter28/onlineStore/resources/views/auth/passwords/reset.blade.php delete mode 100644 Chapter28/onlineStore/resources/views/auth/register.blade.php delete mode 100644 Chapter28/onlineStore/resources/views/auth/verify.blade.php delete mode 100644 Chapter28/onlineStore/resources/views/cart/index.blade.php delete mode 100644 Chapter28/onlineStore/resources/views/cart/purchase.blade.php delete mode 100644 Chapter28/onlineStore/resources/views/home.blade.php delete mode 100644 Chapter28/onlineStore/resources/views/home/about.blade.php delete mode 100644 Chapter28/onlineStore/resources/views/home/index.blade.php delete mode 100644 Chapter28/onlineStore/resources/views/layouts/admin.blade.php delete mode 100644 Chapter28/onlineStore/resources/views/layouts/app.blade.php delete mode 100644 Chapter28/onlineStore/resources/views/myaccount/orders.blade.php delete mode 100644 Chapter28/onlineStore/resources/views/product/index.blade.php delete mode 100644 Chapter28/onlineStore/resources/views/product/show.blade.php delete mode 100644 Chapter28/onlineStore/resources/views/welcome.blade.php delete mode 100644 Chapter28/onlineStore/routes/api.php delete mode 100644 Chapter28/onlineStore/routes/channels.php delete mode 100644 Chapter28/onlineStore/routes/console.php delete mode 100644 Chapter28/onlineStore/routes/web.php delete mode 100644 Chapter28/onlineStore/storage/app/.gitignore delete mode 100644 Chapter28/onlineStore/storage/app/public/.gitignore delete mode 100644 Chapter28/onlineStore/storage/framework/.gitignore delete mode 100644 Chapter28/onlineStore/storage/framework/cache/.gitignore delete mode 100644 Chapter28/onlineStore/storage/framework/cache/data/.gitignore delete mode 100644 Chapter28/onlineStore/storage/framework/sessions/.gitignore delete mode 100644 Chapter28/onlineStore/storage/framework/testing/.gitignore delete mode 100644 Chapter28/onlineStore/storage/framework/views/.gitignore delete mode 100644 Chapter28/onlineStore/storage/logs/.gitignore delete mode 100644 Chapter28/onlineStore/tests/CreatesApplication.php delete mode 100644 Chapter28/onlineStore/tests/Feature/ExampleTest.php delete mode 100644 Chapter28/onlineStore/tests/TestCase.php delete mode 100644 Chapter28/onlineStore/tests/Unit/ExampleTest.php delete mode 100644 Chapter28/onlineStore/webpack.mix.js diff --git a/BookImages/Book images.pdf b/BookImages/Book images.pdf deleted file mode 100644 index 475bdd249788054cf50321ce6bb7381d42982786..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3154233 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�b;v(19;E}} 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¥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

NFm=HhkhAzETOT}{j7T1pYol)K9 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%0D-_mlB7o0KiE2~Hxg;yNq{C|rVuR2_^eI? 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¨8xNrI28f7n7$OraSn$E5DiagHAKD%Pzyi)03O$x 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%0ALJIZxb6Oh&GyK6Ph2i65 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%0DH;p7yhp@}CL@XsLQcxa&7esi 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ĉkv^<%iW`=H-o%8Ycdb;h{m|g{ZIZ1U^g6n_AKn5V4Gv9MI~4wxMW7dwydk@%eEv1pKy92 zB@BVu%In4VKE=)aSEE6j&F;G$wMz(ciR_nC!5jk3Z#yo+TbD49Z)RFhZ|TjB8**Mq z)5)M0^Xz{=7haU$%&HjG->$V=`d6v31QFiwgL!N$V!-v-rjqd9)8(C238h00~*;PD4|F9%3f%gv$_79ei z)j#9yUK9RiAhr3@Gc1GB#iViefzCsrkYPs$*3~$7*H}4V;K9Q%Qd5M5J z0{+w0_q5XcwIfnr?+0rDY*o6QJiD`++zk#0NzM8|^zQvLfNqa2anf#xRWJ0}lhmTA zb;AaOZ^l--m6=M2Om3wY0~m{(4%X@@spX6WWJY?Z_{F6*y(AGIwN;y-Nn60l&i zkX3uoxO+o}1t094R)26V$}Qf{o=54LrKZk(sAuva6Cr>0eg5=G0#tUw z-N3M$>zBoz5cX4FK$Cee37vtOfTB)Iii=)G*YDRZc1jY?aMJ0BQyp zhTYkmEmHDsE_Nf921KaJJb&*m`dr+9>u|goXug%Fh?7`mnuybVau@dU9ZNxvCy+W^ zwrZCL0$J;^UOlhCO;mrNPM3y|j@ACY5P_6d{IJbfT3u9EHsg-!(G$xNFLAs-V5|TF<-ddOlpgzQj7i4;h7&~@7}bt(AxpTqDJqN z#)cw-eBlglMa_ECa~+4oLSD>MV>@o|%=tX-4x|;OEr;f{X)|me&tMP`5l|4&5HQXO zvNT{I)1O?SAmBcHma#bbHRpBb`=y{~xf`Pg++#KK5HaHi(TRxWPs&JFYI^rMcFmG! z7LSFC~Yx)03UU>;ttdu9*ugcT;HI#bzpy~=Q0Dkz_vJFIB{os zj{EI+5z<06XU5fau*X}~xFBHPO08oWwD9`db02-68NDrc!h-o{gNUH!^LDS)$F9SN zyBx>3O%LXW!32`m-VKKCw>3;+#PdWai}^i$xH9UMI`w$LOHTGPk=!GXsZFQu!6(v7 z4@;%D&FbZcR0r;yGnVBN9L#MNnKT~={8`QxgW0y_{aFGf6`c=7ziVX%f9uQB{0=x2_s_v^n;Sy zA(E|8NvgmjBVu=_Jm6YeaF)Ck7{4?qP3*^NJNtQ*rZl7tZ5@!_^o~1<%EM%YM@yR< zD0q)gP$M5n0Rd;Yw-h|k4XpYaJswxQDhNuo%Uj~lNFdSQb8qdPoHXDc0FLtPnVIRD z;v{=_w2w*1)L+6jV7&Tc(BD9wOaqZn_>#Q=|Fhn_q(l%HR#R;{pR469=elRkp+y+Z zT1@pgl90$&zKuLar=tnpGdK`DvYxa@C|66Aax%#dGa>zNybXD3lk_r7_K|75cC64i zlr#|-OrUU{JRHbw+mZJbM};H{RwIel==|33jmv)FD!hoH_^$nND+QyKoz2PlDK9og zE7uEpC8O@NS&aq+;=RyL*#F!}UI9-F6;ns&glQ570n6)53?6l5Cf~AM&DryKFsv6G z!PpBed$p}L$21?EGH2JA{?IGlI8}n}WPx0Y8xSVg7qd-o9`fxQz}`)yVq(H_QyRI5 zH&ai5I-6$l)SP%JJSq_paT_Sar`7ZxBy{)ST~<+l`U(}q9*y|<{W}8APhS8*2RrW~ zf9##D|5~JU&|5Z8W27!@qo!v*%K21gDcN2U2^)jv``XKD6%{?$zdA%`q$M^B}#?*aX&~&G_m>J`=cNfB4T1U zS66&PuQwXQ@_P16EC}pH zvr|CFqma0chmomg)DVqW$#5CZQ$T!#fLO}!9fx8B)!T0lt-yX0yDL?Fji(m-IL>yf zA$n-5KPY&)>yc-07UPe!meru*_no2?v84YJ4}*pbLbfklcJuLxxJq?w z4@)-=J-OC{{c^g}^btY(@VXDT1KlzIPDElCMNy26+dGc2a#IAkSYlLw%{umdx7#Kt@ zv#N-XSBl92$m~;B(7HhaIUYkrvQk7Q?+^&9Ma>mpM@DHX6Yqxb&6uaRUg)<>HfioK zToW-lN~u9TSK$y45JyWiDT*#kjfp)z^<#U2fkY=MO7;f;1-g2WtZ@w@XYOkH;IA0!tSo z#rN9zJuG;C$a2kNQTD$@L3|qRCgwr4rAf*&ZR;OsF{K&ySRjXKFU_*_bqfs}OAEJN z5)f>u6WF>kRGKa*`om#U`6%Vj`TTBhi=oGbwl4ZA98{++ZoYTI)bn+Y+OsebgMzv4 zQ;9>hD}rxL22$*hSo!=%&%P?nGV9g{f`|9^_m^HWBBCPm#jL+;IA&MFvxY?x63f+h zQecGx{mg5iYI#eo3VgwO2Y;|5;dE13(((jZIv9jfQw0TMK`>fq(@yRK_XH0nt{14a zVUcO>j}_{|9r9ST>VuO|#s`QnOyGZ5k9E9$^75H#GzzD}nwimvp3nH3B{c+ISV^Ou zhbU3N!Q#c^!=atQF;saz@2k@>`3xVCjD#S*Do-H0Qz^&*=#6qYB#DsK| z1t$2!fRT_9cGn9|=8{ZbeTY5#m8C&~d-~xKr)g@-7H?yV;`aSO!_uwU?xCO-*e9Ix zar@N#ZV)b(c5R|Tr4A-dto2sU4g=E*4h}S0!1Og#=rd-GkMV<&1`8otwBTXYP?zxB z9?lEso+HOZXywFviBv~0+RtDkUKu7^^EJO7IE)t#>|;Ir&}vtjk!0{!K`C=&#??L5 z3_E&o<$Hkauu@iwCN9825$`pxKk2-)JZUVZsXADb4XxDeOqXNUD*Lz=$k)_}zv+Dh zdE6o5U76H>i3rez>Cjn(7l4S3m^K+HZSkR-aY3<$L8;PCx2_lknGDC}kinEuu0Fy1 zAuF~cF3~_cm(V@UJupd|7sQ^?F4J=zWfl(gq}&TpXL^D8?p+NlPKZEnm}n?jQ0eETOk>#eH^Kk|@Tte} zP)&Gbj(owr{2GVQ7Bx!>$rzM{+^N-@1e7M;Hs?g249YbP41DbGFL#;UWxKaK;mDT} zdA*06;D#CDK(8j&dmGnA#1&=srf9z4FlexIz<{(~sl}hs#cqo?C_Y~05s@MbT;Civ zC~}(Ovuf1@t0Qv#3|nSRfvF6BayPUST8lkF7_VrFx$GvinG;*QX*@K(S20u1hD{t) z9S-iC22%T6Xq+na^FlWavY*ks;~1`C-}qF&Pl|MPz7`JZG33cxGx7A+p(_#)oW&(m zqlYK@EPg~F2Qw=Q)ybIc=qc%QeCcdc2F{Xre!!@-st4z8>xxplY~(BFQdbwa^4|#} zbFuzsdH;JX@ym(lFFxLM{*t(FO|wTMwLzIRwYAE?Iq5=DyhA zE;*Q-lXb!2(9IhpWj!OWtT+dvIjR{yIGdr%-V~q4bX93}A{?dz#5_vXu`}+p^zD?w z?T~+|NWevcvb*c&qU^kMtL4Ru7g~#ps5U}~myivlsT>MjY(T*6aGhhGT9`D`-v?v# z8=PNB&|p5V5d33cUod|T-mry`v9v^`}5F@^K07G9Pq`evJT=I3=t z@W`=fUFG;D8 z;_N)Xfne6;aax*poTGI1ABolD6;Nq%t>!FiU_d&dQmejj0O75Os;hw8*~La4X?d&Y z@JS7+M)dFt|K2c-9J7^mBoQ`5qji}pJ@8%2feF@#NB|vhjv~2~1{kW7ypzXZ#?Uif zZL?Uvk*VVaAiL=O#>vHeFc7EXB788aj(Jf)hywJUn590)(NL+sls~kYqM@VJ5f_#} zSWYdym3h98RAG=rxI^%2=T_AO9aP8@uEP#XQG7*9Tt3dBs$zu5G~0A3!_-gP%?~xG zc;`wpEME}NEE5`M8r1SK0y)H!I3x#NlLAsI>js4oli>2$3yJ^ovx6p}6xLcPcnA&+ zmzK6iLrM6a&*BXPi6=n6whU(Iu^`W$ySCU(a6-85+hv(28YW? z%gRbfMPoo6~-934>UG^_%?9ID!Ts1E;5;UH6=^t@^1 z&y5aK+cpkOQxMA3eVD)w!X3ND3**}7xujf~JHH#IW}kJF5n(p2L13Pk@}v!+e$D_O ze<(Pp(oZ=Kd-YA08~hl`0=#+3?GL=p7j+5SmCkQb(C{d|P5`Jh4wrdgz{7su0M5KU&Q}(`Z5f-j@^-*e0|#E=JZR7KP}UyT__4CHPOXPopzn3# zQB#)DI0L)&3M(i1`GvYYeTxB#HhxPV1dQa+8ZD4*>x26z%rHEKnT(_Uf;Re2Q#NWkrV8UeHCtz#Na^V7LH2+|RuPh-0AqsO%7 zP?-dQ38u07Vn_W{n}no<#8B^B8b-#q3^C?7vC%ND@?()f<=!M3quF%+0L`t0ons<) zm^4lqJOw8eFTdcRnHiOstxs>*sNuSrXFl@=!@~3GAQyh-@$i4 zBtLhUWYrV>BsvKc(+YTk3y&h5^LnMH=;*T3*95V4jE!Qe_i?{fDp8YG+dvx%Z?WhjS{D zJQIBizZ@2=5JI;}GPiMosaTHALHR1S4>3=+3!2O)8SSV>T+>s|xyQP-T_y+fnY`@u zFJ`sBJ#ngry7h9xXxBRUG=W~lp2t$Zd9vxZPc}`mL!NaS3?f8{46nS`rvQf#n`-?2 z{1_$VVnHIG>!2)QHT;M`|egbg<;+M z2mAW^dwTi@W99W3`Xj%iVz*+eP(EXQiU>v7>8OTsOK1a3?v$8jYbpgi*Nj>*h(^$r zmt>X>I>FWJCE_NDZtcvW0zZuzMs{+C4|2!1b9EFq_vw zlM5~bYjzGUE+rvXrqh@<=9HlxE=Qr4PzW`W7hGBI{PnLYXDmXg8Jsj|X(oIOtB0_K zbG`2rWxA#@0l`dN-Ahk6#K~5&r+&Py0OT7@gqLMvB4!V#GwV18Hv0?shzV~KI zXZdnWbSd<`z%G{kYw}tso2K|ktM9RM3T_*rI6CR{FQ3=H)P1b~z{J*hcN!-RhDm;O^vFO>Oib3@{jKies^Ps;&q!U)A~L#4i`8gJJfCPZ2P~NknXjOn#b)ib))`NQPP(cI1 zL=|q%jT0$X%w+a zI~)6KZ~Yai^Ns@aW3%a+Uya+PuR(y$`)|M|bpT*8d0#3~wxj0L0P0(x?}L75^u=H z>{QeLf^Lu&Qhg5368H)^#V*hBlhMH_dyH;hI8Z%D`+Es8A*{pF6F^Z6aF5^}-0RT7^G){I4k)TtY8&_u0y7Eb&H9yv%ZB{R_TrIzyecsJm3sp3I>Iz($dB2Z6UH+6N0_V;Y4rO4U^ zeBYZK{bs-*lZwwdGz)NQ7_dmO`3^p{D3#=WF)J6P;`vMAyRhTmSXc zTT(eJ2t}jyKZ@|YwOI=z#-zh66gLI8xz^0KJFI_G@;k=;O74p#o_O)qY4>oW`-36u zKh6F_2dHRv@~-z8&0Dk7r1RqqpKUdH2Q&QF{J}gCmq0drk$fM07%ah)KrD? zyA+tEnW-RT+24QCt2|%Bmm`4#Rpw^B9$Q>cKVb0p&e6=jUsrz{?hYZjHYERKzvp9{ zkQ$e5oQL1n?GJi~65Gbr85IC-ixh);n#d!AT)yhFR2&R{@l&mkK|5~+x#P}8NeiMj zrB9N1TZd4id%>wy21hL|>F_Nv#Gb@}y}022(HoHey-Cmi@%x_YB7|wM;yE_ow){TB zj7IORg7vhEa4!AoW3t4xQ?96H*Q^T1B$c0PDQf3AbFv^X=V5z_24XZ<0Dh}DsH-#Q90-d%Apn0EWl~X84?ya?bO##bqK-UcQbIH^j#+ zBnQI_4s${=In|oNpa8dh0p3&umTfMLWsyQ~vQivz4Erp@{KxxOAeCcTgK zXzlYq`54O_j#I*L|K}`9uoS6rm-Zms{!ypsM*zNLvqVo3r zDm?GJ-{sRO60cf?)Y&G`sSpVE3cS&dQRt%Z`K8?Ok_IF7KZvcMu6O|gv1+Y0VF;X+lO7@yUYrd_42X`UzETA4 z{gG>rnc}#Q#^JfP$=miKy0(IYUuxksQ0UE-$UvFaX2uT}iUA8hQ&@-B7}EF%xA=0v zT!+FWz(PnNf*;78`ojJ5Fdta$m~IO_zPShm774`ER1x^l^bFeJ@Rg(DdYzDgnbiDK z+#yVBrQxdxE?_t~v5zd^Y8^We_%iZxO*O@-mW;Kk@?A;!ou0Y9zNXB?tVv-(-Q3c- zU8ToDy?~(m?aX|;IQrq*St-QAOxjLc?(%MauL2?JbnV%0%lO`K%mGRfTGfQ5Yj+_8$|-GL5onYP-_(^rlGg`42AMa?;99jHdux zDARCd+#i-gvi}|M;r6YxIzzT4M3VxpYYAVrqi3mF3OKeF8h%?egMSo%qmZDq!F~M$b2_C7=Y>mOAM$~nr0mwYMW4pH7r!5)O9caF z>hmpx8kpD$J(*sfk9RobAkhmnTtft}pJ*gG^ea|MVrmu+liU6`bI&+G8lWhrx7`2S zO!PRx&m5Z?(^Lb_8I4JZiXA6hv!?!JFUhA+_xT?}1P}ARg)9eES;e4YL&>_bSZr;8 z*{lKphnT=%7*LM7x;5%zj=Nv`$+pNdVB@*>KTIG)Rqfaqoo zPjJ!pz7y*k*lYME$JtmYDBzO_tmN^$_kUySE5oAfx^Q7&h@oKw=@2RD?v{`gkS^(v z?rsnP0qO2eL8QC8ySp2PhBLm`_r`V3`2#=TdS>>Dd*AC`>)G4?S2!y8v0u@G?q#4v z81{N`3&`6>%l*-jT^|?puMc)MPzwSC!_|Jr{)jLK%o2P^WR2*VgxhfB91 z36o^P3LbUME!#9Qx^T{h;{|2rs24Yh#*ze%A~O z!X*x#w2P*|8q?>Xq3K8e0RwLP+k~30=B0xn6LvNl$p@5zj@oS*-g56)^YU+cZK0fkj#Vs zlOa4VLat>!(R$oH%pLz9yAb#RilvFciNOUfw%1)BOIO0U+&s(A&X=_?PDe9E^KE@4 zFf*y%AbEEk5$n7v8N9J!i51P5U$$6ug;Gg8>~|NAiu#glU%79hKIl_y zhW_c~;Lp9inMn?9v`woo^x!8a7kC#YK|@2&IMP3=FxaQAy+xguOG){5U3UzdMmUSa zX9Iqv7nb|Wxkeol<6Bow%}g=@fuH-iqesT)@-x2wEVHb%OC8NYl4ZJNu}1C&KPi#> z^&Qc~D0kMPX7;pJiQDC`9ou)7N2NVmZY}w^hyFcJVFV6oQxiD`Q#peNY{wO=?n!4~ zT&4IA%BWO*0!$Rp9z^jQDP;I~RJoX?M%z213=P8-YL$Cq=jB%a`PBaz*ERUP&UTd< zl|N>;2g|(!@%E_6iJ;zV!^nli6>qzbg7pRy#Q0xnNRKQD;cW zhVyyz^Kx?1Q6anl;Nca=<|clmC4}4*>8&#pg)8H_;IH|2*tLICj7o~O{kgN2BmYwj z_HT&GdgZirrYol9KB!U;BpPF8v$N%rjhMB1XNG4#Wg>SYpMookmGo-*R90j4>vXeJ5i}D6V?#Xw7Vzg%Y1;e zg_%IH0f8M%+}+%sl;i{SXJOx0B*nJ1GFV~Q0ms-IG$)R{?)UiS=KDpo!oeFIfT)hU zYAYU%q&E1ev%(d=1*X^x`iQVl1Qep3bBd16D%J^wxHyR3vDR_^O+NMM3Vsi4;ftLd zQASdFd~|$+x+~(q$WU816ZBlS!yTtodmoeJ1CB(GtEf?+aBk=#2FjzU>%%^X`yZ1y zUD=+=HqM3A$?A*=f-!w9__>7i9BG7)BS3n>@Y1xjg=dBv8;WP7Vc+wA5rC1<+bmQ4 zae&PTo{W8iI0oNfs}*7X@gNYv!DU}_Ts_Bnl5^S8$Y9eVF)h=hO!rbGq~`-!=6R{) zrAFjTweIn5Gw(h%Z*!09i1XQa6$ z%NBUkW%y%en$;BDa!8fLLy+si^D`aGF%Durb*}=~lv`ar$JDexl4yNQh*py17tNxmc25AkGl+b}f@We>k zPDc4ndF7*XTSQSP%Nopg4RnAdk|WGsoq#RQu5w8+Xhu7k^u!}-8^JyM?HUw%y~#e6 z{D88)J+4K7JX-71AF_W^G$yxAL#3A znDTgz_-j>lw-WWf8Z^FM%;#K6HFUIo06*w#hfee3@5!>xA zJG^Q}un-4d;f&`?%XlUm?q;GhSGU2#?Y4Hjrx{OK{f0igbs_jiABmhCe`1pS0#m~) zv|bg1hn#l7M5K543e-@#{a5+u?;q)A`b{)-?}%!RZb`wx6QX}{*QEYc-}&?FmzsCY z$i15%opyJ3G8KiE6(esDZP2dtn(aN-dg4}WLaZ^uQI{oXzmp3^vh|V^8$C zxV@X~bx7m5F+ke~@yQ0pg%{vJTd!9wo^l%bCGgL>%8Hmo*w}7YG{VAQnm#6aFlKvb zmpJ%k@bD2$1lEa}@$DMmxyf+f4}e6~@u6oDx@TiHs3ckL?z~rXYEYh?YF|F{#D7?S z>mA+1|0!LM#g%6ba{4oulw|6~rTnS)ZY3jK?`6NcEJJtcaou}5%n~gFYu5nf>ROaF2eh)W<)5Vg%+|OrUcIWwqUeg3psCByf6lGgpI5%8#-eAO zI+at%&W;RU3knH#)Hz8cY7OIJ(rFs=Y{>fAg3h}PGo3@w+d6fa-xHkQ<8IL-V(7(i zjqV-9h4;Ovpu9R)CcB`qI`^xPx>*i)rF#9mMqI%_#T8_zCE1`&ulnk_E2qbZ8O-oG zB((C!xg(S#1`4j|>89*b`U%YdXuf_87dK8%PogCPgTb%XwTs<_(xWOmWGiY_ zFW2*oH-p@3bgvdYUAQ12h#W$K$M^epH5t07kB=9SQKk^@=h?H-7lOOH?KKRHLp|+k zqoztc9pQl9w1b#kj)oF;DAAt7?csCm`i{VirOKKv4-YE*Q+`eWfvab9hhp@56#n=t z&-2BFcMqEiyCk6=^&h8>meUd#b-s`i5@$(~3vuoCtt08GC)(06(${&Iirad@bZmcj zZlVRD)02E~tjeu}?okAi>`;F97$d1*qtlWhixJ%}uHNs;3uTMYA*t@N4ZX;#`9noa zw<|MQZEbhe8Hp@kAzK=z$O9_%6-nWBVOMc@UFg1_RjJo>uc&NkY3|1J!Q~NzxK_Ds zMz+VahC#8=w*~0Qg83)nENEoe>}_#=Qp6di9J8^83U<`HC13Ad9PW>IdXL*&FZZpJ znh@SS0hkcH-Fa>&!%~DsZXR#Wd6+wVOg_A@rM)~E&9oxG-Nm3JGVbqV2O+qORwal1 z;`c&>q$GZILTCNkHN}6F3r7(@){0+2mZEszC7DWB`!cKNenWRt+=_AI%G>K&owVJB z!W!Sek9woE$~dj``0Q*PuuC*_eLkCenLn~S77mK<7Y>w-sb@(H0`*{7%60aeh1h@w z8%&?vZ63$#0h&;?grd}lKkd&@fWW;Q-ay&gGemb5Fp;4BR^LyHU~k^td$p7HK=7X5Y(e&Yh2I8c>}N5--%aUVS6} zdpU}Kv27HP`g+iA9ec!=UAm!}o?(U6B#$fGryv13BbBwum`$2K+V$(^{r+xXYhaL; z-u~0?x-&HKsFbu%pFXb4FE6`T79P$>NuEx#l`%lK@cAVClC&Rj(db`aH#x;@_!mT) zW_*XNhK=K;{cA^Zsx&&fVU2SHsaza1*?W zOG;y)8B_}Zv`^bI%WHH1>*yK3YpqEf>V*Yc`(}WSuuDyyykA3k`9;Tx}rOt`(T7o!_q-QtPfbdU#JWZTE{6RdrQGIlT?Zs}8+kGHkFvSDZ2nC)_$$m)VkL>Oam z`pGd#lgIYKbk)Q}&1hLkQHzJ^Yc6;G2YqjM$KM-$j(fUT0T?)+-)`>znPd4$KjC4~ z)#5N;9hV6+?JBHKc5s%e78cv`nN!5huBYQ`4o+yO%so;extLpp&(Bs)FwzGX3!3pC z&j5?GiSYMYWzE})F#kO6RbKkoFI#K^kh6nq8ae@LZIy0@Dk{a;gEi$wZ^1H3K#=v* z?XOFye!V+ex#$`T0K-p(`MG%<$Nnx!XTN+9KZ4SBm=r!K2v0{zb^o4f&Ryix{t7ZC&d%`(w0Q z9WDQuyZ9`-88RM0+Rg5byXv@eFV&m(z2mW|29elF_dpo_HsI@t!tga`XiG24-ylHV z^;5cjMxVk@sP~;H>t^= zjV6C9Ol@0)E#Hy~UFN^oH6Zg{jmrU(05p^u-cTGrbB7|1c{f>oDAY={GfL(?b${{u zv|3j>cSEbZUjBMc4wIdC33Z^OozA&d>U^6md6%J&D5Ietmq1t_cw8h1hJ%T)tUH{E4f5xGg zUH6vT$*%N?LeolxXAc@v9;G@mFiKo1Z@3W$1e6lXf-#pt0eJ=_9lZDVFG?*$6w|px z#~~BycKKEFtA;%(1Q3Yg-oV@D{lX*8TuvMmmaIVlQwh^IHap3|%S&N>=wPB^{gu(3 z`a>Yn*qVKERaH3;7vJFHRE|nkW^)a&+||ea=x4q{*v-r>Q=tkxNec9}FI<##e!u=ymuz%(>o&xk&j1~E{`CI!A?JNm&PCfSyN??9n6Ugj9>1|u z(M8B&$Ms>g(HR>kGhu!p75#E^5zT4?*%iSnSZ1|drZVwC=5jakc;5)a3%NYJJbb*i z8Ex?KS~ws5d1Y$Fb*@4tSR0OPz$itST=x827gMGISb z=mP+wLT+$(c89mOl;NdWLtlUQbIBr}q$*i-86UV3_w5VPpe?q1$H18E!bVY42g0X! zWoO|Xx&45%MFBTh?jMUi%BvbV`f&4FKv&a^C`g)E{Y> zZ_yW)?4FPnD<>aPNq1CC&({-p#mZ)@zw@;&RZJXn+?UEo!k5kZ6nkvH9ZZNnd51AD z(Jc6|V7eOyJ!9~Dy0Wo{fC{O2)|yaGmZI;k7bO}bTlcY|79o~VY~S&9kxmUU7@&Wy zI5v3?5=aW(Uz?7Th;{Gu*n3(VMzyuMCTVmtS(_|1B@O8E@Bk4vT$noezFeKz7Vznl z_NuNbD+bsXT8zOuI|cwZ-^AdrFDNR2LAd99W)8hITbaVO(zMZiJLg06G*XH4a#OaG zCn4Els>}JA;cvdvR^7F%6kiP(ITU>Z2^$7F$!0Mk>+QoeiX^k zfHR?Yqd*U*LTS0;A~LddwD9 zqcfUnMLYG$LE@j4OVFGNWuo1b z5+L-q`o68l3;0Q*xy@KmJ%0>rbhJWkeE^mY)10BPJ~+EiO7fIku0Z zG#oWoQAwo`4(+%vRy|Wo)mOBA!|SgMNjRPb>oZFcv*Z@y-`ZAA>W{bUK%0=^hRk1$ zSY4gO8yp-CMS(-TKw$=jW85AYrOE->9$+r6`$?gL{p3b}0DJKlN|B6ETA` zMe4-?+KSq`>G4VCuE_s-fF_Wm0YAona(p>Nk)~2q^+?d@)aiL5f!eZ)pQKQibBr`0itveT>5nyf4#&$XGZ1imy^DE4n{lJ&8HBw zrU|b~S09d-0E&qQ*+&aS!F4O(P4jcMm$Ln=&;Zc(F|aG|-6;;OrHt;CW}N_%x~zsC z^%AGj4$Q1(EYnEfqdwM4-wKYYf-c00Nq0;Nw&7vSa$1o_cwxfdzq?2obB$S|o_&7O ztj9jmTp}t|Y`;j@<=>r&!BR?i+)BPP zw9NN^b^r~=#Ti;(Q(r)~G$m_9KHghK`Na5mYHa8<*6ZTTI`x8V3h}$XfDMCALtmt} zGqn$S2lwtViZDtuGlCf(R6c$t(j$eux6QeApydkfX71W?saX6dMRv%Zzyz9J&O|00gw^4v zFDA}`I${I8YyAw5A|&+p!sjj61NX6O+x$mb$cb?(Lz+mhBQ?6an`n_VRf!tQ*<5Oa zMv7vHb%q-1+w)oFZmInleDUZ*sipcQu%`Y=2tfmvqen-dfFR>}Di1^mFX~#|X z7FXSuKn9_E(!4a#6+Ncim<6k|)CZZQ>&I6i@0Vs#D!<7G_XgeNDnOiQIg}y(dWJZRwo+X}H${_RqWz|s zac^rDzmOd7CQR=;>nJ#4%LJk(rGW)j%@byu)s*)YvX%6SZ!>&wQZ{79Xalt&3h-rKd3R9irOzE_*Ab_s)v=D5Tmm^{+QF$b`8WLYtT;8op_p{r#*Y& zurPMF0KvSMSCtUcL0cQ`>eE-?RXAz_k^{uCXUjNNQ;G2j#%yfi_h2*nvV~zOv6Rd& zPXa~#UM={1qn6H?6lzkUfmx@ZFu{SPK+nj~Qa1|{V!{jCwz$?7_mwJEVPpi8mApm` z%X#Wogpm$ZS!m+RQq&Ks;`tS$*7AGF^W;p>Wh+}jF8@-oe(+RL(dCLXr%BJp;_ljf zQ7CwGxRi;6(Frqp1DlCyrBIU|gDGT3(Q6lSOq*sXV$N6xn9I4J`Y? zS{wd}CuQFi;}Z$-d?V|bGkf^*u|8DQJPA;TNN67LYEr>33Cnmy{-}$5?ewNAWvi8( z;ft~10VIh7#Q`BTwn61mNETfiH^2+ecLN98?p+)P*YEG?Ko+i#%4@*_IV?AT8#d;5 zP*jG5LWWTYb~1&Ji?AAtCUlw@?_*J#^TGL9Z7UBOBbymkH!WsVO#e@H0tqsD1+T3Q zPxG}I%F!$Fk&&>-Sc{2Gkbv=E`mu1-np(~TT)ZMMYYa+^>6fPBreC==cW*tIVpR5- zH0kLI%}QDsM_By<8LT4qVVW=b(0XQ2Caist+Meg_`|Ohu=PgLjLnGft4r-`y0UTj$ z3!`m7#}?%l8r3Dvp`|4*5JVOl^&!QD8Vo8ObG8vlIx8;AB=fYU`D)1O*54oW_U(+Y zh|@K{Vy062=P(SQo7-=HfD}dU#LhBu5a69kBG_l=(&l-Lx&2zJm(U?KWFVEaFn#p# zrRb!K>886?;PCP0&GqQ=GZh~)D}&_F+z^_2DDvDU7zcq~A5Tp`m&5LEt+|<^wbQT` zB&zEFo@=u~a=`JcNM~t1*2cBnm&e7cqj}ib35WH!wzn!n3s;qK%We+OO)tXx<8h5z zuN%I3+C*SH-#>sEQ~CJFmLMb)>%C->JRh^6V0SD2ZZ12u1F_ZLsUk0bXY z(8;Q>uXyYXc5*$A8c2t<^qlb8-5FM(P+bE4j!EA?T=4g=Onoh>&n9hg?|lIsN&Sot zlOYnp2)O9L=H;}V5<*MKkVA{&`Y)X1yabUba9^2;u!ODQT>a$p#3dytyT;LqU>UPo ztwnUpf0eDrv(F-dMiL5)YG?PqB}AY@Yfz*70=s$o&#ZcMoSf0Au0J-zo~f=Uqv0}$Zfr$Wa--cE_vRjnQh5c#Mv zPZ|U`dvr1>z>o%idru8m!xO-Iy!&su(J5)*RjmFd0zoqP39I7cHbHxgLp&G{Yuxe>Ffym8~46DMW2tXEwo z#V{ku@78$TacxB?cXZI5lYTs`2X;+2Fpa>)?JCyGXtm%l9E?TSDA2Mt|JZ;5If}t8 zHal(tAd*aJErhRh6=iT;HZDp8TIw1%=L-IRu2YtBvu{g43HFCu_-YuVYa7_l_LDPQfMihfz z1LR;Kig$kadEjq4?H9omjLb*VtLlKaaR9W)DFq1F7 zVI_W1G_(SUW5wUtx~3MzM9M?CrQo(_s51){@r?0zxD5N|>e+&ZMina~1rFovX|?pjoV(sXKS$ zjtiZuO`dR(OCj(w8(pDA)xe6FuVdhB-+Jwbh3EOLQMkUAm+RnoWJzG=*qyiRY>&z5 zfW~&{v%9O_MJT$ENI3V;-K{*hU7MrJW^}X4-rcap^Q7>Fk0xmdjvPPWMiYln{>~EE ziT`of=`1CQwlb_EzaV>&%u6H58hjdI)lI;wHBqrQ9d^iej?IqR%*tC~R*JhaFLY@i z>b)+hghf0oFUNe(cZ7n)#}w5%VKBt<09ak)X7fq=!mzE4SMAT)9RSv7qzX~lI(S82 za)T+=lB-6jLihFEpk;&BIfpR`MS05CP4bPUC?n{Vb$q;w7xq=$Y?j%18w2gnx-kKG zF*%)`7ocf3m(W4gpPN+O<{|Q&ZiS82h0J=9B<8doBaq*;!(*<_zo?Efr%45KG5*zq zpgaI8#eVl=O??@P9xYhEQaxAHPdZ3ad@UzC$^f2-B=SQ+FJ`E_2qq|vQA+MrejYi% z0bNy(OFdI1S;H6=F;+!o>lN;SLLeFRSSo^^kiqu%*S(2YOS*tC<99T^S0ew!M^?jQ zE}@HeWrm^Bz?b^lTPkIN#fvoeZ$#9&)(VaeA>UuhxNc_)j-fH~I{QV%XTV4(DYn5R zxZ?Yb*19N?TS__`6ZlJJUIt2Q$GHcb_Kkk%=Fuv|0|dzpDeHninScK+jVoD4`#A*s zTW?KwXPK)j9C}4`kIbvK>5@Cru7|Qm&N)LX?Ug22KLQ9=jvrZ|$h+dZ#R8+ASXkKT z24n|w&Gq~u`xAQZv3M6@3P%C^_3+N3>JihCdc6lhcD3yU?S|7MwMGTqr*EmLiUO$O zZH4$eq?nBlQ`7U(e*Z4@FI9|zfd(cB(ZId393=>F zcNJMwCA-(~S!+xwgVPENe@3L^;t!~>q$%5g91#)0+=|O%WU4e#)9_F#P=t?vk2BAo zE=WdE7ljVO#@S^s{c`!OCrVH%dzcR!1XLZwIBeam+n1)T-gfWd3R@pfKb>N*pZezX z@B)pFi_@p^R)J#}n%f8AAqA&iSx5|Ws0;-p!fYsCfHE6M(xNY?ovt>8Vdwo$SxmLY z^w=wtyX$|kXjOtkLiKySsO#9C&?}J5QC*p~~o`m4} zJs;P0#Y&$hUtXR$^PL3G$}3_khT(|o>zZi}i?>o`u>oQTgf{TNuEf0w11x)4s~Qlh zkW#LGIS{CSdgYLY+?Y?yL=w`42>F*Hv$SK(fjFiL=>~k2W zfW4l=Y`c%2{j8lQ6(c$Ce^IrKA1ILg8x+g;B&#~^_fEk8MI%Q?ZBc-LpkT1n)C1(~ zE7DhqY{e^8?WpABxRfw@F_=rH_`y87IN34;*f%QuM#gO7iYl7PNijKk0GNUpS};`U zxNct;wL?XydzvK$k$FXlr?^l;S*5CxYhv~2E0nCZ;aRT8;}zY^0RMIS1gKI(3`XsG z1Sy`CKG=BG)r0UO!_wwmUYLj;T8xE`4!7_l^6ux6160}bPg*LNgZ+bJBY`4=El7Md zp>)3}7fg!R*p}RU{T~yriFrK2X$(K?XyU&xj-RICL~}7THP>7bx$=1)X}!8)czWN{ zSnxeG?QQt5+qmV9lKfV(Y?BVc3M1cv)u#d7iZH>^1pACAcK3_AH4AA^S0a{Q$~^rZ-uNnKn={-Kt-ty?zb;uH!J_^G)PW zYkB8nEmfF_;RD9uS5KJ7qx0~s2+cNxBH7ytyikE zHNw1tI6A#1h7pcVi0L+Abt7`F`M{Ebgjp4(@@a^%;tM4+1iJHVzDbMJZ1GXDJabSy z9uFbDHMgq80<{mT#3vyCxRtQOuK!ZEOM84~6eEta(GvAvN2j%XC>iwFz8=Iy0%jH_ zz6M1goDjpb+g6gHMw;4lyZbQ8%D{Cp(J^pn?7*Z4Ca_jjLko0TTVC`?E+Q&lnYN%c zx8{DIw5E61&Pt)H$`UE3qz8KU#*n%$55R_~*FC}uZ`?&xX1VScU zsD`|@vS4R$!C~W!d0Y_;cYRa~B_ ze6T|BLe5w4|4s3_5F`{hMtUO9ukivZi?D(rTs*?ba7UNlZ}K9p6`2=Z2}NLS z;pbd0AJF}tRB5-II4ojAVBXOUe#@7fQm}|@eI#AW z>b))~;9$5nW8(wY>=+r_s}IfFu}&!QEokNkH}s+uC6grtd0zYjIjVK97fC%Fw_*bpSfjW5;D8H z+hyW0{f7VRJ>#k(!C7l{K`$DHle?>|bc){bfux2`r(USvZc3kav{699I7$h>Dqpd; zPJf4AY8rGsc6{f?=0#Cn{kSrOTFZtE)NyN67E@b7rR3q{gg~^QAKou zz8^U58YXzk>+m@2H$*lkSj#902b5qPjS+3@c%P3iwp**UMplp*%n0b&q2}81q-H6A zpuEWJ5~}>t?)?p-j4lC{YkB8na()rst5m2`#X}$5Pc{^I zJ8)4ozV6qb-otWV6Es8&5V)1^(;g67ja%3y2G@s9$v? zQ;27!6#_^&0AU)m^RwN)*8X0CaffO5Ol`GBzhhML=g=Z~I+Tf1O!VZl<3J13cSH^p z$Jv!B7?MwBCJ$qH%3k&^F@55#PDHI--QgJSAoL;K+_4`&-_Y9fkW@Rdak%L+s!NXY z5}&`CheFkeeE%}1BEQeMaq}N7O05n?i9F-8X_ldR_G100f+=&PJx%K@?VQsFs0wZT zyI}^ePJ>+B4YP%$qoN|;2O1jzJmDE?;NP2z@aiA_{Ug9%E^GU<-yF1nKJvEeP>U)1 z=GM%`y|Z#6zXtI2_itJ{J@NE79(W}NRUj?$0ADk6%8ZT7+J-oD!%C8XgHF{2Y|Sd4 z{Q5DscjYZL)2GsyDg1lUGUO~Z3mgY=c;5qCPg&Wu{3!*SZls6D#O1~Tp)l}&1GIjP z>d9z#P;$BR)q+U7tP`A3B-tD2AtdNM@5L+K_y@CK&?V&ADF8_Fk&z0rAF85|zM%id z9Wv3~-TF@qfq)QYQ|Wa{&5Lv~5u2YeCMNagO;6%#UfiZGN^M$M&!jw<9mhipu4iY| z6xKbrWeOm5Dr4`txLTjzAwIc~!f!qa5jxLaQJ1(DRc;tBByZ0zDBD`+7;hPe{#7Dbhn!2YE$V_kpK~Y^*cIlKNl)sR5 z3hQCiT?s`X9=?r5um_;6X>OL~L>`5;dA$oNnN0e*ZOK29) zn@gSlDE>fv zJ-=QQw-hPm_zp2tT=V)%`b7r`oBAhNyyS$z0H4tpZV%&8ab=qmoiJ8hD_d(@Ya44D zs|!k?Bh@I+$RpZptnh1R1?#@Lo0@WxS|u%emC|Fui096m17MJ+e0Ejk%Z$ zw-4!yC`us-vQ8wTP`rtTYum+_`NFT!-(Af?yo3tfEnd`p!=aeJ zL+MgA^r9l^m%T#Luc1jJHH9Jaytv6y!fNZxIwNVt_7FY7s0%SN`S8OUBRguE#ru$H za|9{?JDLgmuv~_ux2DH`R>;r5X!Y;4-qugp?k!ceuf2JdoX8ibKd2rTllU_!!i}xV zXYssmanS((&@Aa*1g-8<-TG5tUxiqc;nU0oTzta#?-{D&*Q^{T`WMFv@Awf0Q_(^* zWwz#GHyyVRV`}OpNeaVoopC`5{^L`i`j_ECw_ z!m=3uDAwGaE~Md=)$nz;zvty)EG+I1Y&Yo4hOk(S9JbZcF3L+Axm}cCiVHckv0k{` zd)M7R8xI1L?IMH(k}bjyld$^Az>kJgk$J=%WRY>O;XqlQ2?pj~D4Ab(l_zccAq)^2 zdKtseQyPINDvV4cHs;pcF1lBOpoM|~XU z>U_*A33j_W2L3luUmK;jn!6IkKDxBqNb3J)W_dT!sjBw2X*H@!t3+#%-*k)Rr-Rjn zq<>T#xRnE{oj_v7mETZztN5n)NdiNS4wA1t4FB8N2W;J3aM75;~l$EQhq zoa^Wacv5sx_+BiWKYBq9?8&<^(Baq0K@uSCNF34*ZJ;hu02L6r|R z(Y?KS=E|CrDUbBX<`Tis{^d3B`>qnJ5SDOeaW)Z*NMfqd^I8%Bk-rUXIkoWl_s>{i zxyr>3AuA|Cjqd0m1^ELla=2 zJ$|j06`_%3>Sc4ymzetnqd(C}wsqU{rM9h2<~1p2?hyf<6RQvc3)}nEJl$J61nXBA z54dyJQb+MozQ^sb5Z9L*n#7tfL#&_2?6K@}{4ebs?x_twU7}jFl`POv(>lml^nq}l z-_!4;*}h=-1Du72ULQ5uB~EJ}Rs9;9&WmL@5PyIiHOEZwV0AL@&FXaqJZp6rpvS?B#{IRS&J_#6xl0NiECZxVWX4snX>Zio(CJI`8d|#MHIb_`=;-A0$TRwGH z+sLo7DV==jFQtTMZ@7TOkFN})*5bhLR{~;*>gYKfKZy*vBX0&I=Mo=lc=R%8;h-hQ z)^p|^(@acs>R68L;U-jI7ZwPMc(R@Ij_vVEZsV>{$(mdFG@q7+%0eIl%^b7 zs~h2;Id8oe`#cmrEVmWTQZByZmTI#q?mBkzPb*9EkQhiMq1nyYGNd8Hvx<}PfRH$C zI73y2?Nlph)VZ&hLj&(@LM(2#>BYER$Glh@?S_C=MJ}I>an3U2ramUYtIQW5g`10t zt!8uh93blV@vk%ogO0>5c>K5|a8W>*jG4OWUrON#oBEuIORx9Vwro$g6h})YY)@lV zYtON4MP!u4G{21vEquQ8$3eNUU(`x*dX*I7(Ib<%(6@=Q8VrW-{}Yy9R@@Y6)WKHQ zvYWlj?kZLdxCe)*e{g(DrUwmbk1}o&CI%2o;3YQN`$d}YK*&~sNIBpNj>lfAI2F>axrRrny zJKVI7c*|@v&KG@rk*+e&h4)!#9i|TeyoUf)UIi&_=pases@8c5Tq+QjI=37X@dVRA z)JPb^)qaH>)o5T$Kgr>gNPH~)G*R@1+i|6LAfs+ZN|UqJL+fuvJo!}&!VFn09~P>`h%PJsB~%a`HF3qgvWxh(J^oe9Wu5sLaB79Re&2T?-o3Sx| z&+l~Lb>n^WStwn43{0jWg^x|$;%WwRT%Uss8B3qGt|igJMB4<#83lVji&un^+#dLy zK(7QmeVoH)aAYIaPWs)7W_a~Nbza{9@uu;6$+r*W|oZb2*j#wbWO zm6y^?f9f)8ydvm*+PjlTCW{1G;i@QBN_o%oG4L;JIX@~P4q&S^|I&1_&&tHjJ1;N4 z?dyeYtXY|v=})N#d$a+T(@s7QTkhuN$5{fnPa|gBS&*kO%XtTz)OnZ75+<94jP(2Y zpi4=NgcJI?=#*-#6MZp@4<)_v8QlbC;Kmcb>=|?i9dhVRf6{6A*h1=Y zcnc?$B9a_MpNkrbqsPww8d|+npmkjQ$kq9Yya;2IM05iw;C_pLdHXXQGgvE~z)!Jso~F6u1Ibphc)RRKCnp z%j3?Kzge(qJiYB1$5ddf{D`m^8X4nt5P4HfdmOsY$0w3$_t;5txr>HMf_q-r94T1o zCj1oYocP~|k9}YVCO=MreND?A>Q~X{{O#+a?~Qydb_a zIv~^Id%Vj8a^1jJ-Qa4ttsi*v+q}AlfwBC6dTG!m<%A^ zUn$aF^C+z6p1orD^9?t$MDy`=}>PvI@rKbG%=dNUO2XL-9-1YD^GQQ;E$4C2ie3 zZYV8Z1V45X2h>~iua)G<>*+!$|M?#N)bEuu`+elvPjN6J6r`S~CVE{2ATxI< zkPl-n3JvdbV`w1vWAuKxuKY=o?4N)rIg-e+w`paSN^k3`Vs3l9o~}oFdc6GU zX=f{b8D)ugy4Twx^QPtv`6omV?#7h5?#*ClC%(oU5Bmwi=A7VG%!TYbQa0MhP5T=HQ3!DRKP zX5V1Q5;-LbEsh>1JCOH6MNxX!ns4OzThn&HVnhTBQ2)I>D}jBD94vMqJGq8b(rr~1 z?N~J1d!CTr)_a5k&v%NEvam>@U)3SrFJax~yz5LK8nQl@3r=nBu(S$U+R8LO)RnqC z{nTaVvu47v2pYzsch6a@{ECfD-8+!=B}uf!OaVXkpTDA{j$H zYANz-Z5j{ftT~XIEmkqgp7fF2pBJ`2)>!uH4JO(#SVC%ITj!qZ*qfZsqZZ!7Sztfx zc}&ZN_;Q7weyq;avzo|U=>Gg$q@2XVs#9gLax#CWoWzjSIq}#o2jzbL_f=A@sDD)c zi1#6q8A$uV-&p#xJRTjQr(9_}o*h@BnkAz)2PPAdih1D$Bm-t!^mmr-D$t2HvuIuI zgjHU!)_F?qRlxQ85v_ApjfnUk8`hhRW{y<0wR+(-iZd!eDKFmLV@6)KQdg%)#Nd`Q0AAjuZL0gQUc<{`6@L{Xf z2v}~9^YDLngOF3xQdPm{epK>c^}>OyM*8_-v*pB=MQdm?NRMRxvPRC!HVqN({p+b&lx#Xl$v*Q?T~ z|9f`!P7H7Wiq#0n*m{)gz?PgQv&m#*(yQ<8B|2#b8HnQVBQX|#HH;=5FAKR`@MrsG zXLH|PK~B2&n|DTtZzZm5Z>e;MVE=qZuC!;-7?>Lex+?-@+fin+W9wWTy`%BR;V6Mc z=aaRsC&8{G)y=im>KvPdI(kMXm9%4??ZKs`X>Z?F!a=_T^xs7MyYP_Z{1oP^X|Ip> zs|9?bH72K-vc|=F(Y2mLT9w@d#<0U`w<$cWYvD{?99LUejL!X^#d=W>S!oX3(vExu z`rbq(3)B~Fgazie1wm~=s}E`myp8jzxq5Z#C;cu8oGan!=17zbs0~l4D!ph^^x*

c!#WMDIXrZW zW}Ki3Mol{O`#%RrhIm{MWkIq9LZ>QhSn{EecE;pi8dPMb-0h)10fMdzOOJ#&B)^T} zWzt6Gz8D{r=1Neh}(-jZfI2A8P9Hz8_qsktup^vyt1e=&6W>;h|JrEYgY)uTX`Pmv z_szso`h33^!zo&u(Srn<51O-nros`7FfV7R=C}W?Pgr?PvPqvolbA0@vjK;SKni{$ zt8E#cfE}2A_T{w9GGVl3`z0R+Iw$T~=k+k6)A%?GCc}~n0l46pK|PY!zEtrWv-}l+PD6ODzIAv!RYPHa?C4x)(S+_jv$J~IL-~7<`B>S!`@p4<*~I3qCg-x zgrLDCKyY^p7CdNhcPF^JySuvwcMI^aqVu_ zYAsd~w5+?}@TNPTTx@c$&h7mb60yYODo^dSxoi&^mcnZDyYF=E6bf-wU(2t&g3^!o;(G6iZ*H;_SS}^0T=2w2I9ka$U zK`h*Xv3l*~0Z)yC%6JIi;|K@cc8ozJfk}R$=vzsuEqXY$JZjmjN2Ngsa56L01>$Np ziQjMnlObR}N)!)hIadp*^ClK{eXXGcw6Mg9Ep~c+-ddWp4~N+ubJd=x=6@hyBPy#` zAp@V*!AQh$K5`M5t`(dDQK=Cj%=AJ+x6%7mPLNTAt+Y0tuK~5~mgeBur+zM&j(}4G zAIdBIO^&xwW3WkJh>kl~UOu<=`$XRCZmnOtP)gL>TIW%ImG|(*>Z~nqg ziu;spJIXtFT1?l|@+-a?tX&8u0xE~!MdS~Jgr`3zs@!?<+M~{0b{qAX-c z$6+Fka^s@~!C-V6^;$|I4i$TiHCb7YH6nfqw|aErZ_*cj=p#p=NU|Uv7SPSk&q5q6PES)Wzij(RCem zMN$;(7Vn7k_65k-dge<7@kDb8$;oMn4R%jX8VO)NH~@mKc+Xa#B?+D=-HSFD89yT= z++YKi$__^fpn2z-`6^-AMirhVT#h(thA<0*gZ!1jm88rmhxyrL zzh9csk+V}N144tvgvGlgLqJ>c9fvV*y;7Ez!az7YcJS0S)kI;$dC}|&ipjpdF5|7? z0{RC*g170FX(qEDTRw$2&6^3;=x=LNqjE_6jC(ali#s#zz2vigQcCachb<2sBsw_??}5N?~}a1i&0xOS03+9Ax@MiZ&f-2>XhS46(ghK;^NYdnF{yz z=H6k0&P7D7I~03S=YarlkX+6nGB_9^jq z!DGpAtidwUS5{hCS>u$E?bnliEkOF|qsDpF3h)JcZSlRTtEZJS0UhZRIN$3+>KlbO zfT9^8+$0oC+~k)&1NcCo=z*bN(q$n4U$1p$L-LG-+39`_#E7^jrARP(es=mzJHIH0 zA#Z?e-6y-(}! z*|4|KpJzD_P)T4XxB1k>hO&e9-<;QBhm2s*sFkZ7_GEA@*k`&?@SFdGmcouhoKGhA z-@@~0PHTw1Mj#o3t8(sfd%fyx_0Dx8lNVaaKxZX`<}{V)s{_*3YVrB`26HCaX_7{Z z%#?+|{_cZc%}t(;b<(SUs8sOX_{TVz!F*8kK?msVo;(70YJM#$&K`%Vw{qLpaa@P# zEZ3nvsDpn3*0Jx7J|=q0SE&Xc!?To9vD+@Ii7$&2X1i1jyT1w}y@GN3R*H^X4MZUm zHzYYP{VSSDbcI9cmuoo=7vAAW&zW0Cx;Tv0me}7Wriet!Ey}$Y5NydT2D*CfC@JJ= zkG4t$yV87rfqM2;rXeu|!pUq3*}$El^G+7T3~pyH7asX4AH{oM;}ODUs7fbEY%3pt z|F589CEUsNvzX}4Js*`NG&1nscKRS}HsPj?+vuj`=XZa;lQgX=ZPM zjrc@sX6&-WDQ0S_%I7uj@k6QAN)K2{^qZYsugK_-xP(}LzoJV6mf>2`mHSP-}xS!=2m8#+s2}r>B*Rw*p8r2JGZt_2jgfo8ch=!;z|`; z&6fwJP!_NEj3}55h*K$(Tn0Cz$)JdUZBq!#H~N`ClDxuXfeQy5RV%Kxe=yFzDSvv~ zh6Ppf7w8zu7)n8x*bENEhW-mxUcQ4+DahNILHW}duNQ12pIAs~5>=dSGIry8RXLb* zN`7`656cFzNc4}Un7Ue++Sqjc+{NS~H}39W3AQp_#QJ?ae1bj4{IGV-Ryvo?Vi0M& zP;Dfe&pI2jC(DvQyby1&_^h~I-G+m`*Ff~|$k@L-j^}v|)kNzL?a>>?IB@(;3b}jO zSMOJS(={r>&h$!b3JTzWg9-qf-kkYhzL)S+e>}lbnTRr|J=g&|(&*+LUT-CXeL(m$ zHR_w?e>14Dc#~Y27cP8etJJm)y>1Z}io33gyb{FSU6Hsb{p&aEMP)GNvlWKcL@0l<_E zXePKMu$J5Sc)O>)&|#x~hW)S`3ky}R&8t=fyrjv2O9VE}tPrNIshVsy(I0d0hnw0d)) zsgND-&O)1b`m!yQhTW3+2Sy)rp&ezP3RU*xZ+x;}WivhlJ#e!wl_DBT{?bHx>u+lz zk5`1tWz()Ai42A?m)q%$F^>Sh6x-Cl3b@wWNkRZ}=&DS7=vLkpf0%1vqr}F-^Mcc` z)`l38rXuw^ouf%(K5bD+~+zEfvF{Q4Ij3dDp5DD2l}tAF=6|D!7e@utjh!-k%=`!9_Whya144?gz?@KZowEn+V&k4qbRN zJj?M}p^(6c(FiY9)u+jGun2b7~@ikYLk z3LOd^rvR4qJTOpR#Shp%!guy)O@4X5?H>sXz>kh$-&p~*hAI#9*JfxIR4AwpuQfn6 zF%FgBKuW^e;GHex`9Rki4c<&<=}_i1sx*q+Q)^rk_qx zE$GTq@ynM5JUs9zL9hNu8vxuSxjP!o0%;Z+x*}~=JA-*a0vy2gQ7RnQ7I0`uKmlx# z>9Oe*`a4UG?dzKk18Zy#&|aF065tmAYoxR%L_c3M0DgwUh%zUgo1oU=9~!WS(%uAa zFAphv{0$L0Xhw*h)AW|}m83=+`;ps)@P)G(ovYuMNZ>wTph%KIBEV%Wk4X-e;{l~M zL*9*uifFLMf1VE&>|i_u0(d-c#@R!c_tQr!=C1E-X3+4zo8V~m#IYxZK74>Vvq^wV z0_$|RkIlkG+DkOa`*8@3_*?dU0zFCC9uX9juLJwgI|)y^7<3Er<)pL*r}_GRhC@jT z`1*g%5&YT`_?zifYM%Y+CB(9u@z|980azENW>NxWUPz$M{RSB=79+$rt0Md+R_7Kbg4UA&Xc~B2RQwr`$u3>G zSAuy^g)Jzq0pm{c^4OjY6iTZ@D+^1u9GN&V9y)+&+k}(t1gDb_N0UYPjUMd?CgFMZ zC>tO3au{0&)VnkYKCZIY-dH66Y%o_`?Uu^Z?)+q0U=^M1cz7E=8%M^vtQJd zR}Ao!qab(vMfxtZ7wN0NK<&qYm=&nKqH;3xPs^TL2D-^nC|{|>xzIi zgb{EcFW6euSf1w~KkA$!n-+Q>Xn(>D_7`E-g@4Zq$p>ncUJe%Ads^40b40>kNk^md zO8ZZm#*v%(zceZ^qPt`0EYH@GKfLDSb3l7E%Jx9-5Rd+_gC3VQkV5}kfEGs_1_0{_ z>1kpJ1AaG6!SOP;+Zg~|48ySc>&bAfE+3^K2@1L0hL%hm9$==M-%Q^SCT9#+Q8}T; z&S;_|bCU!D9`mZ%2C)o%bkX8VPYx}UcmyJjEj(Z|pyRjUUGK`2>LkK6YT4{MNaI+3 z-Ckft&^d^M{smKlvw6oq?`w*?yX|f|q`8yxeUup%iE9P$Ja6SQ&==2Yo+f~icvdcObDjZP_{7>`y}90eNmbYn4Sg1goOg}!oVVI?2=}h1 z{BN#qyQC3cRgG_U?p0$b{+Kj0C(=vhO+nd0(+i$_T}cQB*V&0rC-+7|_q#v#V<-us zJlFH=8%MEh2PxP_^kly>PYeis?zYo#UIo$xg1WHu#ZlOhny4*7L zO2hSnHgW#&r}MRO8Uzfjg~1?NS~x`SE-AXd$nNU=qw!kRd_aF>uBcA7RnczN3n$*^ z6HlknX;etuVH3o7|K6KGOA`b4ePE{c?+xAySwoni{-BtK0WPv5=mU8 z5W>CZ@Ays23HOn|+e7k9l%VXj8NmOwm*RkudhPxh*MW#&*Sp>klCo36N&?Bxvt9Eq z@aO$}IG%aGt2w80x8iBgUml8mxrkUO-Q1rmjUlyRFpe8 z&0lsmQ?bH#4UQM;-L58b>hg#8k(pLL&!T8yxMuZArZ8i@>pZ0ueu(yUps0v{6Aa>= zn)aT%$_=;@tg~|6P>AFL=7WBs-q@-(9~_6J2TjN9y4cw?2FM$2ZJYC;T!5SNyv)@6 zsaw8y$zP3A@Yk0}zjzKCsvA8DDq&+ED<2Fx6})A4A#25a_nVd$0}lEfGGZ7QpyN-A zono*oxQl5G?$*j~JxNnr#MZmLaGyBHSY1@nb>P8T5j29zdO&F5{+1iJVYT-wl@Zqy zY-fM)N}ZdOFZhuwdr3+X@zN78S!~mZ&vgbta89@lTV+9-x<}4XZwXy+T2VAYK~I}K zfFAo6Nz#_=PU19dm(SW+C^yu>dAs@MBZIsIPZZ0}X{BVXtr$RnUNrk>M!Qc_w_~% z705x_LO9hv@k;MwRrp4g?p=-dyb)fqaup~}`5#f4f9ua-;I%`ZSssEnbs$uz9AayD z(qti>;sCwtfGjWZ%S}zk%U)fsfq>Ig*VZTNRY~Prb>;J+X87pqomN{;_o)W8$n+!l z7j5^sZEyaub$43_ss97$jpAMxND0qXPxD7z-fN(u0O}OL=SEapOz$91RJ3*Shf+B7 zCoWIx^58I@>`n^KfZVJOi*+#&F;0W{DHP!)mp8kS)q`il|CYkkW4N4-+Y51Ha}L_h z7e~8pj;$3;!>6n>egf(ih*3#kSv0_Hr6>N4_T5s!_L)*3IS?YtkaU%$d`d^bN-xLf z*0+3YCPr8bza@Bv!O~_rLL9pbCaZv@?5e> zkAxDlD}qz(Eks~kZtxC`gq7yF%i{-kU-ck9{2F10j$o2rB>QHxQ=(kMaNy zAdA2S6HHWVH5YcNvksEsFX0V}ie1p-lg$u0qLhuH*5>DvuGEH?i7A<)Mot2gFg8fc zvO&W77!-wS5|O2wYnM2NVkpBgh>{yT7aqUeo6Oi?rFllL`xK`HNxT9=7@!0n8}RK1`HK~v!`qVoT@lFBR&VH*#bPIY&+UXqWPn+*OI z+H-WWz2+h?NRZ<`2G7E2!#jPEj}Vb63;IDG{d$ib&?Z*4&%oqHFCMz4!vxZ~a|Hq2 zHxe3Rw6Y9E@3a6^UA~w?ZM}gU3E++%pwIUO8ON2kbiGvMPddH<0AT#KFTmUwMQ`(N z7XHR)S)>)CxR$Y@)%*uz!E1V*dQTk47}Gn}T>IL#4t?JQ(vw$+yI} z`(ia!rXG(Q6B7TeiCy8$xP&;QFKAdF-+fjm$`fQ~$opV2R@#M5Zs~csKgMeu6Zm@n z@s(QPM=4}hq0hVkQ(rfjw3TxhbYLppFN?Zlenb}rin*MBBcKbB$Xo21SrJN<7=K5{EC)hd+m)}5~tHjf9;b4ZhEz&;267dt6f zhV&mes7pO5J^$t;CGqZgSABDynFrVI0^zy#ekTotlMp%xJ`nVLN8zYJES5^5J?=#L z_;UB*s;)R{gvA}WsjAV9X;X|qRaMCaZF@D%!})V*z2(GY$HZMs_BXkFu6Rn|TkK>0 zdc@6|!jbyJzTs%2K!e3K=VUz~AQE z__$M(4D8B&G+q55&%e#(9DO0X8AqZ4+&V1NhHs3Wg{3Um(C!YuR(o`)JIA}qwf#YA z&LZz-e{=nGAYqrBw9-TxWvH*^%a4Js*L(Ruz<)QDxf#MB z`}5D?JR~CC^HRjbhJUZ<$s#p{D8kg=K+A#(Y@<)6P#%A}wsv0gqN0Cyao2cQapqw} za~ZEBBIk&j7;|{Y7b1GtbJOeeHS~x7Xue$M3d`JNyL&wZ;_pY5&LmOl>(+dH77ZU$q|Nj%X>2W9+>xXt zd0i&LUq^#YOJcXAE_q->{cS$#RHlgHo-IFdR~k+o9-KpCdAJJ9ODdP`#~f}}_?u?U zkLL!zr_|}B$fB?KAlccr ziLBoJ=6bp4&LD{=A^x=V2>lbcZPtoivgDqba|2gvZ@%NGeT|H9Q4C%g`jXS7nnbs4 z-DOs%xf#Um>Gkq~^3{*Jg^a@cB(eJaF8dpbUtG_r&L?i(os_t8>XW!jk?~f&cI&_F zbiWuH7P$YMH8%?*-VAqdGg+)`ce~Lz+AH@c`473N1+Vy6%bpfQJGwl0JkkDn+7sJj zy{mh*$uhKBFn!FQ8DBcHpTcXyHu{|(RaO$l^eMLI)Hp4Xtg4zDd*^?D zPIyZW+D5}K*CNh~Xv$(sR#kEF`%KHSV@}?+=3XY}Q}Ni>hjXTN1--o-7Qa%NL)@be zy(`?C8&~#|mn=p=-P3D$?YUIBX&xrSwlIWE` zI{)Ih)g;Cn{%qD2Jd0dl^H$TRNqM<3>Rxn_hHukRPKTN+Ea+);pW)xLU7j`oA zR$^iv)L=!PaHvuPHQ#><^Oc??ubs&fJqZO82TSW{(SJpZWeLy0L4V~X`n3*}IoR6i zZGOs?ut26i^6I6(@=Ww=Q|ucO74m)q$A?E}OxnnVD^mIF-SD~$!Vu96i-S(o?dp3o zOAnyUP)1%Bu9?F9|5F<5mj^4MWQL9HMdx8hZ7VHlUvvMd$J*mOe6GT?{w9!w!@!y?IO+`%$-lxRtrBubN3U\}hl1$gW_kz-nkA!yZ=25c)ZlE3RUEPz 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

AxNV|%`a0GW)#dc z$xpt-Aj5~Uhg~7ZWJsshUKbpoq}luVL0_-!ur#vz){AS_Pf0##N^%X)i?(qOd)Y>& z+1M!{FOu0M8bN%d1euMMv$Hf^q{P7D@81kWL0`Un0h!Jq7kl3c(;CN2UUA88mHzYT zTK8JA*u6UHXUduJjTj{wfi)DUqY!n9n7Z}BVYPXGrO8)gV=sZt#|@tM$ks}U%T__&Y{%0yThr%gA;9SlFoWhjpKYLC1{y{#FnYE{Yo=^NrBFx?xpNo)3tjh^-Zf1 zk4TAPUuPcV1puT5E$PuE6E2pY0D--0@hRz4qW24Xl!YF7Q8#j)i9-cxQWJ!_oST%q zxbO-d8OpJ1%ARffWti`q;m%)AcG-?)lF%-=j|ogXZzV$veke|y57RA2D2d%HS$$OA zZ<_S~Qx{wH+W-T%lN9(V2_DcL+ynwmA_!hNB=OyhY}5U<`h#h9Vr5LZV#Wd}Z`j!z zJssQlc~D=FkrF=L=447}_RAgtDy*(P1v%sQ#?IV_Dsbsy;{}I75km`V7S97i36V!= zyC3F;KY851R_I%r&XY%2N6e_BcaztGyF<*^-&VpOsjDQ=N98YNa3qAl1k7zx*YeGJ zda*+EG8pEKQkhd2vpQ17{Ru9_P*HTAT??Ws$u&Q>os`KW9?S%hB`3YTTdO@FNfHjv z$;km3I|o}^OX2B~+c^#Mwv%CNK}=%aBt@a$7H3rvHW$04EqA;n;2ER#y1#au$X6Cj zfT}Gi^KOKYqSOJ&+nQay`iBTT)8~fVqXt zFtr!?c77f9A@_~NR5&NtMda5*hTHDWk1Hrcd7(*P4t(0AAnOlx2igBtLTjlsw$9G# zS))jZc6u{Q%OOBTi9A{9r~+coHUo1jtFXII4}Ksca<||{YVB+Nq>2Tu7K>6Gs$HKc z`%3p#-w-+%mMp!G58@5|lj>bv{eDlmdTVwgd&sfetxD_1gV!Cc4dT|8grj)&qdzcq zwRBaCf)dD7MV8NyAw-B{QiT-pmkMkrr06HIVR>?b^)o@Zxe@y^eUV-Ig-YAgZ~#~> zHp74aJ_U(3xWj`Hxu<9x{C__6`h_T@q|F8s^VB~vHa=9E3CI2QG4q35P63VQJR_o; zXXweUgY%14(B5xXDlV6s0J(`Y*pHuC7eYH16oeg!^Z?yrW_r5SzM{IJfdW5ZS^W@! z$BcB8t8dJZy_xAA3d5Xtz8mxDdFp*3tZ(>dwu<5CyfOVo{*ca5(dUC~aM?EgONQr;jqK0G{Fn!|aR6Ei-y5 zL=)&;f5R#}wX(>Xmn6F>Fq*p=cdu>YbZuaNmmplVgIzjY7k4gl!r6R#bE3-iIO=T< z2#l$7K3W0b)WcKQX1z;E+znH^e)(G#I6lIvLuvVM7^*tkhAum8Ar%>$jSpCvv?s?* zd_m6+U_{Z5_FN{;;B5RriH8AZw45W6ZU4BO(_YrP<1Uz8qdQ%ZI)407OAVFW{-URf z@MX6+H33w>dJf;QS6f}V7lUSjy@0*tYgB=_fnv&2LxCB;uIOZzP@gN!DQ$@nnZy&9P^}{GONy4|^+`mhG7(tR5EvQ&CX? zk@qnB(;^!(Z8Kb(HmQv|KxrU{Bb(L=!29v$;nUMzwPvPSvl*l@BJQ!y?sv^q-1Ka2w8> z%#PF`(FlRSQ&WF{bQA!ygINgR?bp}-*9?+W&O7^GB}J|Olo%%&T*z#^F;5^KBGxu1 zzYy6;hA~wvBFac>HSR_&W={qW=t1_;=K8v64RPfDYhSfq?i#V1!w&n+%T4XxdLuvB zVVe9UT01x$fD(d5iK?0!eI!-}I-7-+)m;egV*x6BK$Mc>VbspCN6I0Eq%*-Ir0SBT z!0MIfH;P;PssW=$0sFW_P8d(9k`4?9yvHP{KlLv$kIq!+7rSO5EF$0 z)$^W4k^DweiUgvTF=F4M*HPm5ZES8L+Xk7D>%u@~^W=#?HE^M(Dwyc#q|0UzdJ#uu z$jP?1F}E2AR4843>&b3ai5hvzs(QfT9oZ-x^*9AdmkyPIU+Jb#D<^_zgwnlpjh2G! zv!uvt#Y6$JGi4Go>IaJ6LDg=OQeQi89~j(`%q-}Y?}dIi-~b00@${9`5<5GhfBhH) zQ+?v0202o+HWy&RWx8|#g;iu^Bxu9{XpS=%NZq^@|6#F0UUZ+~->LuivJH|5u#h4P z=#A6jE=S!EKQ0Pf=IAo}Xk|!BZ0BUi&Sc`{n~E3L!QCxFM|?8f+tZKaBw$?1tV4we z$|Jpyz_zW7wOD=#yU0gIWKeS5G5+tOjV-{7|G^!>?(5H9@c61=R@Kv`zU=O_8-|?>A%7LUJrk~8Sh$%jWNjqYTHz>~=tzpi!KX@A& z(@4_qz^?F|o*xO@K#gT{di&&$6xL=a6Yl4g5(#kOBmVcoTat;XjPIUtCt85U7x@HC&Ls?Y_9-GGyA{2W=5AYjU2$xV;( z2kW=tMjM=%T^0ONb;19JT?DoB9Qypkwga%v1qTNM-q))RfN2=M-j|ActxI4yX3T?D z5z`=Ck6TQP1BuD48FoV*!e&R@4nJ*%&9y?TE|_=C>we26j?wdz<0`vc;XIEljM+Qi111>c8t2$F#_bwPHAUNpRs09o%+QbMNvIM7;9B4`w=(nTWe z%F+R6o*CC;(|I6|1xa-jq20!nk`<30Jwob6v60eMVZQ%XG8!|!iL=UK(vzLGu^rce1 zgRU;pa}X&+mM~+%_sS4iK(a14M)UvKn^!6jEeArq{x*=sW9ZW_N80u8SpM{(ysB#L zhnsI+Xw zk}6=UAK-=j4)~E%>U`R0Tf6azrKM(T2oQ8n|8CUIU_{V8Z4v-u@Y~-* zPwWb3p#9IcUV>wFNvtk)g#sfWE)Gt!96PAbM~aUmq(E?3>{#BzQlGYV?M-xSY%?94 ze{k9D91NEVwBq=wT3DQqo=Jd7$T`*=r_C=Y@@r!D@-ZH%F7IZ*ui*y&>NJkn()S2+ z>I=RBkx+xQ>ruZ3Lg>(;+eAj86!(Snp4)E|&i!)HtqQU2YNv2b`?OH9_p!eA>ozO5 z_yR`(mqGCtny+8-DZI?;VxEHi`Q40D5lVY-*H{zv<-8NuX^Ec$<^YElPVT>zb+4W7sPa zgH$z-^Rr7Dj=pFw7wSy@OqV})-#mFML_FYUQ*`1!vMwjbnbh5bAv9OukI~Ski>zwz z5t!NM_tah55)zr*_Jdp5VX%%Z74jtUGX)>pgZG^HTlD&nIvvWLRJ`+dXam<9PtFpq zl#~{4i3(HLT($YT?58rsxHEzS^V;1zgUo%ztL8Lcv!$3SSK8AVNtgw(u&Zx}Cja0z zh~aM=)+~xzo^SuEqc3(p4Y?#oJ>ihriI14DdOU`+fjUvj`VYESz&Y%|5;QE@wgpz zk%3SSc7zmFV4_NLnP{Srm0qZg2aI|1jro`3vW?ppydmtcZ?)&~B!c2ZW4L)UpMA4S zi>tSTlwM$9;FjS~+PlUmsXwfeF)i!M0YHi5c$YZ(Ch@zW)D}P|Iw6pL+iK#gwV7+U4_V$U%K2rS21cn-1 zouRIATjNyS#~B%;PVQYZmKMp?w$D*;*v6v`m5=CI`Cpl)_<3ceN3vx4)zw={*nc_{ z?U3;e-aQERq#j(;OxISYtd%uaAwKKB)3%IvE*P;`b$9&{TXLFKS+*fc_6!8@=IHMN zg?v1x&W1G4V~bkrU9mfL)K1NhZJw3#G^EYfAL1rP2@!NngP;y#^_#3ITeU3qvrDV0 zzkQ4g%}Tz^w>*Z@KBayh8v5N;`oYQqpPw5Ecn}`(ZJa+ZUe&G_{PIvZIYi~Ga-G+| zC-!=bN%>-c@n9kS@~EWYvSy|G{nZ3z#eiB)JkpKEdfLhcd2@`-ypgEiEA!dB53ZQ@ z$*Yi2>WLv5k}2yjoq93V)2ttl1@6;&KeBJwHQUXqJbQp1$0xgiL21nT#U$;MqWDT~ zj+syrv~ak`lt#*Y!OHnH$FtX#hjSveb-{$AX)B0q-VD1Uq+KB?N{o@&Y;%?MPCU|g z3unpS=REgCJt|g5OlB3|C00pc=dd?z7HtN=xD(%ICai?wb!uuRA9s;1a}X)1&bBne zU_P*KbFHB;iZM?lo!r{-!i1<)a-vt(wb#>`G5qbtM3X-JLYp+p@%~ zSeFz%*ow`U-Jqtbv6%#-X&uLYlVzL4nPWI#J@+V_nA7~j!!gxH9Zrc2pb z?|{nhXJ?TwK11JQ<9Z}We#ZYpq@R9y+&{Y!PF>S4hFIcWvg*R}hm{Xis}!8pnZ3y* zuu`djaUDSoZ>nRzCL4V2QaE&bl<2vq&_l;Hj4xjOi5;mqbz8+}@fd|U8}@w8i83O& zono_KrWU`bFi}%Q$iU9kVxBa5Mjxpu-oMn1RnT3<4RJdQt&)`tcUT@XNFlsm->}r+ z5wLCGBdQZlz|yb&k;qC89q9ige$yHb#63f%YeL`0^;bBS%}4vvo21|WdsuOoOETnY zk>hUnWuKViUZE`u@RV^y@o~pQ?-hT+td&%F`S~#m7oYw}T18vh@O4dYUKQ_z*dF0T_?xb(HWmxRZf}TgPbyWdnT6h9-5!4N!}pxIyn&Mf z8_gP}oAS)$&QcWq11Macqit4cI(9y<)^P~Y4~Zx|ab76STT|A&-9jM^ z)u6s|)n10~5ZF$+@yjgiC2`B5cl(Apx*ifJ!n^i=TW)*~AL5Wv<+HB-oOaIGQ2ogN zsE7Vxi^biJ;lv_`<4x0NUdf)#+(#;;&zeHHrTCZU!#5=*3DE+`476=S(fUP|PK_A=NojcQJP=X$_kKK1#4e;NG`<%qD{1#G=kT(E>1|Y; z23TX3xQ)7ByB;O(-fk|GUavB#6I)O`8nXpIYdgx!za zhOzUF?_qHTHMz%e{;zc*`@B(iHId6tX2HvfC=;M&9UNt=3So0xJ8{DtpG6DL3_L>F zXESlW=d~*jKWZ16kPPA|2cW?O9*kq^P%H~uVRd$t59a|_YaNIiKI=34a_6I>(2p4? zC`BEGYC&a5*I-j#zPEaHNsYYYidO4O_txoJ&pNn{i<5>WXV`W6c0FhOOm9M1d_cQj zBOf|gC!KOu#Y(E7-LhceG9MbsscEUY9`eI*sfTk8^hCN@=({$so_D>KHL6exmA07qW^B zU(2YU6(gQ<-xp#YXrA#{MMPiX!0kcOT;tx5Ur2JqK-I*{Xe7^ zt+k_9>ji1(jS6=1#J|t(Vs!q<^e&NnW1`{vKT3dx=C`xI>db7P zHX?#_8Ats{He~c?YU>aWO2uLYI8=_p#F#t_{4ZW?zzt9HM9K4ZA1ABrlY}mn8hk|G zyVU&_qMEB38&%yTWqv8v*=zsn#j^B`%dwLzj%8Mtb+gS*<3Ny<1P_CXgN>BB#_Wk#T9){}5+ zOUu7q13UBt;#3R$NW7etU+@r(oe;D`Bnfrj@O#}9iqx?_6Coga7$0%{h8s~KCck{S zW&9mxXhOkPCLipj-uUcY5~q*j)~_U3*c_Q!g>bqD?a>#xF%=yZCAF*Q|DU9FVStwJ zIAJiqD(6WxE9#J)XCWP}5~g&LL@nblx{GS&TOc!O(b=66CZ%!E#2sL|R9ZQLhg#|1 z+8K(oV>Sph>Y3=NJD{{~d}JD~Jq!yf*0xZYn^5FbDouHe@-@LR!ERv9{#8G#$Ydm( zE!PW1&9c|&`oCN@r`Z(CgYP{Z4;Q~)Z{&Ahh!waWgp1$aRkOCZXI);12X=mNu>3CJ zJIEQsfo^pfEb-!sF5(-k=r5_tvBMSf0Aa`R)^6J}0KuR!a=5qhTjc!f?DOFUB7-Wa z{Og~~gF5|-9-E{0!pgTBGdrM5---C$L5}DBh|hf;{8Nh9$Fwox#(B_b$|3@nru(h? z$_*#}yyAqD7fd$m!9Plyl`|b<-hF>6;N~{KNE7o?I zr^NF)o6#9*)CspnwHxP>Z{xZwl0FQ~C9|?Vc?7LdJ$0PAID2`l2^IZI;{KP?r{B9C z*}Zco)bWc?WUR?pqD(4JLrr;gP0&o>(;`PUgTl+WD~Ua($ebl?YZIEqyf4nh^fSJg zT+?uWb<4bk=hW2Bd31;D&FGr!9=`)Z;XDmXTSD(_4jv?VKA+0?Rzcl>H1Bvh6<8To zEMECF?qt9*{>vYasGH04Rq+&a!K;9D{Pfc6s;b&sS=a*C0qL%r^6*cdvPn9!PRQF) z^pE4x$b<^`{2fVgWEJ0&kwJS?-(1Pdn-KO40V zb6t=xA+b`g$71<;5&BP5u`e(z-m#NIx1AE|U3({F8tavPyXtrt_HCaA!q)h$IwiO^ zC|?tBzHkevdd;2uo~0|{XK`-hp0Vb5R!LYv+Au{}+kb)l$75PZqqoxe}b- zcfq33lI`Be?~EWMW;bwR@A8@6x)*djvJPQguGG0VOpT>7%(n4VUQ0+AvSlO(%lZ$7 zh+mCeyba%g>c86k#(&_qq86l5vXmdz#I%zCx$s1gmppldVU8T*FX>K@B9L;H(FPH5 zzG%wZ6#sd-R=L4*Fx7Y>4!!@Qzpqw2wjq|YTx06-v{6im*!%L(=~wRB3dcrv%uO*> z^#1rNhi~WM5xrdq2BqLiKoywm6rb+PED!HQlp7C*we{7j`n@iC$hybMvRN=zk25d) zMZ+r2b+O6ye6i&=-gD$$r{(He4aaZV_|50ge@t)k=wm<=10F z7k=A#RnpBxP!LX`Ij@x{NW}5?!1+6?=;|$O;0UvwkM>e$%JAI1=K__G- z7z5G#o9o3`TAu}X82*L${~yx6v&TJbp)X>H616DRNhTn-V>LH$v`Jq}{RL+c-j>g+ z@l58P;}BLHKH=I=bljerX=Vo;cP5xI7Xp}Ea%v}(rvtOX>ins!M-ajzJ~fseTR#Ws zcfWA`^#=Qpg8LMwe}>1JrfaJ{;Z}u>1uQoa3)|*6-dU_}Kcoyxvk-A=+!?VJz3kY0 zL{l5Ww+p=X(dWtg98jB3q*d%WrFj2fn6w&$i4R-RYUJIM_m82rMD)~BKl8ErdOwo6 z{y<`j5wImi;ABTQd~6*2OD2Z|N2ONrIF-+izT}&F+5AC#ql7%Ql)_0x&fQycJv|HM0ow82542t85dMMCx9i=NG?oK7A z$NJxw<8j^)Y+7tDtKrALeY;)OVMOXiU#}`8|5~0wF857dbl`{(2O;4rEh)0M#C6Hb zwps5&dZL817!??LMclJ3&F)vM07|Q;_jLaATFuE}F|U8y^&D8axv!g*WfN%K zPj1wIe{e4?-qv%q|G%n_&M|G*T1Koo)-;@kSLSxg(wpk|Y?cIkRv|yxg6-RQ7gsP6 z9G_li3>-s@zRa&TzJdVsBhm(6x6B<^r;8~>KP-t@;UGwjYmhVb=+Prp@ANWOE)~z^ zxb{5W)xKBVJCm1Z!|PWBPAmV93PGp;&S7UcNa1r&6=AZQvthf(KNW%>6s_1`W+mwC zJw~0G9)15M+UJlc<`ms`RPvsN-QsUYZ`JMF9Nvt@aBG*qL_6!FV&qQk z|Ba)vb^|REp|<@u)>UWy?A1i$S!s!wspAiYPQ!(&s*7(?AE`NnE+)dhSM!oJaNb+} zY?R0pK&R*W=vDPR8;XlCyt!fY0bZ1dYOiT(I+ST>#pnXPzSAQ{xRrY zj{Cn~6FSIqR`uVh@$Ps&KUDm!N4c#i@2GTi%T95IjM1F>F7#-Nv7_wttCQm1;CZ?H zb!lz3d!p+PGjeUb_lk;V7d4`Fn!i7}mR2u|Sv_MvOK3wWNB5*N})d_;U^q4Q*koGOPa9OH@+r5bu?p?_q%<^w4GrxY1~ z+nDD|pd07HiVNVG#}^7wObeMcsrfgT(5}}W_UqN-55>2r5BN0Y=E*0gOJ2@FyjA=J z=@N19cYH+Z2Gj&nqMs?E53q=)A{``3VbxMyX(H`-C4X!K{?C}rQI6>%QX|*CUSIoy zy!6=y>-;CFW;fTK4^GI~aZ@7knI#!)->zzz6}fWU#E z^b?Dt02LC5Owd45P^Wrql*Q-|`1_Bt1eB8HhR0?f)+FeM2ZInG;I$84AJm!HRD|-m zJ$#@O{w{2w3*yg-rb_YC7iu!w;>mNQADncDeuYhI#2KowFr%TY?UYr%p`g4E;Zpxu zc!L~Lk4`7?GO+Q4J}z*OnkBu147CoT?apVW^OCcu$l8jK@2y*X%^Q#UjniV0E$+N6 zxafy36c@s%=AEBAt`ujr$Oi7kT{mao-I0i|o@AbAE%g`km8Ba)d-I}|=buY~2u-Bs z<*IEGxfwMBrqU0?(Oe&yx49@?w2Xmo@N^j;w<7tVAxB^h>Y~W`AYpAV^nW{FB!mN5 zM~Lpv`>*&40eK)Rx3JLTQNw7O(xfqU*$N#GXAKisACymbt(gJDwBB672{-PrOv zJ3HgzNWX3WBQU(G1vmrAT7abzw1=p(xzVq#shI?^T&>tViIQdBrVXliB*M49k^d{iTJ?&Oa*}$onf5jt7i#6BsQ=K zWauoFEfr*=Sa#!AOfGOwqU^b?Omg6TBd%B-D5~Xzuq7mZfrI;yhb#dT{xdUvq2)6Z z^*Qfv6r8;*cX{m1m795YFIT+mv2jBLbK{@S4~gFD9Bw^HgANvPsqG(^;MbFuZhqz| z%(nT#8>-Dom3Uer*knF_=a@a`WzNh(C}u`MSw+#nlKzRIS=r+Z`iy^J@24}-{&VV* zqNkp8^V6mlrUD#wu=_qdV3wB9m+rFtO1Ep`SiO zE7BM?Hbsi^*{sYhz4VX^rvo82UX&>pp53Rj%ddG?pHYvaTPlCmFi~BVmKEjgSpFDG zpQA63qc5kgR^e)u?%k4%-*jl5=CC>Wb~$@U#3jq-=TG;7pYGS6gIV*;j?G?uT5(0; z<>S-c-g)l%v+t(l)otC#?$|bumEQ6MDM_@ zx;Jy`$*CUvoG0g%DSu=Nsy6(S?!<&EadFkVWcPef=a(Aqc~qex*(whiR{ga^CgJwCYsi`u5wZ|NZdAfi+vt2)W!3Y|qucaC*6;g#>BucH+d}JDgOFNeu4TCK-$F0BQQP1@gO@;^1GdrpsS+EgwI>}2@C7o! z)&{Wt1glVx0xW{qIlBgSfyx;XK0be4KuaTckRMXf2f@nUpxz`Yb?(g}w|+85^P%LLSdL)g zq_r|JF?sb0Rf4R|MdV5P$R?)9FPbk%TRtAhO`tQ77?^=^Y%2I$qi-YH7aY7K38^s& z=b!!Cq0kvl01O-}Sb2dUu24d(BHS2|1yv#GZP8Xm3sQ;0b$r`^y%|U|hm0!~@_>pA zV|{XJ$~W<~tn5+|64Pim#O$7B^v%@hDgvtw@}Hy3QW2O(cWQuJ5m;BMGcz*}J+%{{ z()}CDW%G}cJ#sEm1vzr8y)`8z3R$CEocSQO%L4hj9oeeihDc`qL29+U1CI0tg6QAH zO?C0>fZJRHFWUw7V_glPG=Bq*1HY_%1Su%+yvQIBHaCZ?-x)|qFB>wAJUhC|K{$Fu z*arE}U+w*-Y=iu$Wb=Xj*EjO{ePGfipV6Q}fB(bda%F4qakv5tLG<^>7y5Y%;A5&0 zxJ3Vc>{Mt1AB6^l{5^RH&$zw8H^7dBjbv@&x7b*})XBU2_l~l-|Lquz#(!U-ciIVE z;u!rr8I(5oK}E$8C`+u{ab1^*&!qexm%As~>oW-NGveWX495fCSNQRt-%{TMTbc%} zdUW4Q3hilJ8mY!kg{rH~#wJF{)kz)~o9=Y7{p$#Q})} zh-7?8@xUKZQo;f7?{UYf+FGcSlOR>rN5#aBny8X`{if0nn?u&=L*|Z~UrhRiL|-Wv z64g$GE>a=h-yUj2yUQ3r3M$zq&N*a6k9&Hw8>gjIxPgQTymbV(QxXz@GNiIHEi`oK zXU~2hJMUSaAAw$0k-bdUJCnS7q>+*k7)N~J=c1SxlH~%`LIAR+q@G=X7{BMC-W zJ=`jw!@C^~JJ~Uqx=R{C zLb?V7r3DPSLAoVG8i`Rrx)D&iyE_C1hL8p+X^^42LptB~`|iE3{&;IW)^aTsMrY31 zXU8v<{RqW!jD9}i=bsA+^?uHB7sR~%WNARd6;f_3ustFaFCb=BR>5xlzB~|2)0kd3 zizR#L_z_Ih9xruSV9Wz}_OrkZTiaJ|cOeBG^AKT(#;3ct2WYhavaf-APk6mvMH*^pZfS|kM%{SnLB-(nvEvEI_kha58|gZHS@GeK>8xFKPEeANUKn2~VO2U4e1FY)=FEMIALO^ z{wSuWf$LFwB-V1qp zlKDY|01kAjPGHiwyv(kwJvU1&^s52=P@gXnKGN(>$B;~1;}7a*wl_r^As>hg9({h_ zzM-I#`)f9^Mt+l3mLVX`{%3jtK9Um%H<7Hw1)HITQof z@ODG7MQtlnh7X8G4X}}4?FM5#(Sa=^_#UKl%^m)}PyFXnBTol(Da+3fsXtyG zXxz>wFl2N9+r%tFf;Qi4VV+{%H=SOs-t;JKWi>T5`T5e2LRCbb^(-1^FtehHxZtdB zzw(=&N6c+lu0HNGAKSD1@ynBm6A=pU$k2v*QyHwdN8v+Lja$z>QdLJr>wEQk7DwB+ zwW@!s&6C+4Hj<}W)GbdJb7mB`Tvr{t7gYtHCj^n3&?#OXog;bd4b&b^^|L5QBFv}b zUC_fZueKZy5$MxsS#_APudo`}pC0!iV&@+E!+`!3_vVDszwK*M(j~}+0mrD-RrAID zJcR@hq|*kcc+6Cf z^pgrXP1MZ3aD0Xv_0vQ)v8WfeoWSm2R$XM2fMlpx<=Nj@h1N@If1>uHcopY~Q)#Y~ zv{FxYHB&LX&9J4~#F7%j293u#&!ytqvgQVE#g*ove34#K%D^K2 zel{(&vc94s%2-Nj5~wJ3*{|DTOj_dV-cn*VrV!9{l~eVtG4Oq@@MzQ>wBY1>bFnb z>~7CKxI1kp32y`^JBah#&K5{*%zwIAPbNR zD0qx+7X1lvaBw=%YF}-$BldM0%>-aJ1-OI)gLVGwatQ%%`noY5PtDSVYHCl3xt}D~ zed&ohHJOW&h+l@NfBBPz7u<_M<_E7HF>_$9xdr0SLDQJN?{#%S0+F+OAoIJ82Z!9U zu5Qrsm6=SzSQh1bD=XC>hBDoB#w#a1cru&aFc#l)6L-fR8>fh+SM(zNk6|TNH<=Rp zNEkYeX7a>mq{yZYOd1Vn0nEEkGBO>7)c9%Ve$anHO(*t2OiXoMWG6K;m*Y) z>~e~9BxX1CoOo=9Ahz!00&{8VftWV^;AOiG#67HT5r!L%k=BtGqbRCcXxwmfCTTWv5XJSWO{ZuMFlSKOJTxx zU7QC-LJp%1aE~s-ZgO&?O_!E%3XitN%76gh`FZqiOUudH-|_c1QG((g_Yt^sYG+Jx zS93v&gJjF)o+q!<7(|yL7d0RqC|OHcnZO^eV^U{A!5^iK486X-1{(y&se^MBC8ec& z{tSyBZn4}TO-YC-VhscUL`a(nq{MB$MhGgbaMsKJ;l`~x;ZtdikZ3ylt-nRkKol|r z!`kOa7RE}lW&dfPr9eF60C{2&2~#AW>P3DpDCKDIrD&%J^7iWRPpxI61OKe~k`FKa z`P&3Gtt__w6^QYab6UxRm2#PC=FZK`cH`QwCV|}@Uk-Eh z?w0HvS=+TNZRLH8d*15$*4?Ri;OwRYaW3wCcRq}JPaAVJbU<={s60A*UQDe3Z?g8U z(5bkvTlFz`B?)eI6+U4Jj)U4B0aR)OXDk;~8v?`ub^BMwY?`?a6c{8yK8U#ZT}eet zqvKM0{rA7t4B)i6ANIa;b~^f#<{u~byla+wGcr>;q3I_DWWiBL5@D$CfjwytGb(Zg*l1;%DGG2iM>b9bc{!$BQXAxKER{9Hwo%K z3JggiT=N=|Fyc@~Q1; zcUFJqI^>jcX1AhXV~yBIz^K4-7b9`_Ff1 zk@xL!!^ivqoX`x1HGq6CT=5LTK^n_;0UVN>>}EV-X*0}L9q@eqt!s0695A8km?z?z z#7&CbKdeI!Q(z)$Gn87{Xsa&mY7v({uO14+xN2YzS4?8ODSYYkPQr~Z?vRHTg~3?^ zUE@)qSCC|7L14-9r7$Xjw~$w>8rJXHSKTy7xV?uAMKzGHL%CNLq^oY%bRLUtC~8{1 zZy-VyI~T?h8ANT{8f57zOn*3wn08SX(tF71%(q{xz-Pmu>8g22-0>gmuHnGD;3YSJ z3Vq?0HJ{AQ(Vjgl=C)*Vx3$H?14z^lj)5ttZwolP4`=kdbq01Be)@rRc@=MEl};5s z)GIQ)YG*0nV8E9!k=O0QIF>bX$^GiWT|92hO;j2QVfXz~6ocaA74Gl5Ev7yHRtw|1 z-I=Kb&bx($KN1%bgm+WJaT0ELJMP_0=OqP}>w>eGiaUrUDuoZ7+ldw0kM{(Mb&(UA92lf!9u1 z{ru;1Lv#K>m4p3Qcbxi^H1hUgXOo|MvOK9ZsGWeqJgu%S%IP!&d)m2M6-&tmfGMc@ zwg+sDzPoG1X!X&j(KI%$n6P$&KcLr}0e7-%PW6awN7h?`_fx$b1TCAtA|@Ozb6jD4 zY-T?2ecEUDE1f7*`{|E|2&st?KE~7RDZ2}kq?yp0r#>cRbS!9RhGbL-e6)7MUIKQa zFgP3EAl0bj^zYYO#cR>w8N^)aUs&n%S)L6A*_BohPJ4{1d%36I!>V`R*NW)B{U4Al z4FEMgyl149ZooeWYz^l9O_nHGI6DUiGHcJ2KyUB_Nca~|^1ZADcl@5=`P7@H^1f!RNY-Ba~7?i zFolD)y2>)CNn!d+RixU42FC~c905dtFU{b|Oq1d_g92lX0zpsVh!x7L3$SmvsCvJg z18abh5ol-}ytugd>j${MJugHDOKrz(*ZlyKBxKi~fu4hnf`rCeBCKHO`T0r!a%vz6P^ zrb-I&Lxg@7lVlIQkD3O>YaTA=)iZe^Ux8`6{;}Vj`=7u2xY%=?j_NvQe)WHTCKYGW zYW4LT1$oI9Sq`hZBCDCWWop29$jA|za{c3*kL%@=w}B<(Cu7I#uQh zgV@jANmSCCKOVic`f;{86|nq{aDw?gS>D$F9@cyQZI?$#hKmsE5^yZ21Vu&$*@4H% znq=wuAO_A77YWwVLJNCL5sOHm3OE;8Y5KL$eMeOK-DN+*n@R?rFjaK_<58+!v!S@~ zv-)}ACX*x`H`vtEX7Tq{q&Bj%{)l%yI+$(xQVcN8Ms|#=hoG`EzG*7Lp<$HQqS5ZUhPuu70 zow7QOV2fqQd5GRvlUdAQILN|GAS|hHXm%~RUbv6H7h|{o4HE+Zp)+gLz`Rj}$FeYOb zA>Slf&wyG{mpI^+)N#>4_7)Eko&@3(}n(*L|fL1&N`f|1yG9X6Oz99KOAhmY_^nx21 z1x3zf&TCd2V@slz29}j>Q(l1h`zr672QgNeoxOtxoABL#Vo1~`I^9fDN^w)Nrsnv- zw=XuV!p{B?spF;T{PRRdT$)9UjoXZ>+S&SKEfEpi+nTj;5oPmFv~86=lw&NsENDxwXU_yyCJzkc*l1m^ zCL=$RN^;ePKn z_MT(h-*0mZgnL|*n0^m;dOtALz{<)x;h(?6Xo|cu=*0TuPKLWJduh->y*= zDoiEvIFn~MSM}dx0Um+15qf^Ocd}B>ZvMF3k)CIJL^Q>6>q%kteo3_#yO&!lFOM+m zikn;aTy(q3KPcBUIwq{`)BU?~>snxTeHPoZVrsc>OmXn1#gvk`OgEFfc&X zHn+d@sb}D4tONe~e@Rq@-)Y44;v2`O?cd}MlE>fzd&bb=3PMTfVaOq~0E$fq zaqK#zjBHO-zwrJ)=%Zjc!Pg+}V%|_nw6m(o>}~a{;htloR0jUd+V_OSI3M=Gr!{{r z$Hgw|;81pOu=5v||KFn59T`b5E?!vhgBFa_%!Tf5=?H01l?8TchGf|{H=es;?k^wJ z<-Ng^+npUqFD_>fo&7cbb9nes*WQ@a-q^67fv{4H3Uzl5?InpRy-|h(!HtHF&iH(} zGyK(k#QqyywtbYFok=>Dzkd3gL$E z!Yh3=Z95@CKlUWup)%4mgmMSgG~;sfnd)qIZk_pRB>%(Y%RFxf99DSeUrLm1 z8|Lv5W$emReBGn}uWL4fF%s#)10Ft5O876;b?SBkQ+Vy-`P%V+fAbIdwX^924N$bC z|Cc6_?LP!|OeGRQO+}?LTDXW0-<7W6j-+o}kQ<8$4q9=e50OqO{EU{PD7IXhpM6k`w` z?*8*(mG=>bj)0wN>N9_c&$AmiJi~0{?4_u9v-1Q>o0#(`hLH$zrryH-a+oBJEA7#s zrnRPmGdEyEo*!!XxW1rYc^c1a4w8RSgpe`*c#cj@VG05Re3cI6ejIM!$s+NnmhFT2 zgca8R7o+Auwz6hN5SrrpOLuN>$F0;wR0}SxB@zsd1Dw^!TFl|<>($cVr*az^XR00E zL+GM9L2sDj2(bNja_~`ph@G>S!3Y;4`b(uPP148;C@Uzy|3{_a<42H@o*1_v{;WjB zJ9aAMNgwY=`}{+<_I1sHd*x$kyvKC$!&%#+eQQLvOSsrbc8EIEO_4x9x#tZ&rS=n= z&_AK_@ojB)ED?=OOeM3wkpC)Oj!cH%3TSM$0^_iY2LS+|^ubY2vu!Au8`l80Lj(C- zWJA@rh7r>Y($JY8N!!{46-tLwnI}h2I3T72mvo(-_a8G2*8$sep-PkgH4W%#6JjuH zy9e-&H39J?ozv!^uTOoP_?Gf7NoE7%`%99QN#*De(uv=Ih6X14+gr2qgIS2tQ~!_7 z&TDjThI%(U@2?Eg(*C&|e_0&l=HjzK!G+8phzHOm)M3Lo>;f6qu$?pJj3%{iCMaK&W z(?h6KZKZcd^sW1V#$H?Zg>3BGCXZpqYx{T0dyxUg_;TrMfx#0b!w>TwMbCYP#0?$j zyN|4olM}9!5mPvfLyY%H2kVr+Ni$}w6uvaj*@$qg6~o%rh~`}VJn7(D+aoe zEKVMr`+rQDH^jpAnMWWHJ5v=sU0sH7H&AD&!k+m^J&l)HS`*r&zbw}#Z@Snjs(Fx+B~(8%As zfN26KT|O`b0tF%Er=KlvgHt}R-@mBd%*Q&Q_rBhYXiIr)lxL5;!~RntO6rgiQQL27 zEX~OiZ`vQr&FuiGu(!R{6OJ$VMgT#DI?u8p3}=7qcsJD5)#Ahi<#{~3V!9HnGj9H^ zM@6xr$x%FxZUhE-!7=d~Jxt_kG~kn>j{C3KSG0U%7P>sDvmB zg7N4}!JGwbyXWB7!sqj}IeTp!S>aPOZ6)TIHGv44)IhFzJc7H9_Mf?%Ebm^84_D0qLw-FP+f9x@(My0KkMD_p-{8kp zdE4ULxKIpj=TL*>RAjE$P)F5e;l7277pR0-X;~ zsi+UI?18q(G`}-=xqPdQ@CaLrKq1lV;;DOGhroocjKphM?<=QMt&ElE@q=O!x|q~K zi-G|K)9Fn6JDy#_GN+voi~0sDG&97oe&+&wby1uy?FTqO@`G>QC&QZ zYaGKg#?)YxjEi=&K<1LihK(|pn2BI^D?kg2VKx8Pu+(Ax?x){B78mJ>fNUGZ{&MSy zmA-|grMUYE+mk0xgoUYK;g7FCyr;z7g;^qlf10|3!I4`ye`vxs$vO_rB_gqFug zzWg7rB96F&oL_ss9i;dp37j)!~CZ}Vt z!ycb;+2Z=C#7FlSwACP&uc&w1^9QF*Rwd-6)V^V%eXX(6h8b6<2QXqcBzEF zT{kH*4>;!mBUl?%@ZyiTbOkoh!u}8Kg}aX)4{{-=_uNz{ziQ4EVj^%9!}1uxj^@lR@{S`QsvdPTPWo8f*bx z-W5(rZgKE1jIqs*S^los!yZ=XUDnhGC|NGfk2`xZ()m?dXJV@%>M2) z`f7P2&-?oOCPI{Op-Dq?!6XfnQo<$$9~-aAEQ9O)b@;aslO*?Uu>2O-@VgY&)-!aAVvQV2j*Z8wB2hz2U7$O5Dlo4O7imU+dwOEf1J>o z3-%@0?}NuRfG=x_Tzk-%X70-}pL%a#PY+hIr5~OYMf;4U8zH|$Fn2RF4@i1m>($#c zKldy|-SN7qA_bv#hS`!r;5-iyz6jb0UNPfAFJ%A!?B1lR0%A-|!$;zh==1qPDBmh# z#-2#ZPqZobCPs(a5%@QxbE@6GB|Rh#hkJ$&y1MXck{LFrA!EanXY{zdAYSjr*R|h!js#d!tBHq2?Tu!)Faz2;7t!+?4b{ zrSqFB6)9AziO-BVjNM+ZlFya`H!{4mJns}vCGK@^qUxjXuHB^4ysY~64Y1rUXt1Jo?r95d2*Vo0Ad&jhNDLK+{|-h{AKABl zdpgY$%==ph5*-S+HTeo@{?5d{RmoS!689?+!}H!N?J}`**MJVgkXA>;MbX|8bya?z z`;VfIBaDIO1#+)CzGiellG%?F>Pjmn&!f)PCx&c$7jH$_rU{-{JH}IVbi2IoUV_|b z2M9SXm9{o7+h0g3&Qy)_@xPMf3N&<4qbcY9;YJ?n=CpFhso&nHm~Otx)NLrxH468` z{>dj`IH%w!$P${dkx#n!)q|sj$0MRahg<2HRB=z>r>NqI;{2;oOQj^gzwk{rgOFqW z1~Djw|7>F7^EVT0(8nmIZ@fR$xK@V?iLzjc*`EKd z#OJ#khYYfty*U|&d+{T}1E%KB6^&Kj`%45a!cL9y9EBZos8QtFi)3CR$hri?O6ApL zGUpb{SMz(t&^Vz;H`dRP_wO!MSZ_{Q z=P9u(blgJV%PBH=F{a!4orZ6?aGkW(UAWz2%80haZ3yjZ zb))Xc&1p5BVzzx^t4@0&SImtS`~0Mq2VxVuCN+6Z&b*%^w zj|vxSmG(q$cFr)#gCC26)WkBupMEgWs?(EQ#HYSe%r}1@(&C{^LgOKzhVY15qqAgF z=)J5rL*9?Pnwm7SE4Q;PFKu=EM6u#rRv-3k_#xfrt7HFgvJLT%XA;`DE&YWhjoKD9 zQ7TV$KF3$(Rc+OVLF5n?uTROHf@$|2Ks!7y-qOMP@k)PtEIk0Zn};E2As{bI&X(iS zfdy>fk^GmAH~<}rXmF;07+h@TL@nY4Y_KOb{236=V|9fUIT3i(eVDiJk)p0*41srb zxz!n-BRN6?^cNoQXTQ}6fk(f6h)+q$Xszt$7@Mx!ICc8SO_F|2@+wu-Ex{jtBC7f( zobCxx#ABoEiuf(^ccPwKYHcng@l5-~uWIH^J*Gp4U?9cVoaKZPFB##N5&Bi}@$8x( zw>E;wh(ML-=~48#jXl-NM@r5s1nz2EXKYvb!?el6n`fFq8%4B^`8x6}36@iep{ZIg zLI>wDpyy3%3?D==Bd*-yve^Xxw7g8$)G*A{BFDz#XTV0G$MZ|OHZ%OHRf5iki~!F! zkeFMcB?eq2kU$b}DJe72bpo%hAej!JVa47lVZVt831eoP)-#pVWl+O#RE1ypn>Nk! z|`FLYn`_uhR z%S}ov#pg3`l{?Y$3%$H@1G7qrHxVjBW%Z|+^eq$O1-w{J36w0PSLHMbd-XkrLtC%K zTShvP6la!(z7rwHhD~SvAKw&rM543eO^8Z<{^)y!GlSLF?B0C$GmaBLw|78DdftXf zx9K7hs&Zhj?M@t=vWdGG>6|Govggu6B}D{P%Fo)}ZSn6k)Cz$Y>P(K@3X-VZ@S#Qo z?qcajCi#|T!TJg4*4{~>aN`<^@tesrJ0+BEyo#S=-j}y{+-Ua(Tb3z;>(fhVds*%- zye?8*4!qgJu01cMi4fZ4#S)sPx4Ox>4?h;MCLg9WhD^mars_5ULet8sCClR zxSS{djgfaCfCcoT=Tq)#TeVPQPDy)Tx7)5eQ{-$>Fid)L%EKcLONAC?mmvg9>~^RcjMtJ9 zb#s2eW@}Z=$d@6{cQfvNxt5QTKGP{Zgvt@;U3H;Euar6DSh4*Mn*;gr3VOj1p$%(aR1l@yl^T2`jeG~IjwYqTzx)%Fba8f zp2qCSt1LTeq^T-O;Qk@zoQq@e5;$&w%9K6zgNeQ*c5ruJ2*h=vKA0$(lWd4hNdd#^ z{&qnb(dxc@$rG@)b=@|%*vIP!3lFnAKe7IdmN zC6o$_avFqDYFEZ6kLN|0Y<;Uo%9aF4k*l+tUrKrq%>V zj^K=|ruI!o`K_^Kh{okiHhAE?ZI?t>F>_#D(gKFnjIKol=tKH%I-kW2w&n}5(qHQG zf3usevL5uBon99DF@D3jF+P6TUh_^t*<1IdewbfEIO8s_I;U~?h3BWtS`Vg%54N6` zwa&c1L>q-x4M$ECasNDakL@EgcamqxO8Fzsc>P8Csaen>go{=zLj&iwldLl}Y*ny_ z&u=FEEyv^a3BBqxjmN=X{a=#OZe*t7Oxk*U>sb1=bLsYc0!88rIY#mZX@k zUbJY?=(?lj<|d$8^^shZt=TcyB{FdmW$CxfmGw-a zev90-f1;>EXtL7C3r(OMc6En|L9zR^^Is(8yTwJ7JkA#&Ks1lo9X$9*K zG2*-7+sNP%6^lCyu$hqdHXL^Gx4p-VAt`%pO+A6}px@d|lkwHj*Q+{Xdr1?h`T#l^+)a&n(84zmm(t)7>B zk`CVmxA%&HnJ1mJ5_A|&ZGDOQyZWEg|J^|CY!X-s5j~;7MJ}NM|ZkbPNeh=aF)QQeWPDx5l^QvIGXQ%Y~!Svs$`u-tkiuxjLMo$Ei7*rW9 zWCsV^0wqAaEGSXlKKhtXrKGIfjkW&}VKZ-<9Na}*>xk}!NFL{*m4Pv%dg|Rm3!;7-|V;RF~bub_90{PO~0Q0cH1E; ziz&;$qxNn}N2a)@MgxHC{~+uDUboK8lh0ERVv~?CW{KJJZVonxDxpESKWzW1%^47* z_2;mHIdZh_XtXZ0-BQJVWxD^W(Dq;?rhjdFYpV#H?^RSVC!Zw|d{!B|BMpNCvvK7C zW)09zgNrOnXepT$nfD#PR+#GiPfawgGhIA+uHeMf^tJ69;u{~iL~ObL4vx*@3G2X@ z3<>?dW=qjr92|bsPfYA06M?r3q(Gjx&c7^R-0L5EM8hNh0oD`OMnnIEE4yx?tn@-FxoI%1KCKe2~nz_KX}|}NV<*WatPab4PK(kM!IbR z6!l>iOVfs=!1tdO*-QjgtKtGb_5bHjrLRKZDJl9On;tYVF6kFAK5f>_~+UY z-KB&UPGSG^6LkEHU}LGP)?sKn2ii=no?c~s`RBcuVEpqBL^XqPQN=|w-~;{vtCK3h zWe7)nU>W@17km8k;*kH_pDv0YKKy*KN9($tyMWvgRp@~CFhV>`8X?tH9eFZsn5Pbe z->o-9MqhEBs8yK%+PwYf*1cdhsu|ym)g>vja?2S|t;2s{jJz z28E^!TIP%tPEj{DHj0RdxHN)Aziw!#JS%IdFkxV}uE|Dv@`+*gABtL~wfc{LzQ>TI ziT7Mo)7yU9i()u%?^%@3v6C~?RXvA{pK-nZyh0cSz*rysK5&c!f|=<=&=x$f=cb}` z36fB9TI?`)zkjEoc!kC<{!%MMS2<` z!Gw{YmXeYJ0HDOg!;fM>@!*&o@weXd745JP;&XOOAm-N1ji2$w)oP52&qs7qPR@#n z?IM_v{)b~pv`~t_12&9cU;6DXoY=H_(lQUm!Z~Z+&u{C`_ zK>BmkuWx6g%YIokMe6Bxzv}%%>C%*V`KxV^^U+asb###SA2CWj3GH9Q$urKRfRzIG zRA+TES6Hw{^1;WoH-OA{s8c%CFW4n_Fh0n|_ZqG!%`57$9&Dd^k1LXeMNrsckcBBZ|9n$PyV zd7@kGzjt!8rTDCaP(m`W0fd3#y{6SEgNa_hc_)kDo@d=3olZ3iyQ0lvv_3710%Qu4hJk?XBtFEUZ zw*GCIBUXQ}2nJ&CsWaq-gWQc8^L$VDHQ`C$xoAxEED7C~hG)2ML9trg2rCx#X)DLC zL1msMYgZc!)K6WvGl8FVvzT9rVRe?=*tT7S_TRhUqwV7&lJr@qoU&gObsV>|2D@_eMgeep%Bp;vmJ8-iYwt1%P=?$R#knhx4j5X%c`Q} z%jLOBt)tDBCsELkd)SKB(gLl{5mOnQyG}cUmeK0rTw;hk`1bT2`?oBDwn41PKW%so z;m(YN-=_$h=?L+EyKvVgC#z4!RddxAe>a@^@enL_f*9n!=;t*cz6?chd1hwj?h#hI zh^Q!7u{*1Y+vb!Y`|Vo~E4Y3x;(wrb4|`S4^TCqH@*<{_Sz2Z^0sB5Xb3p00MLo~j zddsKDJycxZwTL%esutRnQX?de+Bz0aKX*28yqYvW*C3_`yK$Wvab8@Qz@?C|LLCt$ ziPLZ1VtSWl)n~xGLXn2%zrnkk%Nriuu6o*Yzn)|u{%5mh;Hw$}N{E**Ma85mrrudt zfT9g9VEujejLh*I99}^y@8#|J_1>N-Mu0-Xd|hw~G}_VaUC%qlKzP2%D6LFpUT$vc zV^>h&2*ftupRTO+cLx)mA2*Oe_SMa}zbvOvh>`qffs#uhLC+!j2p|3!9RqXfuOFiV;^HplrA%F=d|#&PGxVcO zy&-!x$*HG5UTR8gsa^!u%1SIQSjH*ns{-B!WhEsbtU!+cw@F=)QFd=<$BY%#R}$z} zTx&O}GqYd{2s;vPym-|DPX6Df;pBGLP&`C!8}d~jI0fw<266J$AR@22!bI-aK+cLsktE{}PJ z;?nO9x8UcouBY+BNGt7=U&S}M8ykrZyce?1(|%L9d2hX)S(f0l#Yy(Nd~|Cr?%3=w zg8p(~A$o{mHS=pP>jzc0od@aw%2wuZqxq&?PD;Wi;K(T6@NP072X=y7#8($ZM{(s z0o{Cxc&0k9pK?O>gBHY&5sP?`Faf7bRW%YY{HZc6?3vdU?L~cf$@bY5sc|(-N4eyu z%DWY-5N<*68;d?1{90PYJ(xJ^!Iy&IkQh zlxQ7~D;K>cZ3Li%czAys1cHF$*2J)2jLHNJnAKn2re|aXw}KG#EY%PTDW~LL@2sih z8B(@}q!_qFWuAK|5+60cg$zx`nLu)2=YY9_aw0;W@!$b`cJ zz5Kl5mZhOeu!$((4tJN$dAqF_tQk@Z`zmy;S7pVtJ9`-eOWK%bSladX14 zai8WkL66^Hvq3gVyyjNDl4Emo;VqUfZ=xwRVvUCM_&v%m zwbjhs(eYsMCLZ`M_~q>^cRMeJAayw9>ogpcHz-+7&+cFe1OH$$+cmm-a*4njp z`TGDQvJWq|pWwIi4esWCYZ@V;csVUCfiXQTyc$QDyPrnoSpR#o;+aYb{8n%0WU=$* zOW(3W3zxTEP3?MT^-U^63AeYNeG4l2pD#9Y?{9e5ZZV64jv=itCAfEpZUy)>9wTUz z78jWr_N!xwxdh#!NyMbGl`CZ%f?X+K{e4;5Cz-o}`vwq-L+;ClxhG++j|gPI#^&YA zcHkKCK3eXw$-O(PZ~c6=Rp5QuZ){#&eb^uun?Al|*(2sC!@ld-ql??KzmE#l)-pof zQO~5d4t$H^cs}ecvQ!~))Ghn5zkwe?wjgFig8z3H>*{h}@*8;>Qh<`{P=Ny2)nQ34 z-J_t+KObVc4K;cjg~(fqyIUD$p(xpeF(4O%RV)X8`?#r;)WRY?zwS*Agam5Gjwbov z=K@#KrhfLbxG@xZ{_`h}Nodc?jLB18UL;t%^3cFQ;e>UA0VFkg6!C>=ftb*pm#QN9u{Lsy`3-elfxm>6j3?zNts`{2weHN?+0M+_;CP_4Ar*BPTrWA5>b9V_88o>JDZM< z;!gcH@D9WI#`egD-*G@8y!Zr%2>Ri}2Vhhf;uJ~%&@>l0?m$#jlmu8F0EGd1iiL$X zQ`6IRjf`f*^}mhAh#^uHMFYVtAF8vANw;voNoqD>$<);3T+XXO{E3F7 zbF$;otWl&K5jsBjOQCOImkqR4i zUqI*GEGEjMNS{gZZ`q%ZrG_RdaCwZ&t~M6J#jjgg?{D=_%g$aH*7x75J`)$NpP!`j zxzM^!ZLiF^_pI-dssMWUL_*_TRA`bfys3Tm^iyqhwFn=dwE)ShHe_f~#aA^%$<$7T zLBsJK(D?!$h|c@wNvfsj<%xabXp9J=TXE>edf6V-fb=bZ`D0>A$jDYOgWxHO*8+J~ zB$zm4&z4Lu^<5vY*qz->U`@5g#!ux8_KTeYDmtTt zd$dx~R3 z=MV0yR~^zhK(GV64t4b;_W^&~M60WhK~W3<>ICf(7eIcs2wD6P5pZ4KJ{t!n>ipoq z$`zVk65AfpAt65)T#nd5F7!IZp^?2aBD@B9O@05s7!7fI?k(zcza6^KN>tvrz_VZd z?>W_eXW#cm``M8=pCytV+kSP26Z&WC69u~LqBbMeKJnL87D)+Qo~cYQcH5&yXwv0! zfRA{9*Xed#&cfBQT6XDS(aUrr&2)zUq3`!V?(6oqb1!8OSimq#LHYuP?2B7oAt9`& z2mtJi(;zK^Q|%A3s#2hWyn2Uu0)L6}W184ylf0qa=1GaJ!VXPyEoq7>X~pJ;WS+dlfNNE z_#UmT{;WDmniy)6JlI_R3Y8k;=k5(_@w%kz&BkPKmR=0*GUSU(dgbjNNH9t-Q z=aw1_Cl(H%A)VjA?KPS2oi=oT|9)nR2Ia4#4yn<{nVY*TA|gWd5Ae*y$!orO6PuXG zmXHwjL#7!R82e=*a0J^!e7RCcKxKr(ZfQxmm_W}AyM{ck+{ zk^@qaqoYP4mbLr{{B*n&fX7Zxj@ZqChMoTtj79zCQIaPtNxf?H_GBuaKCT8!E$7fG zhGf{zhS@X@ctaZh_{&X}Z zulsOogDfv#3G*3dG(A!~{l|M7Ti_Mn+5)m9#}dGa2&nG{yLrgXP=blOR?kq4;i>}C z*)kyc88;jU>oS1^Q5D#}6Zi?kTzXsmr2mlu4`u$)y(IEE_BS}bs9Wub@f81@NfNSl ziowFF@zp}?`Q4v=Z-b%MY0=*`EiWXjPCVjce#(fAmAJpl9O28U9ST^sw;DWDKCCfw zLE0$GCPJ+3vG1}Jw0Xu{u2XJYUg6(gCR=U9_A;Dg9&Trw1U)#}neqlc=Vs3&{Nl2* z!QNgNFkiU3)_%Mpkmo@xt!oFJL}D8I#)?rFB|GzffL)IPby4Uz{GbK*M@Fixn725} z!d%=(%?OVv$$#(}$i97a=kF(}s=@LQd4(aahmhKMe z?(YAMzxR8;_eO$W*>L=fZ zva-Cf$|tAU<@NxZ+B-nj_^D|yoptsOh0RlOi->F1`eIDOyJz^+%FsWc*G0Ca4qy-2 zOuQ}?qVo&0+Z)FYYA_c#ca=owJrBTh)7u7Vi8P?cRG!`hKY5Cvvt-5w?tn zed3HQ{|zYxrvbn>{(r)EKm9qdF4MNMFtRarb9uRU48Z+Uwo}>@)@tH{p+=|w8{xIQ zTfQXnGy_Ks;I+KA<_c6v0O1;c*mAsjr;zg>kk`Jh@z24VzxW>ELTNp$PKUZ3R>9$L z7M~c+V54HVJLFdQX9N4M!pyv%jF+Yw*4X(3$|qNQ8BEW-fRH?or^q zAz`}a1P*hZAuCH7fi-`RIX>O$o1gIjBr4ka<}y%)Qrb0fJgYDv2_5$(!oOPVS5vDI zvkN)Qzu{hAT}Obf0x0z2?-qmh|H~s3P{E%H0AvKe;GCzByg=~Ek}O^Q{om*8=Y5}$ zT0y}yvNFtTH*JIf%eE@O> z2!8*1WVQF--fHE)KALP@En>1M&I5!e^=6OzfFtiOfzGB;un6`a7;)`5wjEoJ-p z19Us%@0I@Ia=>9{B_V0mV?++X$q+!ofb4wiGuSsa&da57g$IKV_gEfy^MPtF)&ziF z14Gl@bCA9ST6O#T`xc z2d+E6xRJ#opGjbq*^GeRkA*zgS56)E0$mO03p_;*)=$De{{fpqn<8QDe4UtC%=m)E z{BQUd2;CFEeHSgGw_?ZnObW_JnRk14*M~l&b98P_+`3pvDvMkZW0B+cWfZAgNA=Z* zjLMhs1zs?HiCKP7O<^D<58f?m}bzw*Fw6hx*1X+G0vSnx=re1^cR`{w@i45_>LIe~^A*odWqyHx$ zj1rJvGwpG1a#^U_xEvTm5jwu`3PeNy++6^X$Jg7Fsv1NFwAy^mXMUXAc&|&?Ot7L( z%zT;%k@&PQ3`87g4a#vJKsK^w;ebK5g`B>7-NtY9aDJYETbL^9)5!inn6wl5Sbr^a z2kY&P!G#WdU)TLUL6mB5ZO zpAU(>L)hOm?RWIrem~FB>K9H)lBjt#LT2k7xRMX^Hf~)5Iy(YX-ZGuEs_WWd4CVuC z`B0G;o&XnGCWz?Qtsiym!z+*q{V3Kpmi`wGUTkt#MKh?bf5Tg$QKtv9GSG+FJZ--X zf0*I8XR`lyc7P#mA3L!)nX2#`ZwFL|u+l%Jl5l4#Un9ZP$O1yx&dv@X3`6O^LJ)R# zu9YC8{#%IOGcYg!fY<(h36Qcn^K*hj>k9&uXmuxtLblDM2uS6Rg_Rd0x~uoFH*2>^ zV!!u;!pjI@19_(z8~DgQ6Tx2>W7M2=ie+|9InFL9rKKq1k4V{Q^PqW8jAV2DPt z=*Q>6%NU#MNSoECrbiZ${_YBI>w&2YA2V}B*9g_GS0a7ivn?!?jy!@e`)Bq3?|3^^aQ|HVQx|0h&@jiG6fz3Qp)P4kNt6)yXG!agl+VbgN;pAm{u2{v^3>w5P6#GX zR_y*KqFlLHL`NL)pMY|E!!x|#`Yduj@^>n)X-I}~p7)HPBnaseI%j4?%QTLAOc-x` ziaVzmN|YE#JDklbNC~1hC_CTy?W-wSj@5N%k_K_GCEIKxiIAFd`Hf{MHm^~X``oRCL(uY&qOnPUVLK0&g#=-vI?qxt1cWqcXVfAK8NVz&>vxJDzrTSJW zhWZZHJhg5|`n1)~dqIV&^M@3(QnXaxH_nKQz>QZ7+m5e9PEp6}#|YuxeHQWRwyLkwe-<5!7| zUq(QTE|zhyDCvCj1-9UJJx1Wk6I6_#l{8)1?@!Uz20E(0;g>TU`hU&?x8URwR=>6% zTj*+!zjo7u5RjuKcyMJlhXv|QUE`=&rr~Ia7WC%uWEisA5=Ha!erCbQ+scJjeXcG1 zcMth-?X|Q(J*l9_CMUy80`1smB2cs+D8~;$`s)guB>=O%)8?si+y$dy$XL4XKyS#L zxA;3f^Un`odw;&cb{qK=pdbGY_iQ!egrlJCgPO56{ym%pha6Kc?hc0v)==6(lGr4} z#HR8I%w+cS-KLg0M~ia@W6!L-A&x!f+4Jq$Y@EJ9cUrE~q!psaaQAbKUeEW6xm*N@ ztd}-HgXGam81iBbrE5n4bm0iC>d~^XHkbkOWmU^ql%haBObVrAOvvO%fSgl9^o4ql zNo8By>N!S=zHYOy!heCMpQnQx`HM~iJ)Q0_qJSZZ^s@{UHm}E4GE*1+Ai~Y$(1M;; zq={DJ#-2aHNqq+R3KTF+_mcprZ}Mmq{ben~8t4Cq|3vd~y<;jRxyC8@$Y-wYkW~g_ zrRZwo2M+p}df-2&$D)i3SSA{CD{75F^B5FFhKY<1t904zjt=JOLepdycUl^)9|);f z*d`;fxgozjv;H?Yx~j7B{PI$+5NM;|rcUWGp401)1K$2KEkLmo`9(=Vfz~Icw|6iK zGeRd?J%*4f-h%&@8%cG?f0tTZ?8IE>5`zI((HM_my#qbMZt=@hp%pW_`#OSKor|L; z!^`N`9enD&eMnC#nqce7m1vG$vjBk< zR#uVHqV{DYGc$>gAFlwe2ebj5LdQ2#JRg1oLHE1kZt%o3uiQUasaJi65_;J!&D|4P z3bYmGU=KJ6=(N-k>;#h%ZXfp-w&n0Q31N@!AlI08Wn+rYV}o|H?8p(@ah%4wuKn*q zRl6O!Njga~EF>g?!=|yPU%&IM?R-C|)sOrfNr2$FHVut8T6nD1dnfJ#OX>Y01!^yP zRGsFO8Jv%|B`OuLnmo62qL^5Yp2xFkTDxgDg7Xy|(OUBpnmk1kUDvNn9G}IWAH4Cc z!RI*s^a@U=(|cTk!3+gr<9B@d*|C^U(ZSDpY|fRX3uTX}d@&AP(bGJt@=C$NUD7(F z9AxhWJZ+*szc3LA-B#SfiEv&3abZ|@IVj5mR1GleOFIrPEya8hB(AkV(Tj-*6&>BA z>d(bOlRN8o2B=A2(+*hIbYjQbFG{{2e#vm_<7?;XZ=7gTuUE8d{oVaN+|_pN?yUkW zrP<|A_|AoZR;#P*&E>+)1U}wVTAtq&ctcd?*LC+NM3&k2jWT&i%c z{Hn&>&Dl&_SNpx%g5_(+_xN7^J$~nUD;D3pAU^}^fuH-}5;qWr%L@C5W&Oensygp( zN&0#CbIXneSnUtf(DqsC$X@CRw1c8xDqzdt+Ymkv&Tv7C}PdpD2{GyV`dQG0i@{pPz@+RdDj0ht`{@xX06d!gobBVptV_rg3=J;EPvtwLx_*R2@$w=bkTa zpQ8+|&VSGMY_#1lI{xjc(D=x9o8swuu1FMne2`$yZ4us@DWaRr!IQ^`)Z~lw67Q{9Ry;HXX z!q>0a-EYo-ZZ4>)Tdt_60OGAaX^yLnt}qD+_1LKewrErX829b(>t8#n7tOS_1vP%F zXY5d?FCV8hn2xZNk3dLajT9>B2BiQ&bgKI~|tK>SydHE+DUckYRzg_Xw60kKG{eXn-F3saMeigJGw3Z&hXT=vN-k$KGR(n{jS(>TC^|i zSrg}wch$aAM0GjtG_`e?sq(lgqXgIWw&@T*pwe1#D|j3!ywje$m*uX@I!0PYhd+>+ z?Ax>wJNmsi3upRKK>kWmD@HnNZ*}i7;#F60Xc-R>$vwl(1NO|#&CSKd#o5`w6d{CH z15l;aYph6^m`(w8-f$?HmVzQx84IWoVH_?nP0#1MU&sBp-Mb>B8TCnPX3OiU$JDUH zSv}xRaiWb5IH=M~7Q1qCPKt=nzW1(k|KCA|DBf8GI zIz8Q6Dk{=oQ|DLhI9XSq82rq%>=zgVW+bktPNe+h&AdAP0~EsTV9ksOh5kD6lgbZC zIxr@MR4+D)-dT|B$4~6-nMqHvu|W)DV$^KEsF>uRuwe3tmFGNT3AwcY0&i??o|!6c zJ+<#pTv!O-p6N04>-2>m8fUyfTKEyt%ReCgt6wOpe%JT|m)8QW*R`2UE5{U3a~<}Z ztOm4s!`QQz>!sn43>s*lix)Tj5OhG#k% zGKylo=UfVWJ3(h>=lc3OsP?XafI`hz*x0gElbS-$4>bw~3ONI8 zb?cAca>J>&9$$!9z(F3~J5V2ta>;a2Q>IlcJ+{JfzGae0_=TY9cI4-cxPFUv17iu`m9BaA$?>01Hy%c|1MF{KH-cE;Gb zjt(W$^3{!rz1~q%mUXtPZ5Ml7wh`1eCgu=4877m&JL*x->5-8Uz^4ZOpT|z~+|H>B zu-w%ho2NkVEGjZ`i&o5CXzTEPR@$a_X=HFU3{gL4Rl|qKX80i zm3L-;w$L28VYDQAUmkkqt%~n29$5WZqw6}5_rvFvM!*CB(F5fRARCav>&`ius`}Y9 zqdLDsO?LpPlkU|as%P5O5mqJs;hH)Jz=BO1rZhbPyYzmgGYym6f&HM!W&v4I+TOQB ziU6uV!*2d1d$_;){W;4;x_2VNZB*}QKJy5wW8vd3v1_D%tt%NrqDd6@|88tpG@(ES@o|zd7a9-wejjIk-F6Vlnu_U z8g_-HMRy*C)c^BBH_p$`?HwI~u0BX=R#aBPM@54fbN(548UP&Rq_}=aJvV7mf@pz& z#=)fh_x*D1(1BEpJ#Dl-4_)mh#6+`Zp;ymcE^KHMpO6r^PF5+=MB1wtz2Lpkv3v5x zIIBJ!$bWm_9Y=ETe26*?%W7Owy>7W``vp`fh( zko=Lf61ha?WlWs03Nm!=_av5#m)qD zB7y%a*;OJ(fik$zW_SS}?Qu>9z4(fI_VjR%^CO6UX~WHjN*Nhd~QPcX>Zt?PvnUNL2aqj)sh8i;_oUx%`y~ zaUE;L=`$PTk{c3Er)OW=Ijy1SeZVyk3Wc@_7R;*ae;YY$c29%P@2$PLZ<)=X*lOY; zW=?SB>O>kUIe*a0Gd0k?$quMob)tsep*eQG3T#T!qL}lgze)lXi~qNOo8$)qJ%R+DTPs$pI(0YJTZ#&}Sf|!(%b!+^SFbRUVr-b_Q@(*1LpEd=JJZj3buM*|n_X`o^s2 z8bS)jjTz?OPjGQu4XjfgI8tDt%-mX7#eU_8yxBz<$B)E*BUEV2c40VcY*hbocz zmtTELpBCm+M>byJNS4<(#Ij=fd+x7@^74qQI1Y-a_H*)W<%4kA88eve-&bX6iIk?T zFThyiKvf0(GX!wJ_(u9yPdtNy>i_!p>B^@WVbJnV+kz>h1@rfIT!|bTDGb1$rfvT| z&RKW~1x5ej?-&L*{qLbZ|Nr%Aw*lyXPo7lA|Gc*0`v1I${uMeGM{ubZXnz|k7#Do* z-!J0Kd!jx~x39+)GA$OHovn<%ji9Bum8FHgg&i?FM9jiY-^R+)OxsSM*g)INRv#i_YzCf!h&(+dq_1nK zrw@_Pw=e{s!OY6e$jZx$jPM_q>Xf*b08>ksZSPEIrmK(WxZ`Eut{zmbZQ0Gc1| ze|&c+`tdhQ^z!{`U(?SZ}GuH($rKHY@;8(3;U7*5wFtHQq(uxJ>Ux@ zBJ90I0uZDmB)$a)dq+UmfB)z5I-Zd+PoOAUiXEv{Af|e;&s+k8n2fH1k zGx-xc^>tr>+R!Z@HoEr*SYc7o?99wo*fkrD`Bb3mvzbv}ubL(UC==WsckCo2%b)@$ zBj{iE`3U!t|LwGP?on>H&&Jx6BCw` zGqts)X7xa4CGkedkO3?{yWu~7Qh)2I07WB!bv@iYF)?Om@!WuB7C~7~MFrL(1_;pi zZZQ72AK0HVGJ@gUKzQq8eZ4#=xCa|7f?qmliKZqE(jQ;su z&P-%vFkW`Dva&ilD?r2$$Q>U58J^pV{jZUpz@&$T=4j6riC_JQVo*d*}MQ zxVn;)XOod_H4 zF~P#jEUPx<%JA8R;j;s!ma`54bHT79tIy?QkvYy1MI z1f=&~Qw9Cf1HSphNxkVmMW z#Ld*kNs+eJq-Oy&E5HKU`le@k|3Z>H{NoYmGKRC_-@ku@Rs@)HY2*AXf@#TO_i7u8 z$S>=u0WH|qxLFss&^~ZfLuPIL=cBV<;J)pJ^r1fu1au`dZt{2Uu&}T`JOjZle;yW4 zqQ%DMwSOMut2Gw}L^gE6I85eojZR3w$H9q7N?MqlWZi)_LDXNYwI%;Yt7pl7mI)<| zUQR0a%Z{Con6&Croy^VPdAy_L_#LmriH6fcTEgh16yHOn2U4049u54O89R^mGjnchTf<-mjcOt3ITJ@wiU)ha2~MmUcwraaq4a@&NQ; zb|&(d?hhOvKS3oTq_L|FRw{LDvL+PP*2dwiP)>HbxP_RPWUA41Yb@%zk|lwWbm_R* z^z-LWki1t=RFote10m!1IF_vMa1TgLetDseH0eVI_|Kar6iiH*bD*#faRBt|+AkZg zb{aam^nUefp_ib>6DIUN*^vIjy7v3&;Mz$5!Ce2OP6b5To!7paC)V&_!CIk~5)y*$ zfO{7vL6)DB)ARdx5U2|c3aWLzq?0wm&Uu~lH7AF{tiR1nv*ltM@kfG6p~#n%m>Aef zKPx*cD=RInRA8|2_U&6hIOs)G^dv|UwW!A+Bux5)e;c=ogK+5&)&u6*XE|w0>bdL$ z6L#-Zj;$s7Mrx|04=Ra54%w5Z&l3>ek0_rrD(jl5nQ7aLi3m$M>q^>(LeD-!-@Cix zUb)63mns=WTP2CEn%f6O0UinKog@v8?Gxc!G<0e;P@)1ITQ|2HlUj{OZhjvqi9ZFT zoC**-tNB4qYVkB+&HZ`X50~cUzM!Dw)V`jXn+E1gs*8*ueIM|m-(md&-BJ>iYWi2^qoGJSex<3lZaJPdi70-obqB zDF~E$B0!9Gc4iltn!r_pTtY@o4N^nUo>U#+{ z2g++eb{Wh7Dr#!r^Mzi^A9($M$LvdO-}H=sEr9=Znw2G-wt2Hk!db=se!jeDs*jFp zn$LrsrZacisgvwwklutPUF70GBq*B|U2Ke!aXf4{4A6PU5G7x^Ih5jgv4^W;@HrAC z^C;BPZS`om-3_@O=WYC}t`#@vIi;XtG^db_Z-C3>p~|151T>;%lN)YaOs>Bc!554JU%5Aqj2s+6Qofv^xa5q{3~K#(#EIzXd@pVy z;Z3TH3TeAaV(SJq!dwhnofS;hFk37hDD%ZIKg@LVFZnRCFJ4WDM;AN2F)7nF6V--k z=*m!SSI8|V*cNBgKe5bhk-wkmqJcK+mC$4E=e*puT6aP7IWCQlB>HJP76=BzH;}Ny zEASZ_F9SN(hOd4J%$%N~A@I>7^*$+8q9_OsMhGPIX@z>3F=AAqLhEW2*hp2FogL6f zj@;4Rt=Zs&?v)97?`aP#j@{igQ}9f-l6F}nUy&%WVO(F zglMUEmqPT;^U%fE$yxY3j>!=1x*Tm#ydy9tXb7S2_wQwN9K>XFazV;fY6>j4a4)ZC zO>f)O$>?H(`4{a^UNOIXuB*WNZW^9^>28Bb7^U}>^HL)9U_`XAZOb*7xhtixv ztM~N`zSE0^o-1e8Syrq~{u9V3l(S`(mGWQMN%cOy`6xaTEs>QrNI_74RpcLA^TA!o zpcpm#9XUCu++>FR^nv@^LO?(ONnkjjTCP&p@W{IPvRw5sb1%$$Rrpp~PcCyUGY=+7 zbLk1dOP*fLS*|K=m9uNQ>0#DgAxR`jb#G#}p&X@yq~DZ=E3#%Q!C8s*Qce)A zK~7c{?Y_>!YPBmA2okQI5Tc_mZ&y23cV=a0zuoY<+uqp`pb1VDC;b8T3*ss>BcqmX zu+gfumY#qOeX2;k-OG*gI&(1cw7_5H^zQBsC(mE2F*&&@BfId>f5Ibv+L^Wy@N;_e79NvQ!1G9!SC2BURfr-Y&T7G`m~N+2$P5zMWfF*` z9wq%v2w9tFqjc}!b>6cGe^&*;Hl{Y2p#2$j;m5oHIT85bw7s{3k*1u>5***+dfElm zp8Bp0{}&1Gzoum9d?X|}Lw(Sx=AN~-rlw{d)=+%(dsK$I?9Ur(vECmmYwf~8M7-ZP zT^{b7;WA684S!m=g}ZP5QV$uh@@9Yb2^Pm18nwpZEw>;|fE5KREA|rU8<43pv+_O< zlx}NlbHfr6D0$l}1V7CC%#AJSa?{@m0SGn)`f23g2_)vqo|ADKdz`u**Rz>?7ZH23 zQ|yYCKIlae{`j~p(Yhd^tS`U6-WPM45{>;zQGEAR=lk{U?}WPVi6?aqk^e~79J#Uu zN(m!85752jS7N4Uh-)L&z-DHA=}R~x$Rl9hW;X_WB(J_pzw8 z3__^4H5jrc6mI0a)hdO7)5=|!F(p6?4Cr{YqlCW;=jJ5uNo7Gd5aj)pIlN8$U50^< zhdY-cUfi=H!UWy&%{>Qo5*(-C# zX`;eEF1rzbBN)Z_knedrbRT==LJ$~Jcm}?(3B8_!yq+7xRUML~9+Y59jt_UARX(|H zU*pOR`Vl5q)EluB+4*2MrDL5bVmG@2&Hr-6q{A4{5Wy6y_qgYLHw3JJ%F4@U3f}k$ zJd5%oUVga01r-N#a`))3MMXsgRly-HGb^hsAo-4^E9NM}AFZ8$$K@=={YAPlpGi(l z&1;h_G2z?XdVTU=y}b2uF5G2T(}n4))xo@>G`#4_-oxAs=tr0Tv9U zEKi_KX$Vd$h6(7U&3hy?7EoDBv%1=l)zKjoC(*TdMku~bTcY3u8W^fA zSm0HBqS}}|juyN!iOuWuoR1&*`h{Bh!Zj1G87m&E!z-*iw6{_XF{sXgyqzz(Jh8h% zLR=Vrd~EjhoXHhpITJ>P52K*!4cj@63n+3l6OKa9V_mLJPwwQcn_SD}=@WTc@?hgP z42d8}9p-e@RncohwEHOHF}lL*C1)H3FXlorJx#@G86c`Dxk_x8!)+A{Q%`-FCHz8{M)D+ZIxzQ8Uss6wjNU-{)04*t! zZu3MrrQlvJG>R*Ihdl4mZ=1aUM^?$febT6OMYUg?IC`WmVutpZiljvZ&m5IFFHir(BWq*CHyV#}OQ{=t-#@KfOYc+=ba z3EBzh?aN32d8*_v7SYc@eI6JAIT(J(Ag(~{(Zq4~w19gi0c?u-`CAc_C}V(vKyvaA zz*8S{?v(e(ImD-%-$ zsl|};@~IW#f9ok0laGh66qm!q#@4-Rn8k>8aB_>+7GwSL6S8xRz%t!oh%KU&^3^Bv z9$VHK=?dI=_}%MU(&y&dujdd?aj;0{qgY~ z+9v?K0D}cy`<-#F!-iGy${BSMUp5M&))(G%A7O;}d){Jz7=5~#c=ntYfi+=Yn2)WZ z&_1yQNowbJM8i&eT|>ij=un)bL@vjN5J*#v)3L15mE>kpbwZElQ7bIaHA+fO#=du^ z=%7rOyI^B}8qQ6~5?3m$)h2;_hs2R@jNq_(mY}*UoJ&q#Wcth0;83pJG_hBwe#$|* zwIob@Vv61-qJv=Ru~5T_GkH26PseiEXI)!58olYrO>wwj8eJWR6zdJ_`UZH%ii3U2T*w=k9p)bao&7>?T7P-G9Hx?|4v;4(pw3vCW+ua_MkmZskFON+wmsutZ@%1k6(l&1M>J9%^3y|4( z(V(3GWc8ns#Kpuc6&P)A%U4%9tZncDM>X#8VX!ELa{!X%Ot~Qt;yE45mKOX%s$Xu6 z2902N0B{m`!;=Q!kI}{_>s6=sqZYKK<_v8E-4N}hki-4dE;hQHG^ zjrZfh{)J@}@P>VZGl5Cowuv5O;&(2CX~skl-#kt|-wt{7XplpZgz7u}7RJT+2R_hd z#$7&6Vsdme{R>rneSI3NHNut*Tr7#w6#<9;9C<^k|DwmOxrf8vkkU1hH2Vvw=ml%7 zLk-Oe1Nw|c zL+y(k{|3b&%;~R_nSp8Re zI?&N4{sl^t5D*bb{FL?rKA@Ar`RTd?Ep^wv#HDC>ewHr^3L4~56Jooj??+Egf|(2l z_ij)n;hw9fY@xSlaCZOkO5F8KMqtD4biE5g9TCJdYqZjZJhHu;7rA;Y*<01DZDG?A zwJyxt9q~KInr*FAm^a$1eZA~5#aDCu#R~_PnU~6?m2!jM8p z?#q`$Dr863X0C(@*NMk#;}fVtpsCGM4#hNrZ`rWy0(ZEMNGN}{6{?DZe0k$3nEt$R zuajy>CC>BxnWuuZ2GP_b5Xj-~uBjaWq^3QQNPNN=;|eClfIfZ(X3++3lMLPa_b)qjL@x|rmWTfI z0Lxwh1O|TJt6}MS-&j1*==Bc!vq1B>`D!HuWUyNmzY-_D3hCD4#U6P3u*3I$4Dwwr_7W7+6yT$%}! z&pzAE20`8%8W;d{4d>M>{=Gm0Xg{u$N--%Z18)iv676D`W#33VQn;1W7IK6-QaA44 zr_CZzCY5BraOQ$~7jrv5$&yygvuX4SU;LIt{IWZGQ5SpSbI8g<=gy;{%S~gh=u%wq zRe=2Yeo(gMRN^gBQzTMS+k+7c71a(X%~1rBYT#hJCI)y>wzj80zECQW-TGorIU`#t z=}E;WyzEhSDQauWD6)MmYWHw?Pu&*n)AUAE9Hl5)2R}bMx|A>EaEa{iMA9D(KQWc- z6TY?clJvB#yggCzjI}53<+NMk{8^J^Vxh`O2VqT83%@s3cGi(h;rww~JYo2d5azc8 zq!R%)X*ih30Z{Wu6f7Axw+0|P_wgMZJn!vZc?b^V4M;@;)f|ujaLRcJpZwq+^$+&- z1b^X;lQ%Lb-*i^iWO$8qFFz;z~Q;)ybIE;Y$v){y zW$M^-?mF93&VHx)#*rrHO<<~E07@e$qZJK%gIt-wPr9}E7sdNK;v^r^{hQn@DW=c= zBQ4|YRO%E@iL>YO7k2&&_bGv3O!{!}y$0{6OvY(>IN=@|2pr?y0|`D1c9|g*iS8Sj zoMi!AlO&(-*_-~!m}y=c`mYa(+qDen3>FtwrJrgT}b=%ny$)GHvo0ng(-^>Z-R2%jOc> zZ(u;uP26}`4mOtrwS|V?GD#6)zxQp2zxa2nRp#HSSc(b8i``T>AzkvMu`~ zhV!#|v?ky?K0WVs(%Q@Q5!v~x`j}u^s759?liAkzCh^AKR}P&1U=rF9bS64&6W5>^ z4>)P#4*jfg$NKaZhhoSx`wstaKG}aAH!blp-9J#Kh2Ny-#a_G=H1_|}WQ5Y}i6&bg z{)izL9)2~aAnIuF84m|dhi3dsk#YzbpY)s~&>1wzsooIOhF=$w-;K;-cY`kZBFc{& zndB}C&65(Op#Y~HaD9nd_;VZHFUO)kYJmK-03Rr&%+D;fVk zZqXkRyp=|5Hbbx6;_??kH%W@@&poy&+%}u&&(0hZ4JPArV?EX$=^)RH$j;BA8<*0|V_Ga=>tr5^Hi||< ztQsiXd^Sb}c@z77I`kAlz<+^Huf0X!0*M&X77NU2FoFQc_oOfmJPC+isPdMIG!j?* z9X>u-Dn7;VGY#3Ug88l_&CVNQ5ywB=IO{#AnX@(Hul)1&XqEd< zQ5KmJ<##!@bVa|fO5CfKYOv`GPgcB?@2Ym%PU2hj_Tx(IzZF#?7gpiX>NFd1v!X9&}a6qCP+daQRz=tlWN(&-l9S<$8*ouD76B4yB z_d?gXTOi1$smA?4dDo0T@A$glFL@$nu##xv`u$gy5=X zLyG1@F$Jm{l>^Fs{?^XACdRt+W``*nv^y+Irinq8j4%@U4Nh9vj|C=-#XE)tdGM;2 z9WI+Sk{l-HL>i_HN^5nQMa!M=V>T2Ou2%O0VeaTSKm)b4mA^yag{DaU1Q0od76)mI z9wtewGbUt8d<92H6^crvzkJ5ri`AA-)%b$u;k$A--o0>yU@4}%$R$9#`NCx zO^qGj+icUik`e$65CiI7B{)j~i9L|P9qATame4F6Kl~9VYm)Rw<)3APSq^2XEU+`C zVkl>uCC@eMR$k7%2U4UGktZUqN-nIrLmqRAwNa~od$m&GVPRx7NKc=Cc~7A^Fuq)j zx09qYAUnvrGp!)lwO;tcuMqxpvclQaz}eK|mA8@UOjY5}WIo5&24)Moruyz7DcC44 zpPFWx#l83IC*CTkK_a@QpSxv%A0p=a-`j#BPHoF$Q3Y_d9nOFit=(%m$U zELFyE}LAdoeGSYBfVdx;5XhjrwKp*2gGBX-q1tX#AUu&+< zTvfx;RKrqPQCqwIv4{nm8pnlOuu-tl-wxRy2+!oFA9% z{<)*IUb!q$pU=O<+zUl`c`@W4@~cSee7d~v7*vA1Fr!F33>l2zc@b;ah4dv3q~*c< z2Ap2bBq_QWKGzE~9i8Vl6o6<6h95YhZ*AW8t~o=F+%>bTC8WMd0TiD>NLorNJr4Mq zrfP$H1t9L8x$x8%7XMAvOhVtgp(-pM?ru=01n4U`bfCZ0JJlEuKP)J)g!Ikzjh30u z=u~z`p}b-a4PqVpPHXVHdSWa%xq))hrvgU$#1eETtoCm1)T{!||-J z5((|62@W}F@guN5OSvMV&eJh^6`!MPS6QK(Rp73ZQV3(| z_bH4t$4aAGT&@0+< z!9_sG>E~i&blV11(N@)|T%a-pNWFqY^v8EU=jYWvl60VgDF)&#z(Ach^?F_Ao9xV) zMlU13KrIk)U?_x)<-ttgi>kw&fcdaO^KitTK-?k7Z`Qm9tpbm{vr57pN~M9cUeBPs z+z`@=>%EJi0cTcyg0F20Cu*-dM!Y?rm#mG#!|GJA#=MYhkUI)R7DbEGtOyL#*a`LY9>yy zl}gqq+|*d$5L(P*%G73mIc9PsHuBQ@Bc3G1oGYXOFH^zk*6= z7KNOr`(q?d4a68{@`UE38A})WU$IaqQJN}$F)(s-nc4?SnEDt{2S2+3S?`{8o3kxo zN&-NR(b3VoJgNeI0E5(LGb#h+3~wE6R{v9LSH8C4)QtsBs`5unL93^*mcHGWX4Lp~(sP>d0GXdIhsny@Z zazXmbF!3Os*MgCCH`+ynR_Uf&aWlsJhu@2^-GFNHTsk@=36n8Z*}-Uchm529cIU%; z&Ig?8zC2S`Y%5%scWgHvk-h?POeNp=E#p}S(hHTRw3ZZ@^Al0RQCQYo<9M^~WU{hMk-TzuHb1~{>U}P4oS$}`Z z#`hgDb8KX!w64yCF>cxoDFgVG;`+1>0|Q)8BsD$`E%`-NHH7w3g_mg4&;8EM?O9li zhCwk>4f3HPUL|Heq5nF@y4vROCy#RY_P6+-kB^N*elI|ARb;DFp5Jp+z`a!6Hx@#c zbS=}sM!3+U?JN3LZ*h3pLn(2-dP=Aw=bnIllAW3gb&sbH1dM_{Nfl-6lF0Gj&Sg z<02OyO7I)M_^x_bf7$mKr$vzA`OK z5GlAA;E5W_Ko&yFK;sqo1ILF@`7@^RBG><7Et4k7bYQ?G#9(%ovtd?GDQcJY`~~(F zagal%RQ)J#*+q>pX}QC2*iUDd-fg6heje0j){x{Dx1U`2%)F{Y+;=gXKNs0!)@Bi> z+rnyiZU~ngblv*6<*o`L4;$Uem*?lDF+2T3L#tFsFFQ0SV57zt7Y8-CC#I*_IXPA2 zxb zDdRO|0m7jwCE7BCNtM{u32Ly@qO$GDW?P&lL9!d-ZVfBVyvzTGuD1@0D`xtJsZwYc zr@#Wm3luA|xD=M+?oM%7thhr<%i?auS=`;VxI=M=V#VG4J+$}zT;FrO-+TVsY)(!x znItolncuiyHWAM_9v_D@_jnzPJ5TnyL(2S9WNgMUe%*fRB>X?GsO4r zn{&k{NQ%1~ zg1X!hCnP5=yldR|^2f1Ko_(SJWgn(bN%qqQJOG1%6%s{1uA2Sv-7>oB;*Io-i9kq$ z>z2+ncnrhM=ds%tQ$s^Tzzc{6@YtLfAKx`m!VIY^3RiP5XR=mIuSiJ03H?KvLZaiZDol5IwJUiq6Gde^uT8gKt%rc8y3)VyYi;!&HYIxSNb1pH_i;w? z&dJS1nVbU-LyOw%Ry`86o?Y7az`ocin;43I!`)3!PjutMj;X#g6uXn8rmBWR!q@QI z7nCkRjalS`#vowH99=a;&R~|pu%B4?nNe1={mD+pPF4R*6CZJ_!x&aeaFE?lkR@SLFJJifAYj)l-RFhxx$YZw5uqR?o z5{p4SmZ~?3UY@e!8fQNt${8C#`G1PCO!@N~OWePepWI(5jZx_<=_9#CS<(O>?y@qS zCf7J!W0mFY;^wTi%j0!%?9;QeEm`$8F36UOKZz}J%zngda74tcdTCjfq~znkWuKZg zT)wXYXh)53jmKBg5@G!S+T>e^ebun0hTN)U9k0`R{nxaW>A1xt)KgIS0dvAYhGBjy zkPC1|jExd=NGdnb}+4fzJ7ZQC8Mjih^`xMrHe@e?-(;?4MkD?xW(Frv?hp^Sxr-+-gtzbo0GE*KL~3)aaRC*@JaL zy?*>4GRW9&9f#BT-Ch4+KBx-0^Yq0i%T3!y5DBMKZG*NgDxn}A6U4CF1wU!xgTp-~ zN}Ax1$hlmSQ7Oz+5!E5ox`EA}zn*#BxO9k_7Xl%GUX2P}9-$wnZJH*3@ICxyiG~-b zz05dla`9-#d6@c=aj!JZ+T4WSxb5upw6eOIiJo50Xv?;C$_p%xFEU% zlgfgEpb)mGnszYxPNx|YF@-?TbntwQbHHMA33fY#I zD(KT-*m!O;p`MLuYH7x@c_l1XADPrK|FF(c{m3pYo_ico-2ZqclzOpmAhSl5Evdb9 z#Y!qgN>X-3u!juZ?9UO8X$b=IeFO3p|^>fD0#meeWR%2g%iR4d7;&6e}0_&UWRqR}8)) zTV;ljk_BRu$y{6-T=_aoOS_GFMS+_O^;=a?8IvT(@L^sVps5>k^X9rmFpZD>ioz5FDWA(${xH$-HQ9PTPrcQ2 zDcQ+0#Qhu+fTNMH2lOx0VkxuK&B_ttj~DvB~ST{ zJw%@!2>)hE@b}wN@om$4DH!h;6ZHwme+9TD0baN}0Pv$Y3b7fD%_XsoFpudXr)KQ< z4B=3&{?)SLP*Gaf7e(gj1GR;V{8;|`mBZ$nyZq(`=d()zA}_1`OpkrTrbE5G+3S~! zi%u&^-`0?uas+G})<*4|WX^+K?&9x`u+5q;%MPZ9?dk_5b1swHeQKiHcaMH_2DOER zyT#V1GUG^+=dqVgmpfS?oa~z#+{)6sjJ)%dGq6Pqh#~+n*p+bCYPP-X{<>?i)VeM$YN9mVu7x|5{Y!cDm^bv}xYzj$V= z@A-2e{c8YEQxMGBQtJ2j}sj^p>dpjOEQ6XJ*qt5R&+?BqM_e86OBq=G8ONmY6ZQfrI`Q@~-TUdry=H zon9stYdP&V{<+N=n>8xCaOWQ>!3oxc0&)MGNiwLvf$(N-CIr561=P2lRDV=b-?67Q zEgaITamTq)@GL6|rjyiuqvj9X#_|LAE;3mHzfg3^a^7DJouHlm!>dm+|S0+ERZ#A4f_&w*P~~mT`{2 zrqTVlcxe6R(kJ2mw7*h-|8jR_->AtUKYwoN%{I{)F_Uc_^*+n|m}Lsx_R)58fML&V z3~FrE!PfZZv}sG#Sv*IB{*Z{?VY#zSIm0q@%&^VgyCZX44#(jlfj0{Wpqa8ITQ_#C z5QVU8`o+GgZV&%;VFQ97agg-DVxt+PL>6?0QU0AS%Y&p z^d1zo^*kFSm^I6?G-N<#)1B)ss9DdF}W^z|_rK_(LiB<(o{qE92meuXEJu z{jplHsvJ97Gp*kU-MG`PG+#N*jE+K2H|OROyH*ey&YVvR)#zWNZUU}tN^QXXXe1}# z`;Z2kl)JK@wBNUXX^7lm5;-k+hZE>%upRI^Ml&de9`c%G>Iq}BYlDR|r^${k8tI$T4kFLyo8YeI+i~hkU0#Q! z(9q1=K1IB{W4S?5?qc##$pFdMxKzXbNs<$!3EkBPXL-wq0h7_fW4k3L)gB8F7pD@V zUndJDcU>eYp393}x?a}5FQ|^gNAK?M1lBzdr~2=<%YY}0kDf~;Tj#GTux5#V>UwEn6};jsl8QE#`!lfl4Zp*D@GY%s=2p$*pf&`)@8p&O*2 z_4@Ve2-2$#CeOpI{9=X1+URw^gg}Ps=g`1uM3R$OmO@jnhA2+oVAZ`(|ZW1TLg zLtG}u=KZIY^M}qyPS;b0u8K`qQ#`qWToEI>Ih#dq&N(+q(8~7%AN!iy)()_Y@~~SU zGb*1wJ;{)jd$lw`R+VH;3){(Hm|HUA@t8jd;3L!#q~lGJ?&3^p8^H-(dXQ>(58Aut z-?%Ij(xwb94Vg&}VJ!BIgp(96Rtc`aOn2{G?@fOz=`Hqn-%YQbYHVxxxK!FYSI(3n z{Dp|2gsgoIT>HT?3-y*L?yf72o0bO6_3!p?mo$HXBl^=m=uUG-3bc2sZb57QpT87r%bOR~6&_ZSU8#kT*DA~WtB!Qr3+vQzuy50=r@R=pS6h=79%ga|* zRx-Xk2OebPTyAziM2!GehuG8kI)}ij)%A4_c6P9I3SYwwK}K2veFD123qQ!W9 zuDDtm+Ts^CzdO3wRgC2xBF^PL=&MNK_d4tlNOZe#T7Pq0Ea~OEe>KZ(nX}~Po@CLz z(__wEX{RoBW0QmXj+tKY%mjorlkco8UbBGa<`~>BJy7hbSw}3}xZ$yLFMV^xJfxdU z=(YW2d;I*#{jL}N%~H=A`hw==>dN>^N^ug8!+vka^|b2b=nxAeV_jp}PI}fw)0?>b z5~4ME&=`s6I__#+=}9rV3M+Kh3=x>rKP3~0CHdJ)p6B7bI%Ykz#O!63a1N_HcP(r# zabQWGacb(fD{TehgFAagRd-ARJ7=!aW79jio0)W)C9BG>$IqbRw?*M-mg}Y7#7w#A zF7`%maaW#riO}TpdXypZC30a9K6pZ3*-r#=RcAjJ(<+r zrmml8Hr3{m7jS7D<~1ZBg9!UdqcHV6xcsjl%NIrPmEE z`y-1%$8%><#x0~ZS;M45oL`ATwaq-4aO99jmEydNl1F2}sY;J#>?@62uU?Kz5;OJd zmq)nKTg9gk$m;p^6NE1FL^=K5!QvK*(z*0VcFkzh{rOesjr9+aX47;yR9*a>;4FKx&fy{dBHuUyQ=*1iwTs)jGvZdQf_ zP42Ey^NgIYc^-roa_Qnr_{KsQ%#y0!Q?=d*wqaB1wA{p9PvuH;mB(c{GiJ(acC+>f zOdl?D_u;BS`>WG|188DDC+rUyPre~hoe6_(X@M~64&*RMnl13oa(&ak3=gH9Z z{pGr-*Hr>`v-@&?aZ1C*13|CAPqSGToU3Q~{`1rwv;5rXVs~d*@7{?lDH&;3EsZ$E<-iOjs$pNuJ#estV*V$H)qdb{d97I)C)+R^;-=h_f%0 zDuL@q7eo6t$M-qh`jW3?A9XAMw+z5_z+Amk=x{(AyGE(N)?>l*#%?X(@8RxXOOL+tuM(mq12H35Ro#(OdP#o1}zg&wA zb~}HnZDTh$rFYF%gAY!uw%+8Ncldd*TT`{5*u!Mrspo3>*>?Fl z{NA?nraul5%Qzz&gcWVoq4+eyr#``bukCBY@! zd`-@Y>3q?P$|+ZpD;%;3$7p{VuFp>wy)4);KXMo}A!=e>yyF#z5A9!v%A^e?qE?eo ziu>e!i@edQ9L4pYF0of}aDa%D<-v&2x`2dms?fs1Ldqy0p&g)bxVc?N)2YJD%?)b4 z-*~z_lc??waiP%4f5&fr)R-*WCx#Nz3#H?NmYbU6@$~oNKxSzM z+pFkTeJ`nCysM!i?z=8s+^n4ZiMNA9T}*?HoA6vdUK-eP_8jrm-+ zR5$lg}kzAK*g`q_{x^LXZ0>LnbK5JcO6x z^=+M;I3O<@b*w!-n+7Fm_~&PkX|CRL1mc4z*N?p9t|5IhOm5zHyN%_put%5vSm&dk z62O!qm<*lL?LwvPJ8<_O2t5vvHyLDAHb-o%R_Xe5+}|IBl5XeH#bS9(U-MY<#O4am zH>upWX}{jpT+G%mzsG^5Z|i_5_&Rn@u}`TUoogM~yJMhL%%x9r?b{oz6MO&6Ce$O> zs`_;$_7*M6c;@B^+6Mh-TGiS^vB&KRukaDbw$Jz-_D%n;-psIMpV+XX}IVz+PB-`#qIteqTvjhxkzw=Yx#4T5PM$dz^HRxKBc4wFGl-wN?ZD#Nt#~E; zOnMmJ`r}u`h789I;agld!Y`|g;?u}GI)BaubnxxJqIb!TnU9nV@$X=q4Wj(%`8kub zF-?z-pFkc3?jEELpAB%Mo&Mg%_L{YANnX`mG0+#-f9KDL3eB7x&~m5k(p&S`2+OFC z2|RU|M|)E^b)f!kwdmP+9DYOfKlt;Trx=INFKQ!JTpC}W5`>c3HaQMD){Z!(FL)v5 z+^VMRDm%}Wleg39&MF$h2L(CA5u75Q{MEuPM3e+F-0%o{<|G0fBX5oqF9kwT8uV@` z6`^Gpsrcfnr5bNE+ufoB@NC>s#XzO^qVf%yFQoK+*)T0Li~v|BAkqfFM+Sl}0B~v# z4?bd%M-2$X*ED;;y9tq#W`lPW^Fv>qM&wgZtv;P(dI41?bd9E%Z@gEA{+#5y{nIta z1PK$K81QSwiV_);5Z8t(BP?_5+df|yO__B!o_ENh&#;<+HXHqA!>y&LO0c@E`}LP& zu_~(i9_f_r(?L2&NS|`L>xfs>L_REFb%%0ll=}fnm zblWHDI&SZOH)wLyd~#&)@F+h{n43*9u0}{&Jex3~y!R(h2e!dG_VY^-U$^}z?SlHU z=Je&G?hm4^9-pWuTW^3Dmu{#h(6Q?oUndUQ0fAW$!j#PMW+LaP~N(cbzvE6 z?e*>u^>5%5FCdQ=xD5K(gC%a4>r<&6q~f@V7`iIOM95=1?@4L5<6LyCHgTc3s1dq8 zwZ(&tL5RKW>#uD^#UcRfoAhCPb=QM_d;BP~{Md8*Wnem`ZeDQIvG*#esTOFUpJ{zO zE<~rugRbzT!@xz>!+xdO+UUk&v4don>$v$o>dfoT{fZ=o=epb@_U<;x+>1BtIDv!J zYU1SD}zMGahXFZI$!|B;#=$)v!{)Dos{I&gA0_uo*Xb}J37Dz7`y9dZZ4@nZAyDoIWAO-<8R_jby+|^F+!{2(PAB5C zpcQUb0|2;32HPxG7-wCo(-DQJuF9jx$me3P{4XNe{< zdk|BJ3DH+(MI0P0mTx2S6!;2I+OIS8sKDe{J?;C>^i2->E=(Ouhr8aI;Faj<_jO8# z*b=gxxC%+(K^*O6TCqP=5~6J^E41ElFyNBX#<|}$5?072p9j6;gWteEI$@L zKuCQW@%7(VkPn~1=ebMt+`sazyaF z=k(zn!x&21^!bW6z+fnQWZxCF!And=ijKSE9w;_=nku(O1@$apETRxGyI`1Y75n1= zfv`P}`1bEzVZ1@cr~i*HN}#;CyMkqa%cd>tDb(J&6Fd;QKjL6y+N19iXC5^#b#DE4 zkls*+Ho0xq29~TK3zIxI_&?L*o&zWM@~C`5i40`+dIA&k7mn@U`+i9{h5COD&M?jp z!^kxTMzMx9KL#LJJv?7_KNeck3||6RZU256bzQ;V0GL@6&^aj0Ls8W?OJ%6PRVWhD z2Q19k8dRX@3nvy6Bx*zDITBI^5C{9$iq+xo2shpp*cq? zFigxVHcacO_{4&9l0MtaP5B7zLHCl^7QF|PK zHpQa`6S>QgkiuXzBCNGqSVrMhZ@oz$rqMAXhhnWF6N3b=>-t;G3#_%!Dd!)UKY&i+ zn25l&=xmJIjly&M{}EbPPYEQR5f+cOj4GDqn$;@x80jaY{yQvrI{#j=BL8+7a){t} zyuXuVDRkXP#;4$i9*pgPfhUNyi~Zv1jf51y7ZM2kUcV17#pCG1{6JypZCFVjNJwH-G!{oo zc3^L@b>~{)MPRa#!j6DB?kO&i(82Qt17v~9O`TldazDcy!vOv*ncq-?+R_R;a6J6P z_ioJ^S~rMf@beZ+R1!>g`!_j$O!DJl4F-Ngq{t9p(&4GV<%{c@x8DE@UgiH(0azv7 zz)w00*jxTpajfTigN`k1(LLASA7t2&*x)8+Q=*l&4=ffWF_)k`vI*vPPu0I)cqOPe zx@jLldgR);BN`}%;lHx>$^o6~$_l9ZC8{e7ylnj{9Gq51_`oX6F4X|4=69 z6l8`TnXd7--5?>oQLAcJ!Hg-s_P4QZpSXZ_KbbgBao|XU{Ew-_!12k+@c&Sd2!Q7z zCU)Q?g3UwW&-(;19y*~ZXqk}+2kW=3W@Tli!U0ajk03BVC+Vjz43(YdaGR7W8s}dR z=&95{FP0fx)NI5HL_?IAl~1qELv10HXffX&T1Tov2@bct$t24Qxs-%juyduux)ZAR zsU>#$j;$689a4g9$;68&yDawRHA{lkg9H}58+nq}qga%jG;#_?xlf2a6ehzHk{!$3 z%v~grv}4ikexDAj9vh8Q+4Z# zO*itcY9#AWM(axj$xT(L(HFS+HSon(p~Y22RpNYo1*~^+s7OI5`~8H2M{jD9VYeYOh-27_S?=tQ>;BM_SQX zprNCe?~$?B5|PknUu=af3#0yB4IdhQ;nQX_`v?UAxpv@&8%txG0Z3)yQNQH(@>QKyK4A$e zDgw%$TR9>j+TmmgF0UWHVg#8xiF4;uE%LHK_Jo<*WyR!r+89=s=SF_>j7yCPx^2XK zBWS6=_&-829MXgn4vO+eC2#<_;v?Y>lVd zvYrW}e3iWK`FVDd6XJDi4L}*V=uHX3HkAuHCP&dub=%kD089~T0&qF_kqi|I#G0@A zej1LhAt0xga->uT=!5kB#dtP=v5n>n)q!j)K>-ZJ2kg5*BbN5|_V1J112bu0g`IZ+ z>oZl;%@(o5V(tj5KTtR~mAWlTvg4GO98T!BR7ZdSV7hMjX|t zo+qY+grhBusy<1;#5Jca0>_4D*!S|Vz(2`DFq1HpCfrXOwh!``$u!2kbcmM4ktTL2 zvAvH~nCvu04tO6xFJvUP_)38Q4bLdnzF4R@xad5zeUEVSH@82S#aWlxMBG0Mu?hd0 z`=_NR(x=VZYw~uhBc$A@O_?vbOa^b0bpIrxhdEluXu+-M^0SJpaxrzi4O{s_5vvVq z!rMqQfL$8-+OuXHxsxm!h`ikVq_f`(2n?;qt~^;+v&J-dIOLJIQ@QQ!?W0zKyj-Cf zu!(dy;5D-`H$APMmkOkQ5GM=mf{s_~K`1X5Jq??GvgaV)H>CI_y*UrJO%uZ0=Wv9y zgO>uN&wanGQQkfS){^*@Q$}2nAn4d{i&APaBzohtGQt4|FJfXczvhU)>#&M@DRoj$%zFzVKW@30k*r{!%@{E`L^c znpJ*u{rdNH@+70fPUEk$k=ht2N8Oh6o5lVz1ARo3C`G_*({7w-K>u(Ce;~2&w7`Nyydmd< z@0S6YAS7e+DXuAx<;P2bhx0 zxYbQj`{x~G7=gx|ceO@enmM@1jNP5uYn%B}+{RqmBg7vD?dIzGgLIisSPG*QrJDAq ztu%1oCjMIfw^6U3KSfq3zTLy*|3bdbCLgb*v~15)2ViLi29jP%Cx1|8-NsGRNZ8t& z8V}n6g{018pq8G3K5l`>&*h@BP5s=v+PmGLBTmQT9kE*rFUV3yC||p=Q8FC(>T(Q4 z%XDK*AE_?nM`xPC{3L_A2T3!F7(12>G2TO)WJ0AfF~! z5>4e7)7fs#iIV81bMxf_c&l6VB9ekpxq;vLq=j+xnpV7D>2&}^G5}}MF?P;z^6Z+w zkJ$NAXf|+>jnAv@FxXmCX7$W7eExPT4$h~m!gqXG$fv998MdG>u~ehPY+p3>1-!Ml zw+8^A?(dV}It)kOdhxq~*}v;L(Bh;S<=GLk}Nz;z5GNk}39rjr*B zB-Gxqul(-N;P&(n&GF|n7bFupPks5PZtrF z)-h3bRCrwF zauGXOBvcss@Dx3m2~d7)Vh!tTnV;x04au%DS$@21Bs;~ygG~(xKwBtoS!hMzPy!D(ef14#i1@0-oi^&N5we z+2+Z&W$yQx@C49An#wgYUP7^QoXKky`?p29pu=$6|B93f(BUgMC9E6J%0t1kS#TU< zvkAAiV;EDOQC{T^FC(?7zXP|4L6?85$EFu}7j5(V#8a&Mr1y1UuA8fcc+Gjv*Y5Li zt$WK=;odRf*&!;43_FC5GR50>C`$hsOn-lWJFfy7OiW;QlB2y#fAfbW{o@?6k|#T8 z5aBuPMr)e^okH;4g~WB{(bt=p@MT9g!TiG14wWhHh|y16NsGreJL5x`JY85 zw=Lh|e4;~^{P*+WAv*Q9OPPPr8QF<@P3yI+U?e9}1B>GVA41Y|;1=u&^HzA{VVrI3 zkwX8p*9reXaKO^}gVg*K3iCscjLadsbA$f-lN|w3V4T?piH~6@&pi}SxXeIsKvLTH7j)mn-gH>w_Op9!zW#khb_J<)Q8xTo0|kf9fMG-W3KYVm3m53y?@d z@Z&#z%|`&~TNI%7+^W!>@drBmtyyXy#xEtq@8dla3i_v#iukL87#JBxHkD`O28~=j>Qv?pN0KrG)6%|q9WQW0sDR|F+ z8f4Cc{~!gpe$WUYR}5eRru6%3O8Al?=j2q)DI&9juaGE>#`ISs2J%lq0MA3=b%kIl z2R7x21~(vigU!W!v>zlKYa@r%f~8;H66Ao?e=e|!bFNT`M6A^<@n3*O#hYhlZk zH;}8LiX)u%cDc-tmLeRmLx~AeB7%H5-+EJW1C|N{1u-Iu?2Aqec+bOuZ6mrpsj57N zL6%3Bmpc84%bzq2ri~-4v|=aSe(nE*UjIaN1Q`j5_G2>^Z+odz126Mu{ zK43i2fSC$Qf*6>XBEe}}KekLK_;8dl{Nu%JO-okbd5q?9ZvJh?RNj7N@EnP@uS*f7fk27h?NXS|qLgGTKa&!*VI% zxgf_>L@5H%^{K@Qep@=<8UyO#pmsH8%yL}gLNhPqT+Qn(7`YeKTkQ?-!*x-^y!XQm zM_LW%<`~OG2;5y5WWrUX5AwdUXZvyrj+v3$<>e@fBym1Q`jWJCk3aUN7+Ww4Z8;;X zB>EpQQiX2jet7{gV=@@yunlXk>)AY%qF6K(@9s(AEc&erKvZ-L8SJ>t%sl(r1iUCG z74+}Lu&xh~ieA0(50j(N4ALWrJar(qk>M5vV3?zlVp6?slzBSNos)otl@UfnflT|L zvKRusJKTa53ebBXFbxJ#Vj{MEDqjuHNuXqb$Pe7(-{=A_%S-95`;m$wcZmI6DM%l} zFC3uvmYZY07Vq!Q(-femCt` z7)97c;9!l?E9*kIO3!vCG?CPn4d|nk(dxlHusK{GCe7|YPkLc%4}^*VwM)dsASZ+* zw4!+kSJxbD;f%LihT*wEL>@rLdHh#SxJ{;NMRk!c6<%C-KQQ4|MiJrG*stdMTWdv- zjd#u{KrNQ&@HT*676OTZ*A~!0WC!jS3J;b_H4f<5uZJ+s``g9)-7z_8KPhS9UUFTc zp3k>{O&CAPS=G3gL=osbjRNYwmHVzeA2Cj*0Ky#?L2V*kX2YZo0Xn^IGe=76O++j# z@gLee!-Xhu3?#m_HT+xQH{}yX?O4DN?b#7q#X;snk>ESi7Wx^W+)yt#L4$8)&s-pv+^9QCVGc|tC~b~byP5gbCbCIF>-U4NLi`jAoLn*%wO2J6bI2k}^Ai!^ z)mdwD7DIAli-`JcINY@ag=a)CV{H3)^H%RXC5LLE0lnBq; z5g@vgz}fe_Ut4Y(t$fe#NZqm*SwkhEmD0c7Roo0-oNMr`;b?aH<#pb-a@p7wt>NnB zX}y1gw^FS;^!k>mF`cg!@kmLdO$EB2QZVLwPV1#8k^K$tY`oFKt>paXkcYZ9%bAR& z02R{j=8`o$PxsRGi1}(AnENkamdo4hQ3d4N6KEP3M$_nfyc#2Wdw83jWXwD+ciKHF z>zWDQfW}1TDxs{kD-emr94e^CC}*N4dXvUmQS9*?PpAuhG%}ELM74nB|j+JigdU zz3GgR;b79?R_M4N_~7@-66Mcqm@dZHFTc4Pd)KSc{d@ubjXXqTM`+jXsO1aP7Bb;{ zG8SxQNIO1L21`?NC+8>B?Hp7Kk&R1m(tI5FhBNW*^kbw`g1+mWzDd__9#dn&bM>XLL9uaY~ z?PKA_#FhrCK3ylxC$lX@sS$0G=mb2(U3=T^34;uW76e%&6W-7 zDo*mf@QaN+F2ftaECqQ+p=h770wt@VmO8`RTNRz#ajyN)nd*S^>!Q^3{G$p^)q%R$ z2G)L)ngUrCBVJ7v_C$iUbKh8L+#rD~7)iwIy3XTl8|NsEQR*EA=H%Y9;XSJ->5lNl z)MS3z<+ zIJ>yw=Y(wOOIOM#atWiKvGr_~p}Kc^4qO%M@I2DGf?9+vWB(#gnhKO-u}MJfR@0MN z9YQIX`-Der@MYvIhGT8AR$eSPT+sdxqR8M7+eN_AJrDym>Rz~`oq$k-cL5id2GznEz+VAhJu8dX6w;dSj z$~YlP=gT!&0fZy{#9Q>$5s|H{@yWHSDvKaO{{AU@+<2*-$Z~E%k3XH8g+mHV@~RFT zQkC@fgO0BsXxv^pnm4gJT%~I{Hdgzzkk^TRhqYqA(dhGPT=y@=>fVydiHT$#^-E{t zlRns1f}v5U&5^3;wQW9${XHZ_ciF~(QTKJ>j{bgQ6QP+4ZX441&N!Oy$d8#$oJ?&{w{WekoP+s{1|zB$%KO;e+74Ia*;-o~hf zNXEt4_UUxt(fA;|-iRQl`NuX;+t(vbfnj^pH_U z#g1IW252Hk#}|9#Eh0t+yJHZWnR&estWjCHsElRoG!}+nl9*qz$}1u8 zbAT4E(hk^l$eUy|w6#4Q#~@$hwH=q+gsFrIWWuj>XUIOch;e!OpqYp~b?Fop?R}<2 zGH>xrwE6Z=>NZWCufkZ^FBz2J8lu_GFn*3z&vIjkVdt}O*0&V^`VHsv6Zh}$e0y1z zE7L@rW|vp*bTYu?LRD$3Cyenp+$nA}r9l)%ns$yi;*0 zb`Xclgsd38@rp_mT%?gk;6j;)@T8Q^i8bXdhVynKYMrwOYIJ*EMMl+!ar-O)(wba=lkndt# z0TvLY+uI#)W#~khWNWgmrD0eU4nTy z+TTdT6M`jr=P(j{`D80FA#CCWM!>pc|Y^8a>&Ak#i8{SZ=n9YNk zYm@exc+zhhKGTe@K=au{dX8Nu`92D)j za>1Vt-(e0z*`=i>B<4{LXQ#>dqPXwmWMS$NDYR3>FmHjcRblFe}Qc;3s2Yr$yxapYv}s$8e?Gcf(idj>hCnrQ_0oGce-t>>UF;?qMqP z8+u0QkY<@-ydHk!`?kSrJA^vs7A{M&4W>5}D)+8jqs2L0{4h2?>^PUQf7F0UYH-uw z2Sv37eghvW%*iZm9ODuV6HQOHR)jXnjh2^pgK}uA8Ge(yAT?&$&i4VdR;T+&g;=S@ z7P&{y*0ne$(s8P2ftrv4#ycNX^GX5`s{Eo@FAi+?Y_B3I0$3KBW(4{iXe@R``p+Y0 z_Eoi?FE(w3%ua3FV~xv&9JZA8PnLIrb~wo%sU(mWVOL|>YPOB%H}`z-bL}E)&P*mS zlkQH6Jv!6MBlD=KluzdQxuEKzET_)a=ptWG94SINpjhhVIv!00K<<8jRUuczqN!qv zO}$My8b4FoI!iq;KmCQFFPX7ag?*Ty&IP>wj+bNA`tEIOJeg?kbbY?I%IvEuE?0SI zmX8d6#OT+ceOtv&R@mS-Kad^Xpv6z;+=4Grc3R(AlShpmH@P`H_c__2J>f^I@xvq% z8?v@{S}>IiSD&Euvyhcroo=(p&wCt(BGS`k?Tld9?zv8>1jAGIZ)**A->?-$_b%F- zJ;pss-7ZcKpYL45uTWAIy75tSw4~UYCq0|Wv#1C634B#jT(RLl5dp&IgpUMN6=*|N z-`5gxe5BY-`xUpokG8%;ygtihA+iq0#Hcw4;fz|c_ejA>T~$#n#Y9J+Cv{~*H#L9w zb)M-52+PJ5KC^x4_dT13c7hF7=lE^aD(CSlZ@bUob4$ilOGeQ8wx6nT=FCOc!TQ;A zQ2{vb@Bt-j4CBezulSm_feD5BwTN%GSwBx0q>MCRIa^X8)a=?2N{c;F(x=Q30x3~o z3AQ(K2lXM@wyFuZx0qFyWM+ho5azP$;7?tD+bgjG9*X6uc;>E8{dxn zUbyNQvaPxz9U$FyE3uQ7pb#$fY)p>)uXza&^MgWw{-?sRzW$G@qLd-`2om+;|Eonj zQ0%{|3qJ8*Ih^Y8U-R1kOQCSShW+nP7(%|+lA-@ErNb{u^1tfOmtlFJTjXp1yBl9? z|MS@|4hOpfhk%vT(?ecluSk)02AMNQI zb+!b~ZW_OE^bHL?Pu}Nqc1w?0(mwe}iZ#*Y$(bUc(eO3!F_JI>;D?>GuowC81p$|) z^HqaRAA0OONBl9?xyN}jOYUH|QpPrIB6MWV@MR~9P z!`xfPMb)+czs9YiFbFCFLw7erhcGnKB?w5z07G}Fz|ftN4n3rFgVNndgLHREpRL~a z^E~JK$N8P#>wM4m^_zbL+wC%ZA-%L50#D8M@HzU`rY@4 zbVJmKU%Qng2=g_CLGIqMiT~9r-$7KR#E{In`$~N_=(GgiN5d4|5TP+HmlIoB8arN> z?sc&P{6=xPsKZ0ZeMX9<-$SPs_H0tT~PnmK}y$D z^AwjPKbn6fRm*hi77pT2JPUt^Xg$VE)0lydOzo1eLCXG~2mLpUyL4)CexeB1mzYQ5 zoA@&Fmw+dDzPR{SEalD}XF^~gu)@~4bIBg&BBe_oL&`TljLv%;k49XE+CDzSbTo#G zf+iExBWLAH=Z(jV)gto(%I6?y^m7=`*~T_6)cqGr4Z0!n**0eG>@y+YMNl>;gwDNC zH9u%noRar0nOZsiOVK<5bU%zEM#A;rQH~b_53~INR0g=P06cxeEw+$P#$kZG-t9po99j6v^xcjFMF3A?Ooy2p?_@QX)1D4nagg;!-^Z&+_=LTlC&3y=zYbuJ~8@~9%k z#B}d8*~ekkg$VO-3SH{B1vD40u6>OBrcd}!RvVQ8l5g@xEK8)HJ?*AD?3^y#sOunXycBJm|s zY4fu48qFH|L9)OAVEe-`B99%Ro(!x8+`5Sbc2mwxek-F91SAPLi1o%#S%_>Q?oly) z{FF_3>s2D~1JTh@jY*#An`LSSzqr~+ySp4{>B>}+-J0=@O|pK_wo1Z8l5by@!XZq7$!!pHIs z+yFcxy(zW5qK{AR=@1)*pvD5P{YBK4i~Lbpw9IZ*=d+0`myZ;&hgk%0(7cp(o$eZz zEm?f};M}3MDR2CGWZ*u73V8t7IvVEu?jFiNBMTwM@fW!=6^hIt8pi)Vns=1oRnr|a za{MPALJdu|)29l;ZPXDz#6zoW%j-1W|9o$TA{)X;4Nx_I`2-))Lmqejdo*>&xOWpZ z-E4ZkyR;{2dUR*v!N1zQeU964WLm#$+qTx$n7D>}YE(9ltYL@9fX-c?HT$1O@yQO) zMBw(se`c^4`#c+#(WMVc34i>0x167@CTMc1UJ6p_W8RtY0-8+Li(x0HVXVaffw=e43=>gVEm1ZuL09%^o=$6~?fWOMI1hh5N!X=;@lhSKDC!h5emZ z)WF%VGPTJGl%YWfIyk!w29i^<^!6(6xDoVr>iN3cUwrOQx#`Q^@vVl5vfEaD04cV2 zvc2sZ^Rhm>;srK}fb+l3D3T|I#@q)Mdf zV3|@DVmUQEQxFcfdf4KB#JloUIAwRh@Z-X+b@y zL|UebHED+>dlN6aqnyZGh@fzMN^oLlt1aU^|EUF|ex8TBy}*3GZQDOK1C+2<(0$*- zdT&KDv$gJT6sNW&Dz5%gw|?H}li=^SWoh;KhQpj4K)7020N}o`uMlqXea+<{i|=qt z`h4CrMWa?nz|-Nj6&TIXKRKo^dV`rEB0Lob3|jG*r-8}|;$pvXn8 zT+%2)>oO5S^~nS8ymD_F&t0>Ey?*|_;m|O zFbW}_OnvmMZ;F*)x)q^%;9nRt6~LgxhqZ+A^GtYEkE#}Z%)Eqk{6OQRONaO zxy-pHyx#CS0aEjKgj#My_s&pfhjDJ15!BHOWZ!1ZV>&&ECDeVUIf;KE8~|VMdAOB~ z*HkB9hw&rqqC!3ko(Q_MTIwsU4OZrAmDK1XTYAbK8)S!_#~5RrW#^9hooZ{Z>Tt8T z-_?7xQLTR7`2mqmY))GZ?0dsL z2SXhG@@9rG*fmHk>98yl>a<^`n-xpd&VR-SjTfi;PbDLg(4zCf7l%*tdys3*0V}W`JV1m^x#*ZR9~x`=<$*Y^;1)gDdRFn)$3_asEN&2Ds_Z&v z*Tw%jx-xvI`nc43q(aWBW%O9EJG;;dx3?*&@zdD0n@(^MqdaJ=fu{(yh~TvM=j$n4 z&Sb60Hr1osqkew5T+lC(R%7e7RW>R+sx}K!VM0$SOYu`QMl#xNm*+uT z%Xc&gAdbu;3Owh3uAv6%{!e>O!gb*QJRU)S8oq$yZ}TjWe5% zX1)8?;$3DEdg8?y>L%Qa_awA*+gQH}x>vLyIkPJPKOb*tCm24yb=Y}eq8^K{KxNd) zuN=w9QHqvJR-&oDNkuTg`|=y^3a?fFb+^g!;Jpv+;PTAoWv?AClPCBoj?h(>OYsi# zSv;)^2rO5X@997{M~N{kcVX7A0FftEqn^nr8#HyRWiDGX(vy4`f%DEZXHzv?(AtsGiCe*yj4uPhmWNRMTTU}Qv7_Di5P`O#B1{7{BCJEv-Tz!qWM&9%~zjX3;xu)9r zL0AXvk6&>%ykLABI%2GU#uumGc^b1BFI7-kLI~Wqfp8Z-=BkhFhUtCbU1H~4ZocvUQ z<=$oy-NOxuInr3SF%gR}^>E14{(3Uhr*3mRZH-wQmhMgqlzZEW84TztvBKD}hwgG) zs6$P(v3Lzd^T~um3||dM=Gx^lQs^?k9IBY)clX5e$jFTt_@H~GVD25G(Foj=7i`>O z56*M*$=uSTeU+fc6b0~l#W*7Y9IuVnk@hbS0eOU?UFJd_Rbr%MI(SoZ*w-zv{Rr0S zLzo!sJQZ>o+si8biGY0yo}=k3!LvhJ>xd$2$;^F+SVhFeVqWZC!%<{zwh;x0?J>b? zx3u?Qw_T6V2rVadP@wX9_+41;#pUFKd_)0RyszNO)y((Lh&M}yPD%l9aq*K0f;6B$ zYluStz9pH7v=$P;j=;|F0KpheZq68hi*h}6Pc@@}nXS)60i7 z?mh2+4tpvOay876cP3X}5@X^k!X5`zc$3uMG^#*XkwLn&OnU%#NhL@G|1yhe$)Y1( zTo^`x>95-lJS9MrhNRD@ROGpY?EH7otXGSF+PsvDkjr`gx;a#eo5E6+C)qvsJG-Sl zi})KyG#&Ktuc>xo>bs?=Pt#x8>$3uSZ0K^4Zh8U*i26>6aI%+tYM60jiw;toTk>%1b)hq+{1I^rHb)GuXG3<*D{D7rM3QOLnWcJbdY*&Q`4 zOZr6-LxDHih}0^hF3uKKYJCJy#8R}3e3ZdRV2S*%cP|{KkZzN^8k`w4tfQ+c(g`^o zx(Uf69jub@Nmdv47o)qw!0y^15ji0MkL7NgW@Hx@L}*;qZ-GGf6O(jc-|sGrcKlj~ z7KOZsXn=R}iRI*R>jup4^&8wTE>ZbSiNen}$1t5K{6eaVPY3LXp1iHYKDy34y;O_; zR#jZP#C6J-A_j>u^!UPfbW&h@pI=_;{aALuR%@Z}%y*lUO>1_n^f}v3Ym}*k)^oeH zta`zCm=p=zDrODy%bA)kj_OM}Yuy)H-kI1^N2=Rtx{k(yuufsJ`%E!Fye!UCYZqTv zdA3u*{;9ORGnZaZX^w0`tegV^p4wjXWB_!Y)D-x|q%+d)bQcys#^qxb2BdvAM?Oa^ zJCH8b&BPppBp#6(w9NQ%5U}dfGmx$j;x2@&m4DKy?GK&j59!bZ*-}lzl1me=-4tc=CFqlqN+n}SFhc9HL8Cw!{X?G~Z}II9U`vo+=)n4&+l6A@cf{T?_!Dq9@Ux)k~L{ zSI?uq(Ea=Sf4eAm{@>xn|EhoZUpg`W9|$KAU@iv-TLZ4g*SPdQo$(jM!Tt2d`P^LF zrK8Tl!syFJfx6JE^J$-kweb1Eaccixrl=~q+JH^lB~AXwga?<0m%(81VO_8q;t>n^ zUQ%Feh4j+5IOJ}5&is@2LwbTofBPU534eV({THJ~=0#gp`NV#n*b*L+5zAy;@9H>q zhyg!iB!q&-JT*>I>nrOMovbCV3DuoHve0g}r>Oe5`ummwB~k{Ik8IPj!^7*KPv_=Z zvp1h*&k<|W&xP2)wev6lqBh1<;Hi2Y$gM1e(-~ni)$*BxbJo%$HcPcz4Q^Op0gp+!);_3{KH{09nN$e>_D?9shvuF23Y>NF-qPpkF>Ukbt@+_1o3s(Eh zG;n|?Er=T`Didprj6l}=xs(54tynJ(=_%d(+ZneG>9s1u2}!1+;`U;W^QZ zJmWBTmnUub*%lr;>(qfVvFQk342tf&fz%a%AL<8eX^d_n6>=`iCbw@k)_jxiR73v; zaD)Uz6a+jq*F2NSr>Rd_vR8KAb7uJ#jJUpKP>RQL3(H!0)pBNib(5gFAyV&L6q zjgVH&djZ@CMK}3qL`=7hg&b!}4tF4d#IL(pE%DGR_k(9@`^16Suk@c6;zrv8heIfh z@RVMX{k{YCH~sV4zoe$vf6yJf8N4%?!Q?_1nc(UO5tDa9)At%yti&RuRd>y3l?c3i z8O5b?S8qWcx8mjJa1LAl!9w>8;pM(cOH7NCss=FC-XJYc()&+kb|>*hk}t9R_JVk^7~Ug@rqFzIQEB{3 z&qjh0p1(-^%{~o&u}?Pqytfll0!v;2whp3s^%&#+EHDE`qpU$?Zsq>QEWgR4a#d8M z-D||=OL^l-$R#tmqL#Azts6PHcMhBivdo;z zMqmu=p{>)aXcP6R6Y8#Jz0`9q&C-n%dHUYp=|1&%*>qF~pY=yDcr@d!0$Qz&<`L#l zE|>*ipXg@JV@=2F=D$eh2b(-GV3a|PmFj4H6^d(89$dRobhwbIu|hxev<%M^>a^YH ze#C`D`Q4=}S5<|2y>M2o#70E{V^aSMqrs$7-ufAVdHv%8tS?E>cJkho&j)Z9TTX>-gNHh8JIfb?tX+WmnynFu;V8Mm^r_96bH>l?V#D5z2|GY8zKWRDqA1}5v)IJFNy*`rpB&8{= z3FZi2%U>Z>p(L2M$7Uv;VYu(|D4J4ZZau%dW=*$^NS=AuLvE*Y+}sWVuNtqCwTFx= z9uyL8bI=4v(@6f(B?w)+%y?RlI*Y}C>v|}zcgg4NL_m=tIx84sr1M_SBgvk#8Ai_t zLO4f#>)IlJ@@*zjFgmT3=P5%n*Th}Hz?^RA!B$11r@0nayPlkzpEo1&WeKocx8)6*24(0mSx=X0p0Aw& z9VTUu3yQHPZ}^eC2$ozG_8F1OGecP)?1^Ujz0Cl=39iowGbecvRbP~9UpW)3I~BoU z=l*kP(^TG@;w|XpeoZ6QC!&Wi?GjaJu>Yf@y*ci8uRuG*zlZhW&+8l&m>Vq=l)~sG z08fKM711!sv_O%cfM}j}7qZxm;}DN__|NRAfTx(|6QbsR@-)w) zoDt_3@h8&RA*Mau2#$=aoBdMM#{$z zy@7ng%g2OMyD5kmW)Fswzb=BU_Xrm-`=8Dz;)umVxK;c8&fO(PVe6~YXOHr|dssdr zoSy!Eu}tF0`UkMq2m?Yi*W5#l%FpZRraIyP3f=U^!bAZo(~yJL^aF31UH#36Pualn zx~EpPl_;x(#74=<@`|00=guSCWr;e)7DKUsCaxB@1EMw)VX~`eS`(Z6f_nV8x1sa` zKC!Rgo}E8vWRR9THo4BhEpP1^=N4F-SErw6jI^&T!vY{LRalC81$B7kH7p~$pUP~d z#!x>E>AA<`LopzRaH>&56joH89(Q+laAdqwSDB||a1V)Y;+u+pd;R&c`26ZwID!3n zshKgZ``*c{R8KzM!)nuFC!U!0Q7)l3FAeKGhj!d_h;?NIs+?ok_sFJjNT2jOGy4l%U<@vMPV~Rd@74 zOC5_xlDakV!|uZ??nylEF=krP2cm#DtmrK%T&iF60*=l8x-J@j)bnFfO(tU9gsM?@ zj!X-I<~V9Q1<&JwylD8AIJ9N+ak?p?$Bz)1DabuKY@R;hN>066uLjMpJgt*y{`d5! z^I6fYeJ)l5C_Ewg9cjwYYnC0XYQ4<1lR%tGm4 zQf4{6653%_hEiz+c1@aPVD_bto%qkSfXZWp_uYgY_hjQ z_-^rI)#fxAi2B@|fEqITPDvfm(DM|^5O6w)zT=V~0P|7%vZg`FWf2-s2SgMFNP}r8 zL;z5j2}eNqx-3kEkI zj&lKoGG;6y@8JHZqIOm=ZJtbHB{rhyIFhE~IKuP=X`oTY%-pQ;^;ngaqBx!=ZG08;B!W_eCB zTbqYRniBLBuhaK5COR~HMxVbq>6}3*S^T-t$i`pMHWb5sXaqQzYs7gK7}GPd*y=>0 znvfbTm@{_bc^iTPhh#kcu(`mSW1Ts1N`J;eT*x3h@viPqq$>0f)AIN zR?uF<$(~)K{WYf8l*bTy7uM;fflX39cB8!cgu3xm>JY~jMq8f!dI(sQx?J32UnT{) z4B|a~8IN3J(q!*r4UtaJU%RduEI>PXfs%Bn`P+~ z|GkntG&V~1=wxlF_}kRclhrbbZx4Ie&j9qUk&d%>qG4XS!G9q-n)5vAQk}`t*`dUrPQF zdt;9r{y;A8Q*y3e9iFng0AIbQ+;5BB?;@WxnYA_Zvtelhkn(m%TS$1*B89uo?NOSM zzoehj{9$MAWI1xpHS-bp5aXU_b!NF0^X_f*6<8A(aYq+V%FCI|dqe%6e({5O9E?=Y{6mnLlZkQYt#`YF}6W|8syf?_aH z7;VQ-CWJ@fzU4Z;nL$fAaaJHV!!nnH+{`qVi06MHe07L_cI$sdSN)2F`o|gg6`lrs zeg!H0@5>ASJFWNxN|OFxF*;#ZZP|arnvdYWcl{SVmmk#s+4Zjrk!{+cOwC1u>(bwjv5|WTO&+kz5+2!-3qM_Q6b|3hMPC~7x*7% zMVi=@&*Jo)f6VMvad#Y@cb(u-Tm9{{kONlfHEn5Nf$xCs^~UaWiaK-!_2cqNJn42mT{YG}PbG>ymu^OUn3U_v~-|U%}(IA%7n1V-(q5rGsP;d|s%C zWS_qX;lQ7qF!aSZN_G& z1ZU_g_7`$y)ZI^cCYNtXMU|E3KC3WCE!6J;P_M^yV_4{0^ZZkQ{*nn_X7>z`l-#Ue zVfH>n0ef{Y+DKK%aikSsmb~ae&qHoDJ+XhZ0ShQ*9F2h6Dnc{9xI$j+j$$t@SZF{~ z{ZcXlzC=h>)Mjmw54(-$_bA;?u(VxM@BSz0<4#Ao_(;piRcfm1sN;94n2Ph9AgIBi9Qkkt-b|lAX>`WYWr@E2#93bX||5euxB33k<*@0a)<+vukQzV z?Ih}{x?keVY4AJs9{|ge+3J2<>XDKa*r24rcU<(-5auXao;%kz%aZABU&*_vW+8`f z)!kO!#dY7~4ou2@)H)tn&yPESy^o#4Tw`@^&2@P4bxr8gXU~dCPpC9zvPqeaFIcl( zif_4?ozHk;a&q1ELWOIadmoMLTo-wLU)$&fe_1(Bm~d0iiPm-`OxB&g2;z7(BmhPx0jjwm@H6%h+I%7Rxoch|M#ooy zTc_X=f%@fZsBT65HxN+o0>4NasoLe%cUI+C=m(9vTWOlAjvy;i$Q}EI90p9vu16FO z@a4dNV~1=+veRI*>oC*o=xJoY0qwL8{z!L<#$I}L=rENzX~BiZZR`1`*|Zo_Z;9QA z>e}9d&$C)- znY){Lo6IQAVV4`>*EWof&eAZov!=RQoMM7S$$^Bg1e4}<`DA2q;bsGkGvzF^M4MVw zMT3pUl!~m?5yQKjt_5ziKb1$Zto0>8Lys#?SC0o6+%_iMh{vMeh}(%IeFQJk-?1-c zzoj+B%Z}hOcsf=qg>%V*$&|j)phkd`fGd@oZ4K_C6Jv_h%FI{RUR5RK+{2IpUI?YQD@unhQ88$IF^-8v1|(j^ z3_ly;$@-C3gHx&wi3yBBzfB_9S5T7}Rknc9qV6m2@v$ifMLjXdHG60F7-mMLWu^-K zCKxlO_)M1WwU8ZkTGG402xEJJitZQM<{c|!MUrJmq&@cUk*11G?TVri& z5>8gBME7I-+PBpa7&$)J5UZ`1stKbw!OCVU1a$FiK1j+~LFF(V#AjmQCZIoSkR6CW zcY!w!qD#@2gczj~Jc%5OFwqy|Qz-Xcfc?NAcsX|X{kaxsEbU+G48J$d4 z{t~|%duZ0jkESy-iugbjWar>F@=QhTx|ppg-um1w&0J|RYF9F2U}KWROge9pD@3e~=s{#6{kSZ2Cl#T2i(n83}lS_%nlbO$Jb zvh=%#F{gpd3{Lz$2xS#0r#ekVgnL^8%F6hdeX} zMoJl)36Y`wW^dsQSYv;(p0M9$6taozB7izEzdt17vEJ@v^tim zscs$*_C_C7tkp>x9U{Mv$*E88ktuBF3}s*lEny^CF{?oI{6HuQt58@??Q9t@SrhW* z_GV;Sa~mS#f*!9k+48iOMLzS{w6f_@rf(>?i*LeY)Yg;EKDuuY?@h@mW*q?@eD%-i ztE5!vtkz@(G!#N}0;^tTraXH>>R{1W8h>-95$7ey>MGUWRQDdUa_&bkJG&U@F1p;) z&Ev@WtgrG*xg-Nl+`;;TFQDvW1_WuA54powW@#=6&G~Y}vo!9!#7ribz@O?sOzE$6 zES~-8Prww_A|980vd!5r@|b)DlNc8g0~!uCli+$eduGugMIzUV_J+#_t|#enxfNS# zV0NB5>HBAHyaLI!Q^z?@QgrEw65h{$)f})wBf9>%y^osOtY%=Cg%CzF#jtArfiAak3N@-;-8qA-mrfz^($ur5Q6_d_yu~;ZW?L@ z_?wb`2kBq-&7M!Lj8)YXCIr_x53t<2B}_m0!vC*MR5*8Y^*BCW+?p{#n`snWBK#R2 zyp)jkH~m=l4gLI$n`33#Qc&7Ef%B8DGm_ol=N@k7ThTN-17kUlK?GebTYEW` zgW^xr6rqG?-nz+!uJ%d924jOeUAF?lL0-B#HzS1Sm-RP$11TDA)mIzmBf`YZx2Gtt z+Kc9!h8y0dg`TOGGk7N0SnuKKeiX?Tz?->0BV339Owkv`+2_Cr+f03kUn6*K=n3Ai#!!b|zk>)`_xvt&`WqAu~xO&}_m(`jyer^AAf3fQ4>Nb$oz1MZpHc}L46lVyeyVZy!)G7|VhPxQ!&VK5G?vL5+<0)_JG;+RflWd*{KbD*kI~(w z3sA=5zXBZy2tkYziDhaDGc67j@_mMd-j{(5Oi@qtJ8%df$30tBKt#SNELWZH!wZ8C z;E&)$Uuucnvx+B&s!;9>@--~M(#FOy1#i!R z%M4pJ>HfVZd<`gTbXS;?j?C_tcZh8o`=@i(OkZ_rT(hgO6n zS(O{lPvicwUO64x%@eV4{4oDx?tAX4FHJSLI5rEvDae9lqg@im-F;e)_;n8}ZXN$H z27i$7cp}bq?VBYOF1e(}N@MN>Ln$EpYe&>Mw?VBk7fgU?cSPe2)ux@x00<)D;IoR@ ztoh=w7oZNB^}bx0yqLdu8mtD@7NO$%r~%!9rSuI1hc6=Ec;gV0-;k?4fNCW zwa?TiBTcDWs%NNM3M)!ZUw4D$4J4WhvI{9K+&?BY2~EXMCl6k8dw72umviy(ndoLN z**%%$`hlZP+B55yI;B5QF&M^@dF-7bB7in>ssL>~ zi-3jqWg9NYek$s6tZ#kc!94{|vo61`>)8|_R3*(3y71{b-S90pBHoJtqRNm$qC4(v z5I%}U!Y{cnI+zpRpjUIdBbWOQ=0~+mM-s#oXj%}1;q3SOy?;;i!EyltrlDx@mxSVR zD%o5yDL*$Qir5*FiMLmPxTitl)SF)PgWgPfBo#K_`HV;@4`JXM`x%8KgC5t2Ls8)L z25b_DSbMJ@#wGMRWsh;&OZq}~?i;VIzcw?&PW!PYJ2OfL(Ix}$?}+@JwvTKv-(rFHFxw3OH@S$Me%yZ>p6!8IEQoibGhgE#W7j<3bXfA z$f(fIr_zng^1JTs3Vkps0<2O^x~8IKEEZ^t#j))ar`jhl{hS`tx?{wTQ}5;#Q88NA z0g%-Or_zQ%B$j=n8g#4jv_qnK8wG|rC0lrb-5 zaRgwX?!*iSY?WBuJFOwRhz}f7#KUdvPuPdif|l@xj+B^rHPo?+)i`VGnB@2NaPr8g zjq-U~mP;PSIa7T#+ad6>$D% zZpIi_L&g^Fl4?c+Guxg~Oh?2)xHCUtJ5z5oKPiUWSQx_LotmH;u&^j7HVe$dO-VxU zv4r@}Tnhn~aZ;jHfu0yCeo?0d916M=8v40h{cKlqTsl<|(BtX> zP$9VKU=#HjvB(zjV23V;;9Yf#(+6%@4UY)%=awVVAEh&~Hvkfjiz)fELQBGOw*oC6 zGs_|}Vp1inD~LIXFCApjr4f{gp%DazJpx3?w1Jkd@eIjomMt~kO8IAc?pkI6nFh`4 zvxq;?F^Mg{`%nPh)Nq`{Ln6|xak@Udo#v=0`g~9(nOKaMjj*%mCJY_#9u5iDFb_l} z;L7dm8RJvWDI0yp|GWNq6_ss-%xu- zEqQ^r&{>H0kR<$LyH273q}2;5COWACr*PeDc;V&pT{`u|`~LZe$EV!s0C!(7c+-ow zGe`DOE|Tk!z9FCZs+fNwPeW9jNF`{uzR_mww{>_o8aynlH`UZ*MQgbw(YzPkKChu; z+|(%3VYTSUCjsGX{b{MWu%_Ab&`C<_)o6C^R%-@Ow8Um-)0zt_eb$!N3KjmboNT*a zw&heCrtj%eu0%|vx5whDqo~8#<9+Dt!d28!oI})3fhdf4vlq)tFl@!cS%MZz| zLLepNlQf~bmZWhw3h`nLNk1{nQ@=HI4}h|gnot2I>ydT`yRh*-E}v<_=v?HW=re>E zU&M+Iyx&EnkBYTK-(jH_Gi1EGTZ(s)ywjzhtIT3^X1QUh6$2tk&oLTu6M+<_JGU>? z94cZktuJ>@-afOFPZGCl;^olVjLUKu8vK5<{5*d~^atx3<_+P91U{z@n)9vvXE(N?N$2S_k`}m!yUG3tyg7n*RL`M__ajd^t61SX>6l$2Tx!KYWKSLzp+_)%ZJ>@Rhe_t%mMw zl0iAW)E{Q=HSaqm8OQ}^TR3+Pg4ABUa>6W%xDQvyAR%xQ2)T->!9A*-_iXNXTl?E> zMH?LyBLo=wA-v{TuZil52YMkRP#Ywr>%5g(4cfixg&~7Q;eL@m8ZqSZm28g>zM`0f zbBkT+`K>&3PONv^>+BJW^~OI=!gJf)zVC5v_Pmcsb_FDb@Ag#LU?zjHu^}YZ}V87m7{HF_kUEvK_ z5&GlKZ)5YHR=)24<}fA=QBZ-(Dy)AlUx-*x)1JVQM9PDt3@`E3IF zC>GDFKX)sZL;y1qpP2v_t<%gA@Kzdkv0$y8qX>&|QZ(eo=_va2&Q?Yb97S*`*cR-L z=*dAvq<$3b`ci0ZE)LoxlglMcZ2np4)7^wV&Fwcek4Ae+HLUFTxUe`OMuv+bEhz@} z-cJV6!e~i#pPwg#Fp(14o)+#iz-mdc9va0osytQ>75pAAE;Dx1a82i&;FfpyB|QLq z*1fxYQl@vN%K+0GXOSJ5{i)d-cdVYFZzDc}yUx!#n<9zQ3H( z5#LYB&Smo;>+e1u++7(oYA=J)QhT6K(xrlt3~w~bveBmX0+RD)La>;|NYP_4{52Em z!$0JzV#>uW$d4+DIm`#K@HS3w(a&bn*NLC2CYKM)zoZ&t1rD8MN?wfW;H?_o0MZ5i z({BN`xPB9DRPqoEU((sbeMN!p3*W2d%OmmrWDTfNU`eqF6DLu6oWK4<4w*7NGMoyI z(l2#ICxw?cEjg!(`?Ah0Evm+a-k$N_O;6*FYv}x+p@-@d&t+;+5RUAodtMYp+L*~V zJJS&RO^h0yekiq``GQ*DRI9-s&D5rk272^?F`JUB zNMqCzei?Ki^;ziBFqxqH>3eICl%aS47Hz4bP^QkID0NQx!eqFH=QNQ7KTwu?s-t1I zaoqDk7d2Bbbi+x6L=u+7dxjdILs`w+0d&sR_>OOC5nmgD2q6qQ!r;1Q*gdca%aHAVCnsU)ku)GIg!;CwO|3`Oc07>Tjvh}UIx-EoE zdTZeUp@R&{&`~K9kJsg_f-!Z=`@S``-zEn=+kYm5(=`NNgARy#RF#-r;AZyR>9Ych z1Z~8L43S ztSEEqKBJ45GY*Y;&hAh(cpKHh&+P@Ly$eGlB>nSxUd%@X@eyyR_N?o?=pI!(c!`yD zB(_pwbJX{|4Z3xleZbzz&aK-1wT3L6do9(BVOm^7(@bFcjUWrGy6#Rhxefoi4L+(qc}?#TUNa-U*n4!c(FFFJc&sZ^TdKzK?=m`Drt+lro=Po9fOEhY;F_cbR2JRODP z{90$GoIx7f2aHNf&0hAjSreZ2nz3K3R&HrotI646s>0(x)}s!c7wXb@YHI>rbGGLE z={vpDB9$`e@e8tb5q{FT9@=S|21t0lLzhE?4~l4>^GOHpyY3Mw$_0qxFvX!xxPf%@N zf?%;OQ?-S0v~TbinhoP1eE!JGnVAuM;da1z=>8wKlmWiSpN?NBNF>M`6E@X%B$s}8 z_ZCZNwW)f=>cWLN$nN3kl*<=u&dq5cbC4XAVnNOctNP%kZ9XO$WRTnPSqH~{8T^Mvmc!gqX*zUDFG z0_f-dz!TBUSL~?RB0Y5|a4!yh|}0e ztSl+YB5LknuV`!swYIXch8x2jNO@SK;SR=jHrAH<4#uP=`j+;_EE49Hz@Jzoe*Hm)fbEto#Gkvu9e7uSm;T zNRba%P2`KZUuXGJqEk+$^S*!R|Ulpc5Ma-5)vf1yL)hVC%C)2+u#=5HMj;lTsi~f>?mp-AvFCZ;^Bdh&LSi^0=c`iCr^Tzs>s=5C@E3|C9Xw%Tpz-Q@?v`gUvO`Sw_h(Fr4tU#JSH(m3A zHdm=G1iR^Lxvs}-3>#(6vgb3u&Nn10EIn_{CdY*jasH$FJ_oy12)LleMz$KY(go>4 zCre8yn%@j`ba27K3}7Y_AIpy)Ke*Z1IXRaX7Z;b8Rn&n@KYq|_#VrAWIbyxU(6CgH z1hIz>oG~#ma?78%NiZUhUAX_EgOwdT#kjXo5PiwQ^~Wm3bLO!^e(TBm+_Jf;(5JCh zRTWrL;qj-WLa(AE>9@M1Z>4U9Q|PaI)QrN|Jb*t~dLv$At(LIS;`Q~r%PWprbQuPk z%{HmPN{aeH3oQ<;3C~WcVh*i}3|bmj3G>4}G&ies#(0{b+ppmJG*@(x?6tJEP8>B6 z#K$8fES^IIOVF;_%gU;(s;X+{DYzqp)wxq#g4GE*mOzXo^kuou4+}=-@e>_!O;DUE zBO22AFrqcr(y3}-@D$sBj6QgKy`g_>EMl>ZYixeqYH!O5ZQX8X%MOJ|rXHEjEj?I( zKkYa}X=Fd5sHiA8S*<2LGjsd)kdWUyjI#D5Uo4s5HQP4c&pqQBb&KYWRy(s2ZX}zo zfG&U4?U_GnevqTJ_z!OnQU#d&gx#XrUrkcN6M6S`l{WA_t zXS-FQJO!-igCe1)!Hmpl-?X<^;EKTJ?z^_<3A)&Ebnwvo>TgJUee30f$Vm?Un&MH1h!|UIWa0KRNt4M!-%;>W>TzJi58 zn7mwHoK6`Fr8y^PiBYA{ZE}n28~%O?k&6!ck@sCIW1_Z4b8dB&=C?FyeAw`=BX<^J zC{zV_z{+xs1|3ecnWLj39R?IM*i?mP5fil((0slw>d-Gu43gQi0G#T``CYq5*&J}z zj$hEpB@aZj8c4napRbILJq|x9J`>X)cF1QyxhgXR^3~aViKh0JwssfXfxt0bY(m1g za#T2o$9f1VJ15RgCtYZPijN?kcSH9Xi3c)zOSTzgAX?UhBc2#96-AOX7224F+2?3O zO+X^f9hB&5HkBy4QFZAM2NyZY?mp-;d7y ze%>#Srp2_2;k&?q|NND$kxhifI4hA4^=my#{d$hyJNAHA@`zO2!{0tv=FYjV53NKU zppIFE<(2prM#0v<%+ij>#$=meby1T}@mI-uo1b~L@AgDF!XyGUNC=v0G|z=lEC-BI z=OU5(JO5CJvZ4k)9b&YBhc-x(q2%Jf`gU*F!Fu)v{h2@h=c^76pS<7u`hHEC;Sv&7 zS5}h8h%`d+J$BzIe%V35E`?3*UwQD7Xb=gATi(PtSK!;8u_awK6vtn_8wlAaIA7`_ zMRtQR0z6y-}I>&)|SU(fg(nzMFmpWvTb|Uh;oFna@n#3v-{wT%rXXuSjvhL&zT;to5d^4 z#r2cY<5pY_yQJULXQS%cE;F&*Z4zn2B3X0+a(H#yd9{pxji)w+U?fL#6O&jUy^11Z0M&2aAt3ao3OmL~dM2mMV#j1qEKUV5kx}@}{{G_iEcIp1 zKDy9B@dS+&qvUqIr;J_=f%c6YRcE3MsMG^JML>XfZX!(0pJOUgbi90M+tKcH zp5ee*gKjl|zm-7|`6rKtq?f`;QYpUDV%TcR81oThxmDA^F`r>NMu1Q$bWU&?evR@> zq!brx>7PxhC$C*JkAdk2K+B{rM^WeY&qamR z{nGmOLn)nlo!ZjQ4kKK2+hO_ie)SxX`<1lt-<@lB0|b8X@I?jTMl=pY zWMXkNBm^%y+l4O%8Z(e(Fr6X+3(RFa@q*kxFssCJN?aCn!giC$-jcX|#D9_NjQy-# zV9-+YycQWSR7y`xJp`aj#Wt{H_h$*c>JVZ6=m=0~fFj5HovVkZYe=oQdR7=@2TLZ@ z5KJ;id~lU(l!jKkcSpc{U634Hgxy!XXUf9%eNj}hu3Tyt%CZz|WofyO7B>(2&CcP& zLg~2P!?-rkxP88V|GH7DQiCRiks$zq$g-E?Z+}k@(Jhih>M8_%-S1S*P()H>^icGt zfu&@fV%GDxB5?+vyIxqr+NlU`@@r9f_izPRlh~BKZBhD$zn0P{#knrl3!t!M?g@Hg zX?*dUC>KV_9ib~erNN`j@d5rk4xa?be^KKQzUuRUd>0{WRw*DgBSTwvksV=7pqu02 zL41G1eASE5#kA94_TyRjL!|v;=lpt%;r;I0!=b)!)mgdkg8oaw_;!@M&%=hB=}}{y zn4fSkptX1BoPCF3pfEN*D_>(IKsJ_;%p9JWnT(iVLC)bXniC#7W=U`hiT*Pjc2KMm z!^7Td&QC5e9-?MU3pZqxt&`L(3d!unIFi2-zpz)6GQLr4o0Q`-_(Z{ob*Y+=u3>$$ z2z`2bQlQ!cwA-?;alyD)o4}r_xHyV3Q&yqR^eCO(giinjvDIJ zHA%Ode9;sVz*CJWuusxWhjb-i&o!j9sv>&eCzw-yBbI&UHBKd2QBVx=P~pauMes$- zQ>xZ?_dh~I65EI)h}`f9*BF_ow}zDtKZ$Saztq@I<`d0!sy zD$k--LnkMt$|cr2srSq1*=fJ5x1xlPW*Ug5*GB29L7#U4eLu}b^3?R~cIU&X9wKuS zmk`FJm>5}|Rwrl~i142?LQJ}IvH+J)IT-f&LPQvo#3}42f_%@Y1V)CQ5PZn8ff%Ft zG=Wa7&2V+ze_68tMB+wifuUi^QnX4D(mZj!;qtO}Cf*jx%83e8>uYPyoOpsn1|L)i z>^~_Ibr@hFaIdf#Qoa^^hFb*BLmqJ|a5o_SJ{Q;jxG>5hDmH^iIc!gzNOc8={6k$~ z>354`;#DZ?u`xG^#|(dEWKjq~X5z6igg|=#?;vyKKH$P?fD>)RP7aqDQWoPd|9MaX zc3UhLO2zG>b&qx?ie{~x>LH7gqfr29{VWE{*~Cl@^j5o`@@*gMv5ZRb}}W6eez zi55*1hrdbE=1kb39&oX+kpJA>-;bIw|IO_2ss(bArC?67JL)HJf51O*7mO^sLucDI zgq0Y{s;I@VIce=AWycZp=bIA^sm^3%ENBVZpJbKcFWVOw4U;uMaeE}pd5M6Nj=l4p zQA%uOS`XB7CT?!{29d43xyG{VOPb+spMh4bAD;WYBa5)4e$`m?rC89XRo}nNAPQ`> ztZ*=~vocSjN`^>qrZDOk6$eehk(lut{#EFN?klXJ#B1k%*B7d=W)g-hhgVDoF9^(EI)M ziB5iRldpy=5I<|f>FJLsiO2ID^)nTQjE5ps;%mH=P|0s4R|-ingJB99S|H9Sl_T0g zuCyjepS)*Rl#?=JG{B(L!fXs~AgM_dH2{hCUqz!mP@ahTAbLzGAlJIWpu(y*xFyQ- z?b|mxMq1#~ophmB zlzLiv6M>racF0NoGd9gY@s>eBYn^i9m>SQO&5r`k?oK8t8xwc0qP)C-;oYYW9~3G$z`2%A)|wc}AHLZ5>gf-EvD^RyIjri{D{j$^dG-{dt@Z2zdnf)tKa$`;31) z_K?4aFlwzuC=vf8ztGTSs+fLHx&71C4p>#s0UY`o$v`(?lkmD~j>2h19l>+hl0M!}fTW{&&{H;fU3f#h?0?EVdssne(OA8llJx4F z>s!Rh$w_?tEPQ+G<*B9Zz|t#4qpqQ) zVD5NQhv8$KvHR!sm9f!!g^Gb;kVX^d5E~-@U0%7XL4Ufr_}=X&b4l&!p4boSLF2cw796q z-vJILkUc}Tcs_nrh~{^MC`qA`Wuw-<6W3MR%flt=aIF>WPiO-(gQ*rldq(gN6?+8= zccNHndP_r0p!;K)IKYE)I^cFw?SE-u9+qX|p zfg-l&y7D}2p`j8z!ypg{oTukj$5P~4!ag$ezsbE^D)Hxx}f z%ctPfcl0IEi`S(OYiIjNet|=ps7rnxG3hnGJ5Nkz%9%vFbaOU>uTXd#=AX7AaCE-l zb#R{^;v<{-|FTt4Q2{&C>4}@?7yZo+k6Vl}d4UZodiqY+Q&4A}lM9U_*Yf*(&U?_7 zk-;}PVp6YxEj$Ax6eT?r6q$~)u=C%?1H86YxiNe+l0^Z*gacbtdlEdzjB--w29(_* z;lXo}fl1yZQbq3kJ4&QCpM-4^GjuXl_U^LD_j-T+Q_c7oIL-)uW9Q>TAnON#n%2%i zo}IqkgkI+;3J8C_a*2BQlfKB9R;)sB&|NPup*+QXcm#0wOOdSR5yXg>?cEj+ypq3i zVcX2XeXleu7DPy8@EPh>%y*-j8KKXLEIN1&7JB<~zhC%6+VxP8XD^knt)!TjPc#<1 z!8m3kOFU=3>2Kx(oV@qR$s=-TjXJ^31YB&q&yQX6H5Tw^kNMi!VQ!3et6yxrND=i# ztpy3@QY6X1L+kMn&B1=S0z8(_+}u1PJ-zGW{e^X!Cs&d6DU2i5;XBlm`{Nhtu>Z*y zg6OYR_=rI@yt{k`8khlZX!VNT0*bO0<-|$Q@3>33H4!oKkd)WYY$x?|8Kbg$Nk0(& zH5}2tYaR!4%p#IKTy9lYRb5;X#z~r%<7DY{z3zxzM&ok$16q7u*q0xVi*tNmuZIbJ zA0c$Is&(68mXQOzb6((zee9*CSRp=DGg`Nz8o#2onT1E&xDi16fsl@`KWGzQ|pfQ!mg_v9}{WjSi4>3k%9?!%5!*b(EP9%icdn?~U$4_qIC z{QE_a-=FE5s0G-jC=#jB;D1XOs?ZD?{YV+d$Hx8_0d9lYE98ras=W)ip zwcVED&zUij=dRAWh1NY{Rbkdp#kQ>`2j{J_jSsx&g>1vbX6t7hnatL{~r^c(#>xIFD%7b>p&C1p?> zDpFEk=+TEV$zKcQgCa*{W_FCr(0npmD}%l30+oszrf6iN3*P-;ZRRk6LryA6@+0o- zp{rp>jRw1lIaq%h(@Ws#aTtbXBbq2~@D6@^OMWM%e5BQ$RliIyVQ>6Tmq<)Fuc80( z@pCNWUob;T=Y3#c@BS2cx!#)iF1YuFCz~atwIZQ6r+;w_+%uLX`sx-z>_NDV0s8oPEK%e zakaIyxVgFg_1tgvM)M_Nscw@>;!w}1nZ|`TV9_!eY#nwDVe){SS`w+yOsKjf2$DQv zZFk2p(&f!)4Cxmi_*h?xc;GAfDw3%M6kl_;C8Vl{fBx=tQ8<^l{m~~HuI^uVk$kpx zmz;3D%ffZ5e13$)ro5##t>?pg3miKhM^Dt>%6W8NdEEDc5_nb8zBzBSw_DouoO!+4 z?w`YL?(Uksy8nH;<$XJeB=9OI6Kv%D&8iaOC4X=jJ_4P~u!S{CwG2n<;{!3TvFaxZ zdKNMP`vn=N%VOD+`i4ip>4ge{B&#`0*#}P_KuJjZUwJrAqC> z!a`t`E-f{6tJD72V!68fB4V5yZZ4_6#wR7niZs6t=m4}Nu$$HC@_xFV7J&6p&$~^? z*3onO^q;2mL1y>A{;EAfxZ5%XlzxnI5V&y;J`z_CZ3PSWIRRxgi45jy%Re&iHX8u< z@4y2>3I6}a3Xml!{`>d;Vh79+|IYbW68sOA@PB5C;5ugg?0sG0$+uQp!{gWN018#ZD&ZzvgO=2>2!fOZ1no0_7 z$ZLn#+6?7wJHmO|u(gE>LK z5S^C6VkRzhRQVRHKW_IgG}sz$B?x+Fal!tBZ>+k$0iX%enN+c_73t3T{*L!ApB%uf zeNqGS7KX>?pd(fI>_j7Nk@3t~9MGp3%1D!cS7x&TinWLM`es*tasqtf;OFK2ToiKp zt6Dw`vHLFGT718?28G4_Dxc%wd=M1tTCd@Js!Zxkz&j zong`$x&^%szFSQEfmWMrRqSbb_W9Iu4N<`P|9lp35A^@%He-Y$p#C4%ZF9W-R8ERM z!)*SU)n-a?ejn3fnin!!v!SPqivu1@y&LHhM~o=RtOZ)t*RG*5(okc!*KIE4zlcCb z^Qqh2hL=mc!~OWI>X36kg3Wic313^M!(z?hNzGxtu6m_C&(iBkE>Pb~{I8S;JUS@g zF|Y>KpI?*A8hn*1!*+(%d+evyQIj2~Rz5yHaE=Aex6JBW|B}-`a+gakcX~BgMNXbR z9J1!EEOuJnZ|;p5Yi8rZqSVy1w@S20q zr454&Cq|#WT*lXB6Um@O>NNhIz}C@(e{*qh$dPDI+KSx-4t5!2Jt-ADNC+#UB!{?% z4M!urE<@)v6IeS{7jmU>430)zOhs3*3{N5Zn<>olA-bpS@L)^!NJK<+D%$I`63&Yo zG)l|LLWldTRS7UP1!GH-7OV%?X!g{aVtrQHKdqvugn|q?+Sz!yJcdI#C-< z>)V?5n|0)MCPFmAX7Do6+ZA$m1PNdfl{7(4qg}AK`hEQ6bh_e3^Xeq@!w>J?jKqh{ zukLt}05g$|FD-c7TMnY4EPk<(s7KFaU!LUEuMx}22XymJ^Bcy8Hh1a&RB&Df8 zi;VK3UD9o*OnRv3(%my#2DdEMTp08^;P#-5Il2V~wrzeVS0$&M9vtF(j5*cDftQ=8 zwEyiZs3A(BERYdpl>ZvScX!i3`zeLe6ZmXmlvr*AsJx^Bzkp zK7r8!a6{I^qqVhFvl@8#Kazvg#kwPVf1CL)eAe|}`0Vb#@Y(7Az-J3(csOoUoK+42 z`*w#s1b!JKOVN!CeIbbS%bU>y=|#49Pl(3N_gMyT}dj@TG@qQcF&cUyb`=gQi*)Gfb)TP$8*(*5u zCjVPlu*M<6d3;H_@IpzS0tg2~ckVs;2#_=aFQ-e;F3Gs`_mv?|j2s*k3YEacI}sr# z-qgs*$j;6Vju650Js@6{jJF*pA)_A`VokG&Kh--%Udm-Yos8r z2SicrUl1a0)m^(!tMfnS{BoL07vmRejS|~cZ3vZ~9*l-@19sUSYI~h+Zt%3d!(x_K z`8GHC0B4<^uHJLJhd8RA)y`ksC@Y{D?GM&cP3!oU&LXO8hW#Cu?+A}Fe=Gu23`H<% z44noK5!w@J?OJ=4$xP`+*pHnw@ymgy*x)KlwM4~p=`ADur?GJp3AH^zv-8y`d)M?{ zSefpL&~81y59JX`dn5gMd30r2o46^0HISQRgCXH2`<}hQ+;FWCb1-m6_&*?4zg@FE z_+x7uFymru+;7!bRb356uJdQ%o*@Ez4Qe&u^){O=c$%#>(`}pAHdaMn1P8h`iMHYsK6bx<}S#7+N=L z2U&!U7}80rh^kRS(y>y|y{?RS-c&d5uTZ27mQFKVtL!P@V?k!sE4Hwee(~%d_5{)n zg5u|V3z`Tm@g=w);(Kq$_B!+{|ZDJSm>CARDPoX`!zc6!y^w6Fn_Y`5af8 zX6U&xx0y<78kDlj=|W<2T%W$?Z&ggN+?ZZBpqXciikqaRN2 zcrI<|U!x`T$GtR#TJ%Th*K_!|x<2ykwn$v>ZOOmX^;P2r?4D*5UOK)1D9|8&m_8Bx z15*?%fXj|5kj^7L`!1TSnt<(86kbdkdeW1swq|`$A-r2P>DSQV+G4;JXM;D!frQzN zh`ts|3lh1XitqJtxjHGZvU$q@Eqd)1>7~(^D;HG8@Xc9B$z+5r_jBun>jqb@U@~!x zkI=usYfqeoLv7czgu}t+;tZU=keGy5*hqw8>iVDoC!^=-oWa?pAuSEfd)Q4%_p2Bc z8ao?x*NdE@YT@+zD|KAszRn*GqV|xSz+)V9zM-s=(eGUMs{^ZzW{?-(=wwWXpR}A~ zEpV{eLw6d?19akp>)9z3AOuN|ysKdlU^~lt=FB-f7M&K<1E2T+IK@Gg^a$qvR)FkY>`FLj>nb=9iUxt4r!46AbqxSu+`p&X!#%4Te5uMT05Gw< z-42qn{EDj+nh*_@{Uli9%Vf``Q$rBJfmnze8rdY$xJw0aaq?TZQ_e9{sWokSsT;vn z#7~vQT7&=*@0wS1m4q5ZBx_ZFVp+ z1wRedIMK2bxw_oa*{irE2brRnz5<(`Zf~&tga6>y@g<))r4jP5vZ_QYDbLT$5JB{9 z%lk=Nz}gU2s%gtY;3bG{CO|ehTL!xK%Rf4F`PA8snbt@o)93vNM$*ZKAtRXiVdO*o z$Vqiu1E|#e9ZXC%U3qD=A&2O;#qGtcQ|k{Ri}nydU$tu!17f6>Ie`641^c~*%B&+j8j9q9(w_Xt(djD#*+5ev>2JCd!}Ht841&A}d} ze*U=&Po~0%8(@+^A=INb6D~|aRpU7mQ|{MgWDREIPGI%rwkEG{?5y2Ua`T7J(M@3h zqqKPUliAF#8&vNgum#`}II7gxnSqF>r%%0*KuUPr_+ zK5-hDaPQN}La`MVM*n^Gxof5YNd*dse1P32lQFAT+vz-&=>woDX#NI&K`ga3&lk62 zP*Af`jsv0KXf)@9Y}cg+);_XM%IIkmF#I0R%y>dr@@^x#r6QK{u15UOFrlC}nVQj?yH z)#LGKugfAT;s!g)=~M~S-y2rC2mhGw?Yt`;wX@_%*1+^dYB_7upz+!EQu)xI3&z3J zXLtn}I6UCh)^pi>jSaZ*#XKgCtBDs8CZ`nIB)bWs)D$Z$lBfhDXT*h-Ur-gxqc}lo zd}`m({a)TDqFXyVqb)haMdIepnXKY4=$U9a zpzY`OjUJ(T5!(IajxP>YPhnN>AC2sbk`GdK6@{QUgdT6;%FreR&n z_k=dYHuBLE$)v1Rq|eG3k$g&jK+|XHZD@uXS9b@Aj%ZO#9Y>fI&_LaI-%>A|Q692~ zC^}EdrJ%*GNr*FpC00=xq={!H!T2QE$tq z)G}?cwNuk7)MZhKeS432Cjg$5nTzARCiekcsFVZto{peZIIp6%xuE{wiypi|JC{fp zoTur2eXMVUIVU@&>sNqfMKXB`KMKN@3-i>nD*gjnJUnn>NFjuS{mDkg`1Xd8i|_lf z<$IX+vJnociFj{cfsZAVu0I-)tEY1$@grJoD`ov^J~8l^hKq-&MO8~AkQvE*^y|`J z66h+~#3N=ZV?bqdHa%d{vYvbJxbj=`mmQTTi)~g3qic=11u0ObjeysAoXxai??I3W z&u_lo!ZMz3mY;Kdg;k#IN%|>Kfoz9;F)s2%A8mIG^#$kUYE}Td6Z3gz8;LD9CiN1sj;)N zf`k{YR5Q>`4FKKcyG3Hhcc| zsx>}_Q9y9yZ-bj~%q8t%jYdVB0D32jirp!&|o3txV$S_Tw z)T9FT-U5@iBf40O^os*_zz9&5p8<2M) zB=wYws2pKJdV_IOOgEH@WkYQaAPWG;%Nqaqc!Zl6k()VSN&&u0O1)&39fvq7=~$#s zLG#kb^rnY^gkzys&WGt%TX(0b{o>M6<->*Dx!rkJ7tpI!FLV&ZeYrZsY0$$i^*R0< zg(gK1gN-iEU(HG(*(ujPzxHx2ki8YoD7U#AX7x`%mah$)mrS`JX+}XZU z$Me%}&o1Q_ISSArsG1MOKP(dVp^$}-*t0Cvt0XwILcUsEP^A<%)cF<~tGp=f%ahNt zxl}r%U|dRW;V&@Y>^*hQ_&n`e&YEknlKCuG9-RC+>^Q~!rpyc8nZf*n8)!*pwUr(PRNOKg06`Xl$(jly??FJjn- zF*>7Mj?7Qso?r#riraV@j;EIwEDQ`7w_bQ)bOitqk&tLnS(uqKFY<*hihmY2Ek~GO z+UX{Byj9+{(Wyl@5E9&Nc$TBO6`vMHw_m-M=9vCOsrb@5u4-v_+3m3C`qv1UM*DV5 z9yomK#X-^RouScc`I5J=un-awg2*V%R%$=v8p1He?IK~-!G6r}lYP5RZth!r3IG@w z0>{JSlSv7JA655cRR2b^N!(a)DgBleb>r)rneZo}hzE1bbKd?AeGw5Ih@e}F+vfT* z72|xrgE1J*`v5(~zJ-1n=V2`vo`=$tc``-MCE%0PVzIPcjhUJD;yCA3{l@B}I(8$&!3_@NS?lKqTOoKqC`zpsZ}-sj6>>T2CQN26!t`EVs5?ng$gZia``BQl>wGvf>`W0|iFMSVM&aPDRr^*cq9H~p_ zyA||Jdn!INFN-9oHfcOP~fK6@!hw zuYTfJ(DLc2S3&}gZAbsp?IFS@aoBnJkL%11_|`t^1HB2v=A zKddV@drC)KxKi0Ffkk%vk0G~Re$UgFSpGGx)AJU2v&#=B#W{{~B@70E_PufANVTHs z<)n7@s-t#YV6*!A#WRWTREDezhF&ba03VZv5qisuqcLSoBD}@o(68{3=EeQ)RvtwF9q29=89;WKpVeX4HuJV#*NnXlxlfUsU5v}d zCtw9rCJ@}xjc^+&!_`V#eb%))j2J(UoNk)tTjhEQqXqpcuc+&4Z`YQRjf{+}cBi7D zv9h;UuMpMJO7DNJ<0OB3%R9r#i*0R!CJsTY8V9`9aCHAp7J9KuYK!#VfSZHUA78j^ zr1!xFwxhD>7DqnIp@YZ|9|*=z`BGOppA~i^_|&Hl)k@zPN^Hk==@>`{bewEa`s`2{ zqzK59gqA|r_T3WzN)6L0#g0>`Uctt}e3;{~>FpBeu?ma)3EFHLIsz&{kLs#ZJrQ8% znf6<&DinHisP(D@+G5kjhHIYT?&#l3o{=24nGI+#E#gNS&<^h?gub#;;ZlMu*@OMj z&@=5$5l-mOJ=5rlGLkgQ1yabuDWBci;z`W*eNhY-Wq0cD*J*kA_tSpT%dYx|`_uwx z%<(yUx2B{e*Wtn@HxPKG`%v^jyQOKT(79wNWA`)l^sU<@m^p8GTknT**j9QAm~veW z;=L^0)_>bb!daPuwC&*E*Oeb%*Js>t&0gnulrfTmTg;nTUTr-8xw5)jn2+Q~-B#%y z3cG@Ulr!(>k*Aqz2U0@ye(;Rc3+Gy4`opO-2Rm`D;Bo_yr$oZU4^o<>w5o)j0;#To4M*PFOBik=eQ)if zb>~f>>iIkhpRv2^_V)v*^Xa-5sf(BWG(*`LqtLgJ#Q1u(0v-2uiB9U{;J%a5&&zZE z#cR{Y^3<=Z`;f3a!5IIdZ(H-gHmwT_{xsc7@c~WBVPL=TMfJgGb`s|ceKtpWD9`hy zI;N`nkj;_L+kG#``zFZsr|SCqYU7&M$N9(l+hxjy53jS$Mdo#?7*dz+J(JyTewH?& z{l?w+AN$M;5g^)PvYCZDhM(1>{1JLE^?|}^GDnjGM?7ND&ew~L_7wfK#^;~+JI-%8 zI=-*(t;3g@-mJF+8*JvMb}CEYl{M7we>yr|Loidu3*AF+52txHLeE-6O)5ubGM-lR zN`V1$5K7H>@1#m&#xWvOEK zBRvgFPrbJH!TzuWc&KTsm)B`X**+ApRN}uGN4T|nc(u&3d6sreKj}^QgmpFkoZ(r1 z=-<9ZL}WpZM=r~6FK({sxPI9?707ILH9vC%^!G=t!ls-Mm@Kv92OSm#zSzo`p2uoE z6Y7>E_k z#!BQ`<1*Y_j7`Uy5iGUsDClMNA8vjZ*k{oEs$zK=k@S@5H@ZH{liSYX}Di|fN8Yl<=C&! zFZXOmeyk13Cc4gIvn)g72lhu`__DUTh`ubb`S1!wMFAweQ z?aIo^Sr??=HhY1+7upQXW=oqwOGp`=ff_KyK)R1}ZNSPUcHcVj z4Xq{6?>?Q&uFZ%wb=rxI>{HrqUyt1-8~();I1*_epGMhp$KlB2Gsd4IHdSZd4p(EH zfrAe*zoW8g2>INsSu3A62Ulw=LS9Vqk+?$$%#z(I_;gYel)tM)w+q}pM9iL^j?b6% zdoA3gTC8S}FG)u6Aorg0ftjd&AeVL;=AB58pK8LRtMfAw`L%u#-CO_fJz2w;D0U7z z{j495&luKW#Y?N5YiJ~A(b>xRGOii!%^3~Bxk zoohtZ?J|6NyAYNsHvll(8%U@sQZbM%^uiEb26pXUziXOD_oZa3eK}qpBK?Ywm;$p$ky7OCD&ktMb z)$iAHlkaDl&r4fxu79^a+#jYHV><3mjs!MaAEskr&3xH;FHa@LQ{Fqwg6BKY&d_6I z`06{p&uAq90Jw*qyT&bMma|t=_j;HG&OX}7S^P&K2@0h7@K9H|w2ule?vgS%{o6ZwwyxA|7N zL1rp_fbNk_!c4=qyRoJ$P}ECTKN5ZCva>FO`A7e6$@B7ipI;o2^L2E}_PN!XyT2FM zhi{i6-Kv&~j}M2qGioVlle->qL@t7i6HE$81P^C0Lx3=#6Hspj%?zbSaRv^5@X zW;cYiBsuWX(qqAgyD@cokCI-8{F=qk+NsePckhY^u>tbTdom;dxz zA(^9@kw>HE#oN(X+c>4XzPMRJx1y!Y+15!}drL!VH%?0C!nQglYfvV_1XMRSVTZXH-w80^?&{cwyLhg`O6qc=E#V6LYLxT&{&vQEgr zz_WQg5$sQS!R23@XL45Gkl?WrSXaD#>H>Q`9}cZc!f{(2w-P~3@)BM5n(7!mOJ2Wy zzV=0OZ_p%_Jfn#`T>KYFbuXExLa4Mg{;`kaz*S}1M9dHNhpV!`9J?KPC+TUtI9jx0 zx)gM!#Fi?ndfuD8xZ*1(7(p1z*1)P#MlHptz?;sR8k05lNuHq4*Up{q*z&bnAEs^U z1XA{|ljc=!8AZAG(sJI~!f?71d2JIBOMU4@>tjPPzUo?*KDz4WTMqgklKO`Vm*G1h zs|>)u%RMu1y#cem&oMj^Zp-dwy3SsSx4IhHrb8iz7x5iiwj|V+>U9{j(dN~UxWYY4 zSX#W*9N$!%5w|)BKp7;Q#ozelz#25(~iJatH8AwMphXGUPDxY)aM%wDD?Gil7}T-xAs>27_|``B>Y zzXil5w8XgH#{%x6)f(1I!CNnTD=sd3aM*12zGjo(=8xTcTpBFb`JyF0)=~6he5-c> z^_Dui?^q7;^*VI=*3?>yA{cmGcD8|d%8}IZ+BA$c&ZJF;Pj(S1JM(Qj^Ru9grO_7} zwh*i&;M1OSs#yj-*eJJVi~PEqhuZf*IvdX(@2G~BdKXIPk@kSa%|Y5=XgZE6g{;@N zYH#J6h1ONNr>Zw?rr+!7$YsWB*RSO5^*i%4V;RrZ+!v}%(Nq^LuOLaOTS>=$2ch$g z*Yx%;T%GL<_i7C>gT?B$oSA-kf7KM)uME}k34*Akk{eRnZ`32@)nHd$!AAVk&CR;M z5*HIGbL;US4c(8c{-SX%GCa?Al$|+wa-utV&bO~})x4b!8&<1|>C7#_St}8;6D=4-Jv`%Y{$LvxmgOt6Nvz?0pO*hTl$mfnUv&P;L zJ&y{j|C8AV_eWNSk+L6U>sX8a?#(*}ZVg)qc{aVKI*+t<#SV3+3bY_NrS89OL|7B> zsbrmQQ`BUYbN-6iL|AG-1I|jix{8X#YhnJCp==6xLClIzU}~_LhlhuzrlzH(rK6*x zon2L(hM}RMo}QksuP?atoc9@t9gnR*AN6FRx0_4qIcc-;X~ooPoGX|#t+BcdvBh!z z^i}xOse5%X)uHr7!|pQM1vurb8(P=aEwK3AtL7;*sc7zGib1_*tzM{OES1r`>!ije zT5UVQRJtwNBAx?uyTqlJJ3s7*adw~~1iXk^O8Qe}{DdFsyozYDx#?GHD(^WzbsN2= zeA-;RgxzrCFj)0f=+(Z(9H|i7&CTthg@sxo=KzagUE7nceyC<|u?*Bmc_NSILc^WD z=F3#hw(S&o+sT`gBj3>(aogz2o7~RKe|S|`rak#~e=gGOC9VUNA7S0a@@!%9TKlIq zv|FWdYr2%6^c?H$+T{2_;)Xf0oZ`BLH>)4CJ{lX9FQ0M>@EN>s@Zo|rmYLhlC=cYp z%nq1F_Vg!^PdB_ml!(C#kByBDAx&?XMqb?;D_9+R*HbaXVB=n&xuCi*uvHb#V( zl$9x+|J$ZO7EE_g=yC%9Xq?e$^RVDejaV~d^L#z$fwo*HX!Z?e?9=OJnxKW!L05_O~o@*2DH6D|FBnbpO`(Z~;$3WA@!HMlCjcyG*UEl-JWj zCW}uvvMaRx{s7KvY3k8L;(h9Q)}J2dgXW@idyz9V%x04JGFHf=Lk4MZxns=O&Uw{8 z`j1y-DXrNvOSIh1)D(C;5x?Yd%b6!v@x;B^3U9_FC3Kc@pv==IFsK*qEfioZ6zf|~ zbZjQ6`@T3yS+6cGeH{cZ^J;5&bN5x$lr@PU6cP@LGHz?*=2=ZYO^O|{5h(jYUvoH> zwN`DuRH2#U`)o-jjnx>0+*WXQz=w&`lwGx!xpRTi&7;-|vKTz+=TIl0<9H}n)3x3! z;m-36-7Aw?E9|Mqn5LQJIZKPM5U=a^UTSHObxO38vMT^!YAv40TWfkXc-YRJw*e9)!#WcYMcs`nKNwb)CA6t}S{oZnQCIQqtS_qZmi9gC zs)88>$ldd z#Wl6fxTVZ>7ks!U^dWAG{>Q!OZ`7A)LBJPnzMlUWIk)T_Zx*Dc9^1= zp95cr(g@?vMNv4e_`3!Wd?&6|;E3)0r-Bb_+djJ$-+zl@p}l7JV{XA8Wff-4epzHP zk@Ud7kLJDB*48i>%v0_vUlTa45My>j#ZGXYgZcB5ct7pY(>2;Hrz!7=5!w^RZ@)9o zS@CfdfU5Y(SVHdlFo) zmV6u|xGZBR} z#s92M-bRcE?|A=@AK$j313FH_@{sY{5VV!6kNxn4u_*lTm8hEnFe4?{wO;0Pd5t@6 zP2EY9Wq^r=9^N4nsARePw$ez_M66`%1@wZyl6ZXzpTN7!i| zOD|bHKyc`_r>)5!A$!DS<^2)Wf9hC20T6#WAqk9u3k)eSiY#BQv>l23Tf=(nD2TMs zb7#c2_z|8`UW?@4=b3bIqaZ5P7S>zVb}*m$KC zQrN5^VK~YX>L1vcC^F6V&RL1$emi2@*%$}BH#XiW}nA3n=udd}}eLh&&W-)s9V4``0q z?VFr#qkhAU{e9o6Z&c=L@8ydJ?9=yn`LVa4Lc@msZ;zjwV4uwWQJ#!i+u?DBN%p|& z47gN%7J#lIOy2bwxv@8*-tJX<3Jj7@Ncdj}V`Z8u#;yUe7dUO`lP;VfLua#z-ddz5 zpCI|6Blqtz&D!jwT(FIX==jV75_VRAR>ngZOFZ&e^p$J`PP9G=ZiTnr;TL^d+b4jR zZa;OhUYmbPcVR_Wc5b@*Zay8=eKJ0VVr7yn15z1JFTu9&vn_&~K6J{;ER}2EVnVp! zOYhe8i7m@AMyTss=Z>DyWjR+TXl4BXZ#@YSAdapGy7C<)rpU&~7?yZQ%@kn0i#Vkf zyXTV_7B*xGbiVAfzctxHEk^UeU?NS*e3x^5Q)iF@2+b!uGl-5&in*)W$)+^dt-B46`1W@mj`**FV~k)l8^xWxMQE0!Gj2br=`z#n z6paKGn;0i$E|q!;GxtII^ua9ZsoCs%?HMk~Ba;vpy-jD!H2|Z{9yzj8;-+V#7x!$n$mpg6(!VA$IuHBepm#;}g((d5RJ9@vA)L~$n3rlg|G3J73dRO8XPext-7zDa?Hg2QT`6fw8Ff3 z7_ajAGzZAlCD^!i;T#&Kk;MOw6MW!vOwHv1wr^J{G#t!Jop(?|)Moujshu@^X)=QB z-a)PVRK?aj(|!FvOj_Yq1hME|(r<~K{%Fj#C&auc5J`VJ**9#MP?u8wRtmxB@I(Zn zKN58N*jb6s8r}a6Kj`#mkX(yzW7N4rE6(;p@472ysL5u%cMKcn%RG?@ z1?!Yb9h_NjS1^prS)7HTMMR&-YJ6(LG-|yp)ywGyuUkQ*Q(TrS|7ip=&Ut~ZP}>a- zvPJGBAMD_^ty_K8xyvPVN!91Ot4?Z$CTZ>-v(r~n8-sQ0qj$&qf@&|BF3+!5%UQgy zd)wOYm<~q8hEqV|&%Q(2E*IKbU7~I~cScJVL+Oi~6YUT?Be;$%SRpMgW3)~I%RG-> z$O~TT-J?6^wD=lBEmO-_KC(iE+U;cE!0)bx13Ws9#Dr`g$QUlgyR&N04FI_{rVD*q1f4DlCXJsiL0aY=CImv9 z@Z>eC7!k!{^VNpOn`I5`;IG%T<#4Z^!M8T4bQ&bK1u?fIOhz%tk?s7UAz^wbh+wJ1 zQWYLsa}E#^fRm5P-eTs0wpqgPXqw7tb)0ePQKb7Q4!(8vNqVg)kW&3>+`OWo@Q@FZ|z?h=^|pRUSe$nbKn{=n|>2|UzwoK2pe3H z`V?#L?w5K*gxBAwy^c=He?GBI3JAf0dn7ng9|3@sZ(xQlj>4sG@Xl8;7HMzs&x;+1 zudU{<<8$gRTsm*ksTZ`>QePZ`yEHhc*wA7SxTb7_20#riC$BD6%uh2WXf3Aw14~+M zrcz`fDD{f2qtE`?5?9AJK?Xn##%HTu=FSEj3|%vzup35S+UAN^&#C0!T0`Z?DqOFRpw3T{4#Td{ zy-(uqmr;YQyrt^EzPT&W>UJ%$>mB$u-A@rmLcfpD?(c1gsZrNjG2o*8SRcTzE6N?+ ztOs5P+@EDunOJcQ>eD)jPdAx-a$y_#I-5nIaj)g~t(r9AT`ZT=4p=g}#JFjeJo(L^ zk)Im~m$6#X<`nK*@Pnu|n$vmNzQTJz{k*=XwehAM5q&t&9BA6ov{ydKb)Q+`X4ofr z8%Jj1C+d!$4i+TxQS$$jQe!&ZrIVzOd6jJ{e5+^vP)uIuHqiaW4Qq^Tp);(cyB%TN z1s8-|*lTX=nhtWmdL!y|3EF+n+;#IaONb~zVpN^rO_CRLuIujBt=fZxJ6eD&;ImUC zbvm6+)5fZ4UpdPYlY$9lO1mlaUZL0P4!`pMT9ij(TX- zuVKGdk%I&CWu{Ye?=sJ(teyO?Zd)6}M2S-?>A6~V3p>w>m#Ej>XqF&t)|m!+o!YO( zw*=kdAoCjR_j54dL4-V*PxqM_u>Zi5y2Z)8sqAU9G85jg;5!bXD~CI0Ju5y;y6%CO zE+m51;t&l9oWM|4x4@E`C}{!ez^4!F{7SP9l$I-<-DsseAf5Z7N)FeL=Si8gx)Wd2 zXq_xs@LeUz<9FjjjAvg(#<2k40_yM{qzuq=qW-kC^ssb;2Y**=&n8tCr!}aY)szqo=TFC2O7UCzcwyxNn$hUUO9q)yu zPH_)zoB&@W^y_YG+JCo%IKTc$ z&vAK{*`SJDHl!Lu*R9pp6g?U&Rb6@r`(5g<5%Xz>%S;yq{LnY}OtOb=n20~%Y$8^E zI5{K!&tb_iO=^M0O zjW=WzL-xDCQ2O&koys9pJ1hH-Jnx%q8}@hdKPsj3Nvw zsHEXxH$g-q~k0_lw&#fDW+ z4J{vs%Wf(vJ$qXB_@Vl|m|$1THHYD*Fy1jlK=mc2E$Tg2>ejHFD&mf*sl|6(HdtP1 z?;b89+Tx4g7i(&Mg50eevXD+i;$(G?a5}XSjAt8iO)sYVa+xs5gW<~T{KHI4|6mWY z)GMUb=!!meL(d*+`lyZsxE%g2G~|?jfayGkfQRS!$nJUgMfu|w>>6nPW{O4e=E*+~ z418|>eS_Ze=$|LtsPKP&QRII8Gb2#G5&kFh|A$Eq-2%13VSnKP3M1j&?Vq${EGOlreU1&Z~#34WVN=92FNFuJ~SF^v&p5CeT*6F_aqzUcKOLbd1ZB)j~ zBbMEJ-CMSW4;Mpiv4~3TtYmtXiPFZzI!x9ks&WN<6`Y_9dCBdcM25M z?DvLly~LvzopIGr9Y6S7?omx>*v)oMbS3x8(PK??$7n@>M4fc9(iwwhu0+W|>Tivq zGmbZYPdoUUt3Qmf=XGM?jw-dCe0KkOy(x{x9B$n}k|~s68j_Y1&phMLCos@<%cKg; zd6bbtG3ccvvj@?Hwkbl6VHRT!IfOjC7xefe-?;ZK_Ca(=4rdNDx&(#mWUBkp`Y0qQ zCOGP%TyPB9GM$`WQOsl3OGK5@xdt8%D1RYgiT0SEg>V`-xDb z)5mmOJf9=_fc$!^uyoMzQ>1XkT=-E{EHodyS@~!LTOXVrKxqo?csmHdrtniJK=#l} zM)k3&spn%Lxy64a)^yp=Wd??Gy~ypkWh?V^UeOJt3{rn z4_$X=2%v@27mc56GP`K`UTa!mJ%>xH8Rx6l4UZ2-(Uh-fQ-iMiWUNN!>4~e?uM9L| zc@RWpnHD5FSA~<@d>;i&q;%Bg+5~V9ao<-UU?09fg^mDaX4LGk)_#y;^AqCHdpx6fArUc&YK#U`BlM5Mn`u&=)BLHiX$bdRZ&Ry=J0{#2xrH*Ky-U|?sA5Z}C8&v%C z7!H(`pbf8cO>ZJfn67o=2=40lqkFvFEc$@L(d~!G!O3Mm_m$zeHSZE^rk}Iyw0{U{ z41Wv%bMZF7N2&k2#+a<=WvlPj0G-j<;4n0EiF1!a5gV!fbk@3@&`%##y@8>;f4V8t;S9$?{+8=do0~23VXO zgeHAzNS&Dyg@fiqwT|_J6lQ1MX)X&@?=?StST_{rUW7wCVv9px{@QwOG#Gj%dk7V3 zGq%%#myEUet`m#s$T4dlckh{)K|5TF_-HvZsO;opsFLd6 zP&zg>;*;a!b(VCNRF*siqZOm$AMVcv*RKUT<~u9s$`CVK^?xEKY#*9ocy{)u zsO+~((JweqyB79bW93QpsRxBu;?7UtALQ}HrEm;@8dsRc7S2U`%MU3?tafI7j5bQk z-MXmj$06g>vrExl{agn`*C;j#$g^KDeZtJnMr+mfuGb^*SL|*SkF)SH=y!5X;n$iN zIt~-J!><}S1nSjBt??@(br^Z6HNGAUW>>c4Ie@Oy@-?O~6_SD%>2Nrszh@-=b>a8c zq5Tjvj7`&LrA<{!g(Z*VK@;B#E%H63H-2lFk>VSL{s(wax4q@>#W%r77vXBstP zpjXw2?9+gbz^mTX1kqZNsbB@R8j%WUT%*DpNjvavY5 z`hj(nWg6_YB4cPOKKQzUb)#e@mYWU@J8odOzDs7i4!$QDMKvzun~na#Zisuny(=95 za-)o~HtiFr;cM(wqhD>-U#3a#4k&`up`f5B`w76tDU@Q7-vbW3E&O3`(PwC|VLueY z6yS`-Q#))gebOpYz_TMi@|IbsUo&t84iwgT2B8SN06=YMM8WVswv{Cs*o=MlGtOV( zK+^cUC2ccIZf@>|9PLK)z@&B;tbU$0>V;jUHEB& z8>XNOM`HG%Cto{H>?~AoJrgKgq$pE1I=oJ}#uz#+g8T!M*ru3iV z)xAyWXNm21kT*0ieQ&HCch1YOyO9{p7e%@iw<9s<*(&$QVS#=12N-z|?Wl66Vzv3O z>S{R)TrLi1qP*kMwk<0*XR~(FtK)rowLvz^k)R3U_U2)TSk|yd*xOjOR~s!VOISD8 z_`c0l%r%+xb^hk->nk%LHVeqT(K8>`5U?G)U#2((iW)!+KHh-?XWLJecbGHCVB?z< z^Y_a>VuYdIzI&u0xj=W)cER#yb+BpwZTll)vl}pG?Rg1dJ2&zH!rZ+y<}Ue7#vJL< zOPdrNz9|=c=~4!V-z~F@#P51bLk+4JgX?u`VR>7{!0*Pt?^F3sGd^|hv5qN`BI5NI zPbVxe*BHLTN%of+MUfxfNVlZjmk7Y^Gsdc^0_%Eb+a;PM6GtE_3=JTWe`3`kNB z*RHc7j>hm^iOQw|1SelQ_3Q~FwjewNUN5zEA(>RnEU>8ZK?5f*3sQQAG6bh?kn=Yg z|3L{*T=icjgf1bOz%MJnsB;b7LzeP_f^^OU7ZJKYMz4JQemw_R^T=VN0C;RW1~7*I z9jAY=9eK<;cpS>XCZ!TcnQXy1=tal9M}3@2r_0uC`vk4 zlvZ2Bk_;f3od-XgeZM1F?>jgv1p3wSUx%387{KPz6FEB{4(;cd|1=rd>W71< z$8P0t`)ILe#WI)(1Mpu5bM1%+oYm8d@2K;CC^>h=4e23tH@_R_(ckP3=S0md^FUhp z^jlX$_M_wfG4&+BO2dWz%VX64Di$!Zo4(8Ec5H+!WMyyd(vjr9U&%Si|NWT%D;WPj zd)DW3J=Ax1zeajtij9r+9P~l@CR+*o&*|N?e4XfHd?tKF4kWSbNE7bZzvO%~eUU{T z#QeJmC|UDYv`6_>jXVBWBawkxNBnP^j|{dfx=l#`sNDZHAuN*6>CYH|Z)9%nRo&c| zP^SN!Zo+Jy0ARK!o1dQHYFSnGy!@|Ig4Ghlr^~Pt>3Qm~OE2PnWn~5F7=jZ`K{%)% zX-ARUagQYS-t`Wd8~Hu)@#>@;eD^N4pWEF7m%`X)*qkce?pP6gJ8B=~8o#6H3+{d-Lx$q4F&H@uDoMmh>? zf1rSuNFaq+I6Rab=Aucaa6f_6Cw2=v#uzeo?hu%Bs?8QDT1#a_K zrobMVCNmU1hq#-Dr~m<6bRTDwU=$cWXhT5!Tc=bP_Z}TI^5@fS{)(&WQGo@oqn$)YU?|UgUg=KM>6ypfyh6pM#a%1Oc9kN+6-9+)X3<^PQQ&%! zV4)#Xp+YE}2fQAd9$+`4*z!)TEG#T6&c4~OFCteavF#0jM|w4`;qwmk+!eBNU-}^q zbK!g4h5&QaF|BUk97g>ZfSe#`1=)Y^%(V^-(dkk@gjGkZ#y3!jK4;XbE2*w_U?sJW z>!x6H7;3j%`_AC+pW$*P(M?H@{X5~9qg4_S1Y;v{`b;>A~^k{Z{+-(>rWEt>Bbd3U9L4R}$G zp$Qy=;)0=KQMfHkG0l0&oSyY<>~Q$A0M>H7hNmVgF_Eqb#l#hSnFiK z5lx@$ni^4i^Yh4DM7<$XBnLLvVB6#KVeTW_tuyQ+EgZ6+HWHOBw}nGn<*biJ``!6B zkja#23~(j%lqJ+_;=DlN<7>W(P62PAI)%7j%R+Rb2nob~hHceK$JUJ85iH%Y9+erAj4|E6QI$VhnQHT7!`G*tB@yW!?=M;QvFgGJB6_CthihwOvnR8EbyAxcNYcq#h&e2iSBBA{?wZR`nXn~iV4nfgo zkd?-*m*8T4p6|{D_qykYlBT6pr8y?24QH+I6AwZIz0n*}CA2lFi2M|Mi4ltO{lKo%lHmKCuXnaw5$xhGc%1d{`iKgJqPcV61Mrg*4pq zs`|={MMaU9_J!jnRTm*e1Vt~o!mk4xJR25tu|jTVM-M|HTzj(_>-86KfR7Fr?Lpi5UzX}tLGMM8OIgR|MG z*u1ok0_%QY@RwpA9 zc4L`wZkOLRNfxuo&POXtcX!@ba%laT`mQ9`HH?ssdh7Bf`n+w8LW?&8+25SMjJ_l3 zUcwWgBu{2BGgHqbRw-z_?myFkcJsDOX#RM@6fk2^rSAnNH*L&(uWkJ#w(XY`7%&7j-~n|cQh>|~L)z&;}} zmQ?{&6rVWP;D9;pECRC~rJ)7#{j~7W@r&=!wo>a5TX0fA`NivEQWdYuA@E>`J}4{M z@+kaXZ&c`c+{IH}n)8Uxc!$f$9!b#&Kxq420t42DqS8l@>$5c;rqniw?qn$=c)IWT zc@-!L`?)AjM0La(Uqc992vF-s zs$OIVdMNHCjqr|4onu51bA6o;Q@fBNHma0y_MAzS_k&LIhtQ7B6mV)nF3DF)9#6+O zB7@f{T?%l!BB0!+t(z%7%$CJ=1b=&{Xr|_P(9Nl}Hcg_3#AWcl9aMNP9Rzhlh7llT`c1$DTN5LFhXV|lf0AVqz0 z+V@focW&#PFNxYJOWnE=li42Mi=s4oKB)Ou#RLJp#QM}c#o??u;hw}} zG9C3Ht$hSr+32D^2T;yL0)q^qJ?}631WA@i=Ba(w6)LpeZj2&U*MvD{$=j?wU=fQP zCXc4b=a($=UFNtVk!Ey%RCQWof!NTUwISE5B{SsV2_-G}k}E4b*2;w}oS-p6R@2g)FGEuT9>GF3D_j@EY9(9F{GFedrQ(oMQCb8( z@$xAy177M=#6R{jfB{#Fgvz|80XxM;8UeY8oU&uONxK<4F{6Y7v3EX#w6G|xdq-U< zV(Vj$ZZu9)8oRk4xoN~K0vW=3RNmL0{f1t|d(Qb~NMjgp+aOGiR`cYl26;p3%8RB) zBv>BpeRbV>YqChIk&2V<{OU6eY`p9!tQ<%~IrC%|K#NIx;4}ffRAGnbt|);d1(^aQ z-_aPhwda}pU3g9A?>H8;tz}j9|#N(xNy-L|wKB0I`zP)31`2pc*+-3eU5V@){&W=4p> z0RSAFeWn03h?PXAfz_QjFiA3MQnT|!h3GONR28&(0!O+h!LTha)tlBGJc$`3=FC?WndJsd-sWb`oDt zx?;_^?Tq=<)aTNb$YHo~X6i$nhuztX2cnhJjBdhJ&$bfQMftelwVpqJ zmfSp%{d1QJdzT%ykMsz#d%IW!Y{3~|x2p%k@mmW1)KfIct&Gwsc?XLwo5nP z*7|y`Q-{`Ez_YSnvG+v_v6v=A{&vfvGW44QtO9+Ku8JW(3}~=HZkFJCzTLt$#u@JJ z6M5HotH%m?Yb9$T7*tfp-@;wH93}u)X)eMRSl8>ByIrk}sd9Gxev_e0HII(Q#rV#c z2&Dx)zuSE`aZ28f+GWbe)NC)&ZE{Gz-i=>h$tq4Ay3^#`)nXU71r6^|NNSmMm1L2Vo5khL}#H!PYxcH3zggl(ki9NW3m!Sd@OZemY}Oh~3ZJIDTs{YCgYKrK-liMVRjEtS|3Jx=WrA zv9#T>2!trlstQ%tzpv)*U- zZ@f0zz0hptRp|4aqpm=Lt`(&kReGNtVfgDBvw*KRsqVkuRz*uP-_7sUrfarW)1Dl0 zp0j40HQlpj)>!g*@0`o``8UlqIV)Dt9+d63 zomX^K)EEh^Pv^9MGiN=@GbfkrCov0v+&mTosRv-_eLCcjfuf3m(4R|?c&BBv)Ab=& z2%eeCo@`qfe)5wx)?hBXdS`t8u#d^#%v9VUdW^Bc=Brwo$wivq$o^P*gJB05q%v=Z8D<^yCAXQ8 z-D@s$r0`{lV47*XD8h!@rgLA@W=(S>F5&{OXatpR(Hm9+e*wRsW2grr=|`ol`ufO zAwfJ_Ld*~$NetdAt{UH?ce0ALBKT&3u5`^vt}-Q0#KbxWrS8#R*C6irO%B=4U2Rj{ zJ?4#ms)0nCXm^){@(7C~FAFu>vmyz!)T^Gpz82J$>${^TXuMWwdL9V>v2po>zxK^+ z6(tZE@XJ_7qnytJ7W_LgvET6uV!&s)9_GU9W?>Jk-Y-4E^oYaZ3hkg#t?fheu6(C# zTmyOkj?*DTKq70)_;FORx|fMtPo>a`dN1~HwZ$+2hh$^Cr_oMr?un&(de-%xvN$@s zoMLY>!!3n_5l8c^mCIQffAO8x=$Bv@bzxCP_2SJ0!RQ*1=PQRFIAMpMcV_;3+887i z_}DBIsT72-qH6)zEVM~%^ihiegM6|5CS}R6Q{36YnbK)dy~8CjJy>RWy))gD^;GGg zpbeik#%C{K_{S$X_f$Nrgfq1L5JnH>?H|;A9k8Go{`opCqA(|gD3;gF=z#{xtO$=}}YzqTF^>YMM%D%ZR?OvGBN z6RwQTb#wfBKmvp5X)H5*2Li>qQ%}gbV1JmbVI$X2pTPBFC~CK~TX=N@4!xaJNH(x{ z{vC#)g^R^qv11`sMp1wz=37|dS@{^iNL1RlP?a+&)W+MxNcRqw9=)jPRxPyFp`bhVY<~h!LK6So znB7sVG1XFR24GhtOi5XAInme9(vRE*{6zkkeqh8)#Qx@Dc>sW!^Iq3{uNC>l$L^63 zs{yiX;W5XoZ#*vS!35`**Y_H)i-mUP5i3`pa*@?6W)WT^03&Bt5X?>=iBl+}4)Ym- zvbh7A&Fx|oi&RJfFf5TK^O|~BY~u_hLw#2r7PmS9Xik_^GtcAqh_w6Og`VPfLd(}^ zfyqJE7B}XB|6wG7_0Ed}xsM$;P`9#Ig)L`W;uPOAKX1v-4oY%(vt9(8$`}tqYGQOi z=->^G$L-j<265vL-xXl<{vB|x!|z0adgbLCLfv`iG`ZRHj6iD-5P)<%vg_2(IOH_s7jIjJ1EfO5aM+k^B9y%o*aOd1sPKgM;qOthH z#Wu|_CC(<$)#i5km5oEk{EdkV!4IA;^RhcbkxwPTQRYuW7kh^y zO&psBHeh5@>{C@MXKpAuP|`+?_ba-Ku8WA6!q*jS(n6er)Dd5PLaJC7`AttH&h0NC`xW? z%HlFM3%<6k%wE|+yR>%0r2dwYu~R! z7X=1b365iza((04yYB+1wJk6`Jb7A)R6A-O)fPK@%Mg`V8=RN_z+}^bv?QrG!0=Vy zBwX1EdM=uj>E0eGJ9apFEj*80mM1f;G7p$F4C7RJ7ofV#R2nxB((ZQ5;c+L5fTDhT zwF05&7BJr%V`?ed?cxNZ8>M-*PPoSrh)x2mZh-_$&hyM&_d5*=vrDZsIrX#-DCgPe zIbCEp<`TQVC-NoJ1+*j#hTXL3N6U;q|6X5e-^d28kKrF90J|WpL}%9`MEfH@5v3f1 zRHx_giCh^fP5SzUI%};a$DIfGok}iPCjP)WupIbRT((DaXdlR*`tCKa$TJETzE&~& zwk|4MoOXJp&>Go`?Ltwh%V<#g7s|?-_fSQ2Adqp&RuH_PDpjb%A$XNU9nY9cQdTJ3 z$~nhzedIr+eDWEmd~*m}@Wlr6Tz%s`mp0@9pcD%Ny>=(c;o~Y5=F^XQ>7<-^&5jvO zv%lZzT5CJ3-B)wDA4LQndJkfWu*k6((H(y~^Q7jHB>ETEuY*%esa(TR>8h449qFo@ zMw`E~p-1o8``To@mcgRS7r2p);-rZETT%NV_Vg#>zcrknjc)%JRvDa#yMVR8SM#WD zXDQ(?4!ZE?B@(X{R)s|cz{>D;+7Yjs1ZsH_{~O;V5+WXJ(=rR}d(Rcij6;`XPevqp z6gwe?NBc;f>s{0~f(=s5oI`A;B2 z2$GnIv3wu$hg3g-U-JJO>;-}EJ#B1Q>UN;%&<*pz@&8SXH7)Tl=`XO|7fD8j45O?; z^qeJUJ?A!fmf}`O@SzvvK{@$Man0=|55O`#u_=&xKRU{cpA$dA*01k1bZNaE0_Q7(Jnnh=1*58Mcud;9!JAGKWxVTtZ$L8nfkr9~9AFW_XaCZ_Q zdGMALdFg5#NGSHvQAic`3+bG58yPI~;9!&I0nGnz)y9i<>JxAl8VwB%WzqjT|K9qy zQU4o1Kfmu-sB_x1ZE?D6B-EAJ$-1fy>(%XQvtj>-38cI$8TCfXNsDA41um8*bnbdL zsHgm2Gc6PphWPPb>cLG8bm)6gHT1E+c3miOf{xTm3Pc5dBeyD_I@BmDX9;iI{x#{>Ti|OLM6-6fjI*^t&i~fvw*kHi|rBB|7yWL zzA>5wJZQ1cTYWF;C`aMIEHliz$A8UqQOFIdkhXXmE(y2UZucWGI-pm}(jbApe|w7x zEoEWhKGX+jRQ~k5wCWz{dtuHQ|6~OL|0#{K<$-x7__jj-Z$00tgf+hYW50;ZoB8oS zeS%z!{w?c&{`2j-D;i3WY|AGMTvqIYT*vP>N>&pZT|0~~f{2FjG9F**q^Ed1+a!go z9If>sy?rA`vUMDj4g1k%!lhWQ=WClZL!3RPL~C9q!L-~?&hzFl4Bevz;hHXyhsZTy zOb@f;t+w?;`WPHp1J@R(h{J|XgVr8^eEvp$^=GU|F4B`OQ;HUR7%R^IiV*B^zy&Hw zbZ~wDPgHT#+Bi8|y^v45mfUH%Xh+|#R;oWzKnzSwHleK^cGkgBZmBF()?w5gFBiU8 zxy1%^)pxTnY%I9$k!q>iG+IrXUm+Vu1`xF{n_pyugTe}nRc7D_{C^EDpZf@<&2M7hg_`ckotrwlsUe1I6axfFmc0rT4&vdP^kTDjjfrD+>jdT7!(Qb&}0 zT!X#5v6Lh!AS*~cZN1HMgfR#ij+~9h%i*?cy7YdXdmLc&`lZib8mubAy#`al2)s{Y zjZZdNQZD+RSQh!@ahz^1d`ga5eAZqNXH)9*_3QgjV9Izt@bK0n>UVR&xu;=+3F#qk zz+K~flX-TQl~7bWB2JSS7Tw2IZ#BH@O0yC4>ut0uOv!m1V2j<+x24UABZUHpsi{Pa z6S`f_^D6`W6fH8zuX+Nl##U?JAs%WYb;xdx#%&W|u>1fZV0U>GMVgLOBah-TiGre- zj*2bI_#`1grYmmZVNXAXsi(;9VQ?~7n^n^^R+UG*(W%;!u37vhl%v^HwPnmJKIH{0 z+4wSE7ZdLF4)nGgwtOXMw*INqE$7p_gqxUOIt4~wcF0KYG%W1frygcYj6EYNe zYD&rp66uPKYH@f=O|e0dyBb0R_x$yK#5BX}Trb-WIaXNWYx@_$Ly(EJn;Al#1jCDs zUlcBn&{HLA*CPpfSfYM;EjWoDan^1|bC#+f49erp>z}Nz$V)vhSPjYr2i>J3sXV$u z4BiAB%YkgVc5<*4bdA!;UJjWT0;_sSuid4(lTg196a7o(;!^`;L`nPOnX&kOj*RrV zw&tysu0R8}YGISh0B3Rvw=HpL;Qo;u$$?}S)jt|}g@rry?RT(I@AGOs#Puwq zr0Q=b=k#2M9Ws*{xGsih%RD8OSjg;MLN7<&Ep{R>)nM3PwRUNbKhKdJCAargAGriR_OCZ zmO(E9C+3j8@*wR{7xUYuFr7&Jt{FTp{Jx6|)>Tbl6+ppp9y%UKJKfo!t!3yZhv zIzNO+&dHz_sksv)WyI~RFa^@P$l+&G0fjV*azzVa3F~Xw`8m#5^q!K!?Qc4<6_VAr z0#UU>7BTIg@40Wy?YtPO&YHCUZ2r4Q@rtQP^qXpY9pdQ6eP-N^Zq?=5{3Ldz@aVO?S2p93&4COtI@~Zm}cs!@0#+o)=z;S>N z`y9#7ZAILR)w+|+WW))pjHS%wxde*^#a2=%dAa~E4y`1 z14+FsJ!}%NsU#v>tW7S*n{QqKA~w7sK%f+ z5)35?Jp;hKr4}EPP(u7SE%c_!r>dLaj29bNqm3>L5(y+xxD2i$dW$o$7|l!(8-Ztd z{B_w*dXbVh(bL9-vZME1TAyYF4txD!EI)EJ!Db&yV5cQ`uWmtoU%8tbe3)d=m|D49 zmDGr6wKAF^OvZ*wHWes^tTCl|h=tjs^SlbO}y=i=3nZg`a&Or*#)raW+8`)u6l zJVwhMz7Cgbap4h!*$(%@7V2*>zB1qRU4%ldHX$qhv9x&AY@D1X!{Kpb$R6k>iCvF6 zW6Yt_21QjxKZ~)Cnb352ME=fnB=xF?#an2-t4O7oZ>7TX>X=B^b>*TR;luZngcA93*?>1}5RylLkQES1(53|5G>{hEu7%lY*JSgL( z#rUWj2nXf`wz;bDP!$=kA#I`M4Pkt_?qcZ~_a6bcFoLcu$xE|dq(&4r%Sh0B-a6#G zOiP>QM&+V0;#0#PZt1%6y04}N;XRj7jdTh|#w@l0s#r{<$OO*mM8Slo@~yD04`iB0 zE8_rN_bdDozP#33BOZ}u0c@tZO-fn_=ZT!Bd*nvn=ezb zbx*Tw9$TRUIh~rAbOtl=s9G26HQ@{gC9{}S+2XH}==_Tvet(`yE3#qklokhV+YZ8A zYSXUV+>0_&*B6`lz%mSS<)e}6w`Y4=Enr<&@Y#i))!xXixOa{o8TxxFw7!R_^(q{> zp^5Sk&_}9qD#4lN0&FY zT4|WY6NqavNTMFvUvSZ)s`PT`Q+y$6ddMf|};7TV4gSpBkq=Vb+lfDOAi zfY#rcTdZqAU~BD<6!Dhx77cV6;J2Qau^qP^z94$}ZNE(8_&^@|)G=j$EdCvz!P2bS zl;>~eQHg!;9(x{h4cX47gY>P%muQ-EyBC(e^)Y0} z6Bfu|a{XHSh=gU{MKv!IOIw4SSIm!EU5;I7q0Olo&JB#2T$=1WJoAZcvy8(gYe+jb zae+noso}N0NPgJITTzhuC}=>y)Yh;}V_?jtvUJOz?0);+rtK==cOY_w%xr4H4jsim0nDxMlbXTru3i(IF6??LM1a`sT~72`aE5}2OVrWUj}Dn-JT5Zl68Abb zS+uT!PuhF*q@u=|)RV&OiHsV`k8iQyoG$$}60=vTcGPbr$YdY_0_^w3Y8S>@n!_k) zTb~XwG)lPE%rTp2X*Iq0BAPtJ7`|4?Oa{E-9PTAtJJz=Fjft-wZJ8F#?QzFBT42;$ zyxU;n9GvyQOAr3qWCCB$_#jh!v?gH@IZ{UmMQA%~d^Z*ld zE=))7qz{tyraOyhygr2{?TvEql1&;JN&Q4cJ!&rA`cXVD-g#L%li^nrq|nh6v2YLZ%Nx)iXCNXot6 zc_HraR;>Jt#iqhDfs&Hy>m{ZX)Qau#G#gI`vA?C7Sy)^z!M$gvr#FHOt=Vb)oXs*p zv8(x8_tr9)AXnR9SI4^li?z3oimUnB1rs2F1ZYCA;E*7}T^k9(f(N(Y?%p_r5ZoJg zcXx;2?%ud-{BgHdo?j%mr`piwDN8u^$hle6qcn8N3Hpq6Wx|txT`6 z_EH~q*33E7rEp9mYAx%pGt^)BXFuD4?5gs$oKsAuW;4=iHaEHUj!Exw(N8AOgzIP~ zqyij%%Q+MBo=m{_Zqw2vnZ8gOq>>J5TW@04Emn%slLk*BzjjmQfZ8?A2F|&4@r{Hs zc@|zy{J~v|1rYR{J$9QtCnjMw(xa$XU7iDcj+7Z6%YyoBjJw1 zCd4NuI3_G6GKTG>;$m_eV>`ms5?ISK%Kk#kyK=R@c~nY3?_tL`u38EC z(OiJMc}mbNVu@cI1`R^6$mdo&^nf)z+{!yVAW$EtE)x|{vJ&E>H3FS9#i`V)WF2^- zOK`6kztsRKKhDeXa?iI9>AXAdodxliUbS2hG?B>C@!aQgGEmUa-{k6;BO4okB|d8F z$KVB}`dh73wbRSf8g8ViDV8?GV?1zcCDDFn4SyofIn%Hdt|v`?M5S~3YY|k{iSuHi zV*l&|K;a}HGIx!g6>d}h{T+Zd7H8LYxBc&1*mG%vpTE3zlX`r0HN8@(6RtI2z0$H^w==k~LJF5V zZ#}KJ)mt}ovoS?}4;B|#68_hjNpKc`Lv1AMEdw9KBQC_14>eqFZ(Dib70ADhEl_GV zpEO~ElS!z=pH(ou%<91&<|-qu(k+Xn%j2?d>1Tw}ljN51;$bsdu8tnY)=I=}s;Tb0 zKpYd%o)5C-1MhuitGJ}6InuCf5_?|Bj=DspNVj8KG~XYw&b>8iUsz#-Twxysq`(r zl1F~XFsK(Cu2>ZDJ*N$r9u9ld@QZ9>D;h1nLZYLNv(>bj`iOUMn+|meQ{Cr(Kx%vJ zU!fUiH|}+vK7}71N_;w3Qdv!6iQMxbHB0xuXZyU+GxjAxt?bWwBXul)J$6Ue_Jpmr zS4EW*IP~Wx9!csR)h`NJV&}V{7s3j_U_TeJgj$T4))ey^a}ABdB7RiD+e>(EolJW% zHGfO-Ky#npcrlf6ehxu&`$BDY*lyv?%Gn&K>aXcNPEDSu`3UDr&z0*q_u1VCHL=vd zr5C@G+_`uukbERMXT*3o-G!W-;_LUg8pz7bXLj7D_`Y z9Ai}%7Zx={%JhaH$?AG3a?gyJuc0-)saNJ&Cu$y2D2EJY9`MiuwCGClL#p!H!<(fj z{o5Xn?Ob9;+;krwxQKUTu!gBm#z7@QdrPDIw zz(RDlN*8>$=T?SopbTd5H_hKmjHl$>=g{m==Kki}3D`eI)I88eZQdVxTHJ}t35iF8 z+i9ph)X@WcZkPR2fNr_3lD69api+uSuhouYL>aDv?W!BO{&oe1cLjUz2hSLb7gTmC zv3MrG5tm!mIVnAlcW+m$Z!2P&ZrshG4dS8Z!DRbD8IHCgog$Bk^ZgG^aE56Lj)EY^L=Pv5Z#=2U&@ZIy_DksLc&hDbKDWB)f zEYBk4oAc^-DT`NOishweZ42d3^j99al)d*R3&+(f+$+xWkI zN1CS`M;XBdj3~T(2qC)<_^Iy01nGby&%fb!y(amB`TuCRQX3?GsgOH^sQ;fDLjI@9IK&9;r{^}{$l&cju6?E1^+wP#osG50FMzgpG~VHw15 zo$UV-w9Y^g0{$bP{g2o+<}c8TfA9N<1by+Z0=6g$*&Optr0|W|1jxyi3 zyPBP|Z4Q8GdF)HeH|Mh}dG}|_$_t7Hh}A1=uhV#AF)e;wl3#2r)&tY{4^yvL?=6$| z3p+BSAdn~bo2IHUUOA!@ZoA>c*okOwi-tV&EN@-6gXJT<_y76trdcNtJ-Em?n0;;Q zlW>z*6RYW!+hNI(OA^G^)9COKu@pl=TU+Pqyq7iqQ=f~G(RGXH8QO9GiQ!IYnOyTy z?jvw9k75C{gDk`e*{svfYQ!XLvwJ$3$j};h9&#;GLAF*+< zyf^Q1Sp3xd$}^tnIt_TgV`)5=sK}4s*X$+fKq9lxow(w90b9)LEsVk(l5RSWPdeHb z;-D!$GaXVwhvLQM28ga&-fSPL1Pa6xGdxl+kHWI}XIS^U4Esh*9ZP2&KEZyYU5Ewu=A7H&>hnA zsJpw0Za2pEh7^xVXsnrYW&dF`-noU*RY~nnGF2N%+HYFN?}}QPnpRA3+ii%Ln-{HD zWo8bPl*FME(o){p-q#tmL+QUo6YYB{Yfui}*g1Y5r+E`l*_+o!$TJ$V)y9@De(pg1 zbfvp7@E8=}+!L3(j4QTVDh?mY9*8cA8aHYpL5sZWNQR^8l+7Sc`k zGzq8@CQO}McLH=r9}LI(KRO~Wyx?R9bSEI!geUKzNA2i3?_hvO`KEa}v+Q^$sM~lB zT>i*8Bt)ZBb5BmtO-U@xCz@pLADQ+4a2;K+rdtd6w!n}hj+l#hxD2-CIlUTm`53_f z@}bbv7Zh)-O$jVF*@6H+QHpJOx^QUHBF# zJMT0g>&wlBm1$f!7Vhcgq=n5aklRBSi-Fr>lg*Kc=3u$_JWuPEv}uHoH4Q6i+g#A^ z3i`!m*1FpC0|D^2n8D$2P&LIo{(5~_n(Msg(^tK#_2ojFJDT$n1% zZJX~e*jmL(5@hVVa%TyTug#hW8 z3fGhI^zXxieyKo=c$g-f+WuxTVz8!}O|E}kO3F?P@v%(757;WskG+p%@S?7)K@=(> z-qUMAY!znkAdwhvg^j*Na5YZ7)nFiMxPgYZb8 z-J1&|b5z-Z(YBO+@L}1}Y3}aN4t66oYeIGPjO5I*b?KUibP9$$ptO8my6~+Fphc;J z&Y2g{I*MN)aM!oYAiOOYp`?vp+PeJ6KIC;ox2Y=fLxjJK271oF;YJC|-8>I>c|^cy zm8k~x4^|l&R@A}`sjdG07-bdC5}hV=K+ur7_BO>dlJ-Y=VNVnjLQ!5yrGqnB4eWQ? zLu9@lww|x3?e$Q%UrZjFZ{UyD;8Zt1#GUn^IU%1uccqs!U))C@<69WxoMmtn?xs>kSire?G z>W=Ln-#3aod*QYk*p`@lz__K0`}v*|jB0We+<+fs_w#%*3Q?HRhrEMMH7uG!R^LfG z?}^zSuD-j?N>R8;eary9p&LuQsP)}OIg)_7pqnlqy&lAwOGdx|*xzhY6fT2rxmX+< z9Ot5!<9Tsd|sylfpd6Lz@j_d;0JY<+OC@7L+vESw-vUL8i=aBu1?70 zbSTiD9KQ%E#Z(q3xd5`Ar2&43)yqrY-F`}0^YN~83|3T>d~-i^sf<}3$)IyuRk ziV@Mw5spI)t|SUpm3t~bSh0|@OoGl!-8Hy>kj!eU+I~osP+I*%dAYcGBu?uaR!B$i zh;BrT&P5C&9F%yLA=KuUSW!&81UXoIiuDt;`lUglBsyro^Y8K0_*Swf|LV!Ve3zo} z^ftTqeZrF04^%#*Zi%G4R!7;MyF?cgBaHK$Qod3&6vkP{$bwk@LiwMi!(%$bgAZk2 zH5LxbK1zqzGbIQIng&#IjUgXkT+JOP?KQJaTuhl-9QB__t@PUi!+iV9LvRwAx!ytN)fP~y;XH<9$nZkH>Aes_vtJbzuK&+vmF>UcK zx4fdN>O^>j)maF??^Nokf)fGD;Ytno!6G=G@W=eks6yT`urfsZxN&z%=lki-R^>Ws zJ~gUMc-j&d5$R&PtLUnKU`Orh;g5Dhm&L(}P~q~;EbXTccL%*ZVk)?h4$*|J3Z%^g zs;vmG#3g;%_{PDhngXS5cnK^Kd{d~d_GvC2*De~)?)VE&-D!Q#?PsTv?>4s8-oKbG zSdGmz)Dt*mtu0<6I{2H;0%nqaP^#AY@`nYl*<&(Q0ciJRqi~9#F+5^cZ85{EtR7l% z^Zww^a$&xszXO{yeCf6Xuzo>=C^dnRJLC7&M-uOKxZoHAxL%1O?WjI**QQcwSKf6V zB1F&i*QNl<99_v5)_`=WClWJOifOG|ac|)!204~&PY)YreU(d^3ThSnY?vHOoBsSq z1$Q`IXJ-wB!zhRbWnR(o``r~nN)1D$cCQxG%oZc)5>JXlpRw{xy-?Pa-TJbOc)9=Rc9MqPGo02Kb7AVw@Yv0_4S_i5+F{-D5=!^5fCXk*Y( zO-D>ahj4QMfSQ0ip~8p^boTwhf2EuFDp_SV_e9UoD3ka@))%SHb8#~wXq6;fd~+bE zgtd@(*nWVr!R(jrpIYAyNBP4v2aEU`=?m?Be0#P)J@cX5hKza9n0o3857`s=9lwf_ z!rh8TiD{*DVbqKpR@(|XTq1uGz&VaiR}ds&bg-t z?b_d#_n?j}>Fbl_@Vn;Cz_&yDIO^3Q;W@R)E$RI|@B!=@Q zxHy-V729x2xi9f#uhL1av^f=??@SNP>4|VTQ?;3w6wDJ51&s%e@(7lt1Wf~?qG%+z z`-?h;HR~ai(9^ky9p`6O?_U2sb6s=fPX0PF@C*O11ht6Gd5n0nrI!M_68e1uo6GwW zSaW02Io5=bdeFfQfde&ueLTqXQT=4l=C#6m?Wcw!^Jio7Y+cX+i{zKT&uVpAb&2M2Sdi5ILgCXybVrKZxM_ zd1zwZlYMV_7iGA2K+J;+@u?wboHz6$tXfUBuJOGKy4c(#df}e~`mQCp%!56k<3OVh zcw-t6IR!AL3)vc|Wi>?}2l$Kwz_y>8EB>e_@=iD-mvXZ+xoh5>x!l7#4$#XT+Q7fN zOidn}2keH3ZXq2;=LLur$F|R2`E?s>aF=xG4@yqQZeP||A@R#85u9;@(b9eP@X3KH zcj5|)%E#NNvYb|f1@S(tx$tB4$FjD;C5cFo+NJtURr!51CA6Z-{#oqr8h@#*qy8=` zUN@z8NvmdtJ}%`4qrufSh>k0EHk;;A*A&@khe#%QNa*UHw`nKDpTxa(1Q5C|ONeRY ztn?=TMgrKsxbPj^glKfFX*L`7RqZ!-{X0QVZF6MLzTao+oN>S1r0NdqZ*^;ZTeO9b z5U8^9WKh}NJ~@E-au;&32hvXzlAvE@&_2jj=()$1G)E^NZ@)qM$4&6r?wzu{eCn0R z+GF)Bv(jFpz-L`&Z+3xu3!vnDARVDNMns9F=gpd?I=wd+1MYNLXKrr!vw&&9)AeBR zQom~MfKBS$8A(7v6l{!goq0{|0=Cmxm(sr;r;uiw0BTlEdV7_wLRJ4*Ld?r6X0ze} zZ3bmz!8kTz5qN&~85NbtFx9oJ`ji#Ml>z1h2;@%DOPM<{MuP#+&AkA z`WOiEZ1+7I$M`6r222PG#|W#@bi@ep?2dzUV82v;@`5^()kl&IE^-;Z+-Chza?8f( z1r|4Kim|?MK2%5&{|ZTE`7EBNI?&QQ6p7LPvNU;FO{15I=JWjow*>n@wHzkY?PQxG zh^zUpKen?=qieJ|1&xX=Jt6U+3)w!&>-hyyZn)F}4iBD4%7wN;%|92>E$uc`=4IZF ze{ncBwHW?pa0_47H5;}LdiSa5aqdLlnt&z)q9jGW#M57noFlioW{SPLySWWpD?Hu9 zDDVwuXV4`e>)ua%&$des(arBr87pdin-=F>&WqYC)K;!a8v70~6(B!aGxK1_Yi34o zjMM60O1*ct-fdlJt##jpO++IH%rYK_-HP9ErGxyuvntshuuN|AwN|}362S8fUh3Pu zfq8WJp(P(6FI5#6_euvpAGj!&VzL((0#|1cRpqH*jBjA#FD9x&X03O6F?DTge4EnQ zEg6r&aRcLkOV^#y3)ii>POLRpWy)5)$24G&MorJbF1`kWu*LL_Mo6+MDf`;j^h|0{ zIyD1ii|-Xa=qB9cHu_%vJwwfy0`LRiN)G;S3Qzi zYcfwm7#DY2l~=EoEG^q$+oW72T;hbLcB9~91=>C*T2k%SzHoJWn!fsAlI6n6rX~&W z>-VI5x2g&X3rQTI4skga`fpNrd(I1Dy>f{uieKFUO#=4_wz<_yd6yw&wmhS|Wp#=_ zpTc;W7G0Mf*5R>L9c0mdQ&DV(vtG{68k>5Qiwn)A#(s0V-yHxR>&f>(Y+T{)ucd&W zk?)7qNn>3{-#;oOPsrWJh|Y$Byuu%(#%Tk?+!?RbrUC#6#HpMSsq z#Ursb@a(^f!o=8&1TKhvZp7I&+$fDLJ;$!8ihy)v6TF%qOnLAt9Ue%ptBThWO=zI|UU=9M5Yzx# z=rj@ZfVk}ESGI9wQL%9~n~8!SQapGxjIweQ7Dp86EOc%{1W#BW-(h5LI4p=et@6{u z{5u9;bC`P=s=1!8NO~Q}L~47buOq+cS;`^>(`RiSm=jcl5NnHPEulzDPK zn+4>@bA?WCwKP_qU&)a!Y&p zVF`4bhUalnE)$;xBRGxo`rXvK+#Fje3NPM;4(96Ah%xTV@iQm5WpFXpSx7WoEc)>i z8oUN$xdV<$HDTM?OwT`@559PNjx-lKS6h>jz1w3O8sM&6c!)xk+hKN!!<2fM3jL(# z^M%Y-_Kbf9Kz;4upf}eCedQiNlHYa*)xC=vJL!8ApU7ltItW?)v`$u;nb{$>Ij3XQ z(?gz1d}@ur)45u|a8wu-l^I`KKAKt*1S%4yMe4-tDSd~mw`a%ZjQ3Y4w5r< ziEe7J?VhK+z}YplL=zbW3FbR!!*5aXHVnYsIt6h2f=#@S1P4?d!cPi8+zpfueSXhg zX7@UhZ1KR+Qbyo~a8GTi)%Fuw$Xmb&WPPJ21ds6tnwtc-l&S!OB|bOJKtM07?r`@I z!?H9)Q@P$teYqEBay4oGgpQNGR9bD$c0d0KM(_^sWer)>xiUtG!5^=ZYiUXg4j=#5 z2+UPSgX`%B=O4A!&v3@7J|4cEa(gaFxKeQKfGdI06a3|hgw=9O?E9|4$8_`2vo(Bj z_HdzA{91`Pv{-UUEww58>|o#8{Y=dU<2UU~_|U?EWq+zwMd)eAckr7FncIrm|Hhh6 z`6>VRQ1kywOnb{T0QX-~G;{n5$bVSj@N0oDYT(6#{_}bF()2%MZTJN;g#YHX!y8|a zGXAUV^4~juqWnv`hPN<(g8p9oug}N-nS?F!f9r@01+v~7MhI8`UHS(Xr_xn6%qnc$ zkr!S+9z0wmQms?kwT88RuFcKlZ7{Np$jQmUq54M3$^@qqLLMICg%~rRCzh7ZH$;cB z#Tnw6I7oqz81Pa8cskOn;jFVUFQA=$PAU7pQzTwg`+TuLmcZ`r>sy3gQ(1f~oaE?; z!5E3fAb5-A)n1o%_2e^)Oye}CqN4q9+{1+5d-zsvR1IX`o-i@Y<+Uu za>COQoVk2IN6?VsE3h>k7HAXnt6>%!uT$XDb``?0@3`$7GP##@n-(HcomExT9B*r4 zmv@=I?~pmgez6Eh1v*Pk{)~=5+b7tU?BMehu~_z1?LpRA*1Bn8cFoy8bJ0{c85l?k z8A>yuXVHc|9JPp=sW!{>q>>yO8Hbg(kN4UEFGnp$Z$Ar&1aN$_E1lr8_ z3Zmeq8K5y{bjeg_OZa5IW|kqH1b`Yc>HxMHPsA&2R&$!mh9}d`-l@TE-ZSME1>`Q4 zX!HVOj7s040v}>xMG|^E4ioXkH4=^^_$AO$rHpnEbYJodur$h!x}cGL3F8d!%F*eN z0Q(6yfsLiE>OI!NeCBgG!5{i2sbSEXGvn_5h)L0dxu*Irk>7hwyp}X785`9 z&le1BQh*0p2;#egPWCy9e-ZN6_IFtqe-U!+&nXmQ@(i?$DM5|qaW=d|e4-^KD2vn7 z2)VlI3(*9xAcMyjc%L0knVuk~E2?ybACZcpH#d1hlHdPMw^IFUG5Q719x#0N@DK+4cr>s|w z5}T|DKZ-fB9Pl;P9gS(A3UmTE8}1+C>*c~`0R0jXsc_uLq8EjC#?3lci+Gi_Ph2ep zc*y)n$|?#q%Oq~77t_K*KcP8C#jNo)aY;JZ;XogkkHeP;=d|yO=4X)wZ&_!u6Gp}D zShG%jI_>@Qiy{a8`2!XBV=QG$h`b()D{+y2j8tt>LjH`2%(CEj7!i=eSYtI+9@WuG zJK4=jJdJ(&{c)T?;_!Z170!`lsy}tqSe()t<3ObNtoeZG9FxdM7CRO7z>B{~4@(V3 zA3So=RLjcJajXJVQ~Nt7^Ml9dc(e}8&4WvmfUxkotTAMQ$zJVUG^O;1&EvSt^K^0A z^3d6pW3MD5;I-W5)knrGlDQcB2VA?>_mBF5Z9LlTf4V;7{e!6I=2zDWTUj}Hwr*?x ze82*GH7>G9dqWn@i|xVHAk!cb^egfdE9`x2)q*~tnfw*DlCnT{&Fvj0*b2}9zJpR(8tEHJG8&l`{X{i?$!Z*wNlbx! zLu+qa8A5Ln@UeJXUcVzLsW#F^Ubi+yrg!UhqWP3b4Zvs4ShNttq0?m4ughF()L-jz zF-(D3-Q85X@j|B;uOHIkR+-QOjQagHGSa3|Rz_ng`hzc77caMu>ATh;`IowHib5#A zD_-{CsNccndNdVmp10N2-IrhC{QeLOka+rn&jMlJ5uqcFh@L)AzO>9yG@CQ%%qoMG zZlth`Q=zM|G?v#mE819u^WFD#A{E`6wn2pzNSbG9IS3r|dGPG)PQ zuT{0Cv$L{xRGWS^vnoamT=t>%;nB{Wc-v(JDM6r?fYwNo^lRjH`{nL+B5+9@2Ny7|4jr%hu>++pcBz!wBcgfs)`FZTCmwWxL)L~FikQ8%PR#tFuuxx6T)siXD z1@25VRHQGGkjjsnH+i3&R$M32JB-E-Q5Euva}QIxR~nRb1D#g2ike1Rt?n>GHa0m< zn)$@de|v`OZF(+k)UQIkc%ODm54xju@~t2FqFimctrovb=0$bSPaq!lUY8R_KUI1! zFUBwk=L2TMy%ZZQJePfep&khkq0VLY0iuYQuOHVdF4J1dc3YZKQIGtc%(!r%_7u1A8;)jE8J$5-LE89+gt9%|KJ$ts|3$HTc*`9Te*Z`$(1lBd7A z@23P`u${g59n0SzT~}pne4T>!N{Y^1A^U}9VtRW*?46chP1T&1-yfn0Kxu9LBC$Kn z!dd2WIdSjKtcC-$b(3pzSkJjj56@tzIEL&rQJ17b`lAhxVpU9%p?&o|V?(s*N~(#x zC%K6=h`;7oq~MHm!JknvF>V_ol@vsAOkCyx8yg#lNIB&d_HHfW=W!>t_40Ve`rc|f zX^eBb2bCb^S$3>eRd-FMlfZOmg|k>FPazoZamitS{O@6AdT{DD7463*E_X~A9syl# z$+8jdUW1%CmFcjySZ$m3X3p8ka}dU<8t1W{SB?W(uPsN2&fiPtpJQKzJ7osu5!<6X z7ULYNVUyayYf(y;+oLkj!YwQ@Sk!_w$%}GMFqS}CM;It_cf;QBED$-DJ-}E7yXMmv zJq`KWDUDM3oam;#Af1oX-aOoLadc;Wy3$sdOzw+b#nBmkR?f#P);}qCA_`~zL5fE z@MxN!zk?UnGUJh8kl}Hoj+vsspw^9Yn*Puq$55h~o$s4OJ^Dqrs%MwVe+pawBs1iHP}eqkSG0d#mDh*2uv#-uSK6e~Pfoo% zU+H@w2PMnS%iEtVjklPcr(7qq+Z_$=>~u>6xo_55%st(=@033odmX*+z7*M{k^azs zw`+lX&oIC>>Lu1t))nq>ft#B~quM4rgU!H|lS_TnoqJE`EL zC%X~-?ve-yqAR(ymbok(fQ3#ZJZQPUS!7O-s}-KjCt$mw?I~w z1hx5S=8baM4&R#Q)}GE(05)Glj4+2;8SeEv1zk(EUayR*pTF|!3U0&JS&g`mw413v z8lt#l5K9+PjulG0n@;NvB|VcB8CtkBB)iTsTK8W83=aBbGJhUUP{^K7(jLZoP0$e4 z^}#|J;z)>Dp4-|JIG5!jBVVkbx)B$%8_l3ub@UZ``KjU0Nh~Om)R5t=l$qQQpe*=- z?9fv?h!iyx#2o7LYo(c}HEu_@s=$8zBC zXKq|vZQ?tDDJsej^k?uJXTW=Jql`)Jq?vgs*&MrA?`)9451NW~4PSzc z!y!ACJSSvW3MFk?FL&qOr=ku|t4uNDb6f_7t;mna?g=Ir!ejONEv8%OMpdNReLv#9 z|0t<6;|Uk_Io@;2AV%Azm)8sRudl1zb|^6AY&r`f!1QzN~5qd;VukAiea5##@?DrTS9 zPlaHkOM)oc;yjaUD1!P6Wcr35s#{m}E$s)LF9=?576nT7CSZe&)LDrrZLir^g(xY$ zwe;Sl#q&}3%72bWN1`*caYJ4zx>j*)4$zwW<~3LCZOQ5!aoLZ;85JTA_`WvAy18pL z#DYATq2@^hjqucUt0Pht(hg!aL$1nW=o+j3J`cWmDFq%%_sBS0ORGG}-VCx3zbWxj z)iFAz_y(khmAEg=Jr2BavZIp(l^7d!&jKP?YhGb0#Rs~-9@B8z_zaJf+AH+&WrMzR z0hzU&1RltVG?1==k#qL7i2Rx%yJp+5C~cs?fm+kaNQ4Vf;fPjnu|I-MJ>xECU5QWZ0tpJAf4m1EhI5qLFp6YK=GMD*X7)g} z&Daym{b2Q84SPdt+inm{(C z+Ra-FD^4Y$Y7n6na0Y##Zm|&`6?j`Q=TwlRIFmBxmVayGTn-^S zF$5*!R(=-JVK{QLvAav5I+NKQgfI8-rPkOS`7CKeMOltXh)kBM(o#YZ3H$A&dwUJy zwO_w4?CLX>b{2B!%yAR@N#!Oe^S} z=FM&WG@up8lfM8FT83Kixhk)6@GXIq?Ta{W)C9g3Daa~rc=RU~Nqp!sx<7rj@`_%< zl-s+`=sxc_^-x@ngh->gfop?wdDR1g^AyxOdMcN)o(}SSp3#-m--H>}&7T}mN2}o{ z)*_bW)lFzF6Uh*l7o}HDmPVBi%P~9&THC%4TKiS2W&Evmm9W{~>+@u} z>Ud6UuL-03mimLmwBWE2)ppBg{T27Dc92VBa+0Jf$5^+!+@a zSG%jhk>=))&m@P%hh2J!xe~I-nC|lemdKc1lQ44}b^9@iZw^=7>Kt{?=JnUpgLVSW zwW$bil>Lzj0vKEgD=0G0=8&)605xVGm~H9JY~3xN4@CJx@EjRnN-F57sDgHqKOV-8 zujFmOScCDNDos{KGD3h)pGt_)uD{OYgvXO4_x26b;#syYmU1BIaX8Mjva@2f7GkI7 zK5+h?Mh%1qg8+nkmLJ(#_#xAR5TPKxIp3!s;#neS#&79Eoshwch>zz$HNv>;!uX`= z7XW=#;U?HYr_ZW<_uM4W)FoZ))qS$pB;Y(T$ILAX4)X{YL(c~Ns7mmm)R_l1A0R}r zSaSddp?B%|ym0zW6LPwn%!Romi6!F+@4$#M15IrXh`gLq9kCxEygcjXCt=;)`{ z*9p5p2w9H=>ydNdphK{@!P}pLuO~UfW=HY6kgpQ-ei)z2z{N6BUp2*MU8ICsEI-AN zKVt87p$Z0Rug5Y{TpR9F@0>;dCvc>X&Sk?J!uP85C>eBGAm&rYO6{!&j|JwJ9vP{U zzcYo}!n4P3Z(Sq^*wuw4WB&_pVkjfgzP+7<)t5{9AG{3)`1A8#re8~W7dPJ3Lc5;@ z1TW)Z`L0>`X6qwjs?!hnua;f?I#(( zG=dF~kgzzYu(l17G-^c@MaNIXUErL9%*H&}cH>m7h3W%lv*qdV#1rXUOOV?9-?rGU_-*mCQS2 zNR#2xac3IVcOgjVqAS8F3svT-FQHkmGm^^|X`c3tn+{=JFy$40^n5Y#CGQ3KA%%5P zge~wj>&b{)pvmx9+#>R*+WU0#<7*A)>?*e~QL7SgXnXUH3`w4j-lnpDbo;$VW$Ey+ z;`ks*Vxkoy#$R5a=JrWYZ0V%5%5`4xJCqubX~((V?r3Uq33)C|p1VdDdU|>8AC;8C z#ii2rwEszSDg9XdNpmGh5a;-={i-ftBurZz;}sz#C1tzrx6XBV?tV{CUADOA6kr9n zdjzw5?{{uZaj#D4HPXmPSkJSY-O=|Ru=oEd%w(hUkUkkx>LlvNFd_p_c75?;SjdG{ zst_?iYX8FPc9*l|iRN#N!etc`3Hr_>$MWvpPm8o3?}*qf1-4V~yDcuzPI^P?7nH6f zIO-Yk+xK@-5iMbuj(6?jxzsl^rREt12A5Lr4wvAk<0!K=48J8|2N9>#{&B2 z`QyKN5-E!RU-Bt#pBL^Y^JyKdP6W5SE~g*eY+`keJ>{0&idXVR`SXjL76tO}Yvz4R zYd-m|1;Vop3VtHUmZAmMRsSjol&ohE$Ase_WZ&2zD9J*GVD-9_=q-FOp9JW718)c?2H!&*||`#&{VNcWMZ^ah|04ADD?HQ2aw}S;XeLqO_7tKx@kCboG8@d&FVI}G zv9L`^;!L7d{n2^!7t-rK91t_5FKmC8cck5c*e!}J>IR2AUBJ_rP$DxklfWaR2pwH! zscELt$-+r;kWJ^bBQcPss-eKs-#sQ_6)hsPj_;&Z{_R`U91UdIn3Mf3~`oA)@qb=9v-ikFv*+9bF}7-hy2Bb`j@qd3v)`o ziN8RR8U1-EWAwj1y7uJy^}8oBDRvH3gj-6fXIwi3C*lFe#fd2se)uppV5Z$%_th6;uFUSC;}{KWEVN>+W@8dw?7#1^QE zcx&TtQ1^G_yXb}Nf!%V~$QpKj$24kNG=Y~m_R>zp!!$$D zq<&+nC?rj#A06C&qjMUM)`z2cAyLi=j}J?XhW*#1Oi;X|OfoS=){6#b1R8Q<;W{Q5 zcVsyVVP+Q+{rBwj4#6}MrymB+s{{#T>f>_*G7Co7Aj(J&adP1Iv*kLg^Yfo0eZLiF z&s^5KdR-)QVSQR=O7Fhp(`Hk0cWqdYpNOlP*u@Y}K6Z*T=9hdnMOzl@al_)$Z+^`??shcQ}B-?Da2W8eb0A9?`u)Y^d+lUhRTFWRDAgsRq! z^p}MG=(p$#s2!29N{#bv&aXcj^OH>j$=|*SO&CYP`7Xn>m*OLW>ci~9j-q%a?!NAk ziy_AU_FP{S7WvZPExVddhp_Mmo%~uA8PA({7GbFggm-c#7UawswF&frw66f~@4|H- zan`Q%jVHorK4+}N@i<^(#4ppTRq%rZg7OL5rIFSP6o-H)lR3WT52gkUw|Aj9H$sEKwVJuH7kL3 z-r1s+Ua5}sC?8claEZj=8C4G%&q9!3n8!@@a$!vE_|H^2^LJk`S3#J(B?0vshRR6Y zo1rMVBSkC=CXrsuCw-2zHHZ5@;lxy}WsbDn+jaOh6=(DwOld4qz^V1gM60Dn;++QJ zd7s7!wEE2p$5JP(b+JE50q-YMavUnTsLVWsU~k0*VvqgY7xL99c$tAbKBHB1^|&4H zKn?o)7Wk`zin`4gmm8W}u@CGQbZVpTL;X^gtUTq@sYBy-s-(q>2jU}m5U$V@Um-Kq zVOWO}@RwN&OT9J5!|5AP95O5p>_FM+DnPIl%HUt!L)+8TF6s|_let{8hgX^yQt8`B zjk2jgUxdw+aAFL^??YeP~J~Z-XPqJo0-Ij7wpI5eJLS9nNxfAXLWVgn`SET75y-TB& zg5CMGDfH!=EP{*dbe%;=LVM-Dv7}A3?^B%I(F-5nG;&0|`cjw}b`k!B-v-E@tlw5c z1M=}3CMG7_4($u)nJsl7;{MYM_-ZXk8vhP7Wgu7Ene|oV`BlO-GDZEni($;kVgo<!A|<*6qb2?ZSM`zK)s%V`33X z)SNL?z-=TA+j+KUYP6A}!tRJ17=B=x%lHW->Ln?bJ6xzlR9mi^?MAZd#Tu@7O&IrE zr!tI*T_>cESWj+p`m;29aEr>1?u(2G`+5@Rjb{!PgqT6>Ut5b|()gq|RiWx0SK5>N z^Nc*LivCv2`>-m7rw8U&Z9q9E`8||sWo-|46r9Rx^jDr~x~FlwXkt+wOPJ#javyr` zcNRmAEtxhS8XsbKC`-78nZNp@Vh}e1Wnh5##xG&7Lxx9V<_eCovLpr5j=O$pmpq?l zOL}Jg5nwq)4Q>&kO=UQm>yv7(Fa?KBz6uWUL)tMCGz4p>P4|_=*Ah|u^NJWVg=`PG zsxSTbE5eXYLD}+YUT<_jg7(=>3%M@1@N2PL3=G}-SB%OdsWd&{%CH^GX|O|Kp7S9Mi&b=5idp6fJG-8KjOajg0F zbiW;mEQ5cv*1aTP(eBvDaHpprgmvi%bry?AoA8jJX%s83CpF!nhikhk>e~Q)4p&gZ zPefk`Z2n1|qkD|qC}ZzK~Lsqb#ear6>3W`m}~0aBCuu(|00 zEo**)a){X*f=T;XuAO}d@v2(oP55yt%8HCyPIFu%*r2iow3WsuCSL)&GhM-V7w-X14qGRvAck9TQM=_LIB`Xv3AUD`*Gcj-S~(}1GaC&3 zb-k8~h4~RNrPPSWM;US%aa{oD1J%3V;t%! zSN{7uzNp~yq@(RWz9J5TpJIuBNK1Iyk7F75$rORWRGslxjd{9tAJ(`ZUfL7( zV4B=hiz9Ay)dgVOaFv%4$@L1GAqv`S$W>*bdYhItrVIRrd9yaMw7Kkm8@iQ@KPYu7 z{pWbK7NYI`vHLkN@gV~nNLF+#7F4L#+Qg~{5W)a(G4Ok;yju^o#IIC^v*)SV_9^_W z2jEh_5GPDvI6T~xbgbyd9@GU0kojTmQ=!z!Dk^VNeCA=)NX1ro1I0&r`LnH%Ro9f5| zv;W#D$YLH&Ip~cN?=f+_u+l_fvC-CyxE|mUEhRk2W2|3u67@*CY;=*^2Y%=l0#qgBV)&_`7M;H@8bEOLj#B6) z--70pAj@vgiN25b!F_nHIw?H>)v(F6`d`L_5|2?U&GSqC;0w8s)*C_$hkqK1&li#KwP~Kn2a-^ zLI?08_v1BDP<;9uPl8Vu7U3SRa{@-l4lU?&?UFrA-a_$v1dS>qbaFcWU?A6AGtFnY zJp*3?3{V{KC=J&CV)Bw3(?qYd#GAlBhrHB`kI+JGQmgs~`YPaBe>%x?Vd5Q#Chh@h zs(t4{fjV|tI>d1S1+)QE@IOdVn)t9>eE3eseF1`C4i521jgfkUByJ-#H_bVm znyViAEa}wD-p;wc-#Pe1y8OoIz%id2l%}d%?EBzNP==&;o-Y*VroElIxGSwEE=b(L zuKWQ5l(ws>nFyQ6L>d%xji!WQR=?LM@EaKaW6Pso4{#x@Z6SH*OEBb3tN*&&a(Bf{ zSxI5=<8`=WuPw)nBp`sfGE~1@2!PxlD4nQJNphsucXywHBg4e8;I-c&i^k&H2Ks0u{ z9)PrPRliQoj|jG=6^xnG zPm8fl-Wy74Gxm_%TP3^<&RVMyO#;Pccj~`u5i~r~s@dOaS)!%$+iQGy{__KtY}S3M zJ56t~ra#B@b8Rq&Q(9HHk=1KZxZqP)eEvX*>H5$EY~Zxe*ZU>eC&YObXyw>W#q=^& zTIDbnbf--RYTMELnJ8w~iKbLag%}aY4T?AabNh#*&f$zH3L|kzF~L|_=j)Tx$;({5NG&WK=Wq|O$3*L4 zN8xaaf%DqjueS$Nc1M*bJKurRQFhfU9^JSjqGx#)QPX^N3A5GkZg0gi&X-5$b?;$k za%4*dygPB9nh-jOFEUDy@4VBPv}b;!X!` zxfNe+B{p5!R&5LpnBrgD#7D#jmt=>xG&nBIUC9S;?%6R|kV(;ZT>?`vNQQ)gKPt#4 zhj*g2e)oQubqbHEqO1Iffcn))?8+Wb0%uG_e*b!d$NwQ5&hi88J0kk2Q@FF>tYJF( z?<<3E;$<~~Uyb_d|L#IBI)80#<3M+zK*E3gylS~=ZL~s58yZT69kvBdpq8ohoCK-2 z@@|XI`WlnI^zN-geE3q|c2mfyv!+T9r}&zzBa)tfoQ zRz{H&ME*iknk*2Sht)_mb6Pq}@T{RBnOh#j-Y8o2BR)1{1I9Lgf77}|oB0NQGn)N_ z$A#q3eQ)WJ&8gbvJL+Xtl_MDGFKhGHYl=AZYAxr6=O3L;7yS1k@UbU=qlJ_uCX7`# z_bzosE-`(vxV6KY12uP$@6Mfbt$A?r$HXbYvVKjHZxPEo$;c5KKh1=axr-wlkPVRv zLDWQq!B8vf;f=yWS=L@|!7G1cuzz%LFou0%b{v*l+n0e^M-Kut5ZbNNRU*)l32}(T zqgV9Jy^nVWB7V)5e*0FN9q0CUWsEzTEmW>@oHo+8!%pv^wNCD%Y?nMH^9A@5)JYpv z_`pIm6ZvoOH`L405L)k3Q^?v)LzOZD>h87j>i9*|G!xmhdXz9bItXtXEPmq$mCi{WsdO)F zxv1Xkd*z&Xc_>JiRK!??@kuU5Ehl}t{nez1(uy$;UDb$$?F=V^p`1t*hKQr1cI#=| zc;5^my^OJ&CD&(u_itx-F=(OJ*G?sx4;ISq>er0sZnNOmu{9x=J);!3 zOYT+IaZG}jgRz$c@=KzZGn3AFA`#8zCNrUoPQa;!Cv*)x;@gZC&c)}^?*)K zv1DdNNENiJ{?Hml*Yq++DOLdpEK@#K#Po#^T5-J$xDA#;4oh_AI?3hoaEv#*C%g~^}LQ*0b# z@1QEid_of*olsFu2?+uKD!f0z8+|RMCa>=VWl%i#^GcJ`vhu3)*Gk=UY})l;=gFI^ z+~fVgKPT!K2lpVi+lIWBsH_tnE;DR*r`tikS;EChHKk|6jo~6L(Z5Lk+cgg$TRIKP zAw{9i3q*!IQrnxYvb=v@Rb)&xF6Tg9st0+AX!UFyr z9v%{qJzoT8R$V1`0MD3V2hLC}=UsJ;jn`C$FC#??KerUB;5@h<2c6tW(Sv(hmk3us zU@xLwdNUnWR+LFIuZ>+!vD`dd7rBW1Q<=>+x*x=mMPwE2e+dW2o_n5dpbML?Wzy@Z zQSHmN%#G}AfAn^*yQ8g*U7^|6T2@29=@=ib}u4J59CMq7+ zmw#B5zm4uD4c$uoJ^0U={~L9p16=_B_bRm_O()|2$_~xthY9-im!tX5O^~UNppW<8 zpSn0$+Wv;ZK^RoBS)$>j(1Yi2Q60elKG7crWo!QDI#mP-w8;M^r;;TTf)@Fo+<(ve zVSs-9`)2 z^nqkzkff=3L5rGJQ}f0I*6qEN!u_E;wU}8+X~I0~UC!3lmI3PoufF2Ter`fXhY{0K zM}BTj&Q7j$;^~S7FSurZti5L{%5Q4x;rBC2t~Be)eSLldqWu5Vk{OSAc~0Oh-23*C(V5j(=Wc^ckGr=qjapnD>~?;$@JCcsRMdoH;Nljv z0}50%G$!vaS<1^#lDVi?tnPj(&0d`8T+Ub0+g5PeF*b%8fp+l^2e_AP9NiCJmQfzT zv)hI&Q7dKzE~yUk|7k5}E0czDAy?NXc$9axXeQ8kdNPml2W@q2YU~NbP47B*BPzYe zC9`;&z(AyMl*TEkKA=R^)&4InWyQX$9|V6bhuS#Q8j6JrSKd^LkY7SUKEFS$Ds;SLFj!Nn4C$E0LB~stTntR&zPw<)jE+1#f?rfUJZDbO+dkJK-qCH&D96dhygBy0q=&tf19#`is0T4z_GdR5|%I4A|@WUmwo0v9dmN0ik46 zPSy}{UU_}{^Tv8mO0SupDLpFN6XSv`>%-H!@nrMJM3Kn;<=#Q4^pHxJTl(P4QhzvM zj-&FcJY(+Fbv=^8hFxKVv~B6|wUJg8myov*mHkw4~S?9nzDH@Ka^q(p+8Hll*nO ztUVm=A;4Du>~kJ-J{2Y{)pt$O-y8lLq;GX6y6otUt+RNY8kqv_1%7@17-vd~#3@;+ zEz^(|FfJdmF(G(VaNaZ&OSNf$R_HJKGlho!F>~DBWxm!mkabjD>0VFAA0BMhzYDqE z|4e`JP!RIsrZ?$vn42DS*~v27K)A&Ye2)BwecG6!A5LIA3X9zA>(kcrPe{mV;CxYm znXNz7{#Cq*!|%PR!PbFA=6Xwa#LEp?u-!3NlbvXrmqW+gMu*GwW4gT}TH=jsakyHm zDHnRL2iOo{0=M#}PB$1j8EkbF90~nVpyA>_D!csl5?*2m4ND!?1$+S^f8(%KB=sS} z0C_Nlvhr=V)fnklWD z&@b(xiXTnLT>$$(Ox2w3|COoA)pECZK0h1uHqpCvkFR@}RK8hhzoLcoANogR_}>;0 z&Nn-Mf7H7@n9Waw4>>MGdd<;YOjuZ)#j*V~2aEh&sJB) zl5PSRvV3vIDN+^LX+(N=o{O9wU*iz=(v(Zi$N0JQ!*Cr2h#1}EOaW*<7%|69ZtK?P z%ia{A&LAKm6ky1qHxNQl)dt}+a55i_U1B$+@;dEiQluD^7V-Ix^<)ViynM>LYJz{B z=GO%*-EAeH&PH&%f6yX{4SiRVgjpf4921#rtOn3ChTZVY<`C9*^Ti|!1GU-R*TuhY zqZqVBq#e{|kW~;V$!3H!L8c4vbEygnf-;D!l#-1>+0L}dekEiXJ7bZ z0S_OM=$9{ajKr%)7|}Q&sme10=yT^w!ZCJh{y?|V_XN;|1eU*@9egonUe?4Kh`p*PD_qkA))i`B0osAIEVBzsT+U`S zf0`S3XP!5$C9cM-g0*HXEC0)Hgd^z_6Jk>JYf-$lOgz2(;l4@+039Xw6x3K;WwBuWV`*v?{$P}Yj$sufeEQ3 zads2F>atEBk>UnH9c{{^;Dd(pIfO(PRisWVGP1bwT54&g4!T-e`3te#5l3JSO3DZ> zeG8+j{j9d2{i&Zp>5SiXudCI0g0Qz*464zI%LhD}W{`<62wn(?&Sh->S;MYZqd6Rg zou(!5=9(M3MmJFH6UgIJd!O=QLwTRP%HPRXI^V0y-V z?U)1my%(&EpR?)(h9p^=OZ{HZ1m~*Qu!wv(Zbp!L*TQIdc)M-XA(V09S`XI?^f^xt zhcJ7b((|NEPof4$xqDI@`R-}hqG72!8&Z>^$hyF0x%nOm?d~t_nRU5?69#PtX-K?i zSmt<`sdvG1H1H6Nj~`QdzmTfGef&+!qI>gxNUbdRjquqSd>5WcXc-;i?fBTwrBa5F zwn2~KTR^1*Wmbkf?NRI0+HPk1mr8k<@UL<4IuN3{cE$m>34?!+ttdonQsiz2uj|oh zq~L_WI()xpr$5Twk7w~f9T_H^Y$Ob9q;qcu`bUz;tBQTY8Cx`A^?yx7Dl}RngBvAY zE*xtmUgJctTvbym@NMh+J>@GK=P60+F#%8{D!qsNZFQp77G&DdQf#xC>B!1UG{Q!4 zLD>RCxDvrY*~?;i#OSajS*ru!hux(iDJZdQa=xA~Q22?$Zj4X#npIZ^ET5dWKHunu zYI)UDx5nc&BUu0V2th*6a^b2nzHc~l&e$;jgo<}Qx>h%+TIfILIm3+C#Nnbk(oH_Z zQP4Xu(!@*~UV8~#)`IHE6GpD z&^~TN<2=ZROXh+`oej$z9rE>AMqQu3D2Ab+$|y478cvwZbH$9GHr*fqMP zJkG#6=0yY&@SoB507nW{&66I{kci=zDR*f^xlSfpe;Om!;7v$3tfdMsV25_5EjZzO zFBywYH21}gm7ry|@#xL~Atj3yvDwHAL@B5l9VCe$*-ifk8H$lZHd;HBcqCQbw zmG9|&1{wzcS5MM6tMfUQq|ZH7Sx~M3j)GotO*jbV zan!!~Kz`@|+{H#&7{}tbGRLo?Pijg=>i4@BN*>Bp*Dd!{`+k}Tn z&;Jk1jIpzAZGAY=RIpu)I$UrbL-n@voV*@%J#98b;7?p8v^mdCG`C)RxNo=7hyE_+ z0fq}L!3#}ew#ulh9x0m^4ocGWOUzH!gL_3!+Q+lv)(NOrrxX^r-nRjfcn?)C9IV83 zEsiQG>Y`}`%#UEgKiK-GxC@tC;!m1EIk2Vrht)RA-w7W9CG9k(bdm7E1bymbh7bvC zxL!pvy+IWynQOs4;rm*nAGaxE?~<26k1U5oKn8!vpU$9+dX%+03F-ax_i*ss&=+n#*{ikq z4nDnu<4nsOLD{AQ0=m`zj&O8K;rz}aW!biYr=SY<9vrkHcBG9jTUOJmPiWy2HPkHW zOR&Omqz$!KkW7z-?(gSx2FitsFAeAC%VPZdOL=0~aQp+(8%9~y#&$KYHwIk83a<7N z5ZIX?JAgc)AM+Wiuezd6x!99Y>g%Pwdw@KsmFPR>{gspx9_o;|V^lqD+iLtg4-l#O z9PDhB)0quWR1J|`M=bN<3Sz;X7bx1J{mbLN7oLiVLH9joQ6d%{u>>l_^@Jn*GMhr%vh&<)JXd`DmrA}7P)gKEZC1wm#UHG z9UXul(|iy@*;{VRK3?6x(E~&Epp!alwVTWxixP627s0^`SA#g{ApfWX2p4#22g>XO zzIVALQxj|=*WsN5gb=h? zIj$PKlcsdz2W)`DVaq8IGR4_t&}y6GAJx4`RpIBz9x)%^UAfkMrudQ}sts}?k<@jb z&z02D%rQc3{Y$p|c2SXSnbU<@-|>nbjr~$myI#x4)UJHID0rBFK%}TTX=Q{^(xDSr zdq`*Wy;Lk|9h7Rhuu;UN*-6ZQ8GhKfnMwsiK~u$<$p8e%EeY#Pu>gD*)Vkbc?yt}q z*!^fJa}j3O;9I%Sr8Za0wAII{SoBD1U1ZMtm`GMlmNLKWbw`Jxl%5$?3OjxfWL4RcfeAJ!bgS z!)rw?@&z{0Ar=>%Ypj;Dt?7dz3^zM4L}n44yQ*)}LXuJ2Avvjnoe#vy4y5BFG3<*c z|A$@6a7xme{EYG87zd?h1H84-)djpFz(&)qm}#$zsd|E2CtGK?{}z5sT}N%?U4+b* z%up;0AKncl#wV?QtAmV`)p??`Wbp=}vDPP;z#QinvF|BQ2k@%mE%*CuO3QZsH%thx zNA7K1$W##C1tU?DULb{{A&JO8Oq#~;K94zc9~p9Fg7Zc5wdS0>-S{$g3 zjoF=s3u3Sh#d_?)2-TSo!T;VYI zL2x^wCpnGD)Y;&1Ls#970^b#ZIMn=gxzSeOw!N*6a&aiOcM= z80I4pIIs}{;cf>cnfTSc9YE_GMm^QLLqihhIpkP%8j>@7W~i)Y;1){!dQVdpQ3$J^ zd00Y;mZbQzCM$O}XLY&17PPpw?>ms42LYu+x0L7}hxs?cJ}r|=x~mrBm)1kUbK! zL(#K{vU}BZQ@VF_0ne0zirU!0zQ2@mn&kA6ti~$5ZMFcCa5L*y?W>;q_TJi^Izb5V z{zYN3PsW>!%L^BEa_Br?RXtki!^_cylHT3p5`$WLAh-PZHwkpIBSrz@H+yl@ zSPnG4KA0vFNMN&Cf$9gz%HprD!@jf#F?mg#mB`423$yWjVrDCeWU+muw~x=n+P+_6 zkVYg^lzoevLkpKsmL((SFkKm`!t!mlcH{YWns4h~1P8LvQCTcWHX3ae1B|5;@Sc(llbY9Y zpo3yg^1CB`>kU3Z_ULG6*^sW{mL5Rg=<-*$8(W!EnV!=_AK^+{i9rHoMVt3E+=RW{ zk~GXnb!0h9j|;O;11N(n!mAVb&w#jx4hXSP?k;YsFQj0{ew*ZVVuQ1wfW%kdAS9nN zu_J>NNiljTUH3F$+|W!DMt^MJ={hk83&Q-JgU7`zbcaSn)S4o#x{vY3-!OoHFiDL| zKKb_I;sTq`Z7bk;viQuMTKPJ6gW$Dx#3naiz!~5nN!=b$Re8UT0GcIvarx2%AJ;l* zsiHDJ8pgbKc6YuxA=}&T?WqT7B4=ee!rk=UOUS{h9Lqttdk*kGkAZ>4HH>;W+)sx{ zV?Ae*yUJKCq`Xw|@RW}y2MhA7j+|;@Psc_~H5(ZnZ_v9xZ@hAgFRQD`E-g*uEWDM5=`fTaj8f!pXCsw8*>$)V%;H%cRjD#tih?EXeIb|`{>a1Ls-@`87Y}64m(w&u8ECjByT>7O`PXF6M}jrFiN-ZY3@YNH{pva zwg06RhU5-%T2ohUY}Cd_JY7ua-IotJ&+d!oUcdZ&$U4w$A!=JENE;Xs2Z*&kZQR}O zLKmPOTZchP)}68sa1Tm_&zU(!qi)poat;jl{XwN>iaxwrjTu~SlY`0U^tHX35ejP0KoHifr{S8?!si-*fo9(*?!J5gN zuskL>30WB4rB=0QNLw>)j_oiiOJS$!3|+Cxv(R>dZ^)k2AS*o>e_lgPw#Wm@vJj!A zUoK+_SIA}NroQO}>OT<0@BhO-5E1{a02kykByN<6)y;|JdQl6N*4fobMCyKc-cp{} z9yYON37QvHGx zO?|_c(w2$gp9)Y~X#7#4#g@vb0tZ&o;8gSy6H50O8}4~`0f~@J7<5ivtxktBGTA41 z+_fGZGb-x;AkwPX$~i+4X#q%-{8uHL#!29B zgY=2`)IHnm#_7NlqE?5#&OCmAIGrx6wA%_L3-)8GU+BrLT1w0>63 zhl_{nl0SH6w?`%(uEb5acz9N3cy+efuS2L1%9g`txa5-5qt*Zh35=)6wM&l-;Wb1{#<1BMjE%kZ<4=m^?i zPC7f0ClaUN`_ps+N$Xs*>bFwqdAf!%d4U=EUB9|IB>m=-oy68Leu8I3NnFM%Q)WUw z=(wi!+^)4v4i=_jALCfIFx?b29lGsgPD&Jn(oY*^Pjk($=_!^Pzg$(CCpJ7N99x%s zMRep&L1Y1-5=u%-&+6mhI@?_BMY5O`1iF6tvRC$HtUyAihTo@CSwh0y(sFi%=UF5a z8GGl?Y74L1?ZTZjTqc|mprYkuuA#*VGI4oY>5qG;l`!BxQkiJ3MDjL@br|;|*k{&p zgm`uJ*z5rJ81ahry2jCU_|HlXeCe)@^k!y?U&BdnwZ=7zMkpa@Mgcq(aqYQ2-YIM` zOXT=x5b?Ss3AUi3dlBlNst@(MdNm7q?O2l&h0nE+SFW|xu(PupGbcms$C2$cSWu__8~wJUeBt}7MFlIrs^$r4ALgj z{ehcX$zo~<3)+WvS+YL@{)AZ!YB7X6B(;`W21vBuOVydbHDy>z8mheypv;yor%5OE z9;8VrTK7$m39#O4d97)s(z|jx;g>R8+#Y?aKeqPvzb3o4q7kQ%ZYSoc4=X20#dNURz)rSE^>-cBmdAdugLEAYqN`UXemv(tk+m3&Vl zogp7}Ux`{UFVc|N7nAqa!O|8Z_&D296LYb!)z((%vdBmHeG?BRj@Ukq4zK<ONJvX(vAhohM zMO0cE`+@)C$B$4KY=^yH-3!&2kGFVc0O})qs$X?(Z%c4K&`Cryu8PfPMUqwd_$nnQ zEU>buYOR8wlutdY&Kub@)wwxRs$CeKgFT}hI=Pho9I5g=OdrTpTudLNH>U!C$7ags zDMq(FF9)`n5t8~|B_Nw+D%XY|T%R2J&L$nV-kuZC)O;U6j!>DJ9OIps`{r6`+4dm! zG`Gsf9PU=WuN&VlZ3R(6G%8LiW&B|%a~qWepD5a3Z8o_|e%QpQFxo!w9wq>?lLONJ zR!?x;#3pIrt+pE0Q$pvq)op6%%*kK*6S&U#+B8QL zWViz%#mAzbG4-FBnUMrm1Pcg&8Zf5L@m8&fdC7I=7Srk%e%_t{)te_0owUy$Kcfp{ z|6l|oQ}x3s|E%+&@J8ssh&7>;_MAU7emMC?}V!n%a_ zX)$uvF}-Wc22Tx~9oKHT%v4$)k;ATOAkPZ}69;>&9YhiK>nXM$Ln}sCwPNj*bv~JE zn6DTI+Moep_tqNYz=D7Tble9(c0Jt#@g}gx?$4B}5S3Q>FS{rzP3*kmaeNuVjEwyuhp_V~v z-VBT82b%rzo2NA|)3o;U;2FE8ywk*~@ukhp-ic?I*~eQ5j_7j!{avj)Z`r{!|3$(| zaw6^wZSkvfqKuf~WF)&x8s6~wPp#z~6^FjO=l~Ny@LPTL6UVFHrv8W1kYb)pY;hOU zML*7m9?r+!6lW3onA<5HJhDTLXT9ZTy=2H|uF>gTtXjNS%&n5FfZWmuZAFJs+aU?I z7dYtRwyb?=3RtsC6K@89AkmuvI`jAs>NV>6ZBLlluu9|iF}xQ9FuzK)w?4p$am$ibVwqb0_pXoe9_9ON+|LnOO9M+p9SC9cyTtt{=YR7%n7-^_d4 zYu}aLx+nY^7#<_siDDH}MQ7BZ<0dhK*C{y%%vB{|aoIzRJ{)+qq(93kp zole7)a$#M|ov(Da*GUfZXfr+q#IVn{w)5x8nDzX*S-tJ(C@Cyt$jZ6pCk~&xJ@;{N zTS%xD^UT5JZ-p38>tpUp_9@EI^2=SN0gD#IR9@ElSle15I!9r|aGE633VvEC^yF~u zT9Ve7Qa8PTJPbMtf1QvIN^GwTDy&c+MaoSm{2I5b9&j06wyW$}oI6>4g3Q-9O7$4b zzh5>WN)Ny3aTqP=QC;1EN?Y{cPXi4#6kMIZYy!pU25kT}ji$z$-UhL%MaF>gRt+Xu zVmB7|H2!6Y()X3eS968%#6>Ho1u3)oSVM_1X$fiuGG3OE`&EVU9ti#yr>jRrKk-hf z(>?=fgZ&O(Aw|#V?!yVY^;YQX3^S8=2if;7sOCdOip#`H`c0pvfU~9G{?EY486ax| z26Bgd;(|cE$2YVT2iMA0E~trV`LiAuAK`q%lYzHDDO6zo^eNwHyz$v30Hpk2J*%1- z;Werv+j^$Rbf{TOAjzqJHJs)!>KZj4`C7EIpY|xWX8FwjIu=Z=(2~0{K7QUm9w>GZ zjo?2+cz$>`7aTLvHgL+z<$PFYqjGcL_Y%lqcC4+amkw3HnA8g~^*3qCRJbgwG}S7B zu$sA4k4%+8W@;`EZiRZHK%(N}@*k%`k?gGl~zuwZ-UvU$ND9}TI zZ>XfX*gH?LFqopoB^%s2K*M(i z_4Zxg8vp~F9MZltr(c%W6osv5r#VHI*(_J$k9k6+-X()M3JC;Xtk@x|u~Wo_$(cLz zJpGgTAT~(L=o${&_0m+_IPhUMJE)XZ!J)|x@>rnhd_0K~gDOt_ftMalzC!SNiJ6{S z9x%auJwz0>m?cAwMSi9$;2L=NyH(#r*Ss!wAM_l`wah`yb9;kQb%bLgg=?wGFwu|{ z!mb{-DpS^Tg#$<-77%>mIpyE#thXDDh*(k=w=w63Pt1u^_L{##H^{3mbY!q(?BZM)&_>SG1$pisyj z)q@1MJFyw{bq7*bvwfsy!LfrXViqTSs!~u~+&ui{YeQs&Y>RDnyGx8{iUK|~v`psV2*YI=yY?Z;);ip5j_)_<)<<$r~ z2O*C36Y-Y{ai_Eq%&{V4Uopp4S%a(RwKR zb8}&PRFU=qsx|jIFTUDw&*T0oO-jUx^^|{^%*MI;C^1@q2?59w(I#kJj2{l?GW7zS z|A;d>|7^Gau5h_gM^*R=X81+a;5heWJ+42wzr*JqeYZIJ;_K>m+im4uyAOVCxkPpU z`50P@+H$WsqqWMz={~;SN~x|~S76=WgO{pUT}6(s0rfg@t9=%%5Kx%`XV>(K)!khQ z!WFt0zUmhcRfN0!%6(;d3xhTYZM8Vv3!T9j+QT6dH4^+bd{1NljY%^;Pu``cCSnapOpH-L{Z!1@a{bt5qBi1*6PONt$NN-qI)z0v%f z32E+x{22uVfactJmiab9(@<(wIH8hMAG{F!wO%e_gAHLWRbXK}Ol++eT~@8`Z*Qm< z-+(7v`A$n79)`^hUwe-s?&qvnqf+bqXO7&Mrj|>2U+6-hQlPujW8=EE_WEV#GK+yj z3thKFv|4BO!;GgpqmV_`$Cjm~Y7@w0FOdS>lU#qtEOhHu3U2*`W4o|2w>`NTI*9wY z;3Bf%?AQEK-gDE&bZTvMD%xmuXL9>XLC#&Scg^mU;hy^t$JCMatUJ)F66`JAh4TLI zIA-Q>d%BZE06>ooy`n}}@6BJ_Uv)N##4E8HL+R=H9%QcXQI1bIcusO=fw`Y#SUbPE z1;=f-f`t(e zrJGxfUFq}Hu@R-a<>N{3%+VpOe+e@Y%@uy#RNAX6XbMt4wAH$vgY++?5xJkE#b|W* zlyK$2ZM>a4d!Cx`HE#U1Xu%{CKPNBmi`wu+wuDkKqg&+1H76Dhj`h=1_g^>6yK|Y( zYG$%CP$0I16(V<8|Ctwj?%0Yd7wu)6-}JaOI*O`cv8**0VUy2s?PX+TsW))%S2{9t z$}X4tir=!~G&gZtHT@5)XNN(GzO(Rugen&T0>}TUQVvC<+YU&_V{p)bF)t>TmMze5Q7SMQ2>G^I8yp(9urT3(ztLt4 z*~o$}9l5cJd0;;H%X7${CzU+Hc=YMnY=YlFgV4B-r10QX2Yi6R`JXGZTo$-6b|I9~ zDHzz;*xi&}wz{p8v1p&5U^YJN0?9^Kbtud_`e(P9jS?#>tJA%`HfR+yYsiKL)zs9c zxLx!~V$dH6TK$v{V#k1OA4I!@eINJ|V{DE;^WSv^q*j-eX$bb^1NKElob@MzgMu<< z-VML&dWmaD5ygg%mJnhy|G6gmjc+_Fkaq~F%4d~WJ3IiG@3D@zNL_BZ^dt<>=r-(c z@*RK9KF|MXdPG3uEnhRD9kN?shS|YCKf%^bmwF2oBlh^r&-FdY@%96;t8V+KYTPX{ z44THqGCkU3a*IzJj4@yh;h&Z=!aG0tTQjfJYKBphNe_a962j4;p(c4g7LJ+IDq3Q5 zXr?Z~MEENxt}o&N3Sj@A^rf^1P^i}&>Nl0lp-7c+5$s0x7+0li^Wp)`4OQ2wuR%ryYKm^PUDafb z5hYsl>$b;rxE(DlL7+Xm0XLe@HNU~F{72v?T-|&vL1-<}s=PO^-C1cjmqk3z0^#_~ zbTrNEp&ocl;qU_Vxcx%5ezIrN$KUC)>Z3`&GKzNG3~uc78lh_h?h=i*;mq%xJLz_) z7(yck=$hFeJn}YW7y}X;fV0}b7`xkk9Q=En!Q zU@uHV@No-%o{27QrxH>GT$rGibR%+J)@8s0(iG zfh$fYF$qu;roB;vJ5Lu*h^+N_)Eknmd8eEv)*Uc7p^wGEHi*%k=$oU}JDJ|0>i=A7G z+5=>8i)+^J`VnmsYhYA7L{QXk?kEWu*WaGPS$@KoFNr&8hYJdh9k;N5^&%U752BHW zPaVUI^shK}Nk`#~EaE7^*FiyS0+V$koH0>aCZspD-G>2+Jm>0a9;SXYR26CGnr%7w zx8n3F5?Qx0Mv3<5_iQMV$tgq9LA57tt>Y(hs7B zZ}>WhjTIEsXmU+a?AIrx-#C1EW_V4e{kgfFwB>7*;sq_bU!Do20C%dA@Pb2KW^;C^ z5@35cb5F9mrXF{fgR`IQ%Xe}95{ZO853^=_*LV|B$4^trentT~6o$%EhsgVy%KPLu zx`7w(Bw^(n-hB7sOM|$B?k-eKro2sH^DKw1@l`Ok)PJfVmD6OVPVZPOtXEW=d?NA# zjE;iyixu-{loqrel^T1g4a^WM(MY9Fg^>Ce39QhFa%|$;Tx#$$AbdIqnCiu5U3S+~XC^ z3TZW}rU4o(r2Hj_gRY_!dySb7E4yIyDGYYV`Ebjn(JD&FpPm(#F0N7NG~;xpo=PN< z5irzYnvggAyNV6Y!Cy4yClQ0N=)XdD+LP_o`p`0N7ftSsI~1p+JQZJ2nOACbV7&`* zx~Rb{m_pTp>}O9LyTr{j_{M$|+BnX7Ni8sCE&W|!QxUBghmy?fP<4FF$0ccR8|#>H zGWpN5yiEoLya{S|TW#gJq^Q2BMtSiWpC*Yr$ZXB2cPgxY;=G;WD@bGYL2C`a-$D~gO}*vJHHO6q zM$vPmDzJQmVO;32EHGF^ojQeR{vcf4sYzDUk3TFcF^T@bDZ%M{^kY=!DVyuG>3xyY zb{*5#bjx2+81oi|jX`z_?2L?zgO=r_HZ@{T>TBA?l1((Xv)T;bdZ})AYdd9!U9(#% zOx_3W>^sN!wv5$gRZ??GQRpgg-%O)v&MXR8VMbSHLd~9$LwpamI!Yd4 zuTTmgHbtmdtPGQ|1$MNAdK)}%QG(-@8W0TFmv(K+KVGuKlxPDg+jQrAETseTa)<#PR%8&^uwNZG_|=UCXGml zfe$jd$R_xC$Id08Krq@C6!6bn_x9U=oSSD*=P|Gs=+uH zNe-^}%#%anD0z16h9W^uI`<|tY$%CfRz_Flf9@VOSuTsBLx>G z+oB7hzv~uQ0x&;pq6d=|N7KnjT$8?QAaV3w#MW^bNo;$!*jZ{6U9Yh39_?}r7hC4n zqN)?AxZ{lU$pm(vT=BYYvtwFRcTwPwK(XP<`#D?7kCwunjfv_yXsq(>zS@UgdcdIV zd(3*=8@k;-EQ<7IqaV_F4semNQ^eOray%UAxE@dwdCyK=Tr;Q@d%DKhcC zN46s$Y--wEr(*ueP87gfEoMpx6#Y;`d`Z7V-N!IFF?H;3rEMw0J-;l;375s{KsQ89 zycca^iaJ;1i*k($*$-ZZK15X=O-@?8N&2p2ZkXO2jMiKH8QU7ob?^%{=a*a|7q!n- zKXpdgsxDiAZnyh}gL`i=rKzYqvV!RI4jlb3!M{rPsNk3)^8!0NqWdWdy9Cd=nUtK8 z1Ea`Mo5hPGH3>0)MNLJO8m<_UMYY30CP$Qt4hZ54=jzVYew#&DL^qqtUbg&5>nBH! zpaIugCb6=8+(N#Vk9^!OxG)i7SiK)*)ht{*(?n2{Gu0J$M+N(AL%^6#X=eE$whDzl zSq3L8^h^RW-Tgbnb0E)eQK8;D8g2o-rXBO`#AHjSffRcEu5s?yYiLVw1ihDv1Y0_G z9u@uDqaXb{{)+;9Sw!DkPR|kVVkY@NmyYsuS>1eK#<b)$}0EX}bG;;DZs+_%She&pbi3;SNXs_=yqVNK0*ks-Z1s)l--wqGJlEWu8Fw(Be zl7dL2+yOyecqNq$gvRHT@r3kiGMbI=vK=zT76n@9Jut4L z53xFaVky@L)c?3>j0n}^ULd_12+(X_^iVbm50Kpor!<3Iu}7|`j4i*x=kt-kh-bqt z5nL;lF6^rm(=@e98!7KlYSubJmf{d|{xn{Bew1kM!$wvIT+<1toP>5RaUP4_JZ;h# z{>)wZ<~Sc)NjB@rBn2*vcmH0cw7fM`$dh6N6aj2U7a%GK3l2O`0JoZtj~z z)6=L)pf+L4^9hmfGOgGwytqmJ@3}(bCtTRyFgngg^4wxu8hpRMu^12DUpXh3%@2RZ!%Y&mopp$ zAtEyAQ01@Im{5jFgiGCH20I{=K_NV`E()Aul0&RGq*@_^KyH3BYx?wE)M$rFt$p{! zrDwzMY`1I&1Q(MtT$u3FMQl;qLFL<#R(dDWh858eUGK=aG$Q2QMq@~GdGEn!+hxOr zA$n6>w*fnAcBF*y1&8G-FPzoT{$*$`^6^F#NK7DtGn07F)^den&OaLG^tHe>qRl0D zzA33)YPLTusZ9{IzpTZYwavI9nb=^0%2g}i!xZ{BzAAQjc0r*nFnWu)gwn)yn3FIqPblDVKtIDEBU+fg8QspfW|? z9OBOl(h}YG z7F12foP*zL9w>mexWZqZDien;sAPMTxp4gyWmx+f7?bi88AK^wG53^K2Qdzyx zTA;2Otk&gkbaOH}?iOdENyOP1rFV1=C)wQ^+EnMk7)HAOo~iBU0!qp5@U=dJ2jX!= zYFO_}d<>Lg-G}W)qkEU6bMoG}2;^Y2hKOBXlN_pPnoo^z!iOE%Stci+8k+ z8@nrS;kx_?(!bV0>4YW(tHus$xti=>P;Y~|w@vTm7Tm#Xb_n_a&d#b-J7amL z#QnQsqVl%Yr^;cxV~Z6A{DE&MkmTj7Ti@>eo@bsAWy00c>Bf_<;SQHcA)Psv&uh+( z@wYSL_YPY$=Vp`33NhW2MCm4tv&O*Ab|_Skp-H?Va_UiNXcIE|(p!O{N^3XH#scGdxFFv!HiSQTz6-KdiIX1{ zSXUh5LqC73;#a>(0RyE0riOvyugfxkz*@kHt6%R4!6$(S?=7_PnFq<+>68AzcU?SE z2RuDbftmr8j7_G^ARW zqw8P!_>|TAv%M#@Vs|(oK0UJBFL3XfTXl3yg_o%GAUh$)4pvdfGLg4}(H84{MGZ)#eDv-fsgcK)OiYV71#Mv<5~%z*DDCfJsP z@YFPcQdf_IooISL;YXz|z<#3PdfMQ>>2Ulqi>u;qCBJ$zCH?n zz_*jrjeZ0KgbB@bZb!@W?U5G;hj==r2FB9RhcDcAOUog^^wZb&&6!bwucG8(4BEa( zbN96_qKY7}vz)tN3My;!(72jInFFV%s5FluVqwmd7^3w;YbfjG~zxht0nL^8Q zmr5zY_v?H{qF6K))LKefu8Ow{>(ue#fkmI_EF~*vWip?6W z%#v$si|=JtCnd;$lE~GFl+Zx;)eV2#`(3Bi7y_Dz96T+K$jus;X#~Hp=sXd<@VkE_ znXd5bUcr*74zEsSTJNDDXl4~mEtJ*UKL~ASQ=;JWqcJ(&u2d}E3EvxE**{p&z5w1= zdSF08_lnHYn=W$jbk!sOx1f;2K|8??@-@By*< z85TYNL~d^8;>4ZRw{MG`Lah3RG~2Bn@o$h)s{;{&B|{L4@VV!OT7rL?VQOY}Kw3#q za*&5*cr=a;clC|8^zsjk+FwCDdwK9*@Z{Nlu+8*H*r9oC(>kB2t8dt|XQOG{78VwA zX5J9&F?IgrhP6k&!xut_A7-$$YyZKZVIXMmvgI{oc23ATnjYu>LN3pGl(`q;hTf=! zw19zA5G-H#4`d9Pyge*IdwdrFd9qIU9}pP=xA(7?J3=66h%+m*vT}UmRG3cht=H#b zyceL_{nh8qs>V}79;dHbT47}Is(L|&nt-97KgG};F})}Si#35jAnmj##2vs?EolP# zU)=&dlcSS@+&peK<0C{1%cy@{694f|?EGrJOwG&BCujfbZg|zWB8;zU5&#B+ssHt) zu=vyd4?)QK*OZjBdX&Epe=!JSslvf_K}4K_f&$s!hu_Kt(O*wM3)J~|jqRA3o7=Ul z+}Ti5Q^OC5a!p2s+vSqrLqL1TEy3I#=@SL@kDc=cMFa;Y=+C97oh}eJ9^_B3ckdgr z*WSj(%AeEi83GbTYT4fZka~0b=QXm=XIig$*t0**k{{NeK4ELWL1u&OHZHR&`zJz8 zJP=be%;hr7z3h{J-1B{1EA$I!2sgQW3a|ILbFN=la1B)jGPD7aN{PNGn(9(|R<)u78 z-q03gZ=-K$3yC5Evb1}-FcES7c_+d`#Ln{fj+Ka=?e85k5exIn9UmXyi<6zGf}O6N zAtaHg0y`1=pBSPF97G)dilHj2XKJYblBu`_q-b^yBFOKh*uOzeBKE%}{Rwg~5`~ zV@1eHTSycII~#j_yT3%UC1Pac^Xm|glW+4U2-;Lcg1~P#Wve7lX>Z@?lfgjC(2%Al zou6oDxFkMpvg#&x_@#g;L>!Oh4ewS)@24v~b=r zZjjqFy+@*{{_OwNVk@Bi>buA(qBImx@VXXI%w= zE%jZ*hD98mHRMVW+TK&7iVn`C?mO3wYTdA@Ppr&{#4H#xXK6vtKmPrJ52!$EG9R;; z^5{}P;-^R(lU%^y(~KVNG)VrLt)=_t@S1*e_*oR$)>XAO@g6dPT(!VGoU8$|@aso^ zZ$5BwkmH*`4Y&kL567*~eu3y-Ibqh)eIr(%U`M+a=`j2D?B`N$O}N%JeoSE4or;ye z4jb(MxYK07+84Qs0$h?V7!Q2lRm z+K~3HLWZ z$Hc$@5Yn|0Gkj?y5eFnB;9&fxibR|oi~wm}r@sM4W>%Iz<*WRS$qb39`ma<>tPBwO zXlS7fN%AL-;2%Lu$H>M;^ilvsTyj9P0Rsa>9={L^A|ef$AO!eBsQ*TQ7wz)D5#WE~ z9P5AMoH&GYLXhU_*#POJUK;ba@&E5^`>VJ9VH-QgKWt-UWQVZ*Uwr$c0{>gJUy}ZB z)&3v&_CMA0|Hw2tMn-y;e>099Lgs(?1_}Jbx0hG{;TtQ{f8`qo%l`x4SegDS-`E%# zAbewm@QsNXqWoF^SHAtB)PEzui#q>r1o)TA{}1c_sP?}kgk;DL_;=4?W`<~JbC8XK zm9Dx7Rgy_yRMx0Nrmyu@ z$Bb^=^T+3n^o#8>b6fUXU+AAHhK4Z)h?kBVnA7l@%C3Y<#JKy?kTW%8<5*OFj4p$O_!b&F8qi<7je{=qD zqtujkse6nk=X@k|vT>dUxY}y@bTdXZh|4_AEnD!sW!2nE^X#HWKx?Jfv(pK*m&N z)KH9$Q-}fxTI|mw@z-XoBFiH0n&H1Og=VmkQ24d4$;loe@RO4|&|58usj_9&#IwJJx}?xS3-zZf@hT_Fcb_gb|I(MAb@@z2mm~n(7** zU;*S@$oZ>bRRMXv-vU2;#7OFvr;th0I$ep-kxJpDri@jsblL+fIRN>Qg%p26ctOG_ z`x6~eG-5U}Dc-xQ3n8Wc2HGFSHxvnvmzc z*Bpgiqub({bg=te=_=_nGMc~tXDHzmC{9ntAkDCtk`}HLkKb$Ylyu~ahwUcWiORrUBV@9eJ!C!b26d>^ ztqdIiB@jJH&^EEW@eu1!pcI4^zNog zulD(@7UtN7^xH)$lLCRU`&^t@4{jYDhFrEJW0v2^SzHx90TIY&4U%FZZ4;-@#dq_# zD`RiGC?}(SoMXlCwB1X%;`Vuekz}2Pa)sK=QsCCq))uJ1WwUty4xf<4r7LeprI_PD zUQx4^)wF+;YRW$xev>$0gOJDav2Wzz`{epzSW7WuBoKo%c&2^9s}1<-?94f!y}af6 z7|k-5A4qaESwszV%{dr|YQO4xut0G_jtqTU4JeRuIJpiGdpj;(AQBWm5W9l;}9Xzr(F89t9Qt|&#l?An|!S=#xqU3MRzK` zY^jT68-Wmmsf*v&4KZZ%20A>gPZ*Dm1}#k-B%NtB^Zw)UUBr+xKtv|q?y z(iq}(+BQl30?m$SkZGpC1M1BFF@cti^q?j$FR!R5RblQHOtq$$t@CR)>a{Q>qeGX0 z3%}#joQ>)Bk+gKGudC~7DrFbB#D;RP9&5hfBDk^G-%*hVz9cnGZV~*B-iyCw(T~_= zDiWO&#CLBxf%|A0*~q*}Bz!*Vo5QAaH^%sw znx~zSPJMEE%~~m$5kXhm)$f!GxN*P@m<3$J0)xypxpsyZK5T+t5fR39Qo-1+>;TAv z=>2nmRv((!KO;7?^>!RBK=2O5L_wZmz*oiuYNuuPAr<-W5c%>!26D8UE^`;8Q6~#n zbOlC+uHBRRf{rH)eZOKC>4Q3{zGui$6%B$5wG*>p=2Kv`5;>v0WC|mAt4OQR3PwG! z8CC4g(B(tE6Ynk-?<}{E93q4)!DFLjGH`kbJP~g|=w@IjAvv^r8IkBy8M{0JtH`ToMci2li0S1rdI#$1I>fOP`s!DXZlA

jTvFcP7qEw1ecFrj0Pz(-ub;cQ@WBumN64_oObLAGAue+osw z;RQp)N9pf@>`zTdhF+QeR6MpHcsRuTUytcX?Hm3U!u|&GlCrZ1_KTP%g<`fd$n^Z3 zc%o7f#_M!5mgr+PYnjMq#^#*v6?y8EOa68+Y9iw!7)}-*)<}4gt{*S>fc;x$ZNn{- zUb!%WlO9K85J4GZ4GpxP-vPTNL^~W}ad0sxG9rF?8=n5TuMfar*PTzNnE3$=<6SG> z*UXNce@{rG!h8q!jiq)m0wRosr$W;jXOdXxxB5Tlq6~<1z$CHLsVyu(M5#uj(?TnB z$a|L>V;wsOhj0nTcit@Gv(+B?l8;~H85y{kqy~Z%j1wx%*N@5EzAk&|I0m+cz3>m{e z&ufpt!yg`UrC%1ipIesZe#>fSXtWx2pCZke+$}fl!@fikxa=NUKH6CIs!g$(}((}RMRkQK3Vh3>*ov4b&gH*+<~ zYwGUD)n1)0Eew(CqK^PW$p>g+|S_BYV%a12j39v)2Sk4GO z+NJue~ODMef1QV85tM? zusCWU3PctMOCIOppmsx+KKM)Ym8G7Y+1NI$BfkwQsjg|@CdW>`okw~|>;#`g?r06bCRE^bF_3G1Id zE;lP0YUCG)tvDj_uqT#2u3Mc!TjOrvyfkH+m`0CQpQPsyF+d%4qdqb+sD~>=qlwHc zB2RYJ+WxNmKp~sn&!UBgZ2xSh12rhaLWyB(t|zF2)Z)QnEQnW!5PUgum64FQd{giN z5q6S1#})SxPexacag{4+bm_<1s~-bRwsYuUe}TA^>*GRR#!6k<=ETS*o7*xBNlUtf z{$Mi2^l+x%t;GpdmRh>P!t|or2BfY+8YV5)vWoY5D?KxwwpjR$^}od&Hos3-Am)xP z*xIX4`vI2#Bl8}>#rhD)d|_nFxX*k$B^I8~RrbUH_?4@y1LUXedKvFKAvyt}`X zDq$Utv`sR#YcbU|eD8k!BNyBkh`2MIu!X9dsc~Ww|0^WKo0Hy~>i!+?^k7x#oi0M!G&&+h#V?PXx2{lL z;!z)Cnxm5I&2JlOc7)$?I-CJ&Lglq&Ww04-6#L4g9udc;%mRz6rF4UtRLaH7KuO;~ zuHf<`==5;5Pt%8a(GW&u>)*OuG`*U&QC0@Ohaaw~6f>Lnbd+Q)pW((d(zU)V37ELA z-5$ZHpi>{$rdBxelN#?;Smm-aAVNXs;-jHi3S_M*k(QMu)zi zXmC24cy3)Vx?pdK#~Vp)dA@tT(n-5Ms0u9W?{1(lUwS<7BQfiEG@6aR)p6s39HkYh zEAU!~+#M%2DM`+7dWqkTG<=1%jZr!6E{IFBIrPW4wGroiMpXdBkaH#`o|vZiG$rWa z@4ihv?qCGmjcfNc_-f% z8K{lBaO^ArN!i4ErhSBqk%R#;zJ<4NJl#c?Mzxgt(^}~^+`HFTj8=O^IYQ7!HVBAlCq}~C%Jv)C5 z9@W3QvawhNuTSK&X}QQet~Dg#Mm!KWntSx@WVrJYo6m+i+jcyxEj>%$>Ma*+`0zcO zUl_*-Qb@z6F|S*Mfv1krpird(g7vmADnVnL*pvhnIK+Tk%qw6_1}&}P zLxQjNp8I^Ll~EZIA#dN$-3zkm?xn=8wavYBxrc7qgD)cl0_38euIFQ8J}}R2(#{)o zmqK8t^CQ!)b<=u^3jBww$D?cP>MO!1BW2aW>6~O-gXULJw!lrRL<5UkXlqF!A8+iT z4aF<%dkYt<5p7miA`YwBa5IUPXou0_1&rp+#vA7*CR1aU_uEzMUAX8TL^u_jH)mYy zow)&dUB;rtODXTsC{hdqP1kb=?XH4i_@-K5c;9efq$)Mmxrry2#eE{rF*i!g&;=>B zBGjI%MtURtcL5+7EJkf~3mFDWlQtrJ2W$=S~p21Stg@o6(OSPwm>r;1%xjH0)H| z8ePX8<0)7Ky!|c1srjPF3uer#GdxXc$$5$N@1yUd0-P0QM z#ZK57NvE{=A>0G?l z-Ld@O+U+@wg$79DdSq{lIMeG9HGlPkptwR+s&0`StYsw43rw zxLk}%Dejes3r=HU8*#qBbb;2sR3Zn})i2_`SK%IWxA))qIYBvA9HQ&B8t&4u2a6{) zyCY|Ld-b!yRRve^A6C2Cibc(1;Ul&*b}ZBj>?_I5dggLc3VUg(e_}I!$_NvmFsm^F zj`1ew8Y-zNE4w{7eGw2i{SKx0+ri38Vxw=bR4N4XkN856>RJ=c$z^marRL}N98MfZ zf@$Y2thlG(MMt{98CV_A) z7cpRk%Kd-^>2Qj8RfO7#|`DN{fD1$mSx(6TYDG7`VkJ6##;v) z6D1Bjel%jLzHt6UXLqmCaO0azcZ-gx{clsc!$h|iTFKF z&YsFVM2y3G!y}=rP{DaX{D`(`A3Ru_*a;R}$vlJYN+?|!6DCookcv_v2HBFZhRwI| zCojVZXyp5kL~`^{ZYXRT$YccZqdJ-o0W{v*u)=j{OD*lifosBQuUS;2p6IYJ57>lS z8X%{i&hcYQ5~OuD+Irh&?qm# zifI&3>Uq$%Osis7CnW!(O=h};c*eGAtk_pzLW1!XX~U$B-A;b5L~rBkekCK73&x71 z=wOqfsji)=eG>1D;{rR-!D39Up>=oNX~c8W*;T_Y2KXrQ<`J7=-Mj5bt)yXHqb>c{ zeG>_Oi)tu$7ORGYU$tEU*3fg0Vsht7J`O<3z5w zwWj825Zacrb1y6sbvC=}wfs^Vubb1N?br$dH(U28{nmtN5f6SGE{dGtkI=GW^;-5A z^04cxOS}hxRkU*oqn^^Xde6)B+ZZJJ#8#(Wug+s$*!G=`qoawXsgdrH!KoTiz!*V$ zJAup!cgLCM*wTXfwVk!e)Eymc3)|{2V(8uJkcHXyA^4_4=zbQ*hF7pEi02_SO&yJ2 zUy|GaDbz;0S^A9bOuQpWH}+h_V%6{lOFSm`D2%~XQvut-S*U42!(|DVuR_&hHf*;t z_9t@O13aFtWZ?{0EQ|)o@s+li1k+v)=}b)6mt`g=6+S24m1HB$u|joGO4>@O zG(!34K*^gwl_Z(<@d=mXWE^6nNwPO|@Qd7sZOC4tv5Tt0MU;bF{i=i9_ zrkt~NYwAHLCgM|9F+L2N-2p_Z=<3VUuKKr8?DAr#FW7!E;pW%nd0KYPnNQKAw?jka z@~6&Vb0=@>NKeg{_o^Si0#2dlhe-U?K@y!iT;Jav3C^RMr32hLVQNVimlh85+Wj_f zVSCS;791T-O-*C75uREDbe|Y$qTKs%G{Wsd+CJksxg)ZiiUqNzun>a5R#)VYNyd{+ zas{#Z(jgH9bZs_y*_oNNWPU%FC8cu7SzQMry~A*e9y(-XilkHW`LFTtkJ>G2$mz5YFE&iTq zFO$4%H^WFW+n(O*7^@8Yj#o$;$Ntk9WN1`15c;pchzaOsOf9@Es|&)}c8qBKFVj%0 zTox?jV5=bZ>S{AzlWO+j9GT?9u-KJoywr79rOS_jVkvsVIsMv|J2SiL=p){+ksG_C|Ly=|_}G%CvIn3(;2`Fy9srZq;2PaYS2 zA7gq9{jI$P`wy_zZ!8WRR}p?cw%6Hj9)R#P3F7VTy1!TO>u}Y2K08?4H`yIc^|v*s z$U3r9I5r%ow`txvHD6p>pG>S|`B-SE7{eBn# z*XsQMR+ni{mLAW&kP3RI(=ETT)|=CiF$;LYI>%EikG9lS?uKhCYb%?h#g&EjkQ{f% z1WS4Y8<)%7jin**1h_dZE+)h$r64AvA|#;YaXu2MUFTshf+oLQooBBgPS<~x6%Cth z{}Pi<%`*ONBG;~!)S5+cqsh!y=bDp2p!s~`mx7;pM+kd*>tvi){=wpNB<|Q;Ti`%M znIdj%HjXcTVFsXibaQDK5lMfkvTbnTMS(na7x`eD+(}Q}67FRb)yS2I`L1Yv+e9RW zf-ROFVW9eY7)(O;0wR#JvObEL;|sms!Wl@-z@G>tRPMikYvcj3z;~`8%;g$Ept$ZL z_bHjjWfRwozz9VcZQFCOfS`9TR)aA{6Z^%^@AI^!j5<^7)#NR3DDoy)csI>efjAJn z>~^Kr8*9bJfq^@;l(O%TlCrOzo{}=r?*5Y`;%ilk_iotJ!O=TXTmMEdHW3{6VgTRc zvS)@l<7E>T7_PP33k0-V`FNjxs!y9|Z2lzIdc{^|~`B*_ciz zx3Z$qN`;j~55r`b3x*@rhi97^zxj$8&^MWQR0r-%u-HnB7WKNlSq(B9fHms-+=UfH zJ6o`cEo@_%2gSEP@v%FbeLst0?>k+ctcV4cq(0_0Zb_f9DqqC5IbP6xvHNB&=6O@g zrUAKBD(&!gTE}m*E7Rp^Jq*=Y|F)g;fTW#?jrcHL+kLvhB!wuKvDD&lux|hsJ7`oC zG)ds>D;-x%3)o4S`rx7?Cx?!ocK5q`4`OOrPo%FWCn@-gf(liXGHSC0A)nj(IHbz7 zQOcFZggc@Ho+m-u89b+otN9U*9v49#hz>q&nu{H0lV)K!O*}IXE8(*%7U19YAnr_K zW1RrD_A3iFu7=~ek;VS2k=KZ`gq(E;pyw-5t+Gd6ZdtcEpyo-qP6VOuFReMM8I%Bh zd60sVZAykrdNDBQ1#4K8G`tXFDTa2P11r^DG- z44E-W_to}kpTM<0C$Xa{mP0H$#h-zGHRIwOwTvt9C?7L^-b??P_f1YLU8#ePgzJnx zcb6Uxh5z}e@CJhEIa`x`A9x_?BR!XN5XIB-EkrWVYCM&>xk6R~_L^s{f7%1BBUkrt8ZtAWoT(LG+`=I78hm2D(&`xWyzX zXiwg>=r$3awHRX=f9vMHfW@TR7VQR5G?P&XHk=1##EP$}ebyqilJi^{& zx@T`I!7UX}+x_8mHY}yq>_MzWnQpZbIJG#NZyRA5UXF-3s)eVCm&U7Aw%Bkyz0z(B z!g6G9@j?ODbo+ZgoO08bYeA0I?Tb7>32t7r;PxOHt}7*sS-=l3YC}Lvfdky}P=SpO z*k7q*9fp;cVAi~n`8L2IJ#;rg|0u}b^yx~(^|&0SBD;3GGCOp#xVII!MvLItIO*Ld zk%fz(HnK?JU$O~aKGBWaRt?I9rKwOaWr`5zfC_PhUgvBmhP$HH@$WMU&1Wt?R!ZVj z!Z$B!0?f1>miuK4q6(;rn73FZ>>^0WpsL*B?R&LFHI-((O{mZu*(8weEm-~NsMe9z z;!p$2SUFXdiO}J9weK=i*KBIdEu=!1pU?^oSDnJDFq~>S@o6h7fQgr99*SgeCepB& zl1gsceQ$CkK}W{@kkPNfd7p|}R`is0mkz@f?IYKVw|si2aESowXk;)^HNZ%=&f;!Y zLz)1%a6^0`g49&+)?#~K4`4Bs0{i2IUxth=*n>d&pp|-Cjn(Vs_GjHW55mTa-&S^q z3w1TN#`ni*d`_#@%JTuX`AB<<-R(8{{gC~Am^NK}i{X$Azv&?cG&|L#rb!nt6*cIt z6W(6zZ5H9OSrY3vIqiMGtesd|QXH&dzgRdMqg45><@Nn4U!wnTy~R6#iB`dbvb#Dt zfN5a38DbX-6VT?JZBj*De4G)bwn7wr%u@V$MXm#UG+3*Q<-5wyKcBgAqb#pH(*y8a zGt2hGM9vV3<`KW@YPR2sGd<3boFX;rq+%gmTJCr?6Bu^31q|FN)Z+K_3m#ISR4VQ}j@}y#8=~-Y4Kj3Rf<>{^%Ro?FDYxl}N#me#i}@es_gycM4wpc!t~l z3Uh&~wlp~VOVUWPVXaA)>cYudz=^+~(mVh8V=~g^eK2nwP~nVU(O*K|`AJnMS5M#9 z8Y*sK9cD3QncI===!)fxW$QW!nJ%1e3@9tWE zbu`o0-);JhKScm)3E^p=v%4*%#dQblj@R1S3{SX?j5lt7xSM`*?MQ&}TUDOJ2oY1ee+-tf0VeqD)0@a~1X#64isjn4*NFOH%BfkWyV5w&*7a=`YtB|lLy5?>re9iqUsFb0}40bLW>U&lJSq& z9LK#=Flt9Q42zoJ*|~dd4UHP}^8oi^WX=>c9kf{Qv)l`IpP*jy1UCZr&M;76_b-HU zR{uZp-aD%4=L-}>{ep!iA|TR4RFsZ12~7p55Dp4^;>)AP_pCNRuvv zUP3RS_Yxqy5BmMRv%7Eiy*<18$9rdUI0wk*Gk0e0%-lNn-tE+&n&f+ypM*A5^>-Dn zdnHTs#TysvM2(z1OXjOFmHq{6-}1mDpaW_#68gCcuW4yos*_I^@z**fr4FeQD?eZ2FZ%U~|H(-=;|F>MLbbi&O2cKN(8o9WCzvh@lR zGLVzA1acBkY>83}%uaW#4T$#0`MF$0$>qU`dhPmpqu0-WgoxIOL%)Uv+iF|M6|Pif zZC~>|OsR`2Pj#T=&G&??uY~HUw1bxH%2x0}kV*`?S&PoQBqfxrs>N)NE`81s%l3X3Y5^>jV$h1~H8{ur&zl>B;=U zlDfh`D7@Dw!fEqFjYh~KB|KiuIo|80BQ4p~Db$ya-3o3AnyjB5>1u(Y@&ryuPR^@Xxp@-xbiIk{=id#Ok=e+J%vK~@(bWCc($aFuC%Zw zzReApF2HzP7f|3y=MZXOgZG;z21L8>PGc@ZA4#u(SQEbaxB|{j3DSaPs4*vS5pOETu zp4Io!?WEC3E>#t^J>vVJ#CW;w5+oh<=zu&f$;OhzAQd$=O)VCNcW&9om2p$a-sVFt zHZ83^ori_$En=5NG)c4`LJA$$(|RY30x7~%ExSv{ff~rOZ%a*4l{ciuNFJI9*t(uY zNKSZj6;0Q-E!db&<$bC0HSPwwXbd?2`L-eHOBLYbTa5~23M)S4Z-3hO(F{Z?#UPnK6 zUf+s-0U$}wzpd@(v+nQh1eG_1$39&IC|}F|YL|C!AD4V5#L)wHT}A52h7bo}qwMXn z5!+Z1`uM}>7+q3_t)zXpw(EAX6V_M^N_Uk#xO*#_ljk9gUXF>$xxJ4klVxy_eA;{* zIF_`@Pud{O(!=)5nnN>oW6}j7>K5~+Esu-N5O5rGRC(&>bEm};zflyAtO*TMY|57 zNchj2yZ`;4A=_BT!-rQlVw?OV>>z^w!@IHnOTVyl9v5kOWbtPXT#tYJ2~cxw`i#5^ z>1w(`umMzqz{8{G`e<|Yd*|~tkE@8W&o_z2Xs*8am9vX>X5I&)q^mPs!TiId3sc(Y?LAqr$eK6&Ajccu2@VPl4h!z5oYszv zao_m0E6vkvQ}3rizF>fp_?2j42-pjYj56& z^o4usv{}sXar}3NiH<`lp#^7J;fmvk1)54$+|*sx;STQTOGD&&K1#Ay1u$$a#-y5! zxnXs_1-ztEQ1X>$<{5I1)44o5AsFGibk^C00IiK?GM%R4iGgIHCHX%d@!5%0C75;4 zw=vfLEJqG8WZCMBsW!K+CQ$8wxxfBT+lG8+&Z~C}RWG*My?B(P z>C2@CHn(b@Q@A|`i#6tBFELJoXbDL8+n~vm=yhhns>=Pv($L2_y8hH1B(^x)em63o z=dbd=CfxORcqC;wSP?(8GC@=-kldo5ycw40*4K??ewM6@)^xf7R3gAz?Sy{UJxE`j zmg4{B{Ms$S<@eFdJZHY6h~|pV!2L}FE<(h`uUuWHQFNsEWR$Jc_s~3Kr>x?X{m^BV zOQQ%x*N(Pn=CY29TmJp~ytgSMYRWEVZQR_Sj4BME4r(+!l=oIX3~n@6`@D|wD6#h~ zIFS*JF!%S1Ja0(d7h17Yoy;da8$FAwhlF9;Q{EcUaH79%duu(SW=Bgf#Hm@aCr?ZW zSIXiyJwdE*e_2gAfel@Eq^7`HPg7&tLe?gCSUq?64h<1zJiYdDKlJ^Ardvk zXZHeH#I@?j&ji_;LnbvtUS4_$P3t~4;eRO4hrUmvz3aMfUqvrZ*;^toDd1yq;JS}w z=r^wj>GTBSxprwWw3y`kPhd>ve4Us zE|}UWla{R))FXyvR-&uy>1!zDqyH(Ca#H{eDsEHS+zGczb=~hcE_qY-+RX@Cs8}yE zXn$N&c80t*%Q2B2pMY%>LExkddFJ;_awZtQ)k5 z`#_#m;I-+W@^o3KU0S^=Bv&C>C|*m!#AiR*S z<~WzG|5C@~GZ^8+>^fYJro+CPm$%tLY6k7P+fce_xp)jt%GVz+W5=G6+cX>>i7Yv3 zW02QA)=qd-tp1Lk_{b^cIBR8JY?3=H$8#dWWogmsHp>CLgDl7Ovo{=Uv^wuA+VJd|l#BXIw)EN1h6$d$Xiq_VAKBVjiRHlaG^eF! zUW`z2-a~%km2w;ObP+zz9UGfR+CXfq*+^Ifj#A9<<4*8$4%?vpeZYQc{`LGd^rSK) zb3JKZIYi$_y79|?myu?wY%AU9{?enfq4}cjThTGTa&;IU6|u#kd9n^l1{owmSAmei zF5%?2b}F69d|%-Qu11xeq4|1O0=##|z(R76>hvFM%XFEpIYzLd56l=p6mE{|v8QIT z*x>u*&aB5e#2v+Mr?T)@8qc7n)~8#12n*O9rTh4lkgZWsWvvFM7dPz^{Bw9BEMhBb` zxPzXq-27CzfSr&U{NQm-WFf)<3Api5X)|B#gHLR+#NCGnhWx77!qv>-?vj zv)T3DjhmLEqkfq#!dOS*V?$MbS+Pz22Aygd^3O2K$GZf0vvYTC@IF&Bq4Dr|BVYL9|{h#48+i}7G;<2;&KaX6zii7^Y z9Y-a|&-b4=Dt-aM{}*vo%JK#d7C?L+(D_x|;{R3rGLN93fZ%@u}*sVjK(6^#AY)lIj29ACtUaq|`Yn$k^V-iR&LKA7=y+QD5(hoqkDye+{3Ex)IFc z`1<($-lbmJk-H2B#J-02wx?*xF>9_%|Fj6z#3Hm~Tf~KVZVRZLaP|3&dG+d*29ose ze`7CxL;n8tvktLt(4!PiBfBAnWv z_K*kpDAIC!6;%oo2*!pmyQsLUT^yMssy@E%Cmh|`&G}X3O3FKu&H+I^1>kwr)hx)L z4LZpJYXzR)BBfsD+-Va#=7HnVuAr#|``MMci&2MAa>5bKO>e||-1vx!kRF`K;IPNu zmwK7G^lmmg425b_Qw_s^rtwubCry3V!XN0$HPY&^>Iz>?T*2HoFgKoo^<9z_Ue6~ zgG5oZH zXgfnF*D`HGld(3N^o$X2gG1zcJZ7F(t;%Y@ECGL3zkx?@QtRQaI=7{401Yv395MAeDW3h&7D-@NSY%{EyOVxqTL2N@1NMV2daz+ zlF*Byi)uoA2^N^a^kN2O!)FlvF(`OufZM!AXQC+yE!SP-?q6Nw#afbkP`@Vhi1BF5 zto3N0i*@us%nS&ox>dyGnZMI|R@q4Zw}b<&>E1E#FmH(K(5UOBewg?QcP3~^H04v@2--cHG3ax`h{ z;>GGMEVz#m=H?Mzk{gd*E@cF^N;JalAdGpyW)-fjcG@a)Ix7~kg_M^nLzgXtiFyth z7YYq1e11srRdk3lIY-qUhoT^Ex)b(i|KQIDX{+a3UJZ-ditZcAnsMQCD=jx9&6g9-7PP%S;E8cVmO zpoj=yabc2+_o;ktDo9ptIqb_o3d@06@S%c53i3scs7pg0WTNa7+-|+;yb0`;i?IYS zO=5>QWp=z0Ea}P0@{-kfB@@?^$FDpMe~rmBlaXU&KK`m6XeP`4@{`|Y`VFy)d*}rH z@DTl3=-4}!VMt6su9$uudbDvSpm#EKruB>X3;=e6Rw()FVmS8M0>Sd`M+dJ&qak|? zFKPjSIQX^tZm}N#X4Ze{+LCKyq>%RPnZi}To1w(VPl{u%=C6BI3?;4pgX6deFpa}Z zi~V)+pCa|1s{>z;Zz>;Mks0C2Us5Lj&+|nx zUxV+c@8iCi3(M~$S5}q^9YeKL>fhK)W_=$Z>VC^Zbke? zV!k|0PO+$LM8s0=-DK%sTGAuC`QcPNh<4f-Ix-c}N7kln$FbHMHdQeAss0gng30)b zQCbYF|86^{K%}hWL@Q?F`zit>b)`|#iyIGM20!47SOX}1WoWoMCgU@GqMf6*bpGWF zwC?zQ3ip}c0Hd(+&>I7C0JnWMzd9a3i@9VfG~%h9mO%1`8%zibYxa_^f|t+{jSrP^ zim(dO%#wa=mT2CrHr{$18GYf|aMQ+j`dbwApu^WhlZ~^nWT=JFV|gsI=*|M;+*@oE zw9^M*RfEw|M0FtcZS<==7i@bcvb3?qHz+d4Ny+^b+8^`k2b%(Ws@r)n4 zEmHUqw}_UUlG7q+$@xLAzVHuBe1m{`pTyiYFadmtEo&Nu0ol>uz%7xx3)v8O*&1)v zO{%jW&ax`hhG6d6`kED?NY-zIW>e2(Cbe&r&#oaXh@& z%(ys&xpOKoq_7s@KBZBf{0=7XmYy$1G0gOEn*6?fkfXNFLU+JwMdb(5%=L|6Crp8R zJ#vGBe5mx7YPewp8MfRwLG2CfYK?^6a6t9S&dYz>#Ryo9KhrtsE};?t*2`$+I7%r* zGW<3J#eJ||uVev$sWvw4oCm8CC((j|vvyv11p? zs(tx=BM9r1%m5yJj=me-zD_d^rb@Pb$J^+Bi`Cq*ZZSvIqs8XaP~;gCEjsII9iqS< z%CE9fYOr6)ok{lA^WscNVO7cEbj4y+P85i;z{A`61w(}x#`}jt9T&&G{rvg!{QSDR z@gY6iD6XFV!AoaHF0wbF>AYcSoI3R?7R_0b`N4dyhfzxhw*XcWmXd z*-ptQUAvZ{A;>_f-317)iDSndzVW$`Je7gOJE-%HyokMQBk$6$? zn;hc7byOT=7PAS5otjonw2lz2coxq#$0AQT7Y$jki(&gugU|P9uP->Er?!ONT|T@#mjQT z!09PtQpO`udmPb04|zavr%Xftx;56L*_3@T^C8RC^@vAB$Sr|erK0;KiOU%-?|g%g zT#`Cos&aw6>dFQ%O_8>Y4Y+G-0~kE`Qh*eUm;tCpfQRR@h{7bA6iUOSV)ZS5v4AA; z--XhWJ1-rJotPHoy6;y_wzSJ@mTm9=!_wMNBEwXmmb&?*esovC3nnmk;^O3BZH=O< z^6&BkD!~?R)z_fjsp~oZZ#J*8EA417CV;oaTt7M5e%*;~A@gON(qS+lSMzKLco-WS z`+VpH8(S)$z{^*j^UdN?2xmiXD8I8QY4azR{T8IEP_J%1-asKRKMY z@tLWIE5=S2FO|^v0Ce|0Ew^2FB^?Wo&BEi*uXT^ty2`=ul3FCXkWN#fr=B${*P$yH z7*>y=DQhYYd`uwlWzf+e@ZFlhKV&18V#WTbYSzbBc&uhzk#FDMTX`pWGa#Ihh+6K0 zh=tzwAMy|gW|!P9(}VE#d?hh(d^qi)&s8y$9)PI012FI;AE}q# zB>$JuJn3NwCAocv=6DGkX2-0M9wbs@un<4KFZQg1gd|;>I4?=IBS-ZpKld-Fd~k}& z_U`G#A@cmpYOKEZME*UT`41&mSR90?*3e(EM|7=`ilWBHUt^KCii`bjQ44*O0C7Dr z1Q0Ov`swl@%bAL@#|Dof6}KT8qtY#J3`6sv|Quoh_6$*OT~Cas@oY$z~#>=<|{2-n;k=GJ0~v{$T@3ttI}Tk#H1J#YRGXQvnL;hwY6B*_ktyCT{5?ha#m0>{;MZ~kYH zfZ)u#+b=j=lx#NSdeu`j@XA!ZXW@zXISyH$j4L(wSH*rb&rA1A&%YemBH3G&$W)X* z%?8(7tZ`MiD^6gy-vP}&L$eA|GB1t~<&DiS#yS^%>L{jdVve34;NEY$ne-pTPDPb3 z;nPfuQNg#DP!GS`yL{wcP7B!G&|`lPd!<@@&n`s0YkR785Lg}g8V&YI5}1q+Oa9+V z%s?HSgh>`M8(z`Whp1#AaU0cHU)_JvGM{6FPuA}IzT7D8V#udw7fycRcD zt60Jnar1AOo#6r~?B961O4?Q4e`D{YNgN;k>jHRk^S{0jeFG{P`d$VCd1Ihtt>+E4 z)^i41U+tui+^c>8qSmY8fuioRTr}*4lfGc4fNT|(eL_Mwt^wdhv)r(ZACaQbMHl%& zj~)Y0vDc%3>3+0$T|h=d}`HeUvD{f@)-ax1K&&d#mAu_c6?CSs$`~OQx0&N z#@JGoSnrSE5EAc0c6?Y{VM`r){U=xz`<@6F)6IJB{W_X-`sz~?owrkm2ScHO1$*&F zdnH6rNyLW&MU4xudjR0P`))dN`HC;(VuKAAGLNRz_Hq#_nmR=xYXh}JF}$bl=35gn zGUYzid=C19QgsWkZNLrKahNYutT5@ekUcFRHkEQdOe$q_QO3%{{>{peN|G4pAllFF zN^d>F^ZKZH#zW4{VyT1GQ=4l~|FFDK!)G=FrLMb7KD-E{uCwv14yhLPV(tjl9ff(i zIIQFRR!BKSkTz|kGv4uuJ7RGn5BLCdJmYL^TC<4&fPRkp-4UO};F%+sKzNUe;)w)R zYeLMU09&j1#}l&g5xSzMDf~aaTLvi8R&?n zq?N-i&ces*O8RhfB{gE_d}n83W?Qu&i(|gMHT;=NXV3nXKxejB^r`y`IJX#y&R1||fMWl|fXm$pg za5VLFcMEwQoYa;y$Vf}adaV?7zo;qTYcytykU#&lR5^=bh)AllABlI63vZL!zU0Bq z9^&7`1%q5!v9mJ_4E0E_<7K9qJ|UlzkTH>NW+@_u!{(+RvzNHj6$X~xK@05=9T3uO z{b;FBt-Fj>*#Wb+Er4s#GzqN3jS^$yLi7+{-}H0ha(5}>ylL2X2|M35?mJ4jBU<~) z9dha;281rtF2t#M@!;8OSAi2}jj&=U#J?vTfE zj#V0a{-SvP;*)x=UFE@rK(llYTP)@#jE0*&jm%eHjy+$*s?AEffkB2&vFuX#*6mJb z$M??8VDGj3@674%ogM4X&i4<5$2-4yI6CK64CVG9*)w9l+X8Hf@h#J{+?<^5YO|3^ zKuY+wPZ=OpvQPNnWS*z5|J8_-ciEATo)y1yTSJ`LHm9)X3aX`waufT)e5F51Oy>;O zR9tAr?_Fw$>uO_=rx&odJPGI22qO0qHlP8O*$`y&GJ@15|ury<1y=or4mKDmHF;SnJZ}9O~!9aX~nj+ zQ5&@z3xaZaEq`^EXB(NvJiA0#Y11;Ka|0z&k?x(u5AP!4Cluwjx+Dmnm>UpXGIEqO zMP9_m#`dHL6{dK=M&$Laa6fsPantRG>r2DAVMdz|;h@9B(_x&Oc0aAiF={@K6z1~^ zGICxMLW!GE2cioXvTw&Q2YA2o+BnE3Q-(?OKt(nS4=rRVWNRFg!OCc5etno*LgiFs z(VVe~nYynMk3ud_&P=VcSs!;wj+DEoh4qs&unTrWp(yOBW3me*U_;Vsu*Wt3c&md= zyUqQj-I^2-9S;Z%0wRMBm60Q|^k%=XGgab&ULM*GbDO;_`fi7ZFHNDW`t*%YwjWtr`%_diNt7OsJrE^5yl0FET>`mYqelabgX7t_qp3%&Wf>>fSX3 zaV&bF43k6qeZ6Mx|3w+~_e1sn{&VzSC_ShDhrm<_ z^h{7FhKG5$7x~D8C9%%+IEinF_sM0 zp3c!^vl=>}X%lukCOwm&p#|B$fAyBN4!qAHzXrZ82ALpo3!50~+y#`APTVvpL&&h! zJGoDSJm$A;zL~Ta=A)+Gdf#@?y@;2yXRTF3uGGNBBg|IT_{}FHgY8x}kW8lwo%a`iL$-#0<3Ef%LMz}tBCw)D05G)&{5D~ib~)HBBzENMjl(A{y|wpS@*kA-&Zhvr+u>gKU(1=FYhXUF#N25xUxMVg4Mw5y9n*b~T|B z-(^YfnI3KTsmtnDJDNCE<~YCY)4-DMs2&Bd>ppS)5ZB%FP()V?FI*s8tS|8{po7$M_qPBQWv z^5!f>ES)ONn}VeK#z)HcFth$N*7_Y|Kr2Kjrt_e*_HX7XZ%;QquOy$?-w@o_NJvDR z<cauLz_4_Ey#aO*sK!CQ(J@05fsWDmE|E10F(d%GsncT0U&h*B3*-CdAb z=}{(z7%X=(^YkOJJ7!eFOYZMsak=5(LQa+*-A2&}q8bD7;?$M_?tICxDLSFOhRX(C zp7PlP$i3xrCaKt~^rOD1VBmIpAvWU(p^6^W-#?3@G;j(u=s8G|OYo-I+sbf3yLA^L z<&1wfIjpa^xbA9hKjVzpJ#;MqZ<4@uuVarkrn`AE6#5&kHF#Zk5I=mdV=AV9*?>I1 z@N##p@evj}sVfmfW0&fuXCyY!JG*J}O4P?OJ(!54$C@y!F5r|I4;>7LvffVP7uUbR zo)E7NJB99Z^!}tdT!irSUNUn*yoJ>U?66Y`=h1K>XVg9S#RRUUG+w8G-MXc~48HcP zcLRmh?t!_(DW4uzpMVkY6n5%bK|Ql{Pq}INe{KqG+x44quZxYya!QGgsv~qt$e6NGyx%K`Xz!+EZ9wzgx#xTO{ zrQy19YF<3qnenm=bNE>8RD_*Ef$qc$@e3vq1+nEw4+~Q?+^s;L?#@_F(6cq(LZ80y zP&P;V$0A@x8E1RhBBkt|pZ-6)6DR}){muHG6W-a2pjTyyqi$}#O+q3wT<~->KPGDg zGQq<7GI}Ngp^^j!hL6})d0nbL+Qp(@;PtR#D>FNM?r3sI|L}}VO+P3MoIvq0=s5#tj-j&_TF;nG z>+E@rRnigJLmSeb2sBLbdkCM&}dqHns`KI|hCT~E$jyDPM^Ko51lu;Ya zBrM#`kQ%6vG#B=YOgd;*7X{JfV37u&dV4eQ+PN$#%=3xgVn|)&6|U% zQcuzn-cue{Q(=aKdbctjFBeUvIH*w3-nmDa|76wiwmNMz9fj)ejOJ-rI=DbzYP)-qL@z4bBlVklHJ|4md^qU7^2H57y>tN*vp2QolakPdKw5ZkczwIuv;ZJvpud5 zQMMuf1)L6Y==rNub36Ex1mR#wb~)de-BCu| zkL^cvSC_Msw|gG8(G!`Av*#o8x2xjT5Sbui5t`sIt&lL5brM6G2fHIx484Y?&g6>`M+GlRiZ3j}`9NIr zIzr8AfAfM>(`a)5(tB}!UgJwX^tK+0k2mSJ5lf-6gHLKHNG^vihP{VM0^u<)x?h5N zNu$>-`Xyl|Ndgh!Z2>c8{Yg^&PEtQ1x6k66MBO{%@0w*)@3DmZDWjxHYBZdKJ=xvW@n8*|Z;?=GbL6Z~!(%Wyy6;?^-e}YPMO;W- zM%2PU`o*b3tckJ47jR5xd6$M!M!bE}CGrenxj6nH?`cKCQuW9n#Cb}#k$%sr=LJjv z2UV;pZu#!t{!s%q?2nREl_DH~p(a#mv5pgwXd1R7MJCbmKvC$juwpvcp|3~*hQC=M zFpAI*Lz-ap9=$*d_}&XqF}YQe&0B=RcE3e9TjU+J{8o*B47>3e{!^I$5bfptF`ihh zd=JApQe+e?C)rz942Zl({RxugW#-Q89We;aP>o&yDISg{LHFH}x#j5%mu-B?8Unz9Lt)L!8I=Ict z7&%yt1rZIebb%(17{6LhLk^(`%aHm*mf+yB(ITbAC5qOzr^AH_DvhEQB@dwSMuWmk zf%#7_6?QI!M&UH~cT7-}1DuWad;6LYvnpC`>|6mU0g2^wS)ix{P(^0~w!sm#i=^eHrGZRM!9W9OF8|PAs>QutS|}x-8DS_mLHB}r ztJv^ak8(~n>fxu_94$lqHu`vK=m?oo3qi5RT-qnimox7zjWy0>Wso5D4+&W%lSPB# z8^Ldpxw`z|;;LK!;L-R&*i!`j!n#avTgK4KI7ZM5HB0`WE?eiV^S>h!J;DpkK_qizFM@%`d9K_3>1;Gc*VYP&vCZ*#3ITkZI?EB0G$jlgg=it6baBACKMLTZHv%E17A22~s6mX(cNQi_ddvA55& zTShs8C;sR_^Dm2=Op?de=O$vAdgEVwV683 ztIxBW^yqPP69)&5`#Wn>71|x(ExI~)=iMjyTf<0&*CpXwblM2#-5tmMqr+92*>MzX z;bf;-pCkSJa4pFqLE*x*mu*@1^9M1b??=g=~KSBa1J2TgDv zB=|{r3iBz0b2dOomziszyH20uBl!tu5J_8FtLPxd50>`A>`>E~WtnOR-=qrEnjz*I zwN5E-A=Fw2XM_wLn^>E`TuU<3V=06-JViQdF+PAcoE@O1?z!>CLgL&xL~`8M z8V8GthWM@SSqx{Hy5MJ{?g&c4!cw^v?B}+ko#~h!@?*DS`gmwW&YTZxfm%nxm5pYv zJ4T=>{MKhb%Wnuz{8L?bus!1ZS;|7JYT2uvYTTpeUeQHK4Yr`m){my zeO_zQ7RJZz0c3V zZ#YEh1W`SOfYbPuXD-R4<>X)$Lz2aB?L<|xQTLXixs7k;>QO(FL_P_g5%O7~G4_s5 zwPkBdvMeI69ECOeMV;ES4i&o8!-obSy5p2urAN<;Gu>}*(lo4U{XRo%7z8~x;LCgx6a1#p3$h{rHX+=tEx zK?gt78c)})JF-P;?3yC!^c67pC+$B%5sydF*^>gNL#>kGq9v?^eASv0+BR=%_vgNs z$dq1zb`_*z4PH2GKK*?c$auzQHCZ5j%(10sZ9NUDajSLNKeUIS5MHC;nqX(z(p5+fk&EITP2j27ho;m)+n%7 zwV5ar44g zSblXeccBWP#ftJ_g0Cewn1=w5)`&38PwKa>gcOaEB^z4OA`TX-bXFrS5}OrTJRY&c z&l1uTjqrXtg($-z5OtimlTgCV3?ieGf_;%6O4%|V49%0Yg*a$RhMWUE~858Rj~*Y=>SVb63^`)grXG9$uJ9@;lhEtdVGM?4tp@E}pR zrl@q;xLcSau4SHzJsw`*$xp0kH{QG+gI6<`D0CSa}ow7bML>Oy20G? zO$D5}>6J^wRqXugOcEZm0P3P-y`V)W&t<*g=8Kh^u=GrLb@zkrVkEx;ZBFtP9~(~+C?K~Kdn@#&KhpzM<@wepQ6|!tYT|(i z`lDiPg>sfW+e`?jQJ%SAxTum*ClstP~2Z2Ps>MRlJt8Efi#qQO>}P5D;t`>-qC{(wt% zQvp&uivoQ2vlNl{kk&EDv$7NTF31W8*FI?ONn&s^`|Y6CEn>3f7;~hSLEp{Ce&=wN z*X2dlehbe-5IiJ6Dcw2iXlm8b^L``43ngv4zF>-DI=bxw3&CHhm%9g^Tqd$=#>SE# zKX%D+J_RWC)DK2@4*yW}OjpmRq)^*9+h{#a6^H(I`34RS(ca|R#*^*KSFaAthr8fO za)DHrsM9u|D#twZ&&+@-?R{%qEoWz|5frMoBfG|BMcuQmVs$vD!lTgVcw?{#rX7QZ z(ww2kbG1ir!s7}_2hsOR zbQ^bD8vL|f6!l4D^PF##W%`iRO0~WveqVO8iK$~_+yT&BI{GhrP5=#7vzWLDVX7Sj z2+Iwex0q2QU*b_(({fD2kLH*Z@;L^dzdu)TYQxNpuh6G@C(~rBiB}d8HpXiKVpTz; zZt(L=K&o<&$E5a)*6BCmrm=@HP-sk=>*IlD-zc3b4))9?z%IVC*{ksO?PF@b2wMu) z(~r^(*P|jnA`BtLv8Jl3dwd|5yEeS+LecV=}@E2fxT%h7u-N5EWcyg+S}1FD5^ zve}+r8!R)LY~HTJf9FWMr|%-r&jFvPb6ndRv57qUL8>!DJz~8kWfT%37q_fhbE`!M z%;EP1@GIR335MftUuSD(%0l4@gMUEsoT5xt01J4?md<^-Auvt3!a{@`gI=`g!7Fao z-kR9U_3nZhsB}b4$IH~V=lX@#GTH-`=iW~Or>mZt9j=}Ai=}U@CeCm4^m6vnLsJ1? z7_7om?(9zaOl)iG@2HmZx@w>X3$D=*>%ng|F`4b~IYM1wv=Y8Hgqhl^Fa;)8VX-wo zQ9qO6oc$A2FZf+|zmfwELbxMyk-P%*~kE2iNCO&4Mg1BlV6+*;+u zn^k%`+KS0_QciZL;lcn`@zpP`3(`TkM~FB!hB}?0U=902^Jd>0_<jy7Gii64%vO_RX` z!rd39$u_SO)LXMDR_`Y4a4l6Q9*=YFL zlnqaKH_o3VDe1p*=_|K0vZ10XS?)b^blJwrE|7$Sd)J5doqfDl6V78BX3m-T%Tci` zn%vd{8|SrO1Ki>S#0T4(7Q(>DcIRcGFmoRL~l?lj0XDJEQNnMnlsjJ2`C z{Ang!fmLf*q)4<~vEy+|gc=z`%I3U;H03QpbnfFQ4Y*9H_;oB&5fL zlu`kYV|icrl!{hJN%#0mfid_Mmp z4bygF`1=oDB%b4+xIH|)&ewmgvH=JH9Podi{{P~ub1{!&9D{1otlPQ1M&0Bly_u;? zDs`RHh-PX635`{2_Z^HiC;O+dFe9Mo?rW4RsjJ5vJ|v(p{JMD68}01prP+5|Uu#Lc zZ+XJ_YOd_Ifpo^L8tUM$v9~db-|)v_AF5V>>szbr54b**2 zaOmouKokGk)%~xJG)@58KR&Luo+x_ZB5Km=^U8?aoa)_|a1JI@C%uSWE_Y8te^5+2dq zk|KU}{eFkP>QEuVisWyLsSz=e%D)q^anQaz7+e0^bFb9}%IN=TgG%nB{>!tmmy z7fAY(r7R0ruf4IuU^oc4Pd001gh`)o*gnTCym#H%eYemkn8anb?&vmY%jR`6#L!1y z%d<%A9QIq$LshAG!4J4-^Ps%+pdWytg~V+lTrf^H4K^MsLl~t_s6JxpqxNV`rt2Xc z{l+#(v&y9ROQ~qJ0n~d%gKPJ_FYM`1#91Cb6&%{*E>$ z_vYGU)Q6hk-0j6QlT#yC&lb={{DM>MM@|1>wX?1qnw7?#c@GbBFafr21i5j(3$*4~ zs>ESRd+jWsdbLZ7k#6~+?}nr&!zPT&I)t2jchYH-H=?xX%U1_wp?b=b6qoCQSF6DF zZ!0sXcPYyw)nA##wYuwR#Qj^ppp6YD8TNbpuIEN6IiuBJq4i;;S&o&^Xyrm!jvLeE z3m06M$@XSG1S6(JS+|R=6}^Hd?fZ8QVZa>Hoby#Gx4l%A6IbG^WWs72O_6XjJ0mE1 zDW+=OshdU_*h{a?|E@Gg5sGs}8kXBX((uVPC8rLQLq0^z@b0o0^6QkwnU?V2op&$Q z!!?WXsx2kVo6vQH$|rI<)%}hyCPH4iD~A0zr^(_fB5$gsDpPfNIiK^Yugwm=*&br< zpw6NDHDJ=JZ5?w@o*HS3!7^66a;Z_O(dUixL?j1iBwJcXd8aYKaF2rvUG|Fs(Z*-a zDd*|}8;4KnS?YOEyA}W;<>L4|%B@0F*Vn+KU@9V;BilAiYgj|EHsxvEVC3A1 zCu!>0{X8XXW4%*D_BSYl(B`G(>41Y|1ds6IWd6lGaIC5$|KilkNejC3kv~d2Kh{e7 zu}|#7GR+CGh(iYtr-=i*V_{mFNu8Rt^?SlK>jwM1>davgPreJ~q$0rDQ;(9H&=dhe zI(@(T`Y)xeP9&@BaD2dNFA6R75j{D{Lg-T{%@zbvGgZ~0>L?SZESp6k-as@c{aV54 z>fCvqLxQKLhN!&P`9h(S0KF=dBrSiMt8sSiTzv)-304mD+?Kdm*-a(JF8m!Za8NN#+8#I`-3tJwsw096l- zE*7V+3GEL!TR{#dD31gJ{0p!u5@tCj9Kt%oB~*FDyD10|rss80VM z>bB4TLcYP>&Ky@DTZ(CFF|$YyKNpDu(Utf>N>EIjj&gE?*ORrN;SU9s*=O8l#|T2g zK2*tRt{N4Xx=K1}p~7PNn{xqT9*O^7cdd)fr^wtB=dBbATN)F0+bp8G3~-}^F!zsv zAyZaTR)?QPuz6)cAvhehHjd#N(RMi=zWnJ=bq#Ol`X8zsPPmR({+{Q3YI69J14bT` zq^k%60%4b>&!;%w)sZl83TUKgS^tt*N3=~rPO-1PxzQ~R7mO-vyYy{NJHi z7on61W66h@sHlD1yib_zu_2+%%l8zV-a#AO{T(G;T&veL4)#{n6?C~=dZp^Z@kz8V zNbDBB5wuWwYEm|i(s+38mG$o?v3E^8y9gwglPP5NKx~H)J+gV{)=Q0v=I9WuoLXG< zeI5_4Bn39q85;WwG*+{(Ud&p!Uom9g1@NQezYL|i3_RoI#EL9gBBAbply7mz9BL zl5ijEQ2_ziKE!Y=wJxu4=Iq>P_i?yoiD$>ov(e4T9}O`k9%?4 z?Z4v5y}#ngzP-0+`tz(&bbLZijuw$Nk)Gw3vAZ2Nv)^3FC5g9ymKI%5(y5n5M{pjW zG^f@dZL`zPdY~^?Vgufor7euVu`+Dr+?d3Nps z3>(k#&*J_sGnc5GXFewrMTa4TY9c%?ODJ0!JDt`6vW{Q7qqp(!k|d#$BV;0*VS=RI z?%UJ0Vs_tKckRys_V*f)DWl#sG+tB{Qd0gG?%pyW$~9UW)@>jn0wN(PA|S0aLn$pW zfTVOtm&DL88!2fKX$B;R8jx;~ZV-m9k!I-bVZI04=RNzp=bXRakN4j&!`#ok*1A?* zcZ`5O(JSrwoM4lclXaXMe*^fY*ZC~k{uaH#5J4SIapU*fVapGA7VIN!SKr zFgftQMTR5XyIe;ndrZ`{1k&%2@?){&ysVY*}w-kFJi(7Yh!}^*FeNRRYjy49mdP^1TZ3;GMALxG;K?XEUs`lG^ zlIG;)D{Yj$-Zg@E{27CPjVm@Yore!UX+=Ee*vr-Q{IV|ZF^!jia%*qDt>y!72>g;-v4^L?L)>Hqw-|c$UNG4)Ah%m+gE!?{d@SrE1?LExm=K*KIrM@Y162? zrO(Bq)0yW%AlRc+u@{?VXQclj*@^;;CKy|=g}1ISjLyT<4g@_&nH8Xe#-Ybn?{2!j zc>8wW4fu~H2WQ-|5%kx(nn^&xsvng%%2ZI8j}qRCw;?ZnENIo3uh0k&KBGn&{xa}N zH=d0OiGle}x^x^TQ9c)OVUVvm`$V5Qf$^<5hta^(mbp&gE=R+ zJZ&9j7C{*Pr0L; zQ<0Ws#Vu%vK;p8zhS=Hh{E$FS=hesNjat2;QS|eUL53V;ZU$J#@v!(-9niKNQ({5h z6HywCYC6_RiNYsZ>j#(J_L((t%|q(P(5&I@SmaV7WzJ@$U@^z&$DCX}PZNxuum&6v zks+@PSCxTPEdGboE3aW1(BTLBOZo5lxQ3PpAhxhddmDUu-m7 z)K9-2MKGcp<|7Va^kkr7H$?a5V5X%GZEY1AKS<8=uS@%HO~-d{#cU3SBH|J8QL`!q7lI#A9=8 z2&)-*!Kyk%DJWO_3vBqS90l8(G!5)gR)vQ`;FuVU;Y$a-Xk~d<#Dvrhr!~s8##aqG zFUM;Z-2&I0)vE{-BZX^F$pE16Zrzd|;Gq&8b8DRNku|arJcPuIt}p7YPHl4M1WYzr z`_NMf-A+te8cwzNYGwXR;<7o4Gb#HVbPfT?xOxiNz=#!y7C#=8$E}y49n?If{Jgj!VrrWxgx>R3fyqbY4poCy)@|Fo0$-Xy-c^Mf zjTT{#I@X+Xm$+H12g9<#D^&J}I$Jwh;)({FWi(z!sUFke>(18oZOB9ZWwgF_V5Fss zLfXyUiL*>WXa3w$;&( zSPKay4kP>7VTpkiu9ezK9s}j1;cPL&MZ3QuW^Zmj+2$FuocSwE!neC$A~YhbU}Sm{ z#C5Xj(<8WZ+9|F6*oVDdx3Mtv;?>5Fkv6|~Zsqy*$)RaG6$Vr`AmS%Vhm+hlm&_~n zn$8@}ogeJ=xP6~6w87zJ=NNt@P+ak_#2Yjj1S%z5@sEb8AzL9n#05r(o5793D zTlz;4N5@8!%#(7%oECwUvxh2cW!Yu%Wd>Pema%Ez7E|4?n85xhkgYq_i2P4~ol!$o z^G#XLiJBiH27-?LVloNSG*)ZFdV0lq>1z5b$|9Sw$Vm}4l%6ZdxkkyGJ*yndx$zbL z&R_dtq{dxTN7Kc1Tlsj39NHgi1$$_2Sm^S)jb%+@ z@RP*KilJ!w{VYFfDeU_cZZ0PuneP)-VC&J|!PJP+i`J?&Wdx4`X6#*C{jC^y8E4GP zU86UbHwtSV74LWS*MVs@8ur&V2bJ_EYu-)l_|D*GbGAi!Pkr}!pW#y`jM`{dXZ3yc z9e{m%J~*g|S%d0V@7EE;cyb!ZR`_u2OE?Jeq@qM6B_EkfCDTVjf?reUmi!EDlXIl1 zuB+~M!S3f=QYE&esYHUKvnXz?yPMq{Tnj=WE2W1cXJ73zEK>HJ`Qyh-Mb+7s=&cu4f#!_0alzuO`vCsQeb0;X@By#_n$a{9 zL(BC%l@aFy*;UL-0C_w7Xc$>#)yyLCzgS6+`->m>tj~bA2zj&uw%)Sf9eIBmD_Hyh zLczf`TY);u*Ezj+xizDheeUIq#~HaKVCB-F0=4+|up8l-?OoKwt zKyPik+#wIiDD=FmRA&?|H8gCnPJ5KN$&+t?U*WExSN|$m;+_D$Id5jg_{l*F39F9M zw=k_T)vSf)TFs8c$sq zkd}Ksz#j5KItEJk3KUH5_#GgG*rDYxk7%_q*u%&9s0AkLMuxpTgDBkklpJJ+NJKZf z>Rn4UAy7QHH%nhkLD$N3*2}!)-T(R+68U8UWLr@(AF#vg*W0)z=Wt;y);WKlW+e~rqn8kG zK1;!SrtU`2N*_Ie8Q))Z8cQf~3Q|W%u*uRmbN-9xJ}!xBq+@8mAz|S7H#IZcH?qAV zDolm>53sx|kH;cRD05&4t@pw{%Zq_NgHcTU{fnZdvc2?lu*s(kAc_dYm4g*pd1{QqU)H1Fob!aSkeCzh98F{dS9CLu-gC zp!M^+A>8HGGS-DpGelgv&3)%WZ^ejWKI}b@b0~H|;4`h4)qtz!Om%s=-*OV!E}9tZ_7)m5fMgKYN}GVuH^FHeAlXnDgV zU6nVzMCGWlQhMcaDx+TRFJ&i%ayJq8#*$Mt#h1 z%WqR?(gf?doYrmqurkQE5_@2fQ77owWrHct!;gS%5l0XHEFNC%M_lw1%n8}9A@fp-4 zY~!m$4JKP5;fry@N8P-lBZnNMakSE@YEAdoBmFAJQC}hvX z{IsMfZ}!!9?4lhZ_Pt-I&3{0Dwg{OT$;LN@BvYsux7qQMNxNjV>B?C)TcjGR;9V;l zOv~jEF`o$GJlN!mmm^Xs$&~lhe%m*0US|XA(79&o!3P_5 z!?RLCcNo61|b{Af&fGf!Ob&Y`p3?9;(rBzC9c6iqIR1!}N=9 zW^(ntyt_VipqkR0gN*-u)k)y0!08*NYb#1KE-$`2-YLUN`>kx?t+ddcX>A?a# z#}Y7yC3pv?&*rC^BwAg^e_Oi_^rLl9SL<@S*xap#@bDPS(5w2FtJ}8vl&4zX#Jh%3 z^||m@j_!$%L18~2DxNZ`${zlqbDC6-L%M*gE69ObDGsKyPZiFcsHa$Yr! z4Q7@DZz2Y*L;QBOMu;Ii~KH-2rvXU z{^q%=h|LfNRGcPPrJ+zzh%&AhD9*A7AKSqkeH-1XK z{(pp;`_~HYjUS4`Xe04^bpC|mpApJ%+^ZM&imBIlu3ykqNWd7c-l1!C$w6Mf@E?B& zNxXW;pKvM-Onm*qSZLVt&lomAAjLm}ZT`PAn1eZNYkPZpV?!9SrpA4(n1mgoa^-Il zDnu~5+`A4&Fj3E=0@OAwIr+T+ad2e7wSEL>Rq&()g}u+pUW9-nr6?;$EO*l+oGo|7 zL?QWrz1I4S?G{AZ;0$7^Mf z9OUcl|G)nZUt@PalEvh1rc!a9-pD09m)j_QfZ3P5NB8{EKU2y&F?-y%6X`^AdN5o2 zO53vgFHz%6L3t=}QTp~C9Wnc`<+?K5SE1C0AZ7A0SofY-&p^IGWB;yT*M#^6YjMXS zb!P#A_`SCP{W=OPtt6OXXuhq;Lr;hBno7+(R_eDCK8r9O>3GqGV9*Dj0e`Vh1M38V z@INHBQSNL+d7Req=uPUk`a}Z{_a zirjAR3d|3-nhcfA{G7*kt6TJQ!+nhPoSr?I#q<11D9%N8t@ns3$<7ImkgZCm?n|5Q z4ygC~az6CpO@El{w$EziK52n=&0+w)HL14V}H5 zVNSg`PLjv2D1|s-(cvULDfyFo+^7}q+Pp3Dl}j7NFqts9FvT$CFx4=Pu=ioQVX4fc zXj5R;U^welsQ6+ReFs`aj? zTe{hA!|{3A@V)I0d~BU1;jLFZ72}OpOXd2ExZA zk5@P~?1d)HFAC5#ra6errx&T&Bs9EJuf^{<}^-@+vecbT<@1IJHN{9|LO8tZ$mfkG}*_Z-=-d3cvLKjK~EC zojt5O{q?+bC6Q-8p@a{46OX^B@KSYcAU+UOzuV88-aatPG9xg2gf6Xw@5MJw^13Pv zp*9jHlFFyzmvt)aQ>YvIHjAjZP7mJPqwBv4+G_{odS@+4m&;K52BT#mC!g}O8B{MB zq|9VnZ(=AN-?RKm-^J{A8nwMKy{@gJ!M4s`V&=S|{DvND2Vo;qEY^7~N8bwE*HXHQ zn`0}{ZW~nP7!bA9)KTlA8*cKq^VU%7(Yj}BKE{(D_8&5jp;-$PE827Dwa3t{(hO7< z{D{Q8l#8Wr%zG7~RLo({XzQ)_4el6XO})!fMH!Gc4oeRo2S+?-<(35;A1WP>HG6;Z zwr4gansVZP`KsCP*be^XAZ)yjnqQ-sXujg zlpI~F$1mi;)>@H#;bn%Na-unDvo@w|i{-l2%6BbJnHl3p`@WJS6JmCj4BI{zScFU6 zN6KDk);na`d4!F}GnY~A%`a9kQY@t2htv-OqggsID+i;fP&*$#@p48yp3J59dzmUk zU2u8G8#Tz0AG37{AHVcUFW~p9R0wkdCv=4o0ibws4GP<;=jP|Gb}!B^%Lr)QFJd;g zMMoP};1QLmULqZ)3Kg5&asA?vf=eU6Hp-Xu5YV)*xwM@aFCW>M8ElI=iFmz5j#4d! zb+mGyuY8Txc4Td$Ms-PJAU+m^iDrr+u7f3+%TL+q!wKrSx=wOUJd3_(aywN%SdpFM z*-UxvPe|r}ZGHv_IkeCuKN70tTJ|A{X|kA~JiavD)mA8>eC> zZp10m_M264y>Wh9MX1Qrqg(J?RUqc|D#Ps9-CsDK3mKR9YQVN8H3-pN$k8z!47a1< z2=Cx|`wCr8Bq?yXGgN_$d7Kdz+@}lUxD2mhl8_mbxewhM3gKRcfYeORhR=u7fVm7x z26-3+Z;io#+5E{B@cF5+prQvpn|j+=$GL7L6f|=)Qa@$JNYSQt{FbrU=lb21xlopO zdC{eAx6CrZ9qa2PW34@<2oSZw2NTPHB`ad{3M-{RYuZhVxw6jpThL3kSLy;L5D(2_ z7o`v){U@-SqWclLr8wIx?&B6_@-`$wmN^MkraU7(GIovQHtuf#h&;W9Nc34hzG)n) z=Cr-85_P^w+-J}mFJPY8_ZiTL-#Dc)a5dXL^|H@%lij-tPOyh}Je5WYpf4&2g9f{4 z-ZD(;ZJY0BKy|%;o}q{^J7wyEZib4^w&AVQfhwHe%y}QUD{b*lMk7oIltRUZGbzoB ziUy0~XLK&r>L4|9P0>q9m zB{B#EnLy6437cL05|pV)?xyK#D~%;erC%UBKUpw)!(+Yr(VI@< z_nvfIV}@@Zk-QluyP%NrYDp4P46ka@i_1Z;I|s%sUIyoN`ice{0T+7i|N zB&uJq&v3+oc{lYLV`7?v`a=!22##hdpPv~4s_a0FUIsH2Aqnj5MAVNI4zyXi-$4S= z>`;~%%$F3McRbJoYeCVTjcRUShmY(CGnD<;V8w|xotu(~viW?#wk>96) zw8>po5+r&=+8xT_=hddJs+nML1}aug8J6!WEFRyVxab7+RtLyTW<6tN3}k#Ecq^BVb3c%+c%a1ql1vjKx7XgS4sy5S?TjU z$^1G_<(S`AiFEB*RU)$I5H`l#0}Ahm>ynlIeD<4duxdn@GA*Q3lx(rQf|n@xe4NLra{ z6-PF*ZlN+;t*G7QYd_h@5%L?Pxh+TO%js@7|1h$W$FNj4pCsVf!e zOfC%m5`TqKlfqu?M_cyLkD-ZcCI)7gL zidVD8QWd81B^vhRQ_V?>Bz_JyVbQNU6&}@;Dn1hD$90y?%752Jpl8rPi#9&hjxCB~ zMO&Q;A8K?*MfAt?dn&DUdH}J;Qi=iH-T=&u@pLPkH-!lPA2)I5odDL3(pR! zEuu|QYX}0wRhJB&#$}Z_OYikFw5S+x^0!)9;q0T-ZXX0Y8ltG#E&UbxphDfRB z{01cI(D=ZAaQ_zqe15FuFYT;J=b+Yyr9{Esm!h3beiNI!ye-n7Jan&BAw z{9%S2@iylQX{hm`UH<4$y`Te3STq;x8P)~O9j04&;o+2xFr~zq9!LI9guMCB)>%Y8GH%ohL*6<_Z zmjcd{UG+(06lxuOMcPL{^U0)&rsMRzFY%7$0?~)d0w?Ep4A2Lc<-uF#-=`_COZ0Jw zFcA&IdY7rq9@KeuBZv0@g^^5c0A4I&#wpM4BpXiRU{F>E#Y)dGk^+3nUxaIAJVu2` zqR>q-gVCDx@J~^(2-iUK(qN#=xYfIlMmEAdUF;Q79yzxAN`OH@01fevs=%e5Qz^~ zX&X28UkPxfE^ob^3HA)#1!06b`iE%Z`fh2#?Ri>j#~g{pWes1$Vi}WxYN97;bepB# z*=5RAqI6pKEPtOhKZJi{vfRW4#7=&gBI5ZF=Z6XtV~WMAt+VBM)>6u6VVevxBS9Gv z+Ph(_B#(%{fHv7%=`DRuT_bQXj1!8W*O0SVTbaz^K!1P2bRgSWHfz8EXWGvf>Ip2E zGOuwDVBLz4toL+*3>Dj!x>)W~l(*zW(rW6ahy=16|Hiu1fofIGnod7HYk!gv{z_AL zJH-E56ue#8OR2;5`!c=N!+9BegjA&4DslHG_@BVxK*R)2qtKB zV(xxdXJmh|5trR2T@U<#9KB5B-DL`h++M1-qEI7k%F=7h@9EbBz%x2JSyQ~RL4TeS z@tn^8r?q3PK<^-sPl)wHn2-O8dZw&AJQ23PaVM4!YV3m zze5{%T}>}gIMS3R5m6l{tUd%Mg3lR$YaY48-S)}hIGk!F5P9iQ7}c7?f`I^SU*>nP zJh2@JQ<}9IH3(;4^D{UuN`NHb%pYZ~^0n0XotvK$&VRU`xkL~F&UY2_EL!hchjo-` z^5fva_V}a`94MvtnYob}0R5fwNKxmvhTGYi+uqoE)UwYDUx${}YUxKAc?bN@{J(qw zsCGpy^g)ZfO=EE0fUJq7+xPyGoEu7K<1?9p#L6<9UY z(>JwPP;`H{tvXJAh~LxOaZGR3ubO8(Y;O5Yhee;i0_+--RR+zhEiQLd>=L5~i? z+B_1Mt-69HmGfB?Lxp<}qOBTwR%ee;AdvKO_c0B(@+;EQHgxs!di@0QZYa0`IfZ33 zk$J4?HB06f_LMWy{|(V057PnwAqQ$+lQUo7P&hzOU4xUZ2uY;m0{jB}#JIOqDl9Z= z|76Zj{LacCJFZN{xkNU0)s5#B$Iqj)Uyo@{npGD@Wue|CKqnli*X~gr}Eh^z8MeW;1Mk5E3 zE^TdhB2?g6b&%a&zJvkC`@X2Wu45-*Zy0`JP>v9_~kyT zJPX*FI=d3EvaD;QV*3^hN;FXZ&ce#7@=R`Itz^$p>aVzVvd;cK_D(_3p}L9Cj1XXY zon$51C$NRk|2iOMb?9h?j~rz^^9;&Q;9wDQM3#TQhnE7OZ(zw2s7d~SL>tkPul}SS zj$Lh2k&5`jytoeZqa=+^UPS*^9k3EcI<+EVk9Yw(gEWrGc?G<*dN)F{s>z4ud^JkCIiW`3%+ehpHpR1YFZ|_?CY% z^^J`1!j*!IUgz4RTao9j8(sB!iE$fSrpH%3rJM~s!Yv~7US9JM@E5A7a{02Tbwy6f4tlcWq%+ID> zEqgBqCn@UKF&=(;k&guC8#qnp7lM+S#s9aR;YjT1e8SL0<)!F`cU+1BoG#T(%AQM| z;sG78N5-HtdIxJ{`#Uip`$_um;naR|Xf}q=@mjv5%Ym z<2YCAIghljoRI+*p*6j0KftH?n7UqYC#1;PLwvI=tA>IDQJC}kr&#$9ML)XnTaD?) z!};N)^5r=@En}c7kvi#1a!;t25MRWA#R%`$Vmw^JJVP3Axd?*_!^>upJaiG6{Ep&r z?k)StErpq10jh9Kvxz`zREGva4pqDnT)m$iOG9^~yNZ2NIFElxU`0_G1MavNq!-UFIL6D}d?$gayuKSH^Fei2s9T2) zngW7=w%5k-jsr_IdSTFlbD2|bgP!EZk3o=jkjNH2_9C0^GPpVl-SP>g3iMvj%dP^6 z902Tih8H&M;JCaHrCA9ygj6$arPb_^=6T1 zLhT}APopyxPV9VkX=_~<_icm{gwG+7rkPVDgv|zOIa!Mt}aQi^(g>zBWUP9}49L#dWnJ?c{-6i=vZCPlHw;hnkj z$1$4Xm%^|dByFx{ueZi|RMnsoa43*Qt626$q39ROb8+4Kj@!gK%MInB&uHuN8}=g4 ziRDU|Acp)Rz>lm%@F_jkr5w9F`rc$8^m05~1pMT3m-r&zazKmjpq!G%)|mpd`O8ytH#o!F#?0;_UCTCUKjaQ2b=yeS zEt7gwZMyc8>W@u%Ce379mCLq)nlkPD)6TpOs|U*kb<{n^Bh8WTY_)H2D^XVSkG`F~ zf6?pBILET4mE&1)JMLz8?ss z@I*^X)b-dGCfGVLUbu6vkIiLj&zza)LcTX~*?ciK%Up9G$V!}7802vV z85esGvX0P>^PkN>Z*>5P7-a|tfvtIbexWNO9yVnK{BU(0r&4LTb+Ovp zgWVZEW`lTm#dN0komrbu9t%Q1`z2L)@jK1cLWoLQFO;)P+F{Vv7}5RaDZ5DT;_CPG z^LNEuXp)4)Gze|XnXG4g4#ESqD)Yzzz3-&~-bn$%j3e2nj!9dZytL72z+nm-7>pxM z+WFuh+0yF1I;>%x$7=C$g8IeQS6UzlwoY1(b0xb3%vwg%TpYa--dRj7T&E5o#G^M5 z$ri)5o#5x2=OQx>={~P-F+A%xCK${sIam5<<>Y~FZGPl%v!a8O@$(spCKC;mH}w2ms5l6F}p7 z^^i998dvR#cW?;>c+`K6uDW^dBM>{PD@hju=TrRScnM;W2q_QVkOi5(*fGL|?v$z8TEu+?2 zJ$f-O&~DGcpIok7)|JwtO_o#mR&RC+hF)ZR27-Xs zEr@m^;V*PYiY0TepwDs1z-9z!(;OxZj+!7G=THK|)y|7_6WY2v`D(ywfETic9)Pb@ zae_wLqRIC+sSOKXHjn%wIYR^)HyHVc4C2bT9F2O%^9r3}gt+v*eLjq9kBO{%!x<(c zG5*C^dcvbBC)A7WfVyG>o-AM{&=!hDAjx!&*9GqPM+w@Gq=rCCO&Mi|fOYbOyH|DH zYdF@^RIk)Bl6K?I%y^QHo;8M`OnlRjCdGym+5Cs}l^sQbLP}B-vFTvZObz1{K0 zXg)7(`qqi$$FhI)ItrG`f0#1><+hVLHnZQ$Z#H5@V`z@!_kF>Bo(A|iGD@)ym+8Kg z3mRkaQOgb`O0N29l@m(s*M$v0EpyTkpwUGOg@}9M|;3S1+9Sgr$i%6xp(pl|-s|h}B?BsGpoM5D{Hk&+3 zxzdFd?6R$-0^u1dwxzu-20Jn>4*Ky7!A}veWbq~@-~}sZY7WvP8n-Ak2{&|PwTYE= zS$g*uy~2?*akx<};v$QgedOp7^ zugNSZs75FjAZ@9s3H9nCTm#IEbEU;r6|+^8vXOW7jG#!n#&E&CP&S;yE#$w-*H7AT zT4>>W9j`@ctW{$!Ec-d`{2Bz-ZjR4LEUCvfwDUpT($dJmLI2GgJD-N~EU5w{!bNEE zH>56<&w|E_@Zf z>#o_jN)@>MK~aO}gp&TsFLZ$f?%TKT1qC^}zGWasAQ0)&_a7~dRJ31gevJMg>0(z{ z3!bvEh#X_$BkdN`?HOK08S)LJM}S^CQ=Cf0My>yzVO9DUpm){|GUTUHQ5HMqSsk}v zUw>zKU89Vz8;6(I}HtGH68~QisrDtfAaJ4heB%F%v57y=OJlL zt)^B7fuefS;nsb_IkzN%!hO{9=~z>(X39|M)#jV1JAjIQkDv`iXKF+XH>R56Fh$5* zG&*5oVn?04e9$HZ2F|Ge5gGJ*h!{`!X;;<#VT_s;OX0ZNQGrgeOqyK4wHGZ(=1Ql2 zQo-}|?wzN+`x#8%)5*(Kc%mnBjs3tY?CZmPE+&?}gB%;F-$}!{OG*rXv}I-e>Usaz zQ=nUzjdX5T!bopYF|*Xsafq9HuIqhubsGc2D(xlPsHKi(+|x=oGTUE|HUrw$f~DDo zV?VR@Tlj+hcJ^2`U8H!Tc~ST$ibz~Vks|Pbj-8^c+&NefCjC?Ijsf8M+(VY~is7T^ zIq~{3H$82wZ=@V)EUfuF6zu&#oH2)M!G%0L)+i~dnHtqJGw`+3>wnmA@L3(O4XZ3@ zSEZXW)_UEJ0OZ1bo7+@d9rRzdcgmXR$VF_=nuq*+5EizPoD6g|XCQWA-xq9(WO3iz zoGmYIMv_bwA@X|^;R8Ip!5FH|UFJyX@O)vd?`QLHw>Sy9t8W}zEBm? z7h(_}|CLctH;w3((2DD4WjoMX+|b_`oY6y#uNuuv8NVTDrYP6x!YR~xb?JZbbjb35 zP&{@l)ZB^(=dU;L$W(!-_;0tZM<~OQ%vryZ6s*F{=7)G{`ntPvsZh9=fqjX2d6OVe zE68?xi&Wp$$*oL=U{xlE+`-_xOG-3(7)UQ)aL3?!&XTxSW-SLx6koVMPcH+Te=sA> zRYOjQNSMF;7894T+xiuKAEB{P7{P>ZZH;fnO*O7~ZBGh{9nfr>Oev~2Bob<}Q z%7dNWYX@q#i@}YHztBIKkNyVZ5!{IV7V~yPCa97J1j{QMMp#X%c#G&e=O@c>@M$4n zA|iS#{clo)JUoSVgSh=0cWZtqgvZ*YO4+X>5uYf=+D72jdiuXt52%B{jZMbD7A`tT zqCaxvBgMU?s-?LTO6Cvm!wRc1TWuvG4|)|kBtE5^+Fqjv7>#avY;)pxp4Q7}DieSJ%w`$~BCeH(Z0Q;j`s;! zGFX*cIS=4#a!ZExjY76`2Tu1_P{76d4?qkd5=KKo5z{91n zh1P=o5@YD;hM10DNqrW9Smt~FBbIjGWPmE;#Xqj|Q?Px>O?lgpL*b32P zXlrS?y;0Wptft0aJi-ZsY1yvlAI#E|7CGn_s>fg=q&A#Z%$(BR{$)TZYM+~%O9kD- zi*&f&Y>LbOCu-pZg+bv5bPFexD)035vj=m^wH?&dG!paj=d$$b>t{YLJdrX;{QuT3uM^DFW<7Oz;M$KizKAt zDLs&y;IzSY>$P>dEDn(rl>_~%mmkqz{pIln#RLRG`{BeVlk9vtGYQ-w>(1iuSpL^Y zuC5J7GC;InuAKp>N=bRYcCho~6DZuGe2Qeu^23vA>2{Jv;4~}X1Id#}d zcVSBWJTLS&eA(#7{#%&5F4F8@PE+V+6@cNH+4C{I8#Xc8__;^qrWE0Z!_*=o_dH!) zYxmzb;tUQBE*dvWl=RGuQm>SXEP%AUR%B zv(}$Hn4}OQ7V?=*ta0$~Fjk*2m8<>4{&ZJvpb79g6bJK((~uZ z3gAE$^QC1lsi3=i0831lvG4c!RDgZVD=X9b{PpXn^z`YAi^Q55BtAZzl9K2!JY2l3 zTv>F}Awzghu=TR(P1zfHASdm-m*L_0&VOCxe5BJQ0{os@^GW>|$>Gs4O^R?(mg~{$ ztHR{J=RdK<@#&1+Tj%XUKGUrB-Ks@83^KOcL_+ z^z2U+8$)4_mU`lfblq1l$9f%A_maQ{bb5sf>j)Y2i_r^zN|Gca+=2= z305UZ@A6Yw!69fW^tye>KEaUcg1pyt(U&HNvWBYjr%{dEDdnLAjV2$D5;FPNn0`BY6!D`*C? zH9b+mS1g-R-;%Yz=dW((P^s+NF;v#Zg~>wy9JB;_sfV+Adv*Cp+TrAB=tkycORf$} z5i&wP`EiGH10R5w8~@ z3F@hPjSm1Kq54l3CM|j0WuDtQ5o{NNGg7||s}-N!ml_ry!Fkr0BWurvOF|Kic2-x! zpM3n71ednSyo~`Ffhi0P?SWBx^jcV6RqP2;KJ=d^vg&h@AAetjR#GtvS2IPXCxcO2 zDJeTj1XoV+f&i$s496^6gImi6`cKi8lG|%#CcYqcd|GFn@1$WA_(NP=zZe^T{7^&K z+1Zn=mwmk8*YBvch+eL%k%`mLRO?;EZT)-bpGFz)0nEk1s=ay&$)k|v>=Clw58Qh3 z&r<->;!h)vD-9#{7rY}4OF)|q+r107u(2aucb0LjY_cJp-Fq?A9QFC5Wqs)b&uk9r zry%bvTkgI56A@BE5N4(=Oy#DFn(~T4-BMbUMVjMf8^LtB#*3eX>6d=+r`_e)F91Q7_TDiVJXbh z+wGf`q?t=a5_qb%Hk=espNyi)`#$C|DOp@h+`wcO(3>PFdVVoz+b#x(fsVYQ9$}{L zAF6Nk@~iq8j8zUxkYycg$G$~iPlz_*;j1J_;;CdRt*v02@m|p3Gn9)9?_}vdaAJtN z-I7}qh|rSmKu-1l8!UFDAaB&aTN~%64%btsy(1;{@i)*wNUF+*CV`Xk@)3jA+X-*aT^!c+XgS8a@U z@czl3T*e^RzPIpSz+Eo?$-Qkc^w|jsdO9w=f*s{lA;&BS0);1zsO@@|Y21`QbDh24 z%?PE5ZMu5iqZ?O(;lnQbhsw-cHBYzW>a&Fwap4%iso~5R@__X{=og+OS+3RFP8e@GS+2OqhJ-VC)pUDl7k@ zy;@{ULq>|slz7|k!sJ=E?^c7&1&&vhV`70Wm*{Tk6F!}^kvvwGX})eh@Yv|s!Zp)i znVY*CB6Vf7fAPE3rOuBIA;inO4eT2!bam@*ykR{v$YD#RWj2-Jxufw6xa*7%{Aww~ z@DBz0pEPoF(9_Kkbw85KJUl$6dkGJQDYE!@-;&*mm9jlIdRE{(AU%!PN0VCUREf zaUjqV0M`dyF~H#`kzzcnYC%}gj@-S~vL6_|05DT>kk*2*^z`Ti+K0v1I-ipbMCeT6 zF3A_A+P2MF89wt^dl;*R^1N6cB6iu_ zKM@f@mvvl2v*^l#PheN1QQs~@>M`QbvOWmv3^F+=mPE*!G6{VUK5(XZB1sd~M>zgW z>E6E<1?e)71f0cvSnmZx25=?rLj0CO7XoL&$`sZswe$Y^1x^F2g79fbg6`e`P>OPU!nkxS?_>d?BUB`$Q$ zI+pn>!tU?>n|i_zXH`$?(pKQrnwi-+y1tTK$JJH94WM9|H&f$mTB9B&%@qLh5%`nD zM4(T*Z9+Lmu4gE5$yg71ol=~Ls94KKMdQ3Ek@?$n`loz5E{|n???Iw4`OS1002NTM zkCYnD*e|X38$VGl`2bGHANH-NZL?e5SS3+SQ*Mg9buFTwv1c9IFYv&m_ zRw85&egtn;sY$2rWCm?&;MjBR?`!1RajPC+a0&c(6EDv24F+_D88nPq60*Nv2< zt;(q$85tfPpJY(`Z{y9;zvJ?WU?f zrhf`pX5rt!unP+_Q^#^Ia#elZyzVY@$#s6mpwh1_sd7wf|EOy8j89YU>EE9=^S?Q3 zkVb7Yz%63fA`3Fq=FZ0{v9URpjO5_h78U?KA8CeJy`BYr^k2dcCM3_gVI}p`k3Ua0 zP6NSK8k~PI4zSj_s_HbdUg;+o>I3o(TUcCN!~>SLtf1pN@Ty1Ch=VP$ghKAUW;1`9 zKlyEzcLx9mf%;?uP6oT`6Hxg$j=OiaY<%r;;SU_a1WintugwXCQtJzW51*Dvo|(a!s4S z(9?gxp#B^h<}~Hge}c8_Mt~mY;$BhuT)PI0#AdixQ~{3GCsYoAIRU4M9sVa)#ewA- zTK55rPiSR~7_nv26g2o%87>JpV~#8CtJ7`ywDv^kyuf+Kw-#${!S!2zFu^(p7nH&4 zeBr$3P;vZo^bBr?QMO3+dn~{yz{acT<{TeXoXTjuDqU8lLqc3Xl;|!e(+s0t9i&Bs zO1CqcXrF?&?Emb8SemkQT_wsPw9T^Wq|CMd5Yu}7?0iU%1I*4L<=LWFr)ydmB*~#- zU}#rb8c5`q6K*;t-~Sx*ypkTSIgxNCB>VjC-!MQqdON-|ioboAk-yheAkT+@eX#S9 zvZB{iX;Qqu`Q~&!r)+X!Y+@wsSQKzfZfdHL_J@(@Tpp5}e;JyU4(J=klU6mk*&i+> z#rs%Q3M?YN6|}cd{V~hF=>fCMH}_~b4F=$=gt(3lJ)aL>csMx--sjFr+-qTb!|73mPAaQ zps^|Say|SEZ&9&e2uvAiMp{{D^q4x#dKRx1p$L!gDyNjpUe2eV{pKLPHU5J&!%+Q% zcBV1r8nfub!zr?fv5R&0%8N?ZRT>)6DSGqWvjsX*ns(|(p>FNZxzpWp{#@(CSAWB3 zfDjjC(#WH?dU^6|k^$)RY)ol>_8T2;BV~0;W`?tLr0CfRUtd0Se`C5_GkUbz6+T*a zwEBg|Yo$Hk#!28Ct$k?qES(Y8pVPMj{OBR|B)aKu%-ADdvrW=|tARL48JHD-Vx~0< zW;Wx%%1Anx^&NgqI4(#fPAnrP{-4CEu>Sh2ZPq)1*1w_E)=hl8fBnl3Prp)0aYt(cFYAi3M!@Wm zKLDQ$Zbp8y{q18jSga_wS_~(Zz1m0FbwkU{w(W4_Fdb6EU|TXcpD(<2iyawxik8Vw*{Ry?`&bTg2^J9UK$GZ{_GJ3j341vV|6eKU7fY(l9$#ml6@mUVg4| zIqW`dz|RDYQ&D-lI zu5#yVi$b8=Rr&o5pSOod7|_Q*h&VE44kv!?b9f9Cy%RlOQ!&b*Wxeg!k+3=!+U65d zL4)V-vt5Pswq>o`*RraH3FhIFa8&pbiO;My?!lHetJgNQKFsr_U@^ zhDP0}@{A{ewLoXlLlRLpT1Ys7QU=&fHiERAQ0p)HCQ&?MZt=6`ZFC{K)m^KDG7|yu z>d`}w5t3;V7Vw3-D>RU!vEGbn3C!w9CyCtRp=%U~+0AbDwAJK2g6j7>Rw4CD`F~J! zmRhs;^KF7G>S%3sA zB@WGuWXjk3K)t3V{L>PC59Ot=C?Zn_q;V4`+ z8rG`zhu zE71NZ49gI4EED58^J^u%*5O|@Jp!rVw=F-p%!-wIpK7^WtiGvtk=f45@n2VwuJaDv zem1w=p0)qcBd|JSA(~aBD-~=Hwl}MFnZ3{Kzk?c;ImO7Gbv3l z@tDczA9Wiar8#o#9iIQIgL|i@0JUih`<4Jl>o=QDq{z`baht9ZsHKSu)b>i-(Pne2P8+7}PP<$C zK)V1o3cFoj3Jv&kPy$Mp8dM2|1mXa~8?E!cb{Xd5r5V(6h}ZpTKg8N_nH=MO9ciLN0 zGwn5s-}IS()!!tIAskkuXx*>d$E#4ES1pCPHM?!Pk-D+ENxSL0Il2Aimg-hHT?Kvm zhom(U^+BZE22L`Ld&y<0UAjv(nJRo3Cobn@n*sCa0PnN@^qIYh zU+_gQD{M)db2~3~9oyK7YLjU{Yj4B~v_`dVn+qTH)7OjxU+~F$ztEE~Ke_&*?<7TkNKA?G zKrKD1-TD!neY)v<*~?|@WD>pAkqn$XdC@v*a~$w1z1i0aU)_klShn|^*=fPbx*c{# zH16%GTsYgTHYc=|wU%Kw+p(=G?O3dR8@`>lb-ndJb-wO#9hI|OH=C+stVCL0s*45b z6v+tqbe4^HI$-%6(zI6K<>b9%kpLX`7Z=fdP^e-AX~Z9hu3Ogoj2<(b|0-u-KK>Fm z^Y}d^7!vVc_Hf_SWA)D=OVs3Dk6XQ6TxWYRIWigq)T&CNsr_SqwdDUHeDunHP9c8B zKWGiq`D2C%hnoJO;jD-Lcq3WX$iKwUfwt;@)2n7ri|h81Mh>p?SpSn~zP|qU$?(c1 zF{_*Zq8%H-j6O}usQy=J0C4tkoN${#hv%>8Ez8X)$0cE3Ao35fKyI7?0|IS@}dYJyL)-k{{@edxb}17`x?v3 z2rbW#DL#%u>g<0KZ_0SOtUx2yo}Ycf&NOA=17&x!>TnW_EsRZCFEKE1i>|<~ihs?u z>7q%9@7a&qEWdZhKco7W`@ZgpqTf{eRnLf5qP`Q8OXc}By`HQ8y3&7vk=gZL#CyBv z+Bum<6jmOXiwY}xZCato0}Ag__I2UfAjA zbQ}`y+2;;POF!b$Z`x*W9>0!4Hb|0XC*k-vB>k)`Ef37ZNyPH(H(}V!@wYXf^5EZ7 z`J9$#U#&|?HZc_APrZ!bbJj^HjLJHPXEXO8y0a?-_r=``+~S?m4gVIR!hrBay6J$H zU_HwcQ>bANPUni`-I>O<%wIFGoxHUkh}rvYpAIvjyjS-S^z9Qbx+@O9Ir&(F`_em+ zIt^o1zNw>RgbnUrxC5!iWXY3k{G2@`GSxi#ggwG~u{00w@hke}a)C+XGnRvIp~n&y zQ>AT>il;5Cuh7UjEnf1}ayTN)e{=3le?OnP;iu`ELB4wQ^IMe0j1J@A+VrFla%;*p zdXSD!dOE#Zi2f`L`X!agI}N>XWd*#`^Jt|OoO@xud8Tj=&4#=ln1~~Acy1kZj-BPP zeMpcXn{!fe%Nj{J)@v$vRGV7~8--+~+3VpjyJ$aG{~bi0sIom6%VCIrdf+MfD6gK< zPFcwfOhcYk;i!h?k2cB+NwMDG${3&vn{tksC#S*iV^Fi^-6@ za%Iuuf>LVeptDxslw3nT>Nlxdsin2WA3ys^UDTH+v&+F8IW*1(AUlEyOOa#?17zjx$t#QJQ6@0<_^ZLL9IW9dl7tZz!-TP;si9OR|C>*}cD>{pPhWdl zYmGGAGyjb1x}tFw`=iI%4o!7@{@A9sCDliKK}h1{Oix0olZ4j}jBG}lHkGxu6rUQp zgY&>n8JjUp5w~g87llJBULkyU$XC-HbPkJ?r_4^r+s6~KKs=z`ApPKHPG^JLjj*77iR0*bSKuiSnl6>Mq5?~`9u<~sVr zX`MTNxE_Gw*JW{`HO{!lmPa#I<#IP`SD1Y8@U-*bZ}U2h^$j(Cb}uf3B9n2Qlx7#G z!Ha=Q(9YCAjG=j^$O>B9?NGv^;cQT_%%tJ%NugAsPYOxGFC0TQAy$Tzt)$ zq3cM&xpglJ^N;{MsOcim8q}776F{Zu;}Q!Al2})8LJgb{7Sv7SWZS#E=jSzazVX2; zGUYe3Jep<{$|&ca)%)}Mlrhk=$fdzZVAi*d*)ztIAC z9(M&g5gn7WW8rBzq?7N_#XQhpsDH^E=E~fnRnI^oB{?)P9IAAS6tJLq&(QW|^X%&0zzl42F z4a~{(GP-yEl27yP;9z1?eAeNmMv}tQY2T@O_1@*-g<)aDo#jY`?-;tMwE6gzsb8G; zfsWYcv8;1&5ee5>6QU9FbrwrbXu`#TO!|#Vy!r85%-Z6IpSN`^*L02pc^XQ*)+2Op z2RyH^x7!c1eq1cqNK-)BK{ypG4aO5cXAit5wuhdhYkLDHZgD3ck zdYA-R_XGu^Zo^`8XQKl>V3$O<#U=CUX(H}ZFJ~&68_@0i#NGjDA+yY({nq=3wQL+=P!EtE(#GTWwW_nVJq%>zVC(Um zMM6{r^bF=;|J;K`R7?V-=<4L^uJ^(k3Ijcbc{)I0D(==kAWdrz511LyEbwc=0#b1B zKxo6<6~ zZxbXW(3(U$t3m3<9w`3r;(znx-vaUP+3;^w@Nf0_@3rB7|H89YB`Yr1pSzbS*@;$`P~&^PIGxbAAl%qj~cdj9|M^QFrtF*QCpJ}NyaCdMo> z1#*Lk|L%@nS4S6WPh3b~0kb6c0%-Q91DjZx{G}(6Am*45|nb7*#K#T_F#Pdd>MORlR%~?5c z`sEj!fwnBu@CfAdnI|D}Y$?xP!Nu0f#y|wF?vo_*iF|KY@?`7XbX(hysTf7=bpsd6 z%yT)jv->>ExqO!^h=?e6hud8nh>vf$ybcy2h3{d=y$!3cYw$b}Yt~*%XMF8g_Fi3$ zaMH_8XK%xqeT}vEGLc4asuup*^=n1NmBN&8r5GaPf(XCUI91yZcbEOT+%2W0GeMIyjj^}Wu?%%(efa_dUb$u%D>n_v-oJ@D$$Uy zrSI}WaLi?Eo3K`TRIwV^iOkppdJL)6aQVW1@k`GwCv89dKFE1NXzb@3Pk~J)|S~E(i@jfD*u7lQW81&Gt{ciEGp>Wl=EBm#T zrgj`30M@j0txV!|A<0oubaaiWw4*mKJs_b*S0hiz1@Ln>gzWoMC@3WR(C+eE`noUg z>3!)^h%_`{ju>7Dwun0?Q+YPuVUZY~`IrHvt_;hLOpP>00gh+n=Vim$vlGo4?mS{O;c41LsX84`d(tD8&1zv2_RJKXUbjlfP` zj(5GEQF!KSt2!asgDB$LlnGngtt_`~U{_w}t&df`E6R^4Ek@qFNmAC{va~+3m$1Xv zp%d%^<6Vd;07u+@%YEXUrs)tDAre;}fs&kUDe>Z-S-kLFbG*H)urr!j(wswwE3es< zYUN`(Il78w^HDd9*7Oz0nZmC4;byd%xzDR^0AziqLDg>-uQ^?O`1CT;!5-QdQMVPw|V+)CjgRtk$h`T3WTjrD@r1>D4lQc)Q~dY&kJ?fVRdXxIjjz zrvUMX^Ctp^)ydDwzmdv{uFt1t>TqP_yYf$Cb-TN2%2(hX`XbxLGOouAOVB7&;N4$t z4b+^-2F&VPb?hC5$Z~UX^4cpIx{Nijv3O4$s)o8PytBogXtB%gFS$+CBWGTx2&5X?aDTJu{;`rMT+PgS0VM8ot5n zMY`whjqNY8*=pROKeXjyz!xqhlYfzmSNwJdYKLmW=J`wHO zv-K%mtL`pqmS+p?nr1c5GrMz5kc+tQRXNLEcU@)z5)%(uWh`_*;?}P;xrvOma{Yt? z$9@ti4%GBpR4sOQ>e;!>)TT7=9LSYAP1gEtHob|`=?1u%L_wiI${W^uOsr{A>)RL} zCbaQZdELAEohKpmQW5DAhBM8-X7Ov00c>#0CN5oV9Lr@yqd}{^jWJK$?kAkK{FF}A zm2!FrUtkY-tlRO{w2wnir?FgQk!SDr6K)3Y^g>y!UcZ4Q=-XycPK1IY&%yR~KDkPS zg*%^-PnDXq=;o8t46ng%uIadEB)7VdDMU#XW!F=Tl?bwiW|m(^?$>i@-d>nn5K3gc zX;N5x;kZlv<^VW!n8=v@c)u3dPILQKirY$0?d4HA4T6}Buq*fttqREmKS_s$%FMUE(u8g=pm z#%*{)ta+0(iJn4Q#A@eWd8&Zl#(U7n**WnX@4WlbG6KVGR2E{{wDL3a5jH@Uj#e;D zf1pIlsNDbbdyXlsUW(bA4?~!2ypghahTde5-*n?zm+0{8SE&&tYNGiHy`mM{X1u|~ zB72?r)$EKiiy2K5hP{{UVa(hOG|oQPPCdtJxG2^1Q*OB7`CXeXvoWV2@iwP#6aq|4 zg2NwC!daO7n(MrIwwL@H{7=Wci!-`>*SC$={eBA;4<*opxS~-?W~owlRvJyFL_j|V z=xz}h45&jFdp8cPwYFkSiVV>O>fKZ|DRDnx`dn`(96PXuScf>fg2M6yM;${pX878v zjtHT1X%SkbZWiEFiT}j%HBw!bVED{j+R%G{;O*xxCxX4l;VSv}Z{Jb=YXOao9 zv9WrLmL3(qV6nUY=BER^dE)7<*tob(V=5Y&{)iw_(xiaXR!$2^1aih0$!$JNwlkX{ zvI31Wa_r;IFSjmSF20`ME=#9(XncQ>n?EXI*zNXJHa4a^JDBSWR8~#D1x(&!Z{-Em zT7%gTcJSHS*v(g=DTEA03PE1qBQDe2%2+x9gy^EQi7HPic-Q4-J8zL8SD3^{#ZjeT z>`nt^V;OI(iP~nvF4o6jyjn%YaCMm!z7Zo398n^UI#($aL>CwM^Gw}A&t9wANt$K40T_9dtDP zCz^r#2M&pR(^_ZY}IV zGZkTrQ^zkn7Iqt&PP0}(g|Tw6_$e-prmo(4HeNmWGfnSw8h|twNnhk=s{Wj~d%W*M z_cNs1?O6Kw5S5{RBHZyZ>Rh|TfUrxoguu;E zFo$IS=KV-;6N(R+O-Gj$HP9Wbcjj%QEx#4(TJ01f!|cVkcsk-NMZga@6?k6_9b6hhB|z9?XvB?-!wYj)nf{odIuP*M!t68rOo54 zF(xLt_j{@UljTdYPii`wC-dzmRTdJp*L+W%G_7IQHUM4H*KF~N|EQLbop0O^aY@$k zDS5^Lw78|O{g|_`Dd8I2l+rEi~r`{{Sp)R5lqrLR6&q&W%^2(d%Ln)58^Eeo9D2wL&s)8j|nqxsn; zz}=q(@@p=1uUT&V&;3~#7+Ui2@^QxAqq?WILvm{uXhJ$Hl3TjAFQ!PQb}_*k48HNY z*u=fIA^)@S-YOSx9}`JU6VoKWwgJ538Tr?*08u|*rT{!NWsT|HC1Lvr5e3+8d^;Nw z`L#=d!gd^BE&p%zG-O>|tikRnc5Rs>faT0uSw}-*#EVAP@ch*3yh&;|pken2Q$N$n z-p+2D3tQmgQlB*oEY@ETOj;UM1**q~I%tHO=SC)U!gA^qyM(GVigw(6910}g=fOi6 zw)1W}yiMun0Ev6JPDjmakxQpmY;LSI-u&f9X}4LwyZov?<1}_>Jrj2jFq4rMrBMV} zsU!K9pZ=DS=WqA!*?1X7fzT|=8fvFTm$*qxQdpIA2S5=3tvt+w5Zdv%SQ_&fcHRVb zWp!r5=*L&l@IiOoZq~E=c^}s&*>rS#c#Z}J_O6*Ij-+_1h=3ezHf8$EP>bh?~oUI=O2dlEXrZTxZX4>F3P2e`svKBQ`FZ%3b9**?R&^530v@B(zRhYGm zeb+pPw*3aM7e{M{XEMZ|smIm>t{h_RjFv(|9&3L^yt_smuy-(n=8VO`GYkQ<+P?Rg z?Bm+;N)?0Gd94|=Ui~xb-Dv`_;=fn0gdFKDyDIK94=`RlDCoHGDOV{MR+&3`8)%O0 zh`ZPt$nd)Ge#ry32lUJ*Won+FM1Hrs8Ij*PKQdFnT5@|uDzb>lV>*KKWK_k9eVd+) zUvrn33kZpk&LfNeVDhr_i|EAEqW)L8aTo2{+rwK;ET?ix4LSoG%+<= zJ{z_3_8FR(D%9Ri_dN1_+Wm^k8V)nnq+2-nb&yH}4omswMvP*fy{&EXCzx*~u*n=p z!%Gr;J~8P!RsoxMnw;N9w=;q{d$g}Q=t>AHp23d1Vgf5S(bwx(^d;$qQb{tnLJrFKIuvAwR7dz>+ zo;LN#NLBe{O>u*+9`B_IdcQQo_f?avBG<;z(={qI>vi6e=Lu9g89hg~?Wb*bx)aW3 zY8d1)PL_e7A_rQK!wKyD{IK|Y(6x%@sqzAIcCok!wmgSiJyGM-U=av~ZvD>AF8oWE z?i;nf*weE57Xs-M&&pZL@G4IS<#K2F&J?;6=Zb!5@U+bv8kPlDcQ9`P7HFP|pv)UEG_Sv_LlB8m>fUNbUKrY5`Y+k}{jMYVOoP4WnOY z^o!5P_A%EDZRIX$<`KP2`aTcM`k1hB=9a-C;^5}+;`8<5wc@RDTS&z>JnfIymmZiT zg>L^f*qXDm>ZuWHFkYoQrv}MS99tvVmv93`nr8EjhChhzbU!`Yb#{(fUk^6XbQ$A6 zs>Q2qPRFfHs{BZ{y*Q7Cj}D?xF)Jf%)M81>u(LBNb~Q@2+Yf&2%iRm83E0^)acNYw zslZ?aT2yZD?(T0bNnhVLvYNFpBIzT{pv>%?^+oE5D|_5+P{j&8C(>Qd*H8 zerxX(Wtn7zzhAV}{(7~G|LbWFnOV8_$PQbD5nmE&^?0+LnLIA%$ap}LC$6@H=ZIN} zY~_`r%2kq7abzHKjPQ|BOOo+yQZOQ2z^~Myq__#;Tyki0|7=<-Jy>V_=}07DsEhuE zYVoJ!F4=gK&XP=ay^2QGQr#EalkQI$QGT2XS#hw*vLE;4%ILYfslTthHvyUc+Az+; zBC^$}H)@bwhVccoZhNKLN^ID}RU`W1wKpwyGD*scM? zUP(&MGIg>e`P#8Dm&uvflL+~M?mb#wa3Tqgd%G8;=SOY8{wrs0HFW}c1N@xgV|>YwZN8%}wT(?d zk0We3DO$@??-HLW{5Es97{;72@%k%G7>uCC#R85C*fbYiTPPa+TSeEZ3sjY_@EI`_ z*A&aQVJ+VqRaK=vqI&+6pSGJ8+%##sR%$vVrZsgP?xf9muXq4kc%6aHwKK_}ym0BJlV%B{hFuFI>TtKKkdc159gk&5v2jDcT)_b7IQdf9#Fk9w*Vv`S9xbn@P?Qp(=Us9ELn= zyx}#z0yKtikAlHS_b&@n_8T_^wgexx~(!Uz^Pr>1JZ@I$m0Dn^AkA2}%beWmxRlk;ZuHFGGC$ z1%Y9Hc@@8~Dr9xY-|ThW@96OM*7o+&=Hlu2>o3gBCr+bcA-DaRkyfkr?`l+FIUEcK zY3j!zf*5_f^747thwST!eRIug`WnR!D4tPqdz%7rZYjjR^j!1h#@xw|ombqpn_s{^ z*Jb2KBH3yJeW&PtA&{=|Bz0U$kZS`=ydu}3<6K=MMxXB()T@t%PHbzJXqIOCQZf0% zyT0v~7J9~(X6Axr)J$NYB+)oj?u6yekY;(`P=17g91W4zhTq}OU^EI$t;MIK`o{h^c~-#G&_H5rxux3dTayOB=Pei z7OK^Q;|w0Ih7X5bFPGk8R&RJ5W3;7UsF78SK$hF2_sY6rDR7BC3@1EroAvUsnt9|R zUCKAVUDg9?&ht-EgKn0-$HvKX$;@;nPWCGP4qR?|o}Q|}z(JbK{nwL=KYTcxRjSoD z^*F9H=j*>ks!@qiE!E@5(aF*u!A6_RA25U&q&=;n+djSM2d!jE3=xq|a})7p53f9vf@2$G@*A z&kl`(Jbjh@47*BIn?IOpya1m=+St^3^Sqs~xMIi8{{zdFbM^593KSI&&v!uvuM)m0 z`GWiBVF8)mPD+P5U;N#l80CE8Ei=h&kl!<4Y140GtxzRNzUy`*QFljW&PTTT8+iBD zC+G5aMkeV}ciFC((~*tDGdTSCIVHTQQCdg6-43idBbIbDaT&s}SF4-+5?+y1$ z!W0XHmCwy|HJ@90{!lj&&@8v1w}m*iIW->6^yrDc^}^FkTjYOsdZcMy%Krr$FW__I zNJnSTu9r#X!rvWGkJZ(|$W^tuxt!)R!}JW03_3j+dwyD>z}L?xC!3=bvR0snW4s?j zFUq>0TGEjJxb%LDK2%mz+8+QcjwarDgEkZ3=CzwVi!lo?OGE`Mtcfs_GtUj6=lz;w zWz(-T{*alnXlOVl+gicn@ymmGCqFv{7EQ^R$P%Q~iF$hbuE@Gha*8!`F{b zzXdzDGm=A$&KrEUwsgvc4c;8Dd~5T*-+b-X_AB;r5XQ0f!wPsMOE_lj;7jJCkG78x zs(i#y+qDE{<`hch^qQ}tOS_q`-2mU?4CsY}k&O|{erRHa0s%Pl8qYHcnZ zFaFquYl($s{kt{f`oS7hIf8Nam-L4S+zK6~;M_s>S-F_q+^mHjHf&?S`LiD+<5DRT z(^*5qkDy=z{r7%*E3_QMD?wI?c*$nSQ4Qx9qObx`I3OYc9ImV6cx-<1K2-5cozCbVDQ(Sj=j*S;_hb?~RA0H04f58=Lgm zCbwXt_iOizk|nz}BOUv4Ww~%c^U4>eliX-0{E!MZKpX{x;aryIXe@t+`<*F4U zbTdy$@a;oCv<5#6(Y4TbDB7A$`vJKCPg)!r0a2Up|Jo>x@6v)%r;sE zxks60l@Tl-FX%~|P@K(*#<3?oeHa#|30U*B4tlyxTukuy5}!Rtd+7a}2}@07%}g5y znkoAOWi`?l!>6I@QvLqhoyQUH$X17}gWzRP-bi2fJveybwf$mqPUH(RGGWyU5)pt( zo!%JyT2dCHURKjM<#*&mFs*S~(V9$PoW`u>rFDm|ncJP3aP!zTUFKs|w+up(zE(rU z+D%v$e;m{rIZaYyy;}}XmiRD*jTX$#7P!(B8j8JTYADnS@q{Z7Y1TDx^w!&(?GCpFQK_>k7%IMH)P!3g`^j%e{7 zoPFOwB5&KgY`pB7mps7<=Qae>^ZA=YP)Z|*9pZ@{F z-_LU*UlJ~SoEOlRCWIeo*;B0$i>R0Y%iV$tBASeiG#QID^B=y1<;ko(M1*WWel41#s;@4qvF*x(ajUq?&yFv~-c)jm(zEuB?O_r34?|YHc zSzs8`W}0<`ksd;r#Jz(jvB?=uEe*cpx2G>MrJ!dqRFtKD)bKL@#jcBz5=aKM|J$kl z+0D{J)*xA|+slLf03&x_LfP}_?U%(50^-nB*|IndEy6<%CH#c$Hpb&N-<8~RQ9-$Q z%^;Lmh-y&I5vGJ|Mzr(2L&qYvDFwA%_5O6sFA$II^4=a(>6h#8`K+{i%LXdJTx6BE z7+oP09EV@XL2jfDeYnKAA4C%om-LXSXzr@{bq@Q|m5E1{J|Pk5RT-nRZJ9`hlj;B& zr=TK81h{dca%HD0WV6m=AK^(mSkqn4m)4LrakRfK*xFcR7ExUaUMH@TIIi>BB`ocS ztBh`M)`QZdJaOfp2vISfE}{JA#k`u-Fj%jxO~G@nko_@PvN(9s$QStpqM1iX56QTX^!?sz|)avwlI13^pbG^u_H(n<=e?M$w_smKWW-u>vI|$Sa6qg9! z_FO+*>AtAKxH;P$xQyHUhxTXTFt$^=Z3joBK@`)3h5y=T{QIExrwe zCuRGWET`-nR|TD|MnSn+{5!?GdekCL#$4}V zRu6b{dIUY%rHUl%(G<>{V&d{o##RLNi&VL+w1x8NC-g&_9Mk8D?kdhc- zg3NXLOQjubzt=@}cqO?c?kQOx^Q7Pb&7;K#SXQx;O1SOVgy2T3NPZ`Bb+HUm7TI0< zn42;j*8iBBg{1(TcF)t7Pd9z&A+pw!R4=U8Xp0b?4@NRHm^8nd6C$Loi26?EmUeT4 zPU^%PM?SlyNCHVs9KIJIi{kH3Rxb}?{FPsu1jw>qN%LnCH z6$d`B8}6^qiDouiu!vi{ML}DXb1Gd{NXvtM9AB->gHez^If0lCOdiSRqiGafavk#O8p=r>S@v4s5)4G)Q~n78FNl_p36Xexanw8D=zf5A@`^b@V_k$C&z|au5i#XM8Mj8#_^W=JD8Qn zCgb8#y1>_nZ0PKSz|-RUyvFsSQzQF#Qbgr>R-s0tsU{UW47PvG;n?A?okWHOXgyUM;$GmtN6ppmM?)oC z#MYqhdi?1z4Sgt*2ui3yKzq!{9{)`KmP5QKJs%(HY=x=BNfig@;YG2*w}~g9`1DS z1V0e$-S6%F>@!-I^ZM?LsL^eF}}>#AjglbX&xlLTn6U4T)yN$ z1Z-9zFUA1N8U{oZXq?O`5cAlT!Q71#w#L9Gjbw8{T_mN{XWMnNf%ms_dde^RJ>aS- zXH(_XO@L#q28fyOIgLf0?{ouStp&g&k;Zs9*sB1pOIvQE!Mdl;_Kv!P^V?8=Un#Ps z@%5}5JZqBKMiyK#SJ z<>$}kNoQT-{v^bVs$cXsksD8_OBK>MqJc=Gb_(YZV!{{+#DloO=jO?@yr_JJ-~qsr zghii+-&yVLa+!{0l46%}QwWA)JA6w+Mbz5a70eq?PddD=`$`?qia9>r95p+xJJ?-b zogJOYLF_KNpe#{d`U#oL9*nZNbHsC!;mKS3#B+7WWL|qdo6egLrrw3GNOJZp*nQi) zm1x}I`}DkwdP(Rf5Wkn_{cG=@R&doo0KH*A^iY>&c!ZbpaM#q=uO$}sPtH zMoKNR*f;t>5y?Z_Ex~CjC(SbcPVcOltI%lw1afxCyNXg1&FUSbWhv;3uOgS9j66&- z=R2ml3m_!e9tj11jp@F(BUoFk@0D0vJ)c``u=n7Gqj7z3&PTqzuZ@0D89mFIKb*)_ zK=|oKi2rg}9pOZxS$w_t_{({sw&9c<6~HBhr2{-1-gsJ3jt8XbN_P=to!(wwVMMU&onR0Tcr1~S|H&cj6o~|`95dHihLOV(Q zHw_d|*EW6^$k0xfQ~iU?mt#|6MDlaO*M?e~ZvTU@2La@_<(*aFx|jZbM4mo#OtB{pY~XS#?r)z zs!~@p*H%j=f&wyslX^9ZI)RE>4Y9i;R8gKG?X$C_Gckvaz~OL0LKTSJTdYcLZEUc` z$@;(RGTeXtk8bmX&z8Ub_AxZHM@90nkWi8KLlLZX&`iV??UYv$|AV{t4r+4y`bSYL zM-j1tKmbJ$5drCht~3P!={2B4Y7&spYeWPDB}nf@5CVi^=nw)n2)zmkp@|TB=nx>3 z8$IWH-rvl9-??+=&Yk(q?@!oyR@-~8wLWX@XFqf|@f0@A_OQRd-^1-wKpqN}Hrf^W zzYHoqjEv0sh+15Hx=W89cViP%7ks|2;ExsH=ETkKbN-o!M3tc6@7GRuusOB!h4XnS z(=DSB5^a3G<BI>^x9l3nLL8LB>W4`ZZ(+`ok7Ih`$?J8)g}@5l7{giE}fU#&Dv9P}ms%>HcN z-Q6hRAVTkk9PJ+sV~@(Jm*sn=5MP#AHohI+YjX1fO3iM5Kja_h$#AD(da-cEAu>tQM@ki=i+e52nEGAC&`=8U^?Tw~ za4>Ts^wX6P*GmgnD%xXZFu^0{1W%xEQ1?{jeJfC)2fxxvlJedt8d=&)7UIrbYRC1g zFK5oloi~zz-(|@D*z7Xaed&J47Z&d&$MOBo2rble5_N);8Vd&3xRA#b`#b>!_S0qz zD)aT&08#D3bD+jp!SAI~?c=z#*@ff(H5_S=Gg=B}3@?9eHl`YNG^UNj`EJ+;DP95L zL7U-rRiS~4n2oWx1{AqZx8J);y zj{V7!IL+}?ixC`ea4AogLg2HmXiuTVc4Ax^_4(P-61`=8KE%@8PF)hfpSEqwefnd8 zdY!Lh_c_-MhHJmgVaTVcnz(zm}in1^Z#`A0eXjUCe*6`x~by=6@yX~SUbF}y( z@i`ssN6i}6?e5BpsbE4v#Vm7IPgPaM9P{g68u3xl-tolZyZd9ebqI_Lr==SuYB4Uf@NIUTYy7mx# z$RwbLTdT0~>BOvkM?okKYj@zYALW>Zbi4)!sk-Q4M<6kQPAIGk3w8_+c&9Oo4z<^X_yE=kE0=uTDvv}H8b4B%FdN-*5H~J z1WJ05!{P;Hu*CB1u!O_Coym#i;Veb`olA@%O^P&x;ta95Ij@Qvmt#C#njPO+${c8j zc9u(BfOUdR6H>sCz#D;+t613Af7u(ad@YL;0uSU{4t`E~m%8wp5)A`xzhQq8WiuQk zX*we3UTk-xbgy^5%{<{C($eoO^4&})CbAcwq%cEtl&l`gHT?)5EztXNi*PBuKPVnW zD;GXJ=2nYP03^lE-sgW1oH@4a)ceMAZ4H@9%2#C^=$nol*q#5vlj>BL=RRlfz@lou z2-miotprWOSr2Pik^b6KzL43=JV##5r@f^J#d+YNS2!#te zGcsEwqZ!2OK-FP5RPTr%Hefv5e+i7|G?af#OQ3wHm?7SrI-`l$6rpT;0m`R|dxirf zkwH(kJ>imBd&6kV9ezes0|zGtbop-dvQ+i?*M@0k)rt0DEK;>g=>Va>eoLJW77pe| zI2R6H6t9>y(^lz<1(&cSiQ(^j=+|D~w|&m%j|A-#5W)ulh?TS#(1+JEx6#T3neL8# z4}B~8(E;t_v+7eJ=761gy0Qbk1Fs{SIhn`i4d0j&iNYdTG&kkdP^ft3;-&?0Fy$R0 zY3qZ;teKP8jkbth6@2NbT;+oS4VO(H;OIMG^#?Fi-wVJi9Dj>9xREVOJa&8AYh#|c z*D$k8S&(@E-H$!$J%7-W&*mSp2k_cIKyET>Bd@-uFJ|K|E0(7Y-CxdjVq{#$H)9oC zL5=DB-^V$rn|YOOtWjsoO`lpxo6vsBd(tA9ERx}M@1eOs8TMsYw`CahB~W`l5j-$! z8s*+T8dT+Ph7Ee9Apbn$a(6m7;e2R-@b+PHQ!3{;Ie=B9-yM2jNYmXs9p!OH;1oQLXEX!K6M@y)o9Su+EEEG#Rv zU)x!msvt|${)E2Bv3iOa;;_U2J^?^WGu2bZEY|*_iKZL$Fa7vIzAGQm>_YBq`&#tL zZJ5}Jy3el71Qqy6O=FTB6Af@qmon)CR`(I%Elne9=vVH=Zsc)o?k4qDf7|0pjuH+V zEAb`ln}ooGESk@l&LWNty9G$w^wyl-AFxta);*dA`!e{cx&N(wT!a23dp0juAnr^8wao6Y+H)#z5b z5?@x7j_PA|n`kniQsDM!#D;_>vg#CRa^g^_4xJ|BIzwoC@V6=s(85kDXJAch`bSW@ z?634#*y9qzf>(e=1sP%Al;PuW==w{|Qwmnx^tFDC?pL1FU&<13$O;=g=t(*pm%`hh z#XQmrS`^UAHuleZ!L`N##CT?Ajn^OV9J1 zwLufd^~~LR%Y;~Pm*+_X=*Ny7jyDw1t*9>T8E@CC@4*nxuCjyJ9JYYOMZN-p#vBhz z`0)Ui2lLl|D@y8e{BhBCg8eXXqsFGHrBCr_YB2ini-XQ5p7e!@qp|LEpb0h2eahEc z^ym`QN?Mxg4N5VUtO|gX#8!<*w8ktEQ9s?_j*Ld$%yDtWzWY zap8pZxIpD;GYoxay^O7H;5A1*J6fKzG`}?ew&!RG5qPxakf!JJ_*1=J=}aAc)~@4I zFBQ=n@0nsMcruR@Vgs}P};OmZY@;n8-bTW z_+V!ZzSj=Np2w&z>78Z9TmrIQh@d;t+nh(e zG^}kXv1!E@bsKc)UovsZR(~n(mLQL-F7bp++HPrjaGfq<|1E*N$#USKUXxOm&8q{a z+0SF-o=775zf8<6tatZ4CRzuuhz0(}pv9ES?JW^{c{$#y{}LFttx-Cd%KGY>b!LCF zDtN}hW^A|Xe6vK);pT|Hwftu8k>XrdE#^~YP_#%rl5y}IT~3ulHG*4qY789)wPyV% zNoLsnSMBSFoJH9uUG$k@nAZCbr?urBcblBo3H``>Jn{;(wg zu)pp0lI;(_1~L($N4NUt(BFd<=YT`il`nq}%l~HQQs=&u^joA_`d7;To}TMAzJ!U4 zi2#n5-gN)M5J}I>pzqEhw0{4w&Uff;oLy8mW9ASKs`Z5g-S7e*&Wvt_4%h9rE=56N z79|KXrQMy@84&^SEsLEv$mDA0)#e2BjX{AAy#h(hlkpuz+6)Zw47fYP3-Km(@t5*h z%Y{r6a`NM)^F9mO=?Z#jwHcnxGB}LqEr@@RcRf<%mrBA0yzQ0fm?Rv!xfk_VUphx) z_<1U`jTB=^qEno~Bpq+Bb+)E@48AKXJb?}+KJs!C{Wr@9?0*1(DHS3 zYj?Pgv+cILyG}%TMf*gpmR?0xXL9h+yQ)W~1`ik*pt2DDa^u?-P^UHHw2;9|#jLgo zCm_rinRtVOD{5=%fCBh3aER3|7c(N0Tf^#7WLPfaGTIO{#%fnqsBe;$oPjGs4WkL~ znokKzh*Jc3LJN&{GX_&*1ydxBbMs z7ThcLY#9S__fsKs6PjcLlk)teG`xnI&<4D-#pO8gt;>2q4)qt+t7d`f zl-hggG@EL^GFB}%xS*co%HRo1WZe%J9kYHnQLbrDsTB3J9eP}`r^V=>FV)FedF&Z0 z-EoOIydL~$bkJXc=CG+UKH>Lj5cMqKKkH$F!DBf8Ia|^tt@uHEyQq_=NLSCfOc>EE zP&d3AT5!>^>XC(ZaToo>{7dGfT!pcFDC@2r=adj!p@5mx_d6%`Jt(KLJH+|1PV?O; zjrhS^_6bc^62Fb#rjpiKX+rwzo~uqBeFEP5-YnMO;(y#z+O|{F^JU?T$%iXyeN~() z1}(S!XS-2;@gS?nG{`xqlk`=`F8ZC3-x(N)FES(J8+|@=(5LOs&qFz1s^q(4e5$EBfqrr}XXh*P z_2xh==}a@EK<8~p{;*Lt=m%rT%^~~pzZg{7T1_f8e>!(J=Kn%J5DeA2e+5)^Otw~S z_&Z9-A|9lx)0uC=Va5paE2huIUH%ZXRHKOVnlXy513#yVoI|`Zyx4v?)xIRyYhIUk z_q5AJ0%71d!xPrc_5|y`cyWiQGCBJGDk4d*POyjKJ}B_W+%7K|l#5}ZK%R(Fpv ze44b2SSc47ZP23nf*J z^H-igUj`K(dydjD=f^L^I&BYNg$h+5Ss&?QewEeAG&r&4e7jzQvDIl{z1^YhHd-rh zxbhMG_0BsnxvPSCPXyoOFiE}~jR!ztp}{8P&PoObBfh+8U}W~{apvo&1ph3{oZ=h8 zy>c5RTARs?3@^RCqdqNkqR+P(+-^`|Y<<**x#f`BC1*_ECBueit@23%zyIA93pNx# z{hN(>`IWPxy$tYrfk3w&;r9BA$_?~N=@l*g4(qMgY>o`TLZEaTB%3a7>=@l~lRwiF z^}l%NFMkjj=C3~S2|o4SaQk;W@VsQ5eQcU9Ae(_9`^1^w6fY?~p;LPGhsdL>5{olD zG7JnCbOqmhrE8Q907_@9emTML(vxg)_~$p|PP%6{x-of@Lq+%N>9Y(BTJKkn<1zzo zm?wT~+^6>TO7OSAC10rRyWcmy{2$tLQjXlnR_A*Z*HxdSSMJaX(Mo+_wQ{kdRFaM7 zyJkC}(*49z`+vz%#@+@eH(Yz$4*x!}L=ibTOJr6v-TVWGJ?Rp~;NBcQh)ycY_A+(Ey_f?sHN}P1(^30H(m+QPHdgPE$>jRR2;Pd@wIz8_?@qvZgrT(6?UODR4w!A;?@whGhDU9 zPnmJ=)Q8E*_k8N2=LGykbf`b%y@Zb2_tgPie;zb>S=C7oaG zv>j?<=j-;ua24|dwfK~W{?vDx%n zgW|sX2j2=^MiO}?A-?`z1wcnnLNa#PsFEQ@=Aw2DY4qa@HKHS~O}QR6oZi5rKKxKg3sb?0fT zy##!vfPdTU5R7^N2{hEp&|V%2yhU6Kxbff>o?;tt2syyv6|GCy79Z}Y9Ai*9L*L!*eM)=Lr^b|FHs>>Y zr3aKolWt*`sDsL{*iyl`jZ|<&sn9)#5<(_;s9dE2w&jgoeh^VCmkE%^kn94RjSxdqQ8q{55cNJ(1?qVX60>tU@P=sc5+l%JQB z{jD^b=sY1OmAlU#g35`#a$ZyD9^SrwIgwn%v^!0#_oEbx_)1;m;2E-S2*-OAUP1@*7INVt zDK=)=`|u#Yf{JF}B&iv*=54Q|9}T{?q#{1yF#O(m_XDEA_5Z=)o%xSbpu4(%9mxOc z*qE;i{Hx)q_i_L3SGvpo*W&-PKmDJ{M>YtLJ+f*Fnj%#}Or0b-qD;Q(uoomuTCi7! zvYm(Dee#Sh&Td4Di?Hxmj1ujaM4#d@hUX~eA2xSI#`VKoCNtJ_e|vShM7%8R$_s34 zNw2*b89v>rVM}UvG%@*iOvdHz?W0Pzab|igIneE3kGU^!RqNl;nAYM|C3*^dPeS5m z0}JbpYCpcc)(b6G0-|xlbKq zFtL+-$@EV+GTOfP7sIDJxyP*jku#?}{651=+P|K%kEBh?ew zE+Y6gB&ge&$Dc5;?UCxYaK8TSp!!qXLXHu1sruv_LlD;kC8(FOxbVf)_oQJ zCA7ldnY!c~)RE7V5$%uFp4`Bk9IzcHMDJ?!L?bh)TaEPZJ5*sye-2qef-EeR-PL|C6b$9I#Dp z3J=Q^e3Y0QeDhb9wmw(Jn+|wDgKB`@Yl2h;a<@NpxZPQ;%O=H&|K8j(HZGVF=6 zQmOyXHAY3AyHTY6q{LdJt`?!kTZ!7r*nVTIeuEqgStyIGfsSu?LS{?eno@whqu)y2 z2A=j-sx=?p9SWNrPj5|pYXu(v7z>uci90ELpG))48sf%zb%f|uQgzH{oCfbzqeOF{ z?(iN}%Y@mgc_I5O;Tihn`74(f;3osG&dqH-KIoYs!I#>)T5WZCZ-)2R3M@Y`Rer`Kz9eWA@VD%_Hb2)K7_&@j9++Q8RXO8YY41vGB8G88Bj5gJk!8og_+2f^D za-t+`+gpRg<2M~@y=C2K>UF0s?~AzMLM%8zQGxW)Re6*KSA}gy7me9wl8)+e4poA7 zQZBH-^|_R1p6s*pZ1Lw^$K&Km9v{HmX?=<;N`VHJ&-}M{E^9fLmptk<6HFe zOQo^wuvyV;TGz_xQ6}kDG&<0cG!kfHlSV4#o)zwC2<-Aol4`ur^4o4Qrz#U#%A}Nk z5$sw)2%oh2q+t7V`{-TTc97p>dYzuqbS{O4CcfbwgAx zveUBUxGPRnxuMR*aPdiT0Yd4e*)(x$)%N-=(UzQYz?uww^Lzn%F**UIrGYr2=iHYMg!7y^hP8obe}! z)CjUQp=a3`^_U`9>E+OaZyVFCMwE1OV~X`P$+2L{?AgE{6&1G>jZj4Jc>8+7nhX_c zyiRP(R`RBP8RlL*vGgO2g)pQz?69rL1g?(zny3-4svp;>eGwM>sYhHD>tXF{(5B9$ z-i1lYgBOo5eHh<)sN-zx&Mo@7dZdht6Qo7i)|$wKzCE!7lny#5UwILCNhb=S6j1$h zg$wgION8Y}B@q3t^dr*wTVGr4hTundu~HQzFm;WJtlQr>d)r}}=-CUbE7lN|T2W^d z^{dw&CKF#YkrU~i%UHWSri^ApE$^(^maGI8TS~V@PS_XXFr(DAJN6Yw%gmWaC%I-$ zNY}=_yE}@z)IGn~H51dBvB0+O%%l5p`Ip&)`B*T_-z-7NNWgStqT`3}tY^&?7KIEu z!B_RuDhHjQBYhTdb%yA!rD5Ps0jjMJF=d|irMv*>wZcg%0~>7IhTGf%~_FDax^U2{;rZRWxs$ z6$YD2v+&HwgZ|xj3-m3N*=W0u;3tDtjDNjmf9A|?L?wdF>^x{@n55TT zgqE*XDxdv{#`_O?HXNF!!hl0!i^~BY22lg6xfSyV>>2AG{LI;R--F*4-)DZ`_xV0W zQ+S|MH>=z=7jd@iVSW6T7=j>c8*ygNS!braVCQsE<_P5>mTmB>iu_|@> z%Q}fUY>ZlnQ$0GbD;tWQ8@Z=xP>}7c12-3bjeIsTimhU-$Ol*=tj07Ref+TYY$})) zl`zprELoDcW^B6d%yn%}z8|`+z&*sR?=LKpfG_rGqvP_w*iThOcY~Drw!N2(2xeiG zT`tTNoukp=oyz*x?$Esj6H0~C3eW^(6H{IK**UjoqrJZLdY!aqm*{KSVw&*~0G%m4 zX9a__ValLxz#@_+!wgeNX|GqQ5W}7G!0Oun2GtD~cHAt~W|!nX`+d3+Ak4csb90YzOtn&N3F zvOX^43(8++WKs4j2FafZ{8}IQh@NA}og0EYQY894)uUL@5g2#i`dR&1&C|Ly2!z9I zE#zpUCV$bTkgXMN?cL!Q6CPmw*L<8r4^$Uq3iI&zScW}F8LD7!LflvkDBc@;QT;YS ziUNaGE2LlYs4a!1CGRkmq@>jdus$uIh>U-w^9>Ab+|mLd)>_N8vNF zA7J@`wW2y+!z*aSl87YUFG&yCRbQ%-^+ica82dQSd0-d`K$ofBld_=Ya#{Np2^db4 zgS^pn&uwI7-BI)DOXzCwZzy%03AUb922}AB`~$K6M*Z>sqJ9Tx*FUJgFDS66y#rI# zwctEnOz*a9TM8$M7NDIR2fB4C6fP>V^f054)^B&Oejeh1q5918@)1#{Fik^T#jLvQ z)zZ{|@SnJN<5j{wt8}(p{2v_XkT+X-PDo;F$+=TQnragZFind6I_VfXOMFZiD-S|W zh*cNl4W&ffa1ZhE89G$_Yo;%asc7UxenJRaN`+#&o4JIbbROsh^xlPcj)XBSE`Fex zXSecB(2Kc(p+WV7=_BGjIEy!f9wT&b_nu|&qJI{FZaDYRAv4}pqtwPX?u^cPSd@8xsd@iCjv{Ci$o!jsJo{-O#_x9U^1)@ZEi$*pR@)b3E9;*$}?gz&j z{+|P_|DRDlZ_~3E+bvx50{9L5@!P!gYC;guB)`v5(t=$Ye)lCWJs`dZ(@P~KejNW` z(^kyy!ii$kKUjC#j3Y_|ok?%!{=w+*yHOgs#(MN>_-|q-fr%QqeMKmGEA&dtYVa$7 zc5a{J-~heN7)h_4-ACs2IaV$>(ff(&^y2t+d_SG-mgN5jw&+X%Ey*TuQnYc4hM?`^ z5EUyuDhY;%7vhyqlcVYE|8QJ~8OMT;#&Q+E#xXv56|c+;zxzkd_DW+_*u$+BFvQ;_v%Cff`SJZRlTrx>oc@-6@ZEUj3-IE(m}I)b zj=Po4t(dRw$DjOa#pGz((k+xr{;l=@27lFfeaOwP&O=yx$Y|xN2MSA7amD3eKgg6w zoWx14O@^e&$atR2`{n5jwglpUA)3yMUNl?I)rZ#BLv2%@5Fdf00XNp6Rt)dxky+x3 zRijOqyp5%vhUs(P56OzVBOMEA+eyE&Eb?yPS?|5M6}By;x4-((f|9!6Qd|gIO7$97 z8m`OBuZG>ugy7@vXhb!)%O{{=lA7D>-eM<9$Ec|(Che_2mn^M6%+a{$D(K$KK*KH z=EchSt(VXhX6)!8%tmrHsH5yPKRtQmUOZol4;m7~m+E>4!aCe(7S4@*Y-?W8U)`Y> zQxm~iiz(Oq5w=U9iNai1G|YJ1H5yR&>4tvw^NDncZ{dvuX~#uk3)xJxM9sap!%Zkn z1KIVfBZTUpWE$O%!>;2A%Pgl>j^@JxW_uQddGxMa;?%l>ALnTh77Z}+apE9<~; zU0)CfR)h{H=cmm^nlckZG!N^${W(N;`qX)j5oY?u;7~!uUO9S${Fc@mTrMEHhkQS4 z!}PS$dxWydL+I@ifaS;Tk1OE-OKG~PqH;-B7Lkqb$@#Si8y(7IY3VI|Y{*WXG@<#F zNXh;kZ6LkiR2k_^lsS9@8zmU)nR-h`1vz{8u$#pvNtu{!7RPXKO(#xnf_ zwOW@An-%$AEGY3ZOS_21i2>4n>x>1MR>~AHUG{6>@a6=BRBwJTm=DwG;i85o3R5Mw zZ-oYg^NdvI<$HAuC1yU7TIF*s9NCZhc94{wrKO4YxA1luF@h9-26TMle(=_-+WWzR zd09(~ZWU#Zeg>Ul$(c5y8|85BYRWcvnmG8~sJy0qKyM@(Kb}v@IRd(Km>i(+GvC1T zJROh&0*}W)b>hvHZjB}2(2^yzSQ{Z&qqMDxcy5f%b$bi1#KJN#O|_*x%SQKZI5@cg zO<0H_dyLJfgqk5Qn5&c}k8df2H#LC3pF6g%Mxa*K#KCJfl`Ka%Cel+5DLg zb?wCrS5n$cj-V~ya&Tu`#P&5TUGIq{W`Y#~vp+a3eFeD?r0QqSI)*Z~n`{GF+}kZN z>RbRT6G=Nc7e8tR@=jh~E2gv&@PwuNaj)emNYhb8^t60d8h+D#cPe^WIguiwF-==f zp&=~9mpxWW_q$i1EYzjegXk5D?cFa2q9auIpNt(}$9l-hQDZgB3cF@aR!uD$?@*I6T{b-PFJaZ|@BG>X6v`CG2LN0hM%2*5Oxy4LhG^DU0}7B>*8 z^6I5WUfP$SfSUo&6vG~#(6DFh?+krxA9HWxuke)X71H7leeR!NzJ2q;J2vK4$ul{= zufRh@+t9n=Z@MqxiDD#uKD}QtGHtEj-6UEUP~C+#v*~-oC5gJjeh6O>p9#8t!D#*m z3ay(_s!pJv)+HRKH5M!G`mM;Y#d)t45&oJ~f|FL;#%X(aUKq=v5w?VfK^dEan+iE1 zVRsU$qZeR`@TD(gB8g4c8pg9rWZ@pn6Qlm9vt(a+5)K&6QtBIrKWmfks+D<_@!fzm z7r=%(oi3s8y=uFWZU#z|C8wkOy1Rr$ItV>TWCD)w({A6V4J;R99Fq)=XG<2985aln z@<{V8>}h~)?TYtCO`@r5R}#$}7c>@pD@%-@4$(EiEAq6Xbqj z>PeJ*6x(YdYHfMB6*r;+XXoRhUOJw;f`c{i2BE#5S1%!_0X#2`!)Bj43E2y_b;O*Z z;MO9>x$6$cN!8nEM#=Ru*b`fffc&jrxVJk^Zfs~|JW}s=TdAH?-`~spXh2S7XJEi!#mn*(Qkts&zXu6;Lni7A?e;hPqMuKxo*$a^|N3!yx_>$Ga-2~6 zqi62VZa0V)XI=JI;)ZEQBH*1c>g&Vg&8hyU;qY9m7VfQ43TW4;M@xev=`EMllkv6P zg`J4jhd)2%OdXq+_Bto5P&$7!cVd0A`TOe>$x@YxmaSbSPc!%!Wbwz)V9gKAiS;{s zFU)bmq7$YFA7|=emBUM z{MIf%`8br`s^?WI@j2oZ{o+Jx20j^dl3b9N9S{=2o0Q7V&#gP}d;>iyR##v8(xFxF zrDU>yM|{Srxi& zb|haCUslBSl&2e*(V22`>yjJtm_(mf#{l|DZYu_(rseU=1ZnE`!O>H6FFH#!k4#Lx z$aM5cK*{&$6IELoKVEV>c$&qZw?=8}kW5$?Nv_RFyAo@M^fbLWX(v`j-49y%qOIt5 zGDeWUjz3DMmlJ>Ra&=dDYDZ8*rf1u&;1G? zp0hu64!4pP{QR17mdhITs@Rf8MRo;Bm}z%@O=Jd4mW{NJgUH91IFD{f^ErM_W_I(w zpA24f!Cjdq272d-m-!`qoxaC-)I@%1wsPV_6gr*&?K<7aoz#6|Qcb?1)e)sxoIPEs zFNS#m%c;l%x66a;F|){ZFndweRU(MXv^>tL7??$DC&#z3^6nbCfIH25y3%?0LD#j~ zF@8QT!ue^UXao!*CAOgIU#-1-ck9mF(AN>ME|KsL9D+ucG6GJrC5qJ_i=##>CLLZU z10c|h29L6Q`P_HDHEKqSiZ;lmc8~;qv)vITYUP4$I={u0&Yq9}ZbqG%-T0w3{WGzP z2q_MQ?oY4fJp!6cnAJUBvD<2V>vOMnSFP>>;l~0Ni_nP)u>r(=iFL242)Z7jr7S(Y zeJ881OL?CdS!r2nop((g8O49;)#V325b*JZAXvK=UZ!Cm{qh8NKnnJ29i-zsb+RssSu0>!=j zDirsv)w~7toI7Ho3H&;zFLuR^ixfC`tFirZDVKhyRvMNCB-=(EcV_o63^*Cv!;Z)YEOOv8GaskEyd5e-va z*)Pp7|6V8Pl*kx!c@xz++OMH~%gVJc3(?p8ay>ZS?2#aEtTNeBt^4aZXO)gI?@{I_ z0OG`ayUVm)kV+AKf~fi5qB*To>UbN6YruGXQQ4dEO&JS$uK;M}MS};maw~~b6e8@SbX?wP~>v zayRgqVz#JqjAv8F^3c}AR&`xSo_0c45ytGO=F<5f3b4$I0uA_Fs2&})FhzU2VQ4CH zj@mH1h^!cNhkBeDrX-?G1vO&8-~;{foIzgl3RP+62hK^vCHu7R)O|_q6ToRaZeltr zASPaXe|>htpU@av(}X@`c&LoO)!=yC8OJ-`MW52*C#!moZ5EXA?<-($&O8(I9x%B)G|&{pZTLtJQ#S?fdUnnJ(~9{h z?Ky7yr@WXTrsl0-v=HU5!lo^Q_u!4~WI=vS)5wbG+U`Q75q?olYqO#SQ~5DN;_xuP zX!z|R?hbbwK78t|ZPWRC_{{psYv#BF^44o?{pn1wVXXBS#1h1{_)zv;$i<2?UDoLU z&Xg)*8J=7LT2IMlGBllOE*M)hWZaq|j-GbVAp3M{e_Zw_7sk|l|MrsW+xTUNa`P~U zq#T-&Ui6H~baL6}PK;;c+c!wGsc5SJO3ttB#5Y}D`r+CelBwWD*I88ir|<<*{58G) zt+#z^g+Q_QTNS$-_Q);_sufcPLLTHb48-5Nr-F4E+5{|)UpXvEOFy(8*~#~!Y9rnh z#}36-MDEWU0>{@;q|?J2!hjb@saR`1{2>M6`mkgnq`4A+?lFDw5V+kuki6C4b(0>I zuGMhJFZaeMQY&IBqPYVMv7ljWwQZ16`_4y0#A4ocymYS2maYg@O}T9BC+oL!a<>SL zy(_jWqt_l~Jv5>FBl(CkjNARo45tX3i#-_lrLg1`LG9ALmaEBnMtOGyH2cxsurX}g zc!+Qj+7_@*EXQ6ys8eWq9>OMvZwI-)t1lM74|%_^kAJAvk};PI?m<&HlaMrJgJrkr z(mi+R&6P_(x(|kJ1SQ@VtZ+|+!5IubmAO~BPs^K(Dhp9ByLp(^?l&|X0n+|nkyCAH z)ic-h`9G2CV-946og+{0ZXvApbY?RA3b}9a@VhI7bfM=& zvrWjS+bmQxC{k4!(W&Duui~OX0Y_EOd`_mQW#~0rGwN)M3 zfd8NvoM0}#11c;yim$@Z{jXAxYFdSiT>hBjw{Z8s5-nucVE3=J$DX}!My~o~ofk5M z?HSwbUNHj$OX0g#@I}?-x11D7qd(G9g3C^rAWzVeROz@>D)Qo)N8eWk)ANLbj z=J&_az=J{`mjWEWU;jCmXPlCu(+1O87gire{sOyZm1Mn9;p2$cU5G}KOu1qb^l9g7FtDG)3Pwd?x&$(NNw$rQ2z5)vchVQqK>F8NMXh~y;q1CzQ zgC{>>{==a7^lfLSNjL%@sy&;qd$t9;hx-QhoiDoP#}Q^d^_g|zv;Q+kzO^&=%Q8m7 z?9-WTlAAts@uW3iJaKO;D(b`bO%oluJp>0{&UG1-Joc=)R5gf&{4l6imP#bIb!0le!GV2pzo6(9GW@Sr-EdjIqUOl z0)Iqz#2-`lqs}d-TPR09V_g33=uJLXKlzwxIsBw&doh=%)qUChLHSeDB0fLEMpzD> zTRJSpfLRpq%k3k*V$|DXX%TMT{Y{_@E{Zpb-F04WaHD(r0l(5hD_O|qcCTBf@0zDw z%O<6LKY9J?nW?HWq)UwwC`xM z#KwOOCXcDC4d|IO+yZ7);s#x6h!=;z_G>O2t9b#EK=?j ze;8zjR%90`_mUTXyo>E9oe*TF6F4LbFCKJB&ao!fE4y29?&#=;TTGi}@1Ezw`!U*1 zD8IaV3vaRfMsOjaq$@O7IuL#)Qm*qi0dEH25Le|WkoySW61S{}|mLUBlba*i( zGdbsWr1QuB`Jsi|)5N1KQPJYr6WO2Ae;2m@^9=F<@*o`12vNMl5K7(;eh-FGzh6<; zH@fM01-_(wuyXX@jucPv9QCAcRWe+8zk%xeenA_l_@-WFWMoLHVW)($)mtP!PEs=S zbM}`iCQMd__#`DpL{bqG6S5P7!xEsvBGF;%3~srhnFeS<1Ld$|V=I*DfUCR7<8cYs z>fY5#Th2&7%EFszGiuS2^8N;>rTw^a9N0EPIef-Cf*;TQ*qD&th6xqs1a6P4o8Qc& zjAtngkHgn-Xc<#BWs3yh_VAW_hA`KGX*;@R##KS?=a!J8I-Mxj;vBs>5&qdvbB#nM zG8RN}f>+)xi(Zqt*(CK$>U@o@2~h(XwYzI%37Oq-Xm5fhon~6Q4_@30os3!kP~0Nq zEvv6{hu+Y*RX(o&9$c|l(Uv&$;p8H)`V88w_G-n~&{m8*Pjsq~7h=W-f=z@{e%!FG zL6FZ26g{G!dhAsjl0OTFdc}Y_(K$0jO8@&hTU+Bc%#WDc|IjpR!-zk8TuM>Gn%4jD zE*@|SN5*}tNN`wycr7R4C*~;&j@}5lK)igNX_9DFl^0TYF=VF*4d$XB!dVGtA|zGG zij9u(vuzE{4YpS#M0io8uzIHUnmy@Dm*n%N%qBwnb7z-Xp7RqQ8J zSYYcXQmg`!#Y=m81V+#mxd-svUqR}nVI$XJ_&rT~(;DwMQ&sB+084|!RhZMKs)L=* zgH;0);77eUXN)R@t)BLx{(zG=XmDfVrRLlj|AC6U9GUYlvTjTh+2O!P0Rs#vV76FN{1Ubs1Hw_eb#l>RQP zpEN|1fXWZiucj=f+*Lm3D%x|xRnlbKAn7_ae?5HPykAU}%Yfd-l8o6xezishx(4Lb z%>F5{nYwgmDbH7G91SubUFCK4*iKKg^a!fAYFuX$xRzf3OX+2~KVnbKzvHCT=fNWF zq*pdF?n@i(wH2$S!E62f?duCA{nII>hGV}dUkPviy4dja5a%-Mv832?xD-=y-2Izy z32w^HLC3`Oj^#4VL^;jFdS?29H#5C97`IdC#Q$J{|MFKWr+tr=R;c-1l!Et=c{uVz zDE?5}tA;h~d#=V8=S`2wnhY!^u9BmiixiJWu6z0Vccg7ZS0d^>&_$IYmzBtuSn2eB z5=vf=clE#DIQC%$-ZpX*m65=XI}BU~g}DvrXq^N>~xV*Kw@s)bXYp4qPv^m z<02>jPcvkqw?GE?=YD|C$EpUYrupUK@NUko3>a*s?r!vZa=Se=XkyF);6?hl*!g5`2`B>tW_+|eih2|Lza~4ctG4Rw@MApN1|1=kOz*|xb{uQ z?lvIfWSQE^XA_|*0aCP$wJ~?_#3e!gbHW<`7kh6R6<5bh)76kTdk6YKN2elOGyEic*@)xLdH zOf$XMjtr?tNL%3mTK5KW0WEl7aWB&lZ?4vQ_KvPt#Y?EzCpln%}XT zWfhmQ+^QT8ADtcZN_-a3J9YfvVB8NPh3?B;BoFHM z6~&nrJUpm0o`zYx61CrBAJ>i$_{e)SG&Z;2^TQ}Bu1fi->rMrdr1&<(PGQg7m3KR> z8}CgEq&h{Ylwu}+lq6+L--$S;{^<()wVSn?x8If5WZJ?lr*nx{!eT|z=1Q|eN)bJ= z6%WXMtwYB4Drq5GPBS7duzi2&j61tMKi@dSpmuh*Ks14z@uqJkbq~Mr>LutonmWK4 z6wP4SKNCRVW?6I^`OQW~41EUmLeSN|IWqo*4;O`A<-R=l@>_LPs^NNdO?g}vtJ3bw zSpp(84HuFZo1>!>f`DWG25OcOaET|3NohDy3PKDufuC!=`5+m<{N%F`p0kd2I}5Kz z&?9;&oG#m+4#}?xyM4XQ^sRo~oOCVpenQCAyCtbSm+iKD`bKRh{e2EMS^V7{t-@PO0!Df(H055KwW&9Si?E6qE5i>SR<4d?GG$&bZyxGqsx<9goVxa8ndEo#aFdN-8KnV&B6ZP$ z`FDTV9DLplUFmvovzY8uyl8M0bM_HID=@2fZK`0`iJU5J3L`{fO}?}QY!7fFPyG`j zkNU6c`NWGyhjh5<#=A_omjHe>@iM3`n3tta%>ihgW@tU+hq?c|(R&8;1)b z^rSC*UaqAsZG^r@7k~qb>$M&DpbqFhyfwXJd7@ zW|A$(?eKE!!ly4>>Hp>YAyli{gd)``HHXnuH!rje>L)g?;jVO_HY}yQ7nf{)9Q;z+ zSxnVVzD@4Rrr(W~mWtSEQdNnkkVX;>4CTaMd5z@i*`T6`afKfEIyOv)jYvsqWv?o3 ze>8Vn^*Ha1w(90|b_Pv7lo-GZq~6IK$2ZMfH8w+ve+UQsBYg$7!p>rBDREl}4RRq^ zQFW&$sal%Of9z$($$C>j{wAg6E8%?Mkbb7ru~yRbA>RDej}Ubx>6da8p32v z*ANLGdTdf($#p&w8eE@f!HSX2bOkRgRZO*cz9yh&z%URQd8&LBJ}46ruCrJ|qUYYG ziO5SGd+9#ET|bu|EX&^brx|Q#afgu(vffzGimgCEUYb2?pHU>K?N0x$d4J;=zc!kv ze;qL&-zctv$D4fC5yM!^J%X#>Y3}kVX%tMI02et4hf06*>^*~M)n~kY=~|PPt^>bO ziL%lBSJudi;va{66;*ELt-R4xFay)YXr%AU>3Z;$HH*Spe6}htyE3L*b^y)3?}t^< zW@{qg&EfS z*8b9V;xA&hN%V@#Ol+$YCsAj@BI7@*R^3%V>6tnmSgq#~ zY(J`=@Q?oo9lzxwstuP=7HsZVk}$)#{ZxF(;D5)}AC=zn-LEt4d(4>yT8&-h>T>_0 zaOv5q_8Gc%+tXTx%@aTvk5m1Za(nDJZ@WQ`w;#K|);$;;#65$r&%;`gqN7`YPRE%0 zFOxf%TASFsIRt3+TsH3ygV~2(WmqT4`26v5fHw74ux~o$j|UVgw7cU!!6oiENNqsz z%2xZg7K%<)97)pujDBE8R2Kc_`hQ4KS2>_ONductw@y^~%759mL8XU2k)uwx%Y1K&cTjiAX;E3a5M;?^ zVO*ICsl8Bb0?W4QJsr7qx)fi_7Jm2w(2LOwm85rE5K8$wF0;fFs-Q#+3)}aRBTPIMz(DMQ3#{ z3Fz>9fL?oo&Gkv){}%s$k@Nrc$hlDie3Jg3d@Zo)H#e$z)_6^x+HAXHOL%MacpbE` zG_wA`Bbln${=_ZMxnXPiM9_SBeJG-zFt!xCyA7)JAv1AON5Yz|! zaxP>BVLPdnx{#)~!OMFZzo7(Qs0B{x>+ownFW(H|H`y4&5RE>?Tw3xuvuj&MTk>V+ zV^kHLSuG~0)W1()zA z+&Mj3xQ7h&>dBR%o(gVSOdTJ)n(|?cknd`(Hrn%s)lvD2Ax{?H@V#1W7dUs^S<_zG ztxP!Ry&4LSxF0l7ZegX481xY2_F`m3=NWWVT}HEEx$HS6NfC13M41oa2ihKfzmn=_ zWDtYvT`W)x>1tcgb;*44mb?Md@W)Skh}ltl>fsQ^M5o4P3%&=AN8)wGf|iMSj`$!e z4tapPT4ozQ1q$Udi_}5YzW&NIHvI01Wt5}Y;-UL&Y~zb6!GYc*kDnw-Z+~M~x$|fN zZW|t&r4Aw%-<5VUnuwR^Z5ODs`h5vT&^u=LdcD4a*8Wg+wu`u$8d__qQXCP<@hJYb z-=$4ci}-AztaF=J<-0%Lv6j%aN>knB>yb#vQE^d?G)qkMlU&ZPey14$MEBG0>}K+i ze|+!L4ZOG9$$fw97X$WJGA(4cL3-v2KcY@zpi{q>s1V}TR?{cs-)$^ zM8r4twDTMKPbr!RNS#7=xl?5NpKzvUzC;0Q5hWzWMptq&%t;7P+e(U-`K(cQ-P0dy zvF)L?mtUKuz;>G~cJ)P0S}x0Y#O{5AUg7nWPPXPvw5VkJO575tC_m5*UWqi{*`z1GZyd$Yg%x&PbO z(h~Gq{WpJ#Y6)KJW|osM#VY{AmLl3|YkqY9MBDz}4|2A!P|q^Mh_UzC{ND>icz{GH zBGh8r%AB-0Ha-#IaQW2}y=9bV<<$HHy3{8-V0pT-rNh8<>@n{RVp;lSd(FF25@KSB zZosKYP83~F`zSu|J_X3D*zfM7TU+YT1GZTmoL~zmZ-Br@pe?>M1`k znm*1yAsK*dXyJ_gI9-hlSF(y?6X9X%+#INTOk7Ro9O!-P&!Yw|;g8pjtRAXWA||(8 z-4QafG1eCe$NaV756153?BKE+c8aNTy?2jeT!^i>u&Ll9Y;?!rJ~mlEfs?@|xu! zD>zwHXmG1sDt7?qm8g-}u<%V)5}qktmz<+t*acb)ar^}!esocS-)r@UUGnP+{%LG` zGKw#e9m=kuweM!lU!xJpH21DGm7iy?mN_>_IlzgU{_~Hy&brU%yx|fF$JQlT(Fzdn zQXq;lxTJ=Id-?HVk083}pwr`37qpJA2kWm=+))!B-!C8MX-4#(KR2dki2|V}z66+~ z0H0ki6=u%0)vhU~p-I%(pQtI`0=~vR<#k1amT8ACYE=9z~&Av6n7t0Syj!Q z9bLg7b7vrll%s>o-HnTam+S9GDGmz$e;zm~xH#{gL_}C6JzS*KTufZdfuz!EycE2D zQ%I}vQSkknLR;C?#vF84l&n2aAs-h7@N-w$Kd;;reBA%TD-Q)9&%YTzfE__<<}P}y zA0(t$)y+Lz{>kzFpPTqUH(3J;018EOGi#IgjvjhIRyGPAb`A<&ehvc)R&k&WK)aO{;9EXMfB)cV zs2)BIGack~hqU)-+bYrWh7-f@F?w5y5cWj4|Gk|@YD8fRy#fStCbdU?{u{z`uk%i# zeT4)DDpl^UxD)tvRjM^Dt_k^%z(JqZC`0Vue`6K@rqAZ^Yq0crdBiq*X60m+`XBMh zkw0M7&D)1F0ZhW2MJedQ4YnU&2OzTFPq=(oNeX=@Ey+qM9je7gMcK)*W=awtg`N0< zUFmni?`IZS%NJa%o_Td?eRLmAzc4;2mYh`6gC%a7zX-9-1A&AWdN$hB+cbpOSllu+ z-#n@u>OAuao8{I)oE#_MYl*q(HZV`n$4t z^w$II_BMnt!&x=Mkv>HhoBipI$rXCApfqKZ4_-8{f^qC=#Mhs)5{#}Ax`J{MO9Vqw z{KMS_2zK&!PX^TUub!LO9*IBnky)=#cFBwtkaO7Y!FnUoUftUGMasPE9Tl~L^*#z$ z>AgR1h|a5J8ZHk|(g$`WIsY@H$E*GYzp%BZ-DW#d#ki!rd0byZrWP&AB^qr6e$7vA zTF%OO+Z_asKONh#Q}85+?bl=yFnaS%PoJ!-)}lyWt~Uayxn$@-Q_BOJk?X+CM9CNP z26w%Q*IPXJZsOQ!C;d*487yJ&)CKIG@2C0`%a3;Kol7jAG%fNGc;^}2_a}_9=(o@4 za@lPdr>IhIaQI)Z<%NfH?+EBWk;SXIs(PX*U-WDZoi-N4?H~W~NPYc-(pDV*2Mn__ z^#>QaBxljk6&7@hvqCMAC^{)VPkKL^(!6ZWqG`v{^xlrL8%eAFRO@C0;fD}TeVCM){`)C3(|L@bC^}V%= z^9OUVxTF0?M~6G2$j2%R&=2rO$GhoFVPRtDY|i?>pW$3wY@9rIl;OY6@$Iyy9ynu{ zf&MNuH1yE26+?8@2Yyj=vNB(3o()U9!+Es9^XMDidG@ET5nQ;@U~5_W=M=CrjL4;878@<&b2ZSa00Ls@R;TrX|TuUYJfkeGT{ASV`zEPU=S~gP{<}*W47? zGYMGe=rLX11(TA}Egi#+&(gzqE(>&sxhThU><9}A_b*7sj5Z1DvxsfzYK_o)L!a-t z#7)m6yu&Igz{@C)IG_AV8t!Hq0&)Pn53?j9P&rRO@24*#3HW=K5IUg+u312AMCN1l-aD?Y3p2bKo^;`Rjb5U8do`VCz3bYnX5N_&L4%uU5pGIABD*E%V1$VkyNFY?1gsFs+T#eHI6=l1piipgSHS$mOe(g84c^Mm0qCSPYs#W4b4z}T!)L(gJ*EzG*(Z#VCt-h7^bYOZ(rQ^bUD z(7Tqi;jUIX=IU!UbwI>U(dWi%#l*R~u3%n05I?Plbkx;JH`eXBxP^kM1C)BvX9Lbbj;rs6KsE%6c(dx^te8XloUBWwpMo)moZ&&5Cz` zK6!|`bZxc1GKF(eDaVo32^J*64>*sELWomv1@49!W_@W{R{_zTpFfS!dOrV9b@Q(C z@7=3@Aj>j*n3Xl3uQ0v0TirI~n&5s$Ej|~HfiXRoOB_4od=hkrg0p~QnrZi|OUJ!c zlC9MwHXkZ}xgJ@R?gsgK@|6^-5rf8Rv;N`vC zYo=(o<)s7TGo0HM->tV=EUo$qW3!5rxd?v?pG<5wOL|Pi5q+9UOw#fC!E)2}^94BGV;1Nn6<;owjT0xIb6z#X#h-Lv6~(aq68ly;sx3ju!=;92sYxjO5PKm7a~ z4v%+q|2VU;Sq@7X$=$<`TUqHguV~82QCp_l{plWbaw0G4E%lrKE%R9tn`}aW44&`? zrO@MgMtD8hD;Q(639MtnllT2GLEG^6#n-mjGZ7-mWkOLQ>D^g0f(I6+7UhT85hN~F z=PAgZGt%?$mS`^;;_kPybmMQKs#h9BjL`VoxBmc1E1?>CZ0Mp;5;{%R0vx$VbaxKV z2ps~kb40m)hV!%xMFo}~CMnP+z~#Z-Q&^M8>j3pM>I0 zCFz7f%K^hnhoONQ`_r!{{mq_xgA0@?^Xnfo_dfO7B0!#BZ_VsIoo`q%eMKAFCRzH& zmXGV6uYCP_IchX^sMUA!Q_(vY=h@}e0k`zz@BGFIQ@QfjA?f=cRm4?Z!Q_O^sy_P? zruIGGG`S*YbU#q+`6=`*WL-mpUR@|IpJpA&u)Z&w@yTHbb8-hh|aZjJ{!BOyX*0_%>8(u&(D9{<66eit1Hpi1MEg_2P4 z_9H5&AW5pJzb6U?9vd68E&Fk`G0`=oC+HpyKAIV?-x_+AjY64lPx=5ZP3jC^36dBr z&A^l*Q?w0Bl=HsqX{KtIx8kG4#r!sSZ%>Jq`HdBK2)id*TUxBu&5u(PchO72qx#rI zL+$H6Cek2gjuMNiS)~ZrIQ*yCt6s4`{Tp02WHLYhBcn> z+{5}hM$;*j-Qns%c^tOewVLZ^B&V(0d_TURE5wjTkWl{X+(`S|^HWb72r|66^O<Lak`@#OM+lhGDJ0`;ov|E#8X3{@p0^DKe^rcEES??iQ zDOvl8sgU>SlSiCPtbBZu5Rc9VXgZ;2p+ZJj`XKXpH*2*-BF_-^$%B*9l)qO^%8Djf#)c zDz%nL>+s3hmbCIXEXvB~(2&Oa8uOX5d2O~I0e$+)PKx!tdE;qV`f26gMt;%_%)#5}E?;&px6PIY ze)sl{#@`x=Hhd<7%*q-X%z&C2$vtfERc5B6XMb^Wu#-}b#KrT-hN(YoEyP$Yq8(B@ z!*AulctEZ~T-Hf0m4CEa9nkSMViSN98BPbaSw1<&5>|Y;u3n>+T!x$;UB;os5%vK} ziGsV}wGs&bgKALpD3y7GLq&1c9YfgJ)zJLl0qL#?FKZ&(S&?sIof@$`+S<8IJ#&>+ z>TeF>t(_E<@buVXfl`^iAqmSHzCTQrMK@DWzm@kfju(V5A5=T0ahXNN;UsxWUMCfg z7w$>gJfE#}NR~NHEKLa=u#juuBlYHG-=h6ne?d3U)v80FVaVIvX#sZ_%-q&Vs-rnb zr2V9(YOAi^{%Y3e{$%Z*(B+ZPNYY3*caOndSbBk`x;;+VSQhC6mYAVs!dPQD>{beq zBQdDG@2<5w%k%5nA=;{@u5q;^eh!8{6jaB5uueGKB zk)IPu0CpR@OuK7(Wyv86dmB+sDeSyA%hcD8vOJq>(JHIQuPo-G%V!h5*^e@r7N~r9 zHc^^#01ZmF=_%w;j}`10GQ`_z=x%(`O7$4c2cbqq@mWXiQ5&#j0j2CXq{g4HI!6Ab zjj~v3nB_)3@#iw4Bd*NrLGPObDGH+Iu1w?J?4Bd`r1fa({?Y=XYRZD?5st$&~Y z+l%kg#8pG9ineH{Jvl=R)Ewc&q&05aBs&|GKh*FKMS6zbgy@nnw1uRL5W)m-KTB?5 zJtO@NjFXc&{b~pAkJ@_}DYYBEL8EhjgPYyU1iVm665Sr;#}NwW?(Q6(OfN6vFE93m zbvYl=?43P%()p2gebM_@-&SvXq}j@fg$)fN3QLL5W_z0{2#O0W$xd)+UcsD59&*IK z8)TWK0P(z3)}JBc#oUBm=?h~X?|Qmhj`|J$TWGxx0AAk3G=niog6}Fhk z7DdqztGy%_KA7twV4bJ-52XFGL#+pPm>0P^plkHL@eN&fwmibq(IHh{qr~d?Vwfe( zCasFOm2)T3-Wyf8grPG zfJyZ3`?tVIPL_WJZ?iR|{COq!*R9sWzuz`_boe3v=0yvYqd~3Y5d$HEgn9l-qniSc zzn)k_1RrHd1t`#RBKLSN{6@JEXf+bL&`48OL57o&y>2f$|2D9I z7r6>(FZQADD2lRjs(P1;9v7|DGa~RQIRR~ZKFybA4 z0n+`W2Y&A;{$Jfx1hbm5vg&fGGJn#yWU{fgP~iWqG+iwDT@Iy0vUrY)dPH?M)-wtF zmp~X&byd@YJ&n5*pNM3fWS?6z>omXufVy8l2>FYtOw2*yM-No=-qR+m;o|6C+x{~) zHQx~_anzAL@GF?41pG)s?n<~9W2~=CTj?VBl9KWqGSN;a+39G80yDY}`CV~lJM>LJ zwi>;S7Qf3P2=G^WHSp(>zqu)&8t# zR%Lq5p!fnbNSElMYvu3IAwaX1(`n!i93Vo@r;POz%k&_Y94P$$ps0RB)+iNOe( z0^wdHgv7S6DCvGkEufKofto`)cB|ysU=7nxRTX|jUF*j;Jw{(AuJ~%lyAxa_TCg(f zo!EHX1^biFiAN%<<3Y2sb>nXNM?bCl$^yBYQt4)p@ygrPqLUOe;`&b`Sr8ujqWM;`I><*NldLcQ@op|cmO{dpDlm?8gMSe8!0cqfIQ;R&oxhARWDHfJxlP_TSG&Gy?Z`_UtT1Q4 zO1Gn&?l$D#`DLAcVTp#0j!7nRxjfK9`{qqb6BycU{WzrB*X*re`t?ePJt)tcTLAp0 zm*shAB+c8P#%AN&@UK@6{qw%=t*B|Eot9c*i=*$ief;hp`woQRw8|tRhcMJ~XOrj6 zzS4v9ZZ(h|$n zRVK_&4dIqvfjoYK()&rb`>Q669U0eDdye3^!$X)!TZbaGD8Y~S7#DQu`g)hyony|W z1NjQVX;H@ei;!W#k3B14#PKw~((Np3y)Bi?8GR9s;@$i#4{8&>(X4a>JBxatFM{Ok zqv4gE5q*_4O4Zeh-m6L9@-vjGYkc;9qa(eG!ZD6)Y~@d5IN~&|o=j3&9LzlhJzu8v zxkSnaJh#o$N{Np@-AHw$Wj<%;%DR;wm=v*`ojKjeyY>Fjma|gM)GvfuUAWnMId{Wz zd3K>V{3FgHbRVG&S(VUIMMlXnGSzB>kKCpF+Z#Wf@I>-!fw>^v4ixnayiu0 z=6`CR9X&bpClEZq4o$t82v!S>AZdi|1k@`_9ES^eUFzjOm{eMcXo@kCq4Hm?yLTv_ z!M(-=7C5vyH2SnOtXep4{4|o})~?4TPFk#nL;(7G=@#pre|@FlPik>RM z_1k`9E+cE?TF`OFF#UK9GnoBkT4LOy0Nt~o_k|UYUJghkhmue^S^0yt9F>` zn)}fima)8QC+y9)c(%9Z%f181Y5n2Xrzy8rkUsa3mTR-a{N?6E9_y)Z!D=EI1pKy} z16v5qE+imP?#6@MI+Kf(sQoL2j&jSZq#XDx9+ zRPSC@7{5ehrBFz>f$}gE4T#s?lQiS{9|^K4MC8lG=J4lqyesz*#*WZxrG4#YVT2@088 zQ_I_#AbiuanB7^lGZnP1n0T(jT{pK`y|o@budKjR_qtG4I4LYTZz<>NA)H4cU8%rz zbbFl`7Y-LNPa(Y};SV8!kAY;m%qFv?R&@08C#GJf$Xicwtt46Y?9MQRg-{8o5s(@{ zH-?w@_mKe@!4LBWo8}5s(6BKysCU+gc^%cx!{_`1Bf-;(F|&eBOXr`&Zm8csY->v6 z=_kza^ny2Ej96e29vfN}cn7*Q8!GwTZ@!_1e))QNx`!=f_HKRO{j!O-YCchAPa%WD zVzugd^a!1|@Y#`LOM1ilRw3f;t;zMtN0kwYfu(rqwwY3CpTdGxYv^_hsle|6nm?MoxCwf5*$4YzcA; z-Zi(42+JoQkg#zPuJKtZ{X!_9AIXxbL9C-w{0&``%cF<(W2!ULm(orW0z!A`?RS1Z zQw?%kPj>f$Q~5miybDD?+u#YW(y!Pj6RQQ09f69-Sb!~N@~z#oB|6axPwX{mZamJr z%8&3_3&ne)3@l(Yrg{=|!Rj$^zO<-!Z@WuMrIk7xcGM3WOqOXuMMY6GVs;7eCFJ7} zcnyDkMqhBPxvJ}SF%&Pd%x98L*DS-V;{cbAWnnWKPXZYd0{G(X%@+nDlEC8&?Wc04 zC%fVB(1G+gTpS#7{`Y7W;p7=JnPNmNAX|B0CU%uey&PY@w6Wl%vd4Lah?kpVge zk#h_e7^CW+;ActV$LH~#=C7@ZhSW>x3g>B6_%EH;8n!Z8JRsBk1c!2>F*~Ctqud{e zOT09)sGydw)nSopJkfFzBapD@1J|$vvFaw1(gr%4k`GY|qx8_C4MwSEz7&vpM8+S` zH$`jbUcYN*vfFnWhy|wa`=dpWcishaRSAAPHUwCJ?l}0=loy-Ur=2`qYEEqkn??CF zIR`}NB<1Q(-Cu3C0WLCVr+=Q4Bo^`t!C7IHi`TU?c=d+vP2_KaZ06`;Pch!k871k7Nx4ub*qq%L<&r}yvF%|QPq!;K9eHT9r2?*NO(dr?347k>WyMTRmo>LaQ=N+_#AanY?JF4&2irz)*|R+n)= zrTG?8;T1we7GM~iGDqTfOSODk#!OR49-9Ow;$i!g^-#Chn7#=7IwMZY|q zpVjsN=a;_d#j_FKgp@MMnrz}sg-q#y$5>Pyi!_c$_x_~5I|h~@$b*)*!)FuV{a%L` z->hxNQGB+iBo$5vG3Hq-!I?=C$6XBSv<)<9vO=M$THcHVn^5GG0vJBSoL$AqSZ@n9 ztVk1j3f4d}R|PV%POp>`(i9tsW51Ws0T7Xd zCuv*yP-Hnsqji?>tNR)~s){i$wp<2BSfKx{<6P5gVqz)>Yl(R~JK!`uBfoDma`=so zk5Bi;$l=mbR$Jf-7_yqkE~}}@fI*bQV;kQQLdMVNJ||R4)|NE|M4=Dg5^odlcmZ{u zrrRUAG|}AbRt%Ls5v=mKY?Z8p3A(M1R7#f_3PVp`Jli3}!a))*?BNm(&%)aZB`Z71 zV3#qm**9BdO@q11OiayWE%qnJJ6lw~(+4-<@cgj)bRq)o!9%OWwiByb1;q^^S2*YQ zb!(tYQ@5fyq)-%x=%L5Av^mR%U*`7{f>)dfh0#vL9@1`b=pR3Vy?q>n+><~L9qqN) zbvc>C8ExB>XNVsvRxl2pAWW#ira^g(ajZxlx>L2ysC#|c!7s9Aqwq~NHq(DF5Wwgi ztM%zeEKJB8vMcw9D7Tl+hB$-1N+oytkTuR-#{6qseyQAp3T3?!8L7Tn+QTnnWXyX! zlYt$L_$Uw#PI1jP&Aoexm{~mS<^{_iAzT7{5mxggQZ_6yBX9eKo-aM~xq@^53Ex{4P1dp`?S;;#J&iEY*(pn$F@Xbm)79EIvt zL-)5U8Cdl4boJ=C?X**)K6vfwOBxy;bjK=4?fts{RUdFgB4LxlqeJeSy1Sk@Q^mlb z9MO{|no->Ovw&wPg=1ypXHb;ML(hyW)Y0)W@gAvu%k5Pm9loN$>D(t1Kj9}ZTrxbo zQBE2P`d@T3Ii4S7&Vqs{$Q=_BP&cXB;`wAgyQEVsySo!67g`{Y&qa#?ar0d5Nuyee zJ=ZGqTx{y7@wA;($ZJ#`mk29giEjPEKNCxZqZ`re+4U_D{d%3rtMaxGkZ2Y9^Krd1L? z$bTbWP)N3z$zRP5y)Jhx+RerxFMk>C<*KSUR+yKh{`xZ#G-f#Ntu7HfU7Wi7)wfmS zvTY7NGa0?Kj5a0_DXQ|qR-DR*k;H?5-`#DD^ZSE0Y@L(QHXABq-$R?$GIz#ZLdZOA zuOpWr+9twhOPY5RznYwiqrPW1G*wDvWwFU|yhLV68mU+ck%&x<7*)m&&0-^jO*(g( z6Nswr`IvH$2FeJQgjis9e{~wEw5n%xrRnR;!hwAa3GD-;J~Fb_Q6|9UIA2<%SM{M_ z506x6nfip{Az2!3pAB?S+)1f79wm~kJFIAXQXE;93R01{uqw-RS|P$N<3Dn)#mO@OB0fA-MJc_)qMgb1He34oGgtiv7tYjo z=SqT^T~Z#G4;k;uj2+K%Gs1giCel$?5zDr#4mamF-%I-+KJaS$eDmO8W8jx_Y&iP! zU9#~?X$g-{k+sDJ`KKZxrKs82CSlUK?Tu=OA-bWK-e6r(UN`vf`7BK$F9f4lph(hS z`imfRUjyV@aXO#_9b=9}px0k4wvPP(4Mq`cC?8BFT-JZvxX?quDH@5I*V=?}y|EvC zx|7xUa&W{Jhm2e?D}RbkEq2`+Tlt3puTFcVZn8vVG`eC|Cw&0z&~hAteLq~wUq&{q zvU7jHNBYeT9geVApADgcE3t-r_rb0_?0vadkdV%ZkF9`&ve!iRVT`(J?t1t0dj+7u z=gL8-L3Mn{o4pM-7@#K%mwUEv^Ubpdu1BL4N`mtzh-))Wi*rVdIgZK`e;?9UQPab8 zhWcevR|wg5!caTqazoS=ZgWKot8`$CLA_{&?_DBm-_FjA56hcAcVk*)?8LaA2wOPn zd{3R6&RrOnmOMiZsAqNdRty(u$SrqBc1AKy{2A#k4okC@)YMI`b^B5B^XGYc@Hadb zRoxnzm0}KPp0qiE7*@?@M2l}izxTBe z^aO32aEhAk7aiL#L7Is&tstYl{a?FtyR#$$S62;J9xmt@`$5kRv=90^J$b!hmPfpv zwO-hbE5yrt$pNyuCml}{MyVZ{JqS0WPbp@rHiW*a))n0|{yzM8$OU z_L!PUDUWXSMhz9G-b&0AwUdNr>vBRLd_n7|#XT}VZqGM) zawJ<;xFWg<9Ao}+i24LOm#V+oVkdHxcLOIADXdtUG>Tgqq)Ch)LW6^IKUzT1$ z{O_M+B<(Nu_`;gjjac9MtQzfI7x#@rvN4&j!0JDh6Xg*UqVD9rn2ttTysTP|qROIK zo~^T%XfQw$pKr{Wh~!Bq)y}P?DgVKu=bpGfiniiwYlSbY+R;@hLz0S_ryPlAS# z8Fami?b#rZ)%pQC_9&nW_~KlYXdaf{@O=0imE~Iv?x4OURbXnZ)&mxE-4;cbto-Hi zs*v=W+#3m15B(0jhX9pxedw^*1arFD$P_wE7xf6wyRJK=#TOPhkDw=mya9KL;v2Bd zBI7&DJ-RvK8sX-Zfo9qF6_fRsJJ!qn4=*h^{14X&U^P9FEF6)%=74|4K7kwX3IVJ! zAaW@7fCGw|?j5hA?dLWtL-E>v86UH-eW;-F&G|Lowc`jM!c3?F>zW8VD>e3~AzhY~7YY>qyU*OsK z(I`;lz7ndG^m<0{VL=QEx-PLhBs1-A_?mB3McE+=%8r%3kL!+^K?&7s8e$id;$oq~@1$aVw%J6<-fHp9eCHu#g|p8vFIRTH z5BsI@XB}Q;ddpcM749tyTHdYI=h(dsI!Qw*yk!#|0r2%)9_#n{li#$|2VKY*sHykN zE3(7`Rf%|&D$8ZfIY0gB(cujrSbvrOAp`m0Yf|))%!n4e$Z`tgCBr&T+c$4x!dWF* zJQtqa$Ynp&IqRfdV1!68JdccvGh#|v02Db8)e=GGJFZxfhKiQclU5FHSl=Lelb=0L>z~|eU7*I|n-5`l z`X<2Qc$7QJ(X7ZV?+14F=I|!tWwtJ^Z}O`Xk&w>}A9~+FiC7eRD3kHx2KUBCeYmbW zsVvr;Op~9iXsj*m-MeQjQWZ)@D&T(J#om9?O9^cU945PE$+IM$&RLhKH+YbzrGK3% z8RggJE3zepX*v7wnvx3hC~M&mU$svq5AlvKs1ot?>eZ`KCOAU`Xuo&PDXj*Q)ACwH z^_2d8_g9707Y>lD?rXSMMjSPA*&RZcX(N=m-5e)MQZ&Rf@Qt3GIr-K@j!rR%+^h$4 zK`JOe{7~>tMr|P=IY5}oge$D0JPSXC;=~AIIinM$aGJ;t+ zQ$g5JF~_skswgV#qG!k934fLc5~z+z!z=5aUD`)z73yr2q*!1Ht5B*YEvmWB$t$Xr z74$b0I=xnk)62#*8Ud-KxCNxRs{OfNzq8p0EGyK!SCDSpQhA&WS_k)0Ky@3;hYc(? zYh@e5Ue{-5Kd4`O=UHl_EA>GTH)ck<->f|(7N7ntXI28Xa&Lb?vue=%!Td;M?^ZV+ z5@Sf55n4rN-AcQCh{w`nH5rrSIx^04QJ7Em^fAMP0@;BeL?@{v=gT*S7RXU+C~F>< zZHKmDv1X1Ce@Job!iQI|a%|DbCRaggP%(ODbkAlj^(lmiamk1Ad_WU%N_mfLk%)`UY#l@wqrOh3opBadm zBu8Ii&pK&$EqvDeBYf0faX5dKO?tH}F|$-U`3#R=FfC-HBwpITflP77ezF0CNUt+z z(i)LSPhwX7eqDWgux8Y~A;BKJ&XCjF`M$-taBJuQ+G00TVQ=~3PGXU&KrFDDs0?{( zq!l%#m{1*i72HkC*QvOQ=fv5&D;m0bXyB!;^H)Eo> zutPt~25BgDP+2xO)GVedNp97hX?QA6T6Bs^N0`!rRmQ2g*UuZ9a^=Zu?UEd9;U!6P zbx!@gNgRfIBg3``GKgnBmyLu%)HljEvXEVE(0j@C^9$-YZu~GD*v$5}U%x{HMv5R0 zq`@FNkCoR7YZEy!J6UKSnop`Ld=#MZuoJJ38d??kY!{2njJF{2CQ8g80K*Lv%?161 z%f=*Jm}}I&{c3l))5A-sP`U-xoZb0?h4~v>dC_SBWu-&W(+j6{PJ>|nrKMb^F=Gf| z)sMgQWsYK5)${Tb(nw>lixs+9ig{gVWCU2L^OsM~qgVn?CLVQA^H5s$iQ6>{=^uLn zC&`E~`#u(y;W{uL4XYgoL6T&T*R`Ae$j29k-KXJ|arRQ}e1ccW!1kOH#0l*+V+QPM zkF)Y4ew{4Y%Rp$e6Zim)Ey~!N#rNW{b9@|gB0Z^ngY5Fc+!qDeZGt3aOXb3@!GJtj z_(Lximh*z4o7CK_fa~W)<2h3VAuE*T)NTgH)DnNB~d@2a2aa#w& zz5;sO+h$|*zhK#AmX?^EFU5Rz{X|F~3K?P??BHxq{(+-J#nMSX&rF{jTM@5L?y}sL zc48(CciC7-l{No~r6WYThneQI!pr^q1~a*E3G>ZO4)a(W$p4`r1x zkWjXfSLk=EXO=}NIZe|3vkYQ>2xV?x9$h?*i2){Z(HEr-({~8Pw-XvihrZ{FPVjh4 z-5Ld8Ed;VzXvV}OXLGb_hCZnTtbyo5mZ=#SlIqBw`r_~Wl4bXJiT4%>hFDu~d~*Ul z33%*&yH~tJB!s&=(RXy>HkT#l^$8iMQ>xEJ`LC@)E;KLJ6+|I;$qLMBtr zTAAU^`B!{ZV4cFwKI!Cey*M0W@_kJ#Ouu^ycN9Jx6WbY1fVa9qw!M12`$@!SXZq~; zAn4gKCfMbt<9Kh|#>vZwwCyy3DSo$Y;a}EBj|ASQ{H`uPE8WX|vnvfg)E%wMI>hF; zB%$czin06(E>tqlK11&%;@$PyCjoK4Z!1Tm*;KcxvOVs9WYI&gPpGZ$1BL|-4gaYA z5>=lQn}cTWKP@-3#`7W-X-sOw;vJ{lFb`CunB(b-6R@{$*Si5NLk!Gyvehl@p|*V6 zt#Q;G>j~-7pySV*PbR1S^R?t071Il6X;e@60$^h-Rgv;7luFrj7y7V+zz6Yx1sY;L z21mKQJ^ySUJdes#H?Tt4wgl?>1dg8c)6tw)+Y=jGuFaQ&%61Ls%4%H8Yc?iIBtIe0 z#igcOj>Hh(vl}o7=IU=7)8@z)+0GwIn|g^$^DCS)BR5Y(>*cV5ba6Q9XO`xp?iT9q zRpTTbyrxNDK(2swl2B~&j9rR5q%PGi+%}B>&rNo_-JOLPDIC!>tZfo3t!!Lew;0(@ z)HNbPZvv)INT-|zpT6{$5_mzl!)GOdXeH-+;nf1Kg^PGcrRRKFp|r7QgTUS+PySX# z6J@0RrP-^RzMv$Ue4mt#dy#$yvY17md&sXaHT zX3SWU)y|}7NAttK1TIS-U=l{~oW|ly`->Q>u+3GG8~Z%ZJWnp7zV&QPQPC56e4>-% zW0wWBJuQ(8lo#F}tC7Kf*f!zIgBh^o8BS$IRA+4`| zyuo|dQH~*(jyLy6#~THRj+!;)v(Y=2rZmk__Yz*|*a6qRR8G4YdEQ1+0;?LjK~ECy z)@cBjos>VX2vSl?=SecstrzJ%<_9d-;k{hmyj;}*EoMo=Z$4+B<;krm|7U;p$^wh! zPN$6FS#!1`39jFK?)x?1fg0&()_oF%B%TIU6i}G)DDss~8A<7vtB_r8nUm6{<|xB~ zvtI>R(K-|-MHsqdqh`Es9vXD80Sjd$2+L9)1CrY17=_ceeXr=MNVu6anNM5FMH^zy zetE6zNqSOSc3s8yBjs+&rsKa}PM?)pNZhz^0`*?vGB@3t*htLIP_dsZ>=<}N5)lO) zj_n&~A&O`C6M$P9<*r`CRDH2;7y_uFc*EMx_xcP=XVON)8}S69ov)r2R^W0*Fg_dfc# zbe4{zahl9K=M%fgap(z2zV@)=c?&qE^^!!NTNSIg0c}4ip~|TLzu05AZxTvbP^ZH#fb7iEbw+Lw zwDaclUg^}op}tXmjq-FEpCYZE(1`&s)Vja!8|+pFNUekB!$it@l> zD9-~NFWT?xJ}%}2@RO72S<5?=n4_XTb~@OuRbbhRsCj}tn4Nk1*dOX`ZoW0bRRZD{=jpY>+!np@8Zvyi@Yo-{GG3+QnVZG+BIz+dFHa_imv(eoN3!VI zmqb?0$es;21|9RtHZx}>Y)rr+$kl5+GURj&;Ju*D_d&5yum16C2V-45&NJPHhw?#vhw(>^r~-^EVq zFwggz?bmlV?o#{hq0vNMzsb8tJcm=0shC4Ei@Z96E7D6ccwo*bDPZY^^XKCb)^<$V zt?h9w;sG?)P~DqS+RM3;aM4f%-R0TCJgF<%j=0BnQKL#JMXvARZnPK7Qy*<)bfC;99F!m#*ttntjbz`*(&3;>$M2oLS zU;5rth7HjB^)L<(gI7GB3ksI)$&RkAu^ij?=I;f-KP`*zjBg%m7^9L>Qh4@-i%MS= ziVJ2#Mr;TCEpv4mqPyiY7Za<<00aZnnNm6`v zjS5{{Tr_hTotW$F%&sSA@q1z1L1Sm#;ptIwB|lFG=daEycBvxUsGu)sS7Sz|mG@HK zSSw*IO_|D_xo{xhSEY#RcHT1;^_YpDFG;~>!nv7IFHH$~<|BRZFOeo3@5}8_rt#w2 zb|byReGZv-aDllSWXN2Kb;FqTPbE`^u9InSismlEgNwCy_Wa>B=j7_E+CAiY3qSIJ z?Yg(dLl02=4{f}2U0ma;l4L;QxtVd(87aJVdEGN%M9SDcH!pe>(D5|}L3~-Y)%UM( z;n)(*Au;zih$^?!$+Iubw$VSENQ*1g&^J53CzEpFT&F0>TJDev=;NfVZWR0X4fs32Eh(HQaU20PFLNr_zG_jr?j$Ckijyl|f2FtzS0-YbM$~g?fAy$UWvKi0JR^b8&F-ni zql4Y}ydtlD@PHUOI455~N6pD|nNP_cl|Q1&^TBCuzKsx^D#8YD?>fE6hw=h4bYmro&3y!bika3vr5eO;KEkhq4 ztT-?QpaBNrxdrLGRKa~IZA&@?$cQlhzVFBUZeCPd5isr?4 zEf%B2cZ^U;Op?DHpUGSD+R}NjVZ}t)S0DH;eB(+_lmSgFuF;yl5W2D01!G@0!sXR+ zl=>>63|vkf8_v-ZB?}6pF*a9ET2n3~R9(_jT4vM)^Kcyo)0mEkf7(OmBN)P`9bu^P z;`|sl&)8OGeC!#U(7ku6kt$Uac}anc4iC%?X_*Phrm78)-l=PZm{%URKh+Iq*&7hQ zSN0h1eAC_Scw!>MPkZ?KGK}w>|J$e9sIo4r?g4>Tn!lz?2G9yX4xp<``+|+ItBdcE z@6;Jy=8x6gXvTxaR61YyUSI|00WovE-0(I&aT*$;$;a!Q3{ zU_6VAL-(mKSI;TslJo7&_CZ7tFnPs5f%S4x#t)m~)N4)-uL;)h=mK+g+N?H&#cJ9W z2Fc+VW@M>^scpuU%dfOQK0F&}L&DF}x+#O|lx+D7o{e9)g?t=|hDn0& z@%kDy)K}+c70aPYk}2w7ym8M8m@$q9IOfP;Ukh+Hp>spD>e;IotviKlSE7ssMADM5 zs;%NK4JNDMt~Z8wiHqdJ-ZX@mNVfww3ZZ!w14EQj&hms0VbEamwYlvt=La$lE2q?x zd{yctMv9 zos%POM3ljm%0PB-l;`prdv1(;xxC)p?Hlw|cd}n%u6oz6^w_eyMc1_q(X6|4?q$$8 z;@!Eee4|h~O&4rNHI9$61XWr^HutCB87S8*{%MCg2-8b5x{W*>INlzs0}V6rJeXc= zs9ycr*rZrkE-$n|%O~idX(1I8zx7pj_?j&=MP95H_ubiQo^?iN$b#N~m zIf|kyEJp))CFjUe9_Y8AQw@(6b{ARi?1@l>Z-m!xL9%KekNy=Iko4mACe^Gop`8YA zuR-CHh@0UD55+2sZh&GeDZV zPnB^@@Co3wAO7f(($+#=qwB z9_L9^r|<{RK1IqwCX5gBqbcocgwirJVI?7VaknscJX$1&lOrdcrpo?_LpbJhy_A%b zkK}&y7DFV+{t4^M$UB>nraaJ(DNqqT>n)wWj5o z?auw!Zm?J&;w$?KNwMzmBC8b%YU%!IG2c*bbL-_vV9YtJ(XIU>!8IigU#>363jl*W zk+kWkW4D%5=U-~_On)C^w0ibvmXTnq2cm6skq{R2F<=_3bH#0UCsh`>%XY)|QRttp z;8nxMmt6~8H{GuQ!Q404v~HPRusE_yb2Ei@J@jpTL5#c0ew=VJ=P8aL_cN*7cd_02 z=eGtalFf%T7aZj|?Xzd#Qnfj~3xheY=c@rIB%n6FS;E=gF8ARN@$iz|?0Q0`iaI!$ zUc;@BayM?=6qZmxmzvPo0b8nuiw9}?Kp`w+g41wCh`0QzW?0U^385s-CqB5+EYd>; zy2ol;HsmpgMn62q^C49td`tZ{Ll?@1QIsbInlP7&!p zD#0~*bF=NA5M-PqG*Uuv!feA(`)65}BrwlFIz+lt!fO+UsTNH7Tw(#Xv!ivj><#tW zf2Hb$6;!@ee);7|4ifsnDzm0s`E5>+gb>DxMriAU#pT&i4WM%~y4p9ra}0w?DN4Zw zIbpb4E}|8#qWB5zpzY8;WbWeU$ldanQcA0xrt~LBvYSRS2lVP8(~zzTahu;YBUzg!n;66HvyNq+FV|(nak&CcAdAl@X+f#z z=eK&2u0|lp3tU*S3D*s#HO+#gfET-AUnt7*o~Vl~k!2DzXx}6?9~kME!tZddn~^_? zU6wk@ow4&fWY#P{ijT&ZhR81h=|>R&MCtL|Jk#6yUp!NHxJpBK*rC@>>|;=tMOzvm;~3fG2-uA5Xf@kkl=WLK^}v zjlpGc;r&W_B=)8LP`<^KlTG-q+Kuj=4o6S;#FUVPXU3P3OgzP(%;azN(~mQEPR6}< zZ!ydE7U_>%E$(agjxG(YWGHgqpk#_VHvDb#M>f$ThM?i*=?dZ_iu>HrQ3nixuYKUV}sA*E_wk?(Dba>JJgFrfQTfL ziZHIa%BEiTB=a-Nvz4h*J%uc(Vb-fkm&%u=gl?)> zlJl}FNF?S7Ki7wX4tle{~QiyzjCFb)brg5l0zPc1qMf_b8>G7lbT};%6 z2sfsJj+*5>mc$XR2Awaiolv(@z?sydC=SW8>a|K5+5L(zu0zcky>I$6tvX6V^H)3q^ z>>d4-|ENw93z6M1V3udxhSzV;yQC!x5?03YLZ08jWaIdR(>Xb2&c>X;zw#;?@G?j~q zE3AuI^1Xwv!gDF##cSk_ewR(Slb3id&4Zg0o25ZBxi!xpL|#FX33#h5JY$Y&A7a8< z3>f|4iBu8U(zOj<0$EUl0qe#LTEc_@2X@FxLBCiA8LBEYpY0IoHp*r8rCU;mj#q}!=CmK@39`s<*)pZjgaZ?Pzf(_jMKi zW|smQ@ZhYJcTQhZ3V-GE5l=acvvGkA1D+v_OY!ct@i#KPc3xziV`sV<*G?=e$&?-QUwf<(r{7~vexlr)W_^6V|-*2t= zda*a`%^0#rs@#nD-G%8Ilj(8xg}uI=7X#p53&ljm&5D@IGVhf|9)$-iXH+r&12l>K z-(v=J_TQQdP_cj0;y=@;Y=0}CGu4rQ)Bb;}HUDEbvVHTb9Kf~#*O`_u+@EV7UcU!Tj#AWUA<@#=buJE?VUkYHqbiD=sd70wkTQexf!=?qs#xVrcW|x`ilXz zk0@_xZOt-jQUo;WDN@&`_P20Fl=&&v{%YloTnmRXj^GfRAnVG(S7=Fgc7^NHXg0Z8STuu^_kL6AqDPVJ>AB z+*@CKZ^44O5A`FguN0@O)-4_hF$KVd?Y6Kv`w_C;OJ_tlq@~ijm%4sFTv4=c+_TKu zmb2brl=AcJ@!e=%Y>4)%vcZ^bR_#1Io^KKILTTdBAuOt6e9w+W$G3Ftt>)Mu!sVB{ z<|Oq$H=Lu4uM1!H)IV5V+I-J>-eUIHj+6wUbpeKxy`8L>#rk%-S8Y-%FH@rgb!QKg zm3f((18{5}g&gw8y!?ZrY*=3Q^Wl;WxwTt@;||3sqiGQPuFJq`Oy#oV;Y$dnxdD^x zLwt6%Vw*I57&9!yg5K<2fRL73OovP5OI_J9Hxj?3>Rzu~v$u%EyMDw#FEL{7oK@Od zPkZO->%>3Ax-99JIU_Rt1|8ny8X>tC!`8!(PQV{80Ij* z(Hg{8TNeY+KYmZ;{Nx=Q^U$v|T_Q)03KiaUxD+hSQc(D7a1FiFLCgOM8 zWV875;mARDn?l&6(+uyxcfn!F3e;xR(%u2BV5*H*-BsLu83?sKQ=IybnviM3h^jDA zzwQErh`Z@pX5#NW!PfkCo&y=V6~mz*K?<#{<{*%y{@$)c3qyrxEJTP}ceQ2uY5vm& z9tzm{rk6-v@ug@%R~PJ;>I8C-zLYxKfdd-}N!DW&PmoWVhqW-XQdau++8^lBB}CQx zas(aA(nUD#q8oK+V9s@+Rj$Y$=U2#UU2uBqQt+U#<13e*U+JZmNwuCe$VwAU zmk1xG*oJ@_&yE-ga_51#6waXOknLh)6-Y~tsI4Tw$1cDEnBmoyuyDM#cD=Whz4UK= zg-Jz!xOhW?*R_N0612Bal#ZllX2fD5ux1~O&^ccyOKB~veop;5OgAXew&Re{E z`N@-CntT;;M>C3ygu#QZU1Pmxr;`?k$f3?kFnvBof{EZ;3ec;O0j)Pb{oOULup?qi zRJGfpU11*chi+@!9ktL+uAA7I@@kEEC}~tT*nhI7HKwi#5O?7wZ z+|u{~XGMgn(a?6lg8VeajI)L!tJIk5*A6%MA8WBrk68O%3Wk^ogy*74CKMT`Q z&Z!Y)z4#*|ZSIov;aeiKb?UdaSpv@s5(7fpn{rEhef`@jj znD`~IA*)1l+m!GzoVA5ubODZAT8y}>8Js?Q9=ZP1_NB>FMwgeOd6wTZZ61`wTnZX= zr?P^yG)s*+G&FNz!xXw^0+2dU)}L-suj+5PzrFx-cxN(QQQ}5a;Pq@a)m%^8&Q=c3 zABhWj##IvesT%G=cfLsLwZe(u`oS#RK9o~GaIXc2cmTs zG0ML_?!(zE7G%0K@NSIkwJT$uV6o)YJ}LDB%yh6w%kvT5KLnizyJ(}Hr}RRfuDzTb z3BjOk{YXLUb>`!WT%DxI#cw++y*OUza~5%>M!Cs!gcUE$*5MlREh;fUSkpEG(d z1sl`-;lAwQAtjkQPU^C$)f=GuI<6qmb^aoP?Djmz~bg~4;%88zuHfN}$jf&?g?hZ!$4Yl_K$ViU2d zAcu4^#z^%aZ(%bx?5a@$2K{%ixua{A`x&@8&LKH1Sd#VulbuX)tv#mwQ=F_IM!(m_ zd~9gQ3SSD1fIUmGo)yA;@ljyE_A5mUvEB6xaK{_E-{CqQjB1Kddq)ixal3R?u2l3N z(|RTnj$~9tKGOizYMSercEo1}C?%*?Kvy(X%lrlWpih|-9H^FFmOSCLy z?%)qcgZbD*mzm+I$2kZK30bolh4lh8&E#aUPprBsgi7;`$hi7tmQ1_||FC+jt1$6u zJ>+sCzQZ$f9ovy@uT92!xk`jh0&DgCMSXv*%8?PA>M`v2b`C=q6^weYdtm4FXxwg_ zz9KvS{#4Su>Kur16NL7>e!KwF{W9X)3gkSnP@W-AZuZ7i4DFZaVf*Z+r#QSoo4bo{{*q zn}(mej>NYmw!_z5ZCP?wY8y0<#UrE|wzAm1_YR!%rflNe!7hxr)qP%lh8HSk_Dtto zmb`ue$kSXU#AQW5%=ArAuEpYZ%*M+Z9Jmm>reJYl9Sg9*yn^Pp^;_W1Gy36We&s$F zvo-}`m5{#2YTAn2(>D55I#R*~4%&S22dooOFSaoPPJdV1=UnY_16_gG=Z$;<5%NZ3j& zp>;1@x?WJ*!=pINarPwm|9u+#EC>^t-Gy z+f)PHbs}N~%rx{gA|P?A15wkRi|kT)D?Cno4;hClb=oGfw44c#*CsfdCW9)JQigVF zt|-V~Q`)}%G4@YdeEZ>u@a%OD-GXpeN>*%E41iMwt$;(Q8rMt$*^n`=YIK7Ni7(u8 z$1x0LJro7f>;i#Dk{AsE;cJp=yvMhY$GzxLqOj}S!2#&A3qRe$^u*o|4c6yEBD3a? z4L%yZV|5<8PAaIS7Wixk<>+B0A;u(6u5tAdtN+EkP{fnq>#FIpj|aIGC8B9NB&+2`6dvebzT_c_QS0mBf%j>{r9F0rb^(4G_W9lGbW9EaD+8(p9DDFh$jDB@k zV>oc_QaHcUoO)&FIFu(Z$^COegHNq#;S3{qQ>rgOvPNVO{b}vB(@4fh_~x3v(QB4L zI=572FO$kc@)RJ8-feV`Kn`KM6g}x577a@3UrWc>3In6gYwS8C@gVq%IXJ_fw0zn3`SVJOJ_P zfCQa|Xh%-zhtG<0TWL=^ZUYcaU<=ci6!x@euWJ6^8>FMoc|37V5a@o|I|>o>flSNO z$B~Zk1IU$-Y*P9&v(l=~ZM{7yk0iOmfxTlQ^Bl@@x@Jo9^5mt~f8UpUS%@7L(9zsZ zKIm}V4@{hFvG~AVBz&cO3PE+z|BnLYd3N?|gd?J~L=2?xDp?*C)nCt9vaS%0W||xC zrK++8SA50bxQeMyvz%`ntw@oW;s%5_U)ViuyEj(|S~?~Gao(KOyeJc~xp8IS3)K~W z_>$sDnY)^?;vFnk>QlCh@raz-YbP1|>o)c1^@KEi=Deg z*zolD_=x9>$N44|dcuY3_Xq`)Y?r1#{0Hj`R+J(M{JUfHdGOhyJJ_p)E1NNhoUa$+ zFO*+8G7UR3rV zXk#bAdtLbyFg|wdjc5N0GTi`S!6PiS2T5o}h#y6SFUu13`=X;OM|%mromfYyO=}C9W8lF-vNUYR zWcP;}&{$8V_|bpXjE3+y$G1-tx{zk_pAM1@3wGCcNUr<7{J3Kq6(sUQ`k2;g0P`b5 z~m#BDrg@yQJ3UyM}df z4aZ5dG|qchXYa8|+u4U<8jP(MVZE;JRf*RRgi>0? zuJ3zGZahgy?70Zj55SZTqd2S*lqau(pW>;9H>HSN|$>KSy$jgoCzdDar^x z7MQ!&5+8FV{heV2eTMKLsnFwz+ePGlRH?zo=XNLI)fS9I9m|8lYN?KjtrN}+{5KB1 z!G^8y%@I*O#*`^~=42BjYzB6ZLekJ7Y56UFso^;Z&J23X2Pmuq42ojz_hOT@Cymx5 zMjm(K6CptT-*BQWp=d3*6UgXo!e}-Y+BuzN_3jEfpcq5T^sVo4Sx{c6`N|$^9<#&%@Xm?In5;+qI6+Ch>inx}#}L__%1YL91$bUemxS<=MLhPf<$inI!?zM7dr~2;Rb_C2q6%Gl;Fd^f_C7 zX!eBtLphYoEIk{@z}@AQ1w-!Hn7y&-GRGIBJ=qdb%UF{m>n1L!#Vo_GyP0FwEs_eo zHT^>g-ZuNPsThigqfDdZzNP7MKOHB(J2h2MdJ5R6cGs&{&)LpP8o^rK)ZeXd><^G3cMV0r z7hw?2sQMl>sQ)}NA{rUW<>G4JcKARBm(j=aBga1teP@CE!Y!$bZOEM@HU|Ioe z^ED&Gg9^{BGc_TeszVLNFKDh1NJ^W^5OhcU?IJKicZK~rgJI;v;IS#XvEBQ-4=RMc z!3N1bFiLThHR^wsz$``hR)v#*G6^zh0{C}fmJhm zG$CkYKU6PzuM&-Nkxm_9r_|X@&az{xWVr^Q$JUCVOu-w{Q(Mk&E=$i#d+R*Y5O> z9HmqZrqajdUWW3j8D7~&yZ0*%{g(HaTSPRsyAS;Y`KoEbNS>)@5aK7o#>LTBU>k?7 z{O@Xb%j#p(@eIazoi@k4-JdhBF2Q;WikT|hs?B&MB)5Ea7jk!r2F`$Ny$%XN&`qv8 zOO|SFY)VY6Ck)2hi-1zrLK*}H>W`YqW)%HPh>yD;+BFLNi1Ar8U%oDhbNGh!R~IDu zFn;tEt7MjOuqOqF*^nE3^&NaDY7_+x-%PHx>&`FGQ-r*#&@cfun=}y3b}C!UghE2~ z)Qr_tOl^)uN+9)inkf=hlp&#)5|SpaT@H!h@5o~ zkMytok14#AhI?j$KDY?aqLifjn%v+)SV`LCB6_F!h6}Li;6g3RHz4z8plWjx&6=+NY z=W3G4ro-(q0oXA!wOA#t{lq760i^!2LT^ffh)X8pf*2KeM`0}P$+6wx1AZ)fO7bsS zZ}}W?vl}DB7+$~qAQ>#6=+Lbvf&D*`T93i*2j6}Vze|v!-Q4)#vD~ejX;tzG3Wg^Ir zK}&thRj92KI%6{S!H1c5=7==K!IoaB>CD`J3}K#y@Sad6Q!MYM$G_uDaZG>oV1566 z;3tF*fi+nPl_X}z8{6(1AhcHvU+D54vi5}?KK7ASnTQeC_em|G>dbddauebOJwYkC z`^a(#KcKt!2&L4}&MVW)zIPreF&Q~sS#s^NDz z7O30_X^8JEMAhBm`-p{}Qej&L|I9I`g5ufU#_C?#1C9t_j!;E;)zX44ink_9=Z7xy zTy7OEY3IbM5JWy7r$`&+JkC{rgK%%e3*j_lhI#rTl1u^u5%COrhR`V}B%s3nj;s-(Tu^uGV1{@mzh&eJlG6>{Tetxe0xxCFna zXgA)U+@1rwoXcN}_R^_6&H-C8xh%1$4AT^1KS005z`ij46%qpixabePmVYGvAXNh@ zijP$qyL7j*u}UZ_bmijB1Tx-2?kA`+KVN1}I_n^@$IzsbC-RuCxi;ZS^>dW0O%GI1 zlt$9k57#Z(Rg1_T^p#38)tfXHSZ52w>Jp<~f5`}7_AB99XA@dVv;HeOzk$49K}R^N z6jx}oD&=Xx?0X5m10}80rAslEtQi=n@2Gz7(7cfyo)$!=S8Me^!p8^UI@uXgU}e|b zpV%@CN37H~k@#~xMN#77M^?wTIbE)6X$dhi?mLNwxDY}OqsD}_pJ&o{W_`dRbSf=J zZB!0me4IQ|R-IZKl-b9k6KE~E#YD0jpbrJrt4Omd5qH3eWygKPw`FgrhPv`;hPXCGW5uIi)_xt>Pd<9xp)7Il*KJ# z1l@7^ztSn!X{WBe{by7JVmLlc(BzyXXu{5B1ADnM{r~NQ1N@e6wjE2secL z0hWOjx!ks4H*Krr?M}*_Z)7#m&+oA%6W*(UN>aE&IOX*KEMmu!uuEOsIBf6H;hB0C z$j){FQrh3fgSAqIju|{(^>R9HZeNB+AVebmoGtQPnO^O33RnW*Rb?ws^9q_vIEhG! zZfMuwW5e_JkdNPZ%BK0Ft6DD?7^&;ck3eX>kY;Q1R0^n&FwKmDW+Yvv#7HrrO$2LY zR#c^aEZSLV`;yh8d{4#YrA70!h&v<2SOZ?^5^TnZ#meeMy&67oA)h|UtFf}D;NcIi z7Z|yW{aN?cap4i|^W_Yk+=bNK-@O3C{HNlIK1+tYTb8m|lHrhv&Ll&S0yd;>^tsVI zwU&dZaq>_1ay!|T&F4e0T>j{vSkD!y?&6pOwD_mJ7mfXF$B2bpao6dt@aCh9W(R#_ znY(LXuMrbZXgET|x1lC)LTBjLaK3x@)fuhz=7TUVX?k$}T+fgJR=2_8pOM!a2BDmrtTggDZiP>l3j&RH)14WA^0pQlAMUkz@#3z)E#Ez>%MdQSThv0f>+lNSZS}&B6BqhkC91m2EE#)WnH^To( zwg*@hY4H+vHK=))2!WE%aZmD%2N0ELyNVU-Jwv%D9m(L$TRX7s1uaQWO~<8Y_}*B0 z9A)cWqVY#F*ac9y3l~G^!3aStFBp-3fq8F!i-e2+w82XEhgf9HX*|&^Ew=by)RAWNfD~0iOY+L#Tl!FbJ ztpvB39K-H>9wUd*NH;;+nS3|DtvJ4wql1XGZg|)Wf9Na_b~4quIrwDcJ@zv7@!fh` zwywkx7Gh*sg~uKaR&VAQ+8Hd392;eVfb7A8hARZ#7p732soj$AJ(Y#U4qxS**+xL< zu`Hq`{`eNy0vdTot*)V4|C?u~Y3sh(LCu%ioqrIA>@sYA)H7k2?Mw{EDyaB3#20Cc zyEcBSr*EMDdsZcE<}8j@|W(-1FfhCl{NAgxS~!Zem`@0BelpqBsN6 zbee3yA=Prc-udM>(TyKVOCs*C;Z-c#ea!%joEs(VY1Djj#U-nhTH3{E;I5T>A!5j& zKP6o4{7-_!53fRf&aq}l&5*`B%VhoUAXNLa!D&YSd z@AbcmivLB<_Q`PdD*Bh79&}QkWgurZ_Zs{N-*?8W8Z#GD8Z&DYq!Uar`hI(34HUS> zh(?cM6B!i)$LxC$;o`M@yJ_eAUJPn8Bd3=_&i_vt`*|K2^nKONRp}gzhxasHSM#we zB0=HRkfPxC%4&qgtmwFrj&XZSiqH3;vOaPkwH@`zP~ABkG>{UnDgEOr!Ix220o56P zAHz|!9F7kM67)JE_BbgYFYeX_Hf%TBp9V|F3%pe;h@g?_~57s_W)?YQH|hrfR5GJ+1HM1*bX&dE^UhBNv@UwO+RiK1INOM304<&&T0*{7wjC0D5pPT*Xh^gFT3o1pk*R zPLshWf%frZ$I{^4?XyORtq$8f@-C4Ha^$|$fnrZd!+U{af4c>96L(+>_s?iqR0xaF zt+p$Kn-N^??AQwNb0ag6O;nWL`jZkVTkbi)-tHhDs%LPzSC9S-^&SU6&$ckwQ1BLV zX`v{4FXIXEjgF3Y-N-rONY;U5a-+NQq|=x__eI>#jo7|hrRcXYO>qb#qFpx zm8Kw|fPl29^sXqqDZLm_s&u835TYWWARt}9&=Kj*=IetV3af0DPYGS`}OJ@c6>^Gzrkrh2$a-n@;^EqJ2lAH7`n?6j27 z!iFj>0Qgvo#|D)SzS<>by#3p}n%C$}B}@XCy-zU_&4j*ro|RO>8Q5gqu*f}7CVx=n zv(VXzTUJu^cHglh9~$j$g`zkS9~90J0s>xvzPcLjzYH4dOoGWT3r*{P&j7Dp&#>uH+^TjrfZT;CyKzXtM;bWat{(JHitYX zTcf%b_7b>uX%yQq`Qk~IRdBosxpr0&OE>R*dvGmz}4mCkvwr}G9W_aT4>SGq>#fUFo}-Zzjz z?GsYBN^W>?TiNeVK<7IMLe?3X3k?+WN{%GwiWF*F?bX@b;Y@+D`|r0Tb`Erdbs%^7 z2!7c24AQ(NMypZdk2WExQqN-nO7yrnGWq?9Q;N1j$e}TSS^_0Besz%Vt^8Ohtq9EWy1bNAFpM0&p<7I}^CDft)b z-zLfI5d(LHfJV~c#4DQ3^bxDgAI`R>E8at&K7AHqXzdyv1cxA77OdyLXsRWta=9=< z%#FUj0n&`E70xxx?{r(QXfi3h`ODlqph4w7fr3LyZDyuo76a2>h)pZuNBOfbL^NOR zVae3D@fF%n@8JUD1!AM`f}9v*Nu>x`#$SAgxv7w8|Em4!8IuJEky9wwn|FJ~m44hQ zG@rf_bCGwdhl^DH<;l5w`oz&${d8B>9yQf0VL83})n@=f{XSqqONK@5DTS?E+*6o3wa0zcQ8HeGV zHyKF{uW!&pjK^s%aoZr8Xt-4VuJgDVkkn~b5oH;J@}|4Gz1nr&;_m865;V6>bY$6- zj-TZ}%%h;l+iS8Ef2pX#)%sD1KD|SeoI=)Us!?s?cBkZm=;5<2DT~ z#j@KT2xG-`UZwLUj$+Dtz8!mZz;7hiI@~?BTC8ZzkeX18s(m^j5YzDdvDJ0k)8d}6 zp>3sAb+`0WTb5T7HYc9L{gywo(EI~#4gQtU_HK3Qby{m2RA5|c_;M0u>olvV$C6Bd zAOAw|0l+}oS?PgOL88S@uB+$DnP|_pQ07<;+Dnt%z&7&DvXC(|4kwRWVqdMwme!OP@x_d17H33Zo>6W+1updU6ll+;LHRxUQ<0?*1y zUP84ZO@LR{rHnP!x7p|sum8!X(8Szh1gJjZ-}m4JZ!?!FVt^`tBTTA!-z1dV-h!0#DZ@@R8spSEr&9y355zWjo!R>SBt5 z)cxRVo~a8uO2~jB+s@P~+LJNL#dqzu;AFT97x0JP4~Z+G<9-MqO=thjbS zlh^R}>WQb0Omxf3To0O%Gc zEFX1Me97Qvp>00*)LDog*C)lVwZ4Y|Y#@JJoOZ8^tN4CajV*@2xom2xT-sP;(l{WW z(!4o$nIw2K_HR}u^B%fs=Xc`WT93{ri-DKY+=L_3JxYYgqOJ<@dmQ?&xkQgGwqM5& z`M^>sFT_tN&b$;oh2jJJ_e-JMBf0mt_8hG(smWW8!Lnx*wZiTGg6>a&eFAKTMY4Ln z#U#9Ir;T++gZQdCrc3kLaSg_M`s@Lx6(ifVp@khV5TQ{f8M}G$9{{cN>$L3>3P6@o zwN?G~FKGEX-r<5ZTU$Z#%XDFP7Wm>A#eCh0CH0_z4FxZV=f-CTKFz)l@;eBIP(&K> zMkY`VVwAMAP$#Kz==+b9)_Gj1K=#!c0kTIB$bIny$es_^g%_-JlqB7y*g0r&Q zxNAdfc}K$XxL)A$$M=fgy!jxZ4jJXXn|-N$jtail$|Z!qK5rTB$)GUptDD-ER@ht{xbUg;d@{$yU7yYX_tkMJqZmIL$;A z!U3bUK;1mpnVPb@JyM36Wr*WeikE_MI~WU=JK-O#ZrSF7bT!+}M!z%t%?S$XP5t(Q z+FLhdFInu^7D1}M7UOE+G@WhFCOOkN3ryIPEZWNIL zC&76?n(dcT6d(2C$!+@lzQF|U$6EeIKAXwkvN;S#TcBYxQLYgwtp*100CO0oTLUhu zWO{hGiX}!o-pW*7JIqFJH>qs5`)&SI=r<9(r=n6ALwz_F`=qu^iwSytl80Qlh~j@G z0(tkf_qR$$Q{`tdtzT6v9>!T}UWM0_tQz}-oNlDJq`t+SdK2=w3n9C?{7HPFt1Auh z3GEn*NyVJRA`l2!N3=jX`IB{fv|W@W>YxK>31xi7{k-ah$BTUBtrf#X#wj#4aA0M^ zPY&(l46op#t|Up-}}_A5s*J2=noj44UT?u06FdYuNk zuOGn>q+v3O8|*uQ%_5IRFrs_hIuzy16Hv`AG@%L=>U6+3C~`_6$;MVkTJrKInomXf|i3R-K};E=AApK-}AwPVQ8 zDlpHqL&|${&&`o10U7+DhH;OOy5-07(4_hHB>lq!`QlR7Z=0FvjcZ{#lZGTa|KT9K zL*a|S%{BOZLrUZ2h%9M${)Z&$bALnf{k$e|o;u{57?^Yh{bPBlxbD?;`=7t~ebo9+ zPG1ZR{1}ym=@RaSzg-|tN*p>wRmJ0iHik!Qxv7w!=GRmu9lzq|N@V;vBXAh*fNj4~ z`IxO9ubWFbsKD*LSMnGiceb6)VMSJJ`Ge?+(Ey|6rQ5WO?%3Wy`ojfvbi+cg?iEnn zO$b?mVnrwnw;C!!;Zc4&<0x2B``NYc(;hUT2)Oc=)xK@+t1NPJ3mZ*XK4y{_c-GjA z6beiU$G@gTz7RyZZ` z`c?bwbX9JzTq~;}jVrgyH4%?UFa1w(bAQgp`!Hay?tj)8NWY!bKW9j5osO_17tflU zu-7-v#aAgag6c1KeqKp1HZdlZ0GiO4R%dsQA0DtiwcAzocu%(Ks~D7LYHm`g9~lKZ z9GlOl5#YRKsX>Ic*4{CQJ@?qB!Uy6+2!0y@QkX#YQ{QG`u*zbKMY(uz;Qk_f;v?mh zNG+4@yp2e$UF-J<^uaSRzuSoiogA0{C#4aLz@?|}uEQ8X)ul^^9klwOO0m{E@C7Qy zJw=?WgIMD#MuHv(y_~zOT54FbS!4R~uxWsjuM?7m zsde8yKro6ajW>?;3=2T@`y0;hAw?OhK(5p}Ywn#o} zH*0Z-($vE-_q{1w{YL847j9%(Ig*mb2I$!L`;(duGVgXRt0#7w1@x;Nghy!ScTFM}p^T!`@%=^pF;D|#B@O`0X+GUr18WN#P*&LeafqJKrjR4rQNL4t{AXb_bMx9;n(^$1o0A#3yTFbljVqGnnu>qT;4BeHc}JE2kIUO`(P}eZ1KDt{ z3(>!4g0t8hMQ+55*?2{W4!<>u%A)znyR(ylZ@HqanNvM7VG|+AlaP%+zJ69oNf7d) z)!BWqhxGvz8hpswRA00%kliv*wLthdd#$Vs#@k*EsHMZU;T4Qxz`sV zo*1j)R#w}>>heHH{ZH%tkTm`N-^KoOLePQSL|~=mYhb$@57G^1&$Mr`$18zxX*hxs zd@+w>*uz|*&J!FoN}qr{O!jwt>fqZ}rtd;Qcp|d?)CL{ZKB(UdTQBofsH143Z%6r9 zuJFZCF;vAhkqCEz@kbl37PTu6eK>^jP8W9LTyhoR*4MUF|D0BD8}MM*y1=qD zt}H;UPq-_|k&L}9UGa1w#>>=evewf*VDW~kzMZ$pBND-~L4vv&B?xI};*yc4ZekSx zyKVW4tpttc94!lS@TFu6wBh`a9a(-(0qRY}1ew32_`r%(a^OHljk!(6s!mY$HJ)*eV(q8+Sex;G*eP$Gg;GZV!{-7!`ZfxZnP zEd>X8IgwF*l~J^a2ThS1jaUHx*lu-Vi5p_4ds-#l(`O zFG4ZPpEOxe+8$SNTiEg88_W7$U)A)qA=ls>gjO{%&72XwOo+&AYi^f?sMV3 z1aIrfwJVZu_*QJrD9xqC1!S>Eo;Th0SWV~HX`A)>I%S*jcL+V4RpUATeLh*9wI?w7 zARXwvUEX)w(kLHxtr9%Sd)CgG4VNSUA3JcFfFmhzM+PbAe4IJPyRfvrq04Yu$5URV@bCvLk9}Or4sVH31V0aIWA-2A5L=O0;MT!Ok zR;2q>IIe1dl8f^6om};@#=?>R=)a^K?zw)dg-vyX_VsA8@yfpqb5 ze=V3l%}EyNk$L)xhNSTRG*>%z^E+`Xhp)ECN_5KVpo+rjAAL{<2WcWy819qQ+Oep< zurR!8*6^X!X(4(-Qo2F_Iu$%9;xZT6Hr!n@8PqkEa>=Q{+Glg6ZB==nwynCmi=dD; zE=+FUK!sc7>SO>~>}2Y3R!DB=y16|zU6&07Och`R+W&A*;K66Yac^%wTzdcKB7fm& zpLSH)Xgv`zagI6MO6fGTgWXhlMdw~z_K#3z6dK)F8@RJh0g_?6EGN$9#8QLh$u1vL z4~Gf4NoZ@$AtY_16K8b%CwOJxd>rn4M|Ec?#zAfX!YD?!qty%cURKPpjRIlmksRGr@`m5QQ)=cC^;C`F?gHb-x4@qi~um0`_ z?u1*dgWuJ;Cql=fw)BT;?^`1fb%#H{m(-Ye#`Sm6ZT{GlUx*W?Q-G}fjv3Yz1SwJ} z2XxyVaD;y#S+SUw&2=O|0eiz#DQFXKJ8p@6PDu=2Jvn5d->`12SD%b(G&@{L*ha%V zfp;Eo7Sq;udB6@h?e%#&?80&6B+zU_0p7TKEW*muPQ{VirN7fx3~}{x1`Z!Yka$QU zSj)-EWNay6g+w5{fX)j1rL%#m9&9OuTVlsN$Mdwo;jKG0b7N@GpucR?yqq{zkHCRv*W4D-=n&cI((^=Nx% zJn@nEx!ochm*CZ@jN;utXXYu8vXW;xYA4p}xwX?%JJDk1>0}L=^LOr!ynHgZ^*>PL z75L5K159R}rF8xHb21^MEjrDA^Ka{%XJH-n>K(;qo$ZsKK_{t^*g69!spsl5CF6ab zSwzGeKldT>;>Px{rtd0mO6+nRT6x=vYheUIQ7p%c! zFrsv6Fu5}%_Syr!FEm41W)MnRJSHZCp2b|+vijZO0 zn;Qj2ji?{4>y&c&nh~xSQC6N)*_`dw)l+G_@K1QllnnqtY)OVSK>fHCw)NIS#P(|{ zJc=`l$=qgy=qJI_I)@}uKLKj7zzihdNTgwnLg*^5cGPLNUuo;UUg`J2ard&|Kd=pc zn=Su#CH_18se9pE$G&f6;E%@up4^}{=_u(353myGJX~A9*T)2;;cya!e1CA7o10k? zIEV=aE*bs%(!aJegm&=R(NrqAF^ucIDlp*uiSrYmWt-0_bsCUjX8{`>tBxUzr2<<=9ZSYZ@gN#JkOPz1*1sgMjiP`GE39kIDn; zq#iX)1jw{<2jSFXm$I4cG?A2tzc&jw%EylB94*4rc~A-Hu!n+l=y8`p;#A0U8S&#wrx6-gx}NZxRzbA)mpJy-75yi&q`#iYtKnn@9V$~iUuy>?(B>I_J9GE|3i26YG7*Cm z?#cuDTC~k4B_8aiXPsA#r)*l9V#Z!*h2u`;O~hfdF@@Kqz59fh%nMC?qOJTyXQ^uz zaM$eNC`I6vsDq&7d_6mBP1q9PL{Dz~JwtAjX$N-3V7FPM)=T*dW8DhEa`Ltq$*8Jx*or^ErHc2&U~^_Y zM25&=7h40RR2h%Gw1~vK>zA)6$L2|1_vnTWgfaL!+dc|eSyfy)!1V+wCCf4@G&C~h z4ZTQnL4^`Z3CyU$<3Wf^@yfHMOHUJ9R6&yk{iU}Kmkm}$C|?O2E28}?O5X;(w%A&F zvrHibv-ajQT%RB}5Y~f%niT$x&g}>yCB`oC`4WZUs%!0MF$KU0Qb?B|zsw4mfT^EU zMaGzVpca~zkRtBa4e}kz z@5~mbyP<>PvM>it2M=n<3hksi>EKm8zX4Scm3*rg}kwq4I zsfI4a%wu_uXTBj!JA{FG zsO|>#sj3I*cqB?{Y=3=4@4L~!%@J7QUT&?l%!=G~>_SmJs}`u$U`?vdL!gdtAFf=h zDna_%PRJ5l)*YRcoOPRTkgUYhTYkL(7sw?t96L7OCI~5Zn*E+5y=8bhQUvCcL=~$q zwUf7PVtHbqT8iJhrO$j7nGCtx2#ykh)S?7h4EJK7Bm;E%WGRLkGZnTw$G?_acX+2R zT!;mgseZ27%6Uqu>2;py#B%)M(5|!rsh~XiCT>|eFde*ZtCeI-Ob}Rx>_{4iHWZAy zGF=sXHmCi>td9fvB;ru7W0LdOvC5qNN3W)}tKM6a`qAl&?@xn8w(5YW*w1jBnOa(Q zQoe>N%LB&D{uuxnfp@oA)%988c?l;LS7}6?PZw;K6cr? zmq&q>V)Jx~IbxP4hQh5jlUWpx9TRHj1SgvUs`-JD*VsA zHztL%76H8WUCDNx@=8_~&T-l4tEh?SN@@+PyX#=3vL4Seh+dI=ssgA?N&0L=EvFpt z3h4r1auAG{B?E8m*@%p?B?e#+`*?b*#ERLgsEeu~zw0TuR3W*yFS-Sy=!GG*n^(M0 z9&4tI^6DT{jkenT0C$?ln)j~;**sa7g`B3XCJ}R1u*Z+x)rXdRL0K;cPAGq z9(&ZY?WVEGUZ1ml#J-xZwQOWzk|!BZOAY~j995~Fbh&IN+pU)>t{DTY!aCIUF_5Xb zkQ3rPefJSyX~IkIq+oRu(LUJhq|Ud?2v#efij}YJPcgKj4U9k5ZrqwKNS&hvg3-s1 znZ-3-@o--HnEcaW{yTzKe1P%tr*TK(uiky1=5Sn~uhOKVxl>n`^sp{Xs8ESsh$HVd zZi^kDm8iM9wUo6w7P^uq(o7pN+R8nFzNm^6;WW$j0kYmL(3lqH?m)d}SaVaP{$m%u zX4v`;g+rdfdN9ASE0$x5UgXtnLbhrB6RbL5#x8{S^l?1&&zf{rjFI1Aaz7CQ7`J03 z6}Q8!`cRh&C_HU>FXFD0IRZ%zOQQQ!L0-bBG9NL%*q}>ZV0WI;8GqPMK#0YmEU2F3 z2MJL%SNG2hKfk}khN=Ra0GS&9yFVFLhqTA|Uuw~xw|BSm^7gcU>h{M^4;yFt^D>gx zZe9E1mx2PwDB!t0$V}hH+1}P0Wawk#eRQnp_SDfHWa?z+{p^~|EoqR3y_4fJ?`x94 z&-)&(9-fBJpW51k9@zUj+1eYZtAJFTyuBXUd*1hOd+y2-RuG5!%zo2{ zhb-hU-4W}@LHN}hNz#!{6OfyO=yz_+r5F|6kP&HZg*ohI<=8RpW6+q-l^^)fgn z95_yLSfZab89qgYLt7I}1k+BWDSjJJ3CGUk*8{p&YLZ7izW-QRS@WM=4_*lj=ldV1( z0zW`U@Ad=%zQo(zO=U)IrAxKX5Zjzv_^52HbANovY2a0W z3xoGm*nr+=FI5W^CkF=7;y0cC!hCq;Of$~Oj_XLBbxuiqsD7`K^w6{ z+x__-n{Ym$oR3yBVI{TlrjV#%rA_4)) zT!jcWJwuag>%Ox}=;nbbVlSCRPgJ#Ly3p%!15J*Te2%v`E0JVT6a`C5t%%;L=jWxD zb-XO=U3H2%y^FrawQ9`QpHNIWUit!W5j>y{B;T~7=RiKtx>?5B=tyk%fA@{ zE`L-=Tk5FvRNm+h&*SWWDGY6o%1)mM-`aC(wYlLdsPg1XW9Db0r5lxU)x(uLDzsM^ zM2zu!!~5mk8(N2z2Q#F6SpWIx)_V21w6^&eymOqX9Ne;Y=z0=Cuy|*cCRj5Y^O;8Z z3)a|xkNZHo`{d;NLKRbQbh~O>#M_(9`GH&3b;RXajj%ZqP@l!POLSv=_YY=&l_IMZ;^Z7hA>nVjp!X}stWH`Q={{+kvu zLNnSm;nyy9s#IhO2M2SnFsVv!Givdct2HDiDMfoTxEJq!7l4gSQnSvw=B`TjbD4$r zZn-s%xM{X^|BCjMC@7{h0{P;ir02$pr1IYf{AhQEs(< zgbXlOKM!PNY7_3rdny^a#1=6lMJ#djLhR+UgPG@rypk-miY#ZY-2A=2mS}T#znI_| zQDsmTWN%!{2 zR?Fmgw@dt61Eb+-iqjnWMc34Mjbmf9N5_J|b%h$CBy2RB#qz!hst2JjWWtOLwG204 ziQgvCZ~zhn1uPl>wRUL+hnDP9c)X46;C-Fgh=QTn%ZdFD4ADQNG5b*J^9>E%UGc_n zx`7U6Bu}wHzRvrd{x6^Is9fIJi*X3ikYFE_>XrPIsy~(*e=frEkbQi$RH;7K{HdqC zEwZ0AexB4EP26Qn>SXd;agkwJ^#Hh%p9#*ry<0Qg+oIv_Rh9hkA-z4jWsaEZn$Gt< zHv%O3g|j*2ATokV=(24agptf;i)2Q!;zI5`jY9g&VhE1sH(i)xvwaD{g;#O0P4%FfS;y2 z28o20QEG5IHX<3UitiXf`S%`z7AKpcif_Ii#c(TS(}Vj6zrIAPv#-4Cy^-ECOqx9L zOUC|Zqq}eTfrH1nTSb7$dlAAec9U?Ev9b8~ndq)kyC)ep9k`kife=cyf`+8WkUEJ8INi$fX>96@I|;YpU36 zm-E!RW=y%?R^Q$5*Mmt$K6^_;voGxXE&!c++ll#>sqGKHyVsvSRJ~gpOz&x$ap3rp zeOr;^Q2cIwiapQdPDK*NS5^KBEG=XL@VGRC{Wv!3-KV$9tzg{+f+CN1!Fm*y<^=uqx19!Pn9toOJI8}Rj#;R5pLtoO^_)4*58$v0w0hn&~E zkEj&*aMB5$$hSJN(66^$@p~_(2{VmWhf`{T z3K02&q02{;f$J(twEyidKAz-{cf8*z-0X?^b|j_H=cH;4e%WfjE8^Z1piBb}Q(Wm0 z3d<_e;O9yI2=W$ve7?8q=+-lyr0QP+{B&UWm7c?@BO2C7aO2z`qxJ%IwMQ{3umRN+)19O6+y`MFH- z>Kxl%N?vf)4cikh_F6>Lw4_ZUQy@=pQfhuv(%zGVx$TX3kv?K4Usek1-KUxpht_h*@>_IZ={;qk%HArgp?d)Ellc0k zZ| z1(qG0Xh0wExVq$DmPhxNpmd9q&J@Gg$wko9iQf7fe&s`eo;c8R@JY7XbX zaaMkg?M(g8O9gyM^;<2CLxou7p>1G$b53rx^{0t(DTT`SuR{aV3D`cH3Q0FemOXlE zGd-*_gu#k4h;rH~MB}Pf6g=~HcTY1yzkSZVye8fxz43yzx6ik-y&Q#GR#(@ckq!G! zNCtsP$UVi6q6QE8hkjKyGiSQ=r+&NU!M*3dqB1WMQ%SQpz2ZFT8o`PQxVag6NIgKL zS!-3ztc#Yal^_)1_&GdP+lor^e!lZzhdc!mpP)-wE~P$dcpugXBw$Q7_0!mYpWe9z zia#A7SLN4p9>mPUGj9mUCHcDd>c&+_X6^*cihX&Ds-DZ^KLSk7tWqk@drmtB`dE)pNdlpBTknh=(DXNHKz>RJAaVPc5U z8&R|GY8cz+Aj(Q!_z>JcxN0?LT8$FxK6l`Nj|yK+hcZ^*N5LzYGM%HKXBoHoHSjgX z&z%n(DI!0p_W9Ro*+-+SwKnM{iBbtNmWkZR5^BETiZY}rchh+nhIEh!Xr44`B&Tkt zVp=6=K2)ofkfA?MPu2@VK!wm3OG+fYwcjU?!h;? z_14j=z`*}q0;4IuC@%rrS1-y8m#pW3_=atcGCn8k<~$O;>17!)jZJy{Vd6vX&ch1* z+TKJAnx9j1S`@xX?>NAp*OoLr?&W#x;p*XJ9z%`mSU;2>TPxrPDkxE_<}Bci3%sXy zb;(p}@szcnl&HKnmUy9M)qs@@8@ou|2u-yzQJoNxyo6jSFXSnCzJ{oAs|^#gbj;&< z0b|+Q=uP~b&dt@3HqwrWv#DCz#F)T<`FuP55_0&LPG+Z<*6vgMM&Y}+cZMy-Di?px zaTFAXGTL3{xe-=ksyy7)`g}7|bUIi0s+Q@OJyGr@@<^fD6W<1uI zPa_oaIdhoZbdmAZ4~HzR-1#2)zHr`7-}}%X<%7P8EGIl*it`a%!3WJuHPBD0Vq;3YZNc8fWe{k3)z+H-ny-Od}X9KKnm-s3V>#rmdX(A!0rQh6gWAZ+)<0cb#8`8dJGm6_c`!P+u0Mx(s-o#IPxE#EiQV zX_s6NWOk9NpI=%I9htL0ExZM<=@sOx`#m>Dli}B~?1)*h&h$Eu&mg0%sVZe3cP(kx z6;~qK(A(NU!VBMlyl=dr3A@)*m2UPF9}Zbv$+LMh_RiAK^+?v*d8=CykKsOeXM<>* zsiZ3Z(4+9)1Z0M5Tk_mreJzeDqytX{`9(O4Y~MNWT+VsbC~#b_-dSI$5tAtCt$F>r zlZ1cQ?`6x%lUo%Z?XSUr*%%kCa81|eo=Q`b>1rpp2DizAaKMUT5&f;r(9VL30Zdyv z+eBp#`TV7eiD6}wa+pXEUnXcT$jQt=YZKfl&nflU3J2XnWJpL^i=L{Ro%Zc8V`S^2$=`jd!m`6*Znec9Kr?^52>IR$m^jk$XOOgVLpUC+gq6J&dCA#~jO^k2P84qRQKYapL z1i?}&DLSctHnD6aQ@E2ME;ibef9Tiy4B;ySl762lC{IW4k%0D+H0k|;?v<2k>pPZ_ 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%0D@cJq+G4xFTnhy?9s&xmlL}>B500n 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�Gs{P!OSZT2nly$iP~wMhCiM zt-UjGmkiBX%=v*qoag$At-*D`TJNNWM;G~6I;}pNBrhlY_uzT(h|GpH*j}kS%{*#n z@glYEft!6t*m+1_Q8;Q|6z!sjo!*h#O|&=SxK(K#RYU@F&wHdHy%_p(V0NvNxp&Ve zPqh3%Sqb^+wv(M8zGKqLP_u^V0-&1yZ!*Jra4AXBWT)avWS1k-YC1Z$@g>=V;qq&c((l8wKV$Ed!dTO zz2?wl`Wc#rw81<2q()d`?RQC36w_0R9mgeKZH4ul8EQQX6?e}T2TeR;MC2$^OP@}@ zeFQ*c9y}rKls9t%YJ_g7s+tLsQg|9Tcq&qWKLY-;FV!O;KD{uYMF0|EvwqNYE%^wb z7kKpu@Nj&-XiYVoL zRv=EzLBH!!?(vIx1e8|g1*_Jg4WQiAb}psyuiTBwGE%`z$8@N@;;A2wvTGcSq*gt1 zM86t6QW6uMsv<|GRS!#KnF>2ZKYJ?T0kuOW%i(Cn|sh#9)t|Nx^M12A9jp1^&wkeA2W_%w- z(%j09&8CBnKPg{^1WOnqoeLAup3DjTlXt86af zJ~7)V>e${#z+qPX`)o5puKKB$Wu#Zq&k;v{9P9BVen}c(omAf$Of8aKb$ehkZ06m2 z;Wq^aatVHEpBsRjLfi&@R}a2F0-)?8Y%V+Y30Qg(5LR~2Yg=Xj$23#Wz<>GbW4C$R z`Hm=-uokP74x{t>YPj%9))z;H+ERmWdu8(aU+F@+XwfJzRe94~Y_o{l$1P4S^XLx= z8s_4air#b~d7!Lz?#f;s>$BsPA-b1c$8?RXXA;Ux5}ezIoTkZSN}C~GH;LlzEe3C_ zaNX-E;rc%U?nL#GF$d1qID{?dzBTDGUo?rO39le_dk8y*)i3ScuQJ@u?h`dsDDGhn zWxdVul`#<&TKB>HcC%;?P8d5otC%CtR%> z-8p7oiTky`x~MQzYf=E|o^7+;xC|eCAzO==QqO%~#=q2_I%S)7Q4Y=D`m|6l_2sRv zYk99U-my~`MXN?O{B=Z^RKv^)#DxUaiTQZ9IE-i_O|?Q_0r zxnt|3VibcrD$QA_kAONk=eI(!rU}!Vdt`s}!>CEc3qITcB#=tf)rGK7Y&o$Mn#6u}wty zEBqKKJbH5@hof~VJT)v8DLlX*LCg6h7$WbG3OQW8Wd?ruO-)$&O-)dR+goJHeHVhK z@(khMAfUy;hiRQvQk=$wT{K0vR<3UWoJCyQ-mRu=L{Su%6u?#OccxCf`C}f6%jQ;*!Z-V;<%-860IAoX-n#v0 z1FBx zXq|;nC;BmY-3uq0<06eWaSuo=>O4sSH_mD&+CC4fyl9S{9>vPqT_gOJq559@%P zPZHlQfyw@C6K(|)>r;ovk^F>{Z~CW%lM`H6PNNZ5%7BzuUAFnw{Pt*(v%0Au4|wAg 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�%tP`~~DNeocD4Elo)4kG? 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

^tm`+SG0+I}NkN98=gsc+3BWW%%+nUrv=O;RP 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�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 z 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�G|v$GjYgKW_#Ty?)|jiMMH0k&x7Af+m_gj!V! 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
inLWYrqz>~?Xgf;9PV0QFBA8d zK=FnXJ)d|Z*^QM}MhudMJV0^{Q;MOEoH_q*2FE1yZ}2NtE8ynKLU!)+l`9etw9!2s%fzEw5t8`-kaFpaKv(Ouj zT)~AtW?#1QVvPF8mX2?FFzyrGH=>+_uyywcH=~fbJ!p9V2XJE# zd^n0qGQk^o(=UHqzk57BC6++vEH3c4JPZul>Y;6(szR|Vau_paMjJp0?~5(C4U1e{ z`)6b0p+a{i=p0&HHBqemFdj~Qm@1rgM213sSjJ$x#lAM4pJ{G4UW51AC%wHPC&N1q z&&!d}q+{>7!iC38x~Ot?fnazln?y{W7wR30>O1;6j&Htrk?7-B!~BhZpACNfbzpcf zu?`w#n1FM^J3mW5%250%;)3G50tz(ZL&dK&6cu}|T#pxwAg&R415DmDfmfSwziW02)*xsl<*2=c9v^_yLv9ZdhjCy=9=6U%=zT#bG#9f z+Gs02+0uSh*q6U|^AazAFN=$d-S64|^1@OG!~eqjMd(;oc9vizoSdMvE02~M4+T4o zW*sRmD$8&se$`Oh!10XDYVmM#W&H^9Z?=EO@99z1wqo?T8Qb8yj;?v&^~_&k8p$U9 zC2djse|`Dks_pHm#NH!{B`6sQucoC1`x?eJ`$pE5sRzt(4WAP`{W`>GwUeLe)c01y zM-YEa4q?MX#f2dPqY=Qw3)Wt@bt#WE^mVAU#VvezO#|OUh8Gy{ziH`dYtpH$Poz0dk)G?Rt59(bd&G?67iiIbUvZrHS_(&*|{J zA+ojtxmm)E5wat}{qAwv#oE#g;|vF22dny7yT+w*T1qlFz?iD`VtO4q3!3;}H~#z7 zRCC3R($;!?7Oyo|j*T);*V+V|#eUYlY+wrQ>Naytk&A*G9W`1zOjBD$saP2esSiZO z1%;MSx~tjM`r{PE*XJ`QuiZ6sFVAxoDRO{A~ed{76N##FMYXs85Nw}tr1c_F6b z`}!5N)n4@fYDz!|*w?qyj9Y}A$$Em;!O;$>#;O+eC*0Vh8-^{-I)#TZhqQz4BEuyJ z(M(@g4^gf3iOtXRAQ{w4Tv9hY8~i-s2IP>YIZ<Ovw^!j)@yrHUcvQ=evs-Y{8lCVbORVD8S4QggOo@8<2$tz*YKI*48G{(9Vh6G+K$4h1)PVk>(>_ zn;7fRpZVR9GpU&4X5r!@8vZv(i0TK!SeYYK9mL?0u6=%o5mtpb<4=cVlY#vI;@0s0 z;uZux4Xkb(Fn7~c9#ea>I7M{|;}rZHe3byEq%@#7$fP%m0~>uz4V6s>r{Im0DmO); z)5_$dQR$a-S_N30NFh|GuVp@Dl|L-vB%r8ahfOvn4q{Om@+DF9$W^Ck%id+V=3rLW z4o)dArdu0y-f{QY$$`;?Y}#phVNuctEJW}MME3_-TYe`uQOtwr$FyWo&a*c_0YZ3( z;=)2jA35VmoN`p8a%3daKPi87+x7AU&sY=@$VX;AK8xF57=R4=rwf`fuZ?-3Rw{7i z&ye|cVQ-2uk|l$c&PXG@Y~?5OBYop|<+lsMz{=yBAuBj_^tjtF^E;0&(0B7LcGn1h zXbw_`9^dV>TUX`m-tK_qMItl=hzLoj{x$N$N^ z14eO(c@IObJT=A?Kimqp+T9%-B!RUi zqm0Al!8kLqSjXx8$C-Y0{Wfewp|bxE%-8dj&DPeKV@ z6V?moiP4y6xHm%(Nt5xR%6EEiNotg?-X33ddCNe4P278539M2$eZKm%rnJb!X&jnO z7By%UR$_6w#qSgIpO68=w`3btDf{@{pa7Qt_xrYtQNL3pm|4Jl1m;Dd3GL;UlcG{o zfK2DhWi%GJX5F=YI9tUoj~!D-g$8qyhJ&X8C|3S=tyQTU8ZIIoAQ zSW4i*&sd2??iIV)l;)I8Yu7}Kfn@cCqu%)&08f<#-xMpll&x*fHfW&wvd@Sc#1<3m zJU`eV_^>~;ICmf1YwZi1X=3LTD&ONxS;>@l9J!1gwJHx)Fu}HBeIc{VCOj4M2gWt% zJXn@z=C)!y7GkuDyMSFG5`He@XVKj~ zdW}>Gy?ANwTxj_*o|NOzO&3_DW59}wc@3c7q zSzAjvoZAipb0c7XDl(>(s{YmuDm}xjbo$oylzIJGgX~bkJHt<$d)YDqv$_1m+~;>E z4D~DCA$4xZ@pw#!Rgj3JpT@LucB>GtzenBt>!ze+a_3-rAl( zl_idj6@84UMWk>YN^djv&%Ml?6OLZ4VCsa+%B|wxC1nU0S)Dzwr?pkF!vA>Kl4a2~ z%C9t|ZZk)WPl>l=?5qoliwV39%f`Y#uU`K}eDO10<@=7)VNTLY+Bg-%GJn&C zCx7NA&$17lBg|L?L!4t+f(S<|*?q}HW2FPWKxf=-qw?>PCi|!Et?_Z6cI7Lkq8c@p zrec#_-h3@^Ub`co($Qpo+>qkEGO?(rTM4lFnzJ^9P_WsE{ks;2?gN4N>Y6SA<%Y_~ z9?IS6FElijT)$ArvbIB{N~HmME$$d+@F3W}c@(a*97g2t*HW2}a~FvP zF_+rLYq*YeRg~R#o$7x|7wKt*E)I8L=DYr?mk^rTXXE*SMNTH-o}XJK=t!zEfk(~` z$>%E-=AT7M`$kMDjeD-|l)I!77}-(?RIm;Z8b*^F(vkoB$0G5E)f`K9pKJrvfv2Q~;Lk0}~ zu?7rekD~%{NTvocIHpG>P?A4ldG@JencN4{>HU>(59RJCNk?67Elnkg9 z!TtO}Evg2?@KnJ}k2K<(-M8Pc{;>#+uEs59l-Zle^Q1R#Axb)d?NxKtH+0%Wa5|%b z#Zk~WrP>`Bp4b~?yP+RA&VH()wF=97Sb9n^BLU~-G6@{0sUL9xP2Q=q~zgGHsi}M3jv=L>nS^EEsUnOdkWbx3?>z;!|S1fX^{Z zI()8Q13`8NyO}d-_IsI$D-3(=<$Nm+WMq#|+^ao2B8WdI6knY6iiwAI@`@@dgePz@ z<34%5>rowBi~Jtr^VrAz%#ka6iLt!@P?~lpW)T2W$jwQ+RdrR)5g{iv(s(avAUGSD zvy{?RxuBGSnj)Fk9J^EK_Z^v;`D^;?<1;^l)7Ryp)^bwb_bBIrtg{N1$bc=8??-dx zlkXg98U)>m#s<$XH+&DSlC{Wo-spGwOzupwj_`B2*K~cZ_#0K7oI5?Eh5$cxmp#Yte>iA&)RRPE0*&q7w#HOMl1jlJd38m8Jvg0Q9q-mvje)j#|OTz+H&y< z4U5$LjDwlkITMst@*;)(l@B+X41pAAe+6i_;`LNj*H-ejR0oN%wE?WGQ+{73v1Hqu z&Hd(g4X9JMi`IQ1?f$RuG#}j*=v;N;Cxl=4D~#pth3);a3Vt*PTT$o~A&@WaqI<7= zv;h4Am1g6v4e*E#H!OHmvUz=zWa*9OE>eoNO8o7T&e-&Jbjw4mM; z!Z9%j9PO>jrn%Z!^QBwqN{Pvy{pgar+ko>cQ2s>oi`>T4z41bavF#3z0t&nZ%WFV_p=|+QP@!Zh(JNMsTTC*(!GVhS* zl5S|2`{|CaV=U>wB_^M<#4oyQr8yDymq&XpxMPfj?3`RF_Z_n4_CHqC=T$m&`(dv;$w_biG;F zzik;G=%u zNKuY12|9DC6TnvwsdTGC@quYU$fjfauk^MUYa#g{arM*Hui(UW3I(u8T2 zKer)DajO|gn-KLhJhKGy{KeUNA20aU7tKZx#wylHH6O3$AZKUKY2ov9flu3|pXr6{ zPN^y_HTA(#XZaFsq=L5h{WQP77gt!0vw!&|;ujipAw_=0q1adV*!0{8?b~$W4kXhY z532Nz6F5N*3tSbx^D3PmR@^L0ZX6g0OEK>t+wcWb4}5(z=xXN^jVUOiZyryP0NUwD zZ3!w@;N<~aM-9eMJHdx`-ZBYb|LlG?GnUnwc-BcA0(L&hujSIeX` z{b`=+qv)iqNzwPY49e}ye@yCqAa#!f1HmO;?UBR-Rxz>4H2C%08L=i*4G;)np}Z8L zM~Fx%w$0SBL#2q0NmoT-C0$Z&1~u`BJsEI-K6YI6asd9c{4b#!-kUHzvZa(ZagR9) z20s^&2)cb6Rh2ko{80Tb%m>=J9!|-`#MIdo!+syE494zQLj4x+V!n41W(Hd6s--7; zywcSXQg&aSY4ZOjDC&7_iTyy1iSJ`d)e}j3(Z#M{LuSM{6lplYc4{B{qN!OU8_FFk z#7Z}J4?N1!vEV{lJSDRDB(9-z3l-O(cn9j{SN;N@)%GN+RG0U>W z10f7i!eMow--V~5JP;H^&Ry%HlVFz>i{W(qR!sUeG?v^ZHlBxSZd1_cW2bXW_9hb0 zO{AMoY?72caX1K^Z))?Zd{OW9}pW3=69E=Ekm2&0fN|;BjEP2G7}sj_@MSeTSv!Y zVi^iE9WOM{hv`JUdaGIY00 zqL+^Eo-EhTx{NKZmI}vrhGoejbdk=`Rb^5=NN&dSHEwT>n{6?Y zGkz%&HQ`7FW8U}YiU4=-yC=w<$tbg(CEgEQd^~P4ts6U81?~JS%Ukr<&}L|1S$L&- zk!F_ur|HYM)>W>wcPke|U(dHm6ozB7pyQ@lo&eLEFqmGAX; zZQd4Qu-X5n5f)7qqq*;(4{*|k0*dUr4BK!WV210Rvb``cGRX-L+osl;mUck4yM&#e zcZl&_G&K&?OkrK}55AR1y3K2-@$6)}N~3pHaK^AO6jtjuGTKBVba5hpdNi^?PD%QO z8`Ad{w@G|_G6Af2EMAU)4Td{Vcq}~?HGCU^j}v{%kxY4^I4Dxlncx%{H9k9r^$+{x z>S1Kt#j+?&GmIrFvbMa?FS;h6eZfBt=cmWF!4GA3=QJv zMbJyR^;y@Ypi*{58CXA0eXLMJ`7P(aU-e*w!3k_OYSEz=veW601TDD_S9G1R&Y=WS zwrSXg=tc^k##0IKG^Du>kuWNivnt-G+MUZ18*^;&UA!1ic$)AE?Lq}oEt@3N*AgF? zSmJH^oitvQ4UW`(ZC$O7Bm>TO$6)v3TqZHrjc-+NQp&pWf(`Nsa=`a#HUwfY*_QS{fBIZvzcXXw*>d3FBepZT%a-Z!8Z9 z)NWa*BS@)$9Bw_*LC;mm)x?EYZ&qd4QqtkCr6`?wrH%jQb-^q+l1n<9;B#lw~-cnQ1BneMsQ|+@&&c+NU zz6-tn+M;1vl5@S{3Otg;5mt2pQCJz0EWMxK!I1TxtK5KHnHZOE)+8c5LLYOp`8pAm zk2$CGeOw=Xv|1!D;#ap__d?ZMOftnNWXH0O)W$q4dJz#97ybQM_$9(fzR0xTv^s%y znW|Rg`f~gh8vcamI1vrZ(H{QUQ*%?zZkjmNao=?>YdeH3pl)E-L!SUdEEjk`LNIAen<(?euG-jF(csq=z6We83e{`?xrUbSwoc-xkQDA1I&-beKz}aYS~P> z@)hq7xm$`w-<`Vp?K(^nbPDEAu4y1mN^n-Jxm;*{@2lz{=e$rYuxl+s%)H1&6qLFH z$#?x}umUdZbgVUyE{p!l^%=LH{wd#bU#2n7bqiKEupSD_Em+^sR=Nbotjx{D!QF-7 zDc^RA3qbPi#>E9hlfr*3<<~yBNC5gjCJgRACC?&>Zeau?)Nrx{cjf9c>!2rz)Kep$G1^#2#4Kha|Ue%4Ikhq0&qG@ zuFIr6KGp>UDy6{+C*=etv;7$5KH99c&5}_cQ^9fg-pV!M!N`!jh=cR~9kvO42f*+! zipXu^{sPEa&5DM2oF)3x7KQ-dkIW-9NZ+#S_}Cg@IzYH_a`W?;I_L8xQZ>1a;f>IM zy{q4*5<|lKUG!u@s?p4^87_3+ATil#*&n3ZP_V&$W-2q6+rQP=5h)Wjx1AWh>Gb4R zu5?S1lXtx>+e22M0uy;F_VCSjbxqB~fUA`E1$}m&Xr3&Y%2bq`%unJ4n^bO*(BAk3 z79RylZSvd{a*5|j?F@vSGCLFN3PC|M~q(RziG>C?5@k~E3YsXK*N}{o?p+H1_ikA!+(1zCc{pw@^H3wAtAQhUS|@_YJ3CR zUPMHOoJ29kp&J3?!J3QytHbB;6w)M`KXAU>U-cgD9#vsuvpzJuo=OPz-cGBzO|6|b z#Oh{jS^UCf@iZSBZf>zWBn9`a>f1+zV)mze%kiGiP$f`+z>HeqeDoYphx$><^Ww2d zg30=}!A%m|NW~Ri{p0YDI^d_n$Pd(6)f}JSKr%nfVNv}6y{@IPEX0m+{+3^sPeD$l zD4AJ5pMfqDQ%mVK1Dyb(+xU zJIVbIInL<=<-CIguh!{GXhj416xwt6ca%OfvGxe~NBM;}5yio=F|lT4r{Bz3o{BxI zfHE+IxYJAHnUX3!vAys9HHCF-XYAo9=WX@8YJ0zQFeubIW2}$LYWl^$C;``Q}B^Bp^V^dho?`d{s^{Jy?iEW!$hvxJAsBA9(=af zJo2%cQ$*_*R=+U1t5e(Eh)#({z{yV}TLw&SeVv3u?>%pSRb}NgFMP^Q2S7i+isKz) zDI`S9PNe7zq9Dw1`)Bmv6BEKg63zAera_)w0Z*ps&)%)#Wjbhw;8|jGB$pL2d>CLidvMfAPIks zF&a;<)(;lu!U$_XAOZ5;V&@)Cy6VcFS94kE(_ zyQy3$zsF!)lKi^Xh;Y6)w)h@0q00P!Qt$c18Y=|i0}Ri)7bKLFJ3zDAh}0Rc>oM4g624 z{M*k%-;0ZMBnZ#3X+mhFg~?XFuRlpkW)-1?AANva+xXvv$0SE8{e6C7#fFQ+#f{U? zEqfvjC_(D}rL_eVJj;G}mrLWD`s*$Dbet~7%-1&@!q)s8AdtAA3#1>}W-N~)(3%p^ z(ojgg(sPlwSGjt%Y+3eBScGX!@0fQlHXL!MV!?Rs^NW^OKcYj3{vsH1p6XR(1^Jg6 zkAx_w!6NdEFdIRvbUd{I5p6`h(!bT}`T4#)OcW*;i*EXY8?pZk4eV#!^^NCgOipBp z`H$MZz1Q`M{Z(b%2@vv$| zk)U~Nh*-}FR6MVX%E*u9gU@ej#eu=LgruEQ;)>qYm_!Zw7FN}uKIB&9^cub0%3$VC zrfY}_W;|b0tXXxmZPHN#i<8zuNH`zd;z%!|)`dCR%sv~LO(78uK!U#m0>T)O4;n?| zHPU19;*$}#d~_aBFRcN4zszvu0w9dieri#l()+f%^HiW%Y8sS-y7xK+`a!ERGJK+I zUV@)I>RKNfGJk1hPfj(AjDcB3V}l`JIc)IWXW)KB2LPHSZ0!Gg$)EK9kUBm24IoEh zWDGj;ePpF0^%~#It>D$dG`p^oqmwD-5O8WY;P16b5PCl^D6FI{m@>eSzQbkwathFK z(oyd7c3ruJtZ>};Av5Yf{G=`d0R--O@N8vyT@la}r*>7${yMseIiw>yayo`4PN~o( zJPfIvbM~$4o$w>!8WBkaZ5lZ|^voUX&?pjNfHEn3`=JK3pga=;W6VeDXyRdf97)q! zbCvE_tX5uRi4W%{{0J$G+cBWX>VsX)1$;1MB7X)1zyChkxaz-)W#ro|!2EAL<=9)& zwjA0x)%uBwYPBrYJzTfl#$n&)ZR5!qOlbY)Svw&0%nax8KT%qA+)rz*a2ux69So-o zsqf#&f2;qV1ZO#9YKv$ll`R1cwW;-~K98Wh!f>(lmbb-~p|S_e$Q8GMd~UzCibR`= zoSmeTWk5czp`v754*!-Xn1kNNWZdUq^5I8!zz<}C8MSw7)pR(JY>aiyTdLd^xYVlX-FesquEz^!(I+TGt*i2 zJI0=LuSjPmV*<2G9h#(a`U@Cr$wOg=jo0>R9cnuA`lpJ+;5`GMM7;d4)epOjL^GiQFP1!0@@fLp{cFxnZI_7nPH z=zTcgCl*X`z$_VSNIO7zjaQVjb(4_0P(342uE0H}@Pi8}$kyV$`oQJV%07OOP+{$6 z{POBR;967|*J72?;ct2*g1FW=)cyUFdPh4op?)1am^|Pr6HIeDVaR~r*|QOLwMmgB z=zpq6Ev%{DP}DMRq{GbT8IZGjz1u=SC+&J%5q)CwqS@&6NTHS%p_&I1iGtwB^8mrD z3hn|=3yC}Kh`jgvN&5^y&1aW6o#t6MZ(QsIn}BC&QPKK#NnUPdW+q~Y?7w4tUG?8N zPJesj>+5^{JHN4DSy3l;$`0$<({9&-S9nHv!3&8jF|mP=53|UxUz9BS@!4JW&@ds7 z4HxMOa4a~mq2$6%=JGR~jam(gGt!D7vy@Ab_iBP0#GQ#s6yuk2lgv$)GQ#^bPLs=g zj%y@ZE6CW`x2LGD-^X4yOC2}&I4b?HJ)sA<35<`4o~a#?D3Th(?5Wo?Q>k<8xaNB* zb)&>>4;@cr?k`toXEUld3&X^T!F%@A#^`dR$jkx;_G)F)i-z!eAs2}3jJvWYa8QT^ z0O$Ws8S-){?29e1OhYdpu zGIXmrL?YT0d6xz=%8ZE^I#^8FkAyiB^LmQDzC)4^oheY*+7}?$`!^P5!ru)mKn+a3 zYYrnbA@as0RJP>(jY1K;;vyb8R2@*JO8Q`$<0mirt4x%SQfmYheGWuzxa$)uB zaM9qFfRMAw0!?J3nOqNr zjq;$Gjk20^#L)cag_~ngsw*TwMxJ9$*&)x%J|i`lBe?|NYrrjD>Dch zBnp54%P(QkH7yL`LZ_EX)$Gnt1yj6dh2~jKeFIAH09vSi=)RujpYU|(1^Q_aq%@lA>Kh=IzNFVO3LH#81I ziN-;NW6AycihLR8&UYoPhU7@PtWsdMjAx2bu)MAaLwHRZPK#sYm%to8)_nWtWI!mM;$(iy%idkSH`{^hf0e9DbM7)jz z28{lYdUY6B(co5U>DFN#Yq;tg$WLU0E~#7WS!!00@YOWx1VoxO2++MQkm+D7G|>4M zQK5VYp6pP99hYt02a!MZANy0^qV~H(m7-uUPdW@BU2MBw!w|GL+ydvP@(&mBFx=)+ zj_Q-vX&#Vv>b$h4^WpD!$4GPV9>rwiuXI2Dv8wP6?cazVWRdy0br>w%;F; zGOtpJA_}rny7<{AcRJ>A55aI%rR-pVZy0P-PQ|G6Nfe*@#0dTknNNK818`fnx}zqn z;bM_^27E{sv3OwuH2BmC)4IIPbAWX)(mA{cqYDDOc^&|*r@GK#UN|IXn6hl>4WxA; z&IL$gIprO(*hqgBMr(X6EPi1bHgFP_VCFSY#22&`>{>wrS1Pvbqc+X%#uA-YVULTL zd{=%zcz?hj znPt%sfoH^axVW>X@RCfOJTmNd0sp<%Gc~VyTjw6_wmLN(?>9aOOG&jq4-ODhH74v3 z73PIQbLDGt@BxQP1tONP%7CudFXgj$q*t$(ThOWg^nYj$8wzD^)PJ+c(LHk@*B>ra z_WqKl-IuuZJcvE^o~6y;S+bLU8z~&-*Mvn?edNz^}@k3sHYnBm9zW zc3eT2h39+q-<|S=kGS$T0MY4RV>pX3oAt?n*}jg-Sjs_Y63`RLF$%;ei@I5AjS|Ez zPN>|Nx10`thDM116iSl;kBd9k<&c>cWUHI|jy^269{6;j`9x`Qf^}1j0 zQzQMsBXH}Z#IBG^9F&Pd72Trvw=XzEH^o&7A@EYfR*9KaFtD$~4th(7sY?`F3 zyu1u51cC}TqNwl@!4(1-DfW6^9-dYEdu@TkJGHWE8Ss>vlk;EY=jSP+b8~YO+j=kUIDyRz zSiTWQO=1v8US4fRN5Mw-4-5=2b#jH_O`d9BM9i;iZo8^C7H0k4t^biR)l2E{wf^vmEV!p`h>^!eAPgg%vj~&*OJf3WJ+azN{5n}!;90lgWIM~bW?9|TA zJmV2hKBAE6X2mwogl_J7XV6CJJ=g7WjS^-N$N8%U z(LcYYB|jE<7SpAHA9v1-zDXUBG!c%XWhrTN$qsV$J!GkUNIHEYd%vE+#rQK{RUCnw z8ap{WxB{%>3ZHJ+lKWl1<7xW|^K?!&n*0!i<-9Nxlq~JxOEe9MO6K0C{hsE3bXk%% z8tcJ>o-JLTIc2R0&1)>LeQ+KJrNQ{Gz}`37liJM&Vk_Y*i= zzTA9o-c4DAmim)Ok#%r~0XW2%yXna`wRFx|%TrO^?Iu-t+%vDt?+)iNkhf@?H*o4i z5wVsYn0v+poZgmzD$$rhR|iNYT>sslSoe2D^ zl1>BpffOP@{^BSQg|#PwLW=mxkJ4`l z_8?VYqj+lWz9T&J*5XCAOM`B}VxRm7tXq^pV1Z$Va;P$OT)YNahr9ghzviKnfD84% zx3rL=QK6I5qQ~39q^EuR!xm@_P)foz=h!lWR3E80qlo@c<3DZ7(P;GaT557x&5?Py zdN6EnA>N{-xXJY+r2;dWJ0h7Qpz(Xo$(2jL8{8?PKhiEySh^S*4~RtThbnQ_MtqNx z^$Do8x5>tB(Kx&l+snTQ=1Zd6Z!GQE6MQi`V!kpc&yLAc@n;gi=8H{ z&P)n02>hkcrwIDVtnv&kE5c|0(MjMgtK`IY$49! zr`IsLvydR+Lt$)G@T{}V%l&t3iE6^tra>n>fi58HO%FW0*eH3s<31RV>Af>sv3$7Z zUd)fbIB2XV_@RoAw4S}hwcJZ3)WyE&{VGGiS1up_d4w1vhx(DlA?@A!>xA%x6uJiO z9`*${#jwns=uFzBHhKIx4khXlXMKks1;nUS!tcpr348CXZ4wl$yx(3R#fI(d#$IhF zdELa`A$P>S$F$oTxhXo!^o>>D1L0Bkx_sbkam$}(GT|DZ;=?qjA^UDR1}3It-T!DI z0pS?cv<`8%jb9tBaI|~f)Fi`My}BfE#m_%t-vqsArUaGR*V5d%PDzv{<`M<51alEK zSTRQvxgGD!9~ohTtqUE8wJtHS#%VY1Ja;Wt|I(oM*Wc}|Dd`@1%(Ab(X@UE_rGaqh z5yECNlt+EP*~h#;@g)2Z!cB;Uv`Ug9ihJ;Skh31i&dq49|4N6(K#J(c7OvsWltS|| zpS5eCz>hAHzNr~EKYDMR)8z}-oUY30g3s*6_pMaudo6messoAgJ$nFPiNP)2U(BZa z*;&CXy-8kqkFqODJ}Rw@q5-Xc(f6H4XuRUz_XSyELHt@c+culxy5Mj{H&Ok6GIg3t?Z~B!Mhy!m}#Ygoo(Sd<2tCavgE|F-rFx)X>A~-33 z!P@Xsy+B5s-+@7BjQVQEX;#1^V;kC+v=9~3>a)L#d$JTDx%6g=|7p@DQ2#V(O<{m0 z&6Q8scYv=$WX|1o{tX$z>wpA05A;B!@5= z^ci=OZj$$A;{YnaXXCf%78H&H2wbL@-hDmMZw?uup+$9k+Q>-tiqD;P>?vVJ&@Cpc^h&~a!evhcxUk(t|B;4YziM`1>UicB)3z()R}T*f=`DDh!B zuW|LabDbuxzE?6Td;-q>bVWn?*UhmFVVTDsN%OZHW5M_3#bByy2Wex(!SMc3kMk_a zkA87vZ5cXr8}J&rEq&G|lVSoiB@wEFbH zE$60S4|_Yc`f6WGAD^o)Bpj(cGx$cYWWo%)%ChloKOM+ZWV4(7&@w~Y)YqMQuRrt1 zuLlRss?Z7GvPFcL^{b44eIF2AQH8DY(~hZa^5ju}MASY-Do&sqZAh3I#IAlz>c{ZY zGpjW-h`ak&Jmt0=Rj%Ymb&}of#TQ@JEFgBSzkL-Z`HNL74D#>4GTy}j<5=XIpOM$f zSdYZyIN=ZWxBM0#CedXt_%+PY4T^d%R`-4_U|H?{i}YOkm_<$d*RQ_`jQ+)ulnlWi zd$>U5X-L(NVL2Qyh+Y3OH)qFjl)tb6c&Iw+zh0G7Y|#^MEA1J0oM?8aK9FGI zlzMinGy8dz@&(UFRjHPWxC1@K`4%|Z8!?XXRMWSQYvAt`y(T&!+AB=C4CSw8^<=72l=YJ zrSqs0Q2VsGDc>P2vo8Mr_WOK!L=&?UTU8OP)0d4{`@!dko2hQlUHfWk<0}RTPle_w z4$j?=f3+uL*xRg(jH}Dlcwmn0!J~2mSlbu!I{V60@d)VRevKb`T}J*R)yRSNtEQjy z23u(npvIo+co{0k42M{j=g_(ELf@YKSj{N+V|I|TI(S6!Vn7CGTvrH8LpIuyBY^bNJ ztIMp5NfKUeTj_VzFk|93EHra_S|Zbju&n*_`ddY{Nk7(CVKewF4xztok--wHMX#=?lpVV`tMqQaSH-0v{ zJkFitD>q^*TQFYvn^9*a@iS9QXuerZ|GAUF4fbYQE|^+kiCTL`$-1OaasrrgzfaS$ zV5-;BJ0;N-K#o_%@la+#-CEaf#6IP122mFxA9=rvtj7fk;5D4UV^`-ppy3hv|d_JneS>=54T0H~Kn9u!@6HRC@ zzQ_Q*vuj6fH95G=%ul>?ZJM!~qq=&w5vp?D(|Mh_u!X-0d@U@&>bLaTF#A`Zjloc8 ztqoTG0VT&H;R@!@C=gfN^z`}I*rxQ|=>#TMB$V*w?k9}uhWdI7faGbd8fmdm@bT~% z=4zbhm%M#pV`H-g5LkYvV@iM{&=NjA{{4msP@gCFUQ1B&+(RD!mLoX3xR5#efpM`E z^bl~d;590BF%SG~Z*TwSBn5X|xE?aS|6A31&~h>&A>uISj-c_H_e42#UiR@gwx3Ps z-R)V|oB*B{ws+TOQc_Y23k$o`9;QKec=j_@p!OC4N{1i(3(ox54}n3vDJndM{ly2k z>YBvb#F{4!9q5I*i|u?G{BtU5YKBr1sC+L-Wd{W~~2D!~MC zoG{Ec7g5wZ*=#xbs<4H@hdirtRs@;!qrPjLU%%cSHSkyl*OZ!O>-%UbtJmLS(5eo9 z$68eWuy!H!9KMyewv?FL8F({8ZvJwzc`%>$+KO=V91dH})GS!`SQpd1+P`=9$L&Z> zUw(3xDrb$*<$_#aWLq>e{73fwCoSL@M5b{Yi~F4?-9LFiIl84(mwx)x$NfPt>nnU> zbb`fK7EM&h>X{&`K$R87xA$R{Ee=o34KT{~Lt0W8KwP)?n9(;z1r zardoQk;ULNI#Fk{rH+7qBRx%h)>8m0oGYH7tD$Isx&{VlTwQJE(NR%R(a;2JWLV!H zMabO#`*XCkfqw^C6Oh2j?W@+MJN(GI8K64N82=2|KLb4k4|(_Z5eFSNw80K_vyWo% zSbNANG9V`PF1%j{E2A}=d5AR{=t8&oOZ|}pwz&#yXp`Y}{<22UQ*Lj5(2jg^?AMOTsXd zpvE8VmpJg>g$`DCv?x0u^)&#-hnSeSLchA}AofE;b;qKKfq`Wsiq8AbC!iTV^YZUI42!N+5H46ha^^>ay~<<^l#r1h+2*To{`jcHZqfB_$=*Gy<6I9vZR(FfOaq z135q`R*}w*K%pT;MdtK(&u3U?NkPD(o25ixG*Ju}6H|TZf7xXDUs3#SH0WMH{5pGy z?9mSs7&R~Iy&P}rqMav_liN)7^DKX~-B;a^2}%7zsO&?b%WouhiqE<5nsp=o%vnv& z{;A+*F@?4?xIN;#VE60Y28CjK$_~H`h<2OOITKxY6nXUC(uZrl`-r(V2jA3sbFSUb zR4nMen*A!#PZF3H|&ZTjg z8ni(AKu(<}@%p59XVnB>?3LBjQY${RZP<(;LES{uRNx&Q;B z$v;Re(b16Ug$2M$Y@1OjPAyBAQHqO$pFvNrj${~K%+yy>#AL~i>Ck{-&|8wJ!gzLB zGD>z!tl2@?8$w3{&@$fM4?HhG(>=R{gj0r=GG=)GM9fawvn~5@}iyqoc)<%IixR2 zeM2$@>k}F{YgrFfIwt+2%f@7AMAD3-+)NjNRY@hSgAtr!p@xbI9{jv(vdH1-QgiI3=HzfugOI0Vg$*ldY116FnhK)lfb8r$_z(#Lqu>s{2tc8C z>Is1w_x8Z1#64$g*EyD68CQv(cLxCqJGmA9dMn5>vahdjb2O+5er{u3@>c3uOg=Zc z=%njr1?m^-aVQugxU36?_dN2=?!n%kjiaMUhrhy`Hwn-8BAq=l2zBdLR};fNJZ*oG z_-d#*(^j=Q)r1|zKH0HOo!0>k(yEA%Q2W4&bd;_Xhx5d?pu6VnfJ51-s9x}Qi>fimpY4X|Xpg(Py0+cG zE)JJ?Fi}A=aQ8htD&Z}fo5FbM@flc7JHxsq$BKzvV41{_l^bQRTZR0UQ`1NZn^@H0FIywSQi?{XlocXf}%Y3N=qG?tr?WC27 z(_$`56xS=e-P*bK>_GVC;e@ka(G%MXQtzn~x9`T$1JPqQb&Cb-LM6qbNqbe(INP;c zy<-#wIB=tTLqdo`3Aj*-24!3WwZjBuEVF4a7zKDcF0VbIE33R+>5WSIbf$Q`?cm@b zo0u2isquD@?(Ye1*en3nHrLiv5UC1#ZXOV^&Ep8sbCo{W!VZ!^>Qou{W{Qfb-qd2Q zlQ~|1wW*=+DVqWWcppt?2*zW(-=Xdejg7#NS&xT10+!yAP=W?|{OAVx-ah%+wP(^r zPQA8s+VHauE)?A3XXd)?pO!6!Ik~o=Z`n7uI+<$a9DgmS#rN+Ef4I!<;Pa~x3C!<_ zORFmyBx@Rr$Syp}8wgL~7`Fh7>i>eM#%H9QB9S)=EEOL4K4hbjVX z#;Ol9ThhlB1>YZ)6tMo44)gKB+=0jU_|3p9t0VPgJeynUl{17lwM5T*2xQo+=s7q_ zYHDn{Lt6naL=So-4Gj%C9UJgob)UdgFN5P20B1}uR*E1*XgZsH@9*>hb3X05FsYyW z??0-8cu<*6xTd<(4LWo}7w3_BYSU^cxwZ*yN!|HPb7{Ylsj#!!k2euYp9~MD4xlf$ zU5PW8a`dB{Ji+fH+OH-c7 z5ZLq+BXsJeadL3DJ7^71O>J|zSh!eQU*B9`9}L`^GfV>y1w!bNbD;=eBa?gXT`bq(P%(ZdvU9X__UOi zCBf^|Ew(I^I?JUsLswajO*OL*Exp%!6_K-e1loXLUvb$UQVmv=dVb zo(6p}avr@auQz>COC@i-J-0qp%gQ7@QZ_x(-9TzPX`!}O)5L%&!OtzsLQgNv%tx>L z)Kk%SqzTr@W7?suvE=p?{%TU|{(%fAYY_5FTK=2_IkoE=w>sr@#O=42Mgp8`tSxZ( z{7S)TK9evqF5fd4;@%TMvkEwbHrh^D1E!#^tE!Kw(9nKRQKQh%sRgI3lc)CzmG*(O zdVVx7Yd%9LR~Tlc6oyc&sC#KC5&Hg}?VOoN%_|o}~6n!U`ds%Hh$~v*w{@$fM)Z#v#4u0h*DwPq`bW_s5Ys%Z5+kSyoC2 zj?Yk(y`rLjn#`^Fd?K?Gj{THFx+Ay8-p-EpOzPFjAZy+&ecb*SM}fmVa-xMn>hw#p zDk9L&b{l|BbHtiz8Def52MevJxw#s9;M2$ei4^nEme>bB(&@Kwo-gSbL7&k{v-C1#_6eZkvZcaJ#swuY;JF&^sKr`W8GgZm5x73x`K=rpTCf@YpBD0%bo1Y91;pKD8`2UotOA;4Rs_*e&USF#x6q3Z zsNcWk;Ko=~c^fem^}AcYfA1`266_XMMEH>vNNupTsK0mT#$xdL;^N#P1)v>5<0cCwDi*C30RMO#>5pw zoG&Ub_+d~wA@0|bH2tSx9unng6@I^)sBfn9$ux7WPjPuTOQBG_feuOF6TAtfaOd0N z9sK6u1r#?u_kg*$v$Jjj+I58tE8P)_9K|%W#3cErv24EEmUEeq-4xK6p)DN#!eDi( zqS~%+yXs7YIybv&usM*uV6ic2{^9#|8{=FFo9bueMIJ8sN!jsY$&3V*&0l;G^*0^TVsu@!hh955&k zO$e8fQd2Np#C=*1Z0KiNHJh90xqUS*!ldSp0yS_V{#2&RlZD`(JTvst*SA--AMVJs zwjLcE{25J7N+bP?ftIlcOoQn#CESn+4=j`;Soa)&4ijbx%>u?^f8h-MIOFX)#vFb~ zL3%IUzO(2+Z@m(sLeDvmwpw20FD<;0sy9M8=WzSGWX0jCJ5hL~!tDf6wWDBCIWUv= zvELpNwdC)%oxs@eFWH!41PF}A0ms>dFfR_ev^EANpbU^X2M~#VwaML>5}oZGazq^7 zlIABxC29UO)XxHVOBwnmGm{ z>Wa}TcgS6+Qb2WN5MtU_K@gGZSGMb`@B+cj;is?RXLLPMJM$iqE8^5~DSr(^M?<>> z(;7cx_$6esVBON1JnKB=S5C%x>9=?!t6RsltfDSqcpi&A0hjOJUe__5oxXwVE_^n6 zo6RUparI>i7FH0Wntx_RyIHR6ckWjjRNK$&(^SvZZ#hXjK`u21_2ajTw|Nrj#5Iy+ z=5`t}z~Jerw+K)b55Se<-&Lcl;X0cRah`j!H374ffp_Tl7RGVW+}vFNLgzHn<9`P{ zk8ma!jDd!Bi7;v*XG(YY{hb-!(C`ZPn#;%jG?qD)EeimC=a8aeE;Whq;rcUUQf3s6)ykElZ!TN z+#U}Zg|q!?Fr&vU`u_ZKQk_c1-qG=3OO%GwlPe)k%4xBU%+y~?@;LXT^z6&teDg_V z+yc-@W+S7{lF{dzPEJk)r)I!mO{c8ews>bY@+L_lWpbL< z7*?1jz}Jt%V09hfSmt)ltk zgLP3*f6@KYI%jZ;9+?^`I_rF}j9k(3@3M&onhrdrwv1wFbl?Ldk*5L%pW+dWR!#7`ZzQO;P|d{Xsj!gEp(w zQv^5JgBT7XP|0J@cESp{BL&P<8H)-7!7}JqSu_ixKBO3;F)_7(L|$%(#|E`Obe-1k zl^!9nttTS&ey0*LP!^H;ospOw27ruqsP=n)NcACSqNT3tGz-rsY@i}`uaJwG4qB}i z7GRO}6Yqrj67*Oh>p^bd8^%(n=?(=(1gSkW_XTH7F?jZXL(??-UOD}(Vd8C-I z-O5k!>*ZdnGnB{S*!&Nz@7_|LRNS#a;kgM(Z=ryEk{v-8T;4DRC)e)EFl&*GHq4BS zloU`_CTmL1{{HQ}ce*{%#oseVwT+x82KG|mZ48Bg72qDR&{c0c61gd0C2I1XQsO=E zE5K|)jk!A!n2k}imN7djStt#3&#ilF$x{n}H#mmmaG0o;dl12XmK?I-GG){OwfMKwME060T*nYQQ~jqMaQs_q*Xm9l$^xoRlE@%h2$ zgSUx6AN`+p_TBvzoQ0PXQ(3+-Nv&?cyw*+>aC3WlKpiwAa}PU0IW-E4hlD zSS3nccD`;)&q`v98|4`w*2L{=Rf-|c74erJi!3N8m|t$j48v4ljPA|*i~F~aL#(;y zNj$%fZ6SogQvuq=<(9lFVif0rAh+c#gSMJQrzUr;5{Tp49mnkjT$jc&b zLf#NzJ0$JE?AQU7JpOIyG$gfKODnBAKS~uaU9s-gJl}Xx0-CIdg|poZ*?i7PPG?c8 z^PU{mymk0F*RZ>@v$J+h|EYsjhIAVVP((HEkT-#WfhHy>6p;@lz;CyD-CMKEwJaxFjZedWdRZ6e4u=`835}88XK}v znTr)D*ilt|Fft0R5Q@0=g3Lnq$23=rQkgVJztRx1G6p0!1!yRrE~o$o2nSY|cGi*p zFPvgx-@a?9c8ELJolO4K{aMRvNobpnhiCq_FAYHAJNNu#vX~$S$8}(3i#79d6B5kp zX0e`;J0JIvJ=_9(>Y!%e-@3fJwU#&fi_QyEoo!oW`T6?KI^NuF7oh9k`69no@U*U_ z(d!$L@-dyxJa`R~bapWL4@~LbZX^QQ22uZ`DU7PNy>V4;O4opaZ}x#4ah-q+amK`L z9dJ$_+O2A5=j2=isKva8tGv8_HJFD!9`2UC+M(*!gX^`m0~;- ze`gXAnX!NYlJMJ|6;tEWq3EjSokoo6j+I2!K(Uu=GZ=C~UfV@!p+-JefLC$*?YL^y z?f&`<{_Vngn(<$hsVR~0(U+y$>+vD(&JW&ahgD6d58QWC-+nKJ;$IE}q^czE=@)w} z?AiM%A$?Q&e+&J7;O61}P(k0w#nRjRqoU$J*Vx;u6X0YbRcZdMKvz*T3%&9ab#5_W zkgMzI*4V?X_1S8?l-37c_Qg~p65IX3BB^T-^_!m86oJ&Eb`3#>ebqP~SG%~+kEeEa zcY&J8X+M>dB%redBjUI?In~tF8)k`Cpf1ApMs33^Sjv(tOiaD3NC;dM)b?4Oe#9=8 zxYrQMzy}-Sd&F13r!~e0>~5PcYktrO&|DGCK;drfzkos8w=39PU_jBF2M3)Vus09LG|n%M~-@X z3-50?lOAP)!w!TsG%OWVuJ#3IFE@ib0V*9U(ZB`yLRpkK1> zI~EOSj_k2_{9El0a|0rJgF-hqJI`z9b_#|cI$Zbd)2dD6M>KnFqWQ=eg907-9y7jy zMt@=`eWGqpv%RA|eE}fgqZW^c9I2aGK5&0gkrmEF9Q*@~BlWgiGtKVTEq@gKR7>C6 zTcNztr%;-*cJgh5F4F2=`Db;vRFss9K@WE~Eb5d(cJD1L5^Hw5yStN> zDB`ayc+tvXEzk`YZea1iJ`uaqQm`V_e2v9+##)PzA zz)j`4qmm_PM!SH=9h9w#sfZsPMNUa0JxN4D3yxJ+)=*PbQHyP4MnMLYJ)Zel#pWu2n=7?+guLuX(BuW%!s#3JY8R(KWtpJK|kE|_0f zTorfzY=Ge~cLfx`=_673?4KlDMY2&=vR~h9F&zvhNP#A;(OjU$GrII}|5q-Fj>2!3 z?&L)A`}dC@pl`=WLGQoUg&2|+cwp|+iR)-DHADRrY%y`tTqa>)uH&~jw#~Dc3YdLY zJ<+bNPrpPvb!;BIt+O6|#S`SU3k)_oJ6ri2;)Up6lwItYo}LC0l8B(-WQBjVc8P_T z>*QN#65|22r&8O?5vIT(%+>J~-6fiDpJTyUp}^Ont=rB@dm!E|dR7{5QWniWLsEIF0ATW^w>@CjpT1S1lI1TBti- z>C*fMjSw;fe8CVPo{m1F$}r&tZ1yzV4`erS_X0L^q{0Arx3jT%Zh9NdBi#9LU#<{s zlEW7;jS&=Jb4x?))Uln~{W-zFpt!Xei^*W=t5-!*(&*S&wR`me!GU}n z*X2dMAt2jxH#_?T@pUcRaBpbT8a0Wt?Ofx+YBZ@k&X7G?PxxSVv%3qdawl${ZuGB? zUFJu(C|o_Mb@5py+`Qc4?2e-mb^YB6sX$CtA@{0)EyuHtRl^|B-AI-q-2LXj7WB}4 zW@bydc&;b>2Sp+08h-832k0od7^lWOjSNIi%boz5C z7fd)*R#8!b1DS~1A1eoDl&K7tW$3;CN@D#TGTWoehNfEp-jcz|P(K<7k>n zOG|Mf&2ef6LsO*d`H9?EjgL zK&U~>?$M_ba0;5s6y)yyXW=`>e0ZPm&1_tqo*}e;PhZdn`9#zEN>LKE=G;ho@{GD$ zfLzEMsPNZb8j-#A$_~#4|36?(>G=!q!P5`vZT~Uy{}>(_;a^4*X)fbROwgmB zHPAX4eP9H!i_t6Zh!ej@QI?{wz?P}7Nsg}#g&XhIR$JBv!IHsPUu8}7&Id!V?a@w| z@O*XGu5LScG4stoK>ifxjD)#nj%;k*UBHwZ0QAqysz8Y%qx;SZB(w z$fXm6tJj{U>BO#vp*@?c5e{2<=X2qh{byQ8;PAzI-VG`~JYLHlFcdDtz`T+?}0OU>2@WGCWqe>8A^0sM_weV8A7Ob2fDkvdg7>~ ztu}`xpUdUXDHV0p!#W1szyip^!mkZqHC^naG#$3SbZ4lDY$Cos zSW1ZLD&->FQDlXG>!?{;vR;a&8(;EYNRoChm`X^!JdD8vGX*ZHnA4v|vjKA~*@?xN z(3PnvTID9%8Y0$TM?+s*gN%W$`%9Y2<)?hbIw?2;FEOag&FSMBGe5{Rh_WZll)prQ2U{c#LgeJT#^8B_W$Ve%~#d zTEUpKac~*2AV|0d^QNR9iXfS*ko-N?M^xO&;yIf^{B=Snbz%z9G*rt3@vHdL6t|>f>%NU z68HMFW3is0C=y-P=wiOqpwcG1UEVSFn=M5DV3)L?U~$bB*O*JrQp={VhKiVKMfzN5 zeK{h+vS0TFSBW>s%FJ#*+BAE~4oA+TSZT0`iuoP%GbpRe++_XC;Ah;7>|V-2gSXU@ zS(8kXn3ek>u936ZH^o^Cqb z3kO{tZJS!%cWnmzH8x7Pvfao0+?+Nh7%7}dhvT)xTz6_{+_p@*1LKTyQ@#Z)ZH?$K zK{oVOW@wrq<4bAi)#-)QwUayGwI3~ppv~!7y@~I9zEvWN+TBMc)3^Ui<1rQU(3Rvr zUqo&$Et)n z&M7$$_-N8Fq5C;c^p4)P80%%ROUX8O@}0w>d2skUeIK1}m~*d76?fvpl+)v=P|KJB z?+$PPO^q<5`sq>n&>+(9N^ugJ(GPR~R@xodRZ;pNpr^EH&}OSjca<`00<1$%Ba9?SO3XP{E$vU5AO2sQf1w7yi_H^qkjha}g5=%?xwg1^L z37+_Q(&~opW7pvhES&QQa#}OQXPbh^7`2xR8VxQhsYq~&&Wt$8KWm!eNw);(d>)(d z*-oLF;N8Y#zr51w?|G}@XoNbb)2*woh&K-WuEFEroZMWL0;%j`TVa-rnRP5Ga1KDbAhTQGjcvV%jb(Z(iuzu8m3T$W24CSwq#BmCwzCq zf4`C_7OO``9W3_m?wJE8GwikX`IvrF&)Xqne3Wb~R{BQ2LB!UfA)w*p_nI;-l{NKu z7dp+?0T`T96yC143m4hbNu zPG;pQC>rHe7cloLIo9&-QxD-IlYorunUHK3UH?~^vcJ=eCkzqKn!0L1E=Dz1(z`*l zfEi%UX00V!^&ZQCd+xI1Ms*Sz`JV~Pr+Rd#g5G5wkrF&V*r zuIjvb>1jE0AL{HDtX|c#Im(I@6kV8T9M+{Ih$C9V|37)4Bk~#cN3ZLBCq)?1cW*tM z0LKn`Z;^N7i?6ynjS6mDix!0cls;^!xA258#?7Pt zI|G;wbKNqF`qhHl!4fyScS!!TD#Pvtu=}r{QKS0I8ua%yb!pBuihqIwNS`%H7VP2< z3Aq26j4>b$HWo21t3k^?e`cu`iW4XPJ5O1J6!GT9@7|Gh-Mah&YwCR1{Lk8b5Qh`( z2>yGGpDdTAi~cVi`aLZKDQN{`rO$RKr1wI&o_>(J^@>+WAkLZXe^xDed#L4x&$t;$ z+4SQ!qqT_rU6kPiDT2S}^!&PhY||~AXvyxG@E?ac zRXbvI?%*bAW%%uriDWpkrH!lHgJ zE%zpQH;Iqv;#6oj8=YmG8S`HsNGVE7f1(oKXACVOz0MKJheX^HejN2uhG%5zQAb2J zOI=+Z7H6V%_d552HaGMwafumDt^2>nbDJ?WoS6Re!?*YTxBhbp3^-0iK!`(c_|k!p zZd22Wwli|_vN{?$>l8O@0~7>*Q}_GtxheEkCw1-H27VH=iY&N&A{Zp|e?L*F*dwg# z$;HWVhMPU53GFZ(R_=0sF}zs2Jsb{P*g_nicutEQRC$f?&boGa-Nb8_A46T9`z}4i zna86S_YQ-`x~j6k;a%hLsKPnF+N;ZxM#%moE?it2g2-n7Fre|9Bo#+&(JB#dh_|UXQhd5%vZ)=0& zG3CO(g`ueED)`24Vj}uQHr~&Gwe8nO?q9>{l(zy9iw6DEimj^DM<<*4l=Dm*PLbMfy&fszvC9c94XD55;6EPt)!nOfe!Acj%+p`4j? zSKM9i3z3Efl3cvs#9{?){NDZ>+F zzJt^IK&%xe>(2>Qc+1$OW6YKN`gx1?1ZcHKEmb}NfZCy(EvZW$4sY9yZB^=WA=xTI zExUfAlfBUz4#@(4DvjZLKq5)0v3c@U(^qKqqlJUdxz{~%KMoEb!_QsxDOOKJiQekV zoA6lruu&8h<6^%NOqhFr^EQ<0TZFg7w3tZoz)91xv($oE=y}ulREZ5dfB1+l)DF+v z=K2j=jtrKFo+@xnsqx6ni^ST0H%#D{)G5yBgf~8E68sU1Dwq+)`z@|FINhzg#|B^; zCiv;sX9is~a`aoTX4EJ4bVHuE zf^<3+YfUofY^d?bm zL0kTd33B2`N?lw#$C;w!+A2myOmqFyvfKWo4JhejT$RT+4Poj- z)RBp#oI%C6_BAqWf2^y#hc^ciabl{P)er9Z)2&C4=%U_T8rT3ob!~~c5RQMZX};MN z(}F=9&;A*Is*^R`0?W~1lCXPHcBZ^IVf$)6cEs{Zu|_1ab@%5!zQUPE z(and&&~SD@ci%`nTpKDMSi>ca`*#hc^ei|vn{v-brnS-Z5{5T7-Tr_b?Vq-sSg*Vp zKZv}4lWsH-%-s|~`M-n~yCAQ2_Nx_%2&`SKJUrd4&7J>x1z0!`5%9d`dH(A8U$0_f z+**FF*4%n(77o^yp4^&V7M|DtD>|FoT662#TY1_&7Zw!YRnmFhq|@9G{D&v;9~9K`CN!w(Z$o+-4)YKR*x~uniZ8nU@n=vG^ zSD1CJfQm5csng4l=h`>&!OT2eAqw4b4+>&}~(bv!Z0K1ZG z?;XpS?#m+8d;^aNG-k_<>(EyCSkld#gTa{;pF2;FZfW;9JItuQ^RsfCWCnBKPFQB0lCX7eg zk*WCZmqAeM%U*RCyf?ROFtbGMVe!A=<&M?P`g)asnmz$mXxJ0wn9v4e931>yd^IEyH={7t)2j72&T9P<@q6zHeFE<% zMw^kO)-NSVpBQh3{PfQ}&_o}QQ}eZ>%(hmT>d8`TvEc&sQeA&uWB_>Fo;N9#z=4|~23 zVTw6(_wso7r=WEWp9*4Hzqr~8lK77=2E9q$zFz2WbUh#4vKi{^>{QOT==m1Kq}!p+0pvy!1-XWb)-Z&&mt;1idls9cw)keP|UGv)AK_Z^Tpn~wn|%C zr74@j0cp~q+;Cp&GRFp;*alL=Af_SkR7|x>M}#nN|55IRJ5fm+)GM=2jSe{(#Eokl zZ-f@qkyHI%CSKHM_kLU&=~H3!5eUxoK9!4$b*AZRWX_L}2lX+yod$X6PN57V4*TZcZl2Zc9&e%_G3PD|0a~(%h8R9_X0(tkMmJL38 z*k~6zeN?V#FOzt1sh-@Wkm_#CQwGoy{N6(opQ9_Y;#PX5gY$*k6X4?f$?hCQGfHIN z2`h!m{%8b?m^{oiLvbP=o!|^v@zjyOCWv$@F8Dk*%eO^+2q`ZQPymGY&O*)c8?D1W zMa`eLLVhYX>sN@rvU1q^M#K+DC3}lWg+G)spm2aE}58`@zscxozU z>uXO7Hti;`kZ`94BVfeulZnYL-q2DGp{EUJ5Ut#mT2o(zpA#zts|MuTq@3-JkcDc_ zk{KvJCdp|Y9H3&bNZ{l|HYN(N>DXAp#k_drTlQ14083nur~65cf>Wo2Aw zz4e5;uRrF_(K==d%gbgAA!!00T;itty_?^l$|0rJx^ftWPzl>e7_0)OCcOZ?bJM7W z5$D+?^yo5;{Hk0X*jgP``@3~HPIG;mpo(DLFz;~cbEAbso~eaS@K39Ztaa!e=Uwg+ zg52$XS4uG*UZ-)Y8aU#*H$-H{^JbkajyI)?@Wa&z2{I@iizL(94uOt)H!<+@vkV#k z?d1)ReX!$Xce#<*@81cQl9>;Pv!%+$n~f(wXtd*{i`@$}gxxFGF%2CHdRbC;;C-UI z9B8=c(C5&gJ*Acx=zUOAH7<6Sked7ZT0ef7kj+BbO8@FlooAtd=N5Jjxv(I3(HU;N z);|Q80_}qkrsfT+XOPvF>+ZEa^z`~P%}?C}W$CMouu@^XAw`;0^x61o33&c$a;jws zvHP=V$fRy{>>IS~h(U_W9i7sH!x4whgTKb%#&vTMunI#!!*9|2bp%0PWgGNYjdN5E z5NC&nhc}y3M*U1Y*uvfQ^Il_5J|1R5@7lRNy({>pX16hZ(w190R4UrAnLOuSkd-NBx|Asg5r z8)E5Jh%k!y0TDqqZH+rQwWf)QRJ`rd(AeAeZk%hk${Sy3OmC`tr5B8pg<5KzL9!@s zDFtMabG1BnC`|~=n5p`4@~mupR!Ws?#Io&ZWmxyrUvb8UoV)!io#Ne3C}yHzGhiJW zFs3ZxOn?SlBSH){sN=&t#HPD)H{@s0-P@rayq7BXGbFI>*}*W}j(}fz9m5o~yi79? zK9>ZsnNObaSg!4eKdRXEVbrLvVyG(r8HwSWfR+`ljx^XxyK(n9PspL2L&F@jH`y~+ z)GkTBlpXew#T^fSR`Cz~(Du|q` z#IZTzvYmw@m#an8<36zh*PYIxVC7&F_`59yrqQ)y!PDHzP#1fB#Q9%b-kWxM=53x; zl=PRzhcpKDD++5a+WCX?^kg$C&gzpm%WOP{WSp&xharB*bE9=`fBH)kBTr7oH5w}0c_&o%^iHTBu96S>xg?Bd3V9?i&U{N- zYrF1+=s9&*xVhPv%pkR{A^Mb+m9sFO(*x+va4*D;I_;XCDBqrpeI6kz!$h%0Ns)db zPKHYxxpj7rOsawOc1b&Fq|6s*ToMIQ@f<@!gQNy24a2!9bQZbY2Z6tG&c5*JooL~{W*g! z73;$KW}_#H7mey)#m;p67mLuWgd__YK&F-Ui^$#G7Ezz!3gG~k!TEr-_6r|Lq0BQ( z+t_jNOe!ehr_M)r#+0<1TGuOOoN`@ya4x${VbDBz8+f1uy-0(skF?0j(+(hj0c{^e z(MQNrGdefaMawhv(fqfIi+N-D_^ZG`OeZ6XI2dd1K8k$wQqaPlm5qxB8^DO`t(nYv z{@@q2uD%dQ=3aK?L<^-y)=VXDPaF=E4Epux201zrP)b?(HO1ceNOLv2`<#M1aSoF2 zAiLsyh90YzrON3%w(liGlB&;7T0*e^4l&<={Wb(4$+<8P8G8o{Nc07I{ywe=mk~?MC4`^0?j)H3ZPDy3d29pODafAnJJbVeCRP zA*r=5q^uKXzkS*+=RO}6Q2tYgyjr)A(Vo*F6&aV65cR#j`n9N7bL(tl+7B=*y#bUf zL86$sHq(T>rt;C45rcu2mgm9Y3^)Ap1uN^!I<;+hrq0Wm6XnU-`el--UE*Ni%-2p7 z<<>hruNOS4>)AZrfFRE;@5B87p6)9H@AFF^tWV~dckeI@JVLbATc_jX!+pl~5F{2o ze5JUIfTJ9}x6WL)!-fZ|QDsw?_2{X21H^m<0vFVg%VvcQU;Jv@rvYxhQT*$%1(=AB^w!f>alkk{&5YzFjQ3uCq2*-#Cg@Etp04=4YEY&my#&1ZNQ(cDJWG2Zg= za#vH_tn6c$ZPapleY(dgYaqK_Z%NI*&DCSvhClmQ?L>y$o^d?7#h4;rrB`pK$ocX( zxom2^Jl|5{wH4zbPcdRGF9N-s*kRX82gy`5{qgI~(W$^s?th^cOq!Z%tCF5*>kOKN zaN15yPHxbMh;9DL7vte!fBw8syKG#*`JR7r*NDQ-fg%}`zbww@7hu#*FJAfmyI!^L z$7oHY3ytZ<`8jVJj7u}zzrkzQWxhEw2q}ezOEg+d6^`AP41RRchNT-Y`r*0XM}BpT zp`;tex}KFk$)#(iJH5<|5UydQ;LgNiR%4SHz@$MLk}DT?7g>nJObGf2xQf6_(^pC=vz)s!f%0vwE2pYvn zDERuSy6cuYn7hu%D96q5PUwAVhPUlh*~~AS{jb*ZUd@zI2kXH9j7lG`m^23XmTVP9 zU?fWxsyt&xX>Z_BgeoDk#Mdswk-OTx8#QYV+tWSJcE+N~5O*NVjZAd^Ze*`NKxXO@ zRH386QE^oM4@$sj!eF5?-K>U%pc)j^Cb0I0x0a%!A0VF{AtU_p1H} z%)u~fB{{>;ZU0wOsm@ojjcf_c{5cY0&Nw~KlaCA8DoU>M--otu;Jpa(*$O43^uR2K zM$e=c4`(*HW4^uS3p07WL7#A#IFW=HGdEIF$dP_s;y$)h0JIn=?5;pSsH;nqKt@`# zci$&IV{CBA2-w(|i-s628k~JM8l!mXs~T9Ai8hM&QGEXZPBZ^={&#~A`}3R+bqOPu zsL7J;*+RrjBs-f@@R_2Po}T;a1EK+9LS>inm$9+ny25?j%sQGe3L@X+J!wZM6A%y- zsm4-?+nh}2((V#(o_519Weilt;~DP`h$x1}Hw{1Zp`#O2 zJHFw<6%-)s={GiPJwMut(P%U69Ga{4pBy6cI0j$~nvJ@zI@Re$E7r-uOpP|XEG3N9 zgBI^sY;2VzgE#T_CIFfz5Ov6DqX>H`wQ_@(!wdR+o2#9`TZ=g4;RA$c)6S&UX0k%7 zV;$dawramTIa;|bd$BsG-zld>0Tt$qxo*7>n z+1dF@b~pJ^X%~spWQSpD?FtPTt>l>*W=ifv4a#g0=F0Mc2M?A5u^YwumiJ?e>!Kh|i_m=2&qPe$ zc+`C>O)i245cv!KC>5xQw}uoWnE?0p#m|}@8k28-w$HVqS6iB9PO*N(NA4K9KO1Yi z+iNI(hk`3=>6W02=D;9v{03o8L#p$O6ze9KLG@L}`h{UC%`7blBh>k2spM0MCT@Bd zR*K;B^^oNT^f;0F7w4rj0l1q9MBjHMi{A&fcy(Jup*m$xyXkDwy|u#i@6iCQ=EpEYDWO@aFr-``d99Mh{_WJ1vEz?%QAa;#ZKkO} zhfUvQ!Xs~#1!iQXqgec2uvf}XHpuC_so7*h7b6^dgPvR!XhEE-3rt7R1H3w+$E%d{ zh76|@rJs$tOY#9Vv|H!jzrUxZK3L(Ur=yzXb;xQ zB!8A^Wt}|wUBe-o!u~z7sO}&y?__&D)d0N>fH)uRqlszJT{|1QnP;Bno2T1lH{~-8 z_;;;TaZU#2)dCt#pR%ZrOBoZJe>Da^#%%XCm6tO@y{M zEgMrhw?%()+ntP+uCnho>^p_(paC=|vRZ;{Bkp7+WKd_L@z6+N*9Y+Mf#!q*G2Sau ztF(fz@AywkUpr>LK!^n%3T;4Lv)+)M3bdp0-~3_nV*UMrsSs8S>?%(xAcy(}-ET5FHq+bGsFfU4F(R2}B(ndozu z*Rt8sXyu{owM~TN`E$}}UKSN4=P9m$*;>!L;mfOoIBq1Fl4cMf4;PtUyF*nATE+J;(@P^1Gnbt$mC+tRD7!{lBTA^Z3{bDJ3|W#w_2L-o?!z-NY*cY z!n57he_4Mivn-CQ5)ttr@Hzz>)0ql^2fr+lh7D}C=H|1gW%Ezsdkuyv z-#55qf7PQKTWu=h_Q-x)F(A$5>&1?wZ--3k8wX+}U#0nO!JOPi?&zgO?vDW>Gk@TR^y!SG7Y4RB~G-xV{lD98v zwA7%=`hvccU@FSHLXXx~*ZRP5Ub4|-^*p4dhyROmMeqhg15GZB=);re*#k)!tv!MM zfuyNj90^M*8ch-#I}zB9gADg=u`O;QqEkl9sTMjfp7W$*zSnR)O|J74d38ykL?mAr zqni4zFA&SvJ3-L^KP-RQ%uEs8_gc*c1RXpDlN}c-Xr*{@vBOkULyY~}R1);gRvL6d zfkEn?0G>5O*f_Kh209wov>%mAxZZGFrd(GjZVhvDS@+kmtW93Z90^u&bf)!=l(E3& zt<2E^MS~{qTAko`F&#h71k!1HNt*QD@opU`wh&p(HCcxF3HcGZ8u9Wz=Ur?%q&w~i z0((x?M(!SM@b}GkPW4Z;TjoHa)V&bs)Ei{mr}K+B(A`5YYV_AkLp-7tcI)ie*Yd|$ z(ewru!ZFk2w~+v%15Gzc?bhhrL&fmtb#Hz{2E+U4q+>@Eo&vsJT%v_OO;px>lpFQU z-+@fq${&0E(etwykv?)XLDwtg@XtKFFQhwHAGY_!)Bmi(v{;DOG2K1 z@FOqSpkK8Ja@A881R(5UFRv^$s3gcOB)od}aOVz;=nZFkr6Lodb*L#$dMOVT6 zYYJv-7B?Q?m!XViO3cg-SiRbHKC8}4EK6BCALqR4y1g@Tz`%3t0R1Vd8NGXz4Gzp` zdRVQJ@wG@Ldg%|-XaI5~U%_9v;Cnd-a7j)>LqjnzP^nCZwZd@hWb+Kdvx+}nJyLOe zRYNzAT}jP9hi^_ZuNI~b10m0s4u*KkB&T1QFZZ|@hc_HizwWU7G5nmw$Cl*y#)3(u zbhB~zncstFzfb(*D_ywahAvEw-FDY@=K&W{_Tf-&$y&?KMG$-3mXZ01ehpP;)q@A7 ze~MUEMeviax6a%jh|FqB9k57NR<_o0k|%ElYX2aXZ~3RyHxqHc7Fw% z_G-z*8RXf)3l1+EDalCtO$33iQt7&Y#;kqXAJf~Vm2ID|`Gxv)#ey2(k4CP5p9b~% zkr@=DjJu6Rd(N{G>6|6II1*(wJN!a9cddNfNoK}oWHL>QogLb^GMl3oB&ukDyqw8x z{;dX9(E8@~ntcHm(lw5Jl)JxrNCAZa^%J_dPwbZ0q^}uJEF@1tfn#G(=JIT&7e#5O zkaCy`jI$^RcZON(?D_fW(m%Js>-`5uju^8QTrQiTjavLxG@cA{*1_VV{EEq7;oyb(rVu1R`^K( z#%*(~FauOmmfr-e$%dB|%V*m!=EDs{9sAeNf)yb2VAq|nY<@x%C=16>`vnxEa@;fC zLYPPWB|xj+FxeAAi3L7umEv-9buvfAg*M0{9{e5IsY~ZjLVE2p2p9{U83@>nX$<2+ z8Ehjda-1p-QpLX&01d}#Sq`*R{%}%rIQjf4a=e45PPj+rLMP#$$?r7gVQ$IG{sFxd zyMrj_$#|DR+Y1iGS{yg=G&-Tn4O(;-w+;&GJX>~u*ehH?YRvVOGBR6Yic9$_KQgO=2C^e9h{Vd;L*9&a}67GaS zH4ERMj4f3^xqEjgIN})Y|9WL!z53aY#La&4U{FV37vjKMtJuFVXh`JYNwu~#dl9;J zX=%MO+hyZB%ynza^k{p`YdmM+G7fZ(^*lh$yXjqV1&fhr6}l-w-@znA*d$h)7pOrs8v60JcU$>W>{K`2C@0N1!pXI`z@k3<&s zg(vdbbP-Y1$nTld&u}=GM!E)21KAw29op}6CP2RE)Yfm)5f;pG8wS<&{ZNF@kbm{8 zZZvt(t7(V^z%#M=H_!m(vdK>QI4eCv4+>85jjvs?XhEkh5uJe(-`D}lYAoz8Up8pu zYi-nin~@BG(5f=2Ua z!I!5Z(sA-s?_oIEyi}BIKi#-Ng%iP19vja0{!~8t>Xtfum3io|DBxUF^*= zaf2{wJ~_Cc9y7A?G(?8~fWyZ}!6jzyg4r)RMMMDJI9I{45`}Q!nke^^coTZL?GT@w z(JRx*AAfM1T3%`2Z#?kQcGY2rm32O0?^OXhsYgYDp-HM4A31r{sEqf4)cja`9FNz0 z(iCKS6FE7;{?p{O2Jd~8C4ILI&C>bt$GWla8No)pb)LXpbj5n)$K%w3@bl^Efys)7 zQ$;7|BwTPpaB;DW!PJXEiqzC-C1v|}o!hvL4wNXAB~*nVYIAY&F8oeQ{%-_5>6p*f zS=>C}S3T@P*{InPC19Mv2ds0eIf~6%x4?Wh#7_D9?4FftGbTE}-{HD)SbLSz6qLci)*vIGXGGN7A|qqH_UiBjt`_Wrb$5vP4;pIJ%xa(l582* z+8-`>4$-)SAVaA0TJikqVvu2O%}>wcCXM@kFb(hG2N~{}tb&L;PlSMfwups9a>qIo zA61GOd9@Uzp;+v@%j!am(Zgk?EoK=W`%es_nHQAs1`zf4Kg8^< zi~C08$EzU~$!OX`uqx5d_$&(gzy9`#j`Bc5p&A!u!@*WcT?N~ zGzt>s`G$;>NO16IYxIh*sGw6q$SPFOH8idcWPvEjlgX*lj{Zcms$>*FoRx71>}hY6 zwb^4W`IAJ~YK!)u40k((H$YT0UX=!9axx68C~w}{rV*XN1TVrbOit8v%esuqztxL+ zdv74?vZYznbmd9bhITGYj=VSiOu#deE`VZKp99aWSM{a=$V-|9PZX_BUz&x{T@-?d z^U0I+!&_aitSBU$-y&?shRQyf@K5rrAE)@DCqX!2V|P}%+kLJeHZTX@;oC6@o_h9l zqqC?zOUCVtHR_$LU5{Az8~Lj*DCl1tIEOZ~aqM zDYc(d#>)7@=m5TniHV90exJF)m5;&}QWXzKqdTpwtv%j;lE?ZJo$vP3JQZJD+w;HD z6@9QiT8Kn*!xqjJu{ML)H2%|2 zyI)mnWuRw`)5lv*Ya@Q^-?MI*w;-v;YCK3pu?t64UUle06hCwIZn+g zm!K{y;#xib;~s%my0@Wl@|`IqO$jc=C|1SsxB{xDYK~7(`RT^zdTvW{yoL~ng%41052LZv z6cZ7A%AGw9#I#{AdK;Tkuc>FD($&R*S@6;0CKuG%^=&o?RO~wKC!yQd^tr+}UgajToXLp-i zHxIw^Lkrr=(XSvr=NOzNS`m6n#yC|1v0!%d1liWdjI0X3NC8EK_YL2dcZ zo3`0<4{uBTPk;S=^8v@#3ToW*;%D%0*S}x?zxX$YVtt#x%WwTe3ZUvvM{4FaVm{V3 z#+r74xcAp^KfJyOi}CWa4CEgEHE)FE!?vy8pb?-E1Kk8g%#d802jCw1mX@wBB?jN^ z33D}b$fT|p748{l%?x)>cCMid)5syq9pk~8|CNl_%DXrR{Lj=S35M3K?hj*s z!yS|C|KdAl%k!^KJ``#W->%C7;p{ze&kxVd^qk3>e+s6kij$4|dyD*))jC>Y8)7i5 z`nR#Io(SfhI%;O)uPi*};;j1);-a|grf`qh#yGE3g>CV*(E=VG2hFWJnC+YyshSk3 z)O}L4zh5j*|39CZ89gA?GVnp|d@3?~yWBi0Nuyr&Of8`&@d`^ZbMPGipmdLB>(}H4 z?DJry{<1KkilGmg?ROmLBg%;7LZD!CxyKr9(AenVT25@RTJOu3Yx8>Vb<*~K#|Jsu zJZ*GKhP7b4?J-&ITpYY;{Zt(tIu&~!pFha1v@5#5{IybK{~n@^^=e}_?forXo>P(` zZeaI^?Xtt|s=*yZ8}7RPc}YcWWF+mCv$`W@|tbggYAeXj|tsv8bL3ZZ%(%&4a= zay+@?1~E-sO!a^6M4D@+6+Y(gT4#Gq`MS$Bw?l(8s(WrR_f7r5tDEgqnTzIW<~MnT zUO}_5nLA_R?Vh~0jaW?O6p6^;VWz}9FM5L)DbZr5*hwJT`X7~gz%m=vO z?s5rVvz%UB?ktB}7^uAt@-j>}7v%$R zJBlY^*JaTHcfdOk-}&VDnvR<)*S4klvSw%DP?`8{)nV4$en$8$-ACepyDt{b9~$np%|r`8Kn-aZ zo0O_`&9wV}2GjcuytB6YTYiJDERJ(I9WSlZCb--DaQ8_sdHkXzRGqy8a_TkRT3liG z2{Un+1(sAftM%uFD+7OZR0N!Crz8cXe+23uy{-wq=u3f|Ycu=U@S9W<;KfA#(^LA| zqCCqnZU*k7ks@w1W#bQ^#@SLXsXuy%P7*~n3c=!Oig%oh_hCa_7cdMoEeOi_EnKBsbk1ZM~~Bu(mjY7Dcn4HCE6PAvcTon zl0nz!f=~+?z7w^1)x45BDk$0PDn4QMOKQU$=bc5_Gv2at+CxLjQHQpzxG#ApqVe5% z{1d#KOoF@Pbm9V4o4efUzb}}V$evxnoYD>dSa|r{p7fO;Lg)@{8KFnYcU6E#@z{{N zjq#WJC|OEarC$@g43o@a0}Pt10s>#T<^=rMK29fcwC|_Uqg`KU5b?Y1dqxJhP0{*Q za`3kYQ0R%DMG8Ajz~xEOZ)W961TusBD340@zpJwvQUagvPk9F-p?)EP4buiilRM{DkC5s@k7k;{SBh5Y2(M?ILK?o(da?*g+FmO%7Py21|OoF4aEi?^@#swo4u2m5>A z8>Q=q)e?hh9oFPGexrwwdPunVW<rVYenj(1zvZGjiD9VKd;)vN>ceUJgOImmv-3yrd126uz=IMm65XY9UkUjBfg-;UgG#BXEP8=4LO8Bvo zQqTdtSSG6llShiTqPQ1`YwJYEIq<{|hKa2SmtY$R`@0P>xOq8MX<%xnnx=sL7z8xH zI;mNIm#G{nHc&!deD&Jbk5hN?kM*sf!ocDmY}6kG;W5ORkZpXuaVi^I`Io=o>uQRy zdQ(OaXvan?7A|bFPDd{cD-u*>=ZVE2(QA^LN`CXDof^GJMgQ10EUW3nZuYFwH5F&ZO4~ zA&uL&*lj#%#dAxWAx22MHt-M;tTDR$QI+j2@^5u_eOImU)5+wQd(2vp`7|gw^9&GM z077BSn%_n)bcue0<;=9TH39nUK+hj+WZDSR`6uBgYs3mhC zCtYN39*rhdU+N*?fIs-+=>unW*NlnukuG?!K?hR~Cda{l({j}l7yrci(Q}|hJzs%B z9ARj1I7=u90L*}lF|_P5V|3FAw6*a{CLbrX*EDN@$Ic`;M}aq1bpSIwV3u~k<{WKJ z8ad+o&30ILtR(k2f-1im(6Hrfywh-x6@dSOB7zVdEQ;O_FG|LBDzvXds2fKe8sbmhHiI;uCG zKB5W`4j)f6or$G&caErLUp}cS?(J(wIKsyEi-yYwRc=@B4A-A0H5uF;f8W#c6hN|3FLIa}!V^v2cPY4I=pY?g;^-!BB%cTr}Hhr=py% z6k7LcB-awdbeSbrNx)K-j|cB-RHA5mqw!`3>BVzWOP}1r7-8&EFpN3W?-upCr&tfJ z9;dCO^jlksX&_h#0z=og1UO}Rws?*m1RGByVX|2hK|$nrWHgL>AKP*rhG8KW(Ng#t zvpYTd+gW*|W@1cm+@h8~gU@_O+oa5A>N6V0S8m-xM9dH#18Z>uHhU@E1&xMQ^TdXX z00k`{9>1ay0T#uw*u_Jvy5Bw(^_7UrR9g=2E#qMusPuqYa36EG5n5bb*<0NDIsawG z0#>DgRR9ks(3yS0-sbc%TO;I7Y}6%0QjkwSb)*M}T#AN_akAxoRrNg7f73t#u39Z^;jTD9{YY%d;KOq@N7qQ?**!dY(k zq8qSdqK9R~&S;LJ5#t#>zX7&15MyP5=S97y%h zJirF_D{2F0u7U}0Tb8Z>yFRk`*jY7XAYNYTgN4@S;#8qltycYJua!ZO1b*zNo72E_ z;!Ecqo>N)|fjey!iWq|(9e;*mv*bY>6GCfB2F*aot|Zb?PxwN!oT*5#st>ysb}lrgN36M$bv;h_x=ig=cns_26fG2#f^WmO8)COHlv1tX3n1i=&Ca4} z^p^TO5ka@$yikN1$IH?#Eu|^8Lt*ntwIR~WR-kYF-#Rr%)jA^$4q^f;7S#;b8Rgse z*6!pSbos+`la5tDUPYv4Mzy}uxRAl0x;vzsxp84Q$6hh2=-HQr^KVo28#i&x1cYM* zMY@^S_W4X&l=aPPs|Vi(;~z|>B~w;MzNE-Q`-LwZn<+0pTUFSgBq}Ct!kM6sL_$=?_rGmHuS>ux&RM2 zb#p0KLYPDM24{uHVPw!c_fAzz4hYgcRok^teM>j3cv~fcr{z^HrXYWcI93;1%9#XD z-CZUUbunDl(DlBp*YC*K@liM&=EPpr*t%ToUp&q`_Tof0F2#fX4Thkk4%-|d6B~Bg zpIFI9&7+q4hY}WGQJDg7;rL^PgJjK8mk%+CTZO>2Zn`Tmr7`ba=ud}jxEP*u^fu4su(!OSa_G8hITP@p1ih~Gn2w2xf-J$$;Ed4s5xUbWpU@s71(!;z0CPr zKo$|q6@80iA%mMIa7ut=MfB8ua1E#lF=_5~PR`ujGVp`4U0Zw0?;B({XR{9z)TZm! z@*N2i%o9DhHUn^$fO?fkW*(=8&5_`VwJf0v70abFQnz}H?`VS~Jbmg_V#Z4sf@0F6 zHFNZ+<*0>DI{x)sCyB&#t6&`YCx$4&>(1 zE^C%p%W5Z0zWUvEFpSd&C9L@#1lJ0jbl3{nO2hRWR1s5>k8mEVAL_|2I={71*W_5_ zHWPm{3fIUje@7FnTXG7S5fJhVSph zv0a}Cg5Z}(zmkqpEJtjV=zN{v6TIY_$$JTtlYR>FcatnW2*Jr6zw6GX5)O`Ky=86< z*5_Y?zfdn*=N!}jo__dP%Tx&R%Vxlq!V)9ot5AJ{N}9IdA#0Dw!ZCih$kph1qJpo_ z)Mj?YLu($k>sEmfYu$ym&jRQ83q1~XgLOJe`|lkwtXHdHHQ*J5j9tGU?FKs*onI~s zX%-SyZ#ZkZasQlHI!fQ&!fQ##YnWqUO~Hb1Zz~pnYH3k*Xw}~I-qb`5y%E~VqnhOj zt{utH1W(ygPZ&GlMJSFj0J42Ne@b*k_VhPhFVm`%Va7{WD<62JK)m$U4i!HG$Y)Ay zc^|a8sUjg2rCVu|orXej8o?ehUAnz^-j-%K_HY_|K?GLgr*xkKQ}egHC-VxtqV9K_ zQi~n_n6*OXxuzPe&?vsACoFfgM$itYcp^QjEAC_-TU)keP1dzB>rPn*;YFAp_qzaH zi(RTcX?ta!82er7lJC*_!=+oh#6Gc=uYlgNpJEaA^TdZ3g2CeUSHL(mig&uk8=VvM zGEU0-MPp(M2`a!#J1-AJWL@sU*{mFb*UT0OBZY!%XX}O)kbs89>_!E)pWXpDvzV&=dCr&8T#yfAvcEIIyBWFsn8=kp_GCF89s(K1BzZnL0`jwgM>|qy$jV`^F$sq> z2>bZ03&%m`JizwAet#IDygswT85JPnrkzp71gJxJ*pvFsCv7zu$q_LbM{4cqb+MbH zJHAF3Zzy%(q7FFb5tVuA*67ZC0_xd3bGEuIg7ESu)xepHV56}8Y9k^EzB|=9ArwXM zubrHb!3Hz}TtGs!4MlZF&X~KR&T3G5o2Lb&t;sc3)Z3CsA#9c3tR19fE`&Mm=mQzA zSQF)t6|pEGPZZC!Y=jmRIN*=PklN%v1U>!^Lc*>02nuX$!xCi;X!qvUr_yOC&>j&X zrOq8u_Um)vnTUB59uf}^)wXER-#s|)j-;Ld>)kENa$X@crDb*d?AI>TWhTV zCNPJ7^}oHHh@EL5-?ka48``XWn5Eo+I5{vTNb`TC<*mwAS6P~m29GFSl9C+47fQ9q ze9ulnVG}h8wvno_Jwr$|LT}(vL?}(>Y8B*8t&Gz~p8o=63jY=Zo2wwM$R&*MuxChr zwtgHqGf#X;AL~gBlvEgjIt_PaYk~BBRTxNj?@)BfWe*qv`=vteA6X7ZZvS#O-_SEC zx0ZXdtQP@fWbzE!w%NX7ul$=h`xvK`d+|hNbL$tc6+vH)^%Di8f(7M{GwTiMXHIGi?(bdg}8-jF(xcD zDv~ORssZ@uDzz{zgw6NP)%UKQI2W9XCJvuDPMd;6+}{JcdiT~lLj;I*O&^0Rsy7Sj zqL~X#Tpu|N}d{QOZ z2)OrM>&Y-XpgJbZu8?S$e(l80#6`WhFY6Y6e-$kX64^ogyRSNNK!ca#q16rl{YS2z zccLzt$2ffoc44pd&&_fSlj1f+01G$=Soao0zK}-3=zy zhTA4nOc~F!T{x*!(fqy|#3zrAmCc25Z++tcQI!e59V}z%F<-^QIPrX-mwcw>P&zDX z7+y0MAA|Z1^<4r&Sp}ErSv`=o|JK2`<0hFXp5iRl;<)lvLo&ijgSm;HB~{JgTlr-X zwa|_hlVaH?Rn(uNkIPJ~a5jil&JM_94`~U#M>9_Nq8|X(^AvH3L~B(oPwDZd%_GN+ z*AoOx=b$k9w0TV8&Z@az>&r-E5vVWN%p@!A3#D&bc(CT4UfjUP6qNMp!7f}9uxK*< z8f}O*Zt>?%qfJUUF$$b9vXyPp`YpI?-a{|$aUsx;fb4l&CDv+3DzTxpW}&$%4*4k6gswRgh+ve!6n2D)TkHa@)G*5T{?gzCKF;L&U3p5d?p|g)|!QPKYaE#X_PuJTgQKgXtAOPz{Iu! z*lgt8HBnoiGcAl_(ju45q^OzjQFwQFqO;`vz3!5shLwAAJ=XE*6EU@n7}}`Da4(9C zErM$JhctLA+4R;Rwz^>Px0v&>XL+NOQ39UFtUs<8#R%Zn;Q3GuY?)J2xY-ZgRb0nE zY_j&x+}hsUC%Njf5?NW-AXCqibFjf#g+HrGU9DV2M()GBISygP39{bq z>uZjg0L?^K$1gm+l8$PmQ%ax~apER&n*reyKZf=Bt22P_F8JyYiJrD0h>lpB2%Bk_bAw5C38X3K~7Fj^(W@WGq z=7(eOddF$w;-vHsh>&MK1L>!)S?PT)8jwEDZtvmh3Fg8q%df}k)yGc?2l=)%wV~uL zuNSS*8ka^JxbJE|xdv@OC6XgCRtep>B)Qe63LYCTb74uu%iHje_FXZJtqb&HwZTTc zL2-*vjXkB?apEqI0lc|V0j*wCLZoc&Gqk7?gIw9Uy&01lH?!DaB9p>BzOmL2{%Kg> zNq6WB2&M>4QI_jLGcuj$S@w$^Irvqd4ONoO9)-RnSEl5zUAL8V7xUb^FD41R7ubOV z7l9Je-+%2)rn?5o?6#<~h|#%iiuW>0il?C(z4?jZ5Y?QdC^-=;U@}Th z%H|mQE7T=mv#;8&ML0&bCw(%fcqZP_w~ss!pWJ3c81yfr?unnE10_W|c)spfEG=*Y zF1FDb@C^Xb0}j6dHKO^P@IW6PrTmXQN*oEv`oo+g0J~2X{zDlQ&Im|%9{cb|>bFsR zPMr4ucY432nX8mt0&qx@Gj`#lA^+eK-ai{wuLJicv{jlv3-}0tV!MOocX^Emz*$EH zS=0Zf=1eNtL0}fJ3(Ab;+nLYbfPT4H2uf%e2u9F~-1EjKT+2Ff>p+Z8UsZBBJ6~P$ z$p=!fE2x4mLBreCmHu|Tw4`*N-v&T1{b zdON%mq*YcSo!MpVKDY>RBstq!_ZLF6)&|@}%eRm0%*d{xd3`f zMEu@ea(ZICc>7Zk&zop44+TW#Xwf#QU% z`mE6c4LjWAC+{D?lYiG}J)6$x;Nf8Q)=bp>>0~h8P;^IV70g;huO8U$;;<0%h!$~C z4uY7WiXhHL?R!tt%l%gJne_uR&MPIbRE3xOWdhtD>mksD&w#diAdB6y4Bm708#g@j79Al^{oc|NYphnvCzre#MlCoiC0s zeWdFxvup@NS%X#2n}Xi$&Y1#jZIc71Dmu?H$0=8lElzmMjTF>OVaPo3Hm9jW@T>dq zWd`*iX$11rJ}C_)YQ6>({|a;Vr}X4DZ&GZ@y)kjf(VCSZu#;&Eb1Qu3*aDKBBUrgi z*lMRCdrA4dv6GBBF0t~#@DSf<%sB0N?+U!Cf=P=AO`b8 z?$%8LCx4Bito13yH?CWxB0HL{Vbi|63Y3$Bh@z4EqVSvGWSzZlL|3cot$a>W`xTBX zh3$~9*0>YNDeN&Q3U8VKLy6H3ZXd`h8o~2nu0NQvr`~UR7C+!rQ%XXwPVEW=EQlte zaT`?F0=O>tdj??nL*|>5$?ow!l1`z0Z9dwL;PTFj#JRmXC>)V!)Wd)*i$=A^?4AFx zXmSxv*dL#JKjlmFk#yi_rS}P zHpk6#P;{!9hl(XxrCJ0f#WRK}5K-{upx=h6wE@W{(=#Q4wbcb?WI8Jy&55j3x625q zH?D~7!o|vEa_xMJgLWnv`GNoK?{FTfBDt&k2+lamn(ne|J4w4$U_(DgE0)5erFI^Gvi5H3nte56 z4b5I&|3^oI9jtz+O_SVg7}wXn4joz`&Xteq#Z+ zm!y9Rq=Zum0~BaZzT%^$*Tk7U6c4Ymb6rbu`kd(>W0W_l>*BBYm#>IId{qvh5ft)U zud_&wka?blRV$TzTYR_j2*DSFV$_jEy3S@jS$A1(1V$2Vf174=AKiG#gFMc+`+Yn% zXRkQ9X%=a*WN#oC=DJl~vPIJ)?F}DIX?+xo_e^CBeHy55VGgW5lm~N)=IKOy_l>_F zthqv)jNF&>n8M5qQ{&<)?s2sqTOW^cW!QTS6j8O4h|O_4PyzU&gT z%wQiCouqB!oGY-D0WB0iBV3Eli=m>fH_7ET5V&DU{ChIWzeXMHzumz~M=cQbQ2d!7 zwVjK#1(TdMfp}7os@f(}{~j2hpeVPi)>Iaa1SCln*pR> zkJ6FO4{s>%T0Ln7La5Bk%deYAjw#rU+p?fM^q-M)Lgxr@fNvew6rJ4a6gxltERppr znP~!Z-3H~bb{0nak#pJ#xto*+tZt4a&^hf=C}dYn$8#Ul-uW*a=cMB-2(;nVA3zzU zCHp@>GFy`os9piR;q^{;cld_qzCKicari1@t8jc@`n`GLo}*+}@Irslz*Zc*xU8!K zi7uLt<{dKlBV-p8CJ$-JY%><{^klhhTwn;pY%DV2<`mSt(~kv}j9@D4uhtXt z5>QGV{fo28&Jlj=E3DJqa>p~a$EJQ0cm1Htf*1xhn{|qHqGCNBFwEs3e6;-b(iDD@ z+9E(Vq_b8t7{;f}m}FKAV`+okWKF-t=8I23=fvYD?y@-v{y*;zeR!ICzq$4FmW8j? z$rGZ#`A)tSJZYsTul?iAgUSOBOZIE8{Wv|Taq;tob2jH*9JnrGM&)TwLmUe{4O{&Vy9Ae^<(Qhe`TXy$&FgTng_ga=ffx@^| zI2T@8Y(Stm+g|H4284NP7wGHD7RM#eIH$3PeELNycD?h_Dx?UsP}oA?sg7MZttV$I zJ?imU{eeHPu&2;4*Ser%P zCfGkZTqE(}10F%#%Po&V6iQRr+xf=s(`OG~4R+U52|R3*Iv?07lK9P(?+IF_pibx6 zw!^tUQaKVR>-u9K97v}G0;kRF#;8zC&Et5xSjmkCjdz@jl!skPp8Lviv2QQ*C&*xK zDy%hO85X7_fo(M=pX-3lt3IQ)TmEWkZBOs&pHy*9DD!WR67K9kp<{M?TxjTy_ZXRA zkkqwMIBpmg{LY3gPgcs~@+8jhXBF7u#DSx1yrI@@r=FAKe?cYpE?917mmyDCvuV-X z!gs-!l$)=mop}N7=fHSq9uj1eJWv~V>G$}vhjYiCcuiQas4BS=rfh^gQ2rm=ROB0Q_Q$_J$>;|II>-44BJ7*{Zm`$A{Ai}Ykt+1# z;J@nc;P-w1s_lJlb*QEN1Qn5g8%obQ!8MPnI@CMP|5KZytR@fzRNZT+Zv$lRzt&0< zdhz?8O7iH8cI>o@IiubPXrrAa|>0tKC!{`CY|lRUe;3w3<<_ zENt1j^hxDEQ4{EpE}9i?>%7NMx=t-##>%i@J!ErP+B)L9XI>h8~#4{ zg3MCSnIv#xR>yt4+6$0(&Pk6{zRX);+K?uRR-M%Myx`W{j(Z$IKHgzs+MWgnSwKi) zw<}0`p4P2(m3g0^+d>&-ays~tw>!gP@8~&r8nD?()kqhLJjeYDnPxextJ+R(pO%848p$^^byl~tQ~cI?p@%R}kA}~^CsEq?5-e4- zrj#zteY1LrGwkxO#Q2oTtaEcNi-DE{fnP1=`;W za)-VZD_n(A3->S+)(H%kK8u@nuFK6%P`QV?5tahR@w6jrTh&a+Si!8{P>!BxZu+;y zzH18DnN&ybpX=ToDsuxH^XF?%mTrX&MDgtR5lANrd0;%92M+HlCyECXQ%WJq9%A1^@;J03#|C;-{f8MOMNoltMw!F+D{= zMb578n%6cL?rwwzN;AEXEw3C`N{iPb^OF=olN09nSSn@c!-U0Vu*s4BqZ3{Ce41Jd z@3)~p-*Yx`D0rjG6o>Yl(aul?tFoTg<@%Zks9s@A9>SWbL4Gzjsf*j6kLWTN0mh`? zSX{qC9wzKe)f?UDB6w||4^H~h^YZ97*@e4jD&SfHMu<@>j2S_&mS}Wz8(;d2o zAA3q2K^p14y;yik`bP)FtZnCzm=V=z2mISC{iMLkh}Xl-!(~MU&~~NmsS?(- zwsdxA&Bp4}r8#GcJjF@ir zJ0%ec#!1+8H~|1Li7NwKTk|W-#OC$WvNk&7Q; zZU>)9!r&sKi)yLYyu#*2w?kS_GA~+^xcnUyW|<2$PR;s!^cj05Ks0DSLa@I;+9-VS z)rPyUFGg9HST|#Jr_KtMeSPx+EO%Cj(jJSk>B+ewwsc=~et?qCDf)}&!mLzWdKphr zOKV~0#myags*1VhzX?}(JNeW~%$Y$a1y5kkyd4nnKJcb&-U&XW`{MPtIK#;3Z!y`7 zespE_%-vrpwaOyRCQt8qsgz?6A)n6+{uEtu!$7Y}DcaMkO!TDnf-AQKTxZ(`S*Uxz z&KqIP>ES{iuNnJX!pf|rZmlMN1qvV;Zn`)dr_Mv zQ9mW0#A~jl({@R~%E+b7aQmM53IG_N0xqZF6*z4L{E{QoNxMm$i|Fng8BPrtfuFpz z4#Q(6%+fz!Z47&>K5AjGeV(bC!qx1H3FUU#3tx8oHT7-kSDwgWXz00{zyot=dh@AP zFD>nv+{_!+kKEzQM+dDgf)8x#VDG%Z*-L4o6#_*M^&=m zX*2E#gv47Pxh7QWtAa=&W&fg3bM4?`iPg0CN zk3G%NyIH8hm+IO8EwKG+Oe6LGf|Ka8e z+S%PkAV6zJ4S@rB+f2e=M4ow*BECSzO@}70gA2u^?Fh31&E0wvWmc(%29;;t8c^5X zdo{O9dxE-W27di?1wk{iU|xfip4oK|Qt@D)0n^@EtsbQ`>?_We(l%n|KRKYe`MtU*$zrv#=Hyt`(rnM^P#{#xDdx* zpJqzrfqfg@U4HnOkB0{S37Y8FpEu-$$H!p{ zfBX1AU@k+6J16fBo71753~q2;^eumM_aOPol*((E^X62a;m+suS2xTt=)&d#U5*qD zv$!ZJNtN^77N%|4SI7MAjsaw3brr|1Bg$JC3TBVaT!ERX2e#tlf;CZ#-G!fPiu+Z0 z)nYk>08xfW30OYF>gyP~o2g;YM!Q&!e}ayU22a9~Jk)v>%+(P2p$;j1kXBKB$yew8 z>Khq!j=%D@1X_dFeuh`ks^lRINP@^kdVkll^!r*gZ&)8&?)_6=TXtD_vXlR?n<{GV zxn}JcwB}<;W_8u_y-jUo7B894rW#lU;iUD)pA>^*639>EsCX`_%H-muvCgIXb}@+3 ztJUa*MpQ`8*#7w-y z=mc~`xW3eSY}?lA&?N4P{hamEZfa@L{UkX*CMD`~MnMMDpM9DKxeur0C>sgg*}641 zkw@>wj8Iv=yC-Np59)KN$r(A{_C9pOyKx|_=iqlXX;swGb7lj%p9RWR>H$cs8tF&T zvP^k-Sgk}iV8^Vu7VMJ z|7j~s!&i{cP@(rp99r?}4Y>5V!z$y^wy{5bip41WhgnzC__K9Z5YlJqp_SMGC!kVO*g7yS7WE;U0<(BW}&FLGy0Wb1DBAg0<12p^vJ7Zr@>3ndL<4S zbJSV%WENl`0)3zuQ<7G|8ZU7xQwH+%VH`|`|< zQo@VoKT|%9rou8$w=aEuTbrt~b{JE5(!RG~Cg+0HdEZ&Ew44-#p{)xapZ}cs5i1B} zv+V86&N7W2Tz)+tvjNPfS&-8&;gItqpUk4QFOMYLmE6K5uW)&vuSXpYc<$-8{w+Q$ z{Yx%J9Q0=+sb>o`6-`-}i+_xy4K?xZNo0DF(&Z|7xX_`PIN^LV%q+7@0=_vsM?A8C zvxXSyFVSXNcRcj1X-Ry?%G0BGkEr8m*Glu2RGUpy*DpfEvIdCeGo6L2XA@qIgKju_ zoiLFah^{-n+AEEAqh`#KM=gWgQvl15o;;QBV8QqzM>7MJ5MR`pOz-@iC)_Y zeYqQbe-6i6R7|kBDe|&&R~@xzYJf0i;_Gm#5U>^VQw&Y#Y~pv#qEwbcS$h+mvTZAm#biJan6Q@J9f^w8Vk?BWIzIX+$ z2IsW4?nz*+&}YtUS!c*?2^K~~({7L@=&tuSo7Ih0d&l`-vD6JZe=ZYKCH}aBJD5U_ z4LvrV6n*i4=FGlxbH|9d8%A|2SZB0ucBOIUr&6KMTN z2e6qF=4i8HgI18khwn1iiQSuSp-!FrzuSlSNqPy2@83&7=jPmhHFCJ|sYW@}rab@& zJ=q69&Gv~+y(@5r`H8>MnD&&9qbI>&8iCq;X9ho7Lk_gQ;aF>@1)-@LlEq zw3N$(pu=b@8?2O76{H)Pa#r9nX#9dX8ZFcMpslEje%DkaMQi&SK;gw`Zqha&(*u7w z++?lilsO&y-YJi^hNp^Ge;$rRj#6pspCxtdu)9z_2(0(hAly?0tPmj$8{CZ7R40#L z6uJDYS$BzM!0e0>fRt3!unf<#PUxS+6H<&v3wE;=9%QXpN`HUeNUZd+Fb#3L_*uCA zg8h>95;IE!-Ol~U{NAJZ1AXi)@VYT`vz0^seqd{dG)$GWxJO{2 z>|HK!alP3WzT#>5b*3tliN*fb$vF3-?((T5{4dSmXy*vp+t#V#zt6)_&A#;PC!KSL%V@Xg^2X zuja2i<|S|vqQ+5^JRbP2Dt9c`tNzF#Fu6r|0Kv`?zTV(}ON)^Hm$WCpd=aUeRC&!c z9^PbSxKHkav&NfnZl~*kv8C@qZ`OKEJm^uC`dcE6beFOMw$)o}bGIiRdYJBS(4SCx z@Zdq^=LI+3syyBU$IbUsRbF3M^PsA5afRvh3`_of$Q15R-?ePg{+6c>b>mbBxDoa6!RaeO7?n>^>NnUzBwm2SF77A10)B3hH{XJL z+!XK+W!taMMmYHJ0Oly+&W&e37HMNIWtR`^JCMkRIr{k!TnGs08f<$v%Mbsh9U!2) z4L~;#)`i#qrv>K!OuPBilbd+&C9nhTzdW|?DW>bNl-aW)hjI9gYS~jj0?uwpbe*QD zY~*6bj`6rpL*o{Nvi9!mk-cUrdxo{{)tcI&r>0UXRt^$fsU4(-wqPFgcqi|Le!l;$ zj!qoPLiTWrPzl^0X6yZJ*?t72tKsTnbQUjh``Wfw3q-lL4~B&#+EAHMwKpA(T{E)$ zwtCu(q@nfOZ>~DN`*BHqCi@b>%I$P8FLhrr$%aN6Dbm_gsVYxF|h%WF7PG4PNdV`4|{z|%8(HT-O z%KKBb+|4B|M34S$Sb#&_CQz(y75`XQ6>_vEU@CL#D;J$hm(} z53PObtFsAm5g?G{wBssf{Q4bU(!}EpzFvbef4Zm-9GsY2>MoNDCatrOd)*Kh4GPfJ zGrO~lafFM8;lSH&Y*FtPQ5C^CYsPh~W}4L$0Ky(4n3l+^p2HOOb&%p~Olf{+qH?%y zVY);;rW(=--Gj}WirdMrb!r}Hu@_^<1hi1x=`N_HFA;Ik%W=kNM z@5bmAp<68*%fj0~?k8mGe(apV&0gO2iy>KmNNz;QaQy+E&s0j9S(mDuuvXx8I0QW3 z%dPBTe*<Lb#g;Xf>Uw(Hlalab-VSqAN#$H=(8>h=rVmmzD@if8D}Pl;nlg=%WB z*M-s}Cmxop=Nxnl+KlC%dvjoEX=-Rg-&sMSY1Vc9hvIBuF1MXB#nLr1ma=%M`}i?B zVvdYyYaPBDsypA7dK_|Gu@LQ0qu#epOsUvIxO9K+elN6V-FO%t@Gg+6|EQ&eVpR1Y z?!C&>y3&-WMI4`p5xVgmN{=Oi@RxflAHTj9i&O#SrEF|$2TsiIP%OSi=-$bh4^(_I znm-Qg1;oyTIBQK5i+neRH{oP>F5AGyOB<^3z3ayu@6m8Z>QBe}sx#}S?lgDZv|3-B z&D$D!-WuxL%id5euX<<+#~4KPNmp}ARkb+lt-&+BjXa(q-=}Y7K@7MVV;UscUD!_F z?PlrBr8{%7@Fm8#KCMMiuDVN2jJUi(l7@-N#KSh${eIIvEl5IW$Iz#e0JUa_yY0qa z(nj^>hKKje_UsF0J7hxWp?Ox|fu-J?ZHcOI4d&w9TP%O6z1)N&A)p`{%Y-tudR|vH zuiCDVVbUfT#!=8`A={dIJ`%p*(6M3lupR4zQpqcHN|d(E`oVT2>xC(x|R&8P#sL7FJm!l>TF2lg2EHB5wI^IVk`M-}duw71gU zqg!!9hsYI_HPF}B^o@vZg5X`z_EDGs%6{}$avIB~2bt1_q9aL}Cd(v}kO*l{Q*NRh z9=&q_U7zkDy|u!-PR#TqH`P7XnG4ieQ4)Q--lj18HVOH|v*vq{>w9DyOjTo2?2A3d zb2W24uGaA6oT02YY_Oq6FOXwcO4InOSbkitINhnrvbcjP7!)oToDGKrV~D`z3EGTa zeWv9d%f_~Lv6`)8nDlm5wWY+TZta+zUM+1COvBvys_uzzew;5Izr#vGV{i_`l|3_4 zHYqXSs3-iEYeEIhJc2F@c!YPNhLg0w@TlygkdnA5;YeXlGPF&~@BP$T9doey=R zL!VhEBR9HxBbwuv3MdcKX^_HXD5hEd)K zrLd1;w=O!SzubCMI)s+9J(;YtPP9R)?c&zX?U?yGQT+-vhlE4G^n(%P%N3WdX|*sO zZfg@+Iy1Lu6N51hDv;Q$K3E0a%|xXy=X4S?=k3n?PrHqF0Xe9^cb6m{>Q|fM%dQQz zCg*C)Jzto;OZ2S56apcsmwl3w<*Im#g1l@DSCPOK#|u^z4?O(K(bv2_Uzcd3Aj(DR z=34DS0}?X67HATBS$}M;R$vw@=AqrJ>orH->pX4urX$^i>#~`Z@tb`_(k8LA{bdN0 zu96@5d4sW6%Lci%4rx9C$B(%;M}O(=I~s0|IZNDF8`M61`N~R!E3`Qy0xTs^rS+`j z%6>(OSIez>g|i+(sxQ04kF`rZnM~orbWLb6CJA@0K@#HQ(GO~fpPX(?fgC??52hzU z5CwMEVT@m5F&psm<>C`Lv_x94$>os0$k@4djFxGZOi+f;uMZBV3Q9HR<(+#57R`}3 zZ1?M`m7Zwxk6=*kWiI3$nxf0C^G0I#b5W}}=N0i=+e#THZI0XrXJ(!i6(*s5WsUPb zCI9Gc1*PX5Isv^FD=LrueVl4fJbRyq(8EU(JeFCwYAn4?);j928{6)dM5XCH!pfN% zEvjn$zN7N|vK*#vg;B5X&-~=Jxf{R+e$`WPw_WfPxZnVlr(9gj@%y$%7moyHLhHfD z!1bWf$6imPESqA^WmV3rA(h`^T=$G8or>-lUe2u=x@aSgUJTh*9YgU29+bowpB|20 zcF6))NZ6DQ>*Z{pAdvDOzr8hYWN@JJ_wKsLXvVL*rC9#-S>}(;?XH@OEJ=@6jDFWA zcyNg_1Ur6xw)dC*(S7#wv*S5u$-g3V!Sn_8+4fP&imP7qZ&Y(Vuv&m9G`D%{W~bMM zReVvQ}^VK|4Oq0_8Psy&vh%H9hk?pPrA)PB?t7^0!IzjlIT+2H6>n3*R4k zJt06!92#_--lVO)2J#R)MB7`&871ZxbBkK}zVCCQdU+pRyZKTF@xQox3#hoBZch{v zAOwP20zndjYjACXySqCCZGu~)K?1>pyIXJz9v}pFhv4pnZloJ~C;$KV&Hdi2nLGF1 zH}l?FkJWIRb57Z=y?=YxuBu&j?8)G;&kpnn3io{ zzTG8Wq#WaZ{YXTw?u}p==C$mjVre0RsYr6o?WL|KfnfdTz*s1V{>D9=j-LA5L3v5} z=B}fK7aCbLy5;A=%-F$Vti^O-Tr(V)s5Z)Or&}|a{&uYlXMo*2?sN*g>&Q?JCw7#IPDGm*^j|IL=Z{J09a_~& z4$n^3aHP6!v_%ozIsv@*?mm>+QyhonnWSCql0`=j9W3j^+jn0 z{;r|61+q=HPc?Y#Mj?M=Y3%eol_yvFTo#XW0Kyr(Y~g+~s5&QaoCAK+#O=G(4UDGo zB^H_nw%kPF`0)#a7{#WetiRtI6M86>8&B*notNCiIeY0!@n^sJ@xx;fE?dyW%^+f- zye_V40Ds7W;h@S_(VtMCWaESO`iiVxW$LHSa!}qv6Nb4rDJh$r8WkA#MGjBS*$7{p zKf2Aiy5%(T{fTJ2eV4~PZwk427#VcD74_=S9Cx!V3~mAJ<@=}TFkBZ;a6CJg@mSB zGWdt4-qy3QfHzU_-2_iREo~!(Jo;x|AFFkV#Wr~HWX7g(K9Ndm-870YiPIk@))299 ziJbq8m%myOyL!&AL2nrIqlubts^q$n&sg!hIufb&7sdnwnZ-cx(m&X)@k{oRf{W2N z5xK17qY8md*x?Ch=QlYVd}m@tAtXM%&9PaKN4CG^*ShO;)U5%P5Zi)*lR{a*js->8E)82O<3Nmf#M4)kx)uhf**ofA)0K|rO4fTG)h=|L z#!%42a2XvYuSBeQ4P*&=+!WsxkKOR-PS9FNMWiS@UznCqu7&vGd-0RiW<}@Oe7tZZ zPWo;31)Nau{&ejrgJD5Z8~#cYlixbDW+sMJ>S)RB_9gWoW2p$Bf2$ZdjXo}@GE$!B z`MER0!qR%12n5}=BWZgcv_0(=;Z7SF&KzN2yYzU#W2u(mJA0L4m&da9-bG8+urmJh zA%||u$3C))>&B{1MDs?e6o+Lz_*35Kf7Ve>c(GW|U>p9Wnr-GvNDHQ;Fay4nJnXtnjad z(x=8>{C&xZf<2wndZ8>p$zKe=%iLe3yHRaS^C zrmZCme{W)?gTDs9aW8=*1zXKfxiI@!2?uh@3~SQ3;lYgfz1Gg;A@Da@sdzD5VJn0K z{#nN@ulTDk@#?Jy)OWz>oy^x(VM_yXr_Eu)b%x7jWpYcfrgImv*+w7Xto{4n>^0<7 z4w@6;(NR9gy zVX9uN@fbwKV9d~yR3m~;8|&2R4g5`@Y7kf-{SRpG-89A+pBAkzqS~~R)uJe(&_Vf#3rB3fY@a&r?h8l8 z!m=U?Y@MJm!N||;Vx#bZU#-Gpx6K;|q?hsp_-J1fC5p?0&MZ#-a1JeMnKBg&J)eAiNXc0Z!Z;@V2?Km{8G1dw@>Y+!YMZ|hMhyT-mnyT;lnazJ@(RliX+>_MNLYvT_QpwdMQ z;VF3wt0^#s#RtzOE8M#q2=t?LIw_C$l@gDvm+eAa#St?(H(TxdPuH&>S4|Pzoa=8} z1_*6VRmQW+4@(>@xn$ea`|7vh7a_LCfIWO4>utx9siPiq-WU1`HH}`{4lC!WJ_OK@ zG%3Sf|KWNHWL<6K#aPA8UCUJc3Rllj5NIn{q7XL)q);})E zrRwiZsymGT>Z=TUgVDjFs3ZeKKYt=N^1_VdkMom^_?l$FULPd9R~(<`4@<57#Qf1*0X?hY6Ex98t0a7^JO(E?Ip0fr6j88=zkI?Rwu~62 zwdSMi=r{Qo)rDrR!|c`7CFg|kh6(pkjW)Eitfi&J!`9u$dI$a+B}qtdN`0x-yGfH% zK#XOTCn_>Z_uaANj>9oKw9$(!T4kt7ansD4Sj8vKOJ8uf&0!^!diva9>f3w@>a-DT z-uM|0KVVud`R<^5`J#_wr(48IoGKSviTl|X&lP3%KwkdV<`N8 zL)ki&AcO)RyFU>s6(8}6+^?4p^i2oj5p(LVh=9D<;nm2}tiHe^)LkxC9xLPq63D}* za<+)~5q=XXX0ZxiT=zb37TUr#I3cF=2{p4-W1GL<-N>o`P2Uz2?PbLo>hq3g`W;@R zBxH2~i^-$+ciHR=ceg`TMUD=td=A|M1WLJ1uZh4;&iAh8vKL4nEty$QA1Lmo`mqww zjlI_~tAFd4e5iSgSt5LJL+S4gyN*;A5%j`+xY=YE`;&gEy_Vd=9lq2j;%muvMckbi zQg~>z5PbtZ1m9n81-Ackvg=OPzs|F3t8MT9L##iW!D;@YB(SwR@$(-t1N*);IsUZn z&!+H!|DV3({^7&#^`5ZO7%`yT9yRRrp&vdRJB-^2*s8s4FkGwoagw zI#fq*_w(lP++@o(W^ue(-rovqe;6IDlB&8@6yD>GUMJmsisUp`VHM!kBs324MIa6i zZiiHPJAQll_^~g$^Zu^Xz8Pu433C*3UpetbyYi4>s(OIZ2^zrdSVx^tj_r zoo=k+DuGbM38FRakFn$j#LK%}ajRrpC08F_y4sAp(P~ng+daN;n-eEp!8q(((Ve*N z8NIAKIoM6}tf%k-1Mvv?j5ejFt|uJ@f<|}p7OwG5t#y=63uXNvED-p&p&DDzcUQ;G z<^p~)?lG&rYVW=6Hu7TuozXlv=%d4x-j-&8u2PTS{NTLa07D|Gj`do;?EJ?p`PM{5LR@m6No zD)=b=^gJ1gOihjlZ5=`Dhlj@l+qG4`2*r_QG%>Z3YEi~x4P+v>@<~^m@KCbtJ~Z)w zaZYP>9#pFD&tUPMTu#KSw9+_f!d;8XXaH)+SWn7?C+Q8^ZV6B`;Gd^#Hnw?r^+6WCRGcY7>plR8F#U+7I{?6N`oE@=8P|Ogv(+k1KT+1uBzTStW>hv z!-e+!-I2a$62z3EZfmPYXE$x$C`(;+%e)lU+AneE0mpEB^A}9jkT+j<+&P8^eO^?a z~z3_A#>fhA9w|H}fxo@58@_Y`69GdQc@aVR`r!{kH`fa=btN88? zb^m4!gv31Rv>%do1Vm~d?R19fixKm3rFT3BH+XI}u;AK1Y=s_t1$DQn z9I6T{zF~E5xL>e-MdsQB?B4YlV>PN(s^IYv5@9=e&QSHe#H+Qw`j4O>K}E)Wil-(+ z69Vs+7Q%-8nt`KmeP#Btn=nOC3)q%2%vPdVKaToywzj3ltj?u1MLv99>nYytsY+JB zVfLCGx>`Ny2$UVW2jVpe`c&*8WE0)BxWJ5+BTEZLSN69jAXkS6_e+IhXeII~^%k|gPf_G4XVb64?`OF%ZyP<2WyPZx>N|Sh1FSyp5kkzB? zret%ei#u7w?s0D9CAG#qWB{h9is8TsPUa>0?CBqWFrn3?;JP!D>(#nzT%*8By1Tr0 zar`yVBb1>-M0V9EdQq_a%j&nPjz^DAl_xu^SF%x%u%$iD!tYU(tv*>0>N=8q0*{l| zOg7;fh!{AmbYw?smPdW1-aW2)I56%!N74UP+Tk~gbt5~7lNO_M(KL7Hhqk#Crw|TD`@E1MPc;la2D_Q$=C1USF5aS zU$0it0`j#NJC{{|q4*gVFGLgaJ?aG_E%MP)?;KC2-#A>oyPwRU=5)%WMB;nY19d+q z{*}*Sd`PnTDK3~g-jVe@ffngy)nZ%wFUyu0+SrMQd-RtDBW=r?eU*_h4#W< zD-Sru9K+Jl!o}6u($wLvuV6D+wf^(R+0xOK>d!+p zHZ@BZu$!~Fr3>(i6xh-A&xM1E|IafJh)vSdRa)KE)YTHWEv?Q=#rszpX>~p-zJI)- zqikktY5pgftOJnwTMjO&Kfiyn{>Ke&;0E`<-Qajj1$_R_Ud0(~u5Rh7&!!?F#in8D z>H2pXvA-|ke_vz`seqa&T3Xncih(`#fu!tIJa0Luc=h70Se*#s}N~t zu$vQ5oxj@q*FS9PY#Pp{jxJ7r+HLN|Ca%sVVd-vTZmA|M2IQ<^YUTpGqVDSKX72ho zZGhbPL7;!7)}#dYqdV_>nVk;ln>GNbyrOG}N0;SQb|r@-8_Vv^zJ8(V02 z+;JLhMHywn@!7QklwL|8i zKURn2oSap!yCMC1En~S91u%!r=BK3i=72p#Es5#3ReRx{0@0k-Vgk&0(Pm}O_9YZB ztW&TmcZJv#E{g{-6ItGpP|`Dzc)jwRE!+`yTbP1`%SPVlpW5Z=q^84mX1BEW8FT7m(+|!f)f2oP-Saf2>_5MM0oha~&3q+R>sb)CCm{6A zc~1m|FzgMn7G-oK#5P!!EHow1U%Z%q$)mw7s#&Ae8(_L1iBc%b6^ezz`VQyK&8%ap z;n>gEh8#li_RjbHoJ#)_@c9D*{}h?Ogz+Cx!KUtJ=K2SW{=x?~Z5s4Ih-16T({fbcszf&WM%m6fTz zizVB?Bb(tj%KnT2b;rlY=c0Facjt!{`b}Ao zOI^5|g~bm&=MNuhnwqq&WV;GH3z_f(zQk(q``@<>w&a9{hKk((j;U4HI8J7fdAO+Z zuP|!YquT|JiMO@0%l6tyCF6C}k;lftVbgE?Oogh#ETCB%H?jYFvyZ^qW+4a$3>q&k zE(G{jeW8l*am92VVb8O7Z02_}R5HkfC#w(lS1x11#cGx#Y1|x1KDXC33fZZtFJ8X1 zx3yKP)6>(VrKOFBNB|lA_(UMUpDpB7YduB**St^6o_UmzkRXDXh_Og1dyv8{K*I1i zntw~g092^W=c#QcFjd zpuYJ*0rE|G8>F#3sJh~{n>jqmcj>cwljUalZc=UZ+Xz*nzdvFsTQ5>psRMCP4uwJw zT-;(0#tB+IPLpzYBI(lON2CmrapSYEl1r$L_x8TIAEzNw0lMdumX=-|&dFzeT!~X< zHSTEhg*y|aH#sg3J{M*D?RhZG@Ip#XO7`O*^Cxv~c^)6=j$*3YdN-tLnUO(R(KnTNxJ^`WK+)b(kW;0-2gXIgD?o~n$3L&~zbn7zDWSQ}PLe>`zrDS^zq_em@r9O1L+MCIwg@mjhEz~V&y^=xx67+Ei5b(~63UKK}DFO_`CKn*| zh0(v3;WWOF*ela4uZ2iz5Z@ew{mVOEGj4?eVWbZUN45wG5EShQo{|>19I#%JQiv#**dN_G6g+0s>+AQ#sHV8aT#Tu%tBHOy=+j04J8B?XRiXd zy*H3ca>l7Nqsaw{U8rjdn2mo>kyB74J&$95Y4F;VzH?B5+r!K(udq-ObaLFZ>bDui zo0gWA<$n+NxjO09)lN-M7j#++_+dXxHPYzoDto@1<_@q)6dCUzD~${?n*@r@?c?Te zq5_RN%IX;4%w`4}$IOR8I z(s{vygqmF$qNFu{=S&+slMF=O-Y?Fstg4~|axbA;{u}sV5=5V8<0|RWHZ^tSXSs_H z6%E_HHPs{)>p8T}U%f7|Oraa{M;j8nvV_DtyNm&@*GW?0#|EHz=n-I&BY z0r@)A(rCGnwi8nF0#RpH0FxbMSq3Trcou>VbIw|Z-QV8>2r=$r>tYCZv$eH7U1^VR zD%;`@<}!o(%H!`&St_)8UmUEjn_gIlQ=zuSvdC!8mcrCG=`(! z=gA}!d|1XXz?x^&=2_F++?<~;Zn$;ZCvsn7){DVpTHBl4P+59LHB$bDzp3bC^Dqy; zAVAs-&E`x)__d69)#Hypow;750L)aGn`;X2S2pA_HSM{}%jYeX0}XilfXH_sW~v5D z+nYZG5uS-<04U->&0p`5wMarELqbf9hK6=;y zu(RuuANllvK%(y)r<&PRhK|OK4rGX?9oN3|bH5LXw*ibpJfZYGJ6rETxxsz6@WU&5x`o%G*PeE6 zq)36PG9S!SDjo3V>GtXxZ+u?%%4efFjq6fK(5}p;zd-S2fb{Di4ayyX=PX?&(*)vU zCvMDJzR~rCg@u5M#i(9&I$P@kba`j(cR&eQo*c}SUtE3Sas1^8usq+PZO9WFS6O`f z5sBDG6rbRRK2VO*j|Fb$jz$|(n`$mZcEJ;(-T*p}oA81W@+P5vJ;I|ca;iaGd2a?9 zivYO#U;I$jWMxs@Cz~TVM)+ALTnsj<)GD0O6y(DE3n(8R3bWJGeGV&{v?}yy>}F9*qIu`&fY6FwzVy%4AT}pg|VFL+tRUL@3t=$gD%^NWQbLT1zmwx^FYJ6WQ^W*NiPXs&Z zGCu|sAN#A#3%a&uVr-nfwGJpzSAI+CT84$SC2%JTri|5KcdcB88}j!p=h&4Nx5EYN zY+*pio)ONJ-t|%X|5{u`q_5seu~b)AQ+;YO?Flupv7~PWAOAPW{+W><^k~J7finFK6&2;?<|gQVl#-GXUgv1q`r;ioW>H2KzHd)0_w{t~ zr7be~X94?}b2wV*vj-!eW9|X2#GgP{S&wEsZ4bqLruIoxwx3D6G9_|gx2y#?sUWYT z!$?i9k)Mwb0O;z*=4LqJ;*ft%vC#*)K$Lyk)jrLflL#W9_PR2zjAo?EHmLOy6B82< zi@+A2N*+t2`RO200WL1WVQccxGJ6h;%+yrXIt!baCvMlL4q>7gf(GrQsY!_>M!8zd_sOq6!slA7C53$5MqjI{M0~HS{i0!YW1xh0het=gfRWv7!7h`ZjS4hx0WjXYn%#VT4I(C% zmYA}8U4UACdbn0^WXh{G+dKahtnujhiO6+e3q9#?04a20t&%D^We}w|=Lbu&S4`Qdo_>a5rZgz-^8|W-gTIP6w4lI8PjUcp$y9-13id<1wX+#I9*Iv_Cbp@ zMJ@fz!e-b)_!|PR0m5WkFMPGwiDc{W1Qf|NAZH%etJz37?@$>2eaTn(Hcm2i_;9s? z5ZN6vc$RQ6+5ROZJA1X$-#;k1GHtqpo12Tv_u*!B>{2Vpx0HlZqCT_1B5(%zr9`ZN zoulK)_rS-1+yn3gf!yKvU-#S@UtczLw%ZQ?M_*w2vjN5~AASLUA)^e^4VB}#Jgne>L}_t2;ktL2gQ+++5an zoFDnY_9n;$-M_q+=?$awqo-C~LvUA0qS6IbffYc+){Hieq)41)vdMFlTxw#&zkSns)>(Dm`0ON8RyCN-w7aWp-+uri=ee;4^ zr83D|JrZS1j2A(!{l10|HwEyur>Eyd5aA4yQtUxjqQKdOft!R*r{1Z-tPAx@vptbG zShTN5DXTkpdQi&Fq?EA)GiQ+CYtTws!@CUf_)mBRda}VVz!=TU%(TT30>+l1(KlD8 z{^wht(ggYW7Zw+7wM2P1K%mN<`(2TTxSDc)?c<2l)KrJ1#^Z%LYez>V7KZ%U%1YK$ z`Z{zqjqGN5_|!D=^;0=IQmeN!ezS zruT{M$<`>vr(9Kt1y8@MmNcMlP-@>a5CD1sW)?(LFq_(%sPuO(CT_t_ z)GPS7eeoqWnoT2_h1RmTh@R3euft-&VB5EE*C(x~JX~DU%)*w842;Eaz=t41T(H2Z ziwp1wLWZlg$xZTY|L0YcvJ{M`lPSfQAx}!(4h&6VrA}kpzHrIR7~TLw+Ws+0|Jx5P zE-u>Ib1+zaTDha-Hd#S3o3T-cub02Sf9(NM)}TA9m6YgNe2#!$#oJ=gyI~Dk+ya5V zAXNI>-^JlnGepy!w3w579f&;55 z0M1W;HRmT~WM})sx05X+d|!)3FeX7Ka>o0zZJmV$EtWT8C<{{Kh3~(x$kYk1ePNaX z=vag=Y74284NU{|4WhJQcrqayzf4h4kxnV&IVowp<`&8WlQCSbLzJ=3BE8nKp|q>3 z>(uY6RT;3bzJLF|u>q8FK>Vz7?JWg_*v80;i-1-)R*&pUbFVj*$kGVyA>5ynkpRW! z2ljx*Ynh6l5X645vG+a=H}Q;=v@~FP0?rZ|v`%Q|>F1c3tBZ?<#zrM2r5&OIGkbgc zo6F<)nc4;bTL9mK51@~F%l)Hzf z6gWJ#;+E8aimzrmLe03`c5t!5?$5~T`sc-^$H_1F-bB7wBlUJ%)W@W<;$mr#*gclv zTW`k(=UrT-@vgF>fnPQuZC~={ov(*}lPwcyv}&uz62Fy?#4iBGc!tf+mW{9R3Pev{ zc0U!+nc+$mtcXokBh+sw-)QcHK7#-QOR2D^cKHQz|cxo2iZjf}MAM;2G>CVa#7I@>b))fq^ITK0jP!ihZ zI382BS2MfpjlXJ#v~#!no=uG)e?~05!Az%4HF=|_YLir9EgM8NqsW|HIcR@ZF%9Wi zd|Y;W{-NddL4JjC@Qqv}?b2|0EZ#5vj|8sOCJCrMAzFFlI)s1M#NG}438%`{N8<;? zoL1~TFiuX`9^sjh*7`7%#4r@Daph81rAJV4QX$yLU=@otmxy|fF=?M{7LRJTUW%t8@TA$E;M)oT*u@7S|J{mU%7m8M-oE zTkszBGD6cqLQ~~b=Wy;(vkN-iiAgS&?PWy#$@e^`Vxsd6nbR8f4m8&7Pi2QY*h=KPVxo6ND3hN)&y(eE@J-ni}=eU*O)^ex=I zdN|p`O`?i^ADbD&L+=%vB%AxF`VBA&hx7=^GE6{9UIR#00{B~IpX+OLe(M{4{7OKE zT24(S)~dDMEGz4Y@{7FS>6S&nGQ9hM*BQF=u13iS=mO}mNvZ*sEz7@j!O=MM2ULF8 zoGvBFR?gVinB66!BuG>*!BT=$p^YO(CYWr1=e6R?f|icl#6eyec^F@yV3<>&Xqt<} z!8!E#pMI26wV%;J1aLf{A8ZQD=j?C8lG^P38W+*Gt?Sa^OgtgAc^|8H z^8-;%Dk3v-msI!ae0%hj0RW`1|3*Ev2(z%2TrIIv^(WcbjLQx`9UFMN|@v^kR%*kHe?fA&)0Q5Z#I}EE3N} zjA+88+gg2Dk^VSDx9H!uvWNw1>SsuPPw*P7*)VzP9sQWpGX5dG>J(U9v1U_4Ag>R> zqlEOJW;F&C_bM?vTuA!rKes0uV(OHFS*q03I_YK7cw*<Kr5@MBA;A#p`VTYrO-2UqJKk`u>MDJxCfcC4uF+JN>-*yhzLk$9Rw932 zs|}26Edx|xR9GVl7mec)T*k7^v%Iz3m1&MxDw;hs>6(qCz3X~RKQ!XZ%6VvHB4tAK zCxSH;>qn8rNy;CMUSgGh*q-CIn@wTK8=FcPVbqu0aB3vV!z-A{brrSc);fDuW6QV1 zi>`L{_pLPDmXxC6^70~0_jK70jbPk@6Ka`qaoOPMU*A63UMyRwWgL^Cl-{6E9^m2? z>}0O)by+l0%@jk4?7wk1HG*}bhDK0;dUBZL$ueL+k_*8idKWrOxmjaG_`|6x zunV!(gul9-jWZEj-$+$|7-5>}Dn20?{)=o;e?6a6n0Hap{JGG9xA@Iha+=})2pj$< zxM&(FK%S92LiT@?0Q@IP{?a_Zla9@JuCGmQdW*Rc-D2*`RxG|hwj%9q%~@me!8L-21KN-&$!?=ZpimjBK9~S(%$J%%e6fj zV8on^XiFQ(7oYcSO}b!Zahc=432jBEXb39J=xsE5(ED=Luw6cU(J;xjK#6T9=ncf1 zM4vSKy^Y(rLT=-ZWW3V+vMX7uTBCZtOhn^DtezN@z1ZI05pawYp}jen=Xc$Uy|pvs zoT#(F^hPP?dCyY1DAwL+G!j2~pv|st9lqmQE|p6*<_ou&QjpOUI~1C33s)T#!Of!R zwyH#nVSw{*j8tQv*Ap@79BD)e;Nx_A4e_cx-8EIxbnMN*2)=;&&FZ0)u zKM;+kcy8U{yH9I=yIxJYNGgA*sCk<)JtaObG?FabXf;CW(&^>lerm&{Q8sV$O{#3~ zw|?!QRHq#%VcT8_lElsQtsvTiiK2q3Wyct~TxiFMeo420+mLc`mZ9tuRg`!PbR_Au z3{#$3ZxVI+>tp>ctHBqa24*pgs2hSb#xT&5qqXdk+(Ju&xt{l?vN?0SCK{ossPo~b zxuy%HiW;*g460XSR6CL@eE&1ht{ZLyi}bRk1T@JI=0H$A?K|)**kT9;U#V0RwgWWc z{hp2Af~PmS_2*^DSS>ktq+u7~2;YkW?+h#2Pf5ocWkil4pJgoNUQti(Euv}7g@9YQW5Tko_^OQFtW~+ zx4rxSx`Oz>OQzUaxfGI$Xd<@cKaKSNJ=bq14@fO$=kouPnf5=cYyQJC?cAK4|D0)m z%g*tCWTu^mkMF-*2Xk!L8A&r&bC3DsWKb;La_>iAR8-emm}hlc9|2oUFcy!h#rltG zX8Y4Q^gN=z;xwm@Dq{chF9cA4;8=sF)_(d zmpxi;w!%CdWYA4s6~$~7I(z}~Xty6;csIdn9$4tQ@5i51_S|`l&dj@`dfyt;r+8@G z#q%FrB--j&(1MvVCtW3Og8RGgiepU8XUHb{YLSl5oU-@Cb7O*X7ze)#-4D|mh-?j7 zq`$M=d!LM6^8D%a7+>c3_3zC}n)J(TD4wn-F0AGiTt5fr7k1O71Y2dv-sYMLk);WR zzx%z0WZT;=PL<^iz7Vje`Z?ldNA)Y}_F}k^+(YTJW^#ss`hGdM@NK5YN^ZVyUi}j% z`dX)N1vpw|W0S8^Li@MuCc=KSABuN?7V5JU+N8gD?+@8zFpX(M<&BKP&ud*=2YW}&Y07uv9y?xu4IC^u-YVEa=E2?QLWJbSU|$w}Wk(vH_1oX~al#?F0rDG54Q z7pn3fLpw&!d!IQ%&!MoFc`}TH8cG&ILeJ@4X)~Df&_LGJOIS=OuV_rGvl6EoVgKJ%!OBC-8 zhi}vxZuNME<)8$KrLECk57P`UDooU^wYZH&hoqx&M{`a5UCutzbm+SKd_9J7vMF%| zdCIHj+$uv7R9O$lP5u(5y#R4V?#BV1EYu0kf99k`fiOi$7E;KI@ii{tp`OZ1E0!MP zs2=|%2f?U}>i0BpDq46+b2}flqevcSnU(wuVj^*++O6QEzO_TD{WTM9DopiNA`&(- z=1A5v$aSWfOC2`#!;a;~9KQ>K-Y{}pTHOTtVX8RzuNrB?@F%%@=ttU25y;qP$QzH$ zP+a=QrCo`&cB7_Yc-)@{CZu`YpRdV_Wr6anU+DC=)2D%?B!v|*6HXZweWLNLb~IfF z&e7%peKIKx)9T?J^-)@-Yqmk05jzHf6tHCYKBrqYJ)TAHYiX3C^m|5c8`VMn2oYY% zbWY*LSzvL6GIHQpEd{LQ(QeFDgLH<9pr1KtbD7a3rlzAz#AAf;keOAgx9 z;`r11DVO)_s?2Swe+mc#wM>MeVcKwn^Z0$KWRa%CQy?P)VvFYC#MESJ>*wQ)bJssb z;HLacI?ek<582zN`I#ELm@E4|^TZhirTv>lCnT zYXkbQ@)>xmEdv|j>WUI3TEe50h9%xk4*N<67SVC$4Z7TN!0;p+)>JIkV?F8XGea@F z#t^rH->i3`OYm6icF4%#0r&Fz)EmoZ(XQ+4$06c7Dox4C*}V-D4q>VnQgey>1HY{- zd^5uoy0%4@kwf;W1u&_+U$!I*p}3(tZsYRunEc#;Av4=!%W@fy#k-+1mX)$jNvh1F zoKHQXLwZK}Mw&QO{91})EhkEZS>dMM*B>M!qQbSR+In{olHaw{LO_xmv;JLB2xsy7 zvDieP67I+^Rs{X<4>g!75d8~QLvXzp{It+06@yb1raDg=0dhwbdH&Y@SJ@w}5hC`N z^7!lW@-66kZ3f)g{(FR%_jK8(eVCpwnkj^>3QUHblTAh_|TZz!rFN6m=R|>nY#pGkML5wC;fi~wLu}v)RhP<_+ad^A!B3w&gDuYeD3|xn zduXiTB1QNnXhb=}ryVz>2{{=-EL-`*TK6sS>~=qBv~N&W+i68U8A>GM(I4WipF>d} zA^HzFxU+dd50Wv_1_h4F#a1$NnP*m-E;x1H?9{2=5vH1Lc6lqtz3>WrvDw-%@wI3D zyzzWcV~4P7-hw9NO$w-g-Tz`n@$z;H>Q($r_t7zzW0ElEjqRecbO^N!`i*Vw8-c-M zb>u|`=l4rDF1Qd+&J+&`^zt1U44wY9?!^FAT>ow3)Ok2p=8OVDM~Oe%yg&JIJ{Ym! z;*-k14ofAW4_C|Bqp?l@Np@Ohhm?YhqI7aE=WetwU|?w2zDjrW9RJf}U`g&7l?UUU zhOs{+!3=lhWb(=J+tKD1k4&C-q)1UNK4U@F;iJ4ga`NHClpE^VZchbaqNC_YXrmkj zl922XB)hsv=1LdHUwOV^c_NB2`qpAAm`lJf%6pSt`YEAABnl|_DRDdU2+z(4l3kYk z*o+RE?BtVv5$<{;A&$FtZV(5u80D|_{65n9hcQHc!^@*L=U zgOLZ-^2C11ZkjA1J0%jypli!4>7T-{5ofOg)-jo9)7Otl0u5Dr3Tk5do7XR!2|b3V zXHfSZbX9UfKZxp(BsCI3kgCEtGk8`FA=+(kshuqe5NdffIKmon>mXql6TJ@Y;9C`$ zIvyu-QpEcX^Us6k`u+K`lpu`v(GZDf5(!H0vc%ys?uhT`z4J9V3RvdWMsB+Ae1lFP zhDn07hlAgJ)_PHGQ*d;uSzmg)y47F~8iZ5Ez2&S*a~wB_{K?~DO@?_VQCjr7B_*{V zW%#?0UFbCQPJ3jrpH3M(`t8i(ZG|@`S_&vF+q~K(=@jcCJIiaP00$dm%RKgK)qm#f z3oBJiz>5G-KuC)d2r<6j3-K?dDC9oo7r?|sNy)*Ku~TZ!Hh+ct9@}O&*e&%W@@Wgl zRAt)Fy;D#c4||?6U1Nrz{+Pp*!(%eGIeD_Lb1*_L&g$=)v1sj)Rt^CI(_`I{2G9UpcmH0$Fm8uW_R+BkdtLuz z^Q*Pf7cfybzPZqEx$*ylZ zZ*5JWA%qZOV*!zL6h z^2vA{p-2I#y=FCL@9wNBCN^(KxxfN=%8B%R|JR)I|!5}6%?8|R$Yor;Q}63 z)8^$V5P&u*Q}~@;fmabz;JsZOzuO-D7(aQDR1oWHJhOzcmDb<8KCaVQK3=em(@la! z*_Cu&nVnt$luOQoosw<{7+=j;1n@_`dPeV`2D&cc^#j4k`d`EQ5}1Zq@`ljA%An^?Z=ezE`H7>f*3q^N&G+@c+K>{>=a!${C@k9p`Sm2py*)>%nAFj)1#@-Wt4Wu1GXb(52<>u zJt~ri<01gXtNZkJc&cwFFUDpRA-z<(t;VkRJr&)b?LccH0Ew(4#f))g4Uq>8_dVZJuKpt3M50 zkEDgXuVufyKG#q8aswJ+jR{NTZfSWp8&kx(yct*jQV5h^izRh;oKT15E_jws*sLe8 zw1)8B6&U-7pJN&!zA zY^4qR@K^p8T*4INzzRJ!QeRka-p~(<`KzTvetgwrzbR8I+H@~2W41y)+VLkmkCmrW zIi02oVoI=uAzV)-wU_G;EZ?*eTh!D}T^Y2R%y_5Mg4N7LdP*bpGE@lc7@wEd;mVEQ}CH8H6u2-kj3 z=L~Nj=ymq9JRIQ}Ijb{LV2v?hvVCo0R!Hw$ZF8!&Au(=tb)~^>;5)1r`$KyN9d(vJ zbvZ~je2Pbg%ZrrR=kjWRr_x^zg$SCF)?F0;VC{o!=FQFAr_8<^Qqc@<6{#T zTXrv1TM_Z?9R4#QZ1rI~J+!!z(5dJ3NQ~gtA^zf;8Ce8qHu2E6@w?`>K$XER?#LpN zTS;~Zi8h&aox||gl~4lj`!V>Keb30btDOYq;5Zu#_LW9jz~{>tpSwDkxxnny$uXJn^INSD-V(^ z(O}`m%K<^yWD4jKxf}qp3xi#~w3jnOv5x|C@-9)9T=yj@LoB-}Zdy+rLEbQo(^sd8 zB9R~=Er3eW&7&hv6pI;E@o>=@ZT(eXaiSA_enDnf=kwWqi1Xd-Z2sd`kJamqNPSqs zelRtj83E$vd`RDQI)h0X9^*HuWcGT6Dz$A@nz!ZFX+ZZr=KtdEJ)ojmx^+<$0TBTe z5y>bLBsDn)#SMt$oM}mtb57lYASwa^LX(js83ZJU7Lc5CZelk%HmRY*ZT8;(N%x*{ z#(VFad)~c024nOnR@a)V>Z@;lRkh}EP@T*N>X6mcR8{PiD&L0$o*(pMZK@B7q30jw^a^Wyh_S0t2}MR zuJwQ5>MbFhH#Khu9`#G|cs){mo{=ogi{Z#m$)e;cX|6b(YbrJRb$@cUqn%P{<3#}M z=Z)7{e9{tslIG#{0ZpPW-@PlCht2zr9sNUcxLy(RNES&A{G67$jNLZ1x*z;UL++VI z`7OS(z@x2_oRsFVZf8;d%72eE!Ye84wj~cJjz+CG*6)$zxaa$qGW&48ejk6 zCacapg>nj!tsCiOr|{R-7tlIoo~xTTDT=G@i~nYLg|r4L9WfJ;`?vzm-~U zaRo@tGS5uTJN?(FLXtmyax#B%F?{{R2v2cZNwmTI4aXL**lBMZXDLumu#rLY8;WY) z{zp15cIA8HpE^%rY!1Mu*?yk=oloOIhGxq3d=ypMI}yqI9Xu@%nD|h4QSt)MYdURn zgA7?>@i*4P!h{Cn4vnM(WXgEjQo1&PXTihJjTai#aYogOcOPawlsXM5wAkq{<|F%{ zapeV{eS44MBiuOB$x2~mQ41OPbp3!;5WhS!_JVGr(=V2tO6R1}7y0f!3;(-r&*;(c z&DCQ+suY^IU&kY8hIi>zL9PY31yyu zA9_%ilCnL|K;1=jBlOdjWpGmcV5*3mk%8ESA)~82vJElp)gF@yMpK8DBrY|qrqR4a|&p296V|g^epRb!g*Ja)++motiT&d<%*m-<*A5b*>n&xS7`W!BzPHq=JeUe7lRJM7%HM$f{Y_X?3?fV$)t_k>p9D{C+ z0sC!_xNdTcbtycNcRHF06vGC^M9+ExV$9LOLGn^Pfk@(>rs@40dOgscK@YGzTW-p2 zep`XCYjBM*66TZ6p)M}SXZo}Rx!j5me5{%ezPH2I$x2MuQ?@aeMLtASmG*xSUK{gT zfOg`$C`@EmIeC(zu^~t?6?Nw5MDt*b1T{ww4*r#q86>+u&X?jtN7>KwYY)>_3-tI+ z8=ThY{?8NQ!E*)o=l6pTK#8LKQ>Gbt0}qWyy21qvXl?IyJD&i!@KnVGtRI}hH`=~u zy047%gS?YL`-o={L%X)LLAg1@2>eiqs#zt-;3M%vM;ac`kkrK0Q$h)kVKCvJ*wukQlDaTnoZPTlL zuFi-AbqR~fYT|S*7BfG=`18jNkC!4W-T$PkYP@?-*furVIP<#v5a&JZ%<;`46@u>B zy|XbYvbt%7z|h&G4wD4h`*graZ6(Wd3BFUx^@nV>Q#yAW_Lps}{=6C_-FBzd0cO5j zQz*R_PL7fRJHgnmNtmk+oo<>upkMIx&N7 z*RQc}TptaJK&q03{4J~^zHB$4?orU4E=ev5yGc2TGDWPIe28)lZOf5l@Mg%PDIMq~fB zk)t_%T``ykN<~1X6kJ4WkrQ7=Q*JJkz!+2|4K=2~udRi%wu1@wAf%%I&d!|ZzulSp z-w=Q=jt_Uoq<>ZSKlVZY{WxF&eqqsn9i=~ztmZnWcon68%#3*XU?~79 z_m(AMTKUUkQfZH2r~YMZeV1lq)Ea%L1jI5i&5Ww* zer#K?JKk1Ewv%yQ*IHN=81dKcQ>}SIH6|q4!1AKx!_$17FCR02uW8fcR8`yX`wZ|5 zzuF8TI+IR@uC*YAL**YZ1`wV(FHd5J1&j0dg8y%AU-1rCiL&(&~nhR8gQbf>s}I z1q)I&NU`gFko!YREya8mWJ!+Yqa2+hg@@sTgX==!kE%W&NgE1W18ly^swY;zAyKjF z(|bp+1R-_?5q^K+*49Pd5=y>cdNT9}x39y@G`2Mpm*dd-Q`5-8*Q~o@mpSI^1Bd)@ z^-I66pQ!FdM!#iJz7A)iC?xDdF+A4uSW&2I%lKkd*+sl|t{aJTH|q-HRIp{XKM+E)r=u_J$u+MgA zg5ZOKwLt_1okWbuz%OF5o8$8?d~=;({ywjm_E zHZ@RyHNBZLU#yhk#G&TYPCiUY>p+`4@rjT(qK{S_&`GQ9llIFv3$0lq7XMImxfab& ztkaW~+xzN!NN(J9vpfT}&#&X|pF8_;H+_6D0#nZ(SHwiLzb^_XxBz_4wMPFtgnmV= z|Dc%vFsXq6zqt56-n9@F7yB=H*FsSAe@Z&Cvw(5cJxkv>#N|K_3AMj8z+X8(&P`=^ z7<=2xr)RIAJ^KMB93l)+VU2ZieUMV~i0rwEXy|=-Vb49?8+~lY45&qQBiD1d_Hz^q<@BNTm5UpIj`POEP5&2~C3JBq)&+mn}HG|D5+- z2;K@FM3FEz__oHm@&+Bx$(_$Iax~9uMrrKJ_W%_M2woQrp!Q;*sAe`GZZI2M2e#-D zdvkp>H63<-%$Mt%yGBn)K%koLDt)dQ00&2?^F7}*d%6E1ho6Ap%j+|~ZU+CSs5kc& z0+dD@b&dw`Mt|?FeIT3i_8ow5R4NXZ9_LC-K)|oif_ayj5JbO&e=VQ?0jbFWhm$V> z!P{?PyysLkQUnCgG}|7aN#_^|2v|5R$gp9%`0MU`{Xqn7^C2N1xcO>2RL-IiZ^#Wc zr`F6L3;3|-(0esY8q<6D8$ORWJ;2$`2=!%Po!xm+z~UC{(hIhktGWi+tCloyJ99V` zO!s{AlinCq%8g{sGt0GL(8}aJ78Aak-zbP156nR=CHk{1z9e|7oZ26X+oqH~c1^|Q zY_#|Ffu}{6O9i2KY>^qWM|%}ykaF0=43Ud~2ENQvf8W*K9$Ei2^wH_&UhLx6qKm0} z``*6$-IHFxzMb<^8Wr4k0s`N}zn=0*cP}I+=x!2w<+k+Y$ZSWvAGR9>FO3@lXp}4f z?aJv-Z!k5T*8_2fIjpui=>`rUgNrjVf)9m%|Ga~2KchJoOf9Dyupqm9mwgCj4c~BLNW)^_(k^%2j*hJ zDKxyMn#Ee5vIc;jmO_fkZk+CJg)g`^{V2eJQ_jXOs=?@umsV4@V8(z0M2b3+jDVl` zua0{en!qeVqJKD`2e47&)Yz-P^U$Ip+9_k$_2Vj9d*;r3xdEB%H2ONhXSKh2_1@By z(sdGGnJ!LpMF5~{ev2VgqT2Cbu}U$nqkLaBeT$*)M$4I^?dmcFLY(m=07R;KhxNtt zNjcdHAJ=wx@e61(Mjmc*SB%Q=XT=fTr~{(&1p}Q-z1<5qr)?wAI-~{B4ERHiN4(y8 z!cgMqM_y_zGwH&`w@YJ#_KMzW6(nx-7{N{>+&npnnBoUheSFzo~wWpu>Ghumb#XYsDx` zR*0P?QU$h-*{H~J4ipqOfsY5*995tjnOhF>q4+a3*>eT~L`?jKMOz)+G}4B+NT{EI zU+$*>)lE4ef@hDe#)wx(k&OnfX5;Vi!CAB9aS_>@;LlWZTt9Y39S4jSgN%0}#$P`$%Z?R@T3C$pQW~%n4H4{6N4fcn>JvJ1^ zG!p8t2t#)UeOtR%Vic2s#*~!hr|ZpBe!a`wf3S-~bGb4ZVee%!qtbFj>d2ATHKaUB z)?0?ftVGe(2i!kAc41`cTDD+sF=i%IZ)y-y#jSGNd73HcT9v4u`yOmT{Lts%k2+qZ z_d^VgJ{Ry1Tf&YP89G(#fqOPBoA$!$g_y1qlm4vH-ZZDY0E ze2F!{RbNy}5E1MJ{euP$z^6kPx~~Uk1|R{C=dW%fAV6YQ7EzBV^h3Rjf;p-~MuFB? z>v2@xuMxT$Vna8aC2wQ*A*XmZT*oId3Fib(m6t}tKtVR=*7d`T(+%pMgYs0)u~q{SB%-fJA_Jp;61Vgn9S0Km`X5A1Gl{2-Pazd1 zn8hfAmMRDD;ncm?U8}}sOUf|wBRd`L) zlCn(>Xrw>tJ(L1?=O^z1ayQ$J+Q@^vB0$@sDoZ+&{>oi?r0^iWTS-fin zQj^K&1}IP4e^C!$NA_{HPd!0E=m$t@Z)m)XJg@A_A~Vkj%71i3(Vra9Qh+|=$OhYw zOCMPu%$ZjTLh;EMS^nZG(yEOPvjh>KmpNJ5xtGX}T?RQv z-hv|{Am|oJCc^pB;Ly9cAXhG)z>8YE%f-9*el?F)+z@o(piQNmdaB$!Xy%Xx@1G6+ zKY0EBg@_o&D~}7xGXT%ORV2-1i9r~t$X6}23bC-*BbviEREMi-S_QW>_)Lolc0sl#w z?cb^9S!FOBBliC;<;%ZQ<^RKCmN(H%bu(h7yX$O=8KX&_7vmw(y1NsJpM=0%s7`!8 z&rH`B?2WhR7Qx@Rp6$lA=I;Br`nqaZb#;8Ix?B%qas~M#x${$u70use5LV~GGL%!1 zJtMr%ywwXb3$+)a-e;#irmj+Mo9APhJ3J`G>jatzL`GqG^NiRlF@P-d#ZzQoDi9@2 z9TYCvB5i!3mQosU`e;O=S5sm=PY z?XkEb|J>s_p)51I7}=ds@StJQse`SO>(bY@djkMZ*}~cJdEIoZ@Tqk$#Wey>X1z;! zl_^-~^FEv&0g-~Gb=Dl%Tgh+$tQYbgG45mTh$NnZP?m^4Ig-X zdsJ5YRuoD=Z~&S_kD3Jgn98|;>Z^D!vW3K(f0~wYq1fRzplbvyyVLcZOZQHVF@9yw zVp4#zvOh6>x?Kkb5%YVy8x3{A#{eIO^R485?-kY|zsA~2MO*Lf!+bfWA!3GkXkm3J zzBiYYwMkM~0b5Udh0+QKzy#c0_B~5B`(WdVpo-JZZkO+wLBLhJe5YVj>e*auCf#iA z5^-)#%Atg(+##j*u^5T>Vw3(QJXvqV75JN5Zruyhv)77GCNh)hZ+Lz> zuEn-2g`XKbtdgOglJ9HXb6h{-5yvN^d%iv{Qa!&FSyX$9Y({0+4)&xFP6e`poqo*8 zR6{5fN)J3mm(~j7Q7s+c^WoK0I)}GclYtaW3sa2E`3nX^YpD#(5{siAQb!RN4UMT8 za^fQ>HtB|%pK1q7ec4rNIYFMoyN(m zqeW!P0O{phL)7`@upeM+a(!st^P5X(X6F1HL?PjFF9L{C>1sDv!MkU?WFLB5Uz?ZH zvQ&{Ye9!AgYGLp|mqBoVosQ=qIB~zE2lSq51}U#J)v=Jwya?TzPwwBe&Kmh%TjQ@0 zLcY;50lnVhy=!fPNxZ=H4KXajCKJ7-Ic*h_&_bX6L9_*6QB&L|7Jia{>TOEayi+@C z-WL!YtKA+k)z2gNbKZTW$OYF;tWJp@n}^6e?EpPGS6O&q{~CdJsJG6~hfj3} zE0T7Kr@D?X0DprYttXz?)<;$o3Gxt#(v97@-UoQj{YhyXY z&)Wq&LOUsL(4pKHh$Xg*RRSr-qt5R14-VU|`e^JzPErSVfFR3rS$nHyY{!*fs91xx zPvjyXa0p@Xdg#=CjPnJj+Z_%s*75@dzIgEa!W5u9_vucmD2Z?l+}~GGEdS|w)n@%S z-Yq^)q8q@(!G*hWj(E=fRxp?*HSAF^9PGGQehU^*yx-ZO$BG-nSDi-Bx}MA^f5ta> zL3ef_Q&N^0_+*Q=ZLuP5HUszI235fOr>Q`Bu?Ky=!M(7hftgO6$k%1DT7XcSlY|5! zhriXA-{ZU8O>;{t{C!@J5+{BW({3EnQwUOqw_?hxBOcT(6mI<@WEX>4mo~e4@5!cD zc?@1)dv_d#6>$`?68S?!P)Jo{)%Rbuzce;zzdM0?==dI+XUdfhU4Z)ChX6*a%g>sl z3WW$4S(9z{K5p#-ze`F+_&gDZ9wUOh)hEwD>K-6cm|6p;uL>c-lKOqqP}tsXT}F|b z2s!NfS%Ahlwl-K|{id1+s7La~81(IaLtSHG04o0yGL<=-Zq5}U%5ru)@58>^{+|6@ z@SY}uc95aGyM^djSGs+C0N~1Zi^;2dd~S5)r%aXego!cVB!v^I6!z;uG#KQM8&Ddo zwQeSRx3IOlp*~?gP)~bw5N*A1?OVQcAO_ndH-qfXj}SF;Af*V_0t||;Lk>m?T2c%9 z1HbyeoAp_TZeJ%LP>vURzE-|&JqA07(Fg!312R%)J8Q1VkkDbjBGa9Ym%jlzovon|dUQgfhFt#fko#c@pT7!`*3fMh^>CGwD%By2U4YT5NBY zE@wVowYy9~Q=cTD)}s5?11)90YVyDa24n0~Z3F~vwn^P|b<;zd4y~6QjRJW3`VB$B z2TlrqJ*p}bB61BUCm{H$IWq*{7$oBRvhVn(h{LP%4~gd}xa!GCq=`BlCh>@MJJSBb zrPf)(aDEZLYItAkXdTkJz3A$tUpwJixF~l}Dm(`eN#7Z4d1_>(ve%q`jo|G$XDZ6( zr{t_7(^JeO9t}iEK*7c9I)R&C`cCn3>GYl)vky`o0br~X=4%Ko@D+wF(83U z!3&>h@^~GexD2@u#$9^<^9ASlBy0IJpYqI$Uu6+TH+{X(_yd2ui93%>oA|99LlL*N zym2rszT}hDX1HZQz2O#hvG6Dgxt=b{jz1Wsdz7r>*rQ^cTi-qxpFT0+V(98rmP6iV zQ=XGgdUQSL$M}n`Cj;*n_XF_%;QE46sObG~DBP<Hi__U1A#qN#n+3sb? zfLBLOwOv2pkAE4r0cn+Rb)rX`c1Mha-bA0z&chvj7@CLm!l00OOJQhQxuJe8Dz7{yxenz*)-DOGN*S z+=3SH*j5z!GA`HhswGm2Q1FY9W3?yx(kmw0->{KWjA}P9;M;-nuayNt%1|c3W`3ZL#s!qvhGA$pc%*WX*?D)d zZOKNey>S>+X*n=N1Ct3nFwTgIFh=h9A!tDjIsOMYG2vTg=dY2K^=HSf2kph&xBA&j z8xx084%7f-|Zq8bRj+bCxw6G(z()<=4Y=_o=nV%Pc6tf*P zK3t!SCE)?0`j1MxuID_v%pynH4mCKo_8M>r(hTk_RO~5jqAX8GoylLsY!oe?p6}3B z(UkdBKgPVJ1`1K!fDz-Ar)j>SD`IPIMf zvK;_#S5-7MwbMf#Umz@#Nknfi3bU+NJD1C)fu>W!@zsO#aG!E1@oQ^P{HRwPLT4N5 zp;39oIeWwOeWUT+^8;NC*C~_ggQoI+QC2gXd4dN;um;g($*Ja12Df?YE^Xscjub?b zII}LX@67yVDER0ebro_^m1P}W(M~`5qN{=O9pzwP&=X$}DK48k0UuYKau~TVf^0|i zhr~@JzLJ0X719ATPugP-EP1a-ZExqz5P(EF9*s3=gA9XHI9uR^mbNCK~ zb`zk<0!S(P;;Kx?rK3c%WTOJmoQC3?)qbiu3#}egW`tV3*QXCQwm5kKS{c`|V@%xorduehf7A13u{~K*1if74M@zkdzeO z!s_6zUy22KLM7RRi2BVlX=Me+p6_ky(RBJ_`j)FVo#z6$7Hihcp zA|RpbF{NmgH)@N}CZJie$Vys(qs1Uv(5+=g(@bfqp9$sN1;V9gaeOX1z{C&jn+JnK z%u?6Tf?j2_S@Muy4CYdSotSOerhE7kL9UujIQWV>UWq_WUCWKr1C4@lCzrnDW(OHY z4MVr*qj}66any$)0$E^+6vn1ovKW9bkt-c~W-?sJR_4d4-CkCPDr-dG`&*g(r^_iu zLVJrrJONO4DSUNu4WPXe+A3z4pYUSPMAP=+!C_9>5bVNY5M?!jRPif`f1;eCiJ<8y ziW>k()QT`Qfsf|BBO+o%(#p>_clwV&1JS*$B=e1411ZBNmoHdGZntLbAIryHwxEvc14IEZLeIzGCHmdqYCfLa{bh_4T~^n zGB)yMLw_LCD=!JE!(BU*K0tams{2@*;RFwoqU16&>-B9AGGqq(;@)gq9;uXgF0oz` zsM-1+gt{9KUz;l+Ylr;*v~ZJh%^q**Qw=<5xR_u5X|#t{MK6gqUONy~ zn(CGug3h$yctIr1r<7ld*uCj-CB0aEU_qxBN?U@i$J2pTs0 zTI}(I4Rm@Y|w7^x{4|t`GfNT!^-(pQP?$_Sjp0Un*9SLHB6G}wc|!%5gZmz~#a;E~?OJ}GAU3*G*?bLB}K zTM4$d6}MU8Yphb`kIQUs4F0t8>X-xz-YH&e`u52`{xC`>u-H;m@4UjNl;lQA)9crF3@#ZbG_f^iJ9lq2kB%_ZRt4+te>QsrB~UZ$0XTe7=5?q& zAEWQ%j&e>pYZbSZ&(N5n{{npYW=zZe3vg}aRryv7lf`>CY`8ZDBCE!~C%4B-O*pwT zRu$5yhtCesBgMz*x-HZWVI72qU2m5eun9WivgQp2+&&^34%9d1Ee>1{oxx;Gh z58HcwRw^a#9^Af`&?#yLa{tYS@O1!vK)3OyM&rHMhfI}->lkkmIPGTTXW~hZ9@Ckh z^;VAO^2SZaHFa3K_Gc_ljx*mkRr3|%oJODA9Q$b_#R{8@x~=DAd9t(I#)5yUq;5dA zrpAb*|741}h(+t*E1q)Uns7KxzEygy3F-bI5hbWtmSM@&Z1*DzIZzeIU7gq57GBme$(m7Ib zP(%b2BER-Pl<`vG3$!sB8u!S)L(tx)buz7&?}X6|sXsSnmQbb8^nSisHYYnGaMbNZ z7W(B%;s@{icJdA>Z7Q?2^|U?TQRFu9fl+-pzFVV?B4>F!NJN^wUf0RmmYVD>zYmcS z9@USnf~Qj-9<8*JE2So^!vC<K|b3*k|K(j6^Z zEEjySjgmFrb4w|x(;)rne$kCLNo6$_pPKU$z3v0okIGOy}=|5DU>Z~Aa*C(hXI zMRKbojiF3HtsBV{229Avm zaR87cH)fCSO;C~s`yX1M6z<+q z{fxSti>!T_$@~CD&7=?0OBmvx5DS2>wlKNI?dkP$WNw*=LULg#m?};F5H%(E&Ka}H ze6aGCiUY_!FTv{;^Lvu8dQ(Hth|l;39j@Mf&GbEWQ`jR}96kvL*y;AwKwTF>vF(V9 zc5Qdv4-vq*4Z(Rf+jvo-&Uw&0-Q&JSt>g#T?@dYQ?C(yS5BZp#N)5YT(5=yYBQ-%O z_}5Mh(yQ6}=T-3XK;2w_w&bknS@UVAHKN}al!0mOxsFQA?z$^Pp`&S0Wex}U6gjfn zQglAMVKqy0^a9(eL>qm1kyz1>8qepC?V8LODfIHl4s^K3UEZAJTE#n?wF8zB$T@R~(tt3kV7D zch4NjkNjTIG&=nt7APz>=kMrg9JjZtCn3dJG7lE>?y?w~HC%((0ky)=mUr<~)_!tn z@uoRT#}M?f=4m@MNjE_Bdzxls0|?l#)p z^lB~{Qt9xVThR}A1dk3H3>(_I%skW}l|G_|BNqgRi~8*;%`cTd@rPsvv4MGOR%>0a zsH_+&FZ->2Ol4N-aSK#XpjdCPXpy^?qObmYW8k|Z{o?scZnY-T9=G4YPY_AKuT(D% zlTWC!4)P0w4Vzhlg0&!f`wgi8r{&#a-lvmbOJ#~Hs7;_czC8)jwn3H3^5UCwAP!h3 z)~>>I^1gFxRs+)u(ffELb(DS7r)u|&hu1?binqKy>%E$i4G)rRJvL~F^PLN=oz7lv zK6efJ^jWH?Zwb-fgFHnTl?m5V^OId|BaVXmQ-Z;uWsiuKz`A=>54OS_nzP2ODLOVklG(oA0jj2O{LtT#u;Raa-M zd|ys7m1Dn&+SlJ~VdJ-VR8IzMovF2JS8f)3b_XRdL$fOdrOYnc^s%XWI=+4r<>nJX zn?*l3c_wtMhxW~??L7e>vk-Br&XF8kAK91V`y9e(T?QdgcWp4gE}!>9`(6#ImN~Cv zDc=0bVkJyvsXv@%&mb6B03&%liGIwOxlr~2EhwZ}sh&abuw>8TKHm13C%ey=A!d4@+23p9x`f%qBA=U3mq)#r?w zaVLG*t(to(ib9jMoGM&-mQb{%tS%iv2tQYHDB`;zG{`lix~@Hk_-|4x5GJ^8p({u< zpvJneWze@T^6F3CIEqC5lL@Jc9w2uPmmXIpMZb|N*#4`VhKO_no>8sQAhSjZZiZ>~ z+!q%6LHuv;OFVhy=f42^BVG}*+)-rH8J_?3Ki!Ak@E!WP@NWXAcuppL-HI zUJcf60OCd7wL3R+;-1>Mye9v*mXnt}|4%haS@nqQ);~Ty9c`PBpE*5(e*62Q3FJxR zyZ&2W^(c}VLHJK?|9@XIkp4>y{8#nOA6*4Oh7JB!_T>|S7KC2HV!!6Ee8Znesrp@t z7CG#z&DhOAl9e%g{C1WVIa_}>Fe1Pe3q*W~Mi3`ST@g<(3T|O_m~mzRy}R!9yFQV_ zd7xQ--b5lKq4VtsJ#Yg_#;lR%;ND#S#`d{)SHZ=tHJZ+8kggAKU=aoLfQ)Av;84?1 z&liT6%_UBskER~ZYe34eORrJ8nI{0|{ZfqO_Li90eBa{B=@kFH!I#sgBqr*+%0~63 z;y=sglEDdeFSeVeTk3as$};$fV{3l&EE?y9ffZcD*g*lmUHQ%XJR%o4|VBVw#@OSSg1V4A>*x>(fjE@U94fl2>dh9m(zDB zW#Y20o-f#MT^7HiIzm6=SZB4$Oqr+;tT#3bup>WP%MCSIJsJYLNT;oN@M!e#lomE? zdph6(58cZqP`oL-5b%$*z@9<0XK&U7#ywA#W#&_J>fCola0%wI!nxPo2z|1v0czI= zXz8tDoW)U^pLfIE7#jp+=g4@TndVg}cLS2AL}JkMNy$rIPiPi(GXJ#FUpIPk&r<@c z=@uB2xZPzOU3&ZS$-4Ssig^A}ze$(AlxeDlJqUF9J1_+cV0cMIv7o6j^I3o2T>|90 z@gDIxuX(z@e%J2D=|NzShf&7Sp^~GUUGDv;gb~!(RDAX8)Dq+2v)pu6J^(M3vriH`Bpf+ z1xH24Q_gF)KRis*kTLnk9F_a`%cDKRqgd!GJU!>M_6sQ&=Mupu%i%Dt{bs zFwQGa6qTUJmc_x)kcD34gl+^xrUB3O2uWS`dJbJ%YV(DIw0^x-@keA%eTbx3Su~|; zDf#8by50t`3-YUeJtt{l5&GkHeq!!kFNIW0FHENpUD!S|2%Q%%_=7s(%VdYw)`7l7Id;B$$)-X02hUxUVzVUzmR#!kTVl}6I2WHv!Jym1W+OY8IqDh8(rGRr1$3|VYnT$=t^0bQeBr>}VvStT&ArFax^M>~%;i zOv?7GeA(l74f5SA$8T4@=KM1EvYGad_?R_?zP4N!c&p+9Ev*IZNhkN{PEuln!aJ!*r4BY^Ja5q5z$}MQ70y{}u)0f&JFW(9MHiJEL$inY`W>vZuqT&0_ zeSq?2ZIGo#FFk3h81^~&EbA0y=~_8xzJKxCj^*ZZ%w$uAzYtCHF8xn?JC{ItP{pmQ z0f1k;o=(EG%vA(!e|&Jybzj*oZ)A`k`tnQz(R(8G&O)q^iVt(E(OR*IV*UNmzTEvq zQLMspq+Pc2lffT$KGdquy9(AC7MZJ5!u#%@&G=gn^~G+PJ5VO>yl_-zx%WqQ}x3E@!5>Vab#rP2QR_@L}WNB zFX#9jd@uq0lpNrEY_tHZ#a!pa|t zg++f$L;q+5srpjAwWGf~sTl#3!@oIVrOS23Jmw=r*d|%Rd1$?s8hqG0VWW5s_@H%B zPyR3MwL!rrX}CK8?yR)-37sF3)@i^bIP$mex6cfi9Fw;dQ(~HFYe39AmUv1r32f17 zBG8t_c|-u+aTfLN*oXV2u&U8mx1C9+h+bHV40OzE^(JdeXw+<~+4Pt6)H&D}U`gl| z=W|1E0u2u=p8w7hH*gHT(L8id-@fESFeui=jRu6XURdZfhsKW3lNd;?m=?=%eJOh^ zWsp{nY@X+oB35Z1%!$KcA?NrsgHQS78o>iwF&?K)`#yD(Yoc5nr*xiT`%>=F`>!YR zBNZMVR%IT8yK{-W^D8E%3(U#$yPbmr&aVGx(ga|bs{lXG zlZCbTAFr%BwAW}rRZ$&*Fd%P900N?5n<%>FVkQNN`b-Iv^nHo;QQ_<6(RekJ2=t5@ zpD?*!byC2vS~2g6O|jK>r`yrhiX0J`8F} z=vLT!cKnzKe9j`7O8?sDpJq9Up8?#1^@Wzdw-yLYvORSlL;FJq@mll>s(95RIBAra zp7GN%nRRgUgC~d6K;h1@NwdZ>p2h-cw@dnwPKNLYDM^4by&eVGL)&h^54WFDy~8hc zVr@&k_)QTY{05w!%tK+V{Mz~*qWsAvq|pPh&_PF zY)YzMyR56CL$=Ch6uG!&Dmi`_$(w-ec}?+2C5jzg9PC_*xL}7AXRvg?aiz&QKKFz- z%ox2)b~jh>-f!Mye+B9jH9c64zdx-B71E?5lNEYC_esW)48N59o>xnR>jj~WeIG;F ziBUL7JZzxQsQ}Q2wAL+rVRasAtMk3KGDJ?-ytsSj7ZI(2ah_f$zJ zEY?Uv_wA$R(U%jz*aytDJezJ9H@ljA7U<`%&OVZrf7&%7%tc5}vbq`<*?TI zrwJA2Dq*3}H&cRLMQx3}hJll5CpBZS<{}k;1UgBkq|6aF@EKrpG0@>wQwirPrv68# zS5wQc>oo3?O4IPg-v)HCb@qm7LXV^_>V?;6)*#_I_PRB2UeDj~p9B5D7&1AZ@eJ16 zwY+)_k*i>|Xiar#^!67gMKLC140HVMe}@xm$gPxOC6sw{B;dpJHG?yprh zzZrEDjpL5em0{Z-giAh?wQ&+ptFl*c08xW2z&5Y|S;qpv{UenITi=GWGKAIIGe`5d zK3ZIKe!;6+hG(AD(4TPLZCT!B2%(=ZQl)sbx21e~%^ds{tS2)y!{FZcmG;|@nY1u* z+cy2pxP7!Pp8y-8*g|qRaRBR~(-A0QG*%EP0?mUH{RlYLEF%q^o`A>bs}?gVxv zQH0}dSUm$o3E$ny8E%zB728K)Z>n4wUG&%AW?jS9_Gu*5t$ob&Cfa@(Wzg8q;kHY) z=L;7mjkyh6LL?S8B#dtfxnri=v_!cG&8X#jeI#K6^>4fqq7h*WpBQZ#bRwK*)HjcW zcm<%t9>MH31I~apOT~d!D%FrHnZghKeDZ-=)*!(1{4xf=40y9~m*ZoCVuJ*q(_QV( zL6EWA;m;Uw2?|J-!~s= zC3mq!OG!+vA%*cAs9Ps%)D}*2mPl5IN}9PEnfDPiyoc=BuIoQzzrKE1E_@Fa-O%># zQ* zyBI~uE_@euwBCsxM6l0?m2*xEfD2y2&MGSit~k~ov>a5P9)7QtI6;vCJixa+-sxCI zEG(%;l?*%{yUgncY$}`#tjs)9yGs?JHLfjPG`o`6f0Bjad)S{_KB{_nu)*Zr{ErOT~tO3W`co5Re)H0jW`0s7O;0kQ$^aU0P^K6hs6B z1f-XU2uN?zArTO1p_kA@Zvg@ULV9jkYyJ1#`@?e6_$Z3Q!++Nu1O{$*~JCVZ`eH?wG_XB7y_LITr^y7<%Z5cPXF!e%uj%$@e!qo($fMV^OzFKC2l{FS%#}({0Yg)27iDWh;vXTO-!GL;1HKyj z=AXo~l6XA6FT7XCO=-CF$v^daGRo1@>bk48o?*Bh(KcoIJtfqvL02t@Vyw4JpzNxP zo6U~W=jYYcW$}qywmOFuckM=c)5e^EHA)xO67GMGeN-a8a2{-;6@HVg^DlpQ(hiyC zrvO5!B0ng78!5)1u`;H(n^w(Tv>dXQN>*l^&jhyJyKhuawXNw3Gq36hH^xg|*b4o>*W*eqd+-v9*NsQ2X{Fk<@{JPF|3=3m=-YstC!{v8>+uk3a zZ9VF~QBXU2b%s?b281kasDFR*olz=84J)nu26tU8-fhqq$I!UX(J$fi1)zDbXLfP2l$>)@6%{p4qrILjy-ikH>b5Nq#G_VfS zt*4MwtS+V2iz!t0Z1G&Fuy?Tas zjq^-cAzO*EX^h3lQBY%vUKG*nUIdFdlO<}G!6y>L8 zd&W{xrIb(R%Hku2qvGa%`eg9>?otmPbJFw~rZlZU`Z^Nz0c1cD%h#+o7TM*0 zN(uhU1ZkDf`24!E=UcI|!n~zRUHk4(TWOwm@$P3Ll{P_%@d;1>`KP4L?XS6=rx#V; z&?9T~#FZ#NyV3FeN?>WeDZ56@%&`F2g{EGz%{!{@I*z0Z9J=3pL0XJL6_U4Qb= zyJ5$ek8f_=v^@6pizf3tIm;dHWSJvR`mY^c*1URJm*?$`)lbYvmb0w6k$1SgA09q` zI5MPl_4NOA#Vec9abbq|1q|R{0Tn_EQDy7=52xKoRCd4C5d(@xZ;$U%PI>E8F&C6cRjDN(VrHks25y+v)Cu=8PZZGI85#7hvb~} zI%c?Nl~xa^zbv`64uBl1GAHhW1;+w6S}c(RyH*+{k|?=?^cBuhxN-%9g@IQeuUmm# z${3}4*DmjV@Ku}6g8cp!f;+9zHz7hLpa6jCkJ8(m;ZLA-32U>o^5~|h4nTP) zfUAjI{4RLNpk6HI+jEUmw@R-fQB{i?yh{WJxv}R5!(iJfGVNT~? zb;rujlvW&MI=y_gyuRr@%|-Ld1#wha-u}^E=9!7n$f%l*_gM_mjKqc2?=trM2>$wD z-F$=99fyrcx;^`WVbz{q0g|x}tXr%&5ahwuwwHp`D&TB)#jr5T4*2iH|Bya67} z$v#c=!?3+D2OQ^=vV8YK21&&?*1IuREd0&wHja;1cK3MRSV_ITOx{hPIJ~B24XjQsw$5>nG@#d{c*+ z6^r*Jd`i@GV13;p&wB4bqle6C@NHUN)!I5#hTnW#KguP{xszZ+$ zifUp!6W~itd20PnxO3{EuD#R6eX548tS!QTWk&liIbApkhzuE(^wTJkJYsm!QYL&JX}M| zu(D?_{uc7*uOiQuVu1}gW~tK1GnS;4nM0O9aGPJ>P!0;Uv#2d>vX&Y%o*iGwUyY@! z(lkF)R|ulfcwt{sEp}QjmMjxV%&zf`&;oCDmmR`g=A&QADtbuK}`zitXcg7z0a% zEP87u%}JaOub24Np)~4A|1-DN1P*=Tk>hwTrJf?FWT^&O{6uX(od&s)S$LBExXgU! zUPHYl6c14ITO=={9`Ek-y)zVBX~-2K+?kGQRd~{i{C)N2(I%SqHT((Nt$Ii|L^$;0Th@ow@U%2)m8RZj} zl6?FolLt%BEMo{uJOqwTAmqXZZ^JHP*@Rk6)1Mx)o=qSQ_5WHtx*3;_p%cHTf1%zY z+Wj!%LZtQ@=<3}7ruvo5R;j%hX(+23Eg~)LMBQDAjp>H(>m$xfxQpJt>>>r@lN}GV zm=Cr>Py}WKQz@kisVi%ZeQDfnQfgPIeEEv4>nT_S;zDh=TLBE=ts3!+ z^WW(Y;BFLgV4(Z)_8iB?fWaMXo=-g$52k;H^Y7SwbkkDGy8=r>!Q^q@vv4{|! zc%OVmAv4|eQK|68;629EtdMI0duEnvwP4#6tgssoJzckR6{~UCp}*2I)vWTiirb#bnhU@v{`JlER*A#HO4X!U$Tply_XB5; z23A>W?o5Y_n@hnTROb+ASNaq0F%;S@S`2bwtm2`jcl7=-T zU`q1~uCu1TDK*nc@PhG@Ec5sNUHAa3s{-QB{m(a*nJM0cohsh|o=JpEN97L(|R{>rSCDxdf&egLs6IlX|O z7e)-7i62qQ1kMSbw(Mi4T3Z5<{l@v&;(PuQ*?!x9&ce6zrZ-CW zfShT(8+hsb!8UFJ-U~n;Gox6EBb#=4=Lo_vN|)Vm5Vl!3DR1!DG04ASgq!&xV;ag7;* z>E@*~BsWx!Ui(BHMt0Ae!dG8oalruMsk2s~U&Hua#a#3i-3vQ*p1C!oTa});vYnT9 zpLBU9GOIe6HmCiING=y+X9bN+2?WuDVWkk|0pH)k8V@ueW&POpOeKiON_4y{RbLOu z=cKVY;23o>l`2G&PPN4Im7X*1=Y)XkXKmVl8orRBcvdX^;C_DE?A?QRRbo`(FeiZs zb6VBh2VzI3AQ8B}zXBrCV17%BR@XE))kQWKE<(GJ0~hQ)r8|oW%*$0S$gTNTbD}J! zTAQ9lyhWX7%yEng#?;(){3EX)*O?nrH4g-s2g)3-4P}Q$t=A#?G3NAdVe4kH9#E4Orv0YOF-0nDg8U zY@vPEB@IwCsl&xheG}BLrbvJTJKR&HRT#w*COTqJZ1~F*Q>m+f+?Ll~I@Q9LMv)Hz zb;F|~{q6Ra`{rRaFs?IeqSWq@DDm$u~);ixuP5b1DfD zw`DTH_HH=?^iF+XgKDc`{`!wi_f%=ryDMG_0B(Zmsh3Yl*gxGrVK)053KKua-q(;r z2_vs3od|wXQg9k6=k(40>6qlc@=;z#kj{CgL+c3RsVvgt)gA`#^$Tg4^!i<3Mrgfb z1JiA2p6Tv%>Vu0zjz8j}>BFwD!V^loaw^%KD9o zQcF4E8H5X_WJ+G42YAa;ypOi=GZra`&K;-IR6LpB%Sx$d8Me93oq%> zm@D+B*N}Vc39keipV8Fta*9BTi?L{A7gho2N zkW*IPuiM77M4L>6=Xj*vA>**%wJI&-cRM<1Nvrq)!%tbTfAP^L`dPgjXAex9hJNC_`_ zI0>?buHE3IY*uO*KIjD07v{Bq6mm%p7qfkoxX_F`OViD-zu;x8`(CX^X3HrP488%l z;6Q|~WXn?;%AI+lJN>k9)2zYQR|}^Y`?6ufOF)`oPzb%!!FvXFPii+Zh+$WfzJd70 z$I9;^js9aqZr%%{`jO=JG}7>>o-CI%yywi z<#kq1A=6SWIqF*f-Cox;&Q=e4&Jigd!nn9~pLaum!PuOhbpL#i(Z0hFHVGWUPB}2% z6cMiEgPBoDihpStcHX-s_UYcmX9L%Zj)=2A`ugEd7op0{r=j0pr?OvXXZsxYEBrR= znIj8D&9cjO`ZFsxcTrxMJ1A@5SZU1+Pk4$y2a@E!M_dwyK}vD4OR%*GVq6*?q!H#K@#K_ zGGf(@2C||@$ux?iuX_hZCo*mz@x~JbM2%8kNC8Ec z*0>Ka4YWeSp?A|ka>7yx?ttYaF@4K3D`o1nN`cPHizt$ZNcU6_K{^l`u)Y^-{<`Ti z>M0vwpU@MTy(u-iv*CCFT*C|%=4}JMT~koGb(LO8su|d*C<40i=HDQ^j{{{=ucfP8 z=(`;t&)2U_|AwK(d1}Z9s*taiSf&6W5*B6^OqBbZkD;ABBgH>_>ef%HuOtnc1(cI= z>I(qHs1Oe&-@^SV_;3*tAINN-7G~`+zI&;!CBE)5uUci$V7RiDM-xBOD2WmsZeRrY~BQ{iDD^cSAU|wL#D?V1fmC-7) z+g`AIH-~ws9GZ+e5x7;nnGcqU6{b4^cFf3#zi zca4KYNFrBuw2d*peucc{f|s%m!3- z)GLWvAx6cWK;LIP@&Elx3_)MVHVp8#4!}zh(8tL@#W!`!o28=?!%@OdsxVf_?R&Rh zO9D*`b;{8q$l+c=ogSVD2cgghP+RKV3QuI7P8Zn|n;)5RS+7ppG!hO}WaMqM)rjgf zf&AZ1m>TW0qSMkoMQf+@g87+C{aCg05j~>nU zc3VvxK+=ulj3k&*BZ+3UN%(M}E6$ca7S1^la=RhA8r-~D)OFc^h3Inlp_r<<#I47ovt_fmxiD8(l5yF!y$01-i<=*-c(q%IjO_EfM#|g59+V1b z_z59m2}GSsf}@ClGP}KRE>+zb*>lmSRXM=RX&CB+~@(L%5}3o zgJHN&FiVs`{u%jbORp(amy@DK)`mby#B2|B9ba)sA89GlgR^{3#J-RCi?OBG=Mf18 z@=`?4Xt-MyYP>SUcgN?!AYY6wzi03Qvh@LpII|6(PQX%vqc07*_^{S#d7_+G%<};@ zK-=`-zN9gIO5A2)i4elv{nR-jlV?2sAn-*GW`_1`|J>KWe9(wMU!*E9apEL7X&_*C zIOq4;?BLs8=Xp*^WlQ{cg312c-A~^$86?2a-Ry3~lTC|BR$JaTNFsjCNdp4*hG8Yt zM&^djO0qgvamAWA@(i9j3Ps3F-ryOyaY(1El_a}5aC1}|P-^F5@|TQq03B~t%NVQouB6_qc3v@uDPM7WOkf@m+b}A053tV1ck}X={;6Qq z2-+EL3vXcKs&VsW!f2`yVz|VzAr5&CeGlSmdj;zf#({MX^s(iXnI=5?<{)U;cekX^3eh@iJ&AdxXB1&BbUG@iVr9GdC9NZ*QcyJI zEA`}3!|A*g=Qd#w8)vS8)&mXizyNylcsMFYw6yM)z!ocwlpnae3zq2_`LQ{*vH<={ zi&quwX_?xLXrOl&e*lX;oRF{m7&z2~66~&tqXrvAa)gU+pT&3ItGzHhur2$!*k}{0 z)I^*>0Avd;DuPw7wQOfIfhkNaI(R_^>i#kVNZS??8 zO3ZM^wVxxzgIeS$`$s$DPq(&%c=qpldDaABGRcOyU4bh-JX+?hr(Ua$PwbMS*FsU0k?_KeNUY&Q{-f_+| zcLjFOqGs`15XuX=0)_I;{tVuo9kEj6_F~)gLPmQ)Z{M^sp*{7%eL^az9{%s{WoaQnt`dI>m_JB4sn?isriDwl`0d6i z5qF`nAmcB1wg%-6bgt*QsC!|5a(x1oeeM9@+3HU7|NFw9KVp^_Y7zSH+sz{-f{&!$ zE4g=qH1SO4>yty3jb}?dPtt;3Gs*h*)w1e@Q-zS93j6OO6cZv}a;scVeM1e-`IA|H zhtcZ)+0$7QtkMhT?=4TCUEC|iDw9?^)5pBpGN$g zLkeQ>T^yP>{l<<#q*h}<{yzzS#Ni@mdUu3;{RBK=x8%V16I9ADXxm4Y4Y>_p+}&yoy9EsQmVgyA^p6wN(?)*}7DpHZN=@KzfL1{lCSq4Q=C14&egR*2U^VzrKhw&~4qkN=a_N>? zzjs?~(k(AayA0K)xa#I&++}J#E7JRDbmOnTd5*asHT>l-W@2txJr4Pckjzc3JM4e+ z5A(Ic|1UDmPt|!H;4q-ALS~omaGg5c_Qk@2`9npQi7$eH1Twjb`9kmd4ek)n*UTTQ z9yIcPet!NE;xse;R%~|?;Kb6rCy4daTvvkR-M%v|RpEBbH_t!hMzOZNcr0{0l=+tJ z@x8N!Vq#)_8LHrm%(sP^U!=}NX#S55Aj_=jzw~FU7(-ip%?y9=zvzF(DMX;di#gP4 z1?cyenzJ_pU)rL1VB55N)Cr`kC7~O-$FE-3@6`<~ikF$ca&f@mVcd0-q|H=`7vV=+ zbiy2XF6u-3hav?7py4vP9oy&s9GpONAci;FnwFDV#E7dGo0c{iv<6KVl9r;r6T$$SwB` zH0rh7vuN?jH$6l!2h{RGCDEp@8Y2Wah}nUZ*Rt6HJ+GDV-3x0cE5GSHS>M%>lPQaf zn2RGAI6P&)BtYro*i283mQWYagI?2)BD zuLd_hXsG1L3L4awlTNS4w0tamD`b^K9rP(S z-eR?nnnGl^3^%L?J)>S71m-)x6~OEGxBBA5Vy0%rwc{39-1NeNJr^n@Ozt}rj5}9W zW(3?W8Odfy3#bLTTMTP44P;vcR41CtC_($hXvsV?gdXHF^V)6Q`!G3roQzznv!uDt zV2N7%w|Fr`{yj@G0@?TvizHA$3i8=^f_zOPdtR}Q1m^UYPw0DQJyu?{)|ZUl{K~p2 z57h)|%$7ji#^Xj>==z_J6ChuImpZ?dVJ=Ny1g?v*#mt_S(2lbM`St-s+)&*_r>nTB=6Xiy4bK}kduRK6()|2KlJBQv!rUy zGypmqR@@Dkb~F;XCg~sO+aYT7GwF=)H~rLx=K7qaO3}XV# z&nV!wa#}m7-}yqP{UkoG7xQr3$R1>bIns~UG4Qoy#N|`FyEf() zlfK^#NCg@jAqbhE^^4(Z#wHG7{9ool6n^gSe2gyW>Co=yK~QnHg^BuZvHa6f4VQq2 z6`7dlAxm z)$U-QGS1dL<%1;w+St1!Mv>l~fVw8OxHO40ZH4WxAM2@c=8~Ty<=YI=#jwt$A}fLW zDZDcICpGpX-MY}o&$nFcf%)}^qc~!1al{@A|KhOqv5dQmxCk5Kz4`zce!4|>@1?7P zF}`)3Iw&#ebRbyR3z$Bh5Ku-Y;p+7I9<7QYKN|?GzhIP46c%R)8GUCoEG6M-qZJ`n z`~}vDI?*z!$b>DRu>!czZRH0(DjIA4rJHU$!tTtFWmfAM8ER1=)HUpoGFYOZE=3Er z=}evWR93dMg!-$Q=T`F^*-HimKqLaHmcqYy=NNdRkD>%6fv*sD#hBU7RXYig*-t1By+_5Iyob$v=28;zvB__+)tS{}dXo(}BX^ z>RF%vzrag6#GU&u;3X;F{1;x5f`aV-5WFN=rJFZz{YUt>L%bwzaOUg|!xpx1;@j1p z_ks>`_v)`_k6-_?^x0_aTuNEk2M4aW@F3mmj=l+@8J%}72D^=YuzP&Zv-8}KlZo~V zc8HW;J7wd|zfUxr-FVok!~{S}b_V(_?pV`+1}jNr);z)dukSNc zyJl!HxxFn+Gy(^$GU4WbU7cKxLL%3wKgZWSS<}Ic%Epk*ol88l0lN868utwJF zT`uDwheJH1MTts#Sjr(<(x*aHBF+9UETs}Tb3)SiAv99me>!7?1p&y6PY(B=Q>t|C zfq@vb2Lgc3!!kNeP!&Mp^Z|XpwQhT{ejf}2ThFKtE6Q16)+`r*Fn`<%Enkow;|4@H zn|3OlXZiB7O^SkKbSyAz+Zn0*=a%;wb&kKy?IW&{64jAd+K{V>`%Gr??fdV^rB=!Z zbV8R6T+KJaAGh0#lH4Dr8-^bQc-*d32sxV1kD)wTW87f*Nqy?jO_!VG@6unw<{>zG zxX1S`mFxYD&h-hZwl$jL#h1r>9-Q9v8OrJpF`=!a8J>H?37H7z6{tBG$;0yLv3>Oh zpmI8^v5`tom?WX`3#^3)mpSG9HJ%V=>N1C89_@u!*i+I@f4mth?hr^D35Uz-AjCCZDb_pO-usP(?6%iE*pu z527q3tij9()X^ShL!Rj{LV+KFe(iM{hG$rAvi{SQpl1TEoW)C%&Y+%D!%WrTi&yN( z2AjzPh1Xw4igxh{X8PQg(H1DmPcEuw3@tQBL@@#kBYSGO-Zzvd~{?+4!hr4LaRv z4PL7T+ji&+oj3{ucCKJr3{ejQ_q%sE*_iR4tA_0as(ssM3}bnP&v5K1Wt5CJDl#IE z2iEu+=;<)VE>%IOvV~TV!fNr|XZaz@yh_hmShgbm=DWu-Lhu47Aii)cOxbp8)& zu7>+1d7dZW;<~bu7vz1%A_8^SFozgQS~3*4MGZZL2P%(6F!`H_ zF_z3br?rn(U}7j4`^$N6>TYm*QP%U18Wab(jQ{5BdvDNXLEjEk=FA-BmLD@>jPCY9 z-A4*>3h(s0&L}l0RliWs;}X03K0trdAfxy>fm+i4VD>cTCu!-x+{V4vw}G}7))y+6 za!{WP;y=Tm+Farl2-42*HzmzyrV{$)K^i}#+;I2bBTBSk&s>%y8x&162$TKcdBerU zhON(*N*PV!yMtWqTr3X@Y!YeBxL&e}RrKli*$qh5n~p+;sOBJ^xFQvmPVONePn#a( z21e6B`SnuAnY`r8R35SFx&Ba8UiI(l7pAMP6CpPc!4CrFl>ES&mrSa{hp$u1)k^Hz8qD~HO zge1HA42`54coxUv|6YIPW1Cn?1b!E8G%>#o?_caZFtft2L31WYSCE! zDpbqOlwdu&+@>dMD%`n3<>!3vO0W`DdPmHxx0F{|Qlrb_j~q1YvK z3Y*dSn{8AGQPeg?ay9S!^2U;;EJmD5Kvy)w=ClP57hPol71oY7kmZD4s*e^8GM8tu z))4=vIg8^RYss;bCVeAR0%_Q2r8^T-ez1q0E4Asg5W`yw#VFX>mZhSFa&TMAG#H`p`Gu3RS96F|Nnp|GBcl^O&+%u7#tU%#K_4*nn6SyAC+ z;%c(N9wy9gl^-57BX!CU6@m<4Jj#*=5M?X1k;%)xLxQ3*+!I{8dNOMTUuT~MPuUNB|-V4Z%AMM8MQQ{(k)u!Pa47#0bFW+rz;!((OOGawq`O0cN+Gm z^s=N}JK&xF7ADOGHTH*L;himL}P^Km*pumnlNU6-H;7xC@tI^7W7q5!0~!K&4jG?XjZM!*cmoX zNqreX&bC|3yT*0(Yfi*nhq-PN8nI7bt1i+6XA$o7`Y6Tg%D%Pd9fE~sp|DJ0T5}?8 z?~y$n@&`-Y*A9C|{l2*seI=t3n}i%+rr0o#kq1SX5*SMbaO6R$U~j0S6|rX;bEx&L zZg`F}z{qg|zEIT>4MgDUy=0j_DviJO3DZdM{CmKefQcPOf2+$wh@}*1O7~x2ix&Us zj6kcMN+4q(BF_DH(MjLyWB-6S=54{edkzGxOz}O*7n-Aw{R8;8JbY*$y+xWC9?!E4 zw*2RVLl`A=B6SIK49ma)8$C07<(eH%@Ct6+D-#yMTw-CF-6A#%$6y$%se+}%aS(MM z)2n)z11ELnKWUi#Kg@Q=hBgkLIXs#F-}Z-ym$AB%@^W=7C(fN|v)TVq;UEV(7K++1cm z1b%1bif@bNs_ePRKTlv)0|Jm4i|&(wO(nyVOgaq7wuy_5c&v=nljJ*+Z3+%%_<9-W zL-XdQduU$rTxKhOl##6&)}63F(#M!X(QlE?f)IUrDJJoh_Vo@ueZh6S^eZb z%JTDvo?P280@7EQ+WhTpD?A|}EpJg(z3rI=|D_btRvL4zJgn}_O9s<7@JUTs3OhN> zaO%6CgYxo{JK8((G*cblRbA!`;dYcT)U`8J1tn(WChxpg1?h}t$um3uIQ?sG^0wzK zjAzYk-0kI&La=WPhR?6o%Mrx|-M;7LMJvu~-p)9&b;gH@OM+X{)H#jViraPMAaK~Z znVzK@yL&ae>x?7uo~?74!&<8$S(FQ$P=HH4CZQtU`u13TSspeFK}J9 zn#Uq<6J~X?hG3+bL_U^t8}{SxkseXcj_7pQ9Hs7 z0bW~!iEFCh01lQfMY=B{!e=UL9C16$Ml6XtIPRUf=N&PQ+*!Z#)(6^4cmS$d=q8?X z_@O$j8pAV#4PxhW`#_%`k4!p^G9Bktc6tQbIInwlh+L5wh4#e#nDVNvQe;TUH;Frt z+gIH5Wla}6+;T6mydk+%h&#M8^rm6ZXU%l_wz!ATaZTGOUD-n9dgqlF0q#BmTQA4R zxX3tl1zF| z`>0dRhG-R;YOMnqZ+H32SL`*O)5c>XJ}>wCr)QA?_hHF#8Yks7G@6mo8hv%-{@X)? zDgN|`$_03aq+5jP-~|6f@LXbMqYWcS2;DkE?d=mr#FR+nmS8gwS>+AeCwFJ7X9Cqdw~6Q#vp@Cow7DEgOd0o)=^VR(bKf2Wud`;M`^`Li=a7_S(#R#?=1 z$00Bx-2C?mt5t#IJy}+ek{>f-h^Ihhm6&&dkYj%1q92`0Ft627lFZ>y!UY6t$Y0ib z6>-X4vl|^YFTe%u-EJr4I(3q~+TGe&6ri9Vh)-1*=WMzY|Q^Um+8#9%KGe-ZrySSyib(0*>GYpO zb#lj(Puh&CUkt8!O=zn9gC)79MW^|1;mkGBSHvi)pWXCdnWxxzzT^2J%VWA|Nafyb zCKGxSwcQI7Xp0mjt0*LQP7Tt>arCBN{%pq3d}lHYiThO4UovO$z3X8!G`M|&#gk9f4 zX_(7?CdKvi-BY@eHWRAc#s-R$m-F1US%r&EHweY_O{d!2=V$64uU%5}MwVwi26>d_ zPB3bMJKj5oXLjjB`=*HuPl`-kYAU&dzr_a<%Bhf zpKI^w+#~&l#e=i5*E*IUxqYe;45|*V*bQVLjnd-OEvgqslEy z`n0rQ4CUnp12=!&;;<}lcdT!9-%u}f&aMebn=n7{v&~Am!W3&?zl$$tbR6(T@9}@M zYC$Ga+`&@(d80I2{4~mc6FP}_Q zXggD7{E-o4zbNC{DxD!_b0S3qo~ayE=(WDWai1a6q?877{y=i-7Fp>VdEon^79mc3 z)A9M7SNwX4Ap8lX(xIl-@cS>iFKwCJW1T zt=ERSdoUjZkkG(%*?y()g(&tDfu8Oo3a#SHee`EdHNXIAQVmnR6&oE&Tz*qb(2j=z zXkBQlL!MiYx zAELgW)$={Fg!JHeSUqRn76Qe`>HC;u?#)&aaIz zm!hq3a6H`V`C6HmOdswGpdgE!G|B_Kzw1tOkZmB$mb7M=>(D`hEG+Vdi`=_;>)T;n zp4cY3{Q$b{8-Jtz6{@~h4$R!%YyJz%3|pIkyCcF z86(Bh{s;p{rV%&7I-|y1xq!*hkSCU8#vap$S>1J1qoece;1qU|swY*cwtjqZH>`f%Przz{DNU2XEvB+evny^n%lRJ;6| z+R?j}In%F%{6^0;;RqGH8M45IZze}?ZDU?XKc0?2{wB>THJV3=QU{%jaLgp*CfI!8LVlMFJ4pcjcHP&~{OZJ7mcw-=yfN zZ%?ud=;Z^M;;|p4CB?9d^ukW_ zBYDZu@+Yc|G|HI{%7wD|s5ro)9&@uTzxJ?em5Oa@)k{AgR0+bK1zI0evm0PweJxrC zYE3x&6uaE1G#eQcTB~MrJq@wc=Q2k4jYy3t^mU)Ec5UrTatA(Hmrh%LyRNcBsBZ_S zOA(9?OHMF2Y>;W14YaycdM~@1GCEV~vGYDAAQFmK6L}SJd3t;)&1spiH-t)Ee(N+@ zX5dnsQ0{wbH}++^m(on{rnTTF&HxpVh(y7+P=#6ZSkuYb9oH)rM( zQTN}v;HA*^4PAcVQkX_W!l%#zq=VJ<0GFMh&6Z4dV3SfK%N9<>vT7;ifuZ0N^D>Ve zNQ{XKI%Icrmi9?fuR%OJTb?11&+!A@CG$>*o(Ux6WJD<{H z#6E|)GMPQ|9su&FGl(WC&iHl*N(_T(AcS#WpdvryeF zZm-RI9?$QC)qGeDM~HWIVr=KIY4>2E+8hr9(203;4>nlsSI>ja60^hMvj1ziN^+CQ z{G3u2KemANgN#1zyyOTUn90soN(suA%zL25Uz83b{#u5NT&t`D3GPW$hv~Za zr6n{E$vnSu#%=EC`Hd%S5jJCQk9xSA2Z+YUlp(9jS>riyO^D$ zUYmIcn%~g!LR=Pi$VMM4J|{cl-$2N%2@W9kpIhJ7{R-DcCb+On+r%s|iY{ zYfmCs0X3qP!v?OtembM?8Ed}>q&cO6`~su?+{mNgu1A|TSsWhVDGW4rU+)>YL zx1pE{++x46k$;T%{kU(QolIGz$OAUhhdg`LvznK6KW&~nUcq?S^)vuq`KXkn#Lv$7 zUK60Xbz)L3s`&R%soz3&(w1p0u~R)tIVM82CJymiERe#sVW!WH%hmVbTkW8eI(s5{ zq-K2OFanliO=`}6b|EHisJAVqpHiVUgo!Ozb-YGAsk{bWcA7Z&bGv@w;AwY?ji~C? z2O%pkzd(pL8yWIdH|`t$ueM>qW*q5mT`GZcBUl>^4v=fC2J9U9-SZ!NE2Tn)22MAg zbDO?B04oIjz(u*5j~1Jj2W@nv?wD-2Q)!WsPisODu+3bEPm;Xz-asYq>v{B|k2w#( ztSn!V(R>+G*6ypcNDcBXQ|Z6xbw@P%&R(s(r2?D`gLkB~wd|TLzVa#!x~#M#p=^k{ ze&RZfm{d>+e6q3*)sE{DGyHgdEZuTi(5=hlAWZO+mFI)L>P6cAfRLfCq0zdb>l(mg zyk6C(rvq10+(}O0)vLm}Jx{B@0o{oxwuPJPxUOpgj38()|1LX4`vk$o7 z8IkV#dC61qch~ax8K0i_a_^$j6zT%OoiME`lLM=@ zMt{WavNG*1bh8iZ)`;3Tb9Gi`Oklk_ZiphXW%vt^(c8@Ra}(zss~ImJnP3fW5$1kC z>IC(>pRID)Hy``#9+RusHWjZf^$lpsL;10$X-1UDOb7nDe&QPzD8VCT5lj2L7E_X9 z!vrRbITZL{`v`52`A+;aI~OAo!UzS!DqhBki&k9$@zqTm*J|e`6OI}H%(gKE%S>WT zk;%tQ)rXw7ZN&gj!TMIoD_RR|R?a)Yq1`ak1lXs#+CZ($LW&^SlDJM!(Ur}osD&AD zSw2J>Q-^%{zd!%1FlB#1S^cwH+|jt1juVO_@4>}$oA71EnM@{bmSc*|=bu|$-0}5d zW9n?}IObJmNSXj+?mau><~X-J)O@yWq2?U@`}#EdoT@aB3XhjRxa^Zvqm3c?Vh?PJ z*3Fa-6s=_o-EGeUb#>pN1*T?FdktD$wjKwVF_l@O4{$uT$u)MfaoeqJ6+BurUFHgQ z5@f0`Jm(GUE>f)?(MWaaO_3A^;&&3lsyzo z8T~k;sO)3As00eY^BAQdr^BW5&7UHF0El^;3}dCxql1B-lXz>4Ael6oUDF6%;E_yp zpTX<=rP1P;8f{~Xxj-y+JCjJBjHxz&TB2SKxR(Td#c#&*ufYuhEOlX&_Q`hS#-wFzfF+RG6sAf1zz1*{%KuZ7bntqx3&$TOv2zb^fyWJfHk8mDR;~ zCXpY4UZ0?Y^cM0M6i;;)77-pPRPd5%*+WTaj$_1=Ba(Di{~f1E#w(2j?a38K1}yO4 zz-%N1_nK<34c+p5{j-qcUGUXCp{8=Bx=(M8-4(lc^4)oHuB@`y-*OU~3NKG3#@>9+ z#wC9Ia>BLwcM5sn`7eCNH=Xe{{cE(FqDa4UB1{}pT?RGa=B4!!^PL-8V zHSD-5rq8Nxx5yDlJ*X694)8cQq($mRU$Bt$jS;ey%#q37iw*W?w?n{TR3^l#@|)vY zW{(S8ccMRXhx}m|IgKxbBiL=A7)%zEd!%mN7zqykKiGTgpg6v+T{H;+0t5)|65I*y z0|fWr4#C~s0|a+>cX#)|0E4^31b5d#@BH5HJzw4W>fE~b+`6agoT}S3e{|1u?>)VG z^;&y9Ywc%O#q5&RVp!K{zg~uLa2Z0YvfvkTRge&y0m%`)^0h!)kEdzByO%C#XCTDD zf1fVN0=@oLEnN5|_Ma<`t1tr}zXG9^w9r*h;BH02p%r+QElQt{LNK8Lfu>y%?i?y@ zFojh8hBQkliPC3i6=qkG;Sa$=Txg@7^uS!-|79CY?S?F`Rlg)$gROm$Mk9Z>YB)$SoeVp>}&QOp1f z@L=i;p;qH`UL6DLF1BBQZZh#opDl-T3sWWNqtXOA?#?|=UTwb}T3Cv>7 z_UhqN%VN< zrP!m47}jYOWbxt5D?>q-96JeXKRVx}xFdK&e;#iuu7aHZ1N=NbYPBQb~Pso z^7-SgA?Kd~-xhXo+g=`@~(TkLvhZCKWo_+W9taSEC>c z8Yx9iP_KDe9FBM*tC~j7I_io>q-4q5kVA>W(H3D>o#TFfv2l4|vRzPco~8fD>G4=q z@VMu>y>2c6zp>^<_rmeelEwI$2tP-o8$2s!oi*Au4}G2zIOg6rf0swOh~4xsIOmvg zX18Hxt1#`1eQYcYSUbJLaHzFR-S3%;3EUP(70g)LW*;26sC6)3oM|Dm_e@}ELcM*R zKO`nv^}X?dk({@?yUPo|Yw|>l(vmHjHu?$F@f9c6u2!Od@z7iWj^ev(;U?p-Tg zKDJ*W>E7WU&yYXMhYwqD5=$OWq9%UjF-=C2bD~xEqYndHw_b+>Xjxj`3w9@7=YOsW zj=M@y;pwCDUc5}zq(h<@nLFnngL`~N?xENd9#RbTWp>wko05@P&Bh~diedRgKBVpP z?7#RfCcT2Kn@>zdNmSc(w$;TCLn;_yh7GLg> zp&F6!k4Au@MH7PTuBRk?T??m43g^u10fJk0k=eSP?oW?Jt0@YEs39~b0*l#k_*e+% zljHKyaz2i?GpENmf?DRTIaL0c^#t=`DOyP z;bvj~uJgdX-Bd&gE~2gnT}>nv!kw5FKo-i#==%BCIN17?CX>jXLUIJOz{l@o>j|!5 z(us_AqA2G~f!f(@p0=q&R1i$)gpUKu!D-fnHw6?`C1N0M@i1=p@W)1hmuR{#n7@!v zIAex?+dt8mx>gV!@;mHbCb6^9+ujuHgEMGi3*>Ny>^ zY=h8NU)Y$2WnqK**(3sh^M zlJI%W7F)fU9aIi=t}kZFazF5RvXq1K?bJ|9g6~vSQkRuSQIHX@4u5nsA40PmJ>9kG zYgb)h5@gG{I{KiN-|d<5f3He#;@t#n8KPa}FIGp5%CO}#t@$ZvAq7K=W+=!#uhW*( z1}enHjb+B;c|wY zcXHmL8(;l5QjSWdM-2jjOA|BlGMtZPrzvT+u|C?nvRxPjD)I6usyQ(C`)0wbU{PR1 z5+$#tD>KyDG5_Q2`XpI&;eGvlJ?S)~TD;p?y>ef=^i?Q~!}HCT?#7N{vT$}d(W^=m zq*y{abMAXM0{I? z2rBCUM32KYs3VnUO389p>58EU(FAk>5-QWSofJOiEX}P)8N)~H>Bkrk+EkYyp0Dw- zc+Q$YU61&6d=R*Ozg_1hfJm0*aFnRa!)d%Dn^1A#lmStY%Msg$p|IVp1{xO^xRZI8 zmx!4qh9$RY&&MQFY0-9E=(#q=E%+jBsCg)#4`}E7rnPWwYH3nSSAN>o!(moabG6fj zDsntzFCTJV=Ftr#XjA59rcz%9Xz1%cJQ#1!-3-rZ zIBkJkOHxO4ouyccS{ebPQ6O6Ga<$vrn^&MYZJzz$R8kT$e=RwFQ+!A0G)oKJ8?i)U z5towdIz~@6NC!0Qfi3X+AY!ycke}!FY-w1NctWm7ird8w|Z4jj5B=EfcdD7PfMDs>v=CG&e!dE_Y zY2K(=-nR@@Q2#No=)}y6TZIsTY)FP_&^^D*X3r4`u>I{~c+!p)Ho#RM)BI z*LnO_db(}4oQWz?0`B@&H%?o8%%mq79_C%^`*KrePIlp6H}<7lDdL>Iic+HahPUG_ zV+~3A9NC30Ylwc@vdiww%dYw|!#;R)hI*)ew&m^qwJ3&Q+WJy}oP=`-DJaCVkcDLO zixk9T8absra1DyRWK?~zX}*>7WdagDkI%2+>FVn#Fp@60p3&dzxBHQBA89kyGk?%~QcpqhAM6MX4SqG38fO91WUQV6%iwdlIN$pxV+$lwILdmHkF9ZSYa&9{y!KdBV$f4c`ak{ng%&EzfXSf{AC{z9HWrlNvw5?9$@*$sCT`L;yR<))vGj&SQzAd6g zg&n2pc7(~Su8WrHx^(D*&Q2s8H2*w}FzBQZUh{osyf{@&T_>Gag)^CzHwZO&m3$#z zA+NsdMNpc>*zcbp3XT-`{P6b-WPe$j#ur1t4{*f{ZLe>c1f2Ee^^yr?( z86DRIO{+X!c?q>mXgb8|hdA{jnccf3=dW0YFT3Q%wewDUU&oIR&JI>|(@QGkh2z_A zR-HWUYTl8uVNBXFM4ulC07YS>`>|SPMx(_DdU)B|s9$!)FL#MY2H$QYrd7|zRBHec zr_wBn-ZD(nQ##fL1WIEU-9Y2#$aV*>zIOAX$1&Am_UT|{*+;G4Jd|~Rg;v}x{Tfz9 z^H>E1nVN8*T9X3RnjzA{)Lt*YR05taf{un~qOGJy^ANBon`m^)(VctS+==ukXxFE` zIQ4H%%FrKwr78~fnz1P2^voAh!45&)>H#n=b#kfC>BDp&B-G*O)xh|1O0`Zat_>a2 zWO@ZQSSK^h!{}(PZss4+Uf#DCu&D=BWofo*+m~JjR4gYYdzHc@a53xgE$DoCm}z3` zt7)mIuLaQJ<0UN(FD=zg-_ea<7PKqRd#yc;Cq?zc8oA|ILR|q%+p({UFLc!iN64XQ z1QvyQu8-5!gEKYIyMY^9{w)k%Q|x$_*j&f5S=DuSM`n>}tdnbl#xq{BB`~tV)wO6> zWn&HM`*}FqTDp{+I{{9v@An5x3l8S=+;}}BI0mDs9UT%s-MxCUJWPiv6c7Qe)|%9* zpwqy%+rkdns+jKWA^r9owXR6;cAz*XCs17MG!CX6p^hHCZHqZM7a%Q~B%9TNlTgOv zas-m*PC6TBgyWP@=y;E`fc+=gt|qLD`)MM>Xn#+sYH^pLnHI>dUC<=t(0XzEFjv;U z>d0(*vP5v|5>pVAsEo8_!mBa$iCSKc*cyzr;vTNai{p*L<>k9pBb~F41@^Qu&HStN zS$(1}&T!b54hkiFmJCPmX>6~Z^8C2@dH{+^FoGAP&>DK8|jQ_*~r1i|-$XZ(~HL+ZAlhv({S4cHXYl_|f6KDN=BqgP;k>wJZfSHi^Lm$7!} z`NR{bsLr2hHAaledb6>Pq#OosIH9L0HJ-Zh+?o2+mrR`>o#F?DKuuS(1ifD*?}%>f zJsenltxld=Rh!_>M-~EE`>#Fs55h9;F;Y0**aznv?qUto;awl+ZX}(H{&4N7EQv06 zu$dHOqboF8-?e)mt7ZXRi&76Hv9(aKqOz6ReHxz5_4x_()9sJe!se~XowJ|tIR7m5 zHAG}hbY5aQnNi-_Z;Bs<+ll?#3J<+2N(JCSZ5yFvf8{1ub=J@s=8|&JfK8(}8H`js z&p$&TbpX(qgl*_U5BIg_ExRA>o)|q8H{!~Ly0FXel2msl&_;NjQlzc=ZgRggJ+RZf z2seHQE)i7TjC=_b?sm(#At=Lfw)v=c)6!z#oQ zLfagQQgN!FNYvV|e_r~Eq<vU~2Y7md&KdJtSdac^M!8VnKgi*KqJUl6zW08Du;D%2MGUbN*OG7H!dvCpLKl+Z8felQvS|4shi$}*N(A^Z7Q|Ly2r5h}Ew zU;aghaRNQi%ogyvoAi5a082n0%P--7@nO_K4~!v0g0Gh;JA2ns=Jo4Kk6qI*W+|3c4F%itu2k13-D6B;Oft?B({o^B_4nd`@nXz7FhhZU$JMBj zS{q366A-ecBx}Ze?RSK^z}(!{UX&{OTZ(w8>0EzfhHLTlw6=EF(|4A91ktZ2fK{ z8m=ie{F#gvT{$_ZfoA@rK7+`|&X~{y;+d_oes)OBx+$Qq9@N(!HYBwusNv7uuO zOfKtt->aE*NoZzlt^OKh{=-^F$0Qu2BKLIP^HQaZHH77LGx{{KS;a z#6#twNJ+MSPBv>8r8qU*L9R+4BpRb*OulTo%s>>1n2ae|n3@j@zlS8ANU1j!CcmyE zyXSSj<=J%Hl{#?O;AXs~Uqe4WU>-i>^&%6K zNb;4td`Um*USGbg|AXX@1fViQ)m_!pa?xyaTh>)6p69eAe6{bS@G4K`D)CTUd4a=cL`jzEN zD11U71un0^+#5ZON4gypqixz^_f}nqM(c!b!-8o-3(lz4PbXTcrTTy6&5TW_)ECA# zBBT^DEs|0WneX(wF%zPpiIdPmi69#~pi0emwTD?-nJ;#J;k4z+4fnP)p5wFYkkl2E(;;OE8t^YX6mh%Tr8K(YnS#<~e3%rn;uz6x_xd ztS?gc2&WxZI~0R^j59>nUy*oYyH@q)oU^6@VgmACZq&hUIqNxq+Br?G9GnFGfl6aN z*%ZtK&E;GlB{8FlW`4~AI-v317nARDzKg2YhO8D9DH0l{wpob-IY%IF;I$zlesg0^ zVipmU;-SJw=TlKdZm#3mnhgl+`qYmqMLPObK?S?`gQOEreZZS$wqZI@dl%nim$rBn zxtN&2&(+)1pz#Cr*1|)uZfnIgcc;}*(npGZ*+S(g*L;H<&A{i$OeK;szlpd=Lr*ZS z+SIOf89zMFIAs!5e-+#$jt5OWCP5sT6mg2^8ddxk3BM(K3wPVgF;A>*=&FW8JlZvE zfGGUlbWXRo3UivNf-IQ*@vd8J($H!MC0NWITy#&Glp_{(v|L zTmWoTQQoi&vj5~$*U|-`>THt0)k5BH`VhXnn~e#zg{I=pVRj-NbF={w!gMxgX#NXwJEj#6oK_Br>32NM+a`n+woPktzNGDGw| zIou-=AgTHV#JHJD3fi*H(9Y5=MPHncx%@eq6joJVXo(c!<3}QfBj|{C-GtwbOvdv2 zy=K~YwG`)CpC(0bpAO{FEou4K>sSC68b!)cqAP}wSFdx50DL6t4Q>REPTDoass!o? z*23mL0LKyQmLsP*yUj>sET!mnUi&}iADOAcQNiVQ>I5cFGs(@{@D=4Kaujk`?i-fs zZf$n&M|x--+Yn5u4(nH-l!i4{23G6S`iWFkO(e~|XHEJQ>n^OGe~p&9GzD7@OxYY8 zAmPPw$5IHPfR5nb;8^I z+uBcYQ7*{H$2(M6U&xWo4&QIV0C4&8r{2>hur~&eTLq0d&4S(|f=XVHLoX77>m+#^ zmBh$-;UB_&zoS=Sr^(O=ulreL=0SG3Z5L!^@1)>|v0`zw*ckk;%blEAtPkSZuM@bX_JJg#V^OiZVkheb-f3%B<4LVHn^8PtCqx`< zDn4drx(R#jJvQF><)=8Nra}(77Azi>t1QO&SAb3OTOn zNqk#LY@@ups5w(@M%&4m?vH$$9S2Q}%R=we<%*)YtX9(6?N6lkroq7@Ei}JkUan7? zAxHzA9}TB9);88ExPP_IG0#-D^(?hgL|-+MrF^PPnW|BaI#55oWN7Chw(d(?vNu-3 zE7kJqiYKr(?N`@hmNmQk>!f{JCo#NHVC1fA0}v4Cx`BULX8n}@s*&GNkn<~cNO3zj z`m%G|K451(U07ta0lWR(^Y z{HM$!J^{?S%jL_a+a%aKy?mr^J)X+GvH!G+ZBJU(9d(&7iOIv*x|^lxJ=MYR&n-66 z2>Fzj_#mr2UFc9s76$T%6(S{6UuXHA8;*@U@C9lnXKR&z4tmx#dtT%vc44KgBR?(ki+o0uBq9wwmT0NJU7JV&?hSpepOrvarH~h|6Xj0C7U(7hY&`e zS+O^)doZ+{WgReA{3<9}7x2`STVocz)+x; z{d$Su21em*UdpuMo_0z;@%Pk6RDM{=i2^RTEB}nBdjBxR5<0jKy0C=@jlo6WillSG390`ixB6<0I-tkBE&jcGV-Of`6b9{Ap0ZPa?zeC`tm0 z2fGTUMUlih8NY6o_TFb4(eTFx)ev6PChAPP)nA@dg$>{Dm@1C-O~Jk{FCwt$9Cg6& zAPb!jhaq31$|eQb@Fm37ZxsSzDu0+mP3AdF;k;+L3(VBD1A^uQc#|2m04t5y8pjWv8k*ec;^Rz>d(|f=+fO%u* zcZVJ6YWttCgD#$=Byf(uJ5AkCQm@O?m|5+c^-tU5pLTuX z1~IdaYN}^nyMBw}xO_g`U0AX2xTu5@{S{cnKW)|ncN!Vqi*Gv|u@yLo&WXUm{~%Fw zk@=KWcqd%jL*wY*>-qi_T6rETQ)SiRkFO95Tc2kni)Y@@yiNFcd!v43eYm|K?EJG9 ztE78(NbKQS4c-9Fvdf_rzveQe_Hxi)%l8QBW=1+|_6S6+A165+F_RvxeX&?_FjN8- zrq-{D{iE%Jd!ySK0QoT+4!2=0#*7LOLilRO=Da)=_V*gI`$E!&&ws_XF|MVp8Z9bL zU2e6TJnb2}q$!5XOsI&+)y<;aMOoqd$w44rD9MZ1)4WA(# zev}B7@CiyR7TA4)wttrqKT+ycIck4eprrpGdVcA9KAG(9~R}Yk(m)m#w4(yk~SUHVd)OF9Tg* zJ>4X`9fLi1Fhl-EL86!t;Bo7$m+5-0GN8=qNI>&hk&R7fy`cD;RZrR@a`Ut@EH$IL zejnA9j$8_I)+fNR@+L7FF1Yfut++2VK;#>_?JgdJQ!vXd(oZqrRTJImX_vB!5fnWD z=7!^j&cA;>yR)OtoY85{7fH)zqU;+@kO+bKnAtO>K_qgZp~dK8nq*?7`Jv8yEMnfj zgJ{zYlf>JBvF>w9z`I21I9Z1oiE>*K006%FdC9Vzk5f{RqLqyjshNsMM*}4%<*f4; zN^J*%Y~1$p+SP|cfqTpJaoA!FjlGhI_{FW``?pW)Yj`V}@q4h@rSK*0R=?5~4?C_h zlpRw;RRY_R)SZSO5{i-}_>YA!Zg7`+L@JnakU0=;TK}?1i=}2J9~)bAY7EZ*9O6G! zx{kcIqL{?0oJEOTlXhX82S$A~7dOom`t+%p{1;_(kZT*&9nXm0ROMAYY?q77ubZZs zCCsLI|F$A{YhM3B%22Jf?RUEf^1W!aS^DCrHpw_k4zVPU6lNCh&ubV2@?MrTHt-ik zPYe?NVDgyKo}khZf_oJNxY}xE38+B6<_S6K1SvlW#p^M}10Lgs)rg4JkWtVh@++;q7W$O+7{&TNtfqhx?i zU=qKCK5kI+%BD{d)djq(HvjOWJ80+bbT!DXu1QoDt5uG(8h14<#m{0Eg{9KjXISeL)iP$SJ)T-#H)HZ&uBwW8 zm{49E%~z<`=yiGC{=eO^(meX{lpaN0l2FGv+vFhk6uU=?=8%7Qe!Tc;CVNk7w(4=a z+Oy%hi%6hBOu-JF78&E~zH4DtQ&aSX+;>|bRVa6Y7lokruSh;R<*jrd!u`xtKmk;?USVz9}iARmdRBBcbd^3!KnXLU*TursEDF_N@- zXkheA6K#G_1=g>#xFs4jh(%l>mcx*ZJ#Lx;xC^Wcq_b(R^QxqZkAi{vrR|tMp4n1^ zB2DOVhKgXTi5-G}C?_$488 zG7ANx?@H}tqOvl-ek4NkS1nPZyv3>l%fZ9EWD_4l`)#Ol`;RFd1k%GO=#9(VReQb2 zFm4N*UkmtS4i@+#(dLuQ$qjX|JI82Nb7kR7DvVfuL=RzOj8Jr;B#n&0yCsgRfN*xd z3Fg-4ea6&qQ3Sze|FjPQYW{K%S8S{_XYDI}Jgb}_1(Z1qWFH2&>d4cy?z~#Db2+v? zSJ?iV+;=4Yrt$EbSZ@yYLg`~orBM6lVKPHw3ye3xg9{p)uVe#AeDKyFZ6f7)$!4K$ zCZO`t;DoI+`zN7RN43r+^Gkw(5@efN~3k-&uBMzjiu#3Xg{mri~R#SfQ5EO)i)c2={C zQ+Pna)nrzo8S{fQ2e`rFIB+HNHI$&u16?ayTGtLAnHel(8YoRnN4Yi_68GdIc-mC zf;cNq;c|CDTl6f-L~0b5TjJUtIlanj4YR%$_XlZo5q~0KN#WVqy{*97pY>~^jcB-k zJ%M)OHwVwfe~o`;+(%(?=hzf9aA~U!le0Ta-L`9F=4&D44KxqB9h+qycZQf zgXF=Ml$22=T{u>?W78xEFH0BV(sa~|A+V9AnF-3FhS+%9i!IA08UJ9?npahEPeA{h z@JWEuz_zDDHN}Brr*qWvvwFA582RiI56)DIddYlo|jZj@>g^E5(l*+HBf|J$bR154i3y~s<&|BwiFJ9davbc6}H zHRov{kfUWL&6MG)P)z4it6L}_uAxaZO3~S5n_Gx8Pi%_b^>^&VXcU=u@ma*U`s$aM zCK!|t?bWwjWnIXVHKyk)Na-dCH3l?GoJf7!uaa_YJzPCf+HP7sQR}5$De@db;-Ry< z_t9UDm3o%nLM|FM9?!rMd3h^oO^C8BN-`in^8!rb$Q)m5G@Sy^$_A-%ez2=f^_fk9 z;RQRpYbs9c)2RRM@rI;m$8>%T$@IEsFYU-w~|5U3&wFQ?~ssyac&1#Pgq zKMzcbm>V9t&H3|&zXE?BmluL+ewP#Y##A-Ky?>i;w>LEOGs<_2_qjj25yN!LpQKU6LnD8xh3 zTsr9zl-~Pc?zhoiApHo63JAu;Dje}g(~-1-d0S1y=AmOV-!lM)19nfb&R)MPw7lZk zfV}NVApwQwYX7^&5&_~37gf4}i2ox5S*rH%m4=i#A}q+DKD>a?iBh{=&Wvg+s`gAE zB2Ds-M5-b8ccM=N#)w7Y4|?kE2+?2@c>j%12v%Dz=f7>q@ zo(TqtHO;;ZmPDdh5y>!+z~py~mlus(oHBL%nKGfo3&a6SYPUmJjcob3Hg#h?*aun~7g$p|Za?)t@K)NVW?g<_l$Jg0fWXRKkTX*J7AH>}r(3`8*bf8d%I$qwJ%7p{Hk`@aAmS^h`BM^1L0{{}wtu>Vg1 zAGvwhSpN(7sOzPyqTc-W%^Rz`f6iVxAxv$2F6-lKN0M>=hJj&eJDZ|~DItc3==cM! zp{UA0s%#`)&`-fn4{(?i(&U%#=`3Z<&wO)U0Q=54#i-+t^X1iN8)h|K#9mb{6B`|y zz=(m`_V#qb26nP6#A4<0fjZ$i2Goj=P01gAxco}t`VgCtBNa<^3gvo4yiX8#NRLlzJZiSKn$?}^| z%3b$|?7q?)voo2*9)Eq3HUd+){&;Dn=TN{8d=s{%73IZ}El~+G3M|zmHn*s5!u(YZ z)7gn8By(-(DD)X)C;5A!a-Xww5;tdP`mTTSo|eq}Qr_NCg7=N=f@JQ`4|VPWJta+f zWlaW?u%}*+yz?zcE!~S;7L8=V3rtNOStn1(IF9k7{3cdW6KrU(K^_T8*ix#n1bPo( zDu(?x6zb8m2BL7AO#HFxvTpEC3pXFuv>ofpUciK!R{HE0tGY+ecqwZI(6nw(&HP=x zAjGQXV5|O0#IOw(>F+Sb@ncf*9z0z4G1bOlw=w6}HJ+@#s#W=Qmh>+oRw?*@4O0((R2$1a zdT(&k9Xa}hxzo;$D+i&t>1$uAiPk~wTrMut_vgO8$Ss-R@7>_5Do;u))sSZ2o~O>S zXYiwasve)Gs%b^jE0j=TjvL(b3b8_O`2xEP1zvcq%{Jx*SCp32f)WZX*<`#!@f zOI;Ub>I!H#%zUa}c5|c6tQn&bXzr}wTF&))etoIXJ$G#Gm_)rE z`yw^|Ft{keUiD~$W4E&Ga!A2A9%5=AamLN^=#mk()-Y{GJPY_Lj}WW{J%kytH7hCXC z7IN7Z*8cGWzjsjHAHg=V;~?zq?*otRai&|We*0eUf=$TnzfTw5eXj{Mn0~lAGUHoc zZ;Np}d9*+)ug-h(l}A%5aEsB)$}yAWwjoYMTuQGB++UG=6tGVM**E3rOeJ^`i}f8Q zWXQ5yVAeOEk$A8&kIC?On;bl>n5pX|`<*t7rb`}RNtyWa)KDlTQ}CrlkDX+)hL}ZM zFGhEpDjR!6+cz}2`bZ7VoGec{9flcj9jabGK!Y1thi!99HQQ&y%Qft6PlJmshgHc0FPzgHo)mWn#nCrZ4ulEKt-tOS7JZ*}X;)InGVqW25P%UGYXHY7=)a}Gt*4QNy?!T%DP9$qn6vi2 zzs)(g6@b;gKi41|sjslh8Ii1VK7eW5|ARNvcspRCIb1Az9x%5u*ZnrqRg^+su?_zz zXSUQ~cQ<})!Q3b5w6Ai58z7Gxa}JhX!cLJJ)xhi=Hv=fwF3BWo;@|n&SiN{?vYjVQ z`pPhw6HuS3)D~wq2xBPwxoqB;PGk0+_^Ax)GJYW<*mydrH+HprZypnJBi%lJ6ItsdR;_1=Uxye*~ka`LrGRV{(QdvSwabiAuxvvoS1 z6&~cQvi<$StZGiQlR4pI+Hhvn^y#)+xGCW*AjK=`Og1ZqaPV@1%Mx#1E=|Fv&h=a; z##&^dJxIP27bF_Q_8;2Ghq%PwSt6(67x@4a+ibZx#p8UwaW$EVdKgM(<$aDFhHCdR z%QHsx$i5)NXW6jp!;nrZqzg5o9dN(RE<>DhepKw~F~tw=ZsDoz+2RqQiM&*dQXe!5 zCrvEqQjobqs+1k+>jhb!b|+tD)<`cM(qaWX=oYuu-={O7%~v95wZGiO9ly)*Hn89r*GD|lLFqR$oZ#fhf9CSRe zE|TL>du+3btqca~p3S`T+kViP;-%VqwD3@(jZSz-Sg2EI8S%kU1d?(I>?H7l$ySHX zG1s|^eY#Io+GP?(4GG`8xAVB~F8PELI2O8>tTO22p1QjTnA1uxiUPRzbnh=j`-H1| zSQWci(9wT6V;4wy%X^ZUUi)4B<+PyFGo{okkfRt%2$^Xm1 z$JcmHM$8>6{Vk62?e#ZZD*FMZAO8Hoi-GPpiln_zKG{BHwyme3n*-P+Q5L>KKH+^x zu`)&`DxZmPHQt78LZN}x+kLr>Tm;^EQr>v?iOv_diZw2T?b&Iz5EwwrVH-|iD-Quo zf!tAa#ymvdUH_PVv}|H<_zofSPYs%U-I(kw;Ko+?s*F9^GE;NXo8Zr)pWnb*@|MrM zdAs?#h2;q013-^e5zMFbzDpddchqdX$4%mWMp46xC>G0Asy?%!=wu77O<)n z3RbxE()iDCE_zeNEQemlwQGw7w>|gi{2mL4A0=bl;yo2)t|LF*P8{`&ErbMeLH-$)0=s+~ceBuak{duQ-A^)^*U*w;DHqa@#2nrRvD@=( zy5I1tMpF3UvvI&NcRhWSX=w;!6KVYDSm6z5O;oMfHEIr(o$lWI6NQ-T#lXn>@S&i` z{BwxB#~H0p!Z!fH%gfh3vzvDn`dmekeKqQl#lWCJ@WH>uiPnP51>vYyPVAohim%XL zGNTcHaq}d#=z)M$G;D zVx#6ONYKw*3z$br&;lKyX&vy1fq9Tn-U+T(^+Ce#>Rg zdPxnvzbvCs5&+ffcDk-W?r0xVJ~ktd0X~m)`%oOP$ekx=w9~$=eQoZPs`hXUvr#1h zDH4GPN&MuBf7`BpDHS0&>e(o4pRX~s-gXlEjW;=y8Dl#bt4mzJT_!7M%Rb@HV|(nN zT`}FFTi?S1CR-Ug{+E4-Jmb3*2Rt)(==*2-MF1M7rj>tFwZn5 z>(4>lN_AWB$AI0B6l{?yd)gd}v$>)%15@Gj$N|K1 z2I*e=xl#`v1T2|Ve?5MH%KCHYiZDPRZM)+R(T2}q7CMB&2SYj{R4gofVpq@c)UmD> zst~d*sfH!6tJnp69j=YV<1}q31D<>3C34fgJq|R6Dffk8G$#>e4lpRC#S6M;voZcM z-1P6VxK1OH-6YEpnDruI>voaZdCTn&+_#32B=;Oo;PC}eOv_eGL4zITDzPAdarc@PvydsrX zh>B00MicI?EKGP^?WK|b_dRpO0_oLIDAzj=siwibTR*tKe2Fml$)U)D-WDb2*wR@I z;G98*US|rGkRi4_jJZWNX=>sHiD$zck7&=^B_y0%IiyneXN45Ct?ZG|XAZTz^%P$^ zIDdu~GJuRAhzMsXK-|ks4J|&J)giDXJtNXiShj5txZIKjjDG*Kcl)sQl@nxy=sU-Zxnn`GZkXWvgmUsqcNv#fGv2xM3}?qy`=an8ey# z8>8S|(=;@a=P<3=ayC+P>!q_1webAL+DMB?rO-#cotCBRCI^0x(ze@JSa4cLw;zwN zwk$_(XWL0SE&q8Aecey7Uim7*4Tn4m7tO=QvndUmLRGova;5nOUhRyGq?6-k3|(XS z4srkRR3C#duh+S9dIThbtFxl zt%TotXj?YzN_8r2!Vubq2erNkEVs%cIgSU6VCynBv2yfm$e8^t5)<*g+{h>Gp?tV$ zCZq2V$Jh9#nMhIMO@ToJrq{CXF8;}`#h9!PVS-(xAy? zmLnpQJ(7U(%L~NT3Um( z0AmeZwh7>Gnz1lydl)6THmsvoi9_ka$bP+hCdGU!(QHo6#%4VVGyDCGHV3d?uZ35TK>LzCn7{>8MXazmA2UWH7ry43~7pXl< zj0>{99-QYLbHzUeGa#x7%$SN}-N6SfZ;|EsP_7JK&g%G z0pacr_@2|2UiK@vrVSZ6P{Y4dFD{*y-S=d1h&gLd(+5%-FcpFBbLf+GEuZ1C1E%X4 zymM?f+KJ=BpCL7<>V%HU-TymLI90>{DGK+?A^g(+v90LKp~|-`CCX^zd{d9yqP7L4 zcjYJ-SK{v&#|uF3S!83i5#!`xXK7WpmPjp=;kDAO7-4gd-Z9&KoSMlbAKt(I=Psn` zr1!0Ou|$=Mgd;hAH0-fLm!(hMW0(9;^9A-ot1U&*0`9~A=Nn?4wS>|2r5DIPLnl;$E(I2UjS*_T%1&LB6@@0I1`MF4n04^H8s0_yd83 zFl$PlMVp@MK3)zzrPLo8p?tk&tgJbA&Ex?y?3$DURtJnM>+u&SlN*tE_bKyapr4xv8150cA#&3`L zB2qEjSA3xfv69WmeA4@ZZtg8;Hwx?g}Fzj}OmnC(0nh!_}4 z6}Tqy@R2QyN;@&r;em!lX(q?VTmxtnuxowTQX#bPIM6`hi-~R`pU0#09%+jpJwM7GnaFkV`<9W^hlU^P3F^|cRcKN4vt2K*sVO0D&f)g}jrD$%Mi%Dw~yJu9Mj zW%3ur@!#3AEa8elT#Bp;ynfhBF8h08BMC%==NKnRc z-L5;Q->yXdOXZm!BH_#ot#;vrQ!>Jvw*JZ@=h!HKc$m$39PBF<{+O{bIWqVgPEjK8 zdT2r@kLZj1q%=mv`my+@MQF#p2&oGRJsTR#K&e>3NNsEc!|;_f1A((7bJy+gy0H@Z zvTl%jX`W92Ib=_M>PL`^MF2g~aEP5??5H1y2W5{L^+J!lWXV7zDXX}b@?6h+s-ikQ zO@|BO#^f!C+H-I87eqIgYid+Z@r>3VTiuh|lH)&2}_a7J9J{mKch5B^- zeB-j!na|mQ+x0Ahn&)AxjB!Y=r_AZrI|vJ@j7FpYwCHul?&%h4QZOkdiC#^t*fd^< zOL$%qb*MMHOZ}QpURnZ3F|PZ9iEBh*P(Lc+eFYuG3dElI3*V9@J!jbk{BGAG?V3)* zm_rUJy-MvTMNx#{sy2;N+~!T~;tGe6Jk^+^v2XP**~YV9Ny^6((^M0#X>*v(O`%MdeUbXu`Kl8%7o=@WibRdCck@C$+Jj&7*3(*I#Eo5vV`6%EndE-DW6~!fnk4ig@-42QFdnPH7&&`*ST%o_W0pVTSRbS~TP-D8@_6CBuB2@`gGxYy z$a^vpvONfFGp(cN4Z206lh!yJ*X57m%UA*lTQC)F_bR0rm0Eb|#4hi!D#w_maXnv= z>aD+wKkvufGMz2L6?$~IaZD!G$MEnqT^m&6t*A3LRfyHwcf>K_fubpaLDHShDl;Ll zbg?ufQ{gfNkE5I%7zQ2z`WjYY_d9J?iU{tlR5SXOjoG2^*^_7&RSFLz;ZhV6siw_Z z9kwnEHO&rrSeZ zZ2!_FPtCW3+X4!mh@ID!m%YTuX8Lcn$&VT>r3~L3S1E)E z$&UmG)df~|^}R z)~$M}NBOhx>dN-95V+1_?!!wod8CXMdjqtmmln%8s=8F0o}-UenJfy3==nB#$Z z5bdXg*I%@_BS=F@=8U5>EN%6W+5dEVV}M1;kG57>GnijoX;4YR)ml@Xy5&-}3>?9I zqGYJ)9X&!M?X9MmA<-Y~6Qp+2opq3GdML4Omwvfc-e`B{W=;uO60;syS0&Xq16@j* zI}Vj}59yt*`xH!x^v=py>Ye@KIA`w2;rdBbvi1)&j z;`WL;)|a;94;%9;Fa*ABJ;dg3e5!b>Y?+I$#?J^0IX^{9@ z%SeiLG(3^F4GME!yQsPpMM~P5)N=D2PKcxpq0S0UezL@a%Xnl)`-=|lb?2gypAX-j zM!JX|S*6t#TTjS6PnY6$D<)oGkdj^C9QWGQ67_kiE;)?05P#$>ygvf}L6&S_-72Cn zmW@$LM?jf}IlW!MV%q+Yfv&tAj$Rf)Db3(zxow1uI9%`$C}wLbq=f#Tost^VpJ9|p z+Kq6-B~h%3)!|UT-k%(%)SST>2)mTeA~AIxuMSqjneqNXUn)s(q!{L;){Afa#l{Oj zr4Rq;8wxta8A59ISt;N zl*)>S;XT6@a-<#FXKxPWxs2LzNX7rX)5M;wYGQoCYyPU{ymLCwST8!9il?^DL$buH zIdmdkZKj=AzXat?0w&Ik_+jXa3cZRnkuV1r^AJE%%$bjEAQ5TPCp6~RpR$ECWwNf! zk@2rRC~YnHyCFX)O&7e}E{Q{uIi}PYHH$G~RhNFSmRaz_H}Z6_;In=7Q!$JRzXu{G zg>q0#GfqTc?ha_;}jXR4!IY@H#6**G5zv6N+{t1myz*u zqFtn8uhj)9gsQlb#~p7$i7J+qr9$Z$ZVHR%6_DpOIcCKZ@jt?+_?@W{F(gO8%4-G8V$1kjX<{3$#SAT+@IOD=#JW) zQju}+#9-Vg0I4lzNbz?^q<$A?7C&{^g^ieTL3XtD7QtLwuE|Z7o@&b$#D+p}mis+C zgg`5<%NbxSnfm^4?B&Gy&GpNA)8=yCb4*9hh;`Oy%=gVYu7V>SrlopC^`B)Y{7_o6 zu*c9#beBNZkE%`W5<08mmQ<@ZX4{AgZ1|+`DN~ma-4{oluFV?wZQ5{rK_*cm(!3mb ze1pC?Ncp+3WF&jrcZ*&>s?H6GV>b$OY*VrMp7~)7b$WE#dG2lry6mCx>-|$E#%R0L z#<~y!g}7L}0C@-QWg)KzpDBO%Mo3N;0F5lP$z@pgA z7zk&q%hpb%6h^T9TgX7-MoSwJSCPJT48Bi*lZC_@<1Bx)r?~N#@o-^9rLTe5WC+&M zwS8PWQ_$r)r5R_s3vpOh;pEuJJK#iJl2C|?WHxy3iCsVZ*1k&0PnAEIhH}0``n<$b zx%DM=AFkAtQ4zUF7@9+3I9&_2G9Ai4nvWYkx!tRHo$e6XGbCBj`k?4+fp9iD!y%cv zH(x4$!Ed%YD=-fQMBt7$zw@cy@2=6aylBhs>2gxNLa98Gq;xedsEhX3>DF>y{YUpP z#2QnLOQ92eF(h-3LNX=&C!8QzEW%Te-{VEmI^voPjr>lk)86PNET4P!I5ob`7Jdfc z#xvwDYJ!)x;kQ~My?snc(NjrYr{VGkXuzh;X4sXw+*9@UzY??U$SVO<7l7+fJz;B} z;jIjct`m8SX8-YHOV=ZO%DHw{k9z)cQCMP(JztcIq8#=BqM016eFnxdK8Pk-o=Hdr zsxytZ?Lk)81HaK#X>}Gw8#HsIR7+`U6xuuE$ink(6vyU;*zJ3({`sx?IfGJY>S8^*tvg64gUSr-UKTjK9F@tA5d)c!M1s69LI~_Lm zJY$?*By!r(!Pw<1x)KS9s97JMjkC?&PAEXQ=+yJ^68P$_J2;+YD`w`_yXRCNFgy;) zKMC|UIy$;gyTRl7bZgo->m#O?rskuU^6jmg#8rX5NsJ7sm6sP>{G*25&*haJx2uoj40JR1fL+~z zcl;$*4{b{f@vf}alUO9cchHe3PlA67p`+|;(Ok<++NUg8LT5V6@gkiq*j4`Qy3P?z zOiaL{dh>%bV5&}N%T^i3SZGiO5FNQ$b@D6gufSzAfR1=-)0`yN1nLbRPP_ZWj~Tqe zgN+ih1v4?n;IxceQpBNwhB;n~SFc=MhIVAPZH=(7uq<-<7~XQWllL|2(g5$o*W{Vp zsb52`t2?FnYrCYg`RcTe#awq`@OE6$AQ!z(e?dKtRLwuARh@51fVs0YJ0D8<#o{H+ zlUW6m7_`-}|WG6MjD{q3wAlb>6Eow@~+H(|qj?q1it!Bm2^ z*6nuH^p=m!$CIA@C;AIf;r^jO_Wrd8AT(|MV{fl+br&TA6YuP|!1k1NEtnR++RaGU zpRr!Q0NMs)o7Dc?n&i7(ntkmHuG>V5>psi*+b!7!eFDfIO`t<03c<_a3>L3G1{i5- zY0j9MQG%q_E02mzUt(N9IqDNcU(D7AJ>T2=k_mZH{0ikLMRFZ$#+Q-6}k&Wpf0f#>a+-3Wqmmquh8wwQmm%dd6*8p=8zB(3XK zp%P=3Af}cq0rw`+_zBL?3eo|C5)lpbwd+ffitNOW3bQB@0!vW^LzuBrvsA|mbd z(3%ZC{lh)*8ep|4BuiuZ%)N7d(tX9wItxPTwve=)Y9~HCyUb8#1+@O?OekeJh5G&D z&KkUZWh~>A0>q{dR5Zzq#6pLj3z;}tfAsUpcROmVj%_(K@-Ge)@&Z5qK9W)h28H==`PvL` zkf$bu94w8zSTbKO(mj+&c3=ta4hC;QbrXiid%ApN*G%h%dD4&0t1!`_4jk{~Z!xMX z2B9zm7Vh5)SpZ~q5Lyi7eT=q;T^-ht|Yi$ zZAtnieE}9kxn{J)ddhS>yvvUo;N;ku->r(mfDSQl{Rjj1R!?L_Gj^LAbSg&kC9{$; z9jt^j;NR0?L60e)?b#INCg8`<;jpH^GxNpnTP|v9esBGe7u6N#$@fP*G<}?1<7(Zf z*4`$IW->@7EJA;mq9>bqn06VMqFu69!a}iMHSc;E_FQc56oreJ?gEv=Uyh zdbP0e&1$fn0MlIC8_uVlgt%&{h%bU(AUFLN7!-A_wiF9CT0wnd z0f0$QG-%OB#0dQN^nL$!i|_WZYv$pG!t>ac`=JGT2}f?n z`|1fhgsmwAwQ8WXj<{W-_KfnU(ufGtt`V4ksZh>WJ?BO5o-BI2`OuH=?C}yu;M7+8 zrrg%&Mzhk>)4Fmdct4XZHkOGP$fb+qfH;kgAUT)R;C|F==Cc70A=gj0UAX&p^@6+r z>q=~tmRC;NX8r|}y-V}5EA?jwNB57lb;v>6Gys7CExtwmq|zW%9M|QmDI??|Y940G zb*mLw1Zo?H&>ZbNW@pdCrvjxNqzDc)D@bh070P7oq)hvbfrCR+$CnGTsnLGJF0q!0_vv)%Prl@Ha zWQQxl8N(G+=>gw^)9^GmDctFCuHEQg?_WsiYn2+}EAssuYRZhPt+az#hEu zYf-AV5UsQOd;~Mm+!h%kGJl_bO)0F1{X~uk*n=TlDl490gvz7+YvLJ`HjXqByGWsP z#RqHckps^~YTSZCr10s2wFEM%xQA zZ7tuG&+}lzB6+Y%cr2Rg$k*iwz>YNe>2b2zzDWs>0!xkrts&Ym#n#{oSBn+h)Q^s< zf`ra3)_hQ|&*BeF6{m3Ci}jhc;cxENS*0160NU6VM!p-SmQJUK3!{Yh;#AVxFYlno;r;}b|~GKT)=<`b~wK3mfkECb&x)i-cP z3~`&5A+Ul>wk|5SRhMu}0jPw48bJl@nHVNSK-D!NSPzP#t-9YnIa`=mM94p4Z%eTb4I3QNtiPyhkO!Mi9#w1R!rulF+}#ES9iZ^&S*`yzWbMJ zJ%!e@-Hh1@XEjx@^oed2yFTr(sM@M2QY!n#q-H>!lf7kI%Cu-~Y)fLd#e%UnLI$|& zu(0ap=O1Io+k_U~js&(1@CH>N&7gMoZ%h$rm7EraCzhuqPdaMEVNWW zsJ_46EHQ#j%y+8wY)yy{sUL#uN=uZdrcG6qs3UEgJSHeF=y%W;)_8`~{XY1U&2Q2H z<8jFrM5j!Fj>-KemMKD@r;SaD4|s(|#7FwXAf~=+Zqx}T0O0h`b`@X}DV6om>W`f# z4b$T{DQNUL0j2T*=}-4G$EXlfgms$yTj2xLU9`U89q{-1#j`Xk+P~K9|H|weyN*w{ zMkWfiwY9Vg%*EcRs5~Bl2U>5~81Cv_^A0&m5fvdf z$@?s32~=xz)+Yy+j)3yWfSRjm8^WMqIN$Q1`aHXkd+d}}dLj5zRsAqpBCH#w)E@ZD zo+^x*K&Ess(Nx$Poa=fM&_aT|d(|lKvzreyvHnnn-nlD;SUiwX^i|I-e9!Z^S(po) zej0?PSzq^dMe}#Gp_9bmQy3R)BHBRwf|~sgHoYyvk>333N%}a{*M})POSp4BpymCF zIcGqNH}dW-6uI>52PZXr?-hvE1!7-25;(htv>fbCzC75Tg|j@U_j6OrzlFaGU>YF? zhnN_uf3w_EUwgUBy26_nCb?sNM8R9L;7C=DUvZ2*D5e%$rT_SpU zPQ83+g}3H(wCn@o0=CJ&ywB4)@}V1q9uz4HJ>}Siuu7q z4GaQv^NZF^qM1z`t7SC(f<6)UdAV50^-6i2hT0bdt*Pce-A}k)l8xV zy3_oWytff_7%+m^W()_Csz$2#W;5hiXPVc#UZ!EDint=Wc4HO5jswrzdO>3uO1hO57tqoS z4itc}xSRhpil#=bx$_-;X!!~|?E{%?%5+y-fyyemNA2>rRRhcz=se%)E#AbDmEN`mWh3W+xx zZI336D_I9Wjgkwc1<2q*2v~Ows^1is6owU1vGC{IiqdK%$y-wjDxLV^rJCn!70`V7j(;3 zF;((`p+n}w{~|q$&X*n0Zb>GnalY)hJo`+Wu}7|hyd5^phHZq1kwv~|?i_}7$ql7Z zgg$et?rD{5G21V}8k!wS;6Md)XK)cAQ5rfcvNs>e?ynwRlNf%G7MUr-?stMRD`)t! zTuC1$bPA2t;z_j=iTOyUhhUc|mYJwEI3^cT{j0^7Ix}2i$SIRmLe$zQp$8LM?ppJ! z1%YB&3u+8#F1v*IdXWUE+`h+mMC3ws4$%it1ejY@)F;f+(h`PYcTsGkYh8I;3Qzk2 z!WUX+z*sv_zKi>r+lT(fqq&$n6CDfnUm~TRF7zP~)XreKo(KI~2-+xd}b#A8E%D_E} z5qFUPVL1|(1|6r{U^NB0%Oi|2M24FWC|4W4vl+UzbHdSi3VuaCLEI|hjXgW*v%a18 z%`?9Rs{I5>go0qZwjaLHRAa1oC5nT9;){`f#IVvW<#Kwf8u?wlvi#|d^PIHz)?iW@ z(~}f(7ZPMsn$+UYFrgKDC7CNLl8%US3uo|Tqm27kr=z4w*sT~=cdQJl-b^s7^F(8EEgwkS~g@Y+T1W0gQ;i9J6UY(YG`HMVYU4<7?E>vb9N;7GN_Kr zQ_nMYlY^9DzOdc043unY^~s-cymP#nd^m^YK5X(N4k?ILP`f~BN~EM%4Ib`|*B&L1 zo;^1k(zPWVTIVGqSgH~k^abA>17^#xJAj{_*i-LkhTslz=un$;^Fi&TFJwS0(+EmE z+emKa_#iDkDdU|es335cvYME{#M;RuIG{C!=Dh6}7Lg(gf&uPk<>-#aP#VwZ54s5w zg*VC{AZ`npHB0(%YC~&Q z-FJzS3%K^fxVZfc0yQe6HjF+MI^k7==?4vPnw(PZX~3{T_vT*`;MBiqQ9aj4vaznz zhrPX4HWn>p%qX?*X=!?SuJba!cqxe96_OnY zw5X(x!X@g)nO5LC7crR_=E>=5v* zIvNzvvb;Qa`Lfz~80fX@IMrEb6iZ@V-1tZ11|kA`QLY=Ki=C&%a`J9^UtYAU`3=#IVcx@>&4+tupo>7vK0CmgWew>qM-P`z6 zTLdok&c|HI?O1hr+pzp?p*7{py)gpHA2xMO&`X?p9nELfudGf#Q2|?2lyRH`H*H-* zBa2PM3eqFu1E1C@BNU3I&s&(zi>K-bSsC*K9!0P4EIYS5`Gs;-O2rEZ%Nmv(C;MnG z%lkbvcQK|I)c(j9vX$yEt4#sF6J20ZJ!r-vc+9=+L;lYG!s4OtIgUd^6Y~zritAu0 z3|`pCSq6SAmEcv-<2u6lIU_+H^0**1;TKNXA&D zhiQa;*!8uGtLx6agD2S2m$|%51*2~2_2BNBPKO)YjID`vR$uWoC(apDt#0yACrG4e zJUtR+x4$-rFJk<9F14oC?6mx9Fbi&7a147RibTTpR`dyoPBNh7cg>)T8X1seHA{&p zHr?KLiiiqlB18NB(Ri?mVkkQ!@TgRPDQAM!L_pJLCcM#@X7V&WCAje{H{L+InyP_0 zOUKHGA{AFiAwO-0MXUb!RVFqxo3Z69$YlOwonUEO3hj4XwW&YSAOqUB%T}Yb$7$xg zEIDQgJ>VQ&yCOYU8r2hEa9gWx%sMkLffxu89*)!@dx7JvB9?h6JrX^eW?Cm=$z7ry z|ItiFSn~0bk^UY(!5S?^nFy5f($%7|$uw;8lkf^${Q`JO-JA43QHpRqk5Vs+_s}V3 zM3d_YK55t@^dd<$RTw|W1oIkrczw5^u_@em8sT8S@b&lPdMm*U)(6YofV7ZNds<2Wijy5{9Z%^4q`U72) zv^raNc9H=oqkZxWr)=;uvqv=;L>*1oPXu(2MJLI5qq=rHDzx{$wV4$zANXHvvBJ~43t8p` zj-`Li^M^S1IrXU|tpp326RYP=U|7en&iCucT0;5)JBtxq$nN2Tbic{a%&s7;d%9{D zh9d&y4?$rQfe78X-ENo{XERb8Y~j7iHNhg2fihIRkW+q(^MA0j%qQ#iJ-J2lJZ1M(E`Ff*-1YF-XqdlWX}B%9GE)y*<3UA$ zU!*o4`RPfsRY5c&%p7?kHKj{9x;ci6l z!}i+dtp4BPgFfpQ1TX!GB@dSe{b?FP!u4fh+}FJgJumYM9m;EBsI6mgc1=!QACC4o zQ1ZxkoDqP(Yh6ZTJBWW4US@E6zZ$FYhLSagt99>Ws?d{)6km|&e7gyWBO2pl)_dp$ zhoENn{;F`Bh3Dab<+bNrRjM1TxQk8876SpO@#(2cDbWY0x15GW?uZzF=G;zt{;qRO z*WA5pVYbJW-i3NpcsI8v=Y_K!@eL&k{a9&Yop_4LypCnc!m39t862b+u3NiA`PeA` zOVN+}?}@24v5KT`*Iy}v$R#W%$vbZQhj^!K6k;7cmBRdxZ6vuQ1gFtMqY|h;JL@p? zPAYx7&C*2_2b?TT6kSp1&Pa3yRGZ;2OmiqmkS!OWO4ostfHDn(;7S|`zAQ1|FT z$iTi7?-M^k5NrT+#D9)yij3Q;d#!Khp!rSI`lE3z!@F5RplHwp=*45+&@qHfE4tUm zUkS2bsj|+Ht^pDm=oeG6o@BMHR6L#}{EJH%fR;>r#uEM#Vu0uT}NS*K5%5rQGv?Xurvhj>_)M)Z~D5$)fk>U z5%8bo9?SkeBssC@!ox?q)AyCn=ur2CQIy95NGJ%~CxY}yd@D_6N*QkS5D_B)jn<11 zV{>zJeSOk}(l7rpKh@40UZ3q`$|eKVe_-7Q@gAXf-=jI^(eUH^CiY3?D<2m_6#S09 zaeT}ariIQ9ISQi}W6fOlA`DbYxDhmIJJfZdu}OAuOzX9D$l!7t1tbm|Ll+$wIk=}v6;?9 z%+U&L^E8A+K@s*jM3GPJvm@P8h`raAJ>OkUk;hFIKqJ$qlg|=g=3X?PP}NT=9Y9bk zSThp?5PL3w?-6ZU5It`E_ph6eGb76qA;qfMkG%&_AvZkd(sbTDRp(@&Mr{(L?OcW987tcdLk>uOVM>|5L{uJ>H@Bj7?Vd7`OO4 z3E$?LriI_B)~r2JBvW2NsLZ+HUesd%hfW6NRc=>@iy=|RhU>98$A+5f*|@b1mBTs5 zxdq3AhK1q`(+UKy0(|z3ZB4nkxNo^w(AJ(K0zN_tsG8tDsE_w}@QW7g<3s+{;yQ)7 z8Q=aFC5==^l)%jFrZNP*`SV_PW>$SHegfAZ&AWa-{O$hWng>~e|OYnfLR9+u^JRestfDcvuN9TOO zZoTn5p7)ea4)&uhQ2*W%W+u40!hCH0>j6{H-el3dlF{D&_|{bc58QT${=x^+S@)WK7Hha?t$+ojILHzZ~=6 zl;5!@19*G~e2oh!MMPmEx$Q>%}u&M7CZPEVFwR>_`+QfjfsE98n%4M zI1}Ycu7VErrF4l19!dTplk|M5YY~ElX)$l3Sihw!!9xLrQApzl+uu|QroOjf)%=$< zCYKpJaw-rObMuYFZ<&1gASTyi@g+i_;|^Ieb}^f9)7^l+b|%v{$Z`>ZhzfnKzCh8p|3kfSfGEB6u&VP`IV#Ao|9vA zF`s-6*V&x?!N2HF@n%~=sEiOA+W+Xr4ss63b@sJKU77l$gd%L&_S!b`Flk72`4{&^ z)ft>#$sKFaZQYOlDTricqK`j44KM%e)?LK%&y;=j7msmOwY6?{*JmS{vJ-4VZAFLM z+mBcLZES2Pb~}>Q9M7p{V5APs)y=CF+G^FiIXgH+&FNOF192Xw@-E*4s)hWEhX0M@ z67zp|T$0l@gwV_B+CVJq2p_$g6zCNowwCrbdJtP~Zh8?*3%kb$6Cuan-$a-RSspk3#psUwOq5VA2c z5wdeIX%ZrCJ+iPvbi@_`mE~_WqBfTHR*3qQoUI`AfB&IZq*t=hwXn5%?6RISy`Un! z5X8Y)527F{fPk!|`^^@SMbXa2UeE3ywAd0dF+TcMK`itwznP%C`3Lsj*GJSCo7q8Z z=tayBh!BG4S?WXRr63lDc1DD(;Qw}2dtG#s3@#&@?*YvoSMQLzF+~!#Yh9Eako0?2 zfKj9p&mVlWG~+b*;ODW4LcCNs6=Oi7F_30z>g>XmJ88kUX>}j&?d{z(wQ2X(ng6T@=ML5y2`~Gz(pLNaEH@`et)Kd&u(8657FIq}CD$Qerx&B8NojGyk1Hbc znO-R|R8M=+iZ^(qleeuY5Y!%}kPs-o^l5w5t-mIxe7hqxo?kgUtEM9n=FM>9F#0@VB0NP!g^eCG=`R!3;T>{x2f5YqRw`pMn*D}Xa4|Kg z!^DS`p$Nz*>>eu3gmC7x9%e0$EAO(=a}UHie?d z8a_|7fHM}xsla=*DE7Y4Ku`!Vm5hid!_RzaYbJ6Z#&^FLZwWkg4wjoBHNL&~e_q$k zczzX*chV5|IfHn9Ur2fS3BSH$QV@$va8$L)eD|wX$Hs`tl|sMVudrDGE)0np3g&m; zNGo8eA)ae2vTw4MtRRFK$e>Tm`hYV0nIu2^i-4Nz+>0*dT1dkD&&ZTPoP}n#xSb(0 zFevXW#kEXlr4{ZUs{+!IX9YJZjZW)7g9@)ZGeT~kjcrD+{cq;=mw+WkpXc-m>9&^(8!LEor&>(}u{o=|KbbCp$>Ppp_9ys48uA)l>K>J~vYK0coF!UC;91BuqQ%~DwXO*C?< z)=LqbcU^~Mr|3VPEOke}dd)BP%J(P6`?u>QHCOPB-6WnGA|j4YAsgHtMMX6n6uXHW zg|7Y1$+;GlE7Xq+_kS)CKB;Fv+TXFLIe>;|-fi|LYda{!Cr)3E(gj`@z5@V0I-`5s zmh4zI9K^+E-1eZ7hg`R7{2VpNWaBME&c?$&3qlA_k>LyS`NX&vbR(+dl#idSGZ063 z3MeP$qIkKOx8oTk=djNn4+4qwhV0*7Wm$U9 zA)wL8#0CK%

j3MJ=$V*^el41Y%7E5w^`pks@m{C>eE_?@!eDUCKmGQZ<6>HR#^QIH(QY0Bub7W5u;E zd3{9mKg2M-G=rE!5J`usYuq?Kq>uU7ddx815|jpV_})gmdqwiUx9&6W8<5>}Kp^)2 z)m!F>sULs`K%*ELafNVE$p>>hc4IhTQgEaH|F;i$0D~{kr&cciLk$g^BumFw!u~@a z6_!Os{&Vr)^7-BYjojUC@@byQ{;%@Ghg&P$u`$abyLe;YoGD-@eve+Ehyu;A%?e;&A@0 z>Ro$dl{JAtW{a8g#=*g_cXweP?bbntE%kKM_8#07Sy^gu;gn)#JXRT`Qt>fFp8Vo6 zLtE+T&Pa2&SiXsvm^Dk=6EIMo3_L4q*gMXLxOg?)GQ@p%k7?nR3D)3W+sAw1Bdrm5 zM|V9(b5YLwi;V$Chl{9=UReE&{hMhb7w)m_LqB(Bk8*R!r*J|}M9cj~{W~dPpA2ZU z^0@s^0PE{)VH0;)*;DmKJROV;CFXDhYB;I%7TiCNg?>)9$NdLa%5?6}@Wq+Jze~tI z_-+^n_xlK>x^D(KqTkE;YXW}neK=C6Chn{g7Xw~;l8UyOcp@Ss8pU~ICbIxm5Jjw! zVezMK*Dd1Nb}L!GI8Z^q&yYD$!UjVDyN{#XGfUx~@ReImYLtiMR#DCe8g%@JmJW$f zv_t$7BEY!qt}G3I_ofFw=@s5~q;Oagiwo*EO;q}k$gNw(j z1(=1A>(97SC?mD#j>^k$;0Gz@Rd4FOTgtVh6$2btI=$m;qo)0@4%1+`YSc{?^jNvE z-}Ux+c&qkoEeH@OJ|N$|{`b%O88x293WAC9#^jn(mg7dURZ56CxFamQf={s7nxN~F zL<{x98*y5z%{r;MU+)uC(8)^=dkkl2#Y!L>Hlq$jJkUYX0SXI6TAxSX25%imzcmq{ znEOFDFcL370m8wO7&l4vqqt5gC|pb6lOKJg=YvxY^t3D>rI@gWcrPT#L&^)yaTVKl zznfLB;`y><%0C_{>#`Qlwg%4O+ZOA7r7@bzC5jRIh7&w1#z_nNY<3V#V-yG=C;hXW zoDZZDP+NHJy}9FBR-@V|i5tv66pMP@IY0pRNk6yIj{1R?ltKEd%uM~|BeOv|k(DG< zzw-4Xc9fo#jnCcCa(mzr_7|E@wkIcCm(_Dy8J+>IjfVN6EXUbF+P^RnWQxpWC*@_y zgyVrxLLj}TEIV61x#0y32wT>u5rg9%S#6%Z;Lu-3)5`dG&*Vu(!L%@kJ^*u3aVp5? zwXw2bTOI!WiAU83BSb1vF)E)*cv+rh1cr*z%1_*1i?Dy6O^XS5@D}tNMO%2B$E}H6 zO-6-s6CnWe>Joi0N!)Cp9D{Z#0g2ceTgk z_{20l?n%kpYN&CLbXLA*=BEIC5DpuHibv=WO&s;kFM&kHFlV&KPiDDmfy2y$+{U96T+l&tz7;wmDo|ZYP_p|Q#&gEu zK5lte7~s06hl3|Va>GtI+k<^ueURU{+W}(ftnxCk5GgD(-Upq;9w!Ape>>RcN>P|T znu1!RLo5nHEoE(?96|%CgY4L_-ESK^c6H}T5R;+JLJH1SU{q_Y0d^$7o?BqyNx2yv zf=j@Mbto3}w^{d;o5X=#v&*ygw?5bNr8g4*ubZ7xX~U(Jw)E)_pc&IqieS-*vDD3M zfp5R+wOhuteG>S!8DS3L5y9CJyEBHKx5ZmUm05Bl>Sgi)wO(vw0UqizoYrF>5@=qI zSyYVyZ2B_=upj3~JyE@GExDZ8XKu%mIECyRapox{^#P71d&Q~aYd!we@sz>V z@ibH7-l&i#msf59$I4FfyR$p$XYs1gNE0Coa(%q9mVpoInvJp0hUTr&197SCy(Cm) z6!M9wFsw{$phNs^{hn$a6Re6a#2jtVm=aw0SK*ZU_i(V}e%zBc*dJ!sh)Y@0r0qTf{cFjwX}nmd*iMqZ^0_#w ztPk?@dZA1D-SaEg`+IWrK((sS9}^#e7)J#6ek!=YOFed0W^+J+KFgO6C6FHehX*mM z34Y;}GWT%4w)7Ev)Np_-2=#-g`I7%N4!_g4&fYq#S17A59dI7?KWqei|JSOCDeYsm zsnwRBV`yl35Ue|F{t{B_8Us!X0vrLp{g2;Buhg3_~YO1hVe2E9rjyO z7a8hZn{{b|+q+mLe2xd=BY3)>hp8=$Q!&t_p9YRf#}#1CB8tRb_IHu1_E0Au=3n&0 zN7r%KfbZCD{9Cy8|HxB$f8734Aht|hR!(PngR*KFXB5Ht{Nr%?(_Yp{YExiI*-&LU zT2OPhD!+m*EwzxD_G-&>T*JDwpdzdG8cgt@CEsUzV*Tt$Q2OZ5caQWm5VhgwVnLFB zR(ky`F2^jMZcQMy6Y>5s?wzLXl->{>!S}Dkl3CFLdYBy^B_15WP6T9&E{U!NN6%4_ z3x<KkEG^e@mm5+L~l%+Oy!QjC_Y0ecgU#oHAr~=y! z;s3ew9s0yE>19m}6%~0~nPddq1ivYIDqNHABMeh^&Oo-F zEoO7Tu<+d-ji(L>Z>lVO^puYk_3ugoyBB{;Z;x83muyXh(H8s^$=i0gpCel3g$mIs z4Aj@Doo)UV!smxIC?C7|GJhwz9taKqTMoqUvZ}%y6uuTwWP_k@P=#L!+lgINr1n_T zkNbxuQq6E4D^ds7?C6z%g(MH)pw`QC@&qode`J0yau{sGsG$r-z9`w3Wa@62U`<3dMog)&2Hil`12E!qP|J zi}3=VE=B>iVBohOgwsjZr6%-W`g9C^k?P{Yjb@G^NAifwN)`nsyZNzb73&`b4T0T< zVA-YQX-E+@CwA+P&ygErP8;Drhv(f(GJbxKp~lAI8xfc2r;B$4D8ndX>F748BT}DM zP#p1T3cc1K2*sNqu8ZYC6tidmx!0enN*4}&Cq|uPKy%<|bld>DyxahQhoP$ev7n*b zI1#?+;qKg{>5>w=x1Nkqr0sx>(#s|cZbE++uK|KMmt_c8?iF@AbWvcKR|$Bf8?@Qb zoq`blylh#hyzY_n+|eeT-{YpH1UA*2J>Hj3+7`sYkjXk zc92LR?w&zcVN{pediXsUMFyQ=vT9WNp}9-PQ&<_|c{0dV0nx?-yVJio3TZK)3d1_R zWD*@~^PV$0oy>(B3Hw>rdlPBT8~S#nM90BYZ!gaABFJ5@X$&`qW!X7!!f|n-dnoTlw`i?G5=xzg7vytJoBExG&iG zgTkJ}<(2%MxA!VEf0!Eo&hBiAP7#(kyoINWgP0mLrr%LYzC;9dQ%mVmi!iw-?F`5_ z+Q+9Hrnso?RVCQhe7&xGsEV%F(eVh$qE>gkTXwUtukH-K{-ZnWH-|9WLh;1RZeLm0X+F&$d(pk zT{=)7{!YBou$R%`DCl)G?Z%mS&^w>Gr*XIN3(AlPQT405?_Lq7pj;Hb?PP!uM&wONuaO2uIsx@+QSY7}A8#ggcSP z+L0i=vI9VE>vv1@rzqr=FCvDAwLnF;aUu^a)Sim6frX--Vxx-@P4q4s#AZiq9RJOAlw1%@@>H zSDrrRVO#8j{`liZzBSTTG=ET)P)CH{92}F1T9Pol@;=x@)~ELA;T>%#G5KGkV73k% ztKx>g3LJ0g5EVBno2=thKt}a+DR9c(6VF57G-JF(S3h}n?&l(gc}M)eoM%*KxpgYt zhIG4aRb6VWKbLO21FtfudJ6v8)(9l?tOBGq(iD=Ax$~{!-5{^LQ(C}2v+`$vByj0v zj!}}nM5Iwwh*Q$YP30y?Q-mO5UntY3oR1lUaj9h>me zx8(#eaLrfrj=xVVSGH-FPd2_-bf%U4CPebQuxuX(Rd-}7EHVX(`-c4-li2N;K=vIkKM(L&besBe=i!OyH= zTAvrHCZ`Y6_XlmQ-d)T|9g=U~B4eCQf?^6(#+M~xW$5tl&(Odt+tvleSEdWHZa!Z$ zcSZc58-lu8v#dm2jQEhK47r+BUsM+1O*rFGsxQ9fRIXs!Ftv=93>1U6PVyk|qnBDw z-uUDkZu}){D z0?CIIw8A&2eAfzNfRM2|Z+l3JTn|9Ye%H_HuUOQiH|n&(GABqq^J{Q1_xKQsSj1=7 zi6AI)FT&lgAA=(Z=rv z=B{j^$*!BNkmyG29-k(#u$_c0(5v%$!1S&p?it0n`plbVjP5YRP?fCrbMWxI6|cm8 z3;c8q$WISbDX2VReh4cQ4gV{a%2kp-f~M3OoWm?*nUJo3fpC# zZUF6P1u3fZCXiW_J)Z)2-3B@sDCc@!ly|tI{S%)vzyn=O&x_dRsiUZX73s~=X_Q<2 zRuE$GX}m@ODDs0DAt}(LZN-dW5Q;Hr0#X5A(c1GO+778fjCE)Ala9`jcRQtqbD2RO z(1v_|L3^r$Q)!^O7iP=kB2C2cMJd2cs**e`!veu9i8}NACICu@A4eQ&^nAR^9HS@1 zb&IY?45i@*!#%Lf@2Y9Y1E`FdB<$`;6BFFv<-UEl#2(-JsKvZ^GoGbZW}$D+^0$U| z@MW;nYhg9h<-~rl0!r7oC_sqHD~a9LLjKNkWO^!GT5w}$D6Q|+H7)Q&(@1M;>{hOI z+RF%*-j|w^CGl&keOM?X0(!D_fy(8?Gdv<+wX?8I5R!nEEm*Wt47onA2RE~2rqeBx zI51Noibk@KfDj&xHGKMdAJiDUl|woYV3pfsRG(Lvo~IHL*-1M5onh~Z?5_@AUY!aE zVN$e*JX9w$c{GIo*pnmUwcC)ZYd0?|aC+{58e-oRUW;uy^A8d^TNvykEf4 znyq5~B+rn+(GgO9=2-x4xA@jber$R_o|r7N0=9Ui93Tx<<62&GxaO?@ zLZWgs+qjr&WVADkeDRA0V_OEf?;wj`kM6b@)l79plZ6#EYLW8-;x6J!Ynqp;wi42fmv5;>=TcC=Hp2MN zxkVk8;c;Z1e^+fzyWtjE`9mH=e2{qHg^?3t2NGbtu9kA;Hhe9Y2I8)~I#5PC&CtyI z<=td#Dc|{}!+{V^=eqo2hU6C}24J5C)bH8)f^+gOdSa#lf6P88G=WpHwDyv@dz&w& z23s(AL}hJFdr}WTIb^e^z!Al+lBs4w*#Tx0J)c2mAoY}BDyOw3br)M^(eC6hl?U)Y zCn)vEv~&n?eZ4+}pB&${OOaMwUhe&IKo@ZiWJ;d0+tFmtwnvoAyZd%>P?dZLdiqxV z8sFg?VhfQgJ7j-p^>zH!=QoBY4yFx5Y3bLQ5^G9w#v2q7zEdTy-xBzJyQE>s2TrLC z@SVow=K`z)cBYL}^XGu6^?K=Fhb*TJzt_EZ9PgL$JB&`NLwDq`MIJG&Z+|)kIlUn8 zDn{ixq<$-x2*(d9Qc%cO;4Uxm*^Lz<^dqZlpgVgdk!>+}hfjK+qh?oN3=DTU;%XsH z;O6VnWCK-;{&J?Oj5f%A!{{dn0~~6oiM8k9rqS%z{(Wkyw-FL{Q+oR$SVMei{0KgU z*~1S)Ilgf}uXN3|c0LrZb1yAR~_k3?w(zrv~UbN=(lWv$vEiVnhPz|O~Ws^+duL1geYq>+$o`~ zSXL<%jk%T7S#R}hs>XN#!Or|K6U zaO?U(FbMcJW`I$mV=E)5pFI8iLxbUe#}QcW|4(2H|H4B4e*q1_|KK?ocRp5Tf4%zr zL)iZSKz}dZJpljpVEHeK`3Fk+*LV8=+2kpP8`1oGMsU0SxO`>Eq@&&W_24Ah0*je? zSYVos!DYF|;im1V`}wPT3_~-#h^(8NPeNA_l%dH;(l=d{(*Z%V(zfl%a8by}YDcFeG%7AZtUMb5hyQDQLQ;W+j?q zzeZx-+KnptC}s88w3zJR;jD-Hjb}!yM9a18kZI77M2nz##hFa_5d z!aNb2Z*dw8cmu2|Vz}c$;roSZ3`}ts01GG#b}2M}AO3c89WK$qFPpoW4K@1f=Oc8@ ze;mgyGHD{f{rGxvr{2jJ?)zu(ljCuxK$3%9qm%G?M<#I&^+K12K0E(o(+V3xz~j5g z0;yvcw6R!|V}F{mfMdxCJIsA&^y!ZJVD8IdDakQa(4chI_}96Y`r<2_0?d?eE;F!Gg7mjU;#V;SK7b-C3h+5Au=p^`TUlqGxr;X_FoNNIO9om9M6 z5Hc9>@ZL|O_S%KIz1Bc{RG4}+#f7#$D(S+gS^sz{?2&O)d@#_sYfa;GS`hQcTU||7 zmgUD4qNkpZn=++z(mS+SH8zXVyD3Tmh%v-&BK2geX7`a~0;<9DB}v?uC5nsmqpX^8 zx{6OmmE)V@Z98~w_XPL2A!%dQ?M-Y8 zPcGUaT#>qoo7p#J1JG94bdqLYzj{Aap^4hodX7D}WG=n<@iy3i3KvwAN4zTFVx^b7 zgWlddbDX5fFcm2q&C9+d&MBVjXg6)x*x4iBC5IO+Q0s1*tSivJVPN8P>?bi@-)~-N zmnp2(VE~5gWZJ1@0jVS!23-O5uVI!J*>1?K@n#c3R8WJhR?vrm)!r{o^Y{Yn`>$W) z3S8`YHe$3@Kec0we3@L|Kqo<|^-AIhJ{wd7_#VxWT4>x;|TV*@GnvX(mzW z{G88*C2^EQ&p&l+jb#X7w|Podn%64?t@oe7S^x61b*>ginl7PzOobsb>L)O-%6TrkbExgvkD8^d8*kD}X$0%}t5Jv~yIYRa3;7WcRgE0^q8I zPm%U0J8RsY!vL?AV^MmNi}C1WaHnZ0n{96BUXZkzmSC{bu*)0ZL&4Et(7xRfn9Ub))B-WyVHYpm1mp-glZ3q0-Rc&w^ z!&g&8sl~_4OB4RahenFVTI@I~szkz$A!88_;}7u=3-4i4rkeww%JRE?sZ3409Ut-p zf`PfrUa}RulS|y{rrgfJ=)>fWIei$3+j?-bjT^Q)2O$Xf4680$c-l~=#{A6YuNh&f5`VJhd}tbar%L5a#Db1|Dn9?`tDrVQ z}Be<8>bVi3{@h+zmHUfP*S+ms3`yq z16h`IO*`J$7=s^&M=ADe$}k&QoyXF;6Vx9<``eeocZxqdP?geKWrRjeK^fCr>Ci-R z8*Uw0#=y)CBi{HGbHw(+pKgVumejfprVLy#*ww7FqiWKE+}`)M7oJqE-x`RYXT`Xo zTYbU!J)|6LM`o|N&_iAyTm(p~oNyR~;zBX&joUY#t9b*%`O~b}JE0|5_f29x@?(}_ z=4McC?JxSV`xTqOL0JJOhP%y$3+ot^dq5tXBCfMM_hoA3AX|mU%aYG_Tm^*RDjZL( z>iQk%OAT+GX6n@TUj)qo<=n?CzN{(sRrnLvb z9HKDFn_KK*=Duvi^a`6kHDjfR!>?_gHp`a1`wHG|q~xW^PBU5f6WrDpB?qmmopK7o4wo*{XP@~~NsBe`O@OfzS!LjFe#ibqN zfmUG4AQKx`wATP50yPXU9Q%L=Cy%k?&R80=VL$rL=-f~3H^;p=?hu8>OXn4SYA|#b zNo@dLC?T{;0QJt%>MTG1!qyCEwkwF1nCxvbU{EF&KHEt9QvRLNE{~Ee%?4>3L%cXK zQB$>A^Sa4|;}CIZ+vyMo7>POo@bmz%EVoz5?Sz^=igyubN%wrv*_n zmFUfyaovcFyj?k`gkPH!rFYMCzXM7?mmypoOo7IqaRyxdv*wfCt15D;nJr=B3tTOb ztf(Nw)lD-W4|EX}|E#!2|SC#KP- z`-dUtPRFq7IJW(CX3j2wK&Zve?$BjG^A!G6z^qoNu6n!dtoDqUZ8ABN@q3n$!O-@r1kg<=M7$rYL(Zeod-)?jXN62)>x3T2U#j85Rl#S; zg9FF4CiFmBESaIj9S8Y}? z(>(VEaqof&#QmgC1BbY z`giI67rn-0|A(IZm8AaC$NPU*i@#*{e>T|%{C|r5zy3Zjvb6vG`6+s-)x*v2YMs(A znu4CJwzlxq!;R(q@-n3t5;Y3t?s*c4XA{+`BYJ3 zZ-sKX^8LZyQNYR|o{OS{ujN~xV4Qk0(QZE7;57XSMgPdey%j03ERuWcUO``9>= zaU?HnkXr-y@ZWVRN9a;`sqfpv(lySkvFDM(+u9ws%XTlFr6}x{X6-0gSUb~p9;W&Y zxRH3C8Qj%PD(l@a-z+{c+%|ZU;d?2a8-w~&(Uaw#?}aGN&S1^F{p9r=E@~7Z(jOK^ zVzFOf0cylqC#2m!8*qjD78p+)t(Ua8;4Dv--{=Yr&!NBAahO_?4vGOG^sNB{!@skH zcZ5X@*>zE7gl9Z;H!4lFvgF-jh7qtjmZz5QTq1QE88iK$0L4oiB{QgVH~tQJ=7Nw> zr%3hI^25psZ?Jr~#PaIC*thvah7cxJ;}@7%9ZS#l?UNX1N5uqvcZLO)0!7?5dKwoO z(ohi@^3KO~TmV&nPMS~X>PxyY#>(?(V9-PBTiz0l4} zJ5vv*OWC2BE~BYrO}!k2a!P95oNpF5y7z&Z+qT0^0`l=Y+hm4QwKZjKw|#M@Z7oMB zzQJ>St{U2ta|69baVU!h_0m?rV5D1gpKEQydBv|aj8S|#0&4VZG6B`tgA_b-ZH29W z2I%b&Q30QPY#gZXyb=hbKfE=EhaArQ7Wra148Ln|snHT#pOT1VaG+)iSfpJNa}Jov z7W}~ra%N2#DG%j{$lbjd~xpWyvn%K)`1v@|C-0y zbh*d`ji$sM?~Ss&Bs?3!xbpog0pj&CC0T-IcWo&=T_G!F z-WK_n^dvM0s6%4EyF9+f1h`!-Ae`F|^m=jH<#_Yf0(8+_d>utRa#PfPs&I;)%*0b( zkd^QUcSl`Mc+C}@asV1Ttpnfk+ntY&;fd)@7A|OQJa;(1;0fHf-q(E}pqtKY&c=iA zh?G#ooH>9is+>(Hh7Kf2LKc9u#^R|o~rq5YyWb*!Wy~uwGQM)S}i z_NM{B`PYEOcrbzDCIug33WZ$>!CH4Z^xmWstG_B1vvmUKgr|I2euSAi^Dr*3Jm}o< zOd7gejq>9NPI5QBs?73pX!CA058Q(8dRj(lXK0l6vwp11C)v zJh>>|Q~$z$0fh~a;nodJ9%~gjQ?j|6<;r$02zyY5f?!TQXP$c>eLTcl%K@z~TCW_xe4nJ6 z^5i6&_UiYWREZnN#nOufIGPFEsy6#U=TZm4kUYc2hItun&Tp0Qtdh(7H1|e3lC*7y zdu6{K!zdEoATF`ys!$ofO~!g=UMK>&5nMVXN7%V~%{C;?^JXt9Sih*PhD%&WWcxN6 zQb!$ z#L)iFZ+e&3N(rDH^81))clBc0TrBMBwC6%yJ?r+kFDi76(WXEgEHt6QAiLvHLv>0x zpd_agZq*yoxjbl~2z5~J?s3_uY+X-AwN;CRtyXsOg!dJ@37a$YxpdtIi3RD6^clK) zW*IPn#TS-zD-A2D8(`20t7^wls3?-A?S9t9$zt1)zCYO_x^=aJsYLV{`HG(N9< zTNInA{&apvOO>0q!L{?c_Er3H{UXB!>SplU>g6ZGQ%DpoxU-HL0srG&ph}HkmWlC4KMC{-(gvf0$am9)F}MQ19~1rV7-df&y6>EKKBJ)8{(7 zZh8Xy>EzM+;deplGv((`gFKzR*Etq^oa96`faKvnhn!sc0SjEBt4732Lu;mfP;rY_ zcnFY`Pm%FNv-b-Zfh9)5q0+^q=`k+>{A;KKI93*7St_R8{WBI1STRsj-}DCQb|P6z zj#BBAT~`ep8z;_xlBe``cFp1RWx3~SVrnGNlR2CGbTDKmp*i3z&Pl&X+33J48Y=>w z>8(SiI-O5?@khVMX(q*L)*BcrD#*{B+^?9khD$Q(e>kD z;d^mKr6^r9N3;mcUpCQh0%XlIinC>zRG-}_3s|r6^B!1Tq|^ooWJG+h+IMUBN-14b zuiq%__8s>6;h%>@k|c<`VQggu9$-YbGX^bcY!dXjLLmFXg;mxSk@CE+{53H<^((qm zOt_2Z8ccV=ffj{VT@@Us~7CLcdJaswgzwymMc69PU-&=%+IxlbDq(X(^~ z3WOe#zB#ZnH~gIi{K45byRA?5b(XS~!x(4OOG_Sdz&bB$)dZ9us_ax{BWHc?m|m|# zcYU1rC_x9vE?jTJRx-PAa~q3FK}d$!QL933@W&1U%oo?DH6cTcYIKM*oZ})65`uc2 zD^8ir=fyk8(%2I_Q=%xT{a9X^QnBR>9Ws8PuDnKA^}QjH5KS=TCgOeURIx;uMC+il z`;eb3MpKW(h{Qi{`fE*My%$`Nw;ET`v2$gww18)M36{r>K*=;Y7FU7dEn0+~2Hx_sQEU z-G#I*Q`Gg%+PB-C>HtFwL!pm0Owp~p#0z%bX$>BL7+@fJPdPtbRw>SEcBRpz|7P%T zvJ)yjSAuW7o&Ycu%m0A^M8bgN+4x&2IzrM^_LrzYJKtMy7W}8D2hymu%ssP2<8DJD+ogo0$ z;35Uugb6;U*I#-1$O1GwqJ?p=ZXc4iu_NMMxmJ6_V=EDZ8ADeSzK1ebFg%PZg2ZpQ zY_wgv^CvQ1M_IdN`KP&B+c8*=+J)$IkD)yaE+n$$}zU;F*H59Yi~DGd+K|q^^v{*Wk}R$NjE3!O z>L$L)1&BzI6ytb(bvOYD$tixn4Y|Js68clXMGVzVVh>pE&)DcbKlY6^g+#wZGxQ&} z_P2p82VK2OiTsGX&yaNr@m)w(uo!MBz^d%@7@A%^C$_3Af`0crW2zT0FHb#>yT9N5 zI@w{V1PLvJobL2Jvz=s&2bhW+7#$NqKLQL3+>0v90QS`9uY-Qxxbb?vuGawrCNmF)S#Wl|&CgP+0jY2rQ#0KVZ{RI@ zY`Adf#?~#lfgiJJjopQS3ZR*n_i|Suzotsdg()X7;enl~_FnkRoGwtCv=RA>2l}lZ zix>uj>-KKCaz=GkK1E);YyW7C#h?w0-DB<|=#c1fHA6P9I4F7JXPWX5 zr+d(xc4HoL(8z!|YfB?Vn-Hr!yFDxo;TZawmY@e=TX@4pXrA(6X6Aj$Z&qChQ9%gX z6K6Bms{^mVk*}9bUM9M)fS}p5M}p~e7(5}O1Aou>WW{n|5||2LjgK*8DjCw=>xUXi z)nWv&qn5$UA{W{hnPmceDO@|X<&f}rRF@q->p(_w#S`c?Xqp-`OqI4_XU7}`k zzrKaJuSe;VxXBwfSLMA7hZ~x_AM>v6POSJI?W^cu2TDPOG1*ij?tG3}Dx}cCr3Pk#E3fh69$!7qhsrC>J<~ zocR+aA*1=<{K-Ci95BxyY7?acVloU!VL*+=1$dH&*AvjcPv87^00JMe zvi?^0my$DN|FhBl>>p?a^W($6yL5l)=e_@+BAoC3ZzVHx`g5X}n{`U%yAydjw6_Oe zO7S~eJu)4fXi{M~K>fO1s*iBfSc#OjZY%R>jJpUNIIN!Zuoo}!py76H-XY1w7ZYyE zyYj4!_CLIojy9n#I@MTMjhb5jMf}xMrCZ^QuX>Wh={tQzjDBQJ$qlic-kxn^(^au> zbfKqdb=hx!J0Yv<-@R$ z&1CjQdlg+;EI=hOTJ1mDc`HN#7!k5s-Hv34l57bqEx}@owklqa`}Ap=vbS+6u`SVp zbl*g`$G(ymz2y0lfuleu+)jS_!yah(Eh4T&=jtF8g938+Lc>aqvbFJmZB5OiLMo@8 zEw_KPh7~;mjJ^rbW1eOg*IaX}YLV4d1)X%3y8p$bo~hdR42iZSziRupLgXS7pr@Yu z$^HRl&VCcR#9|Z!vi!`fJeK?L(YZ^xiqZv%L2~Nv!~=;N8B(Yc3j}nL)*{dp;Yx5x zH!h%F4r~PvZ5Kipd@}cJ%JhmN0n=Yo2V5_bm7zvNb}We6A96{^b9BXUq4+5~%u=4a z1k?gZN~E;{rYE_vH^VXsFfFu_F3_Sh-y=UUNq#MSi2l`8w%MN^pK~$wE{@$Wf8_JQ zuf5jkmdLNneun)Iv^$dWFHXM=XZC!SHP69b3V#!a0LPXf@tRvYGqddL6lhB+rC2G!9SW)8Rw&Y7DH14N zT!QRwid(Tz+@VMa1Pv03OK=I0AVq>h@Zj9g{oDU@&U5ema_!uc4|&#lvgTZwGg))a z@s9D1net$e1Em=p2?13En^toNIH*FQsV+Z_P2J5rKOJqgM2LPny`ios>}1APo8%$vAySP?xVBdnIpX|zUl+cTfv%gp`ww*aPO+_)<| z$gjsfSB>bQ5OX%2qjJ)~8NozdZ9`5itu^@s7@w=e6AmK)MDhO8@dJ~|nebyL<%_pc zqgQw6hrbnCu|BoF$JkSuF>LW zEzfl8w@54Y7)CeS5{;o(=|;jQZ-C(sbOpn7gVoV4fWI7`o@CH|*7^PTL6$xhDEwg$ z;G1i=oUNSIZp4?o0FlvVJr$0oG_&(jCM`pM{cgwXI46Nk3szUV&2U0f0+naO=<1G* zvdY^;$c%*Uggns*c*c-pA^F)11Pge7D~)Fn$%x~gE}z`s`?|{kxTW3KQhNg=jYsu; zA9@AjU9}L%LfVJ0e-#0xtb?c0?1qZFnEYQJOe&gyERg!mKM0M;@#3vYt_43oJ8_;K zx8pv6%(>ld?LDt)8)G9cpOT8znkWvcgzE>`Ot%6A_3~88U;E2<4Pq3L_u8^svkp2F z@?xB8KK7nsFy%I%T5I-p=qw(7;W{zysr^E4v&S>O&#sEge-MT1cQw>eB_vE*lB;-O zsRyx>b1$rlFQ35`TzhCvy!dzU%ah;l6ng;pS^*5;dMROztSEDE{#bkOwmF^8qLmZR*z`RIUj0qM&XbA8)?Z) z->Bd)!b%W^m|y~n&<}U@o(+9=2*g$zRDPQB+!o($F3)mre0KI;d?GF6JK>nl=xZ3p zbvNlryf#hS;AQUZZ};{>6^*K*q8$cu4y$Eg2>IF1%k4hQr=sq)DnF}4pY2<>(agN( zmfO9|w#v;Y)8%gigxR6P>S@MWBTr_0G_bW%m5izP3sfR@YM;GOd3oiFD9GiDX@0%T zqSil@Zzq}ZjRQnq;F@9a)V>v0L>noS&y^hmD1C74CQ={0lUmrJ;*K~yCwv`a7aZx2 z=?cL+_$P9rW<0AN=t-X*L8*H+l34?t$UQqI%A4|A>>X26YJmrflGr3iAfVvs9^K~~|j zQpRi9s48$o-u&|+R#3{w01#4W13O29*n%GhS53$0xpwU+2ea<4-6|Yo@da?q(am^0D9eDC2gtBG|ij5Ol0dLX{oSNPlMa z$qdpJeF!hi$qJ=#YI;I(B-Ez2t>fd4De9!ML8UhW{UJ(5Ty=Tn(!(Mw6{#U`hdJ9O zXT|v6R)>nxmAa~T>yT=!?>UaNC47MW1FmcpT=_EMy)NyVTScX_{qU{C1==0}ulKe! zHj4gr6hQCg2p1|9g#J;Sf*R^_P)8P~%3HXwY_*>`6xSD67@4De zyu3c>fY;p-CN8yrnm;@&9zut24$`B2o8IN%0pbxZ)hAn$acH;IsrCNEagc#dlhYqr7TH~D=)E3Lol z6PpU%@6CTUZgRxHKq;{iRDVmE$3c|dz^7f;`+Ap-VX}^6>R6AYvIoSE`p&f7;+My4PSd1ZavctH&Hr5^*zGm%ch^U~g zu<@EF4PD-I>MM#d1pl@~ZFHWpyOf~x#(ZZ^8|?u%0FwcB?Pa$USqpBL3|!Mjeb1F6WdgHDYPC zP%xv|;6=1ffFKyGq95}dqtp1X%tp|nciDaWeyLH2MP1l-rvOIue9d4~=94Q*sg0M7 z^!Dl|S{@&*3o6u?ye!xa3E$(_?jCs;Kcc&q#eLPWrczCgd16>UZYZZwm5e=1TbE)U zWCpc0g39Y2cI@0l&-AdFMSB1IWT$nS4EcHCsu}k0qbs=cWzmI~X057Ea43jLqMZw( zF7jv_6;vip*fMf4;EA`Y!%s6JDVJg=<~hs`sIHL&p&{~5ysN> z8&bc9;{}e?uH(9&|E)1nQm_vW|vYqq?vwT5_KW2weKKjn$+neFJ= zhS4UeaR-Dl>C5Q^g?Vp#!+XQedooaYvvOO`^;pL$#)f?7i6XDfVDZfQ)$$}YJd?Bn z&T_830*f8bvy9p3g!ZKGkuy?sRAARdhOQr5PYoki9cRXC5GO}bwATlT-6-e#q_7^Z zysCwl^(NC1uKLPeRlPvmUI7#EaZ=NQ)@NbCB7L7p{y-Jce2=~@d6*^7!qFxOI~{}zPEMMVos(Zb?qSdG3D6KWJ#biv zSfN9^i*JvGJ<(fC(p>*|7@_j#pCZtfO{yrr8SCk_Fx?O`I~yH6J0jQfU)?Gv?#Q zZFG_Z^UlGJaPW76RkFA}Pco=C@K3i}GY{sy`FLWtypnrbvoJJTw%Ad-;9T;V)CRsk z8PV5egRk&IS{qEa(~`)0cSvc)T>bftS7}@7o&@v}1)X0IyC>JZ8H>L`Sub3hco4<+ zYeelcKax88pM~$vtUC^W&O_0XLC@WG2kx1jY3mLG>IH^Af4_3XoK z#?j}V`))s^|A3w|saiIzd7XA*%4?$peq`b97np*13ysMkYuuxjb|gSgMqpx3f%V^a0aeMO}*n6*aZXsqxpUS4<$}-bVJP@*u$@>}lya22%H-{sV$gc=g&vq4yu_EWyT=t|fJs zLagNMz9F=4!{cSSTb_d@>245S9m+7EE?G&-gUn2*&(!=?tdWlelR!6!`P38P*kz_^ z4QiX>pvnYQ|JU8^0_Uy@nnI_fdKq4Vl#jZh=DAeY)%%N-1xJQl$tbHKth@}_e_5Oi ziQb(i)F{igo1bg7)mbhQe(r9`{h1#xTAxH zR0cLgD#=dDWRjikbk^6Hxa_5~)%<$<>6FKPyWQQ_CwQ7WV5y7{4F&C)s-Yi3V31%e z($**6{ER@r;eZ4Ks7FZQN@`3&G8A9?#pn3&m+9AYTr|G6D2d?8bx^Sr-nCPsEr%m3 zGhb?tcj?-%Y59hhk}kaVQcv;z@{G+KW@8v{3-kRl>Y$BKZU-cW=rhtGt~ABBFnOdt zWX8b+=q1e_g4oYTuv-E5UrkZA^-$hUda(bAxDwo8!S(U&yfNXHJ&FAw^0?r(0^@G8dcui9An!7q1K(1A{sAGHB(7#`4^ovftlrT(Or zz2Z}?b!^^`GyJ29rT-TrgInti7nU z@{8UVfsGTmp*zBcVf_`ne=R0j+cti3qA@XQ`4T}Ud`J4=A`IEs?)E}^f_BxQ4b8_ML`t0&% zRF-BXUB1ZOWr^;9nJPQboqwXZUTkESNr}!asKWnh{RT7@=a}PX3UWynw(qvzi7*a0 z1H`oHMp=fxQHdhBuNF z=uKvZQl*auQ?a~bC-I&#W^222PLj8)kor~s0Zguv%i_kF!)1Gvl`o1IGwEfszVpNN zTV0fC?}9`yBJ`$XYeD4Q)KzHzd0ai~O=e~%!r$1wyg?@zXR@6Ea!e)P;EE957YO<87)`IcYpqJVmOY zu}RN7T55cp4Ilcr`fZbFRyY=THU)TT}2#qZVbC= zHerK>0F_paJA4e|6Rmxl3Ch;-Be(NzeIh*zUa#^9RBpmuRuI4KBJ!$z^mh<*YePeO zP`Ab0v+3n9A8(^$wz3iMFeUY-B6_P&iRSvt5l&Ph==Av+vK>(GFt3_y3hDr~#StvYHXEj(iOA(u z*||s``wTZv%(ib_@Yzr;VV^1d1U|?osShLGFQg&)oHRHk_&u3v&qhjzcbKAZWGf6% z&z4wg5Sca`6m5ddOu62sCRW{pdjGTP^Zs43bGkVNQt<=cR6RM48umYUHLcq|6IK04 z#-ZhxMdM@s#@q5)eSnWXSToDUd4XS+(^Xov_)5$7L z?q}%$;PEHE_p~knSY3=mF+S%Y03w_jxu$S-mV|WqU@7*`1nV;vaPe&HIi0H&Ax<2MQeqisWpz%b` zd?&y8p5=GKtHfY`>J5miVb5owRRClxLC`(fCkQ}8PO5viW->j1pP|nOj>q`u6bX{om0jO5#^O?)gIuX#&!DoJ4`z9yR%p=6x8j0#$;y@;OQt8|4* zv`oi(LK(t7j!gwBILL!87gZ90F>@^o>rdwOqJF#bCpOyh|5GKG`YX{GVZ8l z_-yb9c!s%V7p5pULQuQq?Yptdh5_?T#fzOrO#b>^zn@FP1lT7hF=D>*|6IEf2l0B% zX0S-jsc)G0qg&^bMcMSh_Hq`jc_^=m0$Nkf4CcpU>O{~qs$8~POaADRC?NzqYYk{% z`Pq*Aak%gnaZI8d2+{+=GGU#EVzMvtH3FD@qd6qQJ0IWp5~(qC}_rI?k&6FL=!cvc4A<;|?_N@N^CoG8E^VIeG8LzLZqIv%r zwEp=DpTGY3>-=L+^^NZTCm$gJi2vk#{=z-_S7)2{74RQ9?&trK<39Q?IqtRp&n^r5 zRCdeRweFcv;yGFIo9 z7KV+nztF7lglN?YU%c?^(0p@wsbTWziCmkVw6)XNz~+WSQE#yv2jU$-5U5@B?O0PP z*j3N^g^ptJy9rZNS^Ze1qZ4zqbJ6&7s#;vXm&7TqhiHrQ^0rySme79#_;{@PRhVo} zI2bwnwAvP2mku>8rS7P5Hdk82YyJd`H0XO4lIoNvb$CfZ9+Rna)94~tpRLymJ{H7x>a9HQ6ctbcGCJh@sS;{AeND=%4&Xg! zD-DyAzV7A=osW+Pk1cluvh~xF%HL?lDRjXtA3v_)rdJqRrs2j=WF{+&Xk+Jca_C)% z<8@H;1E9hdX7H^|clTCi`CVjEaJ8Bx6IYAEg)J3}$&X|sbV z#C)s&HvLoeO! zfcXB1gP`;y424w*$+~by!PWa7dcNfo5?Jg|nINdKZ4z5CJ3?b?#aJxe#m3*h6^%I@ zC0*-4b}FY^i21CRdRX5A6|t?DOpUa~#!~LqH3igj145miVJ`IDSPx~oFYURPlPb+4 znZspI;+R@qSzE)XXvy>F>FVCgS;8PwvUjC4X%~cSqGluCz~IPX_Cdz+7!3m+2#5~i z(#aRg@R$LU8%r4W3u-9Z3**i~nCcWo>^Y4_r`W7KO8WRddVT&nth}+pyyXoygQSNn z0yE{p8{;5VZ|$fDltlc!<=PT-536m4TJo#dkB1y7Yd_Jjlx){6ASt5sso;=@m7 zCwX}FcM@!XgIHl9ej+c@sxRSetf(<--@hJJUX9p?)5SV|^$t|!kQScvkK4LExiHfN z2Jan~U6ZVoNF7xV3;oEegi|l=`EJAF*fV6))8#GI&^NxJT`vM!$coue93q7*8yi(A;mae zcPsg3rPbQIvWYEjY=XxYXac`g>o%sSc*^MvcV zse4<`Qb21A$8u1DTt0bEpDvaANeicfj8ZM)t{FR~aZ}eKthPXfP$2~1OZVZ_U>>b!$Xrw5x4|Mwci|t1XMZ^mu+_` zrX1B*Hyf8!;d9;aiI(1SSK1({SuN2(iVm-DtSp5i;zY-iLih{sDRX=Sh8H^U2-$@N zY4sPeufR(S?2L!KrqvhQy)3)SUQQ0?t6Ho9#5mG--wdOyM$9ZqYIj|{S#nd86R!(c z_$}7jS+N$n)K}C^Ruw4~4GSt*+Du4>6b^W}%%aQik_BCyYwZaY#743I<CPlD8` zR#n`FQ5Wq;Km~?)b+~9dxMQL7RXtXz(c0n!g=LK#FCqOK%p>v;<>4pxknCq~V7UQ1 za!_TEw#7mBH)lPA=hh>sU%4k*vR^>P+?dI8>c$mgHg|&{D4*-@009%H$`o^~8Q&22 z{WYGaTr;m&emL1CGRCa*okOu0L3A`c3gY-eB(x>bd{-LdQ-ykvc~)K`YL9wytXRC) zax%E->K>7#z-As?C+Q(QVW17y<2W-+85=Myv9<*9Fy2x7RZ*1b$5qPZFyjV!^IX}= z)u_iq(>r11_RDZe>OwVczoiE+ym(G^t4Aw4e3n(HrFcb#9aSgZH{)g^jfJeYE5_*~ zDy9OzZLKP7#zA~kJC1mGg2uGXC=kJlG~i2B5xZl^&DgV26r#-f$Y3`)jiv)BT}n!s zUkR;DW5>jY)i0ZUU0Ysm@5Xg*lqPMMANl2$dzt})>@-~tpYbJDs>U}AXdD!NG)Ne& z$rJxX$Bl=7+cHi4>AES?+}UjRE(2BbDOstYv}Y{d55yWt=(8kg^*frXz*YoS;V*7j zRYNqp;m!w77EA|7pXIycp_-+pDYjCy*!;-nX>4ftJu7xDfoBmi{w-o;AkYT zes*AZA(k8miVacE|JrB8O4VQ)QH9KJlFriv@lXcV5azcsy*ymRtzT2h!SF70W*Cm? zHaUEqc|3eF@rb>UgTBgq-8o76Q1EZONb zN1y~fcaFRwedRHi7`}rz^Kgkwj$xzm-HJoFEiooA%%mbRg)2dp6fSNElD9Ly333=F zUNIfP?zN<~!d`P3uZw8&#=U;(f=%I25nLs#us|h5#PaH3l=zAH!ucc%HnQ>5or&DZ zH?OTnGkms3mN@vG{}wLZbbOfzE0TJ3ZhFYPPi z+O|!1_Fd#t|@|0!l7@VNZh~`G^Xn5J!ddA5DGmE`2fYJulKl6$hzdd9}bl$Z6tz zQ{S<-M@33z8>LA(YziAb$TS_x%mK~IU#6t}${G&|3WbPocR3uIjRrY(?j@T-RkIef z>53L=X4)N$YQ(bF61xU=0w;FUHsc}Ar}7}}`NCM>=(b^}Atv$xeQRd}ys>U@A=-5tG8 zQa$gKTfbzEEgKQ~6~`4yOAbRg{osXiZaM6Pbh#0U!e#S#Lg6}hr6f8}xNJW2`94De4;nWW(!y{YR>TUK8~#iK=WuhRjvcuC8M^c`Lg z2zVZZJ?&#b1LV*`t&RD^;o;#bZ*|_C?U+S^E6^GrL!t=f2XAt*=3_p?H@$A^b5dTR zQfRL+e$$2gUW}W?I5b+ihVt6hUoKcF!j zgxws@*R}l?()z(bI;sL$=(Mz}-up0UANkm5{B>cf;Acw@W?Pbd!KfwC1aX@jMd+G0 z{Wak=r2U{m)A;tEX`pcwJSuH|J6adY{vvew4iBba@NMGmE~m+lQ4x6R+TCv$9ggqcB;SSg$q=UCce+8@jhAm{WEV#P1hac)EMt1jFGTeuQS8GnZsgL(N_Mc z;TqRk92T6SQ1f*C_5tt;?R%4Sbgu86Xkb8{6tfeimv99St|&RVb;}()E|8rzmu5Tako=6z9|_?xe*^O z#WK>nyX4xQ_2AKi0x;%>TpiWp`xbv8-h)(uw(c4r!w>$6RED9E+)U$&cdWkmXhHlO zmoI>WAmT_|W>Mi>b1VT%$%uH8{PURoJ`V;0Q$*<`U*8c-tlSM%El@BeCdGkip9Ov= zl*e+(Ns3m8k;Sj;pUsn8&skdRMG_+X$rn5~aT{3zdlk{EWjHPq2eH^+OxsYL)x{*c zOiWq1#39W~>2>@YsiGGzq-W~sj6N(E-K-tDi6ciW7=B~k=SNAf@qPYLY3pO-QDE&l zI4stY)w)@yiMEq(NPRZ2*qA+o z_W>G>rlR|;)F~z;MThWEhnyz_z59t0{00#!591$x-WxUi*khU;VH;78a$E^_okhTp zm!D5EV2If>$&SoZd!h#|qZGVqjP3-)S?5>)IJv`&DXOGue;fJw@lRq-X(V7w{~n)n z+NxNk57XImKcxO>$}~!cQElD+KAW1Om1U3r2(xq^wY zQ{4SdXgQt|DzA$^7W3vG6L~ql(_?y#{#^e0&7L&=KJ|UaX=SS!-4pMVZc#9>Rut+! zbg(g}+-1GmrGP<9)tH~T6YJ8`;EEn%v-s6M6m*O@TuExB-raj5VUL`e=t|#Kigh3i z65b^L4B^%r)?(rpwXM5`OnT!}xTB)iYb7OxC})Fi*SgQOm<6@AJG}k;6JXxv5k>It zdk?a`LMctKJx;gSPp)tkh$bj2Fk?vD#2YF-^&#hRuA%!}$uC$*;oA*O@g*}|O>G%$ z+c%Yjro4gvJQUrJA3fTFjEOagFQnVXBQt}wFIrAxUkK@7&+8!`$r2yIg`uh7GLIjyaM zgSXCxv0oMJ;^L-A2{vcLA!lE*%I0{taLiVxOm!MbFVGsNy@R}r2aA#JN3r(D5R}@^ z?O_SCYV_|NhGB`XhaoYU#C#-vixrG)_F&bywI4S)tT_g&$QQ4>UZ7L4kZ)t}RStA} z^f7mww|CsRr>>6JT|2RBV*mH)=aos)akZNe)Qrem*t_OSfU|7f3E+wK|2g|y8o>0l z-h)ul?6P9)cr`~dT$LJ}{h-q*LGV6H&FsgE7H^joxZd~t@^{v72@_xdQ7w_xu$2qQ zi9X#^vem}xCF_~4oT#)9g6EOU_aEk`Xgg+U&Un1YGQnt9X{Sx2A;otg#wGGqC!7`# z_*G;a4o#mV*vI1`yB@6HAoQUFS$;F`0?ziDs7>6L&7}H=y@xF9?t+@!^Qn(d^4RlI z08{kr0JHns!tGm`9a9xQDax%~YnTz}%D0Ky$$;F&Qhg9i&(O=JZP0s~gy!9I zJD6D0?MO_W_v&lWaPwfDg+tSuynmd!cG?Op)MFY?gyc+i?Y91r> z!D4t#$#QQ>!r(}0N_-*3!yN~SKugN@Eu3XVfI-w$Sd&rJJLn3ZAWUrV#b z0FjS9>{?Tq6=Bg?#%Eh!&_79_Cr7>V3$FZo>}b;Dcgu#N1J%?ohX%Y7r3Y8Tf6Un~ zzZ>SIj;Z%dS(SU;|8+f157-0884zT;*%uGKbk8AGdb}?_2Gj zc&E>(M*LO_4+I*HL)HH~)T+PjRib9fKun?Y0U_sOYR^uz`0<%FEy?7p&bSME&*~){ zU2Pl?eFdlS;?5YUzq@@-bT>=eBI;{)_h4ouXo_4mdaK`JY?EU}=xBXC54J zPQxNlA{_SX&_drQO3X5N^e}pWvF&%z-RGu103+gI3^9;qX!rq(a;blVKkbfTwL_=V*};21jg5d$>ylJWhlK}R0!YVi+}^&8t3^+J)c!poUZpcp+Z`CL7BX+ zA9m7i6KNx4{5Yb|ZS?clB~fRHw8WS!gA`#& z*6)PCapNkKJUp;Ki=p7*D;@iTy}Y=J+8vE;?1xlP>PHZC_Xdvgnl-3s-0jzwz|1(s zw?p=tj?MQD8=_!j#?6;QHtjpJoOsjhgOI-fD-f$d0PiVYGD?XY_PlW6d#K%{Pfg+X zBej6ztbviZ@K}y|??bcp8B1z#Dd0LyIj(A~^KaS&qp5AYP=MaHXm(|HzJ3m|S((7p zB(N4Zl%Q+z!A8J%8{HlqGc3!#ZnC{t8vo%8^XS>(uzln!1I8)!(=#g2k z6#jS>F?nh#UNzK}sHW2csNdmDH7yp54UB^LE=aJs3SugIoPxTx!b#dItQhhJ3uu5& zB1n}DvmCBzF8VCu7}%p6ZhNxSAKx)0V#mk`EN`*+!AM^A&mwd=*4+m!=sW^h$bFFA z<=_b_5-Ckmg$*<2)n#L)OOrAlRtTH!6f=9+HsjgPN2QI+3yJYG2)%g=H>M+xR?DVi zS$k>IX=wGUYmy5I*N6g?8-!aXS3%mMj58SODPX@{Zaap#m3L)=cq0B~##hXyWOuST zVZjUr^0xMJe&50eCbO+dsS~@~{at+_hh-OQc+77fn8>|?g&24c4SN-QlhX)Y6I(U- zFs0$YzafwJqcgwe7fY65bz!~}BHchh!NV|XwZpT8E*p5cLS%jL(P-Z%G5OuRS1Wur z6NlTWPf+X@K5B3;^i8)1UY?lTZHiAVPCjm(mc(!so?ZD zxxXOlcm@T&rv8oC|r zKy_YI4-yec!R7p{rV}OgLYIJygzOZ;`Y%<1k@05|^JF)&3UvSXX7?)zqc4!w=B;6} zg{yYWtnvBY~jS8k*2@R`$Dm#giEfcexXCAhqI?Z|!T@)~3Peu>kJ zHjMByd*F`qV-{Miyr%CB9np+(klQw1HCywwv$3aQ>@W!7@u28JT-+{+aDb+_Td<2Yu4_qoNv$H*8k#?^Bey^{Q3=TeDt3x3*pTFx)A-(pgk}A?{C_7 zLz^A}7E1&=d`heL`Tbijw=HM>iBPrt@E4!up|9R0yc)Mt(H`~v1Vs$>2UsuB8h5fF zOaF`+JP%HRE~8M~nPAzTFOoh5MJ-WPq?LttH+{TN>Q{f>EX}OMNbU|{T+LX_Zvc79 z*$v7^_CBf9N|T0GNR~*;xCg^LMK@gigX4OsgD|N<9}ZEy>>1`iH}Br&m}tn~WTtbz zXJ`^{lkuh;qoduTM|0sqp${D*<;g1LfREGhe3NV(HzPIg!r^VG)0Sehz_tlNv0ZIA z)2*^4$07TQ(vS*F=_pZ3LXKVlw9pwg^Q(YyB6k+CcD$Z5u`q(QWrV(N-^y(>{47Z~ z#ZAv1P%Q$SU2l>XIr<)|=UVX%t>V||z}VH&<}rnt^V)StCGXI#&@-Q4Gy*@+67RyL z{AJm@{>h>c2&xFI_7s>qX9bOTZ!K8Wic=pw!P9RaQQL<$qV*_BDjUbdCi}&M04GWemfX=4Re2C0*LV$(t_D& zEZR_FT~_s^HGQ4*BAmpJLQ_&IwLm0HXW;GE83eRZW+z3qglH&MDN9Cah^vL1EbO+%F62M`z5aO$N zNz^@Y&MoUZq`hUtUCESU z+{-e@S6}0x8_KFV_zHm+uYpS5V_L&g`d79pCn&P@dwKEW*xsIkv||JNjBn+!AX|@g zZf~^op4(kf=`agSyd&5g1*iS-&^KPsnT^6vihiO-lw8~j}tv@ zXA58F@-C1e=%+Dd3ro1?!a+QG<$0aZ8;bE+%Oe{vOCNcJG zM=9gyPh^bl8#2M_z9W23R=!+maQ(oR?Kfu7)@>(NY>ka8GvsTzAQZY^1B zKE}mV1@8)pLLL>R%L{-1RQBv``E?4gR(7l%{l%Fuhu^Mx;S<*+-P9cIKC?B&eo7tC zow^gEEP!FwqIU>TFEAjR`hpNNMclpwU#`>Hl-s+QVMQ4SB|?gL(Kc=&OH0)~syfDk ziIVG^`nBJ z&dif8gF2^!t?a?;Y(OnDzH}F5tngs!vR-TYR2 z9r2F8dUhS8i_*Kd@;dPCVZ!#Y*LSIoAt zoPr;9U!>9&DA7Pgg|ByIKx$&&r>xTK@}L7h#_xy83%Sx4I$Ahm#U)GmLRgWHb=S}@ zJi-e*91Q&Hw5}R;W3P|dW=ZXGEb$(wPZh}vf6Dt7qoQi2)?hgz4WjNYwlioKrCf;c zf?4PNufumj`!mHI?pQE+eR*+HiFQpPd|Ou#|39#u>+qL`@lUfvOKLO4wO|lGl7Swc z-uIE-a7G{sZ&9s(?dvEAnj+L)9EXTlT^jwJwWlj$?V4Dc;FuF@I`;jQQ>q8WRelmy z|Hm^^{AG!R=OEj)ha-mEm)J=3u6njg`J;Rwk&1#)7(qCj);{*otS;M{7ckylepXm# zz#0x$TV<^|Y-9;}Wm5syid`v?n(54^iUwfne!c_$)sx=wBOXFxjmdJJF55>$ zA5iw7U}UI9e{Q*?#-5r)8#FR)zYX6ju*z-uF?zj?-lRxXRPH8_*E%;bdn_x)-p_1Q z!)oD%mG>v-aw_I|KJcNTJUnlB_lM~iPoe@$r9k*rIrv%)gR}5uPq?RU=UQ39MO~W$ zEG&3}a0Zihw| zG%{Z5_(84TlSk{V@Hut)9JKe-0wzB2>aEOE1vAhy6Hw2~(j@f5isr8M>FEhtC^z0U zYE3*cMGsV!LJVfX_^r*vRM-h94YIh5__mspsZ$mRD85u1Z4HBPmRi45h%$w-3BU-| zW-uw3xzd5bK&I5+??EoxL$+oIt@7pt)o+fJCqeqb(6>dbn7vBu_N><$H+hZn^5*Cv zikEbH@>_@l2=&~0-4!cCIZRm4Qn~DjYW(;bHf$VlfQ);_D_7qhN;>U1aZCe>-fcSm z7m`;jP=iWq3OFI+84&}DORv%>lDE*gGmGiz=Fy~g6fS?mz*pCZMZSNKxISI=E3Hu} z(-mF}vtmX$a3_!#6UiG^QfyhCnQ1cEN81mq1I@+35%;kfrtUWAzPw$~9@zN}_>zv| z<*#q=Z592vQwm@$+}lSc72_CZL-533%M$QCkO)aygnrV%7t23ZtBFMd;`T7VZdgz@ zEZ06Z5n5$H?fqs%{taO8clule2XGm9cnvwqJ|k1F4_xo8EZj~=Fbq7Z^V6~}Cza^< zzXxfXISTw;4Oi^L1Z9R@ zoTk!}DVdr)2}WMeu_F5~v3#Pgxoh`)b?c$jTG(by`O#v>SDVA`!MPiR#I9-8m23OT zZ7Go}3x_+BrW&^?Lx&NNu1v%0RKY^ObbbPInJQoA0T7%`D%W{i+hNqUY=Oe^3;D=K zap%7f&B(`~HFdJ~Y^Kv;#XnppLRHh7=2jd*Kq-5?py%>od^g@hHg}j6>Dq%q+`9X& zeGAtao0-g@m&7C|=2|A$Q*)g>#;p8xq$5XNwFV=(k9|~1Yg@>mPma^$D6k2QRrtzW zdam16fPJEppn%a1q;$I|K%TGi1yS9RsCM>a`~aotRZ314fs=d~v9~>N0na-A?%K zq>AJoy166jPgI&*5~z=iBb4WPc0G3b(jW$8PW}oAa5jg%CNCZhj2;=F=9~VyJVZ77 zV`FT`lq`O3|MrO7!luIO!&>d{U|hcchuY`kv%MZ7M{q$z(<#M?Uez;Z3u8;;40ea@ zdxN$f(}|+}KSmjpSquZ~7V~KtZhB35l`!+Xx9q<^^tt4gFy8hlZXoUcoKD`yo8Ksp zZ%#OxnJpv<0$t2pMqBm{=1_kngU#oyotV%INo?Qlyt%>r?T+yk5c_`)--JHJ{CgO9 z*EIg03*Ow|{~JK_=UVa`*`xX2!{!@E1e-HmpE7yW4;U)hQ z1^Iv0Z2A9wZNDZn$~N(Hb$VW?qF#iHGq^V*{H$8n(zD>+_QKpJl9oO1t+Se4C-^ia z1tFCaGnG6svgtLOcsFGCxP#z2spoyRvg-k^EI}L+mFAt@ALARQOt+yPsxauPdVGzyX=*YH3Y5y&d1e_)v&~c#z&MlUI3;|zPVS?pbcvgj4cbTTMHVS@s1Uwjs8hgdz@aSZq#Tv?apFkepak3Yax4o2%4 zI@T~+4}v)I2|h8)%oturIT9oKRA6s{JA#R4YUr2Sj*kfW33w{9P4eKm8M}JukR?`G zQBhK|XSp=8iCCq-&d#E35^{L}LF5M2D>4dYE>4?HI&VQKmZo$proDL*y9w8eB;qx-yfE6D`j2sKJWt}}x~42as%b!^r(@RaDk{8GZpLfN6FZ0-%9?!3Vv1rG(u56~ z@OJ!RYDNF{uO}$N#M(44pFpaySCGe0+gIaCJnM|)@Am4YskqjSf^Fb#L5H0jhfZaS z{Jdw}=n$zXae3ix!r0*8Y$uXPzl8KW8XrKm)o-;VY}^fR940dK(k8&0v}? z_F?x2F4c`uJJvJ4Gw4!k8vPZwDP<`SOS`XtGpScFhK632&0q{v3%1aDohstYP%-U{ z{2Sj1$ra_LVDg@UMPTmfsE;hLj6Bow_B);rX%xC_3SyWBg!BY+Tnkkwie*It@D*IK zwrA$XFN;`_wdGq?N0}AA{~LSn8P!x5t&Qe=RZtO7Kv4*w(gcKvl+aNrp$XDEL3)pY z(3=eqfgrtu^bXQ{FQG{9y@cL-C%GFvXPk4tG437TxPQL$<1z-x&fcp&YtFgmo@>py zy5xfn7iQlWuP+_+dij@_d# zo9;>rDfdC4IxmksxrLDDs8gTt(ye)uew&iZ#lst%T!WF3z@}$m#9-w0HCm;mH?M_r zOWVVqBWYX0gmA_RJVSZLu@+;o4O-?Ct|jPl4x<{xwbStP2)y6l03~_MDJx( zchG5v&H8{?99_pqZnu_0_ucW9Pq5Uf!1)$i!iqq38d<9Vjw8>H?Pq=QbJ;v%>uJUb zCMhFdb|KV6h5H;X|WAa0Bo>bLT$;QC>R^ZV2LHHO~)a<9$pqqgAWEoSBcV zww;Ws#(T0!vMhTlUAgAw2`;zldButQKYQSFy|YkFjaTxqy3B;^w6HKXDXd{)Y?igu z)(Tiujd(|;KbdyiuSOL1dO7dV$0}>%r=Rn`n(=4zKRD2Nz^OLIcQUPNv<82Vz`~() zv4~+(3z0cFF`VIoe?cyKf_8spJo4Z-}IdH z=9=H$5gSy=4v0|6mYi!lE3b`S4|@`3Y!{N+G#}Q1GTHqiadHKQ$TZ_R3}$_Li^8dcwa0*K5feQ9KB3 zX{pE4tbn2~26QZz4xOUz2U;Rgr*nZVV&tCJf06KWa-W;zD6goN?xdZVE3=3EwAbC! zysmK%SdmpKN9FEVDe1B#8AWxyxEZu~(BZi!t@nJq2mgh-Xm~~yJr(KT@@sXaVvbTU zH8*OqfN6PKC?-(U{J|SH?b@!=rE~d6Ptx7>`QGIIEf~u$n@1y43@&fUwH=iUJq~I) zg#zvbFA78;YYMHZ3n{(d_XLn`bP_Klk@A0I0|FMYq5ZE^gX&E=;#+alvB7mX0o$&# z@YIVCRac*q0zA=F72V0|oBN}nD4vUvv9}iGjDfO!#{B&cSNl5!@rQXFX$oB=4G7)> z^wWx^DT#@N#~gqcZt(k2gb6{9Daoi;>C(0I*uHce&wxeYbD!?$g5Su~QocE#H_mR_ zN`BV{9Mo=6_@iqIy6c5zGbQJlg=k4E&6tflJ`ck zcx@lnXHNKWLC4W0B|OGwdTr`PLwehbJgl=~5T1iG*6@JNYfcF^f4kh4m`aHo zo=OkDQ9BH$I2TwT>)Uk1KdUQrD66^HPb5l){F^>=_H4O`R#RpxPV0zPwYp!arf@Rc zHGKY@OR}@fk=58BaCw~Fk+qZSOS-smh5Ld%;02rg92T*t#n$O-q*)gF8YHy?JvO2o`3pH*WGG_`wnIm+MYT~dxm)dr;a1$(@|812TdNqt2+^&Ah3to zZG|4IAh_OTVqGU|P{h6U2xEx4$7QwWQxvYmRd;j2dpS)_lcQafMx`4J4|l(9(UllUGl zOJAanVha}zhdZ#7QNLeHcw~1LJ{%Et>(e8iNUn()C@V_G+yAtcw2oXKzQ_=K?1pH! zHD9-X;+akYcRp!iQ$5wf8SRCm0(}#>xqlV|v~|Oq&;VJ8-B)$> z{>Lu_vktQ+w%)H?TV%ZqtEMyTEIgv+f-IL_t-=aZKkl@>u@MVk@++(*JB}}G=I7hQ z!soxozs=2BObInwjLr-GvK2rs833~571+bosiu=Q)lD-Lp3irGek(@VQ&Kb#7OuL_ zqc~imMrbZLGZI_EGdA93D{alPk&&(Ksuqj>#u=kQ<7J&Il?K_lkAnOYBh=F+pdD9d z`pDrEE1PA5_P>``dj~`THgI_e)y$F;LT6VY<@CL`)eXZtP%gXsiT# z1C*@t-oOq>qKvY&H$?qK!S3-(E)kLcj@eb&|B0ETxfROT79wc{^jqB65Mg8tku$b2 zMVUS3=J}KDKOuLDtxQFry4WLQGQ>=hiAJ3k%; zxg||)bu0s+Np-n)dNQV$##o#$ewgyr#9liG40B%=H4FG*C7(Jins;?=C|d7UDH7m2U|Lm$}FKn8df`>kICh%;Me{i znCOax|C1p8klKF`Iz-vt0CmMwf5;u8Zf*q71?LOimk=pqb5k?aVT>0%^ z!%9Z61l%dT?rJ_2?d_7?xE=M@N;~GdV zol93ZcdIcpTHC(1EPt`?1Oytuc9O@b=lPdb;*~7Ahcdgj+E3X<`c92u%e(pA6mc9@ zw?rP`HAg*?iWc$hz-fm%aD1woqn=Dx3)Q2Fmj&=?rQVDR(}%(W;-sLTH);i(ONXo@ zl9b84yvcuSsi-vf$G77Lznj1t{kaLHoE0}y(jtBSWWt@9gQzEp!$P~ zUTE)HyliHLwpbH=z-4!Qq{igU8?ayH*FcdRO-*^hO>Ux9vB7FSLv zS>%mG6$u|+mddxTNQSPeg6fOS?8{OIb@I7%4;j(z0o2Nla-fgpz9^ZIJUz>KS(!|; zp%A`t!L;X8v1XU}H=z2BVVywK=D5?(l~w+_)2ZWlt;1|)wVc~I8Wk=Bbfu`{0|p0W znMG9^U&F#>Wr-;58z8v?CaM(RY;B#&gT3thE_g9&F4*+bYp56 zyGHd<*vMy^)~_U~7OGv%eZ3$|e!_WIz|5r&k0m@8|3sPZ-Y;*O3z$(;!| zpSD^Pg$tdu8CrT&*_@+E|2>{QPM&!1{IcPq^oHN|ZHJo<)Z_x8Sz09+zO{;Mr}hg8 zS=`pd%qio;8 z-Sxxvof;*7P^dMzRCMY^+J$LHPx{oN@` zxF*~~|B#jU_snV4{qtb>ikquuvOD7BM_VG*dTY8UlH0Q}teI1DXn(kWMfte;5cTjH z(Zs+^T!j|&G9OQKQEqeARMi*IAo?YsA%aRk<*>PLB{bcH9JY>!{0lP4mZZ+zhXV() z^wAK7PhR4VXc|OelDDCECr=yl0Fcjc)T+ZGKKFP!ozFWHMG%l?F1Ni7tg&ht z=v1byoG=FxlLq=fU>iO8ZC9uH>tu^=TJPJ#zV~Rl zZUhk-W*a&(^zl9!M*Cc8)23GuGIcOEf%Q#(@!)QZv#Og)weXgkpkTZ>t+pH|!c*_W z&|`Hj%voH)GhPZD#3GqGEn?Mqe1G}17v?z%hppln4Nv_Kh%Mg+(Gng1b>%-j-K| z-|VWX7R+diqO9Q@_rs&oR7I%AG2LgbTOv%Q__K-`?n}UFh`i6t@u2y8nBSJh(R8UO z2{AD-i5`iFH+goWz)1^y8B%FD-B{mWuiLprB!VC7NdP*L+V@>1M)y?chP5LBUBuLJeNO^zF#*5Vu7SLNIt;LPO9!08b3PLatu0z5)qcQH!R#a@ z4C8<{g>{#52}H5F{(LgEyo|puJY8@4R*ov)X+L&j<@R#;9Tu$NU1!glKslohv{XRc zhl7M66IF>oYg$(4KM|*RkkF*TI`;_dy zmAh4*a4`1dy!mL&5ImG{1El|yY7?!NqeH`hrVAbR_EAo^(f)PdQwG81UlMjyd94c$ z=V{lSbbESOEatEA+b;BMV?7D-t$guuLZk5yPrj+rOep&%k0-1bjbkrLruqHovs9ay zg%SbDvZ_iOEC=?@P+~{^jxV9^D@0!d{iF?WfYr@hY*l;7CbKnrzVK9>TT}Jh#S=u<$1Pu5)crZ>7vO6Faso0+MlAAR^Wh#(J59dm(?bMlPQA^Mfm(eFFolq~Ev zfAruHv76Pfn!%z|>U)l<*rz2QYdTQLE?K_hHmu063KTRSrD}W{x`Xx=;1D(!?=h}{ z;A>*L!h+D;NMbe&etBkjI*|TENzBJq6kt#X%M6~|h=sDFutTB;Gwu_g8NJqLrfW~O zJaHq!blaDm%n7vo;~s}=Cvi9u8j*enOd%kZoll2GTGwi?=~qjmFWw9Be7K7+;9{#a zd4lt~Jm~lB@X~AY>t))Pn&*4Oe)%;YH(q}Wn!wjOPsCO@-P9IlMeg{C4n9Oi^SwhW zIw=1816T7R!+Soiz}O6CCJwKRmsmDn8f3qSI-^c6N(BM#qHm)S#kD8*xl6)eGk9zQ zFi)8_%vaF@31(;YPd|ldJSv-ew|15@K9Xf&)S=Af+Z4(Q(r4uvr|}v~tg2e>TU59n zHJ`A=4)8_yvgdw(f`i)*W>avu`e5%%pwNTn9{|tXx|%R!K9>hYuBHsy>++Dp#K^Nf zE+-KDwpSh~e73aciOnJ#Z8zDb?$i$|niO=R}3A zz(jjBf$94cNC#45Bckp@2RAYWwlIDC_UifUv}0F|yUjB~A7&@+sL+!pT75p41s5(b zPPo6HA!__7?W-g*%W{W zeaswLvjKD=y+bB+d%U)>2rzLF3&_V=|J7{(h42suXh_AqihO9c`F}ym+Zz@8xm%^7 z(d$F5iFKdg6YV!?<_SPAtZRW-cYlil)I+L^uFcrqGop}8&_{Fb59Ysyroxr%YV!1I z#(!^b`*H=4I8gZTYT;){Krb9)h1|P`EW@I24b>~5BfA^B&etjoPt@nEad)f%z0tyH zK_>hBd8$g{=MB$!l=^;MH?siI7fSg35DDaL@=n1?Posk@FX*FM`6!^-G0C#1W+u)B zh2sIRfz5>iV`C$pnM0dlO01d@KHduQMk&`o`UEQ*0-^!}<7=%lEMdAMdAjTTo{5Wi zMG%NPcjz)yDa#=MjXom1!+Vh5?SKRr;{XPx8p-=%lgi+2@bVon}G>*7wambia+Q-f4f)R zU##yM`SNq1we0pSrFNCrS9iH-FWLATLCY`05ow&tM&D!^@oVPDU zODZ{^Yr&Rn=(S1SDNgCdZ z2F&a}o#=(xFX59l!YYy5$5G##717j*(xf!Rx+G;q>yzKZvYWUnmf^TVC?wZ?v4r?4 z%Ll`qA^ij<&&PE-$AM*emVpQ>`1xhsDZ*253sWUKQRlKcT$gK=e}a>Rn}GRUe$Z`Z zx%~U6Cv5!-ow~3VzJ6;+cH)7LM~&d_(9w)&arwcJN;;MEEIpzGQ;Ry-gvr3Q&N_w1 zdbB5*5B(Y3FFIRf>0HiFjKDJUppQCl%QD#mso%e~Us>7Ox|Q7Q9k6Y*wX@|qk>t6Y zaB$Uu*Oj+kb{C%0Mo#wjt=va?;tn89+vnld6XfvQrPn8#di$CK=bfH?V@5Z&?uEY~ zSs?uM6W?=TvD-%Kc^79l(o~U{>~zr|;egMOTzR(jj;D@7xyfk)?hgvuc;`=@TK#Ut zHMz@T?h`2SE;4$l=-kPcZ+)}$ zI$fuBqe|fhoHhghYw?r+=r_rAb?7glr-MLD{{;ZHh!{R5{s?I>=tp)RfjvQMz^}BYsIOdUdjx#_ zNJBDmnBL^gY_Py*ccznol{#*X<-m@HI$Dwu8*%6sfY|49MOy4luZ9%gY;~RlJ_GV3 zgO`%rFCDx2Y?05ChnurTkx2uwg{^$8rUJ&zUv2B6hswi`dLH&kiFCet+U=hnIPWW= z=0&lLY>D_`L>w`wv2<5gQOUhVn)}(JbzrQ~yxHnN+rwjDFt31CG57WzyI|d=%9!2s zhj1Nb7fjN*=)n;t6QQ&4R=)aT))~`deGzJ)5C&( z=e078xbIn<$N)b}Pt|*@pmOoUYL_s|Ko#es$EdG@*IfzDp_e*`5bBwe?xopPkNy7f zmDc8*tarZ@ewqIAOco6QX3mmZiu|O%sm|M|Vx&mDR31Uw1?An|OIXmrP?r+6r?1TQ zpIY9MT+QFr{6g727c5Rs1Gwu2oHYdsQEa#G+rGu4L|8*pzO8~fG-MrhFRLHbdyQBS4#GF4xCx9R9FOpES& zY9%Aehxm*X=65{B1++utFyuX$E*nqM9vRHGQblh*Bm84lcNS|$t(vOd{4-Rdvv2YN z^eCtK-k9j=j`%r^Nzwudb_!wOl-gkarcYW%)2=4Vx+i*;g1Tgy4PqGr8pjk`Ml20{B(W)CdmU z+wlUiP*q{%_4Dhl@+^(a7fJ^MwVo#zB8%ioo20 zm{QR%rI8laIE{sOyQ`AB(mDm1@38O=y`K0wVNnW|rH@0gs$s|7rnEx4rA9{=L5}pm z>Mpr-T4d$o?kiJ>bem({lE+r9t@>MOrm<4&HvQr4C%xO zB)`E>v;_QWJcp~m<7mEqUW+KU$V+2J%Jr3GkrDk~4-MjLbp0TwZ=u|J!=5W5!L<2D zwWaFN{-EYttBSrZ%`F<(2{z9Acz}LOf5h|=y!tbwu z@-8cE2v&X2If#@g(X(3kJym({<5>EtyuJ5VG)n-rVQPdkAcHz$Dh8*f$lZ8GO$#67 zhFZFi!N`xXX4)Y~&730G?4#V>V91loVL?Q@^On*6f zm-DZNeO2GyT_s1yDU~q3;2{W{l)dqB%1q0wi^eG>(mBKUEFfLozN7_$-jqkaQ+Cy{^xs*MFLp*Z z+YGOP`Td41;WW?!baKB}Yo0||!I_||wS)nqQ_gl5ZI~G!GBmGK#g5%>Lr!M@n+!}I ze#Syp^0L%aFPn9{U)7gLY)A^+j`~59_A*~p6=&LA>CZZn)uE9{SEHtC@Rbp{s&9D3 zrsNyyO}+OHqR55h?e6Q;lw*CLS8ahVUgOWlm&>lh@F=Wotfs>G?me*yO6=amqsgt%>{hiswmdE8M`4_D=$e z#=@;y0nO#!Nzxu*?wJNev$`Hpx3L|$dYVDM(Q^reR=~MGd}NQKhX^E>DZQ#bbf^ay zPucN`Mohl|r^ZNBu8sYWT;``r#P5b26)njpHXu+)&X9XvG>iS_cnMB2{KqxWD`Bmv z<*Y|4>iN2sr=&o%iz2xzowX?IML)7#iV(<=Hbj#b?Q6ffw`hKTtGah&W^d+S5GYOl zN;MXuXP{M5GP^kQyXxf zWZiRdzBfR#XZ?Wk{lBHX4~nm^6gU8jbS!&a2zS!|ZYBR8am}>RB7A9>DsU=ke*U&+ zLzqWn(jn1(>XKbl8U)gpVRv0AquX2uKcwRD`qCGaNMw4v>2_JG&E&N3yLoqZxVu1x zW{OW)&;DIg3uWzPi*qhM4e*<{`Y=ErQ@29bnLAhHIxH;k32VxXew(fp$G0_8zU_v~ z-kQN187;?b!>eq15|t?>$Dw7o^BbTS74a7+{puTQqtPe*)HGQ5>iI!ScmnfCW=#Cp zjBxafQ=odUIh01g)y*C`)ZShYULJYdE#rVd4vz+}#;S(t6pc>%Pf9TNAA~ zEX!WLpQgxe>1qRWwVF+KT;5xXXB0#hkDeWw#joK|`(lpl&ppgFCk!n|HqE!UCbi|k zi*W9%lEQ$Jx*Lhu|T98_BqvCQs-1KYcxGy$5otK8L zeZqX@1Z}4At+rAbHo=A%KgmC8WOh7En{GGI9mV@i*ujZF_16KTDy=(xI(}8K(z#kS zn*sfpr`eH;c18BUscF+vhF!Uv4EssA=O)caY66aN&k;AMpsrcG&T*L{Ato+QOncUH zaxYpA%+FJ}?bTl~MJ6luNHi*YAMRoBk8FXr(lzoDGRzm}I-4*<+9@aHVOg~5ZWm(0 zgZDgp4vB_BQ;9)8O9fnh$;@YPvp1QRJzxrd9((*7mfk9u9RwMsOn%LPJaDf(T0*c_ zBV<#CSa3XtOO&kVp}3ry(!r^KVuU7*ki~R#zeu{nidP=2k1jXyOaAia(ME%ea$FqW z*~HAVJ9nR-uXYy&iS`|Dxox;+#!<_FufeOyFH+pMm%S&Fs>Mvitx0 z+;zoqGwhY_VN%uW&s)@;S-3`hI0^{m0)~jE#}XGKoC|)f;KB*%&ZZLEg4o!$$m=@Y z38B;Kllb_*z|u3zrrDi1t|v`odOmv?$L%ybszq0&LQn9fG$vo4)u*aN>ETB6M@?(bHR zH<a zgQ5JfPMggIOJ+;TAdsAocb@8DZ{GCo+a_ixJ0uSbSFWvB$xOB4K&q&fqGQJ^N^_lZ zy8#h=-ij+amxI*l2|qj^a5*cb*cAkk(74qU|1uz8KqIXEC*@M+&J#r|irklpRy*e; z#l*Xs6|HGt2gBcib3Dik=4JBaAE1PLoo~@bzgJj1s55n(LM1(6h=# zkCSr>HG-{kGQEn|#CnZxj{N@C{gX*-DlAv;*nGp`VJeGJff1(ztF2$aNlDhxrH#E) zZWeP{tiN8i#kygMp02*LQ5(~VwQ%tv<+0BvGtG&Pkuut~u=RgFW)A$O0hNIT?4Q^Y zEj8;BM85^kJl9Dt{(z}Z>@XH0tR!_m@H^MWbMzILt}GhuTNFb*M#7?g@L8}gW(W*r z9m#AGh50bsP-^7tKpCO45o{-i?bUQJ*7T9`5+5B>Q2pWh66I06%oGWvzmj=dfm4|b zc393G)Z8~y%MqQ-1>~$iu#M-Ye|_CYAj0(-F#UX7pI|2yIqk+B zje>@y;LC~q4B20!g86DS%UcK6wT}}v{TMzcHhfY(7jyIgr&v-RHTx=KKuIB4u zNBoaaNUj?3F>0B5A|BA-{tx~wp<%VOwAm`#m1+rq+V&zw3Je1MzOhcwsx(wKH$V_* zwYQND&&C(Sj7bVef$*E9p% ziO4a;K4_W>CD`yc74>bLcKR^`Be3;i>GMW2CvRn0%{2YwhcxK^-CP+kv^1f1RAc;M ze&VO5fky(s;wO+S7DzVixZ_=k{^i`Hzxrf12p!IVrbe5z1Z009bRo$XsCLIOuh$i9 zc4>>w;7)uYqTq+}+kAtbCrhgWs(;%b&BsAPD(NzNHXH~W@rQ4%n_16~9*#{fd=BnI z$JaoYHawd?UAl%87#_4mu@Bglk^zHg_xd@~&HYR&<<=Ho72y1nY}pEg|4+ga4J7c* z3%k8*B9tHePFm%Fpz==-%@)SjTAuZ&%>&w}!*^zMAbi7*ccWxD5Hsw5Y|ZCU8Rm-} zFzmY*{eId(txv)aV69bj@zN z{FiOI9NW>uf>g$2-N2FKH#S?}y;EB`%Iq!I3S{?YQVZD9=~!&4cXtZt=~F2kPCFSh zo2Ea^7QL-;r-ZRVJXShpKiMU)v!D~XgZZZ2W(QZVMfmu1w6AE*c|3J>B@x+KuJ!?= zNz}t?DG?&QW3C0LALzVIU)Yq>3%-c;$Y>aiJ*m+=4!_3So_9-r

vu7-V`hYUXMT> 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֟axYiM|B-IYm{wwVXFl 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

    dSGDt=p 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
    J-uomlkz} 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 - - - - - - - diff --git a/Chapter03/onlineStore/public/.htaccess b/Chapter03/onlineStore/public/.htaccess deleted file mode 100644 index 3aec5e2..0000000 --- a/Chapter03/onlineStore/public/.htaccess +++ /dev/null @@ -1,21 +0,0 @@ - - - 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/Chapter03/onlineStore/public/favicon.ico b/Chapter03/onlineStore/public/favicon.ico deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter03/onlineStore/public/index.php b/Chapter03/onlineStore/public/index.php deleted file mode 100644 index 1d69f3a..0000000 --- a/Chapter03/onlineStore/public/index.php +++ /dev/null @@ -1,55 +0,0 @@ -make(Kernel::class); - -$response = $kernel->handle( - $request = Request::capture() -)->send(); - -$kernel->terminate($request, $response); diff --git a/Chapter03/onlineStore/public/robots.txt b/Chapter03/onlineStore/public/robots.txt deleted file mode 100644 index eb05362..0000000 --- a/Chapter03/onlineStore/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: diff --git a/Chapter03/onlineStore/resources/css/app.css b/Chapter03/onlineStore/resources/css/app.css deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter03/onlineStore/resources/js/app.js b/Chapter03/onlineStore/resources/js/app.js deleted file mode 100644 index 40c55f6..0000000 --- a/Chapter03/onlineStore/resources/js/app.js +++ /dev/null @@ -1 +0,0 @@ -require('./bootstrap'); diff --git a/Chapter03/onlineStore/resources/js/bootstrap.js b/Chapter03/onlineStore/resources/js/bootstrap.js deleted file mode 100644 index 6922577..0000000 --- a/Chapter03/onlineStore/resources/js/bootstrap.js +++ /dev/null @@ -1,28 +0,0 @@ -window._ = require('lodash'); - -/** - * 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 = require('axios'); - -window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; - -/** - * 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'; - -// window.Pusher = require('pusher-js'); - -// window.Echo = new Echo({ -// broadcaster: 'pusher', -// key: process.env.MIX_PUSHER_APP_KEY, -// cluster: process.env.MIX_PUSHER_APP_CLUSTER, -// forceTLS: true -// }); diff --git a/Chapter03/onlineStore/resources/views/welcome.blade.php b/Chapter03/onlineStore/resources/views/welcome.blade.php deleted file mode 100644 index dd6a45d..0000000 --- a/Chapter03/onlineStore/resources/views/welcome.blade.php +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - Laravel - - - - - - - - - - -
    - @if (Route::has('login')) - - @endif - -
    -
    - - - - - -
    - -
    -
    -
    - - -
    -
    - Laravel has wonderful, thorough documentation covering every aspect of the framework. Whether you are new to the framework or have previous experience with Laravel, we recommend reading all of the documentation from beginning to end. -
    -
    -
    - -
    -
    - - -
    - -
    -
    - Laracasts offers thousands of video tutorials on Laravel, PHP, and JavaScript development. Check them out, see for yourself, and massively level up your development skills in the process. -
    -
    -
    - -
    -
    - - -
    - -
    -
    - Laravel News is a community driven portal and newsletter aggregating all of the latest and most important news in the Laravel ecosystem, including new package releases and tutorials. -
    -
    -
    - -
    -
    - -
    Vibrant Ecosystem
    -
    - -
    -
    - Laravel's robust library of first-party tools and libraries, such as Forge, Vapor, Nova, and Envoyer help you take your projects to the next level. Pair them with powerful open source libraries like Cashier, Dusk, Echo, Horizon, Sanctum, Telescope, and more. -
    -
    -
    -
    -
    - -
    -
    -
    - - - - - - Shop - - - - - - - - Sponsor - -
    -
    - -
    - Laravel v{{ Illuminate\Foundation\Application::VERSION }} (PHP v{{ PHP_VERSION }}) -
    -
    -
    -
    - - diff --git a/Chapter03/onlineStore/routes/api.php b/Chapter03/onlineStore/routes/api.php deleted file mode 100644 index eb6fa48..0000000 --- a/Chapter03/onlineStore/routes/api.php +++ /dev/null @@ -1,19 +0,0 @@ -get('/user', function (Request $request) { - return $request->user(); -}); diff --git a/Chapter03/onlineStore/routes/channels.php b/Chapter03/onlineStore/routes/channels.php deleted file mode 100644 index 5d451e1..0000000 --- a/Chapter03/onlineStore/routes/channels.php +++ /dev/null @@ -1,18 +0,0 @@ -id === (int) $id; -}); diff --git a/Chapter03/onlineStore/routes/console.php b/Chapter03/onlineStore/routes/console.php deleted file mode 100644 index e05f4c9..0000000 --- a/Chapter03/onlineStore/routes/console.php +++ /dev/null @@ -1,19 +0,0 @@ -comment(Inspiring::quote()); -})->purpose('Display an inspiring quote'); diff --git a/Chapter03/onlineStore/routes/web.php b/Chapter03/onlineStore/routes/web.php deleted file mode 100644 index b130397..0000000 --- a/Chapter03/onlineStore/routes/web.php +++ /dev/null @@ -1,18 +0,0 @@ -make(Kernel::class)->bootstrap(); - - return $app; - } -} diff --git a/Chapter03/onlineStore/tests/Feature/ExampleTest.php b/Chapter03/onlineStore/tests/Feature/ExampleTest.php deleted file mode 100644 index 78ccc21..0000000 --- a/Chapter03/onlineStore/tests/Feature/ExampleTest.php +++ /dev/null @@ -1,21 +0,0 @@ -get('/'); - - $response->assertStatus(200); - } -} diff --git a/Chapter03/onlineStore/tests/TestCase.php b/Chapter03/onlineStore/tests/TestCase.php deleted file mode 100644 index 2932d4a..0000000 --- a/Chapter03/onlineStore/tests/TestCase.php +++ /dev/null @@ -1,10 +0,0 @@ -assertTrue(true); - } -} diff --git a/Chapter03/onlineStore/webpack.mix.js b/Chapter03/onlineStore/webpack.mix.js deleted file mode 100644 index 2a22dc1..0000000 --- a/Chapter03/onlineStore/webpack.mix.js +++ /dev/null @@ -1,17 +0,0 @@ -const mix = require('laravel-mix'); - -/* - |-------------------------------------------------------------------------- - | Mix Asset Management - |-------------------------------------------------------------------------- - | - | Mix provides a clean, fluent API for defining some Webpack build steps - | for your Laravel applications. By default, we are compiling the CSS - | file for the application as well as bundling up all the JS files. - | - */ - -mix.js('resources/js/app.js', 'public/js') - .postCss('resources/css/app.css', 'public/css', [ - // - ]); diff --git a/Chapter05/onlineStore/.editorconfig b/Chapter05/onlineStore/.editorconfig deleted file mode 100644 index 1671c9b..0000000 --- a/Chapter05/onlineStore/.editorconfig +++ /dev/null @@ -1,18 +0,0 @@ -root = true - -[*] -charset = utf-8 -end_of_line = lf -insert_final_newline = true -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true - -[*.md] -trim_trailing_whitespace = false - -[*.{yml,yaml}] -indent_size = 2 - -[docker-compose.yml] -indent_size = 4 diff --git a/Chapter05/onlineStore/.env.example b/Chapter05/onlineStore/.env.example deleted file mode 100644 index 8510237..0000000 --- a/Chapter05/onlineStore/.env.example +++ /dev/null @@ -1,52 +0,0 @@ -APP_NAME=Laravel -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=laravel -DB_USERNAME=root -DB_PASSWORD= - -BROADCAST_DRIVER=log -CACHE_DRIVER=file -FILESYSTEM_DISK=local -QUEUE_CONNECTION=sync -SESSION_DRIVER=file -SESSION_LIFETIME=120 - -MEMCACHED_HOST=127.0.0.1 - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -MAIL_MAILER=smtp -MAIL_HOST=mailhog -MAIL_PORT=1025 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS=null -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_APP_CLUSTER=mt1 - -MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/Chapter05/onlineStore/.gitattributes b/Chapter05/onlineStore/.gitattributes deleted file mode 100644 index 510d996..0000000 --- a/Chapter05/onlineStore/.gitattributes +++ /dev/null @@ -1,10 +0,0 @@ -* text=auto - -*.blade.php diff=html -*.css diff=css -*.html diff=html -*.md diff=markdown -*.php diff=php - -/.github export-ignore -CHANGELOG.md export-ignore diff --git a/Chapter05/onlineStore/.gitignore b/Chapter05/onlineStore/.gitignore deleted file mode 100644 index eb003b0..0000000 --- a/Chapter05/onlineStore/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -/node_modules -/public/hot -/public/storage -/storage/*.key -/vendor -.env -.env.backup -.phpunit.result.cache -docker-compose.override.yml -Homestead.json -Homestead.yaml -npm-debug.log -yarn-error.log -/.idea -/.vscode diff --git a/Chapter05/onlineStore/.styleci.yml b/Chapter05/onlineStore/.styleci.yml deleted file mode 100644 index 679a631..0000000 --- a/Chapter05/onlineStore/.styleci.yml +++ /dev/null @@ -1,13 +0,0 @@ -php: - preset: laravel - version: 8 - disabled: - - no_unused_imports - finder: - not-name: - - index.php -js: - finder: - not-name: - - webpack.mix.js -css: true diff --git a/Chapter05/onlineStore/README.md b/Chapter05/onlineStore/README.md deleted file mode 100644 index f171eca..0000000 --- a/Chapter05/onlineStore/README.md +++ /dev/null @@ -1,64 +0,0 @@ -

    - -

    -Build Status -Total Downloads -Latest Stable Version -License -

    - -## About Laravel - -Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as: - -- [Simple, fast routing engine](https://laravel.com/docs/routing). -- [Powerful dependency injection container](https://laravel.com/docs/container). -- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage. -- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent). -- Database agnostic [schema migrations](https://laravel.com/docs/migrations). -- [Robust background job processing](https://laravel.com/docs/queues). -- [Real-time event broadcasting](https://laravel.com/docs/broadcasting). - -Laravel is accessible, powerful, and provides tools required for large, robust applications. - -## Learning Laravel - -Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework. - -If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 2000 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library. - -## Laravel Sponsors - -We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell). - -### Premium Partners - -- **[Vehikl](https://vehikl.com/)** -- **[Tighten Co.](https://tighten.co)** -- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** -- **[64 Robots](https://64robots.com)** -- **[Cubet Techno Labs](https://cubettech.com)** -- **[Cyber-Duck](https://cyber-duck.co.uk)** -- **[Many](https://www.many.co.uk)** -- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)** -- **[DevSquad](https://devsquad.com)** -- **[Curotec](https://www.curotec.com/services/technologies/laravel/)** -- **[OP.GG](https://op.gg)** -- **[WebReinvent](https://webreinvent.com/?utm_source=laravel&utm_medium=github&utm_campaign=patreon-sponsors)** -- **[Lendio](https://lendio.com)** - -## Contributing - -Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions). - -## Code of Conduct - -In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). - -## Security Vulnerabilities - -If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed. - -## License - -The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). diff --git a/Chapter05/onlineStore/app/Console/Kernel.php b/Chapter05/onlineStore/app/Console/Kernel.php deleted file mode 100644 index d8bc1d2..0000000 --- a/Chapter05/onlineStore/app/Console/Kernel.php +++ /dev/null @@ -1,32 +0,0 @@ -command('inspire')->hourly(); - } - - /** - * Register the commands for the application. - * - * @return void - */ - protected function commands() - { - $this->load(__DIR__.'/Commands'); - - require base_path('routes/console.php'); - } -} diff --git a/Chapter05/onlineStore/app/Exceptions/Handler.php b/Chapter05/onlineStore/app/Exceptions/Handler.php deleted file mode 100644 index 8e7fbd1..0000000 --- a/Chapter05/onlineStore/app/Exceptions/Handler.php +++ /dev/null @@ -1,41 +0,0 @@ -> - */ - protected $dontReport = [ - // - ]; - - /** - * A list of the inputs that are never flashed for validation exceptions. - * - * @var array - */ - protected $dontFlash = [ - 'current_password', - 'password', - 'password_confirmation', - ]; - - /** - * Register the exception handling callbacks for the application. - * - * @return void - */ - public function register() - { - $this->reportable(function (Throwable $e) { - // - }); - } -} diff --git a/Chapter05/onlineStore/app/Http/Controllers/Controller.php b/Chapter05/onlineStore/app/Http/Controllers/Controller.php deleted file mode 100644 index a0a2a8a..0000000 --- a/Chapter05/onlineStore/app/Http/Controllers/Controller.php +++ /dev/null @@ -1,13 +0,0 @@ - - */ - protected $middleware = [ - // \App\Http\Middleware\TrustHosts::class, - \App\Http\Middleware\TrustProxies::class, - \Fruitcake\Cors\HandleCors::class, - \App\Http\Middleware\PreventRequestsDuringMaintenance::class, - \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, - \App\Http\Middleware\TrimStrings::class, - \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, - ]; - - /** - * The application's route middleware groups. - * - * @var array> - */ - protected $middlewareGroups = [ - 'web' => [ - \App\Http\Middleware\EncryptCookies::class, - \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, - \Illuminate\Session\Middleware\StartSession::class, - // \Illuminate\Session\Middleware\AuthenticateSession::class, - \Illuminate\View\Middleware\ShareErrorsFromSession::class, - \App\Http\Middleware\VerifyCsrfToken::class, - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - - 'api' => [ - // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, - 'throttle:api', - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - ]; - - /** - * The application's route middleware. - * - * These middleware may be assigned to groups or used individually. - * - * @var array - */ - protected $routeMiddleware = [ - 'auth' => \App\Http\Middleware\Authenticate::class, - 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::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, - 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, - 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, - 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, - ]; -} diff --git a/Chapter05/onlineStore/app/Http/Middleware/Authenticate.php b/Chapter05/onlineStore/app/Http/Middleware/Authenticate.php deleted file mode 100644 index 704089a..0000000 --- a/Chapter05/onlineStore/app/Http/Middleware/Authenticate.php +++ /dev/null @@ -1,21 +0,0 @@ -expectsJson()) { - return route('login'); - } - } -} diff --git a/Chapter05/onlineStore/app/Http/Middleware/EncryptCookies.php b/Chapter05/onlineStore/app/Http/Middleware/EncryptCookies.php deleted file mode 100644 index 867695b..0000000 --- a/Chapter05/onlineStore/app/Http/Middleware/EncryptCookies.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter05/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/Chapter05/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php deleted file mode 100644 index 74cbd9a..0000000 --- a/Chapter05/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter05/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php b/Chapter05/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php deleted file mode 100644 index a2813a0..0000000 --- a/Chapter05/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php +++ /dev/null @@ -1,32 +0,0 @@ -check()) { - return redirect(RouteServiceProvider::HOME); - } - } - - return $next($request); - } -} diff --git a/Chapter05/onlineStore/app/Http/Middleware/TrimStrings.php b/Chapter05/onlineStore/app/Http/Middleware/TrimStrings.php deleted file mode 100644 index 88cadca..0000000 --- a/Chapter05/onlineStore/app/Http/Middleware/TrimStrings.php +++ /dev/null @@ -1,19 +0,0 @@ - - */ - protected $except = [ - 'current_password', - 'password', - 'password_confirmation', - ]; -} diff --git a/Chapter05/onlineStore/app/Http/Middleware/TrustHosts.php b/Chapter05/onlineStore/app/Http/Middleware/TrustHosts.php deleted file mode 100644 index 7186414..0000000 --- a/Chapter05/onlineStore/app/Http/Middleware/TrustHosts.php +++ /dev/null @@ -1,20 +0,0 @@ - - */ - public function hosts() - { - return [ - $this->allSubdomainsOfApplicationUrl(), - ]; - } -} diff --git a/Chapter05/onlineStore/app/Http/Middleware/TrustProxies.php b/Chapter05/onlineStore/app/Http/Middleware/TrustProxies.php deleted file mode 100644 index 3391630..0000000 --- a/Chapter05/onlineStore/app/Http/Middleware/TrustProxies.php +++ /dev/null @@ -1,28 +0,0 @@ -|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/Chapter05/onlineStore/app/Http/Middleware/VerifyCsrfToken.php b/Chapter05/onlineStore/app/Http/Middleware/VerifyCsrfToken.php deleted file mode 100644 index 9e86521..0000000 --- a/Chapter05/onlineStore/app/Http/Middleware/VerifyCsrfToken.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter05/onlineStore/app/Models/User.php b/Chapter05/onlineStore/app/Models/User.php deleted file mode 100644 index 8996368..0000000 --- a/Chapter05/onlineStore/app/Models/User.php +++ /dev/null @@ -1,44 +0,0 @@ - - */ - 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', - ]; -} diff --git a/Chapter05/onlineStore/app/Providers/AppServiceProvider.php b/Chapter05/onlineStore/app/Providers/AppServiceProvider.php deleted file mode 100644 index ee8ca5b..0000000 --- a/Chapter05/onlineStore/app/Providers/AppServiceProvider.php +++ /dev/null @@ -1,28 +0,0 @@ - - */ - protected $policies = [ - // 'App\Models\Model' => 'App\Policies\ModelPolicy', - ]; - - /** - * Register any authentication / authorization services. - * - * @return void - */ - public function boot() - { - $this->registerPolicies(); - - // - } -} diff --git a/Chapter05/onlineStore/app/Providers/BroadcastServiceProvider.php b/Chapter05/onlineStore/app/Providers/BroadcastServiceProvider.php deleted file mode 100644 index 395c518..0000000 --- a/Chapter05/onlineStore/app/Providers/BroadcastServiceProvider.php +++ /dev/null @@ -1,21 +0,0 @@ -> - */ - protected $listen = [ - Registered::class => [ - SendEmailVerificationNotification::class, - ], - ]; - - /** - * Register any events for your application. - * - * @return void - */ - public function boot() - { - // - } -} diff --git a/Chapter05/onlineStore/app/Providers/RouteServiceProvider.php b/Chapter05/onlineStore/app/Providers/RouteServiceProvider.php deleted file mode 100644 index 7c17d1f..0000000 --- a/Chapter05/onlineStore/app/Providers/RouteServiceProvider.php +++ /dev/null @@ -1,63 +0,0 @@ -configureRateLimiting(); - - $this->routes(function () { - Route::prefix('api') - ->middleware('api') - ->namespace($this->namespace) - ->group(base_path('routes/api.php')); - - Route::middleware('web') - ->namespace($this->namespace) - ->group(base_path('routes/web.php')); - }); - } - - /** - * Configure the rate limiters for the application. - * - * @return void - */ - protected function configureRateLimiting() - { - RateLimiter::for('api', function (Request $request) { - return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); - }); - } -} diff --git a/Chapter05/onlineStore/artisan b/Chapter05/onlineStore/artisan deleted file mode 100644 index 67a3329..0000000 --- a/Chapter05/onlineStore/artisan +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env php -make(Illuminate\Contracts\Console\Kernel::class); - -$status = $kernel->handle( - $input = new Symfony\Component\Console\Input\ArgvInput, - new Symfony\Component\Console\Output\ConsoleOutput -); - -/* -|-------------------------------------------------------------------------- -| Shutdown The Application -|-------------------------------------------------------------------------- -| -| Once Artisan has finished running, we will fire off the shutdown events -| so that any final work may be done by the application before we shut -| down the process. This is the last thing to happen to the request. -| -*/ - -$kernel->terminate($input, $status); - -exit($status); diff --git a/Chapter05/onlineStore/bootstrap/app.php b/Chapter05/onlineStore/bootstrap/app.php deleted file mode 100644 index 037e17d..0000000 --- a/Chapter05/onlineStore/bootstrap/app.php +++ /dev/null @@ -1,55 +0,0 @@ -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/Chapter05/onlineStore/bootstrap/cache/.gitignore b/Chapter05/onlineStore/bootstrap/cache/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter05/onlineStore/bootstrap/cache/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter05/onlineStore/composer.json b/Chapter05/onlineStore/composer.json deleted file mode 100644 index 6913736..0000000 --- a/Chapter05/onlineStore/composer.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "name": "laravel/laravel", - "type": "project", - "description": "The Laravel Framework.", - "keywords": ["framework", "laravel"], - "license": "MIT", - "require": { - "php": "^8.0", - "fruitcake/laravel-cors": "^2.0.5", - "guzzlehttp/guzzle": "^7.2", - "laravel/framework": "^9.0", - "laravel/sanctum": "^2.14", - "laravel/tinker": "^2.7" - }, - "require-dev": { - "fakerphp/faker": "^1.9.1", - "laravel/sail": "^1.0.1", - "mockery/mockery": "^1.4.4", - "nunomaduro/collision": "^6.1", - "phpunit/phpunit": "^9.5.10", - "spatie/laravel-ignition": "^1.0" - }, - "autoload": { - "psr-4": { - "App\\": "app/", - "Database\\Factories\\": "database/factories/", - "Database\\Seeders\\": "database/seeders/" - } - }, - "autoload-dev": { - "psr-4": { - "Tests\\": "tests/" - } - }, - "scripts": { - "post-autoload-dump": [ - "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", - "@php artisan package:discover --ansi" - ], - "post-update-cmd": [ - "@php artisan vendor:publish --tag=laravel-assets --ansi --force" - ], - "post-root-package-install": [ - "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" - ], - "post-create-project-cmd": [ - "@php artisan key:generate --ansi" - ] - }, - "extra": { - "laravel": { - "dont-discover": [] - } - }, - "config": { - "optimize-autoloader": true, - "preferred-install": "dist", - "sort-packages": true - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/Chapter05/onlineStore/composer.lock b/Chapter05/onlineStore/composer.lock deleted file mode 100644 index 64d5967..0000000 --- a/Chapter05/onlineStore/composer.lock +++ /dev/null @@ -1,7804 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "65e85f9f959c0b087110331754d451cf", - "packages": [ - { - "name": "asm89/stack-cors", - "version": "v2.1.1", - "source": { - "type": "git", - "url": "https://github.com/asm89/stack-cors.git", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4|^5|^6" - }, - "require-dev": { - "phpunit/phpunit": "^7|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "psr-4": { - "Asm89\\Stack\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alexander", - "email": "iam.asm89@gmail.com" - } - ], - "description": "Cross-origin resource sharing library and stack middleware", - "homepage": "https://github.com/asm89/stack-cors", - "keywords": [ - "cors", - "stack" - ], - "support": { - "issues": "https://github.com/asm89/stack-cors/issues", - "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" - }, - "time": "2022-01-18T09:12:03+00:00" - }, - { - "name": "brick/math", - "version": "0.9.3", - "source": { - "type": "git", - "url": "https://github.com/brick/math.git", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", - "vimeo/psalm": "4.9.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Brick\\Math\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Arbitrary-precision arithmetic library", - "keywords": [ - "Arbitrary-precision", - "BigInteger", - "BigRational", - "arithmetic", - "bigdecimal", - "bignum", - "brick", - "math" - ], - "support": { - "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.9.3" - }, - "funding": [ - { - "url": "https://github.com/BenMorel", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/brick/math", - "type": "tidelift" - } - ], - "time": "2021-08-15T20:50:18+00:00" - }, - { - "name": "dflydev/dot-access-data", - "version": "v3.0.1", - "source": { - "type": "git", - "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c", - "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": "^3.14" - }, - "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.1" - }, - "time": "2021-08-13T13:06:58+00:00" - }, - { - "name": "doctrine/inflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "vimeo/psalm": "^4.10" - }, - "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.4" - }, - "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": "2021-10-22T20:16:43+00:00" - }, - { - "name": "doctrine/lexer", - "version": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" - } - }, - "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/1.2.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%2Flexer", - "type": "tidelift" - } - ], - "time": "2022-01-12T08:27:12+00:00" - }, - { - "name": "dragonmantank/cron-expression", - "version": "v3.3.1", - "source": { - "type": "git", - "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "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.1" - }, - "funding": [ - { - "url": "https://github.com/dragonmantank", - "type": "github" - } - ], - "time": "2022-01-18T15:43:28+00:00" - }, - { - "name": "egulias/email-validator", - "version": "3.1.2", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ee0db30118f661fb166bcffbf5d82032df484697", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^1.2", - "php": ">=7.2", - "symfony/polyfill-intl-idn": "^1.15" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^8.5.8|^9.3.3", - "vimeo/psalm": "^4" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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/3.1.2" - }, - "funding": [ - { - "url": "https://github.com/egulias", - "type": "github" - } - ], - "time": "2021-10-11T09:18:27+00:00" - }, - { - "name": "fruitcake/laravel-cors", - "version": "v2.0.5", - "source": { - "type": "git", - "url": "https://github.com/fruitcake/laravel-cors.git", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "shasum": "" - }, - "require": { - "asm89/stack-cors": "^2.0.1", - "illuminate/contracts": "^6|^7|^8|^9", - "illuminate/support": "^6|^7|^8|^9", - "php": ">=7.2", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4.3.4|^5|^6" - }, - "require-dev": { - "laravel/framework": "^6|^7.24|^8", - "orchestra/testbench-dusk": "^4|^5|^6|^7", - "phpunit/phpunit": "^6|^7|^8|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - }, - "laravel": { - "providers": [ - "Fruitcake\\Cors\\CorsServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Fruitcake\\Cors\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fruitcake", - "homepage": "https://fruitcake.nl" - }, - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", - "keywords": [ - "api", - "cors", - "crossdomain", - "laravel" - ], - "support": { - "issues": "https://github.com/fruitcake/laravel-cors/issues", - "source": "https://github.com/fruitcake/laravel-cors/tree/v2.0.5" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "time": "2022-01-03T14:53:04+00:00" - }, - { - "name": "graham-campbell/result-type", - "version": "v1.0.4", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "0690bde05318336c7221785f2a932467f98b64ca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/0690bde05318336c7221785f2a932467f98b64ca", - "reference": "0690bde05318336c7221785f2a932467f98b64ca", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "phpoption/phpoption": "^1.8" - }, - "require-dev": { - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", - "type": "tidelift" - } - ], - "time": "2021-11-21T21:41:47+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "7.4.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.8.3 || ^2.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.4.1", - "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.5 || ^9.3.5", - "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": { - "branch-alias": { - "dev-master": "7.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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.4.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": "2021-12-06T18:43:05+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "1.5.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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/1.5.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "time": "2021-10-22T20:56:57+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.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.4.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.8 || ^9.3.10" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "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.1.0" - }, - "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": "2021-10-06T17:43:30+00:00" - }, - { - "name": "laravel/framework", - "version": "v9.0.1", - "source": { - "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "shasum": "" - }, - "require": { - "doctrine/inflector": "^2.0", - "dragonmantank/cron-expression": "^3.1", - "egulias/email-validator": "^3.1", - "ext-mbstring": "*", - "ext-openssl": "*", - "laravel/serializable-closure": "^1.0", - "league/commonmark": "^2.2", - "league/flysystem": "^3.0", - "monolog/monolog": "^2.0", - "nesbot/carbon": "^2.53.1", - "php": "^8.0.2", - "psr/container": "^1.1.1|^2.0.1", - "psr/log": "^1.0|^2.0|^3.0", - "psr/simple-cache": "^1.0|^2.0|^3.0", - "ramsey/uuid": "^4.2.2", - "symfony/console": "^6.0", - "symfony/error-handler": "^6.0", - "symfony/finder": "^6.0", - "symfony/http-foundation": "^6.0", - "symfony/http-kernel": "^6.0", - "symfony/mailer": "^6.0", - "symfony/mime": "^6.0", - "symfony/process": "^6.0", - "symfony/routing": "^6.0", - "symfony/var-dumper": "^6.0", - "tijsverkoyen/css-to-inline-styles": "^2.2.2", - "vlucas/phpdotenv": "^5.4.1", - "voku/portable-ascii": "^2.0" - }, - "conflict": { - "tightenco/collect": "<5.5.33" - }, - "provide": { - "psr/container-implementation": "1.1|2.0", - "psr/simple-cache-implementation": "1.0|2.0|3.0" - }, - "replace": { - "illuminate/auth": "self.version", - "illuminate/broadcasting": "self.version", - "illuminate/bus": "self.version", - "illuminate/cache": "self.version", - "illuminate/collections": "self.version", - "illuminate/conditionable": "self.version", - "illuminate/config": "self.version", - "illuminate/console": "self.version", - "illuminate/container": "self.version", - "illuminate/contracts": "self.version", - "illuminate/cookie": "self.version", - "illuminate/database": "self.version", - "illuminate/encryption": "self.version", - "illuminate/events": "self.version", - "illuminate/filesystem": "self.version", - "illuminate/hashing": "self.version", - "illuminate/http": "self.version", - "illuminate/log": "self.version", - "illuminate/macroable": "self.version", - "illuminate/mail": "self.version", - "illuminate/notifications": "self.version", - "illuminate/pagination": "self.version", - "illuminate/pipeline": "self.version", - "illuminate/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": { - "aws/aws-sdk-php": "^3.198.1", - "doctrine/dbal": "^2.13.3|^3.1.4", - "fakerphp/faker": "^1.9.2", - "guzzlehttp/guzzle": "^7.2", - "league/flysystem-aws-s3-v3": "^3.0", - "league/flysystem-ftp": "^3.0", - "league/flysystem-sftp-v3": "^3.0", - "mockery/mockery": "^1.4.4", - "orchestra/testbench-core": "^7.0", - "pda/pheanstalk": "^4.0", - "phpstan/phpstan": "^1.0", - "phpunit/phpunit": "^9.5.8", - "predis/predis": "^1.1.9", - "symfony/amazon-mailer": "^6.0", - "symfony/cache": "^6.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.198.1).", - "brianium/paratest": "Required to run tests in parallel (^6.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", - "ext-bcmath": "Required to use the multiple_of validation rule.", - "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.", - "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.2).", - "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-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", - "mockery/mockery": "Required to use mocking (^1.4.4).", - "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).", - "predis/predis": "Required to use the predis connector (^1.1.9).", - "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.0).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^6.0).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.0).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.0).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.0).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.x-dev" - } - }, - "autoload": { - "files": [ - "src/Illuminate/Collections/helpers.php", - "src/Illuminate/Events/functions.php", - "src/Illuminate/Foundation/helpers.php", - "src/Illuminate/Support/helpers.php" - ], - "psr-4": { - "Illuminate\\": "src/Illuminate/", - "Illuminate\\Support\\": [ - "src/Illuminate/Macroable/", - "src/Illuminate/Collections/", - "src/Illuminate/Conditionable/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Laravel Framework.", - "homepage": "https://laravel.com", - "keywords": [ - "framework", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2022-02-09T15:00:05+00:00" - }, - { - "name": "laravel/sanctum", - "version": "v2.14.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/sanctum.git", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/0647a87140c7522e75826cffcadb3ad6e01f71e9", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/contracts": "^6.9|^7.0|^8.0|^9.0", - "illuminate/database": "^6.9|^7.0|^8.0|^9.0", - "illuminate/support": "^6.9|^7.0|^8.0|^9.0", - "php": "^7.2|^8.0" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0", - "phpunit/phpunit": "^8.0|^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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": "2022-01-12T15:07:43+00:00" - }, - { - "name": "laravel/serializable-closure", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/serializable-closure.git", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/65c9faf50d567b65d81764a44526545689e3fe63", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "pestphp/pest": "^1.18", - "phpstan/phpstan": "^0.12.98", - "symfony/var-dumper": "^5.3" - }, - "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": "2022-02-01T16:29:39+00:00" - }, - { - "name": "laravel/tinker", - "version": "v2.7.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/tinker.git", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/5f2f9815b7631b9f586a3de7933c25f9327d4073", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073", - "shasum": "" - }, - "require": { - "illuminate/console": "^6.0|^7.0|^8.0|^9.0", - "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.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", - "phpunit/phpunit": "^8.5.8|^9.3.3" - }, - "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.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.7.0" - }, - "time": "2022-01-10T08:52:49+00:00" - }, - { - "name": "league/commonmark", - "version": "2.2.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/commonmark.git", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "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.15" - }, - "require-dev": { - "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.0", - "commonmark/commonmark.js": "0.30.0", - "composer/package-versions-deprecated": "^1.8", - "erusev/parsedown": "^1.0", - "ext-json": "*", - "github/gfm": "0.29.0", - "michelf/php-markdown": "^1.4", - "phpstan/phpstan": "^0.12.88 || ^1.0.0", - "phpunit/phpunit": "^9.5.5", - "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", - "unleashedtech/php-coding-standard": "^3.1", - "vimeo/psalm": "^4.7.3" - }, - "suggest": { - "symfony/yaml": "v2.3+ required if using the Front Matter extension" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.3-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": "2022-01-25T14:37:33+00:00" - }, - { - "name": "league/config", - "version": "v1.1.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/config.git", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/config/zipball/a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^3.0.1", - "nette/schema": "^1.2", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.90", - "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": "2021-08-14T12:15:32+00:00" - }, - { - "name": "league/flysystem", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9f8b4260031bfef5497477da53dd57b2aaff0e06", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06", - "shasum": "" - }, - "require": { - "ext-json": "*", - "league/mime-type-detection": "^1.0.0", - "php": "^8.0.2" - }, - "conflict": { - "guzzlehttp/guzzle": "<7.0", - "guzzlehttp/ringphp": "<1.1.1", - "symfony/http-client": "<5.2" - }, - "require-dev": { - "async-aws/s3": "^1.5", - "async-aws/simple-s3": "^1.0", - "aws/aws-sdk-php": "^3.198.1", - "composer/semver": "^3.0", - "ext-fileinfo": "*", - "ext-ftp": "*", - "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.5", - "google/cloud-storage": "^1.23", - "phpseclib/phpseclib": "^2.0", - "phpstan/phpstan": "^0.12.26", - "phpunit/phpunit": "^9.5.11", - "sabre/dav": "^4.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.0.3" - }, - "funding": [ - { - "url": "https://offset.earth/frankdejonge", - "type": "custom" - }, - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2022-01-31T19:41:04+00:00" - }, - { - "name": "league/mime-type-detection", - "version": "1.9.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/aa70e813a6ad3d1558fc927863d47309b4c23e69", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.2", - "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" - }, - "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.9.0" - }, - "funding": [ - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2021-11-21T11:48:40+00:00" - }, - { - "name": "monolog/monolog", - "version": "2.3.5", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd4380d6fc37626e2f799f29d91195040137eba9", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "provide": { - "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7", - "graylog2/gelf-php": "^1.4.2", - "mongodb/mongodb": "^1.8", - "php-amqplib/php-amqplib": "~2.4 || ^3", - "php-console/php-console": "^3.1.3", - "phpspec/prophecy": "^1.6.1", - "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5", - "predis/predis": "^1.1", - "rollbar/rollbar": "^1.3", - "ruflin/elastica": ">=0.90@dev", - "swiftmailer/swiftmailer": "^5.3|^6.0" - }, - "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", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "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": "2.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/2.3.5" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" - } - ], - "time": "2021-10-01T21:08:31+00:00" - }, - { - "name": "nesbot/carbon", - "version": "2.56.0", - "source": { - "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1.8 || ^8.0", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "doctrine/dbal": "^2.0 || ^3.0", - "doctrine/orm": "^2.7", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "phpmd/phpmd": "^2.9", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.54 || ^1.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.14", - "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://opencollective.com/Carbon", - "type": "open_collective" - }, - { - "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", - "type": "tidelift" - } - ], - "time": "2022-01-21T17:08:38+00:00" - }, - { - "name": "nette/schema", - "version": "v1.2.2", - "source": { - "type": "git", - "url": "https://github.com/nette/schema.git", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/9a39cef03a5b34c7de64f551538cbba05c2be5df", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df", - "shasum": "" - }, - "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": ">=7.1 <8.2" - }, - "require-dev": { - "nette/tester": "^2.3 || ^2.4", - "phpstan/phpstan-nette": "^0.12", - "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.2" - }, - "time": "2021-10-15T11:40:02+00:00" - }, - { - "name": "nette/utils", - "version": "v3.2.7", - "source": { - "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/0af4e3de4df9f1543534beab255ccf459e7a2c99", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99", - "shasum": "" - }, - "require": { - "php": ">=7.2 <8.2" - }, - "conflict": { - "nette/di": "<3.0.6" - }, - "require-dev": { - "nette/tester": "~2.0", - "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.3" - }, - "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()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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 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/v3.2.7" - }, - "time": "2022-01-24T11:29:14+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.13.2", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", - "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.13.2" - }, - "time": "2021-11-30T19:35:32+00:00" - }, - { - "name": "phpoption/phpoption", - "version": "1.8.1", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-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.8.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", - "type": "tidelift" - } - ], - "time": "2021-12-04T23:24:31+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.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.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": "http://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/tree/master" - }, - "time": "2020-06-29T06:28:15+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.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": "http://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/master" - }, - "time": "2019-04-30T12:38:16+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.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": "http://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/master" - }, - "time": "2016-08-06T14:39: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.1", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "570292577277f06f590635381a7f761a6cf4f026" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/570292577277f06f590635381a7f761a6cf4f026", - "reference": "570292577277f06f590635381a7f761a6cf4f026", - "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" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "3.17.05.02" - }, - "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.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." - }, - "bin": [ - "bin/psysh" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "0.11.x-dev" - } - }, - "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.1" - }, - "time": "2022-01-03T13:58:38+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": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/ramsey/collection.git", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "shasum": "" - }, - "require": { - "php": "^7.3 || ^8", - "symfony/polyfill-php81": "^1.23" - }, - "require-dev": { - "captainhook/captainhook": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "ergebnis/composer-normalize": "^2.6", - "fakerphp/faker": "^1.5", - "hamcrest/hamcrest-php": "^2", - "jangregor/phpstan-prophecy": "^0.8", - "mockery/mockery": "^1.3", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1", - "phpstan/phpstan": "^0.12.32", - "phpstan/phpstan-mockery": "^0.12.5", - "phpstan/phpstan-phpunit": "^0.12.11", - "phpunit/phpunit": "^8.5 || ^9", - "psy/psysh": "^0.10.4", - "slevomat/coding-standard": "^6.3", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.4" - }, - "type": "library", - "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/1.2.2" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "time": "2021-10-10T03:01:02+00:00" - }, - { - "name": "ramsey/uuid", - "version": "4.2.3", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "shasum": "" - }, - "require": { - "brick/math": "^0.8 || ^0.9", - "ext-json": "*", - "php": "^7.2 || ^8.0", - "ramsey/collection": "^1.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php80": "^1.14" - }, - "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", - "moontoast/math": "^1.1", - "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.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-mockery": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^8.5 || ^9", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" - }, - "suggest": { - "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-ctype": "Enables faster processing of character classification using ctype functions.", - "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": { - "branch-alias": { - "dev-main": "4.x-dev" - }, - "captainhook": { - "force-install": true - } - }, - "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "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.2.3" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2021-09-25T23:10:38+00:00" - }, - { - "name": "symfony/console", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/22e8efd019c3270c4f79376234a3f8752cd25490", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.4|^6.0" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/css-selector", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/1955d595c12c111629cc814d3f2a2ff13580508a", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a", - "shasum": "" - }, - "require": { - "php": ">=8.0.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/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-11-01T23:48:49+00:00" - }, - { - "name": "symfony/error-handler", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/20343b3bad7ebafa38138ddcb97290a24722b57b", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" - }, - "bin": [ - "Resources/bin/patch-type-declarations" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to manage errors and ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6472ea2dd415e925b90ca82be64b8bc6157f3934", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/event-dispatcher-contracts": "^2|^3" - }, - "conflict": { - "symfony/dependency-injection": "<5.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^5.4|^6.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/aa5422287b75594b90ee9cd807caf8f0df491385", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/event-dispatcher": "^1" - }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-07-15T12:33:35+00:00" - }, - { - "name": "symfony/finder", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/8661b74dbabc23223f38c9b99d3f8ade71170430", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ad157299ced81a637fade1efcadd688d6deba5c1", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1" - }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/cache": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0" - }, - "suggest": { - "symfony/mime": "To use the file extension guesser" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v6.0.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/error-handler": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", - "symfony/twig-bridge": "<5.4", - "symfony/validator": "<5.4", - "twig/twig": "<2.13" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/process": "^5.4|^6.0", - "symfony/routing": "^5.4|^6.0", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-29T18:12:46+00:00" - }, - { - "name": "symfony/mailer", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mailer.git", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "shasum": "" - }, - "require": { - "egulias/email-validator": "^2.1.10|^3", - "php": ">=8.0.2", - "psr/event-dispatcher": "^1", - "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3" - }, - "conflict": { - "symfony/http-kernel": "<5.4" - }, - "require-dev": { - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/messenger": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/mime", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/2cd9601efd040e56f43360daa68f3c6b0534923a", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "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" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "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.24.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": "2021-10-20T20:35:02+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-11-23T21:10:46+00:00" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44", - "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.23-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.24.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": "2021-09-14T14:02:44+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.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": "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.24.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": "2021-11-30T18:21:41+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-05-27T09:17:38+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:33+00:00" - }, - { - "name": "symfony/polyfill-php81", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:11+00:00" - }, - { - "name": "symfony/process", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/298ed357274c1868c20a0061df256a1250a6c4af", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/routing", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/yaml": "<5.4" - }, - "require-dev": { - "doctrine/annotations": "^1.12", - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/36715ebf9fb9db73db0cb24263c79077c6fe8603", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/container": "^2.0" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "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.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": "2021-11-04T17:53:12+00:00" - }, - { - "name": "symfony/string", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/522144f0c4c004c80d56fa47e40e17028e2eefc2", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.0" - }, - "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/translation-contracts": "^2.0|^3.0", - "symfony/var-exporter": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "files": [ - "Resources/functions.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 an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/translation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/71bb15335798f8c4da110911bcf2d2fead7a430d", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.3|^3.0" - }, - "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" - }, - "provide": { - "symfony/translation-implementation": "2.3|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-07T00:29:03+00:00" - }, - { - "name": "symfony/translation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "suggest": { - "symfony/translation-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - } - }, - "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.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": "2021-09-07T12:43:40+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7b701676fc64f9ef11f9b4870f16b48f66be4834", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<5.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-17T16:30:44+00:00" - }, - { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.4", - "source": { - "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" - } - ], - "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", - "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "support": { - "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" - }, - "time": "2021-12-08T09:12:39+00:00" - }, - { - "name": "vlucas/phpdotenv", - "version": "v5.4.1", - "source": { - "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", - "shasum": "" - }, - "require": { - "ext-pcre": "*", - "graham-campbell/result-type": "^1.0.2", - "php": "^7.1.3 || ^8.0", - "phpoption/phpoption": "^1.8", - "symfony/polyfill-ctype": "^1.23", - "symfony/polyfill-mbstring": "^1.23.1", - "symfony/polyfill-php80": "^1.23.1" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" - }, - "suggest": { - "ext-filter": "Required to use the boolean validator." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.4-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.4.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", - "type": "tidelift" - } - ], - "time": "2021-12-12T23:22:04+00:00" - }, - { - "name": "voku/portable-ascii", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/voku/portable-ascii.git", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/9bd89e83cecdf8c37b64909454249eaed98b2c89", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89", - "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.0" - }, - "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-01-24T18:59:03+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "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.10.0" - }, - "time": "2021-03-09T10:59:23+00:00" - } - ], - "packages-dev": [ - { - "name": "doctrine/instantiator", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.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%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2020-11-10T18:47:58+00:00" - }, - { - "name": "facade/ignition-contracts", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/facade/ignition-contracts.git", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^v2.15.8", - "phpunit/phpunit": "^9.3.11", - "vimeo/psalm": "^3.17.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Facade\\IgnitionContracts\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://flareapp.io", - "role": "Developer" - } - ], - "description": "Solution contracts for Ignition", - "homepage": "https://github.com/facade/ignition-contracts", - "keywords": [ - "contracts", - "flare", - "ignition" - ], - "support": { - "issues": "https://github.com/facade/ignition-contracts/issues", - "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" - }, - "time": "2020-10-16T08:27:54+00:00" - }, - { - "name": "fakerphp/faker", - "version": "v1.19.0", - "source": { - "type": "git", - "url": "https://github.com/FakerPHP/Faker.git", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^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": "*", - "symfony/phpunit-bridge": "^4.4 || ^5.2" - }, - "suggest": { - "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", - "ext-curl": "Required by Faker\\Provider\\Image to download images.", - "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", - "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.19-dev" - } - }, - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "François Zaninotto" - } - ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], - "support": { - "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0" - }, - "time": "2022-02-02T17:38:57+00:00" - }, - { - "name": "filp/whoops", - "version": "2.14.5", - "source": { - "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "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.14.5" - }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "time": "2022-01-07T12:00:00+00:00" - }, - { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "shasum": "" - }, - "require": { - "php": "^5.3|^7.0|^8.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" - }, - "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "classmap": [ - "hamcrest" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "This is the PHP port of Hamcrest Matchers", - "keywords": [ - "test" - ], - "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" - }, - "time": "2020-07-09T08:09:16+00:00" - }, - { - "name": "laravel/sail", - "version": "v1.13.2", - "source": { - "type": "git", - "url": "https://github.com/laravel/sail.git", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.0|^9.0", - "illuminate/contracts": "^8.0|^9.0", - "illuminate/support": "^8.0|^9.0", - "php": "^7.3|^8.0" - }, - "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": "2022-02-08T14:14:12+00:00" - }, - { - "name": "mockery/mockery", - "version": "1.5.0", - "source": { - "type": "git", - "url": "https://github.com/mockery/mockery.git", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "shasum": "" - }, - "require": { - "hamcrest/hamcrest-php": "^2.0.1", - "lib-pcre": ">=7.0", - "php": "^7.3 || ^8.0" - }, - "conflict": { - "phpunit/phpunit": "<8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-0": { - "Mockery": "library/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" - } - ], - "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": { - "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.5.0" - }, - "time": "2022-01-20T13:18:17+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.10.2", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "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.10.2" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2020-11-13T09:40:50+00:00" - }, - { - "name": "nunomaduro/collision", - "version": "v6.1.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/collision.git", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "shasum": "" - }, - "require": { - "facade/ignition-contracts": "^1.0.2", - "filp/whoops": "^2.14.5", - "php": "^8.0.0", - "symfony/console": "^6.0.2" - }, - "require-dev": { - "brianium/paratest": "^6.4.1", - "laravel/framework": "^9.0", - "nunomaduro/larastan": "^1.0.2", - "nunomaduro/mock-final-classes": "^1.1.0", - "orchestra/testbench": "^7.0.0", - "phpunit/phpunit": "^9.5.11" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "6.x-dev" - }, - "laravel": { - "providers": [ - "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" - ] - } - }, - "autoload": { - "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": "2022-01-18T17:49:08+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.1.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/15a90844ad40f127afd244c0cad228de2a80052a", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a", - "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.1.1" - }, - "time": "2022-02-07T21:56:48+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.6.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "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.6.0" - }, - "time": "2022-01-04T19:58:01+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" - }, - "time": "2021-12-08T12:19:24+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "9.2.10", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d5850aaf931743067f4bfc1ae4cbd06468400687", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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 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", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.10" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-05T09:12:13+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "3.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-02T12:48:52+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "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/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:58:55+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T05:33:50+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.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/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:16:10+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "9.5.13", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/597cb647654ede35e43b137926dfdfef0fb11743", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.3.1", - "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": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.7", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", - "sebastian/version": "^3.0.2" - }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.13" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-01-24T07:33:35+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:08:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "1.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:08:54+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:30:19+00:00" - }, - { - "name": "sebastian/comparator", - "version": "4.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:49:45+00:00" - }, - { - "name": "sebastian/complexity", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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 calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:52:27+00:00" - }, - { - "name": "sebastian/diff", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:10:38+00:00" - }, - { - "name": "sebastian/environment", - "version": "5.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-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": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:52:38+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "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", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-11-11T14:18:36+00:00" - }, - { - "name": "sebastian/global-state", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-11T13:31:12+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-28T06:42:11+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "http://www.github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:17:30+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:45:17+00:00" - }, - { - "name": "sebastian/type", - "version": "2.3.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-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/2.3.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-15T12:49:02+00:00" - }, - { - "name": "sebastian/version", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:39:44+00:00" - }, - { - "name": "spatie/backtrace", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/backtrace.git", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "ext-json": "*", - "phpunit/phpunit": "^9.3", - "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": { - "issues": "https://github.com/spatie/backtrace/issues", - "source": "https://github.com/spatie/backtrace/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/sponsors/spatie", - "type": "github" - }, - { - "url": "https://spatie.be/open-source/support-us", - "type": "other" - } - ], - "time": "2021-11-09T10:57:15+00:00" - }, - { - "name": "spatie/flare-client-php", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/flare-client-php.git", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "shasum": "" - }, - "require": { - "illuminate/pipeline": "^8.0|^9.0", - "php": "^8.0", - "spatie/backtrace": "^1.2", - "symfony/http-foundation": "^5.0|^6.0", - "symfony/mime": "^5.2|^6.0", - "symfony/process": "^5.2|^6.0", - "symfony/var-dumper": "^5.2|^6.0" - }, - "require-dev": { - "dms/phpunit-arraysubset-asserts": "^0.3.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/phpunit-snapshot-assertions": "^4.0" - }, - "type": "library", - "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.0.1" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2022-02-04T15:21:00+00:00" - }, - { - "name": "spatie/ignition", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/spatie/ignition.git", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/d2d5ba823af3004268556e87dfc94449e4159f5a", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "monolog/monolog": "^2.0", - "php": "^8.0", - "spatie/flare-client-php": "^1.0", - "symfony/console": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "mockery/mockery": "^1.4", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/ray": "^1.32", - "symfony/process": "^5.4|^6.0" - }, - "type": "library", - "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": "2022-01-19T12:57:41+00:00" - }, - { - "name": "spatie/laravel-ignition", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/68250225a9f83b086462c2af1b1139dfde48fbd2", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*", - "illuminate/support": "^8.77|^9.0", - "monolog/monolog": "^2.3", - "php": "^8.0", - "spatie/flare-client-php": "^1.0.1", - "spatie/ignition": "^1.0", - "symfony/console": "^5.0|^6.0", - "symfony/var-dumper": "^5.0|^6.0" - }, - "require-dev": { - "filp/whoops": "^2.14", - "livewire/livewire": "^2.8|dev-develop", - "mockery/mockery": "^1.4", - "nunomaduro/larastan": "^1.0", - "orchestra/testbench": "^6.23|^7.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/laravel-ray": "^1.27" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Spatie\\LaravelIgnition\\IgnitionServiceProvider" - ], - "aliases": { - "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" - } - } - }, - "autoload": { - "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": "2022-02-04T15:25:56+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2021-07-28T10:34:58+00:00" - } - ], - "aliases": [], - "minimum-stability": "dev", - "stability-flags": [], - "prefer-stable": true, - "prefer-lowest": false, - "platform": { - "php": "^8.0" - }, - "platform-dev": [], - "plugin-api-version": "2.1.0" -} diff --git a/Chapter05/onlineStore/config/app.php b/Chapter05/onlineStore/config/app.php deleted file mode 100644 index 1941d7c..0000000 --- a/Chapter05/onlineStore/config/app.php +++ /dev/null @@ -1,197 +0,0 @@ - env('APP_NAME', 'Laravel'), - - /* - |-------------------------------------------------------------------------- - | Application Environment - |-------------------------------------------------------------------------- - | - | This value determines the "environment" your application is currently - | running in. This may determine how you prefer to configure various - | services the application utilizes. Set this in your ".env" file. - | - */ - - 'env' => env('APP_ENV', 'production'), - - /* - |-------------------------------------------------------------------------- - | Application Debug Mode - |-------------------------------------------------------------------------- - | - | When your application is in debug mode, detailed error messages with - | stack traces will be shown on every error that occurs within your - | application. If disabled, a simple generic error page is shown. - | - */ - - 'debug' => (bool) env('APP_DEBUG', false), - - /* - |-------------------------------------------------------------------------- - | Application URL - |-------------------------------------------------------------------------- - | - | This URL is used by the console to properly generate URLs when using - | the Artisan command line tool. You should set this to the root of - | your application so that it is used when running Artisan tasks. - | - */ - - 'url' => env('APP_URL', 'http://localhost'), - - 'asset_url' => env('ASSET_URL', null), - - /* - |-------------------------------------------------------------------------- - | 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', - - /* - |-------------------------------------------------------------------------- - | 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' => [ - - /* - * Laravel Framework Service Providers... - */ - Illuminate\Auth\AuthServiceProvider::class, - Illuminate\Broadcasting\BroadcastServiceProvider::class, - Illuminate\Bus\BusServiceProvider::class, - Illuminate\Cache\CacheServiceProvider::class, - Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, - Illuminate\Cookie\CookieServiceProvider::class, - Illuminate\Database\DatabaseServiceProvider::class, - Illuminate\Encryption\EncryptionServiceProvider::class, - Illuminate\Filesystem\FilesystemServiceProvider::class, - Illuminate\Foundation\Providers\FoundationServiceProvider::class, - Illuminate\Hashing\HashServiceProvider::class, - Illuminate\Mail\MailServiceProvider::class, - Illuminate\Notifications\NotificationServiceProvider::class, - Illuminate\Pagination\PaginationServiceProvider::class, - Illuminate\Pipeline\PipelineServiceProvider::class, - Illuminate\Queue\QueueServiceProvider::class, - Illuminate\Redis\RedisServiceProvider::class, - Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, - Illuminate\Session\SessionServiceProvider::class, - Illuminate\Translation\TranslationServiceProvider::class, - Illuminate\Validation\ValidationServiceProvider::class, - Illuminate\View\ViewServiceProvider::class, - - /* - * 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, - - ], - - /* - |-------------------------------------------------------------------------- - | 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([ - // ... - ])->toArray(), - -]; diff --git a/Chapter05/onlineStore/config/auth.php b/Chapter05/onlineStore/config/auth.php deleted file mode 100644 index d8c6cee..0000000 --- a/Chapter05/onlineStore/config/auth.php +++ /dev/null @@ -1,111 +0,0 @@ - [ - '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 expire 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. - | - */ - - 'passwords' => [ - 'users' => [ - 'provider' => 'users', - 'table' => 'password_resets', - '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/Chapter05/onlineStore/config/broadcasting.php b/Chapter05/onlineStore/config/broadcasting.php deleted file mode 100644 index 67fcbbd..0000000 --- a/Chapter05/onlineStore/config/broadcasting.php +++ /dev/null @@ -1,67 +0,0 @@ - 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'), - 'useTLS' => true, - ], - '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/Chapter05/onlineStore/config/cache.php b/Chapter05/onlineStore/config/cache.php deleted file mode 100644 index 8736c7a..0000000 --- a/Chapter05/onlineStore/config/cache.php +++ /dev/null @@ -1,110 +0,0 @@ - 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'), - ], - - '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 a RAM based store such as APC or Memcached, there might - | be other applications utilizing the same cache. So, we'll specify a - | value to get prefixed to all our keys so we can avoid collisions. - | - */ - - 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'), - -]; diff --git a/Chapter05/onlineStore/config/cors.php b/Chapter05/onlineStore/config/cors.php deleted file mode 100644 index 8a39e6d..0000000 --- a/Chapter05/onlineStore/config/cors.php +++ /dev/null @@ -1,34 +0,0 @@ - ['api/*', 'sanctum/csrf-cookie'], - - 'allowed_methods' => ['*'], - - 'allowed_origins' => ['*'], - - 'allowed_origins_patterns' => [], - - 'allowed_headers' => ['*'], - - 'exposed_headers' => [], - - 'max_age' => 0, - - 'supports_credentials' => false, - -]; diff --git a/Chapter05/onlineStore/config/database.php b/Chapter05/onlineStore/config/database.php deleted file mode 100644 index 0faebae..0000000 --- a/Chapter05/onlineStore/config/database.php +++ /dev/null @@ -1,147 +0,0 @@ - env('DB_CONNECTION', 'mysql'), - - /* - |-------------------------------------------------------------------------- - | Database Connections - |-------------------------------------------------------------------------- - | - | Here are each of the database connections setup for your application. - | Of course, examples of configuring each database platform that is - | supported by Laravel is shown below to make development simple. - | - | - | All database work in Laravel is done through the PHP PDO facilities - | so make sure you have the driver for your particular database of - | choice installed on your machine before you begin development. - | - */ - - 'connections' => [ - - 'sqlite' => [ - 'driver' => 'sqlite', - 'url' => env('DATABASE_URL'), - 'database' => env('DB_DATABASE', database_path('database.sqlite')), - 'prefix' => '', - 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), - ], - - 'mysql' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '3306'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'unix_socket' => env('DB_SOCKET', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - 'pgsql' => [ - 'driver' => 'pgsql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '5432'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - 'search_path' => 'public', - 'sslmode' => 'prefer', - ], - - 'sqlsrv' => [ - 'driver' => 'sqlsrv', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', 'localhost'), - 'port' => env('DB_PORT', '1433'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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'), - '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'), - 'password' => env('REDIS_PASSWORD'), - 'port' => env('REDIS_PORT', '6379'), - 'database' => env('REDIS_CACHE_DB', '1'), - ], - - ], - -]; diff --git a/Chapter05/onlineStore/config/filesystems.php b/Chapter05/onlineStore/config/filesystems.php deleted file mode 100644 index cf5abce..0000000 --- a/Chapter05/onlineStore/config/filesystems.php +++ /dev/null @@ -1,73 +0,0 @@ - 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 setup for each driver as an example of the required options. - | - | Supported Drivers: "local", "ftp", "sftp", "s3" - | - */ - - 'disks' => [ - - 'local' => [ - 'driver' => 'local', - 'root' => storage_path('app'), - ], - - 'public' => [ - 'driver' => 'local', - 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', - 'visibility' => 'public', - ], - - '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), - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter05/onlineStore/config/hashing.php b/Chapter05/onlineStore/config/hashing.php deleted file mode 100644 index bcd3be4..0000000 --- a/Chapter05/onlineStore/config/hashing.php +++ /dev/null @@ -1,52 +0,0 @@ - '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/Chapter05/onlineStore/config/logging.php b/Chapter05/onlineStore/config/logging.php deleted file mode 100644 index fefe088..0000000 --- a/Chapter05/onlineStore/config/logging.php +++ /dev/null @@ -1,119 +0,0 @@ - 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' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), - - /* - |-------------------------------------------------------------------------- - | 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'), - ], - - 'daily' => [ - 'driver' => 'daily', - 'path' => storage_path('logs/laravel.log'), - 'level' => env('LOG_LEVEL', 'debug'), - 'days' => 14, - ], - - 'slack' => [ - 'driver' => 'slack', - 'url' => env('LOG_SLACK_WEBHOOK_URL'), - 'username' => 'Laravel Log', - 'emoji' => ':boom:', - 'level' => env('LOG_LEVEL', 'critical'), - ], - - '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'), - ], - ], - - 'stderr' => [ - 'driver' => 'monolog', - 'level' => env('LOG_LEVEL', 'debug'), - 'handler' => StreamHandler::class, - 'formatter' => env('LOG_STDERR_FORMATTER'), - 'with' => [ - 'stream' => 'php://stderr', - ], - ], - - 'syslog' => [ - 'driver' => 'syslog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'errorlog' => [ - 'driver' => 'errorlog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'null' => [ - 'driver' => 'monolog', - 'handler' => NullHandler::class, - ], - - 'emergency' => [ - 'path' => storage_path('logs/laravel.log'), - ], - ], - -]; diff --git a/Chapter05/onlineStore/config/mail.php b/Chapter05/onlineStore/config/mail.php deleted file mode 100644 index 87b6fe3..0000000 --- a/Chapter05/onlineStore/config/mail.php +++ /dev/null @@ -1,117 +0,0 @@ - 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", - | "postmark", "log", "array", "failover" - | - */ - - 'mailers' => [ - 'smtp' => [ - 'transport' => 'smtp', - '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, - ], - - 'ses' => [ - 'transport' => 'ses', - ], - - 'mailgun' => [ - 'transport' => 'mailgun', - ], - - 'postmark' => [ - 'transport' => 'postmark', - ], - - 'sendmail' => [ - 'transport' => 'sendmail', - 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -t -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/Chapter05/onlineStore/config/queue.php b/Chapter05/onlineStore/config/queue.php deleted file mode 100644 index 25ea5a8..0000000 --- a/Chapter05/onlineStore/config/queue.php +++ /dev/null @@ -1,93 +0,0 @@ - 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, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter05/onlineStore/config/sanctum.php b/Chapter05/onlineStore/config/sanctum.php deleted file mode 100644 index 9281c92..0000000 --- a/Chapter05/onlineStore/config/sanctum.php +++ /dev/null @@ -1,65 +0,0 @@ - explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( - '%s%s', - 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', - env('APP_URL') ? ','.parse_url(env('APP_URL'), PHP_URL_HOST) : '' - ))), - - /* - |-------------------------------------------------------------------------- - | 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/Chapter05/onlineStore/config/services.php b/Chapter05/onlineStore/config/services.php deleted file mode 100644 index 2a1d616..0000000 --- a/Chapter05/onlineStore/config/services.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - 'domain' => env('MAILGUN_DOMAIN'), - 'secret' => env('MAILGUN_SECRET'), - 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), - ], - - '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/Chapter05/onlineStore/config/session.php b/Chapter05/onlineStore/config/session.php deleted file mode 100644 index 8fed97c..0000000 --- a/Chapter05/onlineStore/config/session.php +++ /dev/null @@ -1,201 +0,0 @@ - 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/Chapter05/onlineStore/config/view.php b/Chapter05/onlineStore/config/view.php deleted file mode 100644 index 22b8a18..0000000 --- a/Chapter05/onlineStore/config/view.php +++ /dev/null @@ -1,36 +0,0 @@ - [ - 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/Chapter05/onlineStore/database/.gitignore b/Chapter05/onlineStore/database/.gitignore deleted file mode 100644 index 9b19b93..0000000 --- a/Chapter05/onlineStore/database/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.sqlite* diff --git a/Chapter05/onlineStore/database/factories/UserFactory.php b/Chapter05/onlineStore/database/factories/UserFactory.php deleted file mode 100644 index d6ca926..0000000 --- a/Chapter05/onlineStore/database/factories/UserFactory.php +++ /dev/null @@ -1,42 +0,0 @@ - - */ -class UserFactory extends Factory -{ - /** - * Define the model's default state. - * - * @return array - */ - public function definition() - { - return [ - 'name' => $this->faker->name(), - 'email' => $this->faker->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. - * - * @return \Illuminate\Database\Eloquent\Factories\Factory - */ - public function unverified() - { - return $this->state(function (array $attributes) { - return [ - 'email_verified_at' => null, - ]; - }); - } -} diff --git a/Chapter05/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php b/Chapter05/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php deleted file mode 100644 index cf6b776..0000000 --- a/Chapter05/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->string('name'); - $table->string('email')->unique(); - $table->timestamp('email_verified_at')->nullable(); - $table->string('password'); - $table->rememberToken(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('users'); - } -}; diff --git a/Chapter05/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php b/Chapter05/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php deleted file mode 100644 index fcacb80..0000000 --- a/Chapter05/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php +++ /dev/null @@ -1,32 +0,0 @@ -string('email')->index(); - $table->string('token'); - $table->timestamp('created_at')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('password_resets'); - } -}; diff --git a/Chapter05/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/Chapter05/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php deleted file mode 100644 index 1719198..0000000 --- a/Chapter05/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php +++ /dev/null @@ -1,36 +0,0 @@ -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. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('failed_jobs'); - } -}; diff --git a/Chapter05/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/Chapter05/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php deleted file mode 100644 index fd235f8..0000000 --- a/Chapter05/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->morphs('tokenable'); - $table->string('name'); - $table->string('token', 64)->unique(); - $table->text('abilities')->nullable(); - $table->timestamp('last_used_at')->nullable(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('personal_access_tokens'); - } -}; diff --git a/Chapter05/onlineStore/database/seeders/DatabaseSeeder.php b/Chapter05/onlineStore/database/seeders/DatabaseSeeder.php deleted file mode 100644 index 71f673f..0000000 --- a/Chapter05/onlineStore/database/seeders/DatabaseSeeder.php +++ /dev/null @@ -1,19 +0,0 @@ -create(); - } -} diff --git a/Chapter05/onlineStore/lang/en.json b/Chapter05/onlineStore/lang/en.json deleted file mode 100644 index 577680d..0000000 --- a/Chapter05/onlineStore/lang/en.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "The :attribute must contain at least one letter.": "The :attribute must contain at least one letter.", - "The :attribute must contain at least one number.": "The :attribute must contain at least one number.", - "The :attribute must contain at least one symbol.": "The :attribute must contain at least one symbol.", - "The :attribute must contain at least one uppercase and one lowercase letter.": "The :attribute must contain at least one uppercase and one lowercase letter.", - "The given :attribute has appeared in a data leak. Please choose a different :attribute.": "The given :attribute has appeared in a data leak. Please choose a different :attribute." -} diff --git a/Chapter05/onlineStore/lang/en/auth.php b/Chapter05/onlineStore/lang/en/auth.php deleted file mode 100644 index 6598e2c..0000000 --- a/Chapter05/onlineStore/lang/en/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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/Chapter05/onlineStore/lang/en/pagination.php b/Chapter05/onlineStore/lang/en/pagination.php deleted file mode 100644 index d481411..0000000 --- a/Chapter05/onlineStore/lang/en/pagination.php +++ /dev/null @@ -1,19 +0,0 @@ - '« Previous', - 'next' => 'Next »', - -]; diff --git a/Chapter05/onlineStore/lang/en/passwords.php b/Chapter05/onlineStore/lang/en/passwords.php deleted file mode 100644 index 2345a56..0000000 --- a/Chapter05/onlineStore/lang/en/passwords.php +++ /dev/null @@ -1,22 +0,0 @@ - '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/Chapter05/onlineStore/lang/en/validation.php b/Chapter05/onlineStore/lang/en/validation.php deleted file mode 100644 index 783003c..0000000 --- a/Chapter05/onlineStore/lang/en/validation.php +++ /dev/null @@ -1,163 +0,0 @@ - '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' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - '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' => [ - 'numeric' => 'The :attribute must be greater than :value.', - 'file' => 'The :attribute must be greater than :value kilobytes.', - 'string' => 'The :attribute must be greater than :value characters.', - 'array' => 'The :attribute must have more than :value items.', - ], - 'gte' => [ - 'numeric' => 'The :attribute must be greater than or equal to :value.', - 'file' => 'The :attribute must be greater than or equal to :value kilobytes.', - 'string' => 'The :attribute must be greater than or equal to :value characters.', - 'array' => 'The :attribute must have :value items or more.', - ], - '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' => [ - 'numeric' => 'The :attribute must be less than :value.', - 'file' => 'The :attribute must be less than :value kilobytes.', - 'string' => 'The :attribute must be less than :value characters.', - 'array' => 'The :attribute must have less than :value items.', - ], - 'lte' => [ - 'numeric' => 'The :attribute must be less than or equal to :value.', - 'file' => 'The :attribute must be less than or equal to :value kilobytes.', - 'string' => 'The :attribute must be less than or equal to :value characters.', - 'array' => 'The :attribute must not have more than :value items.', - ], - 'mac_address' => 'The :attribute must be a valid MAC address.', - 'max' => [ - 'numeric' => 'The :attribute must not be greater than :max.', - 'file' => 'The :attribute must not be greater than :max kilobytes.', - 'string' => 'The :attribute must not be greater than :max characters.', - 'array' => 'The :attribute must not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - '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.', - 'password' => 'The password is incorrect.', - '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' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - '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/Chapter05/onlineStore/package.json b/Chapter05/onlineStore/package.json deleted file mode 100644 index 7a9aecd..0000000 --- a/Chapter05/onlineStore/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "private": true, - "scripts": { - "dev": "npm run development", - "development": "mix", - "watch": "mix watch", - "watch-poll": "mix watch -- --watch-options-poll=1000", - "hot": "mix watch --hot", - "prod": "npm run production", - "production": "mix --production" - }, - "devDependencies": { - "axios": "^0.25", - "laravel-mix": "^6.0.6", - "lodash": "^4.17.19", - "postcss": "^8.1.14" - } -} diff --git a/Chapter05/onlineStore/phpunit.xml b/Chapter05/onlineStore/phpunit.xml deleted file mode 100644 index 2ac86a1..0000000 --- a/Chapter05/onlineStore/phpunit.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - ./tests/Unit - - - ./tests/Feature - - - - - ./app - - - - - - - - - - - - - - diff --git a/Chapter05/onlineStore/public/.htaccess b/Chapter05/onlineStore/public/.htaccess deleted file mode 100644 index 3aec5e2..0000000 --- a/Chapter05/onlineStore/public/.htaccess +++ /dev/null @@ -1,21 +0,0 @@ - - - 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/Chapter05/onlineStore/public/css/app.css b/Chapter05/onlineStore/public/css/app.css deleted file mode 100644 index cabac36..0000000 --- a/Chapter05/onlineStore/public/css/app.css +++ /dev/null @@ -1,20 +0,0 @@ -.bg-secondary { - background-color: #2c3e50 !important; -} - -.copyright { - background-color: #1a252f; -} - -.bg-primary { - background-color: #1abc9c !important; -} - -nav{ - font-weight: 700; -} - -.img-card{ - height: 18vw; - object-fit: cover; -} diff --git a/Chapter05/onlineStore/public/favicon.ico b/Chapter05/onlineStore/public/favicon.ico deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter05/onlineStore/public/index.php b/Chapter05/onlineStore/public/index.php deleted file mode 100644 index 1d69f3a..0000000 --- a/Chapter05/onlineStore/public/index.php +++ /dev/null @@ -1,55 +0,0 @@ -make(Kernel::class); - -$response = $kernel->handle( - $request = Request::capture() -)->send(); - -$kernel->terminate($request, $response); diff --git a/Chapter05/onlineStore/public/robots.txt b/Chapter05/onlineStore/public/robots.txt deleted file mode 100644 index eb05362..0000000 --- a/Chapter05/onlineStore/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: diff --git a/Chapter05/onlineStore/resources/css/app.css b/Chapter05/onlineStore/resources/css/app.css deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter05/onlineStore/resources/js/app.js b/Chapter05/onlineStore/resources/js/app.js deleted file mode 100644 index 40c55f6..0000000 --- a/Chapter05/onlineStore/resources/js/app.js +++ /dev/null @@ -1 +0,0 @@ -require('./bootstrap'); diff --git a/Chapter05/onlineStore/resources/js/bootstrap.js b/Chapter05/onlineStore/resources/js/bootstrap.js deleted file mode 100644 index 6922577..0000000 --- a/Chapter05/onlineStore/resources/js/bootstrap.js +++ /dev/null @@ -1,28 +0,0 @@ -window._ = require('lodash'); - -/** - * 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 = require('axios'); - -window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; - -/** - * 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'; - -// window.Pusher = require('pusher-js'); - -// window.Echo = new Echo({ -// broadcaster: 'pusher', -// key: process.env.MIX_PUSHER_APP_KEY, -// cluster: process.env.MIX_PUSHER_APP_CLUSTER, -// forceTLS: true -// }); diff --git a/Chapter05/onlineStore/resources/views/layouts/app.blade.php b/Chapter05/onlineStore/resources/views/layouts/app.blade.php deleted file mode 100644 index 6351369..0000000 --- a/Chapter05/onlineStore/resources/views/layouts/app.blade.php +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - @yield('title', 'Online Store') - - - - - -
    -
    -

    @yield('subtitle', 'A Laravel Online Store')

    -
    -
    - - -
    - @yield('content') -
    - - - - - - - diff --git a/Chapter05/onlineStore/resources/views/welcome.blade.php b/Chapter05/onlineStore/resources/views/welcome.blade.php deleted file mode 100644 index c587c72..0000000 --- a/Chapter05/onlineStore/resources/views/welcome.blade.php +++ /dev/null @@ -1,7 +0,0 @@ -@extends('layouts.app') -@section('title', 'Home Page - Online Store') -@section('content') -
    - Welcome to the application -
    -@endsection \ No newline at end of file diff --git a/Chapter05/onlineStore/routes/api.php b/Chapter05/onlineStore/routes/api.php deleted file mode 100644 index eb6fa48..0000000 --- a/Chapter05/onlineStore/routes/api.php +++ /dev/null @@ -1,19 +0,0 @@ -get('/user', function (Request $request) { - return $request->user(); -}); diff --git a/Chapter05/onlineStore/routes/channels.php b/Chapter05/onlineStore/routes/channels.php deleted file mode 100644 index 5d451e1..0000000 --- a/Chapter05/onlineStore/routes/channels.php +++ /dev/null @@ -1,18 +0,0 @@ -id === (int) $id; -}); diff --git a/Chapter05/onlineStore/routes/console.php b/Chapter05/onlineStore/routes/console.php deleted file mode 100644 index e05f4c9..0000000 --- a/Chapter05/onlineStore/routes/console.php +++ /dev/null @@ -1,19 +0,0 @@ -comment(Inspiring::quote()); -})->purpose('Display an inspiring quote'); diff --git a/Chapter05/onlineStore/routes/web.php b/Chapter05/onlineStore/routes/web.php deleted file mode 100644 index b130397..0000000 --- a/Chapter05/onlineStore/routes/web.php +++ /dev/null @@ -1,18 +0,0 @@ -make(Kernel::class)->bootstrap(); - - return $app; - } -} diff --git a/Chapter05/onlineStore/tests/Feature/ExampleTest.php b/Chapter05/onlineStore/tests/Feature/ExampleTest.php deleted file mode 100644 index 78ccc21..0000000 --- a/Chapter05/onlineStore/tests/Feature/ExampleTest.php +++ /dev/null @@ -1,21 +0,0 @@ -get('/'); - - $response->assertStatus(200); - } -} diff --git a/Chapter05/onlineStore/tests/TestCase.php b/Chapter05/onlineStore/tests/TestCase.php deleted file mode 100644 index 2932d4a..0000000 --- a/Chapter05/onlineStore/tests/TestCase.php +++ /dev/null @@ -1,10 +0,0 @@ -assertTrue(true); - } -} diff --git a/Chapter05/onlineStore/webpack.mix.js b/Chapter05/onlineStore/webpack.mix.js deleted file mode 100644 index 2a22dc1..0000000 --- a/Chapter05/onlineStore/webpack.mix.js +++ /dev/null @@ -1,17 +0,0 @@ -const mix = require('laravel-mix'); - -/* - |-------------------------------------------------------------------------- - | Mix Asset Management - |-------------------------------------------------------------------------- - | - | Mix provides a clean, fluent API for defining some Webpack build steps - | for your Laravel applications. By default, we are compiling the CSS - | file for the application as well as bundling up all the JS files. - | - */ - -mix.js('resources/js/app.js', 'public/js') - .postCss('resources/css/app.css', 'public/css', [ - // - ]); diff --git a/Chapter06/onlineStore/.editorconfig b/Chapter06/onlineStore/.editorconfig deleted file mode 100644 index 1671c9b..0000000 --- a/Chapter06/onlineStore/.editorconfig +++ /dev/null @@ -1,18 +0,0 @@ -root = true - -[*] -charset = utf-8 -end_of_line = lf -insert_final_newline = true -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true - -[*.md] -trim_trailing_whitespace = false - -[*.{yml,yaml}] -indent_size = 2 - -[docker-compose.yml] -indent_size = 4 diff --git a/Chapter06/onlineStore/.env.example b/Chapter06/onlineStore/.env.example deleted file mode 100644 index 8510237..0000000 --- a/Chapter06/onlineStore/.env.example +++ /dev/null @@ -1,52 +0,0 @@ -APP_NAME=Laravel -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=laravel -DB_USERNAME=root -DB_PASSWORD= - -BROADCAST_DRIVER=log -CACHE_DRIVER=file -FILESYSTEM_DISK=local -QUEUE_CONNECTION=sync -SESSION_DRIVER=file -SESSION_LIFETIME=120 - -MEMCACHED_HOST=127.0.0.1 - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -MAIL_MAILER=smtp -MAIL_HOST=mailhog -MAIL_PORT=1025 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS=null -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_APP_CLUSTER=mt1 - -MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/Chapter06/onlineStore/.gitattributes b/Chapter06/onlineStore/.gitattributes deleted file mode 100644 index 510d996..0000000 --- a/Chapter06/onlineStore/.gitattributes +++ /dev/null @@ -1,10 +0,0 @@ -* text=auto - -*.blade.php diff=html -*.css diff=css -*.html diff=html -*.md diff=markdown -*.php diff=php - -/.github export-ignore -CHANGELOG.md export-ignore diff --git a/Chapter06/onlineStore/.gitignore b/Chapter06/onlineStore/.gitignore deleted file mode 100644 index eb003b0..0000000 --- a/Chapter06/onlineStore/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -/node_modules -/public/hot -/public/storage -/storage/*.key -/vendor -.env -.env.backup -.phpunit.result.cache -docker-compose.override.yml -Homestead.json -Homestead.yaml -npm-debug.log -yarn-error.log -/.idea -/.vscode diff --git a/Chapter06/onlineStore/.styleci.yml b/Chapter06/onlineStore/.styleci.yml deleted file mode 100644 index 679a631..0000000 --- a/Chapter06/onlineStore/.styleci.yml +++ /dev/null @@ -1,13 +0,0 @@ -php: - preset: laravel - version: 8 - disabled: - - no_unused_imports - finder: - not-name: - - index.php -js: - finder: - not-name: - - webpack.mix.js -css: true diff --git a/Chapter06/onlineStore/README.md b/Chapter06/onlineStore/README.md deleted file mode 100644 index f171eca..0000000 --- a/Chapter06/onlineStore/README.md +++ /dev/null @@ -1,64 +0,0 @@ -

    - -

    -Build Status -Total Downloads -Latest Stable Version -License -

    - -## About Laravel - -Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as: - -- [Simple, fast routing engine](https://laravel.com/docs/routing). -- [Powerful dependency injection container](https://laravel.com/docs/container). -- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage. -- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent). -- Database agnostic [schema migrations](https://laravel.com/docs/migrations). -- [Robust background job processing](https://laravel.com/docs/queues). -- [Real-time event broadcasting](https://laravel.com/docs/broadcasting). - -Laravel is accessible, powerful, and provides tools required for large, robust applications. - -## Learning Laravel - -Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework. - -If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 2000 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library. - -## Laravel Sponsors - -We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell). - -### Premium Partners - -- **[Vehikl](https://vehikl.com/)** -- **[Tighten Co.](https://tighten.co)** -- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** -- **[64 Robots](https://64robots.com)** -- **[Cubet Techno Labs](https://cubettech.com)** -- **[Cyber-Duck](https://cyber-duck.co.uk)** -- **[Many](https://www.many.co.uk)** -- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)** -- **[DevSquad](https://devsquad.com)** -- **[Curotec](https://www.curotec.com/services/technologies/laravel/)** -- **[OP.GG](https://op.gg)** -- **[WebReinvent](https://webreinvent.com/?utm_source=laravel&utm_medium=github&utm_campaign=patreon-sponsors)** -- **[Lendio](https://lendio.com)** - -## Contributing - -Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions). - -## Code of Conduct - -In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). - -## Security Vulnerabilities - -If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed. - -## License - -The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). diff --git a/Chapter06/onlineStore/app/Console/Kernel.php b/Chapter06/onlineStore/app/Console/Kernel.php deleted file mode 100644 index d8bc1d2..0000000 --- a/Chapter06/onlineStore/app/Console/Kernel.php +++ /dev/null @@ -1,32 +0,0 @@ -command('inspire')->hourly(); - } - - /** - * Register the commands for the application. - * - * @return void - */ - protected function commands() - { - $this->load(__DIR__.'/Commands'); - - require base_path('routes/console.php'); - } -} diff --git a/Chapter06/onlineStore/app/Exceptions/Handler.php b/Chapter06/onlineStore/app/Exceptions/Handler.php deleted file mode 100644 index 8e7fbd1..0000000 --- a/Chapter06/onlineStore/app/Exceptions/Handler.php +++ /dev/null @@ -1,41 +0,0 @@ -> - */ - protected $dontReport = [ - // - ]; - - /** - * A list of the inputs that are never flashed for validation exceptions. - * - * @var array - */ - protected $dontFlash = [ - 'current_password', - 'password', - 'password_confirmation', - ]; - - /** - * Register the exception handling callbacks for the application. - * - * @return void - */ - public function register() - { - $this->reportable(function (Throwable $e) { - // - }); - } -} diff --git a/Chapter06/onlineStore/app/Http/Controllers/Controller.php b/Chapter06/onlineStore/app/Http/Controllers/Controller.php deleted file mode 100644 index a0a2a8a..0000000 --- a/Chapter06/onlineStore/app/Http/Controllers/Controller.php +++ /dev/null @@ -1,13 +0,0 @@ -with("viewData", $viewData); - } - - public function about() - { - $data1 = "About us - Online Store"; - $data2 = "About us"; - $description = "This is an about page ..."; - $author = "Developed by: Your Name"; - return view('home.about')->with("title", $data1) - ->with("subtitle", $data2) - ->with("description", $description) - ->with("author", $author); - - } -} diff --git a/Chapter06/onlineStore/app/Http/Kernel.php b/Chapter06/onlineStore/app/Http/Kernel.php deleted file mode 100644 index d3722c2..0000000 --- a/Chapter06/onlineStore/app/Http/Kernel.php +++ /dev/null @@ -1,67 +0,0 @@ - - */ - protected $middleware = [ - // \App\Http\Middleware\TrustHosts::class, - \App\Http\Middleware\TrustProxies::class, - \Fruitcake\Cors\HandleCors::class, - \App\Http\Middleware\PreventRequestsDuringMaintenance::class, - \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, - \App\Http\Middleware\TrimStrings::class, - \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, - ]; - - /** - * The application's route middleware groups. - * - * @var array> - */ - protected $middlewareGroups = [ - 'web' => [ - \App\Http\Middleware\EncryptCookies::class, - \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, - \Illuminate\Session\Middleware\StartSession::class, - // \Illuminate\Session\Middleware\AuthenticateSession::class, - \Illuminate\View\Middleware\ShareErrorsFromSession::class, - \App\Http\Middleware\VerifyCsrfToken::class, - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - - 'api' => [ - // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, - 'throttle:api', - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - ]; - - /** - * The application's route middleware. - * - * These middleware may be assigned to groups or used individually. - * - * @var array - */ - protected $routeMiddleware = [ - 'auth' => \App\Http\Middleware\Authenticate::class, - 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::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, - 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, - 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, - 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, - ]; -} diff --git a/Chapter06/onlineStore/app/Http/Middleware/Authenticate.php b/Chapter06/onlineStore/app/Http/Middleware/Authenticate.php deleted file mode 100644 index 704089a..0000000 --- a/Chapter06/onlineStore/app/Http/Middleware/Authenticate.php +++ /dev/null @@ -1,21 +0,0 @@ -expectsJson()) { - return route('login'); - } - } -} diff --git a/Chapter06/onlineStore/app/Http/Middleware/EncryptCookies.php b/Chapter06/onlineStore/app/Http/Middleware/EncryptCookies.php deleted file mode 100644 index 867695b..0000000 --- a/Chapter06/onlineStore/app/Http/Middleware/EncryptCookies.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter06/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/Chapter06/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php deleted file mode 100644 index 74cbd9a..0000000 --- a/Chapter06/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter06/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php b/Chapter06/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php deleted file mode 100644 index a2813a0..0000000 --- a/Chapter06/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php +++ /dev/null @@ -1,32 +0,0 @@ -check()) { - return redirect(RouteServiceProvider::HOME); - } - } - - return $next($request); - } -} diff --git a/Chapter06/onlineStore/app/Http/Middleware/TrimStrings.php b/Chapter06/onlineStore/app/Http/Middleware/TrimStrings.php deleted file mode 100644 index 88cadca..0000000 --- a/Chapter06/onlineStore/app/Http/Middleware/TrimStrings.php +++ /dev/null @@ -1,19 +0,0 @@ - - */ - protected $except = [ - 'current_password', - 'password', - 'password_confirmation', - ]; -} diff --git a/Chapter06/onlineStore/app/Http/Middleware/TrustHosts.php b/Chapter06/onlineStore/app/Http/Middleware/TrustHosts.php deleted file mode 100644 index 7186414..0000000 --- a/Chapter06/onlineStore/app/Http/Middleware/TrustHosts.php +++ /dev/null @@ -1,20 +0,0 @@ - - */ - public function hosts() - { - return [ - $this->allSubdomainsOfApplicationUrl(), - ]; - } -} diff --git a/Chapter06/onlineStore/app/Http/Middleware/TrustProxies.php b/Chapter06/onlineStore/app/Http/Middleware/TrustProxies.php deleted file mode 100644 index 3391630..0000000 --- a/Chapter06/onlineStore/app/Http/Middleware/TrustProxies.php +++ /dev/null @@ -1,28 +0,0 @@ -|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/Chapter06/onlineStore/app/Http/Middleware/VerifyCsrfToken.php b/Chapter06/onlineStore/app/Http/Middleware/VerifyCsrfToken.php deleted file mode 100644 index 9e86521..0000000 --- a/Chapter06/onlineStore/app/Http/Middleware/VerifyCsrfToken.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter06/onlineStore/app/Models/User.php b/Chapter06/onlineStore/app/Models/User.php deleted file mode 100644 index 8996368..0000000 --- a/Chapter06/onlineStore/app/Models/User.php +++ /dev/null @@ -1,44 +0,0 @@ - - */ - 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', - ]; -} diff --git a/Chapter06/onlineStore/app/Providers/AppServiceProvider.php b/Chapter06/onlineStore/app/Providers/AppServiceProvider.php deleted file mode 100644 index ee8ca5b..0000000 --- a/Chapter06/onlineStore/app/Providers/AppServiceProvider.php +++ /dev/null @@ -1,28 +0,0 @@ - - */ - protected $policies = [ - // 'App\Models\Model' => 'App\Policies\ModelPolicy', - ]; - - /** - * Register any authentication / authorization services. - * - * @return void - */ - public function boot() - { - $this->registerPolicies(); - - // - } -} diff --git a/Chapter06/onlineStore/app/Providers/BroadcastServiceProvider.php b/Chapter06/onlineStore/app/Providers/BroadcastServiceProvider.php deleted file mode 100644 index 395c518..0000000 --- a/Chapter06/onlineStore/app/Providers/BroadcastServiceProvider.php +++ /dev/null @@ -1,21 +0,0 @@ -> - */ - protected $listen = [ - Registered::class => [ - SendEmailVerificationNotification::class, - ], - ]; - - /** - * Register any events for your application. - * - * @return void - */ - public function boot() - { - // - } -} diff --git a/Chapter06/onlineStore/app/Providers/RouteServiceProvider.php b/Chapter06/onlineStore/app/Providers/RouteServiceProvider.php deleted file mode 100644 index 7c17d1f..0000000 --- a/Chapter06/onlineStore/app/Providers/RouteServiceProvider.php +++ /dev/null @@ -1,63 +0,0 @@ -configureRateLimiting(); - - $this->routes(function () { - Route::prefix('api') - ->middleware('api') - ->namespace($this->namespace) - ->group(base_path('routes/api.php')); - - Route::middleware('web') - ->namespace($this->namespace) - ->group(base_path('routes/web.php')); - }); - } - - /** - * Configure the rate limiters for the application. - * - * @return void - */ - protected function configureRateLimiting() - { - RateLimiter::for('api', function (Request $request) { - return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); - }); - } -} diff --git a/Chapter06/onlineStore/artisan b/Chapter06/onlineStore/artisan deleted file mode 100644 index 67a3329..0000000 --- a/Chapter06/onlineStore/artisan +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env php -make(Illuminate\Contracts\Console\Kernel::class); - -$status = $kernel->handle( - $input = new Symfony\Component\Console\Input\ArgvInput, - new Symfony\Component\Console\Output\ConsoleOutput -); - -/* -|-------------------------------------------------------------------------- -| Shutdown The Application -|-------------------------------------------------------------------------- -| -| Once Artisan has finished running, we will fire off the shutdown events -| so that any final work may be done by the application before we shut -| down the process. This is the last thing to happen to the request. -| -*/ - -$kernel->terminate($input, $status); - -exit($status); diff --git a/Chapter06/onlineStore/bootstrap/app.php b/Chapter06/onlineStore/bootstrap/app.php deleted file mode 100644 index 037e17d..0000000 --- a/Chapter06/onlineStore/bootstrap/app.php +++ /dev/null @@ -1,55 +0,0 @@ -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/Chapter06/onlineStore/bootstrap/cache/.gitignore b/Chapter06/onlineStore/bootstrap/cache/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter06/onlineStore/bootstrap/cache/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter06/onlineStore/composer.json b/Chapter06/onlineStore/composer.json deleted file mode 100644 index 6913736..0000000 --- a/Chapter06/onlineStore/composer.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "name": "laravel/laravel", - "type": "project", - "description": "The Laravel Framework.", - "keywords": ["framework", "laravel"], - "license": "MIT", - "require": { - "php": "^8.0", - "fruitcake/laravel-cors": "^2.0.5", - "guzzlehttp/guzzle": "^7.2", - "laravel/framework": "^9.0", - "laravel/sanctum": "^2.14", - "laravel/tinker": "^2.7" - }, - "require-dev": { - "fakerphp/faker": "^1.9.1", - "laravel/sail": "^1.0.1", - "mockery/mockery": "^1.4.4", - "nunomaduro/collision": "^6.1", - "phpunit/phpunit": "^9.5.10", - "spatie/laravel-ignition": "^1.0" - }, - "autoload": { - "psr-4": { - "App\\": "app/", - "Database\\Factories\\": "database/factories/", - "Database\\Seeders\\": "database/seeders/" - } - }, - "autoload-dev": { - "psr-4": { - "Tests\\": "tests/" - } - }, - "scripts": { - "post-autoload-dump": [ - "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", - "@php artisan package:discover --ansi" - ], - "post-update-cmd": [ - "@php artisan vendor:publish --tag=laravel-assets --ansi --force" - ], - "post-root-package-install": [ - "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" - ], - "post-create-project-cmd": [ - "@php artisan key:generate --ansi" - ] - }, - "extra": { - "laravel": { - "dont-discover": [] - } - }, - "config": { - "optimize-autoloader": true, - "preferred-install": "dist", - "sort-packages": true - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/Chapter06/onlineStore/composer.lock b/Chapter06/onlineStore/composer.lock deleted file mode 100644 index 64d5967..0000000 --- a/Chapter06/onlineStore/composer.lock +++ /dev/null @@ -1,7804 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "65e85f9f959c0b087110331754d451cf", - "packages": [ - { - "name": "asm89/stack-cors", - "version": "v2.1.1", - "source": { - "type": "git", - "url": "https://github.com/asm89/stack-cors.git", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4|^5|^6" - }, - "require-dev": { - "phpunit/phpunit": "^7|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "psr-4": { - "Asm89\\Stack\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alexander", - "email": "iam.asm89@gmail.com" - } - ], - "description": "Cross-origin resource sharing library and stack middleware", - "homepage": "https://github.com/asm89/stack-cors", - "keywords": [ - "cors", - "stack" - ], - "support": { - "issues": "https://github.com/asm89/stack-cors/issues", - "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" - }, - "time": "2022-01-18T09:12:03+00:00" - }, - { - "name": "brick/math", - "version": "0.9.3", - "source": { - "type": "git", - "url": "https://github.com/brick/math.git", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", - "vimeo/psalm": "4.9.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Brick\\Math\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Arbitrary-precision arithmetic library", - "keywords": [ - "Arbitrary-precision", - "BigInteger", - "BigRational", - "arithmetic", - "bigdecimal", - "bignum", - "brick", - "math" - ], - "support": { - "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.9.3" - }, - "funding": [ - { - "url": "https://github.com/BenMorel", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/brick/math", - "type": "tidelift" - } - ], - "time": "2021-08-15T20:50:18+00:00" - }, - { - "name": "dflydev/dot-access-data", - "version": "v3.0.1", - "source": { - "type": "git", - "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c", - "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": "^3.14" - }, - "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.1" - }, - "time": "2021-08-13T13:06:58+00:00" - }, - { - "name": "doctrine/inflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "vimeo/psalm": "^4.10" - }, - "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.4" - }, - "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": "2021-10-22T20:16:43+00:00" - }, - { - "name": "doctrine/lexer", - "version": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" - } - }, - "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/1.2.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%2Flexer", - "type": "tidelift" - } - ], - "time": "2022-01-12T08:27:12+00:00" - }, - { - "name": "dragonmantank/cron-expression", - "version": "v3.3.1", - "source": { - "type": "git", - "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "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.1" - }, - "funding": [ - { - "url": "https://github.com/dragonmantank", - "type": "github" - } - ], - "time": "2022-01-18T15:43:28+00:00" - }, - { - "name": "egulias/email-validator", - "version": "3.1.2", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ee0db30118f661fb166bcffbf5d82032df484697", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^1.2", - "php": ">=7.2", - "symfony/polyfill-intl-idn": "^1.15" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^8.5.8|^9.3.3", - "vimeo/psalm": "^4" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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/3.1.2" - }, - "funding": [ - { - "url": "https://github.com/egulias", - "type": "github" - } - ], - "time": "2021-10-11T09:18:27+00:00" - }, - { - "name": "fruitcake/laravel-cors", - "version": "v2.0.5", - "source": { - "type": "git", - "url": "https://github.com/fruitcake/laravel-cors.git", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "shasum": "" - }, - "require": { - "asm89/stack-cors": "^2.0.1", - "illuminate/contracts": "^6|^7|^8|^9", - "illuminate/support": "^6|^7|^8|^9", - "php": ">=7.2", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4.3.4|^5|^6" - }, - "require-dev": { - "laravel/framework": "^6|^7.24|^8", - "orchestra/testbench-dusk": "^4|^5|^6|^7", - "phpunit/phpunit": "^6|^7|^8|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - }, - "laravel": { - "providers": [ - "Fruitcake\\Cors\\CorsServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Fruitcake\\Cors\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fruitcake", - "homepage": "https://fruitcake.nl" - }, - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", - "keywords": [ - "api", - "cors", - "crossdomain", - "laravel" - ], - "support": { - "issues": "https://github.com/fruitcake/laravel-cors/issues", - "source": "https://github.com/fruitcake/laravel-cors/tree/v2.0.5" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "time": "2022-01-03T14:53:04+00:00" - }, - { - "name": "graham-campbell/result-type", - "version": "v1.0.4", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "0690bde05318336c7221785f2a932467f98b64ca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/0690bde05318336c7221785f2a932467f98b64ca", - "reference": "0690bde05318336c7221785f2a932467f98b64ca", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "phpoption/phpoption": "^1.8" - }, - "require-dev": { - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", - "type": "tidelift" - } - ], - "time": "2021-11-21T21:41:47+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "7.4.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.8.3 || ^2.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.4.1", - "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.5 || ^9.3.5", - "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": { - "branch-alias": { - "dev-master": "7.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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.4.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": "2021-12-06T18:43:05+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "1.5.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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/1.5.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "time": "2021-10-22T20:56:57+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.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.4.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.8 || ^9.3.10" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "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.1.0" - }, - "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": "2021-10-06T17:43:30+00:00" - }, - { - "name": "laravel/framework", - "version": "v9.0.1", - "source": { - "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "shasum": "" - }, - "require": { - "doctrine/inflector": "^2.0", - "dragonmantank/cron-expression": "^3.1", - "egulias/email-validator": "^3.1", - "ext-mbstring": "*", - "ext-openssl": "*", - "laravel/serializable-closure": "^1.0", - "league/commonmark": "^2.2", - "league/flysystem": "^3.0", - "monolog/monolog": "^2.0", - "nesbot/carbon": "^2.53.1", - "php": "^8.0.2", - "psr/container": "^1.1.1|^2.0.1", - "psr/log": "^1.0|^2.0|^3.0", - "psr/simple-cache": "^1.0|^2.0|^3.0", - "ramsey/uuid": "^4.2.2", - "symfony/console": "^6.0", - "symfony/error-handler": "^6.0", - "symfony/finder": "^6.0", - "symfony/http-foundation": "^6.0", - "symfony/http-kernel": "^6.0", - "symfony/mailer": "^6.0", - "symfony/mime": "^6.0", - "symfony/process": "^6.0", - "symfony/routing": "^6.0", - "symfony/var-dumper": "^6.0", - "tijsverkoyen/css-to-inline-styles": "^2.2.2", - "vlucas/phpdotenv": "^5.4.1", - "voku/portable-ascii": "^2.0" - }, - "conflict": { - "tightenco/collect": "<5.5.33" - }, - "provide": { - "psr/container-implementation": "1.1|2.0", - "psr/simple-cache-implementation": "1.0|2.0|3.0" - }, - "replace": { - "illuminate/auth": "self.version", - "illuminate/broadcasting": "self.version", - "illuminate/bus": "self.version", - "illuminate/cache": "self.version", - "illuminate/collections": "self.version", - "illuminate/conditionable": "self.version", - "illuminate/config": "self.version", - "illuminate/console": "self.version", - "illuminate/container": "self.version", - "illuminate/contracts": "self.version", - "illuminate/cookie": "self.version", - "illuminate/database": "self.version", - "illuminate/encryption": "self.version", - "illuminate/events": "self.version", - "illuminate/filesystem": "self.version", - "illuminate/hashing": "self.version", - "illuminate/http": "self.version", - "illuminate/log": "self.version", - "illuminate/macroable": "self.version", - "illuminate/mail": "self.version", - "illuminate/notifications": "self.version", - "illuminate/pagination": "self.version", - "illuminate/pipeline": "self.version", - "illuminate/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": { - "aws/aws-sdk-php": "^3.198.1", - "doctrine/dbal": "^2.13.3|^3.1.4", - "fakerphp/faker": "^1.9.2", - "guzzlehttp/guzzle": "^7.2", - "league/flysystem-aws-s3-v3": "^3.0", - "league/flysystem-ftp": "^3.0", - "league/flysystem-sftp-v3": "^3.0", - "mockery/mockery": "^1.4.4", - "orchestra/testbench-core": "^7.0", - "pda/pheanstalk": "^4.0", - "phpstan/phpstan": "^1.0", - "phpunit/phpunit": "^9.5.8", - "predis/predis": "^1.1.9", - "symfony/amazon-mailer": "^6.0", - "symfony/cache": "^6.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.198.1).", - "brianium/paratest": "Required to run tests in parallel (^6.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", - "ext-bcmath": "Required to use the multiple_of validation rule.", - "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.", - "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.2).", - "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-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", - "mockery/mockery": "Required to use mocking (^1.4.4).", - "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).", - "predis/predis": "Required to use the predis connector (^1.1.9).", - "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.0).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^6.0).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.0).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.0).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.0).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.x-dev" - } - }, - "autoload": { - "files": [ - "src/Illuminate/Collections/helpers.php", - "src/Illuminate/Events/functions.php", - "src/Illuminate/Foundation/helpers.php", - "src/Illuminate/Support/helpers.php" - ], - "psr-4": { - "Illuminate\\": "src/Illuminate/", - "Illuminate\\Support\\": [ - "src/Illuminate/Macroable/", - "src/Illuminate/Collections/", - "src/Illuminate/Conditionable/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Laravel Framework.", - "homepage": "https://laravel.com", - "keywords": [ - "framework", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2022-02-09T15:00:05+00:00" - }, - { - "name": "laravel/sanctum", - "version": "v2.14.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/sanctum.git", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/0647a87140c7522e75826cffcadb3ad6e01f71e9", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/contracts": "^6.9|^7.0|^8.0|^9.0", - "illuminate/database": "^6.9|^7.0|^8.0|^9.0", - "illuminate/support": "^6.9|^7.0|^8.0|^9.0", - "php": "^7.2|^8.0" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0", - "phpunit/phpunit": "^8.0|^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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": "2022-01-12T15:07:43+00:00" - }, - { - "name": "laravel/serializable-closure", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/serializable-closure.git", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/65c9faf50d567b65d81764a44526545689e3fe63", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "pestphp/pest": "^1.18", - "phpstan/phpstan": "^0.12.98", - "symfony/var-dumper": "^5.3" - }, - "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": "2022-02-01T16:29:39+00:00" - }, - { - "name": "laravel/tinker", - "version": "v2.7.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/tinker.git", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/5f2f9815b7631b9f586a3de7933c25f9327d4073", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073", - "shasum": "" - }, - "require": { - "illuminate/console": "^6.0|^7.0|^8.0|^9.0", - "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.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", - "phpunit/phpunit": "^8.5.8|^9.3.3" - }, - "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.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.7.0" - }, - "time": "2022-01-10T08:52:49+00:00" - }, - { - "name": "league/commonmark", - "version": "2.2.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/commonmark.git", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "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.15" - }, - "require-dev": { - "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.0", - "commonmark/commonmark.js": "0.30.0", - "composer/package-versions-deprecated": "^1.8", - "erusev/parsedown": "^1.0", - "ext-json": "*", - "github/gfm": "0.29.0", - "michelf/php-markdown": "^1.4", - "phpstan/phpstan": "^0.12.88 || ^1.0.0", - "phpunit/phpunit": "^9.5.5", - "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", - "unleashedtech/php-coding-standard": "^3.1", - "vimeo/psalm": "^4.7.3" - }, - "suggest": { - "symfony/yaml": "v2.3+ required if using the Front Matter extension" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.3-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": "2022-01-25T14:37:33+00:00" - }, - { - "name": "league/config", - "version": "v1.1.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/config.git", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/config/zipball/a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^3.0.1", - "nette/schema": "^1.2", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.90", - "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": "2021-08-14T12:15:32+00:00" - }, - { - "name": "league/flysystem", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9f8b4260031bfef5497477da53dd57b2aaff0e06", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06", - "shasum": "" - }, - "require": { - "ext-json": "*", - "league/mime-type-detection": "^1.0.0", - "php": "^8.0.2" - }, - "conflict": { - "guzzlehttp/guzzle": "<7.0", - "guzzlehttp/ringphp": "<1.1.1", - "symfony/http-client": "<5.2" - }, - "require-dev": { - "async-aws/s3": "^1.5", - "async-aws/simple-s3": "^1.0", - "aws/aws-sdk-php": "^3.198.1", - "composer/semver": "^3.0", - "ext-fileinfo": "*", - "ext-ftp": "*", - "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.5", - "google/cloud-storage": "^1.23", - "phpseclib/phpseclib": "^2.0", - "phpstan/phpstan": "^0.12.26", - "phpunit/phpunit": "^9.5.11", - "sabre/dav": "^4.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.0.3" - }, - "funding": [ - { - "url": "https://offset.earth/frankdejonge", - "type": "custom" - }, - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2022-01-31T19:41:04+00:00" - }, - { - "name": "league/mime-type-detection", - "version": "1.9.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/aa70e813a6ad3d1558fc927863d47309b4c23e69", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.2", - "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" - }, - "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.9.0" - }, - "funding": [ - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2021-11-21T11:48:40+00:00" - }, - { - "name": "monolog/monolog", - "version": "2.3.5", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd4380d6fc37626e2f799f29d91195040137eba9", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "provide": { - "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7", - "graylog2/gelf-php": "^1.4.2", - "mongodb/mongodb": "^1.8", - "php-amqplib/php-amqplib": "~2.4 || ^3", - "php-console/php-console": "^3.1.3", - "phpspec/prophecy": "^1.6.1", - "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5", - "predis/predis": "^1.1", - "rollbar/rollbar": "^1.3", - "ruflin/elastica": ">=0.90@dev", - "swiftmailer/swiftmailer": "^5.3|^6.0" - }, - "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", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "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": "2.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/2.3.5" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" - } - ], - "time": "2021-10-01T21:08:31+00:00" - }, - { - "name": "nesbot/carbon", - "version": "2.56.0", - "source": { - "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1.8 || ^8.0", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "doctrine/dbal": "^2.0 || ^3.0", - "doctrine/orm": "^2.7", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "phpmd/phpmd": "^2.9", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.54 || ^1.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.14", - "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://opencollective.com/Carbon", - "type": "open_collective" - }, - { - "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", - "type": "tidelift" - } - ], - "time": "2022-01-21T17:08:38+00:00" - }, - { - "name": "nette/schema", - "version": "v1.2.2", - "source": { - "type": "git", - "url": "https://github.com/nette/schema.git", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/9a39cef03a5b34c7de64f551538cbba05c2be5df", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df", - "shasum": "" - }, - "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": ">=7.1 <8.2" - }, - "require-dev": { - "nette/tester": "^2.3 || ^2.4", - "phpstan/phpstan-nette": "^0.12", - "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.2" - }, - "time": "2021-10-15T11:40:02+00:00" - }, - { - "name": "nette/utils", - "version": "v3.2.7", - "source": { - "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/0af4e3de4df9f1543534beab255ccf459e7a2c99", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99", - "shasum": "" - }, - "require": { - "php": ">=7.2 <8.2" - }, - "conflict": { - "nette/di": "<3.0.6" - }, - "require-dev": { - "nette/tester": "~2.0", - "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.3" - }, - "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()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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 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/v3.2.7" - }, - "time": "2022-01-24T11:29:14+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.13.2", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", - "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.13.2" - }, - "time": "2021-11-30T19:35:32+00:00" - }, - { - "name": "phpoption/phpoption", - "version": "1.8.1", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-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.8.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", - "type": "tidelift" - } - ], - "time": "2021-12-04T23:24:31+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.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.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": "http://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/tree/master" - }, - "time": "2020-06-29T06:28:15+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.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": "http://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/master" - }, - "time": "2019-04-30T12:38:16+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.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": "http://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/master" - }, - "time": "2016-08-06T14:39: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.1", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "570292577277f06f590635381a7f761a6cf4f026" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/570292577277f06f590635381a7f761a6cf4f026", - "reference": "570292577277f06f590635381a7f761a6cf4f026", - "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" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "3.17.05.02" - }, - "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.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." - }, - "bin": [ - "bin/psysh" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "0.11.x-dev" - } - }, - "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.1" - }, - "time": "2022-01-03T13:58:38+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": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/ramsey/collection.git", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "shasum": "" - }, - "require": { - "php": "^7.3 || ^8", - "symfony/polyfill-php81": "^1.23" - }, - "require-dev": { - "captainhook/captainhook": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "ergebnis/composer-normalize": "^2.6", - "fakerphp/faker": "^1.5", - "hamcrest/hamcrest-php": "^2", - "jangregor/phpstan-prophecy": "^0.8", - "mockery/mockery": "^1.3", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1", - "phpstan/phpstan": "^0.12.32", - "phpstan/phpstan-mockery": "^0.12.5", - "phpstan/phpstan-phpunit": "^0.12.11", - "phpunit/phpunit": "^8.5 || ^9", - "psy/psysh": "^0.10.4", - "slevomat/coding-standard": "^6.3", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.4" - }, - "type": "library", - "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/1.2.2" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "time": "2021-10-10T03:01:02+00:00" - }, - { - "name": "ramsey/uuid", - "version": "4.2.3", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "shasum": "" - }, - "require": { - "brick/math": "^0.8 || ^0.9", - "ext-json": "*", - "php": "^7.2 || ^8.0", - "ramsey/collection": "^1.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php80": "^1.14" - }, - "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", - "moontoast/math": "^1.1", - "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.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-mockery": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^8.5 || ^9", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" - }, - "suggest": { - "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-ctype": "Enables faster processing of character classification using ctype functions.", - "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": { - "branch-alias": { - "dev-main": "4.x-dev" - }, - "captainhook": { - "force-install": true - } - }, - "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "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.2.3" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2021-09-25T23:10:38+00:00" - }, - { - "name": "symfony/console", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/22e8efd019c3270c4f79376234a3f8752cd25490", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.4|^6.0" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/css-selector", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/1955d595c12c111629cc814d3f2a2ff13580508a", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a", - "shasum": "" - }, - "require": { - "php": ">=8.0.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/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-11-01T23:48:49+00:00" - }, - { - "name": "symfony/error-handler", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/20343b3bad7ebafa38138ddcb97290a24722b57b", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" - }, - "bin": [ - "Resources/bin/patch-type-declarations" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to manage errors and ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6472ea2dd415e925b90ca82be64b8bc6157f3934", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/event-dispatcher-contracts": "^2|^3" - }, - "conflict": { - "symfony/dependency-injection": "<5.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^5.4|^6.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/aa5422287b75594b90ee9cd807caf8f0df491385", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/event-dispatcher": "^1" - }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-07-15T12:33:35+00:00" - }, - { - "name": "symfony/finder", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/8661b74dbabc23223f38c9b99d3f8ade71170430", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ad157299ced81a637fade1efcadd688d6deba5c1", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1" - }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/cache": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0" - }, - "suggest": { - "symfony/mime": "To use the file extension guesser" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v6.0.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/error-handler": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", - "symfony/twig-bridge": "<5.4", - "symfony/validator": "<5.4", - "twig/twig": "<2.13" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/process": "^5.4|^6.0", - "symfony/routing": "^5.4|^6.0", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-29T18:12:46+00:00" - }, - { - "name": "symfony/mailer", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mailer.git", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "shasum": "" - }, - "require": { - "egulias/email-validator": "^2.1.10|^3", - "php": ">=8.0.2", - "psr/event-dispatcher": "^1", - "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3" - }, - "conflict": { - "symfony/http-kernel": "<5.4" - }, - "require-dev": { - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/messenger": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/mime", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/2cd9601efd040e56f43360daa68f3c6b0534923a", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "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" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "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.24.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": "2021-10-20T20:35:02+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-11-23T21:10:46+00:00" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44", - "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.23-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.24.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": "2021-09-14T14:02:44+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.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": "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.24.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": "2021-11-30T18:21:41+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-05-27T09:17:38+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:33+00:00" - }, - { - "name": "symfony/polyfill-php81", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:11+00:00" - }, - { - "name": "symfony/process", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/298ed357274c1868c20a0061df256a1250a6c4af", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/routing", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/yaml": "<5.4" - }, - "require-dev": { - "doctrine/annotations": "^1.12", - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/36715ebf9fb9db73db0cb24263c79077c6fe8603", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/container": "^2.0" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "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.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": "2021-11-04T17:53:12+00:00" - }, - { - "name": "symfony/string", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/522144f0c4c004c80d56fa47e40e17028e2eefc2", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.0" - }, - "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/translation-contracts": "^2.0|^3.0", - "symfony/var-exporter": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "files": [ - "Resources/functions.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 an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/translation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/71bb15335798f8c4da110911bcf2d2fead7a430d", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.3|^3.0" - }, - "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" - }, - "provide": { - "symfony/translation-implementation": "2.3|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-07T00:29:03+00:00" - }, - { - "name": "symfony/translation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "suggest": { - "symfony/translation-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - } - }, - "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.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": "2021-09-07T12:43:40+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7b701676fc64f9ef11f9b4870f16b48f66be4834", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<5.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-17T16:30:44+00:00" - }, - { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.4", - "source": { - "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" - } - ], - "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", - "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "support": { - "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" - }, - "time": "2021-12-08T09:12:39+00:00" - }, - { - "name": "vlucas/phpdotenv", - "version": "v5.4.1", - "source": { - "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", - "shasum": "" - }, - "require": { - "ext-pcre": "*", - "graham-campbell/result-type": "^1.0.2", - "php": "^7.1.3 || ^8.0", - "phpoption/phpoption": "^1.8", - "symfony/polyfill-ctype": "^1.23", - "symfony/polyfill-mbstring": "^1.23.1", - "symfony/polyfill-php80": "^1.23.1" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" - }, - "suggest": { - "ext-filter": "Required to use the boolean validator." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.4-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.4.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", - "type": "tidelift" - } - ], - "time": "2021-12-12T23:22:04+00:00" - }, - { - "name": "voku/portable-ascii", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/voku/portable-ascii.git", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/9bd89e83cecdf8c37b64909454249eaed98b2c89", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89", - "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.0" - }, - "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-01-24T18:59:03+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "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.10.0" - }, - "time": "2021-03-09T10:59:23+00:00" - } - ], - "packages-dev": [ - { - "name": "doctrine/instantiator", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.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%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2020-11-10T18:47:58+00:00" - }, - { - "name": "facade/ignition-contracts", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/facade/ignition-contracts.git", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^v2.15.8", - "phpunit/phpunit": "^9.3.11", - "vimeo/psalm": "^3.17.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Facade\\IgnitionContracts\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://flareapp.io", - "role": "Developer" - } - ], - "description": "Solution contracts for Ignition", - "homepage": "https://github.com/facade/ignition-contracts", - "keywords": [ - "contracts", - "flare", - "ignition" - ], - "support": { - "issues": "https://github.com/facade/ignition-contracts/issues", - "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" - }, - "time": "2020-10-16T08:27:54+00:00" - }, - { - "name": "fakerphp/faker", - "version": "v1.19.0", - "source": { - "type": "git", - "url": "https://github.com/FakerPHP/Faker.git", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^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": "*", - "symfony/phpunit-bridge": "^4.4 || ^5.2" - }, - "suggest": { - "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", - "ext-curl": "Required by Faker\\Provider\\Image to download images.", - "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", - "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.19-dev" - } - }, - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "François Zaninotto" - } - ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], - "support": { - "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0" - }, - "time": "2022-02-02T17:38:57+00:00" - }, - { - "name": "filp/whoops", - "version": "2.14.5", - "source": { - "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "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.14.5" - }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "time": "2022-01-07T12:00:00+00:00" - }, - { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "shasum": "" - }, - "require": { - "php": "^5.3|^7.0|^8.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" - }, - "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "classmap": [ - "hamcrest" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "This is the PHP port of Hamcrest Matchers", - "keywords": [ - "test" - ], - "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" - }, - "time": "2020-07-09T08:09:16+00:00" - }, - { - "name": "laravel/sail", - "version": "v1.13.2", - "source": { - "type": "git", - "url": "https://github.com/laravel/sail.git", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.0|^9.0", - "illuminate/contracts": "^8.0|^9.0", - "illuminate/support": "^8.0|^9.0", - "php": "^7.3|^8.0" - }, - "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": "2022-02-08T14:14:12+00:00" - }, - { - "name": "mockery/mockery", - "version": "1.5.0", - "source": { - "type": "git", - "url": "https://github.com/mockery/mockery.git", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "shasum": "" - }, - "require": { - "hamcrest/hamcrest-php": "^2.0.1", - "lib-pcre": ">=7.0", - "php": "^7.3 || ^8.0" - }, - "conflict": { - "phpunit/phpunit": "<8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-0": { - "Mockery": "library/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" - } - ], - "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": { - "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.5.0" - }, - "time": "2022-01-20T13:18:17+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.10.2", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "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.10.2" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2020-11-13T09:40:50+00:00" - }, - { - "name": "nunomaduro/collision", - "version": "v6.1.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/collision.git", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "shasum": "" - }, - "require": { - "facade/ignition-contracts": "^1.0.2", - "filp/whoops": "^2.14.5", - "php": "^8.0.0", - "symfony/console": "^6.0.2" - }, - "require-dev": { - "brianium/paratest": "^6.4.1", - "laravel/framework": "^9.0", - "nunomaduro/larastan": "^1.0.2", - "nunomaduro/mock-final-classes": "^1.1.0", - "orchestra/testbench": "^7.0.0", - "phpunit/phpunit": "^9.5.11" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "6.x-dev" - }, - "laravel": { - "providers": [ - "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" - ] - } - }, - "autoload": { - "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": "2022-01-18T17:49:08+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.1.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/15a90844ad40f127afd244c0cad228de2a80052a", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a", - "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.1.1" - }, - "time": "2022-02-07T21:56:48+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.6.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "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.6.0" - }, - "time": "2022-01-04T19:58:01+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" - }, - "time": "2021-12-08T12:19:24+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "9.2.10", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d5850aaf931743067f4bfc1ae4cbd06468400687", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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 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", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.10" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-05T09:12:13+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "3.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-02T12:48:52+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "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/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:58:55+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T05:33:50+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.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/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:16:10+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "9.5.13", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/597cb647654ede35e43b137926dfdfef0fb11743", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.3.1", - "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": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.7", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", - "sebastian/version": "^3.0.2" - }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.13" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-01-24T07:33:35+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:08:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "1.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:08:54+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:30:19+00:00" - }, - { - "name": "sebastian/comparator", - "version": "4.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:49:45+00:00" - }, - { - "name": "sebastian/complexity", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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 calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:52:27+00:00" - }, - { - "name": "sebastian/diff", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:10:38+00:00" - }, - { - "name": "sebastian/environment", - "version": "5.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-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": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:52:38+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "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", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-11-11T14:18:36+00:00" - }, - { - "name": "sebastian/global-state", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-11T13:31:12+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-28T06:42:11+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "http://www.github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:17:30+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:45:17+00:00" - }, - { - "name": "sebastian/type", - "version": "2.3.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-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/2.3.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-15T12:49:02+00:00" - }, - { - "name": "sebastian/version", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:39:44+00:00" - }, - { - "name": "spatie/backtrace", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/backtrace.git", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "ext-json": "*", - "phpunit/phpunit": "^9.3", - "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": { - "issues": "https://github.com/spatie/backtrace/issues", - "source": "https://github.com/spatie/backtrace/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/sponsors/spatie", - "type": "github" - }, - { - "url": "https://spatie.be/open-source/support-us", - "type": "other" - } - ], - "time": "2021-11-09T10:57:15+00:00" - }, - { - "name": "spatie/flare-client-php", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/flare-client-php.git", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "shasum": "" - }, - "require": { - "illuminate/pipeline": "^8.0|^9.0", - "php": "^8.0", - "spatie/backtrace": "^1.2", - "symfony/http-foundation": "^5.0|^6.0", - "symfony/mime": "^5.2|^6.0", - "symfony/process": "^5.2|^6.0", - "symfony/var-dumper": "^5.2|^6.0" - }, - "require-dev": { - "dms/phpunit-arraysubset-asserts": "^0.3.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/phpunit-snapshot-assertions": "^4.0" - }, - "type": "library", - "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.0.1" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2022-02-04T15:21:00+00:00" - }, - { - "name": "spatie/ignition", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/spatie/ignition.git", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/d2d5ba823af3004268556e87dfc94449e4159f5a", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "monolog/monolog": "^2.0", - "php": "^8.0", - "spatie/flare-client-php": "^1.0", - "symfony/console": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "mockery/mockery": "^1.4", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/ray": "^1.32", - "symfony/process": "^5.4|^6.0" - }, - "type": "library", - "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": "2022-01-19T12:57:41+00:00" - }, - { - "name": "spatie/laravel-ignition", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/68250225a9f83b086462c2af1b1139dfde48fbd2", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*", - "illuminate/support": "^8.77|^9.0", - "monolog/monolog": "^2.3", - "php": "^8.0", - "spatie/flare-client-php": "^1.0.1", - "spatie/ignition": "^1.0", - "symfony/console": "^5.0|^6.0", - "symfony/var-dumper": "^5.0|^6.0" - }, - "require-dev": { - "filp/whoops": "^2.14", - "livewire/livewire": "^2.8|dev-develop", - "mockery/mockery": "^1.4", - "nunomaduro/larastan": "^1.0", - "orchestra/testbench": "^6.23|^7.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/laravel-ray": "^1.27" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Spatie\\LaravelIgnition\\IgnitionServiceProvider" - ], - "aliases": { - "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" - } - } - }, - "autoload": { - "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": "2022-02-04T15:25:56+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2021-07-28T10:34:58+00:00" - } - ], - "aliases": [], - "minimum-stability": "dev", - "stability-flags": [], - "prefer-stable": true, - "prefer-lowest": false, - "platform": { - "php": "^8.0" - }, - "platform-dev": [], - "plugin-api-version": "2.1.0" -} diff --git a/Chapter06/onlineStore/config/app.php b/Chapter06/onlineStore/config/app.php deleted file mode 100644 index 1941d7c..0000000 --- a/Chapter06/onlineStore/config/app.php +++ /dev/null @@ -1,197 +0,0 @@ - env('APP_NAME', 'Laravel'), - - /* - |-------------------------------------------------------------------------- - | Application Environment - |-------------------------------------------------------------------------- - | - | This value determines the "environment" your application is currently - | running in. This may determine how you prefer to configure various - | services the application utilizes. Set this in your ".env" file. - | - */ - - 'env' => env('APP_ENV', 'production'), - - /* - |-------------------------------------------------------------------------- - | Application Debug Mode - |-------------------------------------------------------------------------- - | - | When your application is in debug mode, detailed error messages with - | stack traces will be shown on every error that occurs within your - | application. If disabled, a simple generic error page is shown. - | - */ - - 'debug' => (bool) env('APP_DEBUG', false), - - /* - |-------------------------------------------------------------------------- - | Application URL - |-------------------------------------------------------------------------- - | - | This URL is used by the console to properly generate URLs when using - | the Artisan command line tool. You should set this to the root of - | your application so that it is used when running Artisan tasks. - | - */ - - 'url' => env('APP_URL', 'http://localhost'), - - 'asset_url' => env('ASSET_URL', null), - - /* - |-------------------------------------------------------------------------- - | 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', - - /* - |-------------------------------------------------------------------------- - | 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' => [ - - /* - * Laravel Framework Service Providers... - */ - Illuminate\Auth\AuthServiceProvider::class, - Illuminate\Broadcasting\BroadcastServiceProvider::class, - Illuminate\Bus\BusServiceProvider::class, - Illuminate\Cache\CacheServiceProvider::class, - Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, - Illuminate\Cookie\CookieServiceProvider::class, - Illuminate\Database\DatabaseServiceProvider::class, - Illuminate\Encryption\EncryptionServiceProvider::class, - Illuminate\Filesystem\FilesystemServiceProvider::class, - Illuminate\Foundation\Providers\FoundationServiceProvider::class, - Illuminate\Hashing\HashServiceProvider::class, - Illuminate\Mail\MailServiceProvider::class, - Illuminate\Notifications\NotificationServiceProvider::class, - Illuminate\Pagination\PaginationServiceProvider::class, - Illuminate\Pipeline\PipelineServiceProvider::class, - Illuminate\Queue\QueueServiceProvider::class, - Illuminate\Redis\RedisServiceProvider::class, - Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, - Illuminate\Session\SessionServiceProvider::class, - Illuminate\Translation\TranslationServiceProvider::class, - Illuminate\Validation\ValidationServiceProvider::class, - Illuminate\View\ViewServiceProvider::class, - - /* - * 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, - - ], - - /* - |-------------------------------------------------------------------------- - | 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([ - // ... - ])->toArray(), - -]; diff --git a/Chapter06/onlineStore/config/auth.php b/Chapter06/onlineStore/config/auth.php deleted file mode 100644 index d8c6cee..0000000 --- a/Chapter06/onlineStore/config/auth.php +++ /dev/null @@ -1,111 +0,0 @@ - [ - '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 expire 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. - | - */ - - 'passwords' => [ - 'users' => [ - 'provider' => 'users', - 'table' => 'password_resets', - '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/Chapter06/onlineStore/config/broadcasting.php b/Chapter06/onlineStore/config/broadcasting.php deleted file mode 100644 index 67fcbbd..0000000 --- a/Chapter06/onlineStore/config/broadcasting.php +++ /dev/null @@ -1,67 +0,0 @@ - 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'), - 'useTLS' => true, - ], - '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/Chapter06/onlineStore/config/cache.php b/Chapter06/onlineStore/config/cache.php deleted file mode 100644 index 8736c7a..0000000 --- a/Chapter06/onlineStore/config/cache.php +++ /dev/null @@ -1,110 +0,0 @@ - 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'), - ], - - '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 a RAM based store such as APC or Memcached, there might - | be other applications utilizing the same cache. So, we'll specify a - | value to get prefixed to all our keys so we can avoid collisions. - | - */ - - 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'), - -]; diff --git a/Chapter06/onlineStore/config/cors.php b/Chapter06/onlineStore/config/cors.php deleted file mode 100644 index 8a39e6d..0000000 --- a/Chapter06/onlineStore/config/cors.php +++ /dev/null @@ -1,34 +0,0 @@ - ['api/*', 'sanctum/csrf-cookie'], - - 'allowed_methods' => ['*'], - - 'allowed_origins' => ['*'], - - 'allowed_origins_patterns' => [], - - 'allowed_headers' => ['*'], - - 'exposed_headers' => [], - - 'max_age' => 0, - - 'supports_credentials' => false, - -]; diff --git a/Chapter06/onlineStore/config/database.php b/Chapter06/onlineStore/config/database.php deleted file mode 100644 index 0faebae..0000000 --- a/Chapter06/onlineStore/config/database.php +++ /dev/null @@ -1,147 +0,0 @@ - env('DB_CONNECTION', 'mysql'), - - /* - |-------------------------------------------------------------------------- - | Database Connections - |-------------------------------------------------------------------------- - | - | Here are each of the database connections setup for your application. - | Of course, examples of configuring each database platform that is - | supported by Laravel is shown below to make development simple. - | - | - | All database work in Laravel is done through the PHP PDO facilities - | so make sure you have the driver for your particular database of - | choice installed on your machine before you begin development. - | - */ - - 'connections' => [ - - 'sqlite' => [ - 'driver' => 'sqlite', - 'url' => env('DATABASE_URL'), - 'database' => env('DB_DATABASE', database_path('database.sqlite')), - 'prefix' => '', - 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), - ], - - 'mysql' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '3306'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'unix_socket' => env('DB_SOCKET', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - 'pgsql' => [ - 'driver' => 'pgsql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '5432'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - 'search_path' => 'public', - 'sslmode' => 'prefer', - ], - - 'sqlsrv' => [ - 'driver' => 'sqlsrv', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', 'localhost'), - 'port' => env('DB_PORT', '1433'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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'), - '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'), - 'password' => env('REDIS_PASSWORD'), - 'port' => env('REDIS_PORT', '6379'), - 'database' => env('REDIS_CACHE_DB', '1'), - ], - - ], - -]; diff --git a/Chapter06/onlineStore/config/filesystems.php b/Chapter06/onlineStore/config/filesystems.php deleted file mode 100644 index cf5abce..0000000 --- a/Chapter06/onlineStore/config/filesystems.php +++ /dev/null @@ -1,73 +0,0 @@ - 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 setup for each driver as an example of the required options. - | - | Supported Drivers: "local", "ftp", "sftp", "s3" - | - */ - - 'disks' => [ - - 'local' => [ - 'driver' => 'local', - 'root' => storage_path('app'), - ], - - 'public' => [ - 'driver' => 'local', - 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', - 'visibility' => 'public', - ], - - '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), - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter06/onlineStore/config/hashing.php b/Chapter06/onlineStore/config/hashing.php deleted file mode 100644 index bcd3be4..0000000 --- a/Chapter06/onlineStore/config/hashing.php +++ /dev/null @@ -1,52 +0,0 @@ - '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/Chapter06/onlineStore/config/logging.php b/Chapter06/onlineStore/config/logging.php deleted file mode 100644 index fefe088..0000000 --- a/Chapter06/onlineStore/config/logging.php +++ /dev/null @@ -1,119 +0,0 @@ - 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' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), - - /* - |-------------------------------------------------------------------------- - | 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'), - ], - - 'daily' => [ - 'driver' => 'daily', - 'path' => storage_path('logs/laravel.log'), - 'level' => env('LOG_LEVEL', 'debug'), - 'days' => 14, - ], - - 'slack' => [ - 'driver' => 'slack', - 'url' => env('LOG_SLACK_WEBHOOK_URL'), - 'username' => 'Laravel Log', - 'emoji' => ':boom:', - 'level' => env('LOG_LEVEL', 'critical'), - ], - - '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'), - ], - ], - - 'stderr' => [ - 'driver' => 'monolog', - 'level' => env('LOG_LEVEL', 'debug'), - 'handler' => StreamHandler::class, - 'formatter' => env('LOG_STDERR_FORMATTER'), - 'with' => [ - 'stream' => 'php://stderr', - ], - ], - - 'syslog' => [ - 'driver' => 'syslog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'errorlog' => [ - 'driver' => 'errorlog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'null' => [ - 'driver' => 'monolog', - 'handler' => NullHandler::class, - ], - - 'emergency' => [ - 'path' => storage_path('logs/laravel.log'), - ], - ], - -]; diff --git a/Chapter06/onlineStore/config/mail.php b/Chapter06/onlineStore/config/mail.php deleted file mode 100644 index 87b6fe3..0000000 --- a/Chapter06/onlineStore/config/mail.php +++ /dev/null @@ -1,117 +0,0 @@ - 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", - | "postmark", "log", "array", "failover" - | - */ - - 'mailers' => [ - 'smtp' => [ - 'transport' => 'smtp', - '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, - ], - - 'ses' => [ - 'transport' => 'ses', - ], - - 'mailgun' => [ - 'transport' => 'mailgun', - ], - - 'postmark' => [ - 'transport' => 'postmark', - ], - - 'sendmail' => [ - 'transport' => 'sendmail', - 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -t -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/Chapter06/onlineStore/config/queue.php b/Chapter06/onlineStore/config/queue.php deleted file mode 100644 index 25ea5a8..0000000 --- a/Chapter06/onlineStore/config/queue.php +++ /dev/null @@ -1,93 +0,0 @@ - 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, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter06/onlineStore/config/sanctum.php b/Chapter06/onlineStore/config/sanctum.php deleted file mode 100644 index 9281c92..0000000 --- a/Chapter06/onlineStore/config/sanctum.php +++ /dev/null @@ -1,65 +0,0 @@ - explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( - '%s%s', - 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', - env('APP_URL') ? ','.parse_url(env('APP_URL'), PHP_URL_HOST) : '' - ))), - - /* - |-------------------------------------------------------------------------- - | 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/Chapter06/onlineStore/config/services.php b/Chapter06/onlineStore/config/services.php deleted file mode 100644 index 2a1d616..0000000 --- a/Chapter06/onlineStore/config/services.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - 'domain' => env('MAILGUN_DOMAIN'), - 'secret' => env('MAILGUN_SECRET'), - 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), - ], - - '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/Chapter06/onlineStore/config/session.php b/Chapter06/onlineStore/config/session.php deleted file mode 100644 index 8fed97c..0000000 --- a/Chapter06/onlineStore/config/session.php +++ /dev/null @@ -1,201 +0,0 @@ - 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/Chapter06/onlineStore/config/view.php b/Chapter06/onlineStore/config/view.php deleted file mode 100644 index 22b8a18..0000000 --- a/Chapter06/onlineStore/config/view.php +++ /dev/null @@ -1,36 +0,0 @@ - [ - 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/Chapter06/onlineStore/database/.gitignore b/Chapter06/onlineStore/database/.gitignore deleted file mode 100644 index 9b19b93..0000000 --- a/Chapter06/onlineStore/database/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.sqlite* diff --git a/Chapter06/onlineStore/database/factories/UserFactory.php b/Chapter06/onlineStore/database/factories/UserFactory.php deleted file mode 100644 index d6ca926..0000000 --- a/Chapter06/onlineStore/database/factories/UserFactory.php +++ /dev/null @@ -1,42 +0,0 @@ - - */ -class UserFactory extends Factory -{ - /** - * Define the model's default state. - * - * @return array - */ - public function definition() - { - return [ - 'name' => $this->faker->name(), - 'email' => $this->faker->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. - * - * @return \Illuminate\Database\Eloquent\Factories\Factory - */ - public function unverified() - { - return $this->state(function (array $attributes) { - return [ - 'email_verified_at' => null, - ]; - }); - } -} diff --git a/Chapter06/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php b/Chapter06/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php deleted file mode 100644 index cf6b776..0000000 --- a/Chapter06/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->string('name'); - $table->string('email')->unique(); - $table->timestamp('email_verified_at')->nullable(); - $table->string('password'); - $table->rememberToken(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('users'); - } -}; diff --git a/Chapter06/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php b/Chapter06/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php deleted file mode 100644 index fcacb80..0000000 --- a/Chapter06/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php +++ /dev/null @@ -1,32 +0,0 @@ -string('email')->index(); - $table->string('token'); - $table->timestamp('created_at')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('password_resets'); - } -}; diff --git a/Chapter06/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/Chapter06/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php deleted file mode 100644 index 1719198..0000000 --- a/Chapter06/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php +++ /dev/null @@ -1,36 +0,0 @@ -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. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('failed_jobs'); - } -}; diff --git a/Chapter06/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/Chapter06/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php deleted file mode 100644 index fd235f8..0000000 --- a/Chapter06/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->morphs('tokenable'); - $table->string('name'); - $table->string('token', 64)->unique(); - $table->text('abilities')->nullable(); - $table->timestamp('last_used_at')->nullable(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('personal_access_tokens'); - } -}; diff --git a/Chapter06/onlineStore/database/seeders/DatabaseSeeder.php b/Chapter06/onlineStore/database/seeders/DatabaseSeeder.php deleted file mode 100644 index 71f673f..0000000 --- a/Chapter06/onlineStore/database/seeders/DatabaseSeeder.php +++ /dev/null @@ -1,19 +0,0 @@ -create(); - } -} diff --git a/Chapter06/onlineStore/lang/en.json b/Chapter06/onlineStore/lang/en.json deleted file mode 100644 index 577680d..0000000 --- a/Chapter06/onlineStore/lang/en.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "The :attribute must contain at least one letter.": "The :attribute must contain at least one letter.", - "The :attribute must contain at least one number.": "The :attribute must contain at least one number.", - "The :attribute must contain at least one symbol.": "The :attribute must contain at least one symbol.", - "The :attribute must contain at least one uppercase and one lowercase letter.": "The :attribute must contain at least one uppercase and one lowercase letter.", - "The given :attribute has appeared in a data leak. Please choose a different :attribute.": "The given :attribute has appeared in a data leak. Please choose a different :attribute." -} diff --git a/Chapter06/onlineStore/lang/en/auth.php b/Chapter06/onlineStore/lang/en/auth.php deleted file mode 100644 index 6598e2c..0000000 --- a/Chapter06/onlineStore/lang/en/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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/Chapter06/onlineStore/lang/en/pagination.php b/Chapter06/onlineStore/lang/en/pagination.php deleted file mode 100644 index d481411..0000000 --- a/Chapter06/onlineStore/lang/en/pagination.php +++ /dev/null @@ -1,19 +0,0 @@ - '« Previous', - 'next' => 'Next »', - -]; diff --git a/Chapter06/onlineStore/lang/en/passwords.php b/Chapter06/onlineStore/lang/en/passwords.php deleted file mode 100644 index 2345a56..0000000 --- a/Chapter06/onlineStore/lang/en/passwords.php +++ /dev/null @@ -1,22 +0,0 @@ - '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/Chapter06/onlineStore/lang/en/validation.php b/Chapter06/onlineStore/lang/en/validation.php deleted file mode 100644 index 783003c..0000000 --- a/Chapter06/onlineStore/lang/en/validation.php +++ /dev/null @@ -1,163 +0,0 @@ - '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' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - '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' => [ - 'numeric' => 'The :attribute must be greater than :value.', - 'file' => 'The :attribute must be greater than :value kilobytes.', - 'string' => 'The :attribute must be greater than :value characters.', - 'array' => 'The :attribute must have more than :value items.', - ], - 'gte' => [ - 'numeric' => 'The :attribute must be greater than or equal to :value.', - 'file' => 'The :attribute must be greater than or equal to :value kilobytes.', - 'string' => 'The :attribute must be greater than or equal to :value characters.', - 'array' => 'The :attribute must have :value items or more.', - ], - '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' => [ - 'numeric' => 'The :attribute must be less than :value.', - 'file' => 'The :attribute must be less than :value kilobytes.', - 'string' => 'The :attribute must be less than :value characters.', - 'array' => 'The :attribute must have less than :value items.', - ], - 'lte' => [ - 'numeric' => 'The :attribute must be less than or equal to :value.', - 'file' => 'The :attribute must be less than or equal to :value kilobytes.', - 'string' => 'The :attribute must be less than or equal to :value characters.', - 'array' => 'The :attribute must not have more than :value items.', - ], - 'mac_address' => 'The :attribute must be a valid MAC address.', - 'max' => [ - 'numeric' => 'The :attribute must not be greater than :max.', - 'file' => 'The :attribute must not be greater than :max kilobytes.', - 'string' => 'The :attribute must not be greater than :max characters.', - 'array' => 'The :attribute must not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - '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.', - 'password' => 'The password is incorrect.', - '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' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - '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/Chapter06/onlineStore/package.json b/Chapter06/onlineStore/package.json deleted file mode 100644 index 7a9aecd..0000000 --- a/Chapter06/onlineStore/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "private": true, - "scripts": { - "dev": "npm run development", - "development": "mix", - "watch": "mix watch", - "watch-poll": "mix watch -- --watch-options-poll=1000", - "hot": "mix watch --hot", - "prod": "npm run production", - "production": "mix --production" - }, - "devDependencies": { - "axios": "^0.25", - "laravel-mix": "^6.0.6", - "lodash": "^4.17.19", - "postcss": "^8.1.14" - } -} diff --git a/Chapter06/onlineStore/phpunit.xml b/Chapter06/onlineStore/phpunit.xml deleted file mode 100644 index 2ac86a1..0000000 --- a/Chapter06/onlineStore/phpunit.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - ./tests/Unit - - - ./tests/Feature - - - - - ./app - - - - - - - - - - - - - - diff --git a/Chapter06/onlineStore/public/.htaccess b/Chapter06/onlineStore/public/.htaccess deleted file mode 100644 index 3aec5e2..0000000 --- a/Chapter06/onlineStore/public/.htaccess +++ /dev/null @@ -1,21 +0,0 @@ - - - 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/Chapter06/onlineStore/public/css/app.css b/Chapter06/onlineStore/public/css/app.css deleted file mode 100644 index cabac36..0000000 --- a/Chapter06/onlineStore/public/css/app.css +++ /dev/null @@ -1,20 +0,0 @@ -.bg-secondary { - background-color: #2c3e50 !important; -} - -.copyright { - background-color: #1a252f; -} - -.bg-primary { - background-color: #1abc9c !important; -} - -nav{ - font-weight: 700; -} - -.img-card{ - height: 18vw; - object-fit: cover; -} diff --git a/Chapter06/onlineStore/public/favicon.ico b/Chapter06/onlineStore/public/favicon.ico deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter06/onlineStore/public/img/game.png b/Chapter06/onlineStore/public/img/game.png deleted file mode 100644 index 85420e8bbc16098bf26b4ee63bde0e91a19d1f2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25896 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 cz>% diff --git a/Chapter06/onlineStore/public/img/safe.png b/Chapter06/onlineStore/public/img/safe.png deleted file mode 100644 index 445942c707af53210931f9f4f99f6d3cb69e5d89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19240 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
    w==XB0?3|p=#`o%NsudE(E-U#KS3Snw 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 o>ir+C;RN10sIS0&a;pmake(Kernel::class); - -$response = $kernel->handle( - $request = Request::capture() -)->send(); - -$kernel->terminate($request, $response); diff --git a/Chapter06/onlineStore/public/robots.txt b/Chapter06/onlineStore/public/robots.txt deleted file mode 100644 index eb05362..0000000 --- a/Chapter06/onlineStore/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: diff --git a/Chapter06/onlineStore/resources/css/app.css b/Chapter06/onlineStore/resources/css/app.css deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter06/onlineStore/resources/js/app.js b/Chapter06/onlineStore/resources/js/app.js deleted file mode 100644 index 40c55f6..0000000 --- a/Chapter06/onlineStore/resources/js/app.js +++ /dev/null @@ -1 +0,0 @@ -require('./bootstrap'); diff --git a/Chapter06/onlineStore/resources/js/bootstrap.js b/Chapter06/onlineStore/resources/js/bootstrap.js deleted file mode 100644 index 6922577..0000000 --- a/Chapter06/onlineStore/resources/js/bootstrap.js +++ /dev/null @@ -1,28 +0,0 @@ -window._ = require('lodash'); - -/** - * 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 = require('axios'); - -window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; - -/** - * 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'; - -// window.Pusher = require('pusher-js'); - -// window.Echo = new Echo({ -// broadcaster: 'pusher', -// key: process.env.MIX_PUSHER_APP_KEY, -// cluster: process.env.MIX_PUSHER_APP_CLUSTER, -// forceTLS: true -// }); diff --git a/Chapter06/onlineStore/resources/views/home/about.blade.php b/Chapter06/onlineStore/resources/views/home/about.blade.php deleted file mode 100644 index 0a3658c..0000000 --- a/Chapter06/onlineStore/resources/views/home/about.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $title) -@section('subtitle', $subtitle) -@section('content') -
    -
    -
    -

    {{ $description }}

    -
    -
    -

    {{ $author }}

    -
    -
    -
    -@endsection diff --git a/Chapter06/onlineStore/resources/views/home/index.blade.php b/Chapter06/onlineStore/resources/views/home/index.blade.php deleted file mode 100644 index 1affb20..0000000 --- a/Chapter06/onlineStore/resources/views/home/index.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('content') -
    -
    - -
    -
    - -
    -
    - -
    -
    -@endsection diff --git a/Chapter06/onlineStore/resources/views/layouts/app.blade.php b/Chapter06/onlineStore/resources/views/layouts/app.blade.php deleted file mode 100644 index 6351369..0000000 --- a/Chapter06/onlineStore/resources/views/layouts/app.blade.php +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - @yield('title', 'Online Store') - - - -
    - -
    -
    -

    @yield('subtitle', 'A Laravel Online Store')

    -
    -
    - - -
    - @yield('content') -
    - - - - - - - diff --git a/Chapter06/onlineStore/resources/views/welcome.blade.php b/Chapter06/onlineStore/resources/views/welcome.blade.php deleted file mode 100644 index c587c72..0000000 --- a/Chapter06/onlineStore/resources/views/welcome.blade.php +++ /dev/null @@ -1,7 +0,0 @@ -@extends('layouts.app') -@section('title', 'Home Page - Online Store') -@section('content') -
    - Welcome to the application -
    -@endsection \ No newline at end of file diff --git a/Chapter06/onlineStore/routes/api.php b/Chapter06/onlineStore/routes/api.php deleted file mode 100644 index eb6fa48..0000000 --- a/Chapter06/onlineStore/routes/api.php +++ /dev/null @@ -1,19 +0,0 @@ -get('/user', function (Request $request) { - return $request->user(); -}); diff --git a/Chapter06/onlineStore/routes/channels.php b/Chapter06/onlineStore/routes/channels.php deleted file mode 100644 index 5d451e1..0000000 --- a/Chapter06/onlineStore/routes/channels.php +++ /dev/null @@ -1,18 +0,0 @@ -id === (int) $id; -}); diff --git a/Chapter06/onlineStore/routes/console.php b/Chapter06/onlineStore/routes/console.php deleted file mode 100644 index e05f4c9..0000000 --- a/Chapter06/onlineStore/routes/console.php +++ /dev/null @@ -1,19 +0,0 @@ -comment(Inspiring::quote()); -})->purpose('Display an inspiring quote'); diff --git a/Chapter06/onlineStore/routes/web.php b/Chapter06/onlineStore/routes/web.php deleted file mode 100644 index 011d40a..0000000 --- a/Chapter06/onlineStore/routes/web.php +++ /dev/null @@ -1,21 +0,0 @@ -with("viewData", $viewData); -}); -Route::get('/about', 'App\Http\Controllers\HomeController@about')->name("home.about"); diff --git a/Chapter06/onlineStore/storage/app/.gitignore b/Chapter06/onlineStore/storage/app/.gitignore deleted file mode 100644 index 8f4803c..0000000 --- a/Chapter06/onlineStore/storage/app/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!public/ -!.gitignore diff --git a/Chapter06/onlineStore/storage/app/public/.gitignore b/Chapter06/onlineStore/storage/app/public/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter06/onlineStore/storage/app/public/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter06/onlineStore/storage/framework/.gitignore b/Chapter06/onlineStore/storage/framework/.gitignore deleted file mode 100644 index 05c4471..0000000 --- a/Chapter06/onlineStore/storage/framework/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -compiled.php -config.php -down -events.scanned.php -maintenance.php -routes.php -routes.scanned.php -schedule-* -services.json diff --git a/Chapter06/onlineStore/storage/framework/cache/.gitignore b/Chapter06/onlineStore/storage/framework/cache/.gitignore deleted file mode 100644 index 01e4a6c..0000000 --- a/Chapter06/onlineStore/storage/framework/cache/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!data/ -!.gitignore diff --git a/Chapter06/onlineStore/storage/framework/cache/data/.gitignore b/Chapter06/onlineStore/storage/framework/cache/data/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter06/onlineStore/storage/framework/cache/data/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter06/onlineStore/storage/framework/sessions/.gitignore b/Chapter06/onlineStore/storage/framework/sessions/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter06/onlineStore/storage/framework/sessions/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter06/onlineStore/storage/framework/testing/.gitignore b/Chapter06/onlineStore/storage/framework/testing/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter06/onlineStore/storage/framework/testing/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter06/onlineStore/storage/framework/views/.gitignore b/Chapter06/onlineStore/storage/framework/views/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter06/onlineStore/storage/framework/views/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter06/onlineStore/storage/logs/.gitignore b/Chapter06/onlineStore/storage/logs/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter06/onlineStore/storage/logs/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter06/onlineStore/tests/CreatesApplication.php b/Chapter06/onlineStore/tests/CreatesApplication.php deleted file mode 100644 index 547152f..0000000 --- a/Chapter06/onlineStore/tests/CreatesApplication.php +++ /dev/null @@ -1,22 +0,0 @@ -make(Kernel::class)->bootstrap(); - - return $app; - } -} diff --git a/Chapter06/onlineStore/tests/Feature/ExampleTest.php b/Chapter06/onlineStore/tests/Feature/ExampleTest.php deleted file mode 100644 index 78ccc21..0000000 --- a/Chapter06/onlineStore/tests/Feature/ExampleTest.php +++ /dev/null @@ -1,21 +0,0 @@ -get('/'); - - $response->assertStatus(200); - } -} diff --git a/Chapter06/onlineStore/tests/TestCase.php b/Chapter06/onlineStore/tests/TestCase.php deleted file mode 100644 index 2932d4a..0000000 --- a/Chapter06/onlineStore/tests/TestCase.php +++ /dev/null @@ -1,10 +0,0 @@ -assertTrue(true); - } -} diff --git a/Chapter06/onlineStore/webpack.mix.js b/Chapter06/onlineStore/webpack.mix.js deleted file mode 100644 index 2a22dc1..0000000 --- a/Chapter06/onlineStore/webpack.mix.js +++ /dev/null @@ -1,17 +0,0 @@ -const mix = require('laravel-mix'); - -/* - |-------------------------------------------------------------------------- - | Mix Asset Management - |-------------------------------------------------------------------------- - | - | Mix provides a clean, fluent API for defining some Webpack build steps - | for your Laravel applications. By default, we are compiling the CSS - | file for the application as well as bundling up all the JS files. - | - */ - -mix.js('resources/js/app.js', 'public/js') - .postCss('resources/css/app.css', 'public/css', [ - // - ]); diff --git a/Chapter07/onlineStore/.editorconfig b/Chapter07/onlineStore/.editorconfig deleted file mode 100644 index 1671c9b..0000000 --- a/Chapter07/onlineStore/.editorconfig +++ /dev/null @@ -1,18 +0,0 @@ -root = true - -[*] -charset = utf-8 -end_of_line = lf -insert_final_newline = true -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true - -[*.md] -trim_trailing_whitespace = false - -[*.{yml,yaml}] -indent_size = 2 - -[docker-compose.yml] -indent_size = 4 diff --git a/Chapter07/onlineStore/.env.example b/Chapter07/onlineStore/.env.example deleted file mode 100644 index 8510237..0000000 --- a/Chapter07/onlineStore/.env.example +++ /dev/null @@ -1,52 +0,0 @@ -APP_NAME=Laravel -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=laravel -DB_USERNAME=root -DB_PASSWORD= - -BROADCAST_DRIVER=log -CACHE_DRIVER=file -FILESYSTEM_DISK=local -QUEUE_CONNECTION=sync -SESSION_DRIVER=file -SESSION_LIFETIME=120 - -MEMCACHED_HOST=127.0.0.1 - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -MAIL_MAILER=smtp -MAIL_HOST=mailhog -MAIL_PORT=1025 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS=null -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_APP_CLUSTER=mt1 - -MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/Chapter07/onlineStore/.gitattributes b/Chapter07/onlineStore/.gitattributes deleted file mode 100644 index 510d996..0000000 --- a/Chapter07/onlineStore/.gitattributes +++ /dev/null @@ -1,10 +0,0 @@ -* text=auto - -*.blade.php diff=html -*.css diff=css -*.html diff=html -*.md diff=markdown -*.php diff=php - -/.github export-ignore -CHANGELOG.md export-ignore diff --git a/Chapter07/onlineStore/.gitignore b/Chapter07/onlineStore/.gitignore deleted file mode 100644 index eb003b0..0000000 --- a/Chapter07/onlineStore/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -/node_modules -/public/hot -/public/storage -/storage/*.key -/vendor -.env -.env.backup -.phpunit.result.cache -docker-compose.override.yml -Homestead.json -Homestead.yaml -npm-debug.log -yarn-error.log -/.idea -/.vscode diff --git a/Chapter07/onlineStore/.styleci.yml b/Chapter07/onlineStore/.styleci.yml deleted file mode 100644 index 679a631..0000000 --- a/Chapter07/onlineStore/.styleci.yml +++ /dev/null @@ -1,13 +0,0 @@ -php: - preset: laravel - version: 8 - disabled: - - no_unused_imports - finder: - not-name: - - index.php -js: - finder: - not-name: - - webpack.mix.js -css: true diff --git a/Chapter07/onlineStore/README.md b/Chapter07/onlineStore/README.md deleted file mode 100644 index f171eca..0000000 --- a/Chapter07/onlineStore/README.md +++ /dev/null @@ -1,64 +0,0 @@ -

    - -

    -Build Status -Total Downloads -Latest Stable Version -License -

    - -## About Laravel - -Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as: - -- [Simple, fast routing engine](https://laravel.com/docs/routing). -- [Powerful dependency injection container](https://laravel.com/docs/container). -- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage. -- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent). -- Database agnostic [schema migrations](https://laravel.com/docs/migrations). -- [Robust background job processing](https://laravel.com/docs/queues). -- [Real-time event broadcasting](https://laravel.com/docs/broadcasting). - -Laravel is accessible, powerful, and provides tools required for large, robust applications. - -## Learning Laravel - -Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework. - -If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 2000 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library. - -## Laravel Sponsors - -We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell). - -### Premium Partners - -- **[Vehikl](https://vehikl.com/)** -- **[Tighten Co.](https://tighten.co)** -- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** -- **[64 Robots](https://64robots.com)** -- **[Cubet Techno Labs](https://cubettech.com)** -- **[Cyber-Duck](https://cyber-duck.co.uk)** -- **[Many](https://www.many.co.uk)** -- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)** -- **[DevSquad](https://devsquad.com)** -- **[Curotec](https://www.curotec.com/services/technologies/laravel/)** -- **[OP.GG](https://op.gg)** -- **[WebReinvent](https://webreinvent.com/?utm_source=laravel&utm_medium=github&utm_campaign=patreon-sponsors)** -- **[Lendio](https://lendio.com)** - -## Contributing - -Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions). - -## Code of Conduct - -In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). - -## Security Vulnerabilities - -If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed. - -## License - -The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). diff --git a/Chapter07/onlineStore/app/Console/Kernel.php b/Chapter07/onlineStore/app/Console/Kernel.php deleted file mode 100644 index d8bc1d2..0000000 --- a/Chapter07/onlineStore/app/Console/Kernel.php +++ /dev/null @@ -1,32 +0,0 @@ -command('inspire')->hourly(); - } - - /** - * Register the commands for the application. - * - * @return void - */ - protected function commands() - { - $this->load(__DIR__.'/Commands'); - - require base_path('routes/console.php'); - } -} diff --git a/Chapter07/onlineStore/app/Exceptions/Handler.php b/Chapter07/onlineStore/app/Exceptions/Handler.php deleted file mode 100644 index 8e7fbd1..0000000 --- a/Chapter07/onlineStore/app/Exceptions/Handler.php +++ /dev/null @@ -1,41 +0,0 @@ -> - */ - protected $dontReport = [ - // - ]; - - /** - * A list of the inputs that are never flashed for validation exceptions. - * - * @var array - */ - protected $dontFlash = [ - 'current_password', - 'password', - 'password_confirmation', - ]; - - /** - * Register the exception handling callbacks for the application. - * - * @return void - */ - public function register() - { - $this->reportable(function (Throwable $e) { - // - }); - } -} diff --git a/Chapter07/onlineStore/app/Http/Controllers/Controller.php b/Chapter07/onlineStore/app/Http/Controllers/Controller.php deleted file mode 100644 index a0a2a8a..0000000 --- a/Chapter07/onlineStore/app/Http/Controllers/Controller.php +++ /dev/null @@ -1,13 +0,0 @@ -with("viewData", $viewData); - } - - public function about() - { - $viewData = []; - $viewData["title"] = "About us - Online Store"; - $viewData["subtitle"] = "About us"; - $viewData["description"] = "This is an about page ..."; - $viewData["author"] = "Developed by: Your Name"; - return view('home.about')->with("viewData", $viewData); - - } -} diff --git a/Chapter07/onlineStore/app/Http/Kernel.php b/Chapter07/onlineStore/app/Http/Kernel.php deleted file mode 100644 index d3722c2..0000000 --- a/Chapter07/onlineStore/app/Http/Kernel.php +++ /dev/null @@ -1,67 +0,0 @@ - - */ - protected $middleware = [ - // \App\Http\Middleware\TrustHosts::class, - \App\Http\Middleware\TrustProxies::class, - \Fruitcake\Cors\HandleCors::class, - \App\Http\Middleware\PreventRequestsDuringMaintenance::class, - \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, - \App\Http\Middleware\TrimStrings::class, - \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, - ]; - - /** - * The application's route middleware groups. - * - * @var array> - */ - protected $middlewareGroups = [ - 'web' => [ - \App\Http\Middleware\EncryptCookies::class, - \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, - \Illuminate\Session\Middleware\StartSession::class, - // \Illuminate\Session\Middleware\AuthenticateSession::class, - \Illuminate\View\Middleware\ShareErrorsFromSession::class, - \App\Http\Middleware\VerifyCsrfToken::class, - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - - 'api' => [ - // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, - 'throttle:api', - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - ]; - - /** - * The application's route middleware. - * - * These middleware may be assigned to groups or used individually. - * - * @var array - */ - protected $routeMiddleware = [ - 'auth' => \App\Http\Middleware\Authenticate::class, - 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::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, - 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, - 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, - 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, - ]; -} diff --git a/Chapter07/onlineStore/app/Http/Middleware/Authenticate.php b/Chapter07/onlineStore/app/Http/Middleware/Authenticate.php deleted file mode 100644 index 704089a..0000000 --- a/Chapter07/onlineStore/app/Http/Middleware/Authenticate.php +++ /dev/null @@ -1,21 +0,0 @@ -expectsJson()) { - return route('login'); - } - } -} diff --git a/Chapter07/onlineStore/app/Http/Middleware/EncryptCookies.php b/Chapter07/onlineStore/app/Http/Middleware/EncryptCookies.php deleted file mode 100644 index 867695b..0000000 --- a/Chapter07/onlineStore/app/Http/Middleware/EncryptCookies.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter07/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/Chapter07/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php deleted file mode 100644 index 74cbd9a..0000000 --- a/Chapter07/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter07/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php b/Chapter07/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php deleted file mode 100644 index a2813a0..0000000 --- a/Chapter07/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php +++ /dev/null @@ -1,32 +0,0 @@ -check()) { - return redirect(RouteServiceProvider::HOME); - } - } - - return $next($request); - } -} diff --git a/Chapter07/onlineStore/app/Http/Middleware/TrimStrings.php b/Chapter07/onlineStore/app/Http/Middleware/TrimStrings.php deleted file mode 100644 index 88cadca..0000000 --- a/Chapter07/onlineStore/app/Http/Middleware/TrimStrings.php +++ /dev/null @@ -1,19 +0,0 @@ - - */ - protected $except = [ - 'current_password', - 'password', - 'password_confirmation', - ]; -} diff --git a/Chapter07/onlineStore/app/Http/Middleware/TrustHosts.php b/Chapter07/onlineStore/app/Http/Middleware/TrustHosts.php deleted file mode 100644 index 7186414..0000000 --- a/Chapter07/onlineStore/app/Http/Middleware/TrustHosts.php +++ /dev/null @@ -1,20 +0,0 @@ - - */ - public function hosts() - { - return [ - $this->allSubdomainsOfApplicationUrl(), - ]; - } -} diff --git a/Chapter07/onlineStore/app/Http/Middleware/TrustProxies.php b/Chapter07/onlineStore/app/Http/Middleware/TrustProxies.php deleted file mode 100644 index 3391630..0000000 --- a/Chapter07/onlineStore/app/Http/Middleware/TrustProxies.php +++ /dev/null @@ -1,28 +0,0 @@ -|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/Chapter07/onlineStore/app/Http/Middleware/VerifyCsrfToken.php b/Chapter07/onlineStore/app/Http/Middleware/VerifyCsrfToken.php deleted file mode 100644 index 9e86521..0000000 --- a/Chapter07/onlineStore/app/Http/Middleware/VerifyCsrfToken.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter07/onlineStore/app/Models/User.php b/Chapter07/onlineStore/app/Models/User.php deleted file mode 100644 index 8996368..0000000 --- a/Chapter07/onlineStore/app/Models/User.php +++ /dev/null @@ -1,44 +0,0 @@ - - */ - 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', - ]; -} diff --git a/Chapter07/onlineStore/app/Providers/AppServiceProvider.php b/Chapter07/onlineStore/app/Providers/AppServiceProvider.php deleted file mode 100644 index ee8ca5b..0000000 --- a/Chapter07/onlineStore/app/Providers/AppServiceProvider.php +++ /dev/null @@ -1,28 +0,0 @@ - - */ - protected $policies = [ - // 'App\Models\Model' => 'App\Policies\ModelPolicy', - ]; - - /** - * Register any authentication / authorization services. - * - * @return void - */ - public function boot() - { - $this->registerPolicies(); - - // - } -} diff --git a/Chapter07/onlineStore/app/Providers/BroadcastServiceProvider.php b/Chapter07/onlineStore/app/Providers/BroadcastServiceProvider.php deleted file mode 100644 index 395c518..0000000 --- a/Chapter07/onlineStore/app/Providers/BroadcastServiceProvider.php +++ /dev/null @@ -1,21 +0,0 @@ -> - */ - protected $listen = [ - Registered::class => [ - SendEmailVerificationNotification::class, - ], - ]; - - /** - * Register any events for your application. - * - * @return void - */ - public function boot() - { - // - } -} diff --git a/Chapter07/onlineStore/app/Providers/RouteServiceProvider.php b/Chapter07/onlineStore/app/Providers/RouteServiceProvider.php deleted file mode 100644 index 7c17d1f..0000000 --- a/Chapter07/onlineStore/app/Providers/RouteServiceProvider.php +++ /dev/null @@ -1,63 +0,0 @@ -configureRateLimiting(); - - $this->routes(function () { - Route::prefix('api') - ->middleware('api') - ->namespace($this->namespace) - ->group(base_path('routes/api.php')); - - Route::middleware('web') - ->namespace($this->namespace) - ->group(base_path('routes/web.php')); - }); - } - - /** - * Configure the rate limiters for the application. - * - * @return void - */ - protected function configureRateLimiting() - { - RateLimiter::for('api', function (Request $request) { - return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); - }); - } -} diff --git a/Chapter07/onlineStore/artisan b/Chapter07/onlineStore/artisan deleted file mode 100644 index 67a3329..0000000 --- a/Chapter07/onlineStore/artisan +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env php -make(Illuminate\Contracts\Console\Kernel::class); - -$status = $kernel->handle( - $input = new Symfony\Component\Console\Input\ArgvInput, - new Symfony\Component\Console\Output\ConsoleOutput -); - -/* -|-------------------------------------------------------------------------- -| Shutdown The Application -|-------------------------------------------------------------------------- -| -| Once Artisan has finished running, we will fire off the shutdown events -| so that any final work may be done by the application before we shut -| down the process. This is the last thing to happen to the request. -| -*/ - -$kernel->terminate($input, $status); - -exit($status); diff --git a/Chapter07/onlineStore/bootstrap/app.php b/Chapter07/onlineStore/bootstrap/app.php deleted file mode 100644 index 037e17d..0000000 --- a/Chapter07/onlineStore/bootstrap/app.php +++ /dev/null @@ -1,55 +0,0 @@ -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/Chapter07/onlineStore/bootstrap/cache/.gitignore b/Chapter07/onlineStore/bootstrap/cache/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter07/onlineStore/bootstrap/cache/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter07/onlineStore/composer.json b/Chapter07/onlineStore/composer.json deleted file mode 100644 index 6913736..0000000 --- a/Chapter07/onlineStore/composer.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "name": "laravel/laravel", - "type": "project", - "description": "The Laravel Framework.", - "keywords": ["framework", "laravel"], - "license": "MIT", - "require": { - "php": "^8.0", - "fruitcake/laravel-cors": "^2.0.5", - "guzzlehttp/guzzle": "^7.2", - "laravel/framework": "^9.0", - "laravel/sanctum": "^2.14", - "laravel/tinker": "^2.7" - }, - "require-dev": { - "fakerphp/faker": "^1.9.1", - "laravel/sail": "^1.0.1", - "mockery/mockery": "^1.4.4", - "nunomaduro/collision": "^6.1", - "phpunit/phpunit": "^9.5.10", - "spatie/laravel-ignition": "^1.0" - }, - "autoload": { - "psr-4": { - "App\\": "app/", - "Database\\Factories\\": "database/factories/", - "Database\\Seeders\\": "database/seeders/" - } - }, - "autoload-dev": { - "psr-4": { - "Tests\\": "tests/" - } - }, - "scripts": { - "post-autoload-dump": [ - "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", - "@php artisan package:discover --ansi" - ], - "post-update-cmd": [ - "@php artisan vendor:publish --tag=laravel-assets --ansi --force" - ], - "post-root-package-install": [ - "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" - ], - "post-create-project-cmd": [ - "@php artisan key:generate --ansi" - ] - }, - "extra": { - "laravel": { - "dont-discover": [] - } - }, - "config": { - "optimize-autoloader": true, - "preferred-install": "dist", - "sort-packages": true - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/Chapter07/onlineStore/composer.lock b/Chapter07/onlineStore/composer.lock deleted file mode 100644 index 64d5967..0000000 --- a/Chapter07/onlineStore/composer.lock +++ /dev/null @@ -1,7804 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "65e85f9f959c0b087110331754d451cf", - "packages": [ - { - "name": "asm89/stack-cors", - "version": "v2.1.1", - "source": { - "type": "git", - "url": "https://github.com/asm89/stack-cors.git", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4|^5|^6" - }, - "require-dev": { - "phpunit/phpunit": "^7|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "psr-4": { - "Asm89\\Stack\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alexander", - "email": "iam.asm89@gmail.com" - } - ], - "description": "Cross-origin resource sharing library and stack middleware", - "homepage": "https://github.com/asm89/stack-cors", - "keywords": [ - "cors", - "stack" - ], - "support": { - "issues": "https://github.com/asm89/stack-cors/issues", - "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" - }, - "time": "2022-01-18T09:12:03+00:00" - }, - { - "name": "brick/math", - "version": "0.9.3", - "source": { - "type": "git", - "url": "https://github.com/brick/math.git", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", - "vimeo/psalm": "4.9.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Brick\\Math\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Arbitrary-precision arithmetic library", - "keywords": [ - "Arbitrary-precision", - "BigInteger", - "BigRational", - "arithmetic", - "bigdecimal", - "bignum", - "brick", - "math" - ], - "support": { - "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.9.3" - }, - "funding": [ - { - "url": "https://github.com/BenMorel", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/brick/math", - "type": "tidelift" - } - ], - "time": "2021-08-15T20:50:18+00:00" - }, - { - "name": "dflydev/dot-access-data", - "version": "v3.0.1", - "source": { - "type": "git", - "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c", - "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": "^3.14" - }, - "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.1" - }, - "time": "2021-08-13T13:06:58+00:00" - }, - { - "name": "doctrine/inflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "vimeo/psalm": "^4.10" - }, - "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.4" - }, - "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": "2021-10-22T20:16:43+00:00" - }, - { - "name": "doctrine/lexer", - "version": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" - } - }, - "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/1.2.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%2Flexer", - "type": "tidelift" - } - ], - "time": "2022-01-12T08:27:12+00:00" - }, - { - "name": "dragonmantank/cron-expression", - "version": "v3.3.1", - "source": { - "type": "git", - "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "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.1" - }, - "funding": [ - { - "url": "https://github.com/dragonmantank", - "type": "github" - } - ], - "time": "2022-01-18T15:43:28+00:00" - }, - { - "name": "egulias/email-validator", - "version": "3.1.2", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ee0db30118f661fb166bcffbf5d82032df484697", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^1.2", - "php": ">=7.2", - "symfony/polyfill-intl-idn": "^1.15" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^8.5.8|^9.3.3", - "vimeo/psalm": "^4" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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/3.1.2" - }, - "funding": [ - { - "url": "https://github.com/egulias", - "type": "github" - } - ], - "time": "2021-10-11T09:18:27+00:00" - }, - { - "name": "fruitcake/laravel-cors", - "version": "v2.0.5", - "source": { - "type": "git", - "url": "https://github.com/fruitcake/laravel-cors.git", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "shasum": "" - }, - "require": { - "asm89/stack-cors": "^2.0.1", - "illuminate/contracts": "^6|^7|^8|^9", - "illuminate/support": "^6|^7|^8|^9", - "php": ">=7.2", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4.3.4|^5|^6" - }, - "require-dev": { - "laravel/framework": "^6|^7.24|^8", - "orchestra/testbench-dusk": "^4|^5|^6|^7", - "phpunit/phpunit": "^6|^7|^8|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - }, - "laravel": { - "providers": [ - "Fruitcake\\Cors\\CorsServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Fruitcake\\Cors\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fruitcake", - "homepage": "https://fruitcake.nl" - }, - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", - "keywords": [ - "api", - "cors", - "crossdomain", - "laravel" - ], - "support": { - "issues": "https://github.com/fruitcake/laravel-cors/issues", - "source": "https://github.com/fruitcake/laravel-cors/tree/v2.0.5" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "time": "2022-01-03T14:53:04+00:00" - }, - { - "name": "graham-campbell/result-type", - "version": "v1.0.4", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "0690bde05318336c7221785f2a932467f98b64ca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/0690bde05318336c7221785f2a932467f98b64ca", - "reference": "0690bde05318336c7221785f2a932467f98b64ca", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "phpoption/phpoption": "^1.8" - }, - "require-dev": { - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", - "type": "tidelift" - } - ], - "time": "2021-11-21T21:41:47+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "7.4.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.8.3 || ^2.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.4.1", - "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.5 || ^9.3.5", - "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": { - "branch-alias": { - "dev-master": "7.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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.4.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": "2021-12-06T18:43:05+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "1.5.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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/1.5.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "time": "2021-10-22T20:56:57+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.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.4.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.8 || ^9.3.10" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "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.1.0" - }, - "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": "2021-10-06T17:43:30+00:00" - }, - { - "name": "laravel/framework", - "version": "v9.0.1", - "source": { - "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "shasum": "" - }, - "require": { - "doctrine/inflector": "^2.0", - "dragonmantank/cron-expression": "^3.1", - "egulias/email-validator": "^3.1", - "ext-mbstring": "*", - "ext-openssl": "*", - "laravel/serializable-closure": "^1.0", - "league/commonmark": "^2.2", - "league/flysystem": "^3.0", - "monolog/monolog": "^2.0", - "nesbot/carbon": "^2.53.1", - "php": "^8.0.2", - "psr/container": "^1.1.1|^2.0.1", - "psr/log": "^1.0|^2.0|^3.0", - "psr/simple-cache": "^1.0|^2.0|^3.0", - "ramsey/uuid": "^4.2.2", - "symfony/console": "^6.0", - "symfony/error-handler": "^6.0", - "symfony/finder": "^6.0", - "symfony/http-foundation": "^6.0", - "symfony/http-kernel": "^6.0", - "symfony/mailer": "^6.0", - "symfony/mime": "^6.0", - "symfony/process": "^6.0", - "symfony/routing": "^6.0", - "symfony/var-dumper": "^6.0", - "tijsverkoyen/css-to-inline-styles": "^2.2.2", - "vlucas/phpdotenv": "^5.4.1", - "voku/portable-ascii": "^2.0" - }, - "conflict": { - "tightenco/collect": "<5.5.33" - }, - "provide": { - "psr/container-implementation": "1.1|2.0", - "psr/simple-cache-implementation": "1.0|2.0|3.0" - }, - "replace": { - "illuminate/auth": "self.version", - "illuminate/broadcasting": "self.version", - "illuminate/bus": "self.version", - "illuminate/cache": "self.version", - "illuminate/collections": "self.version", - "illuminate/conditionable": "self.version", - "illuminate/config": "self.version", - "illuminate/console": "self.version", - "illuminate/container": "self.version", - "illuminate/contracts": "self.version", - "illuminate/cookie": "self.version", - "illuminate/database": "self.version", - "illuminate/encryption": "self.version", - "illuminate/events": "self.version", - "illuminate/filesystem": "self.version", - "illuminate/hashing": "self.version", - "illuminate/http": "self.version", - "illuminate/log": "self.version", - "illuminate/macroable": "self.version", - "illuminate/mail": "self.version", - "illuminate/notifications": "self.version", - "illuminate/pagination": "self.version", - "illuminate/pipeline": "self.version", - "illuminate/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": { - "aws/aws-sdk-php": "^3.198.1", - "doctrine/dbal": "^2.13.3|^3.1.4", - "fakerphp/faker": "^1.9.2", - "guzzlehttp/guzzle": "^7.2", - "league/flysystem-aws-s3-v3": "^3.0", - "league/flysystem-ftp": "^3.0", - "league/flysystem-sftp-v3": "^3.0", - "mockery/mockery": "^1.4.4", - "orchestra/testbench-core": "^7.0", - "pda/pheanstalk": "^4.0", - "phpstan/phpstan": "^1.0", - "phpunit/phpunit": "^9.5.8", - "predis/predis": "^1.1.9", - "symfony/amazon-mailer": "^6.0", - "symfony/cache": "^6.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.198.1).", - "brianium/paratest": "Required to run tests in parallel (^6.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", - "ext-bcmath": "Required to use the multiple_of validation rule.", - "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.", - "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.2).", - "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-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", - "mockery/mockery": "Required to use mocking (^1.4.4).", - "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).", - "predis/predis": "Required to use the predis connector (^1.1.9).", - "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.0).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^6.0).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.0).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.0).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.0).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.x-dev" - } - }, - "autoload": { - "files": [ - "src/Illuminate/Collections/helpers.php", - "src/Illuminate/Events/functions.php", - "src/Illuminate/Foundation/helpers.php", - "src/Illuminate/Support/helpers.php" - ], - "psr-4": { - "Illuminate\\": "src/Illuminate/", - "Illuminate\\Support\\": [ - "src/Illuminate/Macroable/", - "src/Illuminate/Collections/", - "src/Illuminate/Conditionable/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Laravel Framework.", - "homepage": "https://laravel.com", - "keywords": [ - "framework", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2022-02-09T15:00:05+00:00" - }, - { - "name": "laravel/sanctum", - "version": "v2.14.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/sanctum.git", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/0647a87140c7522e75826cffcadb3ad6e01f71e9", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/contracts": "^6.9|^7.0|^8.0|^9.0", - "illuminate/database": "^6.9|^7.0|^8.0|^9.0", - "illuminate/support": "^6.9|^7.0|^8.0|^9.0", - "php": "^7.2|^8.0" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0", - "phpunit/phpunit": "^8.0|^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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": "2022-01-12T15:07:43+00:00" - }, - { - "name": "laravel/serializable-closure", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/serializable-closure.git", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/65c9faf50d567b65d81764a44526545689e3fe63", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "pestphp/pest": "^1.18", - "phpstan/phpstan": "^0.12.98", - "symfony/var-dumper": "^5.3" - }, - "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": "2022-02-01T16:29:39+00:00" - }, - { - "name": "laravel/tinker", - "version": "v2.7.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/tinker.git", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/5f2f9815b7631b9f586a3de7933c25f9327d4073", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073", - "shasum": "" - }, - "require": { - "illuminate/console": "^6.0|^7.0|^8.0|^9.0", - "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.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", - "phpunit/phpunit": "^8.5.8|^9.3.3" - }, - "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.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.7.0" - }, - "time": "2022-01-10T08:52:49+00:00" - }, - { - "name": "league/commonmark", - "version": "2.2.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/commonmark.git", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "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.15" - }, - "require-dev": { - "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.0", - "commonmark/commonmark.js": "0.30.0", - "composer/package-versions-deprecated": "^1.8", - "erusev/parsedown": "^1.0", - "ext-json": "*", - "github/gfm": "0.29.0", - "michelf/php-markdown": "^1.4", - "phpstan/phpstan": "^0.12.88 || ^1.0.0", - "phpunit/phpunit": "^9.5.5", - "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", - "unleashedtech/php-coding-standard": "^3.1", - "vimeo/psalm": "^4.7.3" - }, - "suggest": { - "symfony/yaml": "v2.3+ required if using the Front Matter extension" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.3-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": "2022-01-25T14:37:33+00:00" - }, - { - "name": "league/config", - "version": "v1.1.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/config.git", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/config/zipball/a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^3.0.1", - "nette/schema": "^1.2", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.90", - "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": "2021-08-14T12:15:32+00:00" - }, - { - "name": "league/flysystem", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9f8b4260031bfef5497477da53dd57b2aaff0e06", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06", - "shasum": "" - }, - "require": { - "ext-json": "*", - "league/mime-type-detection": "^1.0.0", - "php": "^8.0.2" - }, - "conflict": { - "guzzlehttp/guzzle": "<7.0", - "guzzlehttp/ringphp": "<1.1.1", - "symfony/http-client": "<5.2" - }, - "require-dev": { - "async-aws/s3": "^1.5", - "async-aws/simple-s3": "^1.0", - "aws/aws-sdk-php": "^3.198.1", - "composer/semver": "^3.0", - "ext-fileinfo": "*", - "ext-ftp": "*", - "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.5", - "google/cloud-storage": "^1.23", - "phpseclib/phpseclib": "^2.0", - "phpstan/phpstan": "^0.12.26", - "phpunit/phpunit": "^9.5.11", - "sabre/dav": "^4.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.0.3" - }, - "funding": [ - { - "url": "https://offset.earth/frankdejonge", - "type": "custom" - }, - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2022-01-31T19:41:04+00:00" - }, - { - "name": "league/mime-type-detection", - "version": "1.9.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/aa70e813a6ad3d1558fc927863d47309b4c23e69", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.2", - "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" - }, - "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.9.0" - }, - "funding": [ - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2021-11-21T11:48:40+00:00" - }, - { - "name": "monolog/monolog", - "version": "2.3.5", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd4380d6fc37626e2f799f29d91195040137eba9", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "provide": { - "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7", - "graylog2/gelf-php": "^1.4.2", - "mongodb/mongodb": "^1.8", - "php-amqplib/php-amqplib": "~2.4 || ^3", - "php-console/php-console": "^3.1.3", - "phpspec/prophecy": "^1.6.1", - "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5", - "predis/predis": "^1.1", - "rollbar/rollbar": "^1.3", - "ruflin/elastica": ">=0.90@dev", - "swiftmailer/swiftmailer": "^5.3|^6.0" - }, - "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", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "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": "2.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/2.3.5" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" - } - ], - "time": "2021-10-01T21:08:31+00:00" - }, - { - "name": "nesbot/carbon", - "version": "2.56.0", - "source": { - "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1.8 || ^8.0", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "doctrine/dbal": "^2.0 || ^3.0", - "doctrine/orm": "^2.7", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "phpmd/phpmd": "^2.9", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.54 || ^1.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.14", - "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://opencollective.com/Carbon", - "type": "open_collective" - }, - { - "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", - "type": "tidelift" - } - ], - "time": "2022-01-21T17:08:38+00:00" - }, - { - "name": "nette/schema", - "version": "v1.2.2", - "source": { - "type": "git", - "url": "https://github.com/nette/schema.git", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/9a39cef03a5b34c7de64f551538cbba05c2be5df", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df", - "shasum": "" - }, - "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": ">=7.1 <8.2" - }, - "require-dev": { - "nette/tester": "^2.3 || ^2.4", - "phpstan/phpstan-nette": "^0.12", - "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.2" - }, - "time": "2021-10-15T11:40:02+00:00" - }, - { - "name": "nette/utils", - "version": "v3.2.7", - "source": { - "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/0af4e3de4df9f1543534beab255ccf459e7a2c99", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99", - "shasum": "" - }, - "require": { - "php": ">=7.2 <8.2" - }, - "conflict": { - "nette/di": "<3.0.6" - }, - "require-dev": { - "nette/tester": "~2.0", - "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.3" - }, - "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()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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 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/v3.2.7" - }, - "time": "2022-01-24T11:29:14+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.13.2", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", - "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.13.2" - }, - "time": "2021-11-30T19:35:32+00:00" - }, - { - "name": "phpoption/phpoption", - "version": "1.8.1", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-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.8.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", - "type": "tidelift" - } - ], - "time": "2021-12-04T23:24:31+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.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.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": "http://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/tree/master" - }, - "time": "2020-06-29T06:28:15+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.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": "http://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/master" - }, - "time": "2019-04-30T12:38:16+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.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": "http://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/master" - }, - "time": "2016-08-06T14:39: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.1", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "570292577277f06f590635381a7f761a6cf4f026" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/570292577277f06f590635381a7f761a6cf4f026", - "reference": "570292577277f06f590635381a7f761a6cf4f026", - "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" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "3.17.05.02" - }, - "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.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." - }, - "bin": [ - "bin/psysh" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "0.11.x-dev" - } - }, - "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.1" - }, - "time": "2022-01-03T13:58:38+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": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/ramsey/collection.git", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "shasum": "" - }, - "require": { - "php": "^7.3 || ^8", - "symfony/polyfill-php81": "^1.23" - }, - "require-dev": { - "captainhook/captainhook": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "ergebnis/composer-normalize": "^2.6", - "fakerphp/faker": "^1.5", - "hamcrest/hamcrest-php": "^2", - "jangregor/phpstan-prophecy": "^0.8", - "mockery/mockery": "^1.3", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1", - "phpstan/phpstan": "^0.12.32", - "phpstan/phpstan-mockery": "^0.12.5", - "phpstan/phpstan-phpunit": "^0.12.11", - "phpunit/phpunit": "^8.5 || ^9", - "psy/psysh": "^0.10.4", - "slevomat/coding-standard": "^6.3", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.4" - }, - "type": "library", - "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/1.2.2" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "time": "2021-10-10T03:01:02+00:00" - }, - { - "name": "ramsey/uuid", - "version": "4.2.3", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "shasum": "" - }, - "require": { - "brick/math": "^0.8 || ^0.9", - "ext-json": "*", - "php": "^7.2 || ^8.0", - "ramsey/collection": "^1.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php80": "^1.14" - }, - "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", - "moontoast/math": "^1.1", - "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.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-mockery": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^8.5 || ^9", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" - }, - "suggest": { - "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-ctype": "Enables faster processing of character classification using ctype functions.", - "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": { - "branch-alias": { - "dev-main": "4.x-dev" - }, - "captainhook": { - "force-install": true - } - }, - "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "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.2.3" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2021-09-25T23:10:38+00:00" - }, - { - "name": "symfony/console", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/22e8efd019c3270c4f79376234a3f8752cd25490", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.4|^6.0" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/css-selector", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/1955d595c12c111629cc814d3f2a2ff13580508a", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a", - "shasum": "" - }, - "require": { - "php": ">=8.0.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/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-11-01T23:48:49+00:00" - }, - { - "name": "symfony/error-handler", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/20343b3bad7ebafa38138ddcb97290a24722b57b", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" - }, - "bin": [ - "Resources/bin/patch-type-declarations" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to manage errors and ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6472ea2dd415e925b90ca82be64b8bc6157f3934", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/event-dispatcher-contracts": "^2|^3" - }, - "conflict": { - "symfony/dependency-injection": "<5.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^5.4|^6.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/aa5422287b75594b90ee9cd807caf8f0df491385", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/event-dispatcher": "^1" - }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-07-15T12:33:35+00:00" - }, - { - "name": "symfony/finder", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/8661b74dbabc23223f38c9b99d3f8ade71170430", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ad157299ced81a637fade1efcadd688d6deba5c1", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1" - }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/cache": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0" - }, - "suggest": { - "symfony/mime": "To use the file extension guesser" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v6.0.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/error-handler": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", - "symfony/twig-bridge": "<5.4", - "symfony/validator": "<5.4", - "twig/twig": "<2.13" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/process": "^5.4|^6.0", - "symfony/routing": "^5.4|^6.0", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-29T18:12:46+00:00" - }, - { - "name": "symfony/mailer", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mailer.git", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "shasum": "" - }, - "require": { - "egulias/email-validator": "^2.1.10|^3", - "php": ">=8.0.2", - "psr/event-dispatcher": "^1", - "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3" - }, - "conflict": { - "symfony/http-kernel": "<5.4" - }, - "require-dev": { - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/messenger": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/mime", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/2cd9601efd040e56f43360daa68f3c6b0534923a", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "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" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "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.24.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": "2021-10-20T20:35:02+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-11-23T21:10:46+00:00" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44", - "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.23-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.24.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": "2021-09-14T14:02:44+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.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": "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.24.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": "2021-11-30T18:21:41+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-05-27T09:17:38+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:33+00:00" - }, - { - "name": "symfony/polyfill-php81", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:11+00:00" - }, - { - "name": "symfony/process", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/298ed357274c1868c20a0061df256a1250a6c4af", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/routing", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/yaml": "<5.4" - }, - "require-dev": { - "doctrine/annotations": "^1.12", - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/36715ebf9fb9db73db0cb24263c79077c6fe8603", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/container": "^2.0" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "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.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": "2021-11-04T17:53:12+00:00" - }, - { - "name": "symfony/string", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/522144f0c4c004c80d56fa47e40e17028e2eefc2", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.0" - }, - "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/translation-contracts": "^2.0|^3.0", - "symfony/var-exporter": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "files": [ - "Resources/functions.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 an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/translation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/71bb15335798f8c4da110911bcf2d2fead7a430d", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.3|^3.0" - }, - "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" - }, - "provide": { - "symfony/translation-implementation": "2.3|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-07T00:29:03+00:00" - }, - { - "name": "symfony/translation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "suggest": { - "symfony/translation-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - } - }, - "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.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": "2021-09-07T12:43:40+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7b701676fc64f9ef11f9b4870f16b48f66be4834", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<5.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-17T16:30:44+00:00" - }, - { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.4", - "source": { - "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" - } - ], - "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", - "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "support": { - "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" - }, - "time": "2021-12-08T09:12:39+00:00" - }, - { - "name": "vlucas/phpdotenv", - "version": "v5.4.1", - "source": { - "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", - "shasum": "" - }, - "require": { - "ext-pcre": "*", - "graham-campbell/result-type": "^1.0.2", - "php": "^7.1.3 || ^8.0", - "phpoption/phpoption": "^1.8", - "symfony/polyfill-ctype": "^1.23", - "symfony/polyfill-mbstring": "^1.23.1", - "symfony/polyfill-php80": "^1.23.1" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" - }, - "suggest": { - "ext-filter": "Required to use the boolean validator." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.4-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.4.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", - "type": "tidelift" - } - ], - "time": "2021-12-12T23:22:04+00:00" - }, - { - "name": "voku/portable-ascii", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/voku/portable-ascii.git", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/9bd89e83cecdf8c37b64909454249eaed98b2c89", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89", - "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.0" - }, - "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-01-24T18:59:03+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "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.10.0" - }, - "time": "2021-03-09T10:59:23+00:00" - } - ], - "packages-dev": [ - { - "name": "doctrine/instantiator", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.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%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2020-11-10T18:47:58+00:00" - }, - { - "name": "facade/ignition-contracts", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/facade/ignition-contracts.git", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^v2.15.8", - "phpunit/phpunit": "^9.3.11", - "vimeo/psalm": "^3.17.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Facade\\IgnitionContracts\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://flareapp.io", - "role": "Developer" - } - ], - "description": "Solution contracts for Ignition", - "homepage": "https://github.com/facade/ignition-contracts", - "keywords": [ - "contracts", - "flare", - "ignition" - ], - "support": { - "issues": "https://github.com/facade/ignition-contracts/issues", - "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" - }, - "time": "2020-10-16T08:27:54+00:00" - }, - { - "name": "fakerphp/faker", - "version": "v1.19.0", - "source": { - "type": "git", - "url": "https://github.com/FakerPHP/Faker.git", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^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": "*", - "symfony/phpunit-bridge": "^4.4 || ^5.2" - }, - "suggest": { - "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", - "ext-curl": "Required by Faker\\Provider\\Image to download images.", - "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", - "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.19-dev" - } - }, - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "François Zaninotto" - } - ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], - "support": { - "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0" - }, - "time": "2022-02-02T17:38:57+00:00" - }, - { - "name": "filp/whoops", - "version": "2.14.5", - "source": { - "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "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.14.5" - }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "time": "2022-01-07T12:00:00+00:00" - }, - { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "shasum": "" - }, - "require": { - "php": "^5.3|^7.0|^8.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" - }, - "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "classmap": [ - "hamcrest" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "This is the PHP port of Hamcrest Matchers", - "keywords": [ - "test" - ], - "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" - }, - "time": "2020-07-09T08:09:16+00:00" - }, - { - "name": "laravel/sail", - "version": "v1.13.2", - "source": { - "type": "git", - "url": "https://github.com/laravel/sail.git", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.0|^9.0", - "illuminate/contracts": "^8.0|^9.0", - "illuminate/support": "^8.0|^9.0", - "php": "^7.3|^8.0" - }, - "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": "2022-02-08T14:14:12+00:00" - }, - { - "name": "mockery/mockery", - "version": "1.5.0", - "source": { - "type": "git", - "url": "https://github.com/mockery/mockery.git", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "shasum": "" - }, - "require": { - "hamcrest/hamcrest-php": "^2.0.1", - "lib-pcre": ">=7.0", - "php": "^7.3 || ^8.0" - }, - "conflict": { - "phpunit/phpunit": "<8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-0": { - "Mockery": "library/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" - } - ], - "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": { - "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.5.0" - }, - "time": "2022-01-20T13:18:17+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.10.2", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "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.10.2" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2020-11-13T09:40:50+00:00" - }, - { - "name": "nunomaduro/collision", - "version": "v6.1.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/collision.git", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "shasum": "" - }, - "require": { - "facade/ignition-contracts": "^1.0.2", - "filp/whoops": "^2.14.5", - "php": "^8.0.0", - "symfony/console": "^6.0.2" - }, - "require-dev": { - "brianium/paratest": "^6.4.1", - "laravel/framework": "^9.0", - "nunomaduro/larastan": "^1.0.2", - "nunomaduro/mock-final-classes": "^1.1.0", - "orchestra/testbench": "^7.0.0", - "phpunit/phpunit": "^9.5.11" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "6.x-dev" - }, - "laravel": { - "providers": [ - "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" - ] - } - }, - "autoload": { - "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": "2022-01-18T17:49:08+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.1.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/15a90844ad40f127afd244c0cad228de2a80052a", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a", - "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.1.1" - }, - "time": "2022-02-07T21:56:48+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.6.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "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.6.0" - }, - "time": "2022-01-04T19:58:01+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" - }, - "time": "2021-12-08T12:19:24+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "9.2.10", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d5850aaf931743067f4bfc1ae4cbd06468400687", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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 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", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.10" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-05T09:12:13+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "3.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-02T12:48:52+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "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/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:58:55+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T05:33:50+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.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/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:16:10+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "9.5.13", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/597cb647654ede35e43b137926dfdfef0fb11743", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.3.1", - "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": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.7", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", - "sebastian/version": "^3.0.2" - }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.13" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-01-24T07:33:35+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:08:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "1.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:08:54+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:30:19+00:00" - }, - { - "name": "sebastian/comparator", - "version": "4.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:49:45+00:00" - }, - { - "name": "sebastian/complexity", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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 calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:52:27+00:00" - }, - { - "name": "sebastian/diff", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:10:38+00:00" - }, - { - "name": "sebastian/environment", - "version": "5.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-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": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:52:38+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "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", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-11-11T14:18:36+00:00" - }, - { - "name": "sebastian/global-state", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-11T13:31:12+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-28T06:42:11+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "http://www.github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:17:30+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:45:17+00:00" - }, - { - "name": "sebastian/type", - "version": "2.3.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-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/2.3.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-15T12:49:02+00:00" - }, - { - "name": "sebastian/version", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:39:44+00:00" - }, - { - "name": "spatie/backtrace", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/backtrace.git", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "ext-json": "*", - "phpunit/phpunit": "^9.3", - "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": { - "issues": "https://github.com/spatie/backtrace/issues", - "source": "https://github.com/spatie/backtrace/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/sponsors/spatie", - "type": "github" - }, - { - "url": "https://spatie.be/open-source/support-us", - "type": "other" - } - ], - "time": "2021-11-09T10:57:15+00:00" - }, - { - "name": "spatie/flare-client-php", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/flare-client-php.git", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "shasum": "" - }, - "require": { - "illuminate/pipeline": "^8.0|^9.0", - "php": "^8.0", - "spatie/backtrace": "^1.2", - "symfony/http-foundation": "^5.0|^6.0", - "symfony/mime": "^5.2|^6.0", - "symfony/process": "^5.2|^6.0", - "symfony/var-dumper": "^5.2|^6.0" - }, - "require-dev": { - "dms/phpunit-arraysubset-asserts": "^0.3.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/phpunit-snapshot-assertions": "^4.0" - }, - "type": "library", - "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.0.1" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2022-02-04T15:21:00+00:00" - }, - { - "name": "spatie/ignition", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/spatie/ignition.git", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/d2d5ba823af3004268556e87dfc94449e4159f5a", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "monolog/monolog": "^2.0", - "php": "^8.0", - "spatie/flare-client-php": "^1.0", - "symfony/console": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "mockery/mockery": "^1.4", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/ray": "^1.32", - "symfony/process": "^5.4|^6.0" - }, - "type": "library", - "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": "2022-01-19T12:57:41+00:00" - }, - { - "name": "spatie/laravel-ignition", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/68250225a9f83b086462c2af1b1139dfde48fbd2", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*", - "illuminate/support": "^8.77|^9.0", - "monolog/monolog": "^2.3", - "php": "^8.0", - "spatie/flare-client-php": "^1.0.1", - "spatie/ignition": "^1.0", - "symfony/console": "^5.0|^6.0", - "symfony/var-dumper": "^5.0|^6.0" - }, - "require-dev": { - "filp/whoops": "^2.14", - "livewire/livewire": "^2.8|dev-develop", - "mockery/mockery": "^1.4", - "nunomaduro/larastan": "^1.0", - "orchestra/testbench": "^6.23|^7.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/laravel-ray": "^1.27" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Spatie\\LaravelIgnition\\IgnitionServiceProvider" - ], - "aliases": { - "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" - } - } - }, - "autoload": { - "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": "2022-02-04T15:25:56+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2021-07-28T10:34:58+00:00" - } - ], - "aliases": [], - "minimum-stability": "dev", - "stability-flags": [], - "prefer-stable": true, - "prefer-lowest": false, - "platform": { - "php": "^8.0" - }, - "platform-dev": [], - "plugin-api-version": "2.1.0" -} diff --git a/Chapter07/onlineStore/config/app.php b/Chapter07/onlineStore/config/app.php deleted file mode 100644 index 1941d7c..0000000 --- a/Chapter07/onlineStore/config/app.php +++ /dev/null @@ -1,197 +0,0 @@ - env('APP_NAME', 'Laravel'), - - /* - |-------------------------------------------------------------------------- - | Application Environment - |-------------------------------------------------------------------------- - | - | This value determines the "environment" your application is currently - | running in. This may determine how you prefer to configure various - | services the application utilizes. Set this in your ".env" file. - | - */ - - 'env' => env('APP_ENV', 'production'), - - /* - |-------------------------------------------------------------------------- - | Application Debug Mode - |-------------------------------------------------------------------------- - | - | When your application is in debug mode, detailed error messages with - | stack traces will be shown on every error that occurs within your - | application. If disabled, a simple generic error page is shown. - | - */ - - 'debug' => (bool) env('APP_DEBUG', false), - - /* - |-------------------------------------------------------------------------- - | Application URL - |-------------------------------------------------------------------------- - | - | This URL is used by the console to properly generate URLs when using - | the Artisan command line tool. You should set this to the root of - | your application so that it is used when running Artisan tasks. - | - */ - - 'url' => env('APP_URL', 'http://localhost'), - - 'asset_url' => env('ASSET_URL', null), - - /* - |-------------------------------------------------------------------------- - | 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', - - /* - |-------------------------------------------------------------------------- - | 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' => [ - - /* - * Laravel Framework Service Providers... - */ - Illuminate\Auth\AuthServiceProvider::class, - Illuminate\Broadcasting\BroadcastServiceProvider::class, - Illuminate\Bus\BusServiceProvider::class, - Illuminate\Cache\CacheServiceProvider::class, - Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, - Illuminate\Cookie\CookieServiceProvider::class, - Illuminate\Database\DatabaseServiceProvider::class, - Illuminate\Encryption\EncryptionServiceProvider::class, - Illuminate\Filesystem\FilesystemServiceProvider::class, - Illuminate\Foundation\Providers\FoundationServiceProvider::class, - Illuminate\Hashing\HashServiceProvider::class, - Illuminate\Mail\MailServiceProvider::class, - Illuminate\Notifications\NotificationServiceProvider::class, - Illuminate\Pagination\PaginationServiceProvider::class, - Illuminate\Pipeline\PipelineServiceProvider::class, - Illuminate\Queue\QueueServiceProvider::class, - Illuminate\Redis\RedisServiceProvider::class, - Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, - Illuminate\Session\SessionServiceProvider::class, - Illuminate\Translation\TranslationServiceProvider::class, - Illuminate\Validation\ValidationServiceProvider::class, - Illuminate\View\ViewServiceProvider::class, - - /* - * 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, - - ], - - /* - |-------------------------------------------------------------------------- - | 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([ - // ... - ])->toArray(), - -]; diff --git a/Chapter07/onlineStore/config/auth.php b/Chapter07/onlineStore/config/auth.php deleted file mode 100644 index d8c6cee..0000000 --- a/Chapter07/onlineStore/config/auth.php +++ /dev/null @@ -1,111 +0,0 @@ - [ - '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 expire 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. - | - */ - - 'passwords' => [ - 'users' => [ - 'provider' => 'users', - 'table' => 'password_resets', - '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/Chapter07/onlineStore/config/broadcasting.php b/Chapter07/onlineStore/config/broadcasting.php deleted file mode 100644 index 67fcbbd..0000000 --- a/Chapter07/onlineStore/config/broadcasting.php +++ /dev/null @@ -1,67 +0,0 @@ - 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'), - 'useTLS' => true, - ], - '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/Chapter07/onlineStore/config/cache.php b/Chapter07/onlineStore/config/cache.php deleted file mode 100644 index 8736c7a..0000000 --- a/Chapter07/onlineStore/config/cache.php +++ /dev/null @@ -1,110 +0,0 @@ - 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'), - ], - - '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 a RAM based store such as APC or Memcached, there might - | be other applications utilizing the same cache. So, we'll specify a - | value to get prefixed to all our keys so we can avoid collisions. - | - */ - - 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'), - -]; diff --git a/Chapter07/onlineStore/config/cors.php b/Chapter07/onlineStore/config/cors.php deleted file mode 100644 index 8a39e6d..0000000 --- a/Chapter07/onlineStore/config/cors.php +++ /dev/null @@ -1,34 +0,0 @@ - ['api/*', 'sanctum/csrf-cookie'], - - 'allowed_methods' => ['*'], - - 'allowed_origins' => ['*'], - - 'allowed_origins_patterns' => [], - - 'allowed_headers' => ['*'], - - 'exposed_headers' => [], - - 'max_age' => 0, - - 'supports_credentials' => false, - -]; diff --git a/Chapter07/onlineStore/config/database.php b/Chapter07/onlineStore/config/database.php deleted file mode 100644 index 0faebae..0000000 --- a/Chapter07/onlineStore/config/database.php +++ /dev/null @@ -1,147 +0,0 @@ - env('DB_CONNECTION', 'mysql'), - - /* - |-------------------------------------------------------------------------- - | Database Connections - |-------------------------------------------------------------------------- - | - | Here are each of the database connections setup for your application. - | Of course, examples of configuring each database platform that is - | supported by Laravel is shown below to make development simple. - | - | - | All database work in Laravel is done through the PHP PDO facilities - | so make sure you have the driver for your particular database of - | choice installed on your machine before you begin development. - | - */ - - 'connections' => [ - - 'sqlite' => [ - 'driver' => 'sqlite', - 'url' => env('DATABASE_URL'), - 'database' => env('DB_DATABASE', database_path('database.sqlite')), - 'prefix' => '', - 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), - ], - - 'mysql' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '3306'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'unix_socket' => env('DB_SOCKET', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - 'pgsql' => [ - 'driver' => 'pgsql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '5432'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - 'search_path' => 'public', - 'sslmode' => 'prefer', - ], - - 'sqlsrv' => [ - 'driver' => 'sqlsrv', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', 'localhost'), - 'port' => env('DB_PORT', '1433'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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'), - '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'), - 'password' => env('REDIS_PASSWORD'), - 'port' => env('REDIS_PORT', '6379'), - 'database' => env('REDIS_CACHE_DB', '1'), - ], - - ], - -]; diff --git a/Chapter07/onlineStore/config/filesystems.php b/Chapter07/onlineStore/config/filesystems.php deleted file mode 100644 index cf5abce..0000000 --- a/Chapter07/onlineStore/config/filesystems.php +++ /dev/null @@ -1,73 +0,0 @@ - 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 setup for each driver as an example of the required options. - | - | Supported Drivers: "local", "ftp", "sftp", "s3" - | - */ - - 'disks' => [ - - 'local' => [ - 'driver' => 'local', - 'root' => storage_path('app'), - ], - - 'public' => [ - 'driver' => 'local', - 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', - 'visibility' => 'public', - ], - - '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), - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter07/onlineStore/config/hashing.php b/Chapter07/onlineStore/config/hashing.php deleted file mode 100644 index bcd3be4..0000000 --- a/Chapter07/onlineStore/config/hashing.php +++ /dev/null @@ -1,52 +0,0 @@ - '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/Chapter07/onlineStore/config/logging.php b/Chapter07/onlineStore/config/logging.php deleted file mode 100644 index fefe088..0000000 --- a/Chapter07/onlineStore/config/logging.php +++ /dev/null @@ -1,119 +0,0 @@ - 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' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), - - /* - |-------------------------------------------------------------------------- - | 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'), - ], - - 'daily' => [ - 'driver' => 'daily', - 'path' => storage_path('logs/laravel.log'), - 'level' => env('LOG_LEVEL', 'debug'), - 'days' => 14, - ], - - 'slack' => [ - 'driver' => 'slack', - 'url' => env('LOG_SLACK_WEBHOOK_URL'), - 'username' => 'Laravel Log', - 'emoji' => ':boom:', - 'level' => env('LOG_LEVEL', 'critical'), - ], - - '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'), - ], - ], - - 'stderr' => [ - 'driver' => 'monolog', - 'level' => env('LOG_LEVEL', 'debug'), - 'handler' => StreamHandler::class, - 'formatter' => env('LOG_STDERR_FORMATTER'), - 'with' => [ - 'stream' => 'php://stderr', - ], - ], - - 'syslog' => [ - 'driver' => 'syslog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'errorlog' => [ - 'driver' => 'errorlog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'null' => [ - 'driver' => 'monolog', - 'handler' => NullHandler::class, - ], - - 'emergency' => [ - 'path' => storage_path('logs/laravel.log'), - ], - ], - -]; diff --git a/Chapter07/onlineStore/config/mail.php b/Chapter07/onlineStore/config/mail.php deleted file mode 100644 index 87b6fe3..0000000 --- a/Chapter07/onlineStore/config/mail.php +++ /dev/null @@ -1,117 +0,0 @@ - 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", - | "postmark", "log", "array", "failover" - | - */ - - 'mailers' => [ - 'smtp' => [ - 'transport' => 'smtp', - '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, - ], - - 'ses' => [ - 'transport' => 'ses', - ], - - 'mailgun' => [ - 'transport' => 'mailgun', - ], - - 'postmark' => [ - 'transport' => 'postmark', - ], - - 'sendmail' => [ - 'transport' => 'sendmail', - 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -t -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/Chapter07/onlineStore/config/queue.php b/Chapter07/onlineStore/config/queue.php deleted file mode 100644 index 25ea5a8..0000000 --- a/Chapter07/onlineStore/config/queue.php +++ /dev/null @@ -1,93 +0,0 @@ - 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, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter07/onlineStore/config/sanctum.php b/Chapter07/onlineStore/config/sanctum.php deleted file mode 100644 index 9281c92..0000000 --- a/Chapter07/onlineStore/config/sanctum.php +++ /dev/null @@ -1,65 +0,0 @@ - explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( - '%s%s', - 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', - env('APP_URL') ? ','.parse_url(env('APP_URL'), PHP_URL_HOST) : '' - ))), - - /* - |-------------------------------------------------------------------------- - | 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/Chapter07/onlineStore/config/services.php b/Chapter07/onlineStore/config/services.php deleted file mode 100644 index 2a1d616..0000000 --- a/Chapter07/onlineStore/config/services.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - 'domain' => env('MAILGUN_DOMAIN'), - 'secret' => env('MAILGUN_SECRET'), - 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), - ], - - '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/Chapter07/onlineStore/config/session.php b/Chapter07/onlineStore/config/session.php deleted file mode 100644 index 8fed97c..0000000 --- a/Chapter07/onlineStore/config/session.php +++ /dev/null @@ -1,201 +0,0 @@ - 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/Chapter07/onlineStore/config/view.php b/Chapter07/onlineStore/config/view.php deleted file mode 100644 index 22b8a18..0000000 --- a/Chapter07/onlineStore/config/view.php +++ /dev/null @@ -1,36 +0,0 @@ - [ - 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/Chapter07/onlineStore/database/.gitignore b/Chapter07/onlineStore/database/.gitignore deleted file mode 100644 index 9b19b93..0000000 --- a/Chapter07/onlineStore/database/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.sqlite* diff --git a/Chapter07/onlineStore/database/factories/UserFactory.php b/Chapter07/onlineStore/database/factories/UserFactory.php deleted file mode 100644 index d6ca926..0000000 --- a/Chapter07/onlineStore/database/factories/UserFactory.php +++ /dev/null @@ -1,42 +0,0 @@ - - */ -class UserFactory extends Factory -{ - /** - * Define the model's default state. - * - * @return array - */ - public function definition() - { - return [ - 'name' => $this->faker->name(), - 'email' => $this->faker->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. - * - * @return \Illuminate\Database\Eloquent\Factories\Factory - */ - public function unverified() - { - return $this->state(function (array $attributes) { - return [ - 'email_verified_at' => null, - ]; - }); - } -} diff --git a/Chapter07/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php b/Chapter07/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php deleted file mode 100644 index cf6b776..0000000 --- a/Chapter07/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->string('name'); - $table->string('email')->unique(); - $table->timestamp('email_verified_at')->nullable(); - $table->string('password'); - $table->rememberToken(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('users'); - } -}; diff --git a/Chapter07/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php b/Chapter07/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php deleted file mode 100644 index fcacb80..0000000 --- a/Chapter07/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php +++ /dev/null @@ -1,32 +0,0 @@ -string('email')->index(); - $table->string('token'); - $table->timestamp('created_at')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('password_resets'); - } -}; diff --git a/Chapter07/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/Chapter07/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php deleted file mode 100644 index 1719198..0000000 --- a/Chapter07/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php +++ /dev/null @@ -1,36 +0,0 @@ -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. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('failed_jobs'); - } -}; diff --git a/Chapter07/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/Chapter07/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php deleted file mode 100644 index fd235f8..0000000 --- a/Chapter07/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->morphs('tokenable'); - $table->string('name'); - $table->string('token', 64)->unique(); - $table->text('abilities')->nullable(); - $table->timestamp('last_used_at')->nullable(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('personal_access_tokens'); - } -}; diff --git a/Chapter07/onlineStore/database/seeders/DatabaseSeeder.php b/Chapter07/onlineStore/database/seeders/DatabaseSeeder.php deleted file mode 100644 index 71f673f..0000000 --- a/Chapter07/onlineStore/database/seeders/DatabaseSeeder.php +++ /dev/null @@ -1,19 +0,0 @@ -create(); - } -} diff --git a/Chapter07/onlineStore/lang/en.json b/Chapter07/onlineStore/lang/en.json deleted file mode 100644 index 577680d..0000000 --- a/Chapter07/onlineStore/lang/en.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "The :attribute must contain at least one letter.": "The :attribute must contain at least one letter.", - "The :attribute must contain at least one number.": "The :attribute must contain at least one number.", - "The :attribute must contain at least one symbol.": "The :attribute must contain at least one symbol.", - "The :attribute must contain at least one uppercase and one lowercase letter.": "The :attribute must contain at least one uppercase and one lowercase letter.", - "The given :attribute has appeared in a data leak. Please choose a different :attribute.": "The given :attribute has appeared in a data leak. Please choose a different :attribute." -} diff --git a/Chapter07/onlineStore/lang/en/auth.php b/Chapter07/onlineStore/lang/en/auth.php deleted file mode 100644 index 6598e2c..0000000 --- a/Chapter07/onlineStore/lang/en/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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/Chapter07/onlineStore/lang/en/pagination.php b/Chapter07/onlineStore/lang/en/pagination.php deleted file mode 100644 index d481411..0000000 --- a/Chapter07/onlineStore/lang/en/pagination.php +++ /dev/null @@ -1,19 +0,0 @@ - '« Previous', - 'next' => 'Next »', - -]; diff --git a/Chapter07/onlineStore/lang/en/passwords.php b/Chapter07/onlineStore/lang/en/passwords.php deleted file mode 100644 index 2345a56..0000000 --- a/Chapter07/onlineStore/lang/en/passwords.php +++ /dev/null @@ -1,22 +0,0 @@ - '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/Chapter07/onlineStore/lang/en/validation.php b/Chapter07/onlineStore/lang/en/validation.php deleted file mode 100644 index 783003c..0000000 --- a/Chapter07/onlineStore/lang/en/validation.php +++ /dev/null @@ -1,163 +0,0 @@ - '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' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - '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' => [ - 'numeric' => 'The :attribute must be greater than :value.', - 'file' => 'The :attribute must be greater than :value kilobytes.', - 'string' => 'The :attribute must be greater than :value characters.', - 'array' => 'The :attribute must have more than :value items.', - ], - 'gte' => [ - 'numeric' => 'The :attribute must be greater than or equal to :value.', - 'file' => 'The :attribute must be greater than or equal to :value kilobytes.', - 'string' => 'The :attribute must be greater than or equal to :value characters.', - 'array' => 'The :attribute must have :value items or more.', - ], - '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' => [ - 'numeric' => 'The :attribute must be less than :value.', - 'file' => 'The :attribute must be less than :value kilobytes.', - 'string' => 'The :attribute must be less than :value characters.', - 'array' => 'The :attribute must have less than :value items.', - ], - 'lte' => [ - 'numeric' => 'The :attribute must be less than or equal to :value.', - 'file' => 'The :attribute must be less than or equal to :value kilobytes.', - 'string' => 'The :attribute must be less than or equal to :value characters.', - 'array' => 'The :attribute must not have more than :value items.', - ], - 'mac_address' => 'The :attribute must be a valid MAC address.', - 'max' => [ - 'numeric' => 'The :attribute must not be greater than :max.', - 'file' => 'The :attribute must not be greater than :max kilobytes.', - 'string' => 'The :attribute must not be greater than :max characters.', - 'array' => 'The :attribute must not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - '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.', - 'password' => 'The password is incorrect.', - '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' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - '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/Chapter07/onlineStore/package.json b/Chapter07/onlineStore/package.json deleted file mode 100644 index 7a9aecd..0000000 --- a/Chapter07/onlineStore/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "private": true, - "scripts": { - "dev": "npm run development", - "development": "mix", - "watch": "mix watch", - "watch-poll": "mix watch -- --watch-options-poll=1000", - "hot": "mix watch --hot", - "prod": "npm run production", - "production": "mix --production" - }, - "devDependencies": { - "axios": "^0.25", - "laravel-mix": "^6.0.6", - "lodash": "^4.17.19", - "postcss": "^8.1.14" - } -} diff --git a/Chapter07/onlineStore/phpunit.xml b/Chapter07/onlineStore/phpunit.xml deleted file mode 100644 index 2ac86a1..0000000 --- a/Chapter07/onlineStore/phpunit.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - ./tests/Unit - - - ./tests/Feature - - - - - ./app - - - - - - - - - - - - - - diff --git a/Chapter07/onlineStore/public/.htaccess b/Chapter07/onlineStore/public/.htaccess deleted file mode 100644 index 3aec5e2..0000000 --- a/Chapter07/onlineStore/public/.htaccess +++ /dev/null @@ -1,21 +0,0 @@ - - - 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/Chapter07/onlineStore/public/css/app.css b/Chapter07/onlineStore/public/css/app.css deleted file mode 100644 index cabac36..0000000 --- a/Chapter07/onlineStore/public/css/app.css +++ /dev/null @@ -1,20 +0,0 @@ -.bg-secondary { - background-color: #2c3e50 !important; -} - -.copyright { - background-color: #1a252f; -} - -.bg-primary { - background-color: #1abc9c !important; -} - -nav{ - font-weight: 700; -} - -.img-card{ - height: 18vw; - object-fit: cover; -} diff --git a/Chapter07/onlineStore/public/favicon.ico b/Chapter07/onlineStore/public/favicon.ico deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter07/onlineStore/public/img/game.png b/Chapter07/onlineStore/public/img/game.png deleted file mode 100644 index 85420e8bbc16098bf26b4ee63bde0e91a19d1f2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25896 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 cz>% diff --git a/Chapter07/onlineStore/public/img/safe.png b/Chapter07/onlineStore/public/img/safe.png deleted file mode 100644 index 445942c707af53210931f9f4f99f6d3cb69e5d89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19240 zcmcG$WmHse)Hkf6f+(ScNTUb?(jg6!BS;M;DbfQ72qGOSC5?2~(A^yh(m8Y^-90n| z&o%%1em}nJeZIV|HH&f1Ialnxubsbr{FN1z0)gS96-$ zp4IuJyY`*Y>6dib+W_gw3gbzJCF`EUiWfmv_IvF^+r}S_8XhlF-;K4W;EsJ=!u{Zm z@g?0-gVTvg+3)A&>{~Go1SQjd?#mLCY;30|$$pb<*D@0+;Wn@M=oNr_lz9BT`8@!sYom=skJ z#xB_%G{rBu9%KkN>}Lzepv#ci$)zjzUEWl{_J)14mKoqCkXM@fkXVPPnOsO_USm`I z5Z|XT-)+{5k*KHh_qjaqq{ZMyA+H`N0tpjLU`?g-$4%8E$O7xL z-~_|bE=a6DLLM0rG(I)VVLO|%H@9{-ygu!pf4Z34rf}PU`0bA{p#jmWU6=d3512G0 zsPS@9nbnH1=XY@sZ>|#KdvA6TPbD6W;*dMi1^K?c2p*>y@h1S+iiIu*>$8B#EW*+%h0ur^{wIN^#llD<^0+d#yrFEH@c5SGSj6ESg?OOepi6%}m+-z&s0^ z2J`*rD!mUGc}va^EsgV@ zEcAF53tX^v%Q)QVn8(b!@hdw5H*@>FzWdp$V&NxEFmkXca~@up+v-xW*w>36>8XLg z010(c2w7wGK4f|7G&zZnV4wD1~(7h2hntA?n#=b;2h;L-LdZaDuN9-O_ z^!E&i2_?np!A?@OfRwK#duTm+Ira-RSuA3}f_eJNFo#Kw-giR*%vs7Qs&d}K=t=7v z-ud>T&BkM-E(84BNFm9puT-YROan%NPWDEiO41HKeDbBxx0xLJdWvWvKm8kZwh6Jz)Y;pW zQ?Zj)%=1(f`YPllo(nIIP-0gJO-;vY+FH+)X$Q+If+Y61U=Q&7|1zxGYRjZO4GvYi z?qlpn7vEfs9{kE1`sU>xpQn`6MA&qFJP=~}+=n^?j2&_x2FF&&7)$`q6Ci1Ecdp#b zp9A7g%;t7o#fTm)PWsKO5)Xzyg$c|+!7@4w279ssP_{s&fU{eb4T($$!Bc|7J4=lcgP0a}3H5&^dtz8#;EJqFoDDI0Y#BE3TL`%l%FuNsUpB^w-7Hhot)^l75Ufu6%{}A`m>2St zFb5oyCGu!>M}L`j*>2r?g}ZK&opoqND@l22)h4iIRlGozz}>^%=LIUv^f(( z8v=GO435IiVupGOSpM0A=GN=8)0+tKbV5ro>w@Yh9Hxp;PQ+lc{znR<{zp&l(U^U- z0h~Kd7Ia?-z3I3y4ujCkobijH32sa;+H2I`ij(<#IQ3Dw{^xn|H{})f+hjmaK2a6) zwT~;wJsiYfVETrfk|)ZB_#XYJ&GiMZYJ6(tg|!fxD)SbrY`Xrb+i@TQtsKiA8Abi;J};US60QaTqo7e)A!OGSS+FKMbRW!13Y`Rq;R8 z(oLpnaB^OUiuHWxCy35-Pb%`gxMXBtxPL$B_q)LDf13v{G9w)O=3P5llAv;>qA?Oo zm*7aEe8#C!RX;dzXJyj|&~rVdqCR}r*2|Y`1p3K49)y%)cE-lWf2E^d(*<2uGZx*T z3HsVDSd!5ZjLR^1{3L2HLrLslqY zR;Z>`@aTGZ^A`=;ZLt%698y|y!jb5{-e@Rr`ChEChXN=e`_3=Tr-yqtr(!`He`4~` zH{(6kji?x-g@j~54riW9=AO8R!_@=5p@}u+{9#&wOH9Hi3#Zu(7#V7*e*gw}?l1cF zLPDP4`f&T-&B2a;N*@aTF9JIJ$=cwo*wcY$8QI$U%2xPVRn^&<*c%omW%Enw=JbXK z`2u}-2$?P%yYO^7cfeetEtRb}idb2JEyDl51Ts7l|a zA3|W%=>6rsg+HUQt4MAF-RrsY%TLd6FAb2c6Yrm(0oT5+F59~)E!=n10-8yFeaswOQ~c&p3k0S7B=}hLmCe;`r%;UFqSNvrJial7<`Ox; zxafL?ocnYL)MVHRJ$VBl%YlfKGf&_3w#`zbUA8cw-`n)9zVt6`@&!ub)Cz^?nQ5AQ zA>9btpqB4$8{F*eBL4U1#XR|M@A(MFYugeaVAOa~{?$*sVeno+ce?^J7U{WKu91hA z{ngB&Y-}twT*IsAtBKyLw=)CJ)fm#`4y=Kc;L#(`iWs%`f}5#ihc3%XN(i6lZgE>( zFU}f0;15*J>;w}^)P=9>avrtM2h(rQGDXQ9!l$m**NCE4-q`YE0 zVz(wm)(H$vOfswL;;E<|YO^}tnC{FWWXUoNJQ*ewdmvZc*)*QqoU#>aJ4%`~XzYH) zOL#Z^NAlq;@-*9PXP(a3?a2OiB8p;>Y!0$+?PT-JVh z7v$_u_|2y@abBOGV0$c-LtMBCvOESxwbxsrGDJ5;<}?aX^t>U|a$`Sf31t>i6%|&S z_q%B5H^)zu{Fa&q8-=?`yEK<_Kjb((DGBEUNBReSd;=QRl=8zA=FH<0UfMpKWxRcG zzXd{xiunWda|%(k6#D>v(-&um`W`|!{)xZV64RtQA$at6@%LiST^(ROy_3dI2ST&< zXCtAii*98yA@|d8%bZ18AQ>ZHlx|{{zlOcEOLKLORPc-|NWOS`=vxRZVKr&qHP9~! z4M!J&6%1hZm#Z?iBCR{+8T}^>u{6&yN zi}aU!;VusB=#|)NO=<-%vCHZDa2E^zM0IfJt|ZFd!<^T;mE}n5VxZ?;qc0xlEHS+t zCB{Ky=#`xcoqO^Ib|Z2hhr{zPD{2E8fONN=ulK z+Nuq^(NMgF=!3hb%6Dp8UlA%0Eg12GurqV{jod+C@nFg4XB6h}w}UKG z6{Dl0wY37yJhz`Tx2w{t!Mi@B;2RJ>S=pA{^SC(RBl3*@($*X55r6E!XH}>X0ga%; z3r2|Nj7hAl?#KZ1!Us$iFmB<#+?7BY<>(JAg{^R-5~84wWztSxZK(wnFsokz^=n{L z4X(ZnMj-#eZ1{jmDH;$vcaeKN=(=PBl^Ye^s}Yu4z8YZspJmuq6++2;sH5_3U*8-< z9rVJX=TTu&!yLg(;o%SBaS(*uxton;81Z-TpAXJWj!Gt!5myzDY0Yuer8Wr!IwoZx z%S0mu^Ltu#qJTh>Z)M{17&GkoTH$4d80h3K`l`8)e@xu)LusD2kMpRxq;Bkok&(M%%ov0c<~s? z-G)wS%c$zSd>$mh=MFffI`QZ;5=b26Qdz6Nw>R6`=%@0_%>qD1eAzV%hD?haAP{>^ z!rdOd#6vajw5G;tC4mV)Z`r$|^-+cH)X|5Qc`{MHc7Ypx|D`PAatavO2*OBF5UVf= zA2=4_Ai&sB{n1ETwa{p)mky|l$K1J88Dfovp`tN83X~$`P55|Sxf#gKO^ZwwEp6RL z`qjS3^Is#R?{esGkT-{7HNrn1vm*X>VNO})i}cO<4ar+**X9EXf~$6$8QTu3a7b=c zm$3{K8cHohdi@9=zZ>yOS=KjiXyrQxu2rsq*zttUhVW@mdGm#|>#4}8H<@5`Pc1!d zc%SK>u!ozQTf;T`+PjTLrHAU7ap1rWx@;s?6Hjg>!TbAKWFTsRRA_eZ9kPFT zM*fUylmWLol7c3*J(N_=oJO(GHnN5zA(_l+6LoKz&2wFnX6ib|-QB(Q#fydaHfQZ$ zCGrXi3t8FOW8P)%_eFaO+D%&l*I0Fq3lLf)tK#Wg6Go0-pknK`y)t3&I7Y?DkSos*m z>KWH(8YNG!mPU>_v(EZw%LHnOKPOQ;)$9j&xs~XplEyvJzG_t3b9H<`(x6=bMWB}; zepG%<=A=H2V)$sZ#~-vr&RaYOAh@Qn)x-i^+UhvpHi-?01?9>ip9w3q73e+<@dp4a z?Yg@WLvrVv9EkyO-M`*0bBf8^Iq$)=LdnjDcs{pMEu_irRqx%hcuy!}yNCY`m(+lG zrUom=NSy3tspxS{pV)1+@{G=J&r==c6^I8!QAKv^-=dvC_L_+Z6*RNk~4d||NHS)tDdQaI}J~PRT8`toY z{OksE)wM^zqf%yyc^c3b6-6Q~Ui=`&q=vusWgbNEw=WQ=e~OI{<=(wBY2MhdT6lu@ zG|x_X1suR^;L7)lUM1VXQ{-xO3pJv!8rgMorl3N!YPD&L7_#kS0y>3J!^?uAA`7CI zGA%0>S8(k3TM}*gl)$h*6+Mp4l$kouZ&Xvkse!`|h7wpZ#ZN^*Ol*og(V8qN-uxHy zY8!Q0uaK!{Q8~5RZCKr4U3fa8k+z68y7#bHBnPt2)@-*fy0kuR;Y=eb%^lafP+Gcg zhLN7k#^$dVm#rqGdNvC!LjN)YH=hD=*aYN%6;v_Gnjr1x=htB;prCB8S+m^Y^OUVQ zi(L<&O|97hTbk_U&L{bCYuDmWVqAjpvm$tJ>V10Hb-fjI>vFsS<9PX2PHwi-7Zw)M z(&$#+IQj&Bu0BClR`RY4TO)T6%Zaj4!FG(wJ0kX1;XcKDxiK@ohXq z_MM(VFk{`j9*EvieQ4d&y?Aj+=>(NR4V$@!+KP$_6VKHB<^}dvvB@u^Cb<I-UN zlHWR-lUhjty`-r*VI-$;mc9RNpTlIOEQl(9n=U9^u)W9eJi^B0^1gchXj@wwT9`{% z{xYXWrScKp%unV!buCWLhQ?M_R^0xkTyZZbHpidmMD`p}r0-tt|NHYtduo|WC^n`@y^n)xzjjkEdvn1z%UEPS+G zc!b@H59#Le7*eTWvNue37fEDV$6r80Nz2^=Z z@85r^otZtIDNn)n^Yg*BiL)js{m94Q4I6?@im>=UVYIZgjFVs8t>2rw3H8RFR>D!| z!9k!P`IC=@pdpkSHuSnDHu82V);a0oWSMIqW928-{he%MYs>Pv7A_(uQ=F_#gs-AK zy7tKG;;}LeSi|XO!BX3rY{VqII0*W`AmDY5za_$^HsZ4RSVoq?weK-hqe<#3UJK-b z?TJAT6IMxC4W={|0>0l`g0g<5QizP4_GMn2WM^y8L5-xz#s zLi`t$^8ECB5Az&V-u6JOYQ83yU15tbFE@i(fp*Iub=l0xqqw-dEN^WEAvCacb1Z6m zKqxb~8Ch?{+1m##O!VH9i=Q${Ee{Q;)E2WR^x>P7KWEBw9D2hiQrKiu#mv?CRPxn| zU8yo8rl&DcYKx$z!S;7lEF}lCGoWjxiyR}qVb0qCIqDMyJ`vWF1=kT(lsA~)E_X!L zNHQTLW7OiSlkwk-OBwZO?n&`W{G8>-GPc8yl1PFZu%fKRaE(ruuALkw-X1r*?QUAxV}Q(+U@-8zkxJ>3P^@C{(wa z5aK>+!8O{H)pxD-jPeSMtm|IjHWR|^}=*kO_{04_~Cez&z+p6 zkga~Kq0LFrFm({>nDcz~BhO=%5UvyD{xUx6m>}DjsVVV93uwXq1QtdRdjcU z!)PU`MLsg)L7QqyIJgAKlRI91&jSavqFhzC{%E~aXfG1_f==9*aLoQkP?gu7@%`BY zvS>c3Tzfb?r}ln-4g^0mxC@c9>Hng66h7Nnb{=I#s?rlI(E1NQUaEB6}pEmu%y!Ov*#xhLp35T)_ndi@RdU^|R%BT|K zdAxImZ?8;^<}=BrUP0ZF*c*6(uFg5PIj}D7nnCfzRMp91DM%SI>BV?H=(+B7N?l zIK?Z$3U!R9*4t-ve`fd#SE8$TFkYuzW+X}uiuW6-cv`I%vLJUS=LA^o107?_{;xuz z48=Br@f8&*P>t89se@|Q!OiP|y0lt-%)IyFyF|u|J_H|=%LsWF+MP!`vl$lA<%NsC9AsZ%g8Nm?vA~> z{ARHSd~tM|^JSCln}ya^SjJBMQFwHsRT;dtUnS47ii_DJx*mPPnXfKMm3R;o6ts;_ zOyj`5kKOw2G9z^=dmR4EXZdaK^2KqabN)$ZG$Zo(Aa~_(anbOM{KUEWGToJ0u?c1TQ*!-(NUYy`_wL<;PQ<93$zJ5-6n$Mo1LYki?ZjEOtEf&OuJCS(JfD&fvEd4YJUNVM6M>g*;z2V_-6+Ht1Yn#>|d8}z5NIe zZ--1Lp%dXsW93x)CoRqR(efL>Gh9^Bq?^abj~|_!_(QNgd+;yhGVS(7cXL!dTptB< z!P#OS-c&BzOLPmD8K6beYOLQe&jw{IpmB>mehZW1GA8ux>NWToxgzd>%t<*Y(2z(J z`!jIk;o-Gyl_0t#T^W&B4pw`wZ;NHLBRWD>+S@M(qH#_+s(#s8=I7IetrqJSi}}Kt zF4svHX@?Wi*JfUX%DnuBXQ#lxK)O(BdKO>CpsbxeSSJ=a6x5F3)nT8C^cts7 zVI4)3`_z5uFdF+|r6waUxS!EFsgTSN+**Ub$re6t-f+dAjG*WX zbx31)_hIKiH$WU9yCz^+J`#^KK2Fwa*;fnfU6$6>)xDg+BOoYVYeqn)`GhM<1Nb8z zU=!izdh}}%rzRxlRXR!@vUaTg=%xYdk88QQ66JH=OW#cH%H2pyhY=aMQ!M=b`?q-B zQNQXmnjFWE7@vi5Zgt+fb#5+oy3Ea{52R>ca@w`3`wT9vuC7j1e0O~}Vo^DZ&rZHI zY5$~9zll?oQ@87@1)4A!qQORj$N@M?W+nv^wpV5RvSx4*CNynpkrmSzs?g>IN;y_{5 zBlLQ4RdBtU5$U?uSPfle=2aFl<60=u35Pm9OafkIqp%YesBzuJJt!I{b=97HNx;kJ z<(#qdZbfW4K1x#H3ABF3>~eK>P&ANa<8qWit6XtX`f7Xfwo#jKV5-M6<(A z^V}T$am))RyGp>xK2+ea{y|5HQJf_urlM&{N=jN61$Ct4n3DRPck_#I9G~BuNq7M$ zzcgj|Xm2vS8#W^6GRS=C1rthiLOgTqh|ngH0q1T#ov@*9j}rj%VEmM6d;t2}va(#rl++oxfh3rU*~Ylw-vBY%(`Dw{P1CjxewTWceno z=Na$1tzVh2<3pL8rjDg^8|+3FSd|@PYOAh)Z5LShe@Zth6D5dWkp>>mu0unq>Tj+u zCAWqCT__vX&NMckSS~2Je=+^pfNk!E=SQsQ&>;b@ThArMNQv7R47BP=3SLdSkQ%iwhet~B=?i){gpu2vt1V<}SXN$$SyG%_ z=a%a3USICb>n3l|I`iCJDJ?DSyRot_8pW3`OrQqG;)60pSe#78Nd#x7=$v4YV zS5ZOyvK%lTD65^)H|E4|V%}@y(Onc46nH3~C9J1toFsaY?CjJ!SI~vN7U4<1j-
    w==XB0?3|p=#`o%NsudE(E-U#KS3Snw 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 o>ir+C;RN10sIS0&a;pmake(Kernel::class); - -$response = $kernel->handle( - $request = Request::capture() -)->send(); - -$kernel->terminate($request, $response); diff --git a/Chapter07/onlineStore/public/robots.txt b/Chapter07/onlineStore/public/robots.txt deleted file mode 100644 index eb05362..0000000 --- a/Chapter07/onlineStore/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: diff --git a/Chapter07/onlineStore/resources/css/app.css b/Chapter07/onlineStore/resources/css/app.css deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter07/onlineStore/resources/js/app.js b/Chapter07/onlineStore/resources/js/app.js deleted file mode 100644 index 40c55f6..0000000 --- a/Chapter07/onlineStore/resources/js/app.js +++ /dev/null @@ -1 +0,0 @@ -require('./bootstrap'); diff --git a/Chapter07/onlineStore/resources/js/bootstrap.js b/Chapter07/onlineStore/resources/js/bootstrap.js deleted file mode 100644 index 6922577..0000000 --- a/Chapter07/onlineStore/resources/js/bootstrap.js +++ /dev/null @@ -1,28 +0,0 @@ -window._ = require('lodash'); - -/** - * 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 = require('axios'); - -window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; - -/** - * 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'; - -// window.Pusher = require('pusher-js'); - -// window.Echo = new Echo({ -// broadcaster: 'pusher', -// key: process.env.MIX_PUSHER_APP_KEY, -// cluster: process.env.MIX_PUSHER_APP_CLUSTER, -// forceTLS: true -// }); diff --git a/Chapter07/onlineStore/resources/views/home/about.blade.php b/Chapter07/onlineStore/resources/views/home/about.blade.php deleted file mode 100644 index f79abf3..0000000 --- a/Chapter07/onlineStore/resources/views/home/about.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    -
    -
    -

    {{ $viewData["description"] }}

    -
    -
    -

    {{ $viewData["author"] }}

    -
    -
    -
    -@endsection diff --git a/Chapter07/onlineStore/resources/views/home/index.blade.php b/Chapter07/onlineStore/resources/views/home/index.blade.php deleted file mode 100644 index 1affb20..0000000 --- a/Chapter07/onlineStore/resources/views/home/index.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('content') -
    -
    - -
    -
    - -
    -
    - -
    -
    -@endsection diff --git a/Chapter07/onlineStore/resources/views/layouts/app.blade.php b/Chapter07/onlineStore/resources/views/layouts/app.blade.php deleted file mode 100644 index cb97098..0000000 --- a/Chapter07/onlineStore/resources/views/layouts/app.blade.php +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - @yield('title', 'Online Store') - - - -
    - -
    -
    -

    @yield('subtitle', 'A Laravel Online Store')

    -
    -
    - - -
    - @yield('content') -
    - - - - - - - diff --git a/Chapter07/onlineStore/resources/views/welcome.blade.php b/Chapter07/onlineStore/resources/views/welcome.blade.php deleted file mode 100644 index c587c72..0000000 --- a/Chapter07/onlineStore/resources/views/welcome.blade.php +++ /dev/null @@ -1,7 +0,0 @@ -@extends('layouts.app') -@section('title', 'Home Page - Online Store') -@section('content') -
    - Welcome to the application -
    -@endsection \ No newline at end of file diff --git a/Chapter07/onlineStore/routes/api.php b/Chapter07/onlineStore/routes/api.php deleted file mode 100644 index eb6fa48..0000000 --- a/Chapter07/onlineStore/routes/api.php +++ /dev/null @@ -1,19 +0,0 @@ -get('/user', function (Request $request) { - return $request->user(); -}); diff --git a/Chapter07/onlineStore/routes/channels.php b/Chapter07/onlineStore/routes/channels.php deleted file mode 100644 index 5d451e1..0000000 --- a/Chapter07/onlineStore/routes/channels.php +++ /dev/null @@ -1,18 +0,0 @@ -id === (int) $id; -}); diff --git a/Chapter07/onlineStore/routes/console.php b/Chapter07/onlineStore/routes/console.php deleted file mode 100644 index e05f4c9..0000000 --- a/Chapter07/onlineStore/routes/console.php +++ /dev/null @@ -1,19 +0,0 @@ -comment(Inspiring::quote()); -})->purpose('Display an inspiring quote'); diff --git a/Chapter07/onlineStore/routes/web.php b/Chapter07/onlineStore/routes/web.php deleted file mode 100644 index b1e2ba5..0000000 --- a/Chapter07/onlineStore/routes/web.php +++ /dev/null @@ -1,17 +0,0 @@ -name("home.index"); -Route::get('/about', 'App\Http\Controllers\HomeController@about')->name("home.about"); diff --git a/Chapter07/onlineStore/storage/app/.gitignore b/Chapter07/onlineStore/storage/app/.gitignore deleted file mode 100644 index 8f4803c..0000000 --- a/Chapter07/onlineStore/storage/app/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!public/ -!.gitignore diff --git a/Chapter07/onlineStore/storage/app/public/.gitignore b/Chapter07/onlineStore/storage/app/public/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter07/onlineStore/storage/app/public/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter07/onlineStore/storage/framework/.gitignore b/Chapter07/onlineStore/storage/framework/.gitignore deleted file mode 100644 index 05c4471..0000000 --- a/Chapter07/onlineStore/storage/framework/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -compiled.php -config.php -down -events.scanned.php -maintenance.php -routes.php -routes.scanned.php -schedule-* -services.json diff --git a/Chapter07/onlineStore/storage/framework/cache/.gitignore b/Chapter07/onlineStore/storage/framework/cache/.gitignore deleted file mode 100644 index 01e4a6c..0000000 --- a/Chapter07/onlineStore/storage/framework/cache/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!data/ -!.gitignore diff --git a/Chapter07/onlineStore/storage/framework/cache/data/.gitignore b/Chapter07/onlineStore/storage/framework/cache/data/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter07/onlineStore/storage/framework/cache/data/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter07/onlineStore/storage/framework/sessions/.gitignore b/Chapter07/onlineStore/storage/framework/sessions/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter07/onlineStore/storage/framework/sessions/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter07/onlineStore/storage/framework/testing/.gitignore b/Chapter07/onlineStore/storage/framework/testing/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter07/onlineStore/storage/framework/testing/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter07/onlineStore/storage/framework/views/.gitignore b/Chapter07/onlineStore/storage/framework/views/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter07/onlineStore/storage/framework/views/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter07/onlineStore/storage/logs/.gitignore b/Chapter07/onlineStore/storage/logs/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter07/onlineStore/storage/logs/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter07/onlineStore/tests/CreatesApplication.php b/Chapter07/onlineStore/tests/CreatesApplication.php deleted file mode 100644 index 547152f..0000000 --- a/Chapter07/onlineStore/tests/CreatesApplication.php +++ /dev/null @@ -1,22 +0,0 @@ -make(Kernel::class)->bootstrap(); - - return $app; - } -} diff --git a/Chapter07/onlineStore/tests/Feature/ExampleTest.php b/Chapter07/onlineStore/tests/Feature/ExampleTest.php deleted file mode 100644 index 78ccc21..0000000 --- a/Chapter07/onlineStore/tests/Feature/ExampleTest.php +++ /dev/null @@ -1,21 +0,0 @@ -get('/'); - - $response->assertStatus(200); - } -} diff --git a/Chapter07/onlineStore/tests/TestCase.php b/Chapter07/onlineStore/tests/TestCase.php deleted file mode 100644 index 2932d4a..0000000 --- a/Chapter07/onlineStore/tests/TestCase.php +++ /dev/null @@ -1,10 +0,0 @@ -assertTrue(true); - } -} diff --git a/Chapter07/onlineStore/webpack.mix.js b/Chapter07/onlineStore/webpack.mix.js deleted file mode 100644 index 2a22dc1..0000000 --- a/Chapter07/onlineStore/webpack.mix.js +++ /dev/null @@ -1,17 +0,0 @@ -const mix = require('laravel-mix'); - -/* - |-------------------------------------------------------------------------- - | Mix Asset Management - |-------------------------------------------------------------------------- - | - | Mix provides a clean, fluent API for defining some Webpack build steps - | for your Laravel applications. By default, we are compiling the CSS - | file for the application as well as bundling up all the JS files. - | - */ - -mix.js('resources/js/app.js', 'public/js') - .postCss('resources/css/app.css', 'public/css', [ - // - ]); diff --git a/Chapter08/onlineStore/.editorconfig b/Chapter08/onlineStore/.editorconfig deleted file mode 100644 index 1671c9b..0000000 --- a/Chapter08/onlineStore/.editorconfig +++ /dev/null @@ -1,18 +0,0 @@ -root = true - -[*] -charset = utf-8 -end_of_line = lf -insert_final_newline = true -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true - -[*.md] -trim_trailing_whitespace = false - -[*.{yml,yaml}] -indent_size = 2 - -[docker-compose.yml] -indent_size = 4 diff --git a/Chapter08/onlineStore/.env.example b/Chapter08/onlineStore/.env.example deleted file mode 100644 index 8510237..0000000 --- a/Chapter08/onlineStore/.env.example +++ /dev/null @@ -1,52 +0,0 @@ -APP_NAME=Laravel -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=laravel -DB_USERNAME=root -DB_PASSWORD= - -BROADCAST_DRIVER=log -CACHE_DRIVER=file -FILESYSTEM_DISK=local -QUEUE_CONNECTION=sync -SESSION_DRIVER=file -SESSION_LIFETIME=120 - -MEMCACHED_HOST=127.0.0.1 - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -MAIL_MAILER=smtp -MAIL_HOST=mailhog -MAIL_PORT=1025 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS=null -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_APP_CLUSTER=mt1 - -MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/Chapter08/onlineStore/.gitattributes b/Chapter08/onlineStore/.gitattributes deleted file mode 100644 index 510d996..0000000 --- a/Chapter08/onlineStore/.gitattributes +++ /dev/null @@ -1,10 +0,0 @@ -* text=auto - -*.blade.php diff=html -*.css diff=css -*.html diff=html -*.md diff=markdown -*.php diff=php - -/.github export-ignore -CHANGELOG.md export-ignore diff --git a/Chapter08/onlineStore/.gitignore b/Chapter08/onlineStore/.gitignore deleted file mode 100644 index eb003b0..0000000 --- a/Chapter08/onlineStore/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -/node_modules -/public/hot -/public/storage -/storage/*.key -/vendor -.env -.env.backup -.phpunit.result.cache -docker-compose.override.yml -Homestead.json -Homestead.yaml -npm-debug.log -yarn-error.log -/.idea -/.vscode diff --git a/Chapter08/onlineStore/.styleci.yml b/Chapter08/onlineStore/.styleci.yml deleted file mode 100644 index 679a631..0000000 --- a/Chapter08/onlineStore/.styleci.yml +++ /dev/null @@ -1,13 +0,0 @@ -php: - preset: laravel - version: 8 - disabled: - - no_unused_imports - finder: - not-name: - - index.php -js: - finder: - not-name: - - webpack.mix.js -css: true diff --git a/Chapter08/onlineStore/README.md b/Chapter08/onlineStore/README.md deleted file mode 100644 index f171eca..0000000 --- a/Chapter08/onlineStore/README.md +++ /dev/null @@ -1,64 +0,0 @@ -

    - -

    -Build Status -Total Downloads -Latest Stable Version -License -

    - -## About Laravel - -Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as: - -- [Simple, fast routing engine](https://laravel.com/docs/routing). -- [Powerful dependency injection container](https://laravel.com/docs/container). -- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage. -- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent). -- Database agnostic [schema migrations](https://laravel.com/docs/migrations). -- [Robust background job processing](https://laravel.com/docs/queues). -- [Real-time event broadcasting](https://laravel.com/docs/broadcasting). - -Laravel is accessible, powerful, and provides tools required for large, robust applications. - -## Learning Laravel - -Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework. - -If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 2000 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library. - -## Laravel Sponsors - -We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell). - -### Premium Partners - -- **[Vehikl](https://vehikl.com/)** -- **[Tighten Co.](https://tighten.co)** -- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** -- **[64 Robots](https://64robots.com)** -- **[Cubet Techno Labs](https://cubettech.com)** -- **[Cyber-Duck](https://cyber-duck.co.uk)** -- **[Many](https://www.many.co.uk)** -- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)** -- **[DevSquad](https://devsquad.com)** -- **[Curotec](https://www.curotec.com/services/technologies/laravel/)** -- **[OP.GG](https://op.gg)** -- **[WebReinvent](https://webreinvent.com/?utm_source=laravel&utm_medium=github&utm_campaign=patreon-sponsors)** -- **[Lendio](https://lendio.com)** - -## Contributing - -Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions). - -## Code of Conduct - -In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). - -## Security Vulnerabilities - -If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed. - -## License - -The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). diff --git a/Chapter08/onlineStore/app/Console/Kernel.php b/Chapter08/onlineStore/app/Console/Kernel.php deleted file mode 100644 index d8bc1d2..0000000 --- a/Chapter08/onlineStore/app/Console/Kernel.php +++ /dev/null @@ -1,32 +0,0 @@ -command('inspire')->hourly(); - } - - /** - * Register the commands for the application. - * - * @return void - */ - protected function commands() - { - $this->load(__DIR__.'/Commands'); - - require base_path('routes/console.php'); - } -} diff --git a/Chapter08/onlineStore/app/Exceptions/Handler.php b/Chapter08/onlineStore/app/Exceptions/Handler.php deleted file mode 100644 index 8e7fbd1..0000000 --- a/Chapter08/onlineStore/app/Exceptions/Handler.php +++ /dev/null @@ -1,41 +0,0 @@ -> - */ - protected $dontReport = [ - // - ]; - - /** - * A list of the inputs that are never flashed for validation exceptions. - * - * @var array - */ - protected $dontFlash = [ - 'current_password', - 'password', - 'password_confirmation', - ]; - - /** - * Register the exception handling callbacks for the application. - * - * @return void - */ - public function register() - { - $this->reportable(function (Throwable $e) { - // - }); - } -} diff --git a/Chapter08/onlineStore/app/Http/Controllers/Controller.php b/Chapter08/onlineStore/app/Http/Controllers/Controller.php deleted file mode 100644 index a0a2a8a..0000000 --- a/Chapter08/onlineStore/app/Http/Controllers/Controller.php +++ /dev/null @@ -1,13 +0,0 @@ -with("viewData", $viewData); - } - - public function about() - { - $viewData = []; - $viewData["title"] = "About us - Online Store"; - $viewData["subtitle"] = "About us"; - $viewData["description"] = "This is an about page ..."; - $viewData["author"] = "Developed by: Your Name"; - return view('home.about')->with("viewData", $viewData); - } -} diff --git a/Chapter08/onlineStore/app/Http/Kernel.php b/Chapter08/onlineStore/app/Http/Kernel.php deleted file mode 100644 index d3722c2..0000000 --- a/Chapter08/onlineStore/app/Http/Kernel.php +++ /dev/null @@ -1,67 +0,0 @@ - - */ - protected $middleware = [ - // \App\Http\Middleware\TrustHosts::class, - \App\Http\Middleware\TrustProxies::class, - \Fruitcake\Cors\HandleCors::class, - \App\Http\Middleware\PreventRequestsDuringMaintenance::class, - \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, - \App\Http\Middleware\TrimStrings::class, - \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, - ]; - - /** - * The application's route middleware groups. - * - * @var array> - */ - protected $middlewareGroups = [ - 'web' => [ - \App\Http\Middleware\EncryptCookies::class, - \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, - \Illuminate\Session\Middleware\StartSession::class, - // \Illuminate\Session\Middleware\AuthenticateSession::class, - \Illuminate\View\Middleware\ShareErrorsFromSession::class, - \App\Http\Middleware\VerifyCsrfToken::class, - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - - 'api' => [ - // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, - 'throttle:api', - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - ]; - - /** - * The application's route middleware. - * - * These middleware may be assigned to groups or used individually. - * - * @var array - */ - protected $routeMiddleware = [ - 'auth' => \App\Http\Middleware\Authenticate::class, - 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::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, - 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, - 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, - 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, - ]; -} diff --git a/Chapter08/onlineStore/app/Http/Middleware/Authenticate.php b/Chapter08/onlineStore/app/Http/Middleware/Authenticate.php deleted file mode 100644 index 704089a..0000000 --- a/Chapter08/onlineStore/app/Http/Middleware/Authenticate.php +++ /dev/null @@ -1,21 +0,0 @@ -expectsJson()) { - return route('login'); - } - } -} diff --git a/Chapter08/onlineStore/app/Http/Middleware/EncryptCookies.php b/Chapter08/onlineStore/app/Http/Middleware/EncryptCookies.php deleted file mode 100644 index 867695b..0000000 --- a/Chapter08/onlineStore/app/Http/Middleware/EncryptCookies.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter08/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/Chapter08/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php deleted file mode 100644 index 74cbd9a..0000000 --- a/Chapter08/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter08/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php b/Chapter08/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php deleted file mode 100644 index a2813a0..0000000 --- a/Chapter08/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php +++ /dev/null @@ -1,32 +0,0 @@ -check()) { - return redirect(RouteServiceProvider::HOME); - } - } - - return $next($request); - } -} diff --git a/Chapter08/onlineStore/app/Http/Middleware/TrimStrings.php b/Chapter08/onlineStore/app/Http/Middleware/TrimStrings.php deleted file mode 100644 index 88cadca..0000000 --- a/Chapter08/onlineStore/app/Http/Middleware/TrimStrings.php +++ /dev/null @@ -1,19 +0,0 @@ - - */ - protected $except = [ - 'current_password', - 'password', - 'password_confirmation', - ]; -} diff --git a/Chapter08/onlineStore/app/Http/Middleware/TrustHosts.php b/Chapter08/onlineStore/app/Http/Middleware/TrustHosts.php deleted file mode 100644 index 7186414..0000000 --- a/Chapter08/onlineStore/app/Http/Middleware/TrustHosts.php +++ /dev/null @@ -1,20 +0,0 @@ - - */ - public function hosts() - { - return [ - $this->allSubdomainsOfApplicationUrl(), - ]; - } -} diff --git a/Chapter08/onlineStore/app/Http/Middleware/TrustProxies.php b/Chapter08/onlineStore/app/Http/Middleware/TrustProxies.php deleted file mode 100644 index 3391630..0000000 --- a/Chapter08/onlineStore/app/Http/Middleware/TrustProxies.php +++ /dev/null @@ -1,28 +0,0 @@ -|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/Chapter08/onlineStore/app/Http/Middleware/VerifyCsrfToken.php b/Chapter08/onlineStore/app/Http/Middleware/VerifyCsrfToken.php deleted file mode 100644 index 9e86521..0000000 --- a/Chapter08/onlineStore/app/Http/Middleware/VerifyCsrfToken.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter08/onlineStore/app/Models/User.php b/Chapter08/onlineStore/app/Models/User.php deleted file mode 100644 index 8996368..0000000 --- a/Chapter08/onlineStore/app/Models/User.php +++ /dev/null @@ -1,44 +0,0 @@ - - */ - 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', - ]; -} diff --git a/Chapter08/onlineStore/app/Providers/AppServiceProvider.php b/Chapter08/onlineStore/app/Providers/AppServiceProvider.php deleted file mode 100644 index ee8ca5b..0000000 --- a/Chapter08/onlineStore/app/Providers/AppServiceProvider.php +++ /dev/null @@ -1,28 +0,0 @@ - - */ - protected $policies = [ - // 'App\Models\Model' => 'App\Policies\ModelPolicy', - ]; - - /** - * Register any authentication / authorization services. - * - * @return void - */ - public function boot() - { - $this->registerPolicies(); - - // - } -} diff --git a/Chapter08/onlineStore/app/Providers/BroadcastServiceProvider.php b/Chapter08/onlineStore/app/Providers/BroadcastServiceProvider.php deleted file mode 100644 index 395c518..0000000 --- a/Chapter08/onlineStore/app/Providers/BroadcastServiceProvider.php +++ /dev/null @@ -1,21 +0,0 @@ -> - */ - protected $listen = [ - Registered::class => [ - SendEmailVerificationNotification::class, - ], - ]; - - /** - * Register any events for your application. - * - * @return void - */ - public function boot() - { - // - } -} diff --git a/Chapter08/onlineStore/app/Providers/RouteServiceProvider.php b/Chapter08/onlineStore/app/Providers/RouteServiceProvider.php deleted file mode 100644 index 7c17d1f..0000000 --- a/Chapter08/onlineStore/app/Providers/RouteServiceProvider.php +++ /dev/null @@ -1,63 +0,0 @@ -configureRateLimiting(); - - $this->routes(function () { - Route::prefix('api') - ->middleware('api') - ->namespace($this->namespace) - ->group(base_path('routes/api.php')); - - Route::middleware('web') - ->namespace($this->namespace) - ->group(base_path('routes/web.php')); - }); - } - - /** - * Configure the rate limiters for the application. - * - * @return void - */ - protected function configureRateLimiting() - { - RateLimiter::for('api', function (Request $request) { - return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); - }); - } -} diff --git a/Chapter08/onlineStore/artisan b/Chapter08/onlineStore/artisan deleted file mode 100644 index 67a3329..0000000 --- a/Chapter08/onlineStore/artisan +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env php -make(Illuminate\Contracts\Console\Kernel::class); - -$status = $kernel->handle( - $input = new Symfony\Component\Console\Input\ArgvInput, - new Symfony\Component\Console\Output\ConsoleOutput -); - -/* -|-------------------------------------------------------------------------- -| Shutdown The Application -|-------------------------------------------------------------------------- -| -| Once Artisan has finished running, we will fire off the shutdown events -| so that any final work may be done by the application before we shut -| down the process. This is the last thing to happen to the request. -| -*/ - -$kernel->terminate($input, $status); - -exit($status); diff --git a/Chapter08/onlineStore/bootstrap/app.php b/Chapter08/onlineStore/bootstrap/app.php deleted file mode 100644 index 037e17d..0000000 --- a/Chapter08/onlineStore/bootstrap/app.php +++ /dev/null @@ -1,55 +0,0 @@ -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/Chapter08/onlineStore/bootstrap/cache/.gitignore b/Chapter08/onlineStore/bootstrap/cache/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter08/onlineStore/bootstrap/cache/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter08/onlineStore/composer.json b/Chapter08/onlineStore/composer.json deleted file mode 100644 index f0f2eda..0000000 --- a/Chapter08/onlineStore/composer.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "name": "laravel/laravel", - "type": "project", - "description": "The Laravel Framework.", - "keywords": ["framework", "laravel"], - "license": "MIT", - "require": { - "php": "^8.0", - "fruitcake/laravel-cors": "^2.0.5", - "guzzlehttp/guzzle": "^7.2", - "laravel/framework": "^9.0", - "laravel/sanctum": "^2.14", - "laravel/tinker": "^2.7" - }, - "require-dev": { - "fakerphp/faker": "^1.9.1", - "laravel/sail": "^1.0.1", - "mockery/mockery": "^1.4.4", - "nunomaduro/collision": "^6.1", - "phpunit/phpunit": "^9.5.10", - "spatie/laravel-ignition": "^1.0", - "squizlabs/php_codesniffer": "^3.6" - }, - "autoload": { - "psr-4": { - "App\\": "app/", - "Database\\Factories\\": "database/factories/", - "Database\\Seeders\\": "database/seeders/" - } - }, - "autoload-dev": { - "psr-4": { - "Tests\\": "tests/" - } - }, - "scripts": { - "post-autoload-dump": [ - "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", - "@php artisan package:discover --ansi" - ], - "post-update-cmd": [ - "@php artisan vendor:publish --tag=laravel-assets --ansi --force" - ], - "post-root-package-install": [ - "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" - ], - "post-create-project-cmd": [ - "@php artisan key:generate --ansi" - ] - }, - "extra": { - "laravel": { - "dont-discover": [] - } - }, - "config": { - "optimize-autoloader": true, - "preferred-install": "dist", - "sort-packages": true - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/Chapter08/onlineStore/composer.lock b/Chapter08/onlineStore/composer.lock deleted file mode 100644 index b55e897..0000000 --- a/Chapter08/onlineStore/composer.lock +++ /dev/null @@ -1,7860 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "8bdcc31974d0d5a00db79c82827c8815", - "packages": [ - { - "name": "asm89/stack-cors", - "version": "v2.1.1", - "source": { - "type": "git", - "url": "https://github.com/asm89/stack-cors.git", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4|^5|^6" - }, - "require-dev": { - "phpunit/phpunit": "^7|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "psr-4": { - "Asm89\\Stack\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alexander", - "email": "iam.asm89@gmail.com" - } - ], - "description": "Cross-origin resource sharing library and stack middleware", - "homepage": "https://github.com/asm89/stack-cors", - "keywords": [ - "cors", - "stack" - ], - "support": { - "issues": "https://github.com/asm89/stack-cors/issues", - "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" - }, - "time": "2022-01-18T09:12:03+00:00" - }, - { - "name": "brick/math", - "version": "0.9.3", - "source": { - "type": "git", - "url": "https://github.com/brick/math.git", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", - "vimeo/psalm": "4.9.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Brick\\Math\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Arbitrary-precision arithmetic library", - "keywords": [ - "Arbitrary-precision", - "BigInteger", - "BigRational", - "arithmetic", - "bigdecimal", - "bignum", - "brick", - "math" - ], - "support": { - "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.9.3" - }, - "funding": [ - { - "url": "https://github.com/BenMorel", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/brick/math", - "type": "tidelift" - } - ], - "time": "2021-08-15T20:50:18+00:00" - }, - { - "name": "dflydev/dot-access-data", - "version": "v3.0.1", - "source": { - "type": "git", - "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c", - "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": "^3.14" - }, - "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.1" - }, - "time": "2021-08-13T13:06:58+00:00" - }, - { - "name": "doctrine/inflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "vimeo/psalm": "^4.10" - }, - "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.4" - }, - "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": "2021-10-22T20:16:43+00:00" - }, - { - "name": "doctrine/lexer", - "version": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" - } - }, - "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/1.2.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%2Flexer", - "type": "tidelift" - } - ], - "time": "2022-01-12T08:27:12+00:00" - }, - { - "name": "dragonmantank/cron-expression", - "version": "v3.3.1", - "source": { - "type": "git", - "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "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.1" - }, - "funding": [ - { - "url": "https://github.com/dragonmantank", - "type": "github" - } - ], - "time": "2022-01-18T15:43:28+00:00" - }, - { - "name": "egulias/email-validator", - "version": "3.1.2", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ee0db30118f661fb166bcffbf5d82032df484697", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^1.2", - "php": ">=7.2", - "symfony/polyfill-intl-idn": "^1.15" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^8.5.8|^9.3.3", - "vimeo/psalm": "^4" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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/3.1.2" - }, - "funding": [ - { - "url": "https://github.com/egulias", - "type": "github" - } - ], - "time": "2021-10-11T09:18:27+00:00" - }, - { - "name": "fruitcake/laravel-cors", - "version": "v2.0.5", - "source": { - "type": "git", - "url": "https://github.com/fruitcake/laravel-cors.git", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "shasum": "" - }, - "require": { - "asm89/stack-cors": "^2.0.1", - "illuminate/contracts": "^6|^7|^8|^9", - "illuminate/support": "^6|^7|^8|^9", - "php": ">=7.2", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4.3.4|^5|^6" - }, - "require-dev": { - "laravel/framework": "^6|^7.24|^8", - "orchestra/testbench-dusk": "^4|^5|^6|^7", - "phpunit/phpunit": "^6|^7|^8|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - }, - "laravel": { - "providers": [ - "Fruitcake\\Cors\\CorsServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Fruitcake\\Cors\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fruitcake", - "homepage": "https://fruitcake.nl" - }, - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", - "keywords": [ - "api", - "cors", - "crossdomain", - "laravel" - ], - "support": { - "issues": "https://github.com/fruitcake/laravel-cors/issues", - "source": "https://github.com/fruitcake/laravel-cors/tree/v2.0.5" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "time": "2022-01-03T14:53:04+00:00" - }, - { - "name": "graham-campbell/result-type", - "version": "v1.0.4", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "0690bde05318336c7221785f2a932467f98b64ca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/0690bde05318336c7221785f2a932467f98b64ca", - "reference": "0690bde05318336c7221785f2a932467f98b64ca", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "phpoption/phpoption": "^1.8" - }, - "require-dev": { - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", - "type": "tidelift" - } - ], - "time": "2021-11-21T21:41:47+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "7.4.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.8.3 || ^2.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.4.1", - "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.5 || ^9.3.5", - "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": { - "branch-alias": { - "dev-master": "7.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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.4.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": "2021-12-06T18:43:05+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "1.5.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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/1.5.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "time": "2021-10-22T20:56:57+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.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.4.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.8 || ^9.3.10" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "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.1.0" - }, - "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": "2021-10-06T17:43:30+00:00" - }, - { - "name": "laravel/framework", - "version": "v9.0.1", - "source": { - "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "shasum": "" - }, - "require": { - "doctrine/inflector": "^2.0", - "dragonmantank/cron-expression": "^3.1", - "egulias/email-validator": "^3.1", - "ext-mbstring": "*", - "ext-openssl": "*", - "laravel/serializable-closure": "^1.0", - "league/commonmark": "^2.2", - "league/flysystem": "^3.0", - "monolog/monolog": "^2.0", - "nesbot/carbon": "^2.53.1", - "php": "^8.0.2", - "psr/container": "^1.1.1|^2.0.1", - "psr/log": "^1.0|^2.0|^3.0", - "psr/simple-cache": "^1.0|^2.0|^3.0", - "ramsey/uuid": "^4.2.2", - "symfony/console": "^6.0", - "symfony/error-handler": "^6.0", - "symfony/finder": "^6.0", - "symfony/http-foundation": "^6.0", - "symfony/http-kernel": "^6.0", - "symfony/mailer": "^6.0", - "symfony/mime": "^6.0", - "symfony/process": "^6.0", - "symfony/routing": "^6.0", - "symfony/var-dumper": "^6.0", - "tijsverkoyen/css-to-inline-styles": "^2.2.2", - "vlucas/phpdotenv": "^5.4.1", - "voku/portable-ascii": "^2.0" - }, - "conflict": { - "tightenco/collect": "<5.5.33" - }, - "provide": { - "psr/container-implementation": "1.1|2.0", - "psr/simple-cache-implementation": "1.0|2.0|3.0" - }, - "replace": { - "illuminate/auth": "self.version", - "illuminate/broadcasting": "self.version", - "illuminate/bus": "self.version", - "illuminate/cache": "self.version", - "illuminate/collections": "self.version", - "illuminate/conditionable": "self.version", - "illuminate/config": "self.version", - "illuminate/console": "self.version", - "illuminate/container": "self.version", - "illuminate/contracts": "self.version", - "illuminate/cookie": "self.version", - "illuminate/database": "self.version", - "illuminate/encryption": "self.version", - "illuminate/events": "self.version", - "illuminate/filesystem": "self.version", - "illuminate/hashing": "self.version", - "illuminate/http": "self.version", - "illuminate/log": "self.version", - "illuminate/macroable": "self.version", - "illuminate/mail": "self.version", - "illuminate/notifications": "self.version", - "illuminate/pagination": "self.version", - "illuminate/pipeline": "self.version", - "illuminate/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": { - "aws/aws-sdk-php": "^3.198.1", - "doctrine/dbal": "^2.13.3|^3.1.4", - "fakerphp/faker": "^1.9.2", - "guzzlehttp/guzzle": "^7.2", - "league/flysystem-aws-s3-v3": "^3.0", - "league/flysystem-ftp": "^3.0", - "league/flysystem-sftp-v3": "^3.0", - "mockery/mockery": "^1.4.4", - "orchestra/testbench-core": "^7.0", - "pda/pheanstalk": "^4.0", - "phpstan/phpstan": "^1.0", - "phpunit/phpunit": "^9.5.8", - "predis/predis": "^1.1.9", - "symfony/amazon-mailer": "^6.0", - "symfony/cache": "^6.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.198.1).", - "brianium/paratest": "Required to run tests in parallel (^6.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", - "ext-bcmath": "Required to use the multiple_of validation rule.", - "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.", - "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.2).", - "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-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", - "mockery/mockery": "Required to use mocking (^1.4.4).", - "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).", - "predis/predis": "Required to use the predis connector (^1.1.9).", - "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.0).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^6.0).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.0).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.0).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.0).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.x-dev" - } - }, - "autoload": { - "files": [ - "src/Illuminate/Collections/helpers.php", - "src/Illuminate/Events/functions.php", - "src/Illuminate/Foundation/helpers.php", - "src/Illuminate/Support/helpers.php" - ], - "psr-4": { - "Illuminate\\": "src/Illuminate/", - "Illuminate\\Support\\": [ - "src/Illuminate/Macroable/", - "src/Illuminate/Collections/", - "src/Illuminate/Conditionable/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Laravel Framework.", - "homepage": "https://laravel.com", - "keywords": [ - "framework", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2022-02-09T15:00:05+00:00" - }, - { - "name": "laravel/sanctum", - "version": "v2.14.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/sanctum.git", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/0647a87140c7522e75826cffcadb3ad6e01f71e9", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/contracts": "^6.9|^7.0|^8.0|^9.0", - "illuminate/database": "^6.9|^7.0|^8.0|^9.0", - "illuminate/support": "^6.9|^7.0|^8.0|^9.0", - "php": "^7.2|^8.0" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0", - "phpunit/phpunit": "^8.0|^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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": "2022-01-12T15:07:43+00:00" - }, - { - "name": "laravel/serializable-closure", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/serializable-closure.git", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/65c9faf50d567b65d81764a44526545689e3fe63", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "pestphp/pest": "^1.18", - "phpstan/phpstan": "^0.12.98", - "symfony/var-dumper": "^5.3" - }, - "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": "2022-02-01T16:29:39+00:00" - }, - { - "name": "laravel/tinker", - "version": "v2.7.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/tinker.git", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/5f2f9815b7631b9f586a3de7933c25f9327d4073", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073", - "shasum": "" - }, - "require": { - "illuminate/console": "^6.0|^7.0|^8.0|^9.0", - "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.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", - "phpunit/phpunit": "^8.5.8|^9.3.3" - }, - "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.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.7.0" - }, - "time": "2022-01-10T08:52:49+00:00" - }, - { - "name": "league/commonmark", - "version": "2.2.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/commonmark.git", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "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.15" - }, - "require-dev": { - "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.0", - "commonmark/commonmark.js": "0.30.0", - "composer/package-versions-deprecated": "^1.8", - "erusev/parsedown": "^1.0", - "ext-json": "*", - "github/gfm": "0.29.0", - "michelf/php-markdown": "^1.4", - "phpstan/phpstan": "^0.12.88 || ^1.0.0", - "phpunit/phpunit": "^9.5.5", - "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", - "unleashedtech/php-coding-standard": "^3.1", - "vimeo/psalm": "^4.7.3" - }, - "suggest": { - "symfony/yaml": "v2.3+ required if using the Front Matter extension" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.3-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": "2022-01-25T14:37:33+00:00" - }, - { - "name": "league/config", - "version": "v1.1.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/config.git", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/config/zipball/a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^3.0.1", - "nette/schema": "^1.2", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.90", - "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": "2021-08-14T12:15:32+00:00" - }, - { - "name": "league/flysystem", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9f8b4260031bfef5497477da53dd57b2aaff0e06", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06", - "shasum": "" - }, - "require": { - "ext-json": "*", - "league/mime-type-detection": "^1.0.0", - "php": "^8.0.2" - }, - "conflict": { - "guzzlehttp/guzzle": "<7.0", - "guzzlehttp/ringphp": "<1.1.1", - "symfony/http-client": "<5.2" - }, - "require-dev": { - "async-aws/s3": "^1.5", - "async-aws/simple-s3": "^1.0", - "aws/aws-sdk-php": "^3.198.1", - "composer/semver": "^3.0", - "ext-fileinfo": "*", - "ext-ftp": "*", - "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.5", - "google/cloud-storage": "^1.23", - "phpseclib/phpseclib": "^2.0", - "phpstan/phpstan": "^0.12.26", - "phpunit/phpunit": "^9.5.11", - "sabre/dav": "^4.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.0.3" - }, - "funding": [ - { - "url": "https://offset.earth/frankdejonge", - "type": "custom" - }, - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2022-01-31T19:41:04+00:00" - }, - { - "name": "league/mime-type-detection", - "version": "1.9.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/aa70e813a6ad3d1558fc927863d47309b4c23e69", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.2", - "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" - }, - "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.9.0" - }, - "funding": [ - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2021-11-21T11:48:40+00:00" - }, - { - "name": "monolog/monolog", - "version": "2.3.5", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd4380d6fc37626e2f799f29d91195040137eba9", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "provide": { - "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7", - "graylog2/gelf-php": "^1.4.2", - "mongodb/mongodb": "^1.8", - "php-amqplib/php-amqplib": "~2.4 || ^3", - "php-console/php-console": "^3.1.3", - "phpspec/prophecy": "^1.6.1", - "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5", - "predis/predis": "^1.1", - "rollbar/rollbar": "^1.3", - "ruflin/elastica": ">=0.90@dev", - "swiftmailer/swiftmailer": "^5.3|^6.0" - }, - "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", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "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": "2.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/2.3.5" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" - } - ], - "time": "2021-10-01T21:08:31+00:00" - }, - { - "name": "nesbot/carbon", - "version": "2.56.0", - "source": { - "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1.8 || ^8.0", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "doctrine/dbal": "^2.0 || ^3.0", - "doctrine/orm": "^2.7", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "phpmd/phpmd": "^2.9", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.54 || ^1.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.14", - "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://opencollective.com/Carbon", - "type": "open_collective" - }, - { - "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", - "type": "tidelift" - } - ], - "time": "2022-01-21T17:08:38+00:00" - }, - { - "name": "nette/schema", - "version": "v1.2.2", - "source": { - "type": "git", - "url": "https://github.com/nette/schema.git", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/9a39cef03a5b34c7de64f551538cbba05c2be5df", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df", - "shasum": "" - }, - "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": ">=7.1 <8.2" - }, - "require-dev": { - "nette/tester": "^2.3 || ^2.4", - "phpstan/phpstan-nette": "^0.12", - "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.2" - }, - "time": "2021-10-15T11:40:02+00:00" - }, - { - "name": "nette/utils", - "version": "v3.2.7", - "source": { - "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/0af4e3de4df9f1543534beab255ccf459e7a2c99", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99", - "shasum": "" - }, - "require": { - "php": ">=7.2 <8.2" - }, - "conflict": { - "nette/di": "<3.0.6" - }, - "require-dev": { - "nette/tester": "~2.0", - "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.3" - }, - "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()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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 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/v3.2.7" - }, - "time": "2022-01-24T11:29:14+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.13.2", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", - "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.13.2" - }, - "time": "2021-11-30T19:35:32+00:00" - }, - { - "name": "phpoption/phpoption", - "version": "1.8.1", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-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.8.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", - "type": "tidelift" - } - ], - "time": "2021-12-04T23:24:31+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.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.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": "http://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/tree/master" - }, - "time": "2020-06-29T06:28:15+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.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": "http://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/master" - }, - "time": "2019-04-30T12:38:16+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.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": "http://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/master" - }, - "time": "2016-08-06T14:39: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.1", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "570292577277f06f590635381a7f761a6cf4f026" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/570292577277f06f590635381a7f761a6cf4f026", - "reference": "570292577277f06f590635381a7f761a6cf4f026", - "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" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "3.17.05.02" - }, - "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.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." - }, - "bin": [ - "bin/psysh" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "0.11.x-dev" - } - }, - "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.1" - }, - "time": "2022-01-03T13:58:38+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": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/ramsey/collection.git", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "shasum": "" - }, - "require": { - "php": "^7.3 || ^8", - "symfony/polyfill-php81": "^1.23" - }, - "require-dev": { - "captainhook/captainhook": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "ergebnis/composer-normalize": "^2.6", - "fakerphp/faker": "^1.5", - "hamcrest/hamcrest-php": "^2", - "jangregor/phpstan-prophecy": "^0.8", - "mockery/mockery": "^1.3", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1", - "phpstan/phpstan": "^0.12.32", - "phpstan/phpstan-mockery": "^0.12.5", - "phpstan/phpstan-phpunit": "^0.12.11", - "phpunit/phpunit": "^8.5 || ^9", - "psy/psysh": "^0.10.4", - "slevomat/coding-standard": "^6.3", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.4" - }, - "type": "library", - "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/1.2.2" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "time": "2021-10-10T03:01:02+00:00" - }, - { - "name": "ramsey/uuid", - "version": "4.2.3", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "shasum": "" - }, - "require": { - "brick/math": "^0.8 || ^0.9", - "ext-json": "*", - "php": "^7.2 || ^8.0", - "ramsey/collection": "^1.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php80": "^1.14" - }, - "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", - "moontoast/math": "^1.1", - "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.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-mockery": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^8.5 || ^9", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" - }, - "suggest": { - "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-ctype": "Enables faster processing of character classification using ctype functions.", - "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": { - "branch-alias": { - "dev-main": "4.x-dev" - }, - "captainhook": { - "force-install": true - } - }, - "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "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.2.3" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2021-09-25T23:10:38+00:00" - }, - { - "name": "symfony/console", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/22e8efd019c3270c4f79376234a3f8752cd25490", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.4|^6.0" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/css-selector", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/1955d595c12c111629cc814d3f2a2ff13580508a", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a", - "shasum": "" - }, - "require": { - "php": ">=8.0.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/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-11-01T23:48:49+00:00" - }, - { - "name": "symfony/error-handler", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/20343b3bad7ebafa38138ddcb97290a24722b57b", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" - }, - "bin": [ - "Resources/bin/patch-type-declarations" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to manage errors and ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6472ea2dd415e925b90ca82be64b8bc6157f3934", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/event-dispatcher-contracts": "^2|^3" - }, - "conflict": { - "symfony/dependency-injection": "<5.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^5.4|^6.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/aa5422287b75594b90ee9cd807caf8f0df491385", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/event-dispatcher": "^1" - }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-07-15T12:33:35+00:00" - }, - { - "name": "symfony/finder", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/8661b74dbabc23223f38c9b99d3f8ade71170430", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ad157299ced81a637fade1efcadd688d6deba5c1", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1" - }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/cache": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0" - }, - "suggest": { - "symfony/mime": "To use the file extension guesser" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v6.0.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/error-handler": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", - "symfony/twig-bridge": "<5.4", - "symfony/validator": "<5.4", - "twig/twig": "<2.13" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/process": "^5.4|^6.0", - "symfony/routing": "^5.4|^6.0", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-29T18:12:46+00:00" - }, - { - "name": "symfony/mailer", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mailer.git", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "shasum": "" - }, - "require": { - "egulias/email-validator": "^2.1.10|^3", - "php": ">=8.0.2", - "psr/event-dispatcher": "^1", - "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3" - }, - "conflict": { - "symfony/http-kernel": "<5.4" - }, - "require-dev": { - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/messenger": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/mime", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/2cd9601efd040e56f43360daa68f3c6b0534923a", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "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" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "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.24.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": "2021-10-20T20:35:02+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-11-23T21:10:46+00:00" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44", - "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.23-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.24.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": "2021-09-14T14:02:44+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.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": "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.24.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": "2021-11-30T18:21:41+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-05-27T09:17:38+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:33+00:00" - }, - { - "name": "symfony/polyfill-php81", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:11+00:00" - }, - { - "name": "symfony/process", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/298ed357274c1868c20a0061df256a1250a6c4af", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/routing", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/yaml": "<5.4" - }, - "require-dev": { - "doctrine/annotations": "^1.12", - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/36715ebf9fb9db73db0cb24263c79077c6fe8603", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/container": "^2.0" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "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.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": "2021-11-04T17:53:12+00:00" - }, - { - "name": "symfony/string", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/522144f0c4c004c80d56fa47e40e17028e2eefc2", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.0" - }, - "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/translation-contracts": "^2.0|^3.0", - "symfony/var-exporter": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "files": [ - "Resources/functions.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 an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/translation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/71bb15335798f8c4da110911bcf2d2fead7a430d", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.3|^3.0" - }, - "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" - }, - "provide": { - "symfony/translation-implementation": "2.3|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-07T00:29:03+00:00" - }, - { - "name": "symfony/translation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "suggest": { - "symfony/translation-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - } - }, - "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.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": "2021-09-07T12:43:40+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7b701676fc64f9ef11f9b4870f16b48f66be4834", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<5.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-17T16:30:44+00:00" - }, - { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.4", - "source": { - "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" - } - ], - "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", - "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "support": { - "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" - }, - "time": "2021-12-08T09:12:39+00:00" - }, - { - "name": "vlucas/phpdotenv", - "version": "v5.4.1", - "source": { - "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", - "shasum": "" - }, - "require": { - "ext-pcre": "*", - "graham-campbell/result-type": "^1.0.2", - "php": "^7.1.3 || ^8.0", - "phpoption/phpoption": "^1.8", - "symfony/polyfill-ctype": "^1.23", - "symfony/polyfill-mbstring": "^1.23.1", - "symfony/polyfill-php80": "^1.23.1" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" - }, - "suggest": { - "ext-filter": "Required to use the boolean validator." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.4-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.4.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", - "type": "tidelift" - } - ], - "time": "2021-12-12T23:22:04+00:00" - }, - { - "name": "voku/portable-ascii", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/voku/portable-ascii.git", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/9bd89e83cecdf8c37b64909454249eaed98b2c89", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89", - "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.0" - }, - "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-01-24T18:59:03+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "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.10.0" - }, - "time": "2021-03-09T10:59:23+00:00" - } - ], - "packages-dev": [ - { - "name": "doctrine/instantiator", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.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%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2020-11-10T18:47:58+00:00" - }, - { - "name": "facade/ignition-contracts", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/facade/ignition-contracts.git", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^v2.15.8", - "phpunit/phpunit": "^9.3.11", - "vimeo/psalm": "^3.17.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Facade\\IgnitionContracts\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://flareapp.io", - "role": "Developer" - } - ], - "description": "Solution contracts for Ignition", - "homepage": "https://github.com/facade/ignition-contracts", - "keywords": [ - "contracts", - "flare", - "ignition" - ], - "support": { - "issues": "https://github.com/facade/ignition-contracts/issues", - "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" - }, - "time": "2020-10-16T08:27:54+00:00" - }, - { - "name": "fakerphp/faker", - "version": "v1.19.0", - "source": { - "type": "git", - "url": "https://github.com/FakerPHP/Faker.git", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^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": "*", - "symfony/phpunit-bridge": "^4.4 || ^5.2" - }, - "suggest": { - "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", - "ext-curl": "Required by Faker\\Provider\\Image to download images.", - "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", - "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.19-dev" - } - }, - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "François Zaninotto" - } - ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], - "support": { - "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0" - }, - "time": "2022-02-02T17:38:57+00:00" - }, - { - "name": "filp/whoops", - "version": "2.14.5", - "source": { - "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "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.14.5" - }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "time": "2022-01-07T12:00:00+00:00" - }, - { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "shasum": "" - }, - "require": { - "php": "^5.3|^7.0|^8.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" - }, - "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "classmap": [ - "hamcrest" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "This is the PHP port of Hamcrest Matchers", - "keywords": [ - "test" - ], - "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" - }, - "time": "2020-07-09T08:09:16+00:00" - }, - { - "name": "laravel/sail", - "version": "v1.13.2", - "source": { - "type": "git", - "url": "https://github.com/laravel/sail.git", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.0|^9.0", - "illuminate/contracts": "^8.0|^9.0", - "illuminate/support": "^8.0|^9.0", - "php": "^7.3|^8.0" - }, - "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": "2022-02-08T14:14:12+00:00" - }, - { - "name": "mockery/mockery", - "version": "1.5.0", - "source": { - "type": "git", - "url": "https://github.com/mockery/mockery.git", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "shasum": "" - }, - "require": { - "hamcrest/hamcrest-php": "^2.0.1", - "lib-pcre": ">=7.0", - "php": "^7.3 || ^8.0" - }, - "conflict": { - "phpunit/phpunit": "<8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-0": { - "Mockery": "library/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" - } - ], - "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": { - "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.5.0" - }, - "time": "2022-01-20T13:18:17+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.10.2", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "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.10.2" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2020-11-13T09:40:50+00:00" - }, - { - "name": "nunomaduro/collision", - "version": "v6.1.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/collision.git", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "shasum": "" - }, - "require": { - "facade/ignition-contracts": "^1.0.2", - "filp/whoops": "^2.14.5", - "php": "^8.0.0", - "symfony/console": "^6.0.2" - }, - "require-dev": { - "brianium/paratest": "^6.4.1", - "laravel/framework": "^9.0", - "nunomaduro/larastan": "^1.0.2", - "nunomaduro/mock-final-classes": "^1.1.0", - "orchestra/testbench": "^7.0.0", - "phpunit/phpunit": "^9.5.11" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "6.x-dev" - }, - "laravel": { - "providers": [ - "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" - ] - } - }, - "autoload": { - "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": "2022-01-18T17:49:08+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.1.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/15a90844ad40f127afd244c0cad228de2a80052a", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a", - "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.1.1" - }, - "time": "2022-02-07T21:56:48+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.6.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "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.6.0" - }, - "time": "2022-01-04T19:58:01+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" - }, - "time": "2021-12-08T12:19:24+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "9.2.10", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d5850aaf931743067f4bfc1ae4cbd06468400687", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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 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", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.10" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-05T09:12:13+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "3.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-02T12:48:52+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "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/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:58:55+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T05:33:50+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.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/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:16:10+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "9.5.13", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/597cb647654ede35e43b137926dfdfef0fb11743", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.3.1", - "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": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.7", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", - "sebastian/version": "^3.0.2" - }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.13" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-01-24T07:33:35+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:08:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "1.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:08:54+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:30:19+00:00" - }, - { - "name": "sebastian/comparator", - "version": "4.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:49:45+00:00" - }, - { - "name": "sebastian/complexity", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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 calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:52:27+00:00" - }, - { - "name": "sebastian/diff", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:10:38+00:00" - }, - { - "name": "sebastian/environment", - "version": "5.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-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": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:52:38+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "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", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-11-11T14:18:36+00:00" - }, - { - "name": "sebastian/global-state", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-11T13:31:12+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-28T06:42:11+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "http://www.github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:17:30+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:45:17+00:00" - }, - { - "name": "sebastian/type", - "version": "2.3.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-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/2.3.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-15T12:49:02+00:00" - }, - { - "name": "sebastian/version", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:39:44+00:00" - }, - { - "name": "spatie/backtrace", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/backtrace.git", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "ext-json": "*", - "phpunit/phpunit": "^9.3", - "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": { - "issues": "https://github.com/spatie/backtrace/issues", - "source": "https://github.com/spatie/backtrace/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/sponsors/spatie", - "type": "github" - }, - { - "url": "https://spatie.be/open-source/support-us", - "type": "other" - } - ], - "time": "2021-11-09T10:57:15+00:00" - }, - { - "name": "spatie/flare-client-php", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/flare-client-php.git", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "shasum": "" - }, - "require": { - "illuminate/pipeline": "^8.0|^9.0", - "php": "^8.0", - "spatie/backtrace": "^1.2", - "symfony/http-foundation": "^5.0|^6.0", - "symfony/mime": "^5.2|^6.0", - "symfony/process": "^5.2|^6.0", - "symfony/var-dumper": "^5.2|^6.0" - }, - "require-dev": { - "dms/phpunit-arraysubset-asserts": "^0.3.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/phpunit-snapshot-assertions": "^4.0" - }, - "type": "library", - "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.0.1" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2022-02-04T15:21:00+00:00" - }, - { - "name": "spatie/ignition", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/spatie/ignition.git", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/d2d5ba823af3004268556e87dfc94449e4159f5a", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "monolog/monolog": "^2.0", - "php": "^8.0", - "spatie/flare-client-php": "^1.0", - "symfony/console": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "mockery/mockery": "^1.4", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/ray": "^1.32", - "symfony/process": "^5.4|^6.0" - }, - "type": "library", - "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": "2022-01-19T12:57:41+00:00" - }, - { - "name": "spatie/laravel-ignition", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/68250225a9f83b086462c2af1b1139dfde48fbd2", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*", - "illuminate/support": "^8.77|^9.0", - "monolog/monolog": "^2.3", - "php": "^8.0", - "spatie/flare-client-php": "^1.0.1", - "spatie/ignition": "^1.0", - "symfony/console": "^5.0|^6.0", - "symfony/var-dumper": "^5.0|^6.0" - }, - "require-dev": { - "filp/whoops": "^2.14", - "livewire/livewire": "^2.8|dev-develop", - "mockery/mockery": "^1.4", - "nunomaduro/larastan": "^1.0", - "orchestra/testbench": "^6.23|^7.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/laravel-ray": "^1.27" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Spatie\\LaravelIgnition\\IgnitionServiceProvider" - ], - "aliases": { - "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" - } - } - }, - "autoload": { - "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": "2022-02-04T15:25:56+00:00" - }, - { - "name": "squizlabs/php_codesniffer", - "version": "3.6.2", - "source": { - "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", - "shasum": "" - }, - "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.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": "lead" - } - ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", - "keywords": [ - "phpcs", - "standards" - ], - "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" - }, - "time": "2021-12-12T21:44:58+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2021-07-28T10:34:58+00:00" - } - ], - "aliases": [], - "minimum-stability": "dev", - "stability-flags": [], - "prefer-stable": true, - "prefer-lowest": false, - "platform": { - "php": "^8.0" - }, - "platform-dev": [], - "plugin-api-version": "2.1.0" -} diff --git a/Chapter08/onlineStore/config/app.php b/Chapter08/onlineStore/config/app.php deleted file mode 100644 index 1941d7c..0000000 --- a/Chapter08/onlineStore/config/app.php +++ /dev/null @@ -1,197 +0,0 @@ - env('APP_NAME', 'Laravel'), - - /* - |-------------------------------------------------------------------------- - | Application Environment - |-------------------------------------------------------------------------- - | - | This value determines the "environment" your application is currently - | running in. This may determine how you prefer to configure various - | services the application utilizes. Set this in your ".env" file. - | - */ - - 'env' => env('APP_ENV', 'production'), - - /* - |-------------------------------------------------------------------------- - | Application Debug Mode - |-------------------------------------------------------------------------- - | - | When your application is in debug mode, detailed error messages with - | stack traces will be shown on every error that occurs within your - | application. If disabled, a simple generic error page is shown. - | - */ - - 'debug' => (bool) env('APP_DEBUG', false), - - /* - |-------------------------------------------------------------------------- - | Application URL - |-------------------------------------------------------------------------- - | - | This URL is used by the console to properly generate URLs when using - | the Artisan command line tool. You should set this to the root of - | your application so that it is used when running Artisan tasks. - | - */ - - 'url' => env('APP_URL', 'http://localhost'), - - 'asset_url' => env('ASSET_URL', null), - - /* - |-------------------------------------------------------------------------- - | 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', - - /* - |-------------------------------------------------------------------------- - | 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' => [ - - /* - * Laravel Framework Service Providers... - */ - Illuminate\Auth\AuthServiceProvider::class, - Illuminate\Broadcasting\BroadcastServiceProvider::class, - Illuminate\Bus\BusServiceProvider::class, - Illuminate\Cache\CacheServiceProvider::class, - Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, - Illuminate\Cookie\CookieServiceProvider::class, - Illuminate\Database\DatabaseServiceProvider::class, - Illuminate\Encryption\EncryptionServiceProvider::class, - Illuminate\Filesystem\FilesystemServiceProvider::class, - Illuminate\Foundation\Providers\FoundationServiceProvider::class, - Illuminate\Hashing\HashServiceProvider::class, - Illuminate\Mail\MailServiceProvider::class, - Illuminate\Notifications\NotificationServiceProvider::class, - Illuminate\Pagination\PaginationServiceProvider::class, - Illuminate\Pipeline\PipelineServiceProvider::class, - Illuminate\Queue\QueueServiceProvider::class, - Illuminate\Redis\RedisServiceProvider::class, - Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, - Illuminate\Session\SessionServiceProvider::class, - Illuminate\Translation\TranslationServiceProvider::class, - Illuminate\Validation\ValidationServiceProvider::class, - Illuminate\View\ViewServiceProvider::class, - - /* - * 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, - - ], - - /* - |-------------------------------------------------------------------------- - | 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([ - // ... - ])->toArray(), - -]; diff --git a/Chapter08/onlineStore/config/auth.php b/Chapter08/onlineStore/config/auth.php deleted file mode 100644 index d8c6cee..0000000 --- a/Chapter08/onlineStore/config/auth.php +++ /dev/null @@ -1,111 +0,0 @@ - [ - '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 expire 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. - | - */ - - 'passwords' => [ - 'users' => [ - 'provider' => 'users', - 'table' => 'password_resets', - '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/Chapter08/onlineStore/config/broadcasting.php b/Chapter08/onlineStore/config/broadcasting.php deleted file mode 100644 index 67fcbbd..0000000 --- a/Chapter08/onlineStore/config/broadcasting.php +++ /dev/null @@ -1,67 +0,0 @@ - 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'), - 'useTLS' => true, - ], - '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/Chapter08/onlineStore/config/cache.php b/Chapter08/onlineStore/config/cache.php deleted file mode 100644 index 8736c7a..0000000 --- a/Chapter08/onlineStore/config/cache.php +++ /dev/null @@ -1,110 +0,0 @@ - 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'), - ], - - '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 a RAM based store such as APC or Memcached, there might - | be other applications utilizing the same cache. So, we'll specify a - | value to get prefixed to all our keys so we can avoid collisions. - | - */ - - 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'), - -]; diff --git a/Chapter08/onlineStore/config/cors.php b/Chapter08/onlineStore/config/cors.php deleted file mode 100644 index 8a39e6d..0000000 --- a/Chapter08/onlineStore/config/cors.php +++ /dev/null @@ -1,34 +0,0 @@ - ['api/*', 'sanctum/csrf-cookie'], - - 'allowed_methods' => ['*'], - - 'allowed_origins' => ['*'], - - 'allowed_origins_patterns' => [], - - 'allowed_headers' => ['*'], - - 'exposed_headers' => [], - - 'max_age' => 0, - - 'supports_credentials' => false, - -]; diff --git a/Chapter08/onlineStore/config/database.php b/Chapter08/onlineStore/config/database.php deleted file mode 100644 index 0faebae..0000000 --- a/Chapter08/onlineStore/config/database.php +++ /dev/null @@ -1,147 +0,0 @@ - env('DB_CONNECTION', 'mysql'), - - /* - |-------------------------------------------------------------------------- - | Database Connections - |-------------------------------------------------------------------------- - | - | Here are each of the database connections setup for your application. - | Of course, examples of configuring each database platform that is - | supported by Laravel is shown below to make development simple. - | - | - | All database work in Laravel is done through the PHP PDO facilities - | so make sure you have the driver for your particular database of - | choice installed on your machine before you begin development. - | - */ - - 'connections' => [ - - 'sqlite' => [ - 'driver' => 'sqlite', - 'url' => env('DATABASE_URL'), - 'database' => env('DB_DATABASE', database_path('database.sqlite')), - 'prefix' => '', - 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), - ], - - 'mysql' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '3306'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'unix_socket' => env('DB_SOCKET', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - 'pgsql' => [ - 'driver' => 'pgsql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '5432'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - 'search_path' => 'public', - 'sslmode' => 'prefer', - ], - - 'sqlsrv' => [ - 'driver' => 'sqlsrv', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', 'localhost'), - 'port' => env('DB_PORT', '1433'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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'), - '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'), - 'password' => env('REDIS_PASSWORD'), - 'port' => env('REDIS_PORT', '6379'), - 'database' => env('REDIS_CACHE_DB', '1'), - ], - - ], - -]; diff --git a/Chapter08/onlineStore/config/filesystems.php b/Chapter08/onlineStore/config/filesystems.php deleted file mode 100644 index cf5abce..0000000 --- a/Chapter08/onlineStore/config/filesystems.php +++ /dev/null @@ -1,73 +0,0 @@ - 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 setup for each driver as an example of the required options. - | - | Supported Drivers: "local", "ftp", "sftp", "s3" - | - */ - - 'disks' => [ - - 'local' => [ - 'driver' => 'local', - 'root' => storage_path('app'), - ], - - 'public' => [ - 'driver' => 'local', - 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', - 'visibility' => 'public', - ], - - '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), - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter08/onlineStore/config/hashing.php b/Chapter08/onlineStore/config/hashing.php deleted file mode 100644 index bcd3be4..0000000 --- a/Chapter08/onlineStore/config/hashing.php +++ /dev/null @@ -1,52 +0,0 @@ - '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/Chapter08/onlineStore/config/logging.php b/Chapter08/onlineStore/config/logging.php deleted file mode 100644 index fefe088..0000000 --- a/Chapter08/onlineStore/config/logging.php +++ /dev/null @@ -1,119 +0,0 @@ - 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' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), - - /* - |-------------------------------------------------------------------------- - | 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'), - ], - - 'daily' => [ - 'driver' => 'daily', - 'path' => storage_path('logs/laravel.log'), - 'level' => env('LOG_LEVEL', 'debug'), - 'days' => 14, - ], - - 'slack' => [ - 'driver' => 'slack', - 'url' => env('LOG_SLACK_WEBHOOK_URL'), - 'username' => 'Laravel Log', - 'emoji' => ':boom:', - 'level' => env('LOG_LEVEL', 'critical'), - ], - - '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'), - ], - ], - - 'stderr' => [ - 'driver' => 'monolog', - 'level' => env('LOG_LEVEL', 'debug'), - 'handler' => StreamHandler::class, - 'formatter' => env('LOG_STDERR_FORMATTER'), - 'with' => [ - 'stream' => 'php://stderr', - ], - ], - - 'syslog' => [ - 'driver' => 'syslog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'errorlog' => [ - 'driver' => 'errorlog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'null' => [ - 'driver' => 'monolog', - 'handler' => NullHandler::class, - ], - - 'emergency' => [ - 'path' => storage_path('logs/laravel.log'), - ], - ], - -]; diff --git a/Chapter08/onlineStore/config/mail.php b/Chapter08/onlineStore/config/mail.php deleted file mode 100644 index 87b6fe3..0000000 --- a/Chapter08/onlineStore/config/mail.php +++ /dev/null @@ -1,117 +0,0 @@ - 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", - | "postmark", "log", "array", "failover" - | - */ - - 'mailers' => [ - 'smtp' => [ - 'transport' => 'smtp', - '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, - ], - - 'ses' => [ - 'transport' => 'ses', - ], - - 'mailgun' => [ - 'transport' => 'mailgun', - ], - - 'postmark' => [ - 'transport' => 'postmark', - ], - - 'sendmail' => [ - 'transport' => 'sendmail', - 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -t -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/Chapter08/onlineStore/config/queue.php b/Chapter08/onlineStore/config/queue.php deleted file mode 100644 index 25ea5a8..0000000 --- a/Chapter08/onlineStore/config/queue.php +++ /dev/null @@ -1,93 +0,0 @@ - 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, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter08/onlineStore/config/sanctum.php b/Chapter08/onlineStore/config/sanctum.php deleted file mode 100644 index 9281c92..0000000 --- a/Chapter08/onlineStore/config/sanctum.php +++ /dev/null @@ -1,65 +0,0 @@ - explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( - '%s%s', - 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', - env('APP_URL') ? ','.parse_url(env('APP_URL'), PHP_URL_HOST) : '' - ))), - - /* - |-------------------------------------------------------------------------- - | 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/Chapter08/onlineStore/config/services.php b/Chapter08/onlineStore/config/services.php deleted file mode 100644 index 2a1d616..0000000 --- a/Chapter08/onlineStore/config/services.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - 'domain' => env('MAILGUN_DOMAIN'), - 'secret' => env('MAILGUN_SECRET'), - 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), - ], - - '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/Chapter08/onlineStore/config/session.php b/Chapter08/onlineStore/config/session.php deleted file mode 100644 index 8fed97c..0000000 --- a/Chapter08/onlineStore/config/session.php +++ /dev/null @@ -1,201 +0,0 @@ - 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/Chapter08/onlineStore/config/view.php b/Chapter08/onlineStore/config/view.php deleted file mode 100644 index 22b8a18..0000000 --- a/Chapter08/onlineStore/config/view.php +++ /dev/null @@ -1,36 +0,0 @@ - [ - 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/Chapter08/onlineStore/database/.gitignore b/Chapter08/onlineStore/database/.gitignore deleted file mode 100644 index 9b19b93..0000000 --- a/Chapter08/onlineStore/database/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.sqlite* diff --git a/Chapter08/onlineStore/database/factories/UserFactory.php b/Chapter08/onlineStore/database/factories/UserFactory.php deleted file mode 100644 index d6ca926..0000000 --- a/Chapter08/onlineStore/database/factories/UserFactory.php +++ /dev/null @@ -1,42 +0,0 @@ - - */ -class UserFactory extends Factory -{ - /** - * Define the model's default state. - * - * @return array - */ - public function definition() - { - return [ - 'name' => $this->faker->name(), - 'email' => $this->faker->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. - * - * @return \Illuminate\Database\Eloquent\Factories\Factory - */ - public function unverified() - { - return $this->state(function (array $attributes) { - return [ - 'email_verified_at' => null, - ]; - }); - } -} diff --git a/Chapter08/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php b/Chapter08/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php deleted file mode 100644 index cf6b776..0000000 --- a/Chapter08/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->string('name'); - $table->string('email')->unique(); - $table->timestamp('email_verified_at')->nullable(); - $table->string('password'); - $table->rememberToken(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('users'); - } -}; diff --git a/Chapter08/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php b/Chapter08/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php deleted file mode 100644 index fcacb80..0000000 --- a/Chapter08/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php +++ /dev/null @@ -1,32 +0,0 @@ -string('email')->index(); - $table->string('token'); - $table->timestamp('created_at')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('password_resets'); - } -}; diff --git a/Chapter08/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/Chapter08/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php deleted file mode 100644 index 1719198..0000000 --- a/Chapter08/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php +++ /dev/null @@ -1,36 +0,0 @@ -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. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('failed_jobs'); - } -}; diff --git a/Chapter08/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/Chapter08/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php deleted file mode 100644 index fd235f8..0000000 --- a/Chapter08/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->morphs('tokenable'); - $table->string('name'); - $table->string('token', 64)->unique(); - $table->text('abilities')->nullable(); - $table->timestamp('last_used_at')->nullable(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('personal_access_tokens'); - } -}; diff --git a/Chapter08/onlineStore/database/seeders/DatabaseSeeder.php b/Chapter08/onlineStore/database/seeders/DatabaseSeeder.php deleted file mode 100644 index 71f673f..0000000 --- a/Chapter08/onlineStore/database/seeders/DatabaseSeeder.php +++ /dev/null @@ -1,19 +0,0 @@ -create(); - } -} diff --git a/Chapter08/onlineStore/lang/en.json b/Chapter08/onlineStore/lang/en.json deleted file mode 100644 index 577680d..0000000 --- a/Chapter08/onlineStore/lang/en.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "The :attribute must contain at least one letter.": "The :attribute must contain at least one letter.", - "The :attribute must contain at least one number.": "The :attribute must contain at least one number.", - "The :attribute must contain at least one symbol.": "The :attribute must contain at least one symbol.", - "The :attribute must contain at least one uppercase and one lowercase letter.": "The :attribute must contain at least one uppercase and one lowercase letter.", - "The given :attribute has appeared in a data leak. Please choose a different :attribute.": "The given :attribute has appeared in a data leak. Please choose a different :attribute." -} diff --git a/Chapter08/onlineStore/lang/en/auth.php b/Chapter08/onlineStore/lang/en/auth.php deleted file mode 100644 index 6598e2c..0000000 --- a/Chapter08/onlineStore/lang/en/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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/Chapter08/onlineStore/lang/en/pagination.php b/Chapter08/onlineStore/lang/en/pagination.php deleted file mode 100644 index d481411..0000000 --- a/Chapter08/onlineStore/lang/en/pagination.php +++ /dev/null @@ -1,19 +0,0 @@ - '« Previous', - 'next' => 'Next »', - -]; diff --git a/Chapter08/onlineStore/lang/en/passwords.php b/Chapter08/onlineStore/lang/en/passwords.php deleted file mode 100644 index 2345a56..0000000 --- a/Chapter08/onlineStore/lang/en/passwords.php +++ /dev/null @@ -1,22 +0,0 @@ - '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/Chapter08/onlineStore/lang/en/validation.php b/Chapter08/onlineStore/lang/en/validation.php deleted file mode 100644 index 783003c..0000000 --- a/Chapter08/onlineStore/lang/en/validation.php +++ /dev/null @@ -1,163 +0,0 @@ - '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' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - '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' => [ - 'numeric' => 'The :attribute must be greater than :value.', - 'file' => 'The :attribute must be greater than :value kilobytes.', - 'string' => 'The :attribute must be greater than :value characters.', - 'array' => 'The :attribute must have more than :value items.', - ], - 'gte' => [ - 'numeric' => 'The :attribute must be greater than or equal to :value.', - 'file' => 'The :attribute must be greater than or equal to :value kilobytes.', - 'string' => 'The :attribute must be greater than or equal to :value characters.', - 'array' => 'The :attribute must have :value items or more.', - ], - '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' => [ - 'numeric' => 'The :attribute must be less than :value.', - 'file' => 'The :attribute must be less than :value kilobytes.', - 'string' => 'The :attribute must be less than :value characters.', - 'array' => 'The :attribute must have less than :value items.', - ], - 'lte' => [ - 'numeric' => 'The :attribute must be less than or equal to :value.', - 'file' => 'The :attribute must be less than or equal to :value kilobytes.', - 'string' => 'The :attribute must be less than or equal to :value characters.', - 'array' => 'The :attribute must not have more than :value items.', - ], - 'mac_address' => 'The :attribute must be a valid MAC address.', - 'max' => [ - 'numeric' => 'The :attribute must not be greater than :max.', - 'file' => 'The :attribute must not be greater than :max kilobytes.', - 'string' => 'The :attribute must not be greater than :max characters.', - 'array' => 'The :attribute must not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - '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.', - 'password' => 'The password is incorrect.', - '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' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - '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/Chapter08/onlineStore/package.json b/Chapter08/onlineStore/package.json deleted file mode 100644 index 7a9aecd..0000000 --- a/Chapter08/onlineStore/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "private": true, - "scripts": { - "dev": "npm run development", - "development": "mix", - "watch": "mix watch", - "watch-poll": "mix watch -- --watch-options-poll=1000", - "hot": "mix watch --hot", - "prod": "npm run production", - "production": "mix --production" - }, - "devDependencies": { - "axios": "^0.25", - "laravel-mix": "^6.0.6", - "lodash": "^4.17.19", - "postcss": "^8.1.14" - } -} diff --git a/Chapter08/onlineStore/phpcs.xml b/Chapter08/onlineStore/phpcs.xml deleted file mode 100644 index a1cf2b6..0000000 --- a/Chapter08/onlineStore/phpcs.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - The coding standard for the Online Store project - - app/ - config/ - database/ - routes/ - */migrations/* - diff --git a/Chapter08/onlineStore/phpunit.xml b/Chapter08/onlineStore/phpunit.xml deleted file mode 100644 index 2ac86a1..0000000 --- a/Chapter08/onlineStore/phpunit.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - ./tests/Unit - - - ./tests/Feature - - - - - ./app - - - - - - - - - - - - - - diff --git a/Chapter08/onlineStore/public/.htaccess b/Chapter08/onlineStore/public/.htaccess deleted file mode 100644 index 3aec5e2..0000000 --- a/Chapter08/onlineStore/public/.htaccess +++ /dev/null @@ -1,21 +0,0 @@ - - - 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/Chapter08/onlineStore/public/css/app.css b/Chapter08/onlineStore/public/css/app.css deleted file mode 100644 index cabac36..0000000 --- a/Chapter08/onlineStore/public/css/app.css +++ /dev/null @@ -1,20 +0,0 @@ -.bg-secondary { - background-color: #2c3e50 !important; -} - -.copyright { - background-color: #1a252f; -} - -.bg-primary { - background-color: #1abc9c !important; -} - -nav{ - font-weight: 700; -} - -.img-card{ - height: 18vw; - object-fit: cover; -} diff --git a/Chapter08/onlineStore/public/favicon.ico b/Chapter08/onlineStore/public/favicon.ico deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter08/onlineStore/public/img/game.png b/Chapter08/onlineStore/public/img/game.png deleted file mode 100644 index 85420e8bbc16098bf26b4ee63bde0e91a19d1f2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25896 zcmb@tcQ~9;*FK6Ai69A*=pxZO(R-rKsKX$7MD&)ZQHMkcAsB-gz4zXNAcBa|d-MpS z*U|gg-tYacbN>5X=Q`&f<9f>8Yp-&zd#$~nP)&6u5+Z6MJUl!Sh_bvE9^SP;JUoK1 zTLj?BDvTfx{7|_nymZxevUK$@bGE>H{>JIG#bbzrnU#f>h1na=cbyiJczACx5c%iu z_Y>>Wx8G0g`)-|%ixg+}P*ZtEZwEj4@MBc$&mVtn`4bqYThYB z!jdb#>e}j)yHzVI&QRwqa#F~|%vYAG{)enlWqD!t((-&orup~`QCNQ3#Y+Vw#^e6VcC~R|8@HdkgO;+yCCeGo$$5TmF1k>iEyC|9SU6xBm0)|MAxU=NbPa=l>gF{!cUh z|G)hI$Bh5CX3|(*0+kCD$~YSwo4L4VNY^vT3{w%{T>cRy57=n9=KN4f;1kxMo(@Gc zneTB?uj5)j3^2-YJ|aa60xSc(n zpkvflu4;7ad?1GG7}GWc1D_COcEud3K^&4|ab&1JUd&~|r5CHHfy!5| z%E~$u+RT+uXKW(rnA;{DG zwaMEo&yJV(Nw9`pz|+Ci*=0Q>)T@=u0{NP8Cin8oz-~$TE-HU_`1G0JGt&ByE76KeR&b;Q4pEqhhJ(+Jr#(eFT@r`|Zu`G)C#;l`@+(#v!+E9|BD+*P&}{ zp=tx64L_ZfiL>ul4MHemmA(3Xt|cE`4YB9ww6H)D{p?LYhkCZtS7BNKhfKk%kX!zp zv)tx8r*{ynAwZM=kc*NwqSv<{}e>IKts8DJ3zP zA~RB8@-}dOS(|A(`l;Ou0ofnW5Y0QVjxdjKlh`8}_ zezsfWBJ0&2xUxkZP_ zghT!$3IHCDg9*@{zos;pZrGBWD+WvqGKifgY~SG;x!yQl@%G;%OQjSc`&8@GZTo2h zqU-T}j7>|lYKJCXwlA#xgIa_MsO_+0^=EXOIEL{KJU$Muu^B`bm&MJO?tA+L-QL&3Z} zx+AtU^oZu{zWJ!##Nsa}^y#9)VNLm$WO*&1xHN)cnmB0&uV6|dDb|5&F?H>jFDo%P zq1k%u0=kj0GFjj{a0XXuIsGR3k$8D>>YQMwB(Y}$Cv%}ScgZ36z~a7U&otm3WR1A= z2c)j1lB4{)2QNE%KW{ovTnU@jc=3CsFND-FOkI;AZ<7iA$~2|nppoG~wfUWMk4ett zHLzIpj=YuhBQHy*1ttajRAuXtU+Z+o!XWE)cLaP zNw&(t?gItQ&)042)@2SfcWh`Q^Io?((d>^0KU`;T85VOnY2BSCFJ_=Od?pLK7W=7j zB>*!7?DBRQ5*(7DrA#JOp61>JE44dLIXGURM8EjCJZCeuBW8uc;v3F4jQIqbcwea~ za5-M7J({whNq?_*v|YmB(Xf$=xV4{qfujXeM?eiodH_XF#j||Nc-UA3?VbJ(O-b1mDXJAad@XmMR1nhL}SUU_>|qrPk8B&(@{&lHch@+O}c(%@&nmz7%X=pP>npS{iqrRb-diSyqq zb0#nNQK{`_`(a*cV>kQ#9$kdrG4;;mmp*Y6)gk?shQXqGQU6BS~N*kd^a(%F1ARVaf!9$B^Io zQZzO`koOrjfE$ewd3?GCU?J_{2ng3l;zu1Vh&-zjvI3P+X)lX=xqdUDIAN5?(=B;f zP5|uGufVN8dAwa0sgrANk4_IlB4;SY&OhxheI2=uV&Kk{tpgBzmWb_8&d7t#<9`nG z+|Vvo?<{jhU!GN9ev;ckGJM! z>5G{HE*Aji0joO+{ksTqpYXc+yimS+RCZ!hJ9Yl2M^BtydQM^z(UEC22v@ASlUes<2O}gi3%~DhK4hL&(Z__y(S>n6jaqC5O6_1jlCcPS{0@|Q?(%o z`xFODvxcBnpt9VWIfDG8guw9PKhJLZ*Ght%m^R))#@UQlt*GA+Aqj-Rj~Fl`9Ok;Y zgs0GQoh2=e3Df48_G>p!>$W7wgM$8N{Q^V_Hi#oO2!%gm(?SgV7U~)h4RbQy>iiLp z?By#;Fua9YMmX8Es1NTX03tpPC8!r}dczz^0PZls(wOSkTe|hOmBMvQZ!N&CRx58$ z693rl8(xBFH;m|cXQq~M**_XEXc$^Po?$IADTmFUK#j1cdRrj7{?(1w;1!Bzp%r~Z zQ97fJUhl--ltd3|9#}q&1U~4`M1%?*LNzA(vD+6V6EObw+A?S47s4VToyY%~aA8a1 z!=)_Q4d+4ZEv;LeyLoVy|183J7oe{t7k-`d8#^kx9YedamstX4jjUk8g*bWr_S?T( z4ZPWQADqompHG>cU&$UNAAofE`Xr&0kG^c!elAK0z#|wLTG(|TRH{YwQ>K;7#N zhKfSVuSi@A%NVOpIwl&bo)##0C4UcSrep#Du+K6T2A_>c>A-D^8-YR>FBK4)djIVyWM6dkK^L5nNj4`d8I1k1`NKlGCXOD6ETB^sEGh^ZQFB}ud9R+Fps?MX_Aw2 z`KpU72rZY(d+v%#t6_7w!A1xVdvE=@np%~xhrKvdYReIl-RX@xRgGHF6be3AYHsm#}d`gO)yq3@&g z$j5n}l0EhHF^tk7p?v5P^oiQ!wL3Qnvw@;C9sX=xKOs(IeYpNq+A!dhtg{EJvI)JN zk5uzE?wVY?hQ2Nx`V$u`rur;|ozBAf{Arwq<`tdN!2*a)pv5z`=%26r0-%tLBpF_@ zGG`MX_;X`lMFJg%NrE=ewnT@oiIlTj-_+7qqecVFRl0H*cqqtQgg<#TN&7#}yYyP+ zu406fjeeF$X86<<&q?(((WzbF_WmA4-=~>e7Y@f!6^DAgQcZsxMt&@P#3*$u!n@^jKi*9D4t8Rx~+9tn0LxX37#Lah0;v~?E)KbZS$guk{V&NJR>e;qz; zn&i+k@jgLBDDi`Uy&&hP!cE{8_JG?aR9z>5{Nb?q%Ney`ej9_+$$-H1cbDJ)z&w8; z1)vyKjl#m%2(7V4Nq{X~95$kg&N?zTp86RMY>g*7NV0Kfa+Gt?-O7~3=8JGi(Vnr6 z)`sYkstRNDvLy`>ZAT;ghk%l{H%?aX4Qr?4b7b1WV&11DE-4MGZ=37-%5oIM1*V4Rp$M@pba-6i&Y)fWB6mzjIz6jT2paWvoB*Z zbG2?MSrGp2uxXkAL zfS=sF)||#-+XuN#?$!s?+|hIq#6j>b%Ucd%>e5%0&y}zoHTb@PLYip-RTrb=lXLQz%6J|3Hm&#K=T5D%!ga@?3Kc!Km{GMW&K`Q_~fo9>UTD-Df@DDHh&g2excd z^$;;27K!v})4EzJ)R@zY_Tr{n*IkBfz_KbpR6i8$617Wh><)kO~z`HbrJbBbQ?44V8)^ah=Uce(v zmMTu#6G43t(3x|l=w6ZL3xSL%SxJG#9njxu{2SVIIk~r z9$#fZw7!`N2SrTRSC<;4DRH+v*~iaWM8%x@IGqR89ymiXFp z${SVkgi?a8KE3&t^F2UEeqKv=x-*a6Mr+^P$yDLmfK&d@Q+8yx=(0c38^E49K{8C# zwa2P4nTM`D2V7fy0wGVsO z=q^{dDVG*MbYJ<(z$j3V@6G&%VDKlHVcw(nVpex@fdy0s6Pb<=W#CAtRsr+{vSAqA`Keprb-OFxK zWdZ5_$*Irs;~>0^R_hvT9Xj8=+Z=~Q8nxXq=;|HsF3)FyR8yh4ffBUKQC!y;^ zbw+!0ompbu?14Onx^sR%6FrSzGxqEt2c9*7!o)ZO?#BjiG+PPadnT72!iUa|oUsYh zojut&tm!LE=-k_DA0}D5t14`fypF92*57H$%EGjSFAvZK73BMPtq+}(^nmr8kCIZ^PqyCwUPl>S*GjB=#R~QyCM9U#pG4_gaB}P z%mY;zm*5wWg%{T6`eP^v_MV>Bt1l{#Jo-sjd`F>kD%C(D)3T0DGao!+og?Fnj#$^! zw|&E!ex6);WAV55#FBTiJwCJ%P|S3v)Z5LnjIw$an^4oI_3P;`y#9Cyo{SV35EbYG z!>P{(Obz$C(%wd$N-SYKm~S_~7%bgQyp^?GT>#vXi49$d1C6%wTh!9 zPhK5Xp?5OLh5*cl&3LZ9^ydr1{8&tt&0conx%BJHCT7>pSWPbeY&x}EeBxG`XBqI~ zZOL6a&@wqtRM#Sv&HhwOIU(JgJ1$c7N~YYpnO0DPu&1%aqLz7TjR*j~w!ApgND;i| zzl`qj1Mk2z=MkK$X}4*57@Q*>%6$C+NP+TKESd zDsb7kEaev7GGXC*0ACoo^}Q$jp;C>b7vk$G1-uKGD)!?JE|1G@BfVRX^6pDEW=(F; zv4Y>s;lcNx;fuHp#Eg>Sa*c!zS=_a3?ERFQt@s>E44lP#y*?1Sz*kvCUck`655}g> zU!Tdir}@r+YrHnsikwAL;c6g%(0|pul_%}QFw#7EW7Ryu zYC*sdmZto5lNOa1IgLos?97@l@bWTsX0&FVSF%3Kum-u}a|IGGtyN+MdH0Y!*7@rb z{Zcs%sRDoa@ZRu8zOYqS2JfD9q?_0aaDARFuLP)c5AY?d0<6;v-d=w=kI#AIMu8o$ zow2S%bc{WISlFVV0+w^vt#?Q*vf%NEP(uu`zpabh0&$Q(bPW57lsvBrjKV=a^bB^R zLOsul;D0Xcee&GPBee~V_;NH(K{4Vlwhz=?P!=dqz#MLwswvYX59Y52Z@LC=(!&XB zg_7Jz$))zwR&U7sKp-PbtPc2~VEMuDzw3GgK*-4m&{at;a#>XZ z4fc_%r`6ZZb>{4C@)e9<4ePVs@Pp3yn@MSrDOp~RaCTg@%`4-qXZ zVLbIFR(!i$*(+(DlCNNuzIiFfJ#Ky~$t-uL$-e!Tfa}E``B_P5j}T0cj$P>BUFrfVgD09kmY z?fPM4rOIu5hS3x$jcp)JO}w7GmWwF5e2v0e{dSJOD>NCyyWW)3i*-KnxmXv8ob7ks z@IPNXkFNXNReD+IqtiD2c@YA?uBMA!mb$!PMnaiWYHspC`C_9mliww?1mZc)Q3G;- z+=oFcM7nJsQ*S4(@rag2_if$zQZ0@s2#AX~D5lvn%^KaPO{CU?>@r+zlazkPL4#>( zYHD(fo*d49+rU4jCs~$KNN&EzcYQAbnTTEcZkI`>%8V@0_lkTtgoCf-as|SGRbVHX zR&0R+R+`6wqu(#3LZX%q{y5EO*I6{JEh17G!yRY7dsk9Iqs zT;{J@dK6dwOsNoLwra6rRO69kyWC}?t~LLF#LdmkvU2>5z_@+6MJO$4NHDK_3gp3= znB&oQ2-c3Hcg5Mw)J4sW*0QHZZ(?GsNI$ca{1$UG0?Kl5?DP3^(|b|UJkP|o8TJTY znujyd$_CHZgqOd+ma$+7{{XCf9B3H?D>k<_PFDGsJGl|Jg_LIYfZ|n8Zs3eBAZ8Es z?2LpOGjeiR&LtDDSPOQO&a|#~xR3IKD=RBq@s&loYa(OG_N$26bf?yT+b2ODpR$7V z){BIRKm_0P?syPi(fb8W$?@B=b=ORLG5&9LZH;8-;ZSxqv)E4{ zI63i6UX{l^anO$}g-Pwn`I8k62X5k<`G0_3)VAfV{vexPeqfnwz=;_&i*-qizjkjh zWD16!pdvTw>&1^-UeA$yDLCz~c)2>iV3pc8Hat8$Geb`r!fRYF$j_gUPH6gMC2)AcP+^@@-L#EO5J^Z63ObGk#9a_;V!%y z_v1+JY#B+&$dj{=03Mttd|tE$_m5E%v7}@)XrrW#h+%jVt^DujLaLp<*yLAs7qf7c zW3lGu5ACntHB5I#@2!tlu84198{NlecG6cEL~iCDb80q%G{n*3Kk)sATFscDBSgev z<~6^EyO(52Z+(5eSM=p0tya7NY;SpS2tXJYTAWI}8{IVOjin3?rq;$v<0)6&8;p74 zPw=QoLm;VnMxk~Y(!=_b8=FW&sO8%i}dZV-5)RG&-aI9EazBbVlgZU|%AIMUH<{8DKiIHQAo*;+bVWg9SJdv@xuaX?W@`(5V)HM8 zCD-%ZD#exG9t8z;Dm+B({%XDt<%ZjrN&4lD?@bQw?(g0W+?(vH>~*ZIt*No3r>Blk z#I}BQ*BlnW8b3w_YejFO_xJZhM<7d!i^MyS01^_CVs9rCKiu8c_~o2jBmk=iVDAF7 zfncPbOt3Lugtg=BA6vec#k$zcs=7L{-HX3-qB#?Iw?k_NiAl1_UdEbue{O#=RyA&K zH(C^Zr?~lS>0;~BZM*Fbg}J3xXXRZ`DD{{2vYi`=#Sn8q;J7?o->+Ya$Kj~RU&JIC zxZ523AXr}Mga&JMX5t(TgpioiuKArKA889KSkP|frT$E$3a_*xm1Xhj?M${O2X@c- zr+<^V)}@e|NJJ&cKj4YyG$xDf8jgc^(KpK{3)07^V=IJjR+5C+T2YKp7>Z60hXBoNlV&N8K6! z8?;sZzU}r(EUe|{rl?OPMtR4a4qr0#t|eo(Cv$QX3r7sXlsTN9WY0^VD$Q44E6I`B zliDF1`0>O^u)qtXPRJkjl4Xb>C2@s;cD?HHhLcS6Ed<$^7ILd8%MMgYh z(Gu|u;(lkkqi3{nkhGsc0OBOm}ZDW~b<45yY2n zA#>AD$Cxf`w`8gYi3L~w_jIOpOJhzos%|y<>;mAMNt|PjWD)XDRwW+VMO?3zC)2q& z-W$3^BF}W)j<(HOPkX|kn<%_oCdu0=a^A!jNu^8Noz3^o|VCIoTT&&8( z<|tv8>c7X{dpV7bkdHWQMuY$`96Bh&m9G_$E5AZ^A}(p4tI~5 zFUP*G=;|I_(WrC@`>yC%Tua=sxZtNnB{hadvS~%d*AXbYF%ySa_@K!XBNnTkLl@g3 zb~xn64*l`Y;TCkI|L}Jvt7A4XacnA|Be^Ut9iXYr}e z1RDNCt=k=GH{;URK^|FHRdcZK5Wf|wujHIOd$BQ#WMePa^2?U*lwWEZl;Dl$e5x7A z5Ggf!urZ0P!D#E0us3Vb?_Hd3sW>`tv#0inh>Lq|PQ8RoKG#7fC)0)V7a5LCPdD<6 z(fe4qr(GW>HVlQ*M|2w#e|Pq;rGFp|5VHDWnTm)p`Hy3&%xPjm%rXuqpuPAk>Rtln zl;={i$NDT{c1S~}xQdixXb@W)`l~DU**G~B3^#juF*~cNn9Rb$EjCZQbK%PD|7(dd zf_lcuB^JTqVfVgy1x`>-#=uO?Q4ZuBhmoyfZtGyw$c$H^-nlr9Y<)pyB}^l;foyCW zyGP>t8q6!a>_q7uL9%9U_EHa9S6BI%ocuI0K*Z}JrSF@>o_g+&j1lj6>S65QDaC^m9M8W?#w;@jlit0{856drYQq+r zTW`_za6cOEd6z|a-Z*x?hVaRwzA}W=1L?3Y3R^J2M9OFAU{Kk_*%1z&>)OOJhFZqm zLKEGN?ucxT^MPOnmC5#X)t#Z6qaF>0y1r@Ttm>3Apf!yM?k6m%TdiVb);u^kVCxd5 z(&e&Cl{}Vu$LidZg(roSJeB6pT|M`viS~{<)sT!bYyVz|{MG+d=?lG>v-~AQuw`i% z!sNSI$B-l;l5?Tk^3AnbXksnt@Pg;_oc3JivNe@LbT5)5i8!G8qM1oeOr6?I!LdQf zV!c)Ts18KkqNb>+COQ?t$bTfaS-)07MH86>p2 z`PExZ&=`6lV%2%S7pZsO4qCV50m%r8c^Ow>Zv|CUZNn^_#Us@KJz}n8*<1n<mrfRW=YF2=!`U303!H~*B+_ov5WVPxa5l(Iqh#INpF$H(vu|bM$bv&c3jf~Q_iE&AIzpb&)!L6|SpI4p z)Q{$gG$^4fn?5SXj$OujWW!HCvak$iQl`dEoBD-n$B3_B;>lmy;H+4*v&@#$3aUOVX7H#WOZ9gAj*W&&r-}gcXcz#MsgM7Wy&to$ z=S$tru`xcb&;EyK6{UCT=UR7iaw3_cE~F=%pt^#y7A*UAR6HBnZCteDf!#8^?32rJ z7*+@R<^^5xivYe|Rc%8}rf{VEXN7<9gZbPx_8nj7Fn-FI(gh@_RQvClI z8G4NVa>6o5>?wFQ6WY$&1fLJV{P+Bd;Z233Z&|nekx5JAYl9nA@?<@clN;)L@+z;O zOfb3ceJ6lyTQbN z&`fqdncQr`gZo-*U1tmHT^0G zSrdfLR|i&96}_hmRHkC&KdX;hq&WXJ%;vQ=mB-v03uZ*30 zq$US~;s!YJGw_=b890Et!yF8y%zi64Hux`xQ|39+di1YOBK~>Jq+?ING^i2ucn;p! zu1AUZ{f)hbVg$`M!I}zv6h!4D`n#%41Pv`MQ)o_CX2+Mtdhf#$;@t$)kjm$FByPsk z@7y#qKml{__ccJ3KlH$ab4(lc;nI_o97K)GFt4R&n!h3~r9)7BXk1fVEuuaGk$)CY zbhVygrFgc$*q)5Jw_npi1AlJLOo|B>-!(EiIx)WTt}dx_^08;5wsfkKEk=T$Ki@3= z!vZYZSFqJ>VI|vjbkb?Y^yARiyfd&5=h{|(ez1U0%!CDpz0hL{ZaP0GThuV0uHS5G zYSKAvVNRzeE_M#O@cXzhFfafs9V_gNL3Pm4(yqrZMgPL|dTE=7U?&3l8#+V>!NDCt zO{-hOCp0S)0jO#P&f1UCwMm-QwD5_d;E7`ObM^At9E# zOfU7zI-LkXd||T$1w5iL44@Nlk?q=-?IXW(Fb>@$ZY!>T{jUIpwMX)ngANQ8*DQ0o zGv0ElZp7!?hP96OIeAlG8cDm2UvBQjIv7i=IV4W0A4BU5OifMA&12BM3o7^jJyR{w zQfR)E){p>4 zHC0txQJYSz^Zwys2jNGP>M~mCy_t1#R^DVUnP8T}+Jvo5n>r`MhTKit%*;V!lM6`> zM!)y(Uk<(v{=s2o!H`D+&YprDu1eH{WZmf>268x`hmRh`$HhVKN5{`I#g2}QK-OP{ z=g%DZG~o!pU60JwMp{EF|D~6YH+yZIwY``K_6#l1`0fj7l6LW3x;Exvo1z3Vj-lb? zAc>n!4hM^+K>G=#{`7^p9Idy%SJAVuC(GgLW9xRH$EuoApH=9of>T{wT>NfQI=jWY zQi+r>efjd6>k2Z*uO3(R4>T;_1MfPe)?D=ks z2Avew(!${>uW3_}Cl~2;f_NU|j8M2-W@aXU;v!Z{-L)S-eiYo9(BR^^#O~~R&hDm{ z>vvX!A`bTUP|fd#@6qhOeKK9DMXhA#Vy6j)wSHVDqkcDLdFh|)AQQWWxuvD$yLZv^ zS!Ybaah{dgpcg#p*dR3R-`g>hq`GO__i;+jd3EH?Lf+U~PZ`g1=Xo}82o5;^>$)7L zk;o@%$l2jxxR}zXf~vBz$H!mgvbzO{-*N>N8`iGRG;&UVI3SbTT}#stE-y=(5(OwT zVA#TPm+GpsKCvcB3U($mokQbb$M*)yq_pS_?i%l|D9gvCb>ADT*g5vGFnkFoSl*m& z&@=9rp6mB+*LS+y{xfn4(fQ7MK%NDhjU}UcJ8pcYJsIaS&VQy|- z+IVm>s3mPKo`|OQ*qC6R9hsF+Ns;V~i+lL+3HQeeq0c4t;mgpEj~<5M-j=dXM@m|2 zYsaumLLoajlV#Fmp}$XIV!wMfXzUzPy{_yb74B}Y-1fXUhX)%k9}=uiD|yuTox#<< z`|av*!{IE#R7pum-P6_5^4EsD%K{4SiB@2~<2YWSfGu*5Eex}a6smCi} zzr*$MW(TJqy~pAaGNrBVqMqR4V!kSsnpIl+HSYGwT)qg1q`7rH1#!`CfDRIK8#E^QI9hljnZ$*KbBex! z+OE>wL9Ya~FlZSVWV{cOrZnjL#_MTSor4Y+31(CS72^v{6VwKaI&i(D;bfJ=!orA5H9Fdu zE5N}fvPyeHVk}{vnxU>iQ*vOu^h|R#Mv<|;*LgZQuD*K-@%MYWwVgOIE_t;HF_$a5 zHg!?sbuQ*B&WP97>yD{eh5>0wdqd{ChgLNnlDCBg%>#Q~MYybq3!&9fR-zVBi)^x-`M8TuQI zIr(fFmKukIn@TZm$?%6qv3yVwDUhh4N-O@H2(s9thO#nEI*Z@kC;y;hn(-o$xw{~G zxP3g2y%LW%XX0L@sy1$Hro;_4{*hFsRu^&HhxWX(%Amg*qUg*FjiYOAW?v34%Ot#crSC-(fhucJ)Qu}wcQF>&*zdz_ij zDPhSL%IEku=Te2^OJ01}%h3Z=ddBOwZ~0t?aw#*|W%DsN{7{pNFqMF9As`1W2~ohjUJNyg-`dl}2BZUUXL zlWx&=nsiYc@|~QJa;rhr{`mWsCSlUw1v=s^l^+r6Qj$p$9i|F+@ ztol9H_7Au46ZbcWvoO|ebW*r3xzpQ^MO9VR(t#Xg!7lTe*a}x!J3GVCQw{ASn^yiS zSkCYPN8D4ERf`)}o&5%{hduH!_1@V3H$7r^dN6H*LZTj7*G_tJV!d^v`fywH8deCz zWkJLzE8pFw?U9!?#p&7deN)<2F{Ryxf)Ls631@cC`sT~v*nIK#HqM(zT`E?J3xrrQ zZR19l^J)?a4~bFJL@jEbu@XSJ7o(N3&-6(4s{6HhV`ZFVuQqsN6g`TA1_Th@6wKk6 zWXa33I{=v5y>yXwbfg_>BGWJ5e=#yKVF_PkrHmg^L)H9nTdUXRkr6{2pFZkq5_U1e zs*N^K%S@DC(v9gx1q&!baZu1vTxL0)XluX79CeM9XBJkvH}NOMa0$;PZ7Om!xnz0l{C_>+Aaz1 zb+lAeboBJS_ek`N@gJ`nem(njiS}Ia)_-x9-MJfivC^$FYkJzh1?5v)7zhXm0BTy; zlRUo|>2MiRy9m&VFDcW`bb#nvs_|4IWmE^SyHTR_)2FxW_rme zq<1Iig|>D)uhF;1kfY&zkFDm*CY{|pBQ@!|2*sx%x|?Q#wbCauGbyM&_xG#cud4~w z?gxFmbXnM!Dz;-r#vPnL0QC{6rOCK7J*@{zDPsZCz%#^AQ1-K}0-v<@+8N5@M$^e{ zLPYd(wUeFQbiG^Gq|@C;7py>GAPP|g*u=>cv(>@fzUH*EGSA&bAv#6HypdKzQ$!s>o5 zH)LKKNJ&X?S^70xYI>hI7{m%A_;O5P`^$i~9dBKdxnk?wc0qh(L}wJsC^B1KmA_mU zPHc75@EI@Cjma0SmLENaaFL~?y7o91uCCP8C_Jx)-viy} z^Yj`^bRK8j1)sb77!aNpBk{X_u8{Khrrn4(nX%$E9?U~L9Ryta80>fr2fA`+D!dU+ zVB#|9UPQqXk@C!u7(J?A&JXPvM<(uM+8UymJDCZ&ATgb5BG~jOuEf``U*p;znPR5e z{)~-@@bN|QJT*}bLmnrHA0?MLG1h&9?&yI}KouZdlynp?u)(m(@ua%@Y!4w0!ix`A zVon@SMn`Mf`kLM@dq3)Zc+@{*acTD~$niT5zoWJF@}F{ZDx8tF_K-vEG}`R>X?Eq- z;@I=c0FjA*FPtZBt#Vo8n|~TP(EGtJuKFLg@BV1Y8OFl#6*EVWzE3h?CA$A2y1M%D zjOLL`Ny$mgMz1RKUXLh1T%dzWUub*2r=8ckO#^daB+VQzMxH9LXVlH>ZLzj)9^|cH z7?^+9dp&0O6@0*vPrzl%i67JXMmSOB5!LO??6{`kC=xZ_FR0CC30uXblJK|3b&VHPO z!((87`&XLH(;&@gvtj$*m6Pf+w)4Hcz2n{a43V7N;Yc9?fq#d*VD~=uq#UY*vrgB?)i;T*5Z4|8*K-JeDDi$?(>7ZJ%L^c5y z&`G#ch=fX?ERX%_=ol+C9UCbB^_su0w>L$~dvidk`D8@{Q9v*r;b|mrmlq zcCqgAKPdn~uZ^`2ghdqi65%Vf*n3fQWDOV_^1iR5RzzYejm-PlA{RdJ;tr z_x6;@gxU_P>n~33b{;w*PD8iwdqwZFk{9Z$wqT+q2$b737vLkB_2W#vC_3dRd1R;2FtbDs(jktRT14|!wpV;yQ77NnKq_-G)Twe@kbQ<20`L4p7AwFTsQ;d<5gAD9 z9@6^m80Q*lvNAk8V(q5wq6FJ~wtLRj^(jR{ByLXJHtv2;f!PxGV*SZaQ}s3DRMj&h zl;_?+oeKQ)ibRAu`~5=kWGiG2B;hRbP-gHL{Gx;y>-*s2Ax}Fy?S{)2I4!7y@KVZX z^$qE&F8juOPqq44=!d>3q0(+0j8l{~QDtG%en~3tw)$#G17lr-%q~Wo^Ma_b?^{@} zo(ts-uwN0coii~Jl9`ms&rGLEMHB@8LL19O&27Qpd(6rQzE{+eCd;j_Clddz!!nSa z{bO)YOGPFB*W9s>bg2i&PM?OWvEg4jjMTU8!n2VNEq}|+JA#9Q1*UXY(0w+ShusF7 z7jGD!D)qSS+cBI>FQ~AvCfrx3z6;_7^F4qrOeH((^sVCj0HYlSa8|M|=!rnrlv-(p z+Fr7Ux>#~A*mXpSheCIn_D2nIFDGl4gcE157&DH+?d=hZ*a`dI7r13Fy?G@GU46|L zxJ{S7^T#fg|3-@qnL-PU`b`|ruGu-ANv;d1kr^m#>dA$+Z$6cAQ`nKOGcyX4`(79rafzPL2J{g>3B$)3D+;z%;PE8 z!H1U1+WlqZKzlCMR}D^zH*}BkI?}%sS_iuVOsz)Do;3iHdTpM2?_cS?S#rW>tq-Gz zV@^nP)6SyXt~bIqhztmXW%zc(K!Y=gT0-H=&4*pbZ;>Me0kXGEzc8uamY*vdw-;_? z@W~v=TNqXrrRDCrGi*lI_;&6Ei^T5S4PPHu4W+S`90q<5M7+5Yc)o;Cc#fHPm7&kggHDp3f06P!=rAA6)s zrV}6Nd?yq6NE?056nUX_C>+ZfylG>6+TL@G{m!(Nu_Bznni0&OW!Ax+cyV&6(ivY^ z(6AXiBXf?>E@3bI2l7MvG5Pg^I*Y0t4j&XXcP876e#L;{pl(YSPfK1MQ!=5f)Q;p9P|blZ z-rA@eE6=fY$4MeuqRC@!9q6WMdo_7oM5r{nFq?~uV~LB*;TiAD)t2QfLN4I52v(j- zW@2YI6)k==4LFSQc-_pz3_E|-@n~d;(LWQDPv4V>TZwgJMY&arpI}74DkTzucF+r_ zn-Mf8B)N8M;a+`l+~J@V+c4c!k?S|xG}0&<3o))*Sc%RlbVMcb(++BP5r#*DvX@j z|2oxnh^LK-(J+53NfPA^nYt<%8WypPHTL6L!Qk5qCRcah@oX}@$-a6k-!y7Fkf35w zZ`|$74JtG-nV#O`5&$Q%L}8-}ltT7Xu$mAT@nmp3rmdmR?_exASiQ(z#CYXj`{!Ks zM#G||m`{&E0vZwYs;;edns9Zf=Tac!4h&3})U^i9c64GQC>>NFVMvL}&B8aIc%Py@ z<07XVuBw2~A_)XrU*m#F?x*q}nGAbHv@C@EsegLVgOdv-#p^h+d&bZWdeP`vjzgS) zo{aysrq#`yTnlh`czHlVk!3hOYT8jGv8S-t)3ka^LhVBI-S*$Zup<;xE#xuJg1WtM z;`b8d!)dS=pqIi_AgP-WlV|PV&{YcAnyTXm?C^=Xy6?Fy_5W4cRmMf#wChDtWTiwJ z38j`&8flbVdXW&6kZycPmqrDYa0Ql@Ub>{aM38Qf4(aYjIJ3`tzMQY``Sjo4?#%4W zJ$>KTb^Y%xU78siTPi8>2WEDcUYi^@KIA=I&rmKN$wV_TzOLldY~+kq>au$G?sTg% z=%4{vlNJ)%C>H<@(+CG}-B7Kc**|ISP`J3f^m=&0SbPLb13W<ksW(Q+&QP2(>Bcu~?!W0w~WMwJzkRFm6@;eGReiEi& zRUd2If5XJDV`F2ZLhmsjvZtUwn_;< zUU5ry@~+li+XrFIe&Dy9KVga!oAz64KeO4+jLA*v6C=9^@ZQc#mvVhEwR=RYQRLG{p?SS_>|s!1dbsO;*k_%kcJY#%7^eoa9$qQq@I7-pN3kR6TGr zP#SsVz~I9qMs2=F@%|QAz+Zt1jZI$QpxKw_U}YgEOB}G`n!H;L;5g`vA|2L&>gsAN zI`or$n&o3GZHZD4j|R{y9+M7l1L1AH`ooZc#p!@dJ!+&GQ~E?_A6UR3&Sj9Vs)d7Un~&mh_MUII5{@}$9pyMnvB z`@PA_{YY{BCaQQ%DQot`vBcBaPfs0Ti)v6kc>!lq16SVb)k~JlL9oACS^OBQGkyy& z-8Qh$BuR&crI@bE6fi!jtC1tcpU-uBiO$V{Ngo*jyi3dzb$3@Jvtaag@pjz-(HRW` z!^uTV@Z^4cGdSPJ>83vUuvq_zSr(knR2$y^u<{4zK9%c@!4dosgEcryUn~~+Vhbc_ z;^Q@n%HE@${j)e74MOA|CB}!v9Lk%N1v-D9`ezB5Kj_+7q@)*{vnz6ROETzB(13Ij zq6D1CEFN!-w5(1B|K|_Yi2bu zPpAL1X-G;yNIR1~xA9n%(gNR!xdfKJ;6Q>A#a(Z^nO`3BfZhk*VyF8Isr5stHDjgo z&z_6T(`s(P(8nn2BNcE=Dsi~4o#HYHll9rJ&z0)7`Tj3#ZyB9)yq@Ey-twjTazC4I zK+F-Tf(~aJ@9%G-#SHW92x@EQCcY|C;j!sy z2_YdN+L)7;qa*u14?1&v4hya*J$3ayuw1|uR5JO+#M}i#MTKaCi+weJHi#UM*UhlQ z)8vfg1rpJJ)rtZwcE;CdP?CuH0}7de0aer=&z7>(+eYQ|9;@HfER~f*WCy!-Co6X< z7LOPY`UeJz9cQ=VikPU&%FCme^?j5UvRR2Gz$NL}qw0IqdeMyfbRj__@Y6^-Eh>&j zSOr=P>?Yvl%=iQPfAF8Y@q2O+3O!;{IeV`rOv1%$zJLEZzo3`4Xeo7J3wBk{HBHI2 z>iT+buwwJSZnhE_{ry|FIVmGbIj?O1IJvQ7iYDHIP6uj{gkl!OJvs`G)kdWZjFmWS;7oK@A@ z!kVVzfN*@D4T!#$^`sT~RJyIZ%^1N%Yu1{_o%e9P&ew8FUvfEA))p5R+g0~lly)%L z)Hah!#(taVysk=5hjVhrzHS~>r;L!*C8COg=m(n14lP}1`^uF9#%uun$YxdAZr<$3 z$i!oSr6z^voJf>RZgmPJgp!Pq3r2Pa_ih{|iMhL0Uwk?U)G$N}fPK0wP0z*6?YKQW zJ;PAmMH|Ey;FT6Sr%R5AVzA(>_HGE)T?P?}Z88Japq;(FYxQe6y9#t|Zc$Op_bxQj z8*FwHHLl8M4DMD|u3Qp(l^!Y$kejR)~`kp~K^H2|d$d}~&fPnwt%$G#W4}n5b z`Pqc&(E2a+_1({UT+v|Oj+xDk>fnbXe<@U_PN4vBMBBiCE^*&u6rkRo<#rPTbgbqA z-VgKX!lm9PIeNSTHr9j{*I8dZeLLys#oV}97NWyOY_@jPYx$&CmmEjiiPzCXCK&s_1JOW+9t(3EJR8cPK9tV)n3Y`JRe09B-A^Epy^ zvG(=&{M+`UDDusvb0@Y3i{u)u2|WP9+8tMF?lUFLICpX(POrY7rCN2R(~;h0)la2w z?s^W)`gW)B2y7ifvnPAAKrl#^qZG(e%v+?)FMk!==26L~X z*I&fKek|{LqX#lRY6}E8%O_No21ZAt-3CVeisV@b*m7NFRAKifgfuvS6qU`{(uO_j zeVe$SIX|70m#|QM2ejqzC^wG4Uim&$GFjar&z=&UFWvUO-;oU zOlsN?$n{WE-i}n6$v+-LqGp&Z#k7ItCoXt#lxT;)|Ou7_(sFZ(r@5?k`i{c7|26Xp1wd(b-|hQ4og zR*A2=d~nvA_#$HJyQDJQ#HywznxK>5Tz@?!i%)@?$AS!KvaP;hTF5@JTWuE>p-M@{ zuprS+?caX$*CpCoHfG@Fv{Cb5SsP=FD?@wcySA3R&$VRfd;0MVy3pYS*1iP<K3^@(d4T_{^1HEXc;iOM>Z8{bDC^D zTCG4TIv_Zvc_$duyyy7vS*3`bu`#1ei1ElInAjj>#4B*Q{EXu*mg(r$?m`zJO&{QZ z6i)>A<3TfDR(m*Z3>Cl+2-| z#KU$Ot+N(a3nst@k6r{!TNw0{kX@@Ry!3ZxWY*WNhOi|?({C-6OoO2Bfg4)EP+Aj>GRnOrNzrvXxV3*k2ee&O*cCm z{HjN6rc2C~EiG62`|*o@zq<8g8lW|fj&i8UIC;^32T7xZ0{r%Q{v&L)boxNxqYvx; zi_SOX^TvzQx}n>T&(e5wdNv|t(1VC& z4IK){PRV1&xx12QcmvLkP8itLOvy@qaiSCOQ;o=Ql>eRAwF@MX1Gv1-YgJq8;8VZ$ zwS@>-!UMzLv`=z0iH&CKHND1&@``M;DneSJ*q-I_@#^3ZOeaS!JxU?T_t-fp>k1~y z-+M3ZCC^j(VxRZ_mTXbqT+1#B7s32}`ap`^C^Jk<>lHs%-SZaHLe@O`6~=Q2ga*&x&&RJGY#u_%f!VjfIyx7 zJhE;1n#w22sU1za`~-ko{d1fni&N`IyXHN8oBQiY_j}|6iKz{G*6}#m9_37LzkK=f z&h4Xj5sU-Q3vGmAZc`Y(z_vgpsgvK~!i~S~h5xy?!S$%3O#|ORYG@FGqUR%Z5u3x+&HNAKKlXrz#4>)0fKt5R?Scm_+Zu5 zQNM)q1{rB4@xB$Fl|-F&zdJ2pSmgCBOilIKnkWZ@)2)_?B&*}Vz4|q9i|ma3GnA>C zz>Kn>qxFz$qP!ZYlzHNv$YihG7wdRgY<+*p4=WI5Ud}GMce+2TNwgkUv0c7-6{TTe(DW4*dIuq0b~W(LKYW4dOeXL_5rvjOH0dFuWacz4u%esMzZX$ zKa*oAZGw?J9N}Q4@t-!IIfEY@xodB1fGwAx{<0_ggv-}v3sttU6HI3vka!6Q1xn0` z@%z2Ky>LbD&KITn1z37}MTHWHeb0g7K@uUu8O7aE3szpOAFw3=YRVnI+8yW%Akrif zY1E~i;ATK-^aL+Ok;$w)2}r)CnU{7{i2rsOTd~bON(V@eit8sA%$VCBQcqdpM%N?y zb3!lB{no`l`2c1k{X9Iy8dav-*oA&7c-86j`+rHETKqsSORURRO=R&`*|8`-RGS2j zk5^6s7a8Pe?VI!onodAis2D%5=BA=cNQ>M^=Q2%NVaxN%m;a^S_UF0zHY3dj$KQd< z7O+eCAPrs}%c(J-w#Lkg@`jmIO;*Dl|G_LRezl&IN^r+Av(wJU2~&Zr3R>n_xBxvF zf&7OYq-!wI??UdUu_x%u>Owf2)u&ay$<*e^?d#cC9 z)_inIPoSST^_dF?GMP&np;kM=Js)N~@*FO;@l zx6Jz2DIKFw-mV6^R~c_j6(&w!4Ga|()5sL_xMIoK-x~2HM;Sy^MbK#LE!Va}d$4P= zgxww3i@diJw|W*yO7v2>PF_m+&#%~TH#&$jCWS(o3S5A;r0>u}H>GPdp5m;AT6p2VsqGrB zcqsHqz=>L*VxJOT{~8 zl0X0f9?PQ#dX@kQjJ^r6lH+*8Isp7D@yEE9ix6oR0-(V6-_- z8GkYW3FB6wPDoI9{vIyG{E_x!RjdFnL(@|aNJ=MQFZP35MO^A3MB}#Rcu6KbK=N6x zL!`~`f@?P0CJ_{p(RP&#GQ@o!z5~(d!KyD<^p}O#uR;7oDL_;Bjf7{_9zr1GTp%ag zHbi<0C@?fvi-DGs0}ZkvcSwpMh(2WFW2Fl~x+o4H?IJYx6(15Dz#RkXw%<(u5F+gg zjvy)2GzvH=Zv{fIDiAwQxZQ!mEHKfcLas)RB0C-kcwgor+zM~{)xpU-*|Fjn&xl^S z4K(9IkY77rVCP*4OU|Y5$;=^lw3A&HT$(FXV}rfRHl0yyJleC?@Spxyt~n zKVXk-j%k0{-dAf{kibSUpko=^Sh-_eAa()aP}DxtI!jL8M+Um%JTrNEV(0=ig<6x+q!W;gs?Vk@zkiLjre{_~j?D`m=6 z`GN@YRfR)d9#Gt%=nk;v9D^jdIiwjTSk}y~&Xs!`eTX{{>8LxvE_(b;rWT?bI8BUE z4-@4;{b-&VkGDeDA%beT&vFQ`rokZu*O&Zkyp%S$VEYXwkS3m5z}~D|(l4HcobfK! zq*kFLDv)8;(P|)0)_)5WH_R%!3dYOf`(6)7c_0y>m*IFLyMJ`DLTu#h?8W~5(S>DH zuP?q2V)H@E-K8H?c9p1W?q>Eau77}oGR4TKa?_NA+>e7*`v`sS7I@iwb$Zz*K% z^g?js6TSniVu$kh3eu zRv1~#R)(~;h&V1Ul%+q!GRB70HYM1o!ZzfKwtVPwe3yvm$RxjD{2~3=snDAyWSz}$ zb?K<5UHBk5zvNm+OS&IE;ZNA2si4E_Zi>*G8g6emob&K_p&4Zn6)g-4kl0_+q0c3w zOXN7A((r(_EvW{t?k8**EqiwQaZ4$U;Lbg8; zVri5pV*9|)1bQE>s{9F&{dDCRr*-kQ*-w~CNK{$3N|qav4Up$RYcJGuqY{;vj9MLSovD*!Q404mt~g=J<>; zq=b>EpaAL6_jnb458m0){e*d$vDk}wk;TUH%s=hF`4c8SmHtHshqYFB3MtMRU@j``K_|Q{`7$xg{7N`kX z(ztE;kQxrI8%%}i4IeKNC@Kyq1^s?Ndh|t@Bt1m|2b<~;mLiM83!U6RT*UdQgO(_f z{e*40p+!hR>-z270Eseecs!)qqo*t8h9g9p=z-{0gM{5Y=yq= z%dsMsw;f<;?av3&so)c@G;NpoQrJzw5G+W&!^Us?vtz77hwFpQnss zN=}LRkx_sx7(XAg#m`?<6@nLa@A1l8geMW`Np#>}!a1kgU}#! zXZ9RC#$?>nH$4V})3YUN%mq?h3NdVtE$+J89|zQ%nUft)Ep0C53F0+N$Jx=3>WI-k zHk83JA@CF!z3Qv;CX(@vpy=Vf1WZ#&G^F!~uN>~^C!uvw- z+airH9VcKAwcgm?;N4n)jO8LWZ^0B`wni4`0z4ZNX^%p0ll`=rdYS9}t5kposU!ao zZ|B#=tYV|keZmIO^PmC0DbQ%;^46nMzf`}DQafMvVEnskx_6;Qh z>It}h;EjEgoA(#lFQH}Dl>2;=%g;YQZ zLYp$?B&}QCb1bQV`(U=55e(F^%v!{#YW(k^QQg4n%h$ugjJx;+ZDGm1mvdo<$h%+) z_ygSh%ysQyEAfJd;$WOri(k|I!}Rl_5=X8Pik1LVfs|7(qmP3x)mFqhoTbKJib&R3 z3(SR!!Z$Q4z#2w)3oUmE&avY#>FTl|TS}oqLHSC;TT_%bT-aY7IvK#|D%VoIMi*}C z4xK#>UY6h3o{*8sy%v>lYdH2+7zb@*%}Nlsj+OL%>v9p2?n_OWsl#R+K(K}3mce0J z5|Th0dRDnPEF4uM`ZRd7br#xMH_;dSpx)14Qn~aI%^Wha52aA{8N$^IG4?VzAQ%PYD?yoPj25d*5r!?19+(hj6k#}4HA-Jd4OPlb5Qr&}qsD$)Op-1|a|w^o ztRblXmh@eZo}=$JYizL5dJ(HCJec6tPuN%Ahz5aolapKQnQDVIfPI(>YR$oBeQN4? zU(PgyRE4`Q^v59$+uB~U>PkdJjE~k1h8tUUtYNAwU6lG`>h)6(X>k16dyZgj=@JJE zj(9Yk+9usaq#vr(AOBS9#QmwaE?DQ#TdQ&85-rbhM zA^7;QdqNau>x($309~<0Cx0;+6bu-3@cXYoVF^U%f=k5c5yqUIj3m8@-X_$6f#K?C zc&=?K+fv{TF!{#X-NZ!^@@b_Ru73wUX9&z} zx!9cw2Sr6I3tJniH`u9@f{F%@QBI5Sy%rOyqs|?6vgQrgp0ep56@!;Dj1b=8!7;>x zsW*GFLDp5xWgsqbtm zY!oSZ@N`;+bqqHSbg`=w_O+BmCQom{C-#f3N()})zPs*|BtjYcTVyaAPH<`qpdy6R z{5agrwmcX*c8OfBeT74_J|xMU5}O}-;}-cJ>kW<6YdUM{A1)46R~bOVyocCfRqDs- zvS)VR$)68-9nZRwf!)Rg6WkAmQ0uw8HQsLzcbHnrKMZW`B1L1=YT^8c=NS)*VK;$F9~||yQdKeUElWncOS~GSopDq5m#*2iS6GfNrz;R@j29a zoVWkZnQg3=GE^sIki7qQW%uSrPHjZN$$jU|>8iaqhdDjhl?8&mdq$E~KktG+%KY&c z*UL(R-0w4-0K6Z=1ibiy7rgP}zkC97{G0#(^917tg3bTmJVAs0&G-L#0#ib;`D3Bi cz>% diff --git a/Chapter08/onlineStore/public/img/safe.png b/Chapter08/onlineStore/public/img/safe.png deleted file mode 100644 index 445942c707af53210931f9f4f99f6d3cb69e5d89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19240 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
    w==XB0?3|p=#`o%NsudE(E-U#KS3Snw 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 o>ir+C;RN10sIS0&a;pmake(Kernel::class); - -$response = $kernel->handle( - $request = Request::capture() -)->send(); - -$kernel->terminate($request, $response); diff --git a/Chapter08/onlineStore/public/robots.txt b/Chapter08/onlineStore/public/robots.txt deleted file mode 100644 index eb05362..0000000 --- a/Chapter08/onlineStore/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: diff --git a/Chapter08/onlineStore/resources/css/app.css b/Chapter08/onlineStore/resources/css/app.css deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter08/onlineStore/resources/js/app.js b/Chapter08/onlineStore/resources/js/app.js deleted file mode 100644 index 40c55f6..0000000 --- a/Chapter08/onlineStore/resources/js/app.js +++ /dev/null @@ -1 +0,0 @@ -require('./bootstrap'); diff --git a/Chapter08/onlineStore/resources/js/bootstrap.js b/Chapter08/onlineStore/resources/js/bootstrap.js deleted file mode 100644 index 6922577..0000000 --- a/Chapter08/onlineStore/resources/js/bootstrap.js +++ /dev/null @@ -1,28 +0,0 @@ -window._ = require('lodash'); - -/** - * 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 = require('axios'); - -window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; - -/** - * 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'; - -// window.Pusher = require('pusher-js'); - -// window.Echo = new Echo({ -// broadcaster: 'pusher', -// key: process.env.MIX_PUSHER_APP_KEY, -// cluster: process.env.MIX_PUSHER_APP_CLUSTER, -// forceTLS: true -// }); diff --git a/Chapter08/onlineStore/resources/views/home/about.blade.php b/Chapter08/onlineStore/resources/views/home/about.blade.php deleted file mode 100644 index f79abf3..0000000 --- a/Chapter08/onlineStore/resources/views/home/about.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    -
    -
    -

    {{ $viewData["description"] }}

    -
    -
    -

    {{ $viewData["author"] }}

    -
    -
    -
    -@endsection diff --git a/Chapter08/onlineStore/resources/views/home/index.blade.php b/Chapter08/onlineStore/resources/views/home/index.blade.php deleted file mode 100644 index 1affb20..0000000 --- a/Chapter08/onlineStore/resources/views/home/index.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('content') -
    -
    - -
    -
    - -
    -
    - -
    -
    -@endsection diff --git a/Chapter08/onlineStore/resources/views/layouts/app.blade.php b/Chapter08/onlineStore/resources/views/layouts/app.blade.php deleted file mode 100644 index cb97098..0000000 --- a/Chapter08/onlineStore/resources/views/layouts/app.blade.php +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - @yield('title', 'Online Store') - - - -
    - -
    -
    -

    @yield('subtitle', 'A Laravel Online Store')

    -
    -
    - - -
    - @yield('content') -
    - - - - - - - diff --git a/Chapter08/onlineStore/resources/views/welcome.blade.php b/Chapter08/onlineStore/resources/views/welcome.blade.php deleted file mode 100644 index c587c72..0000000 --- a/Chapter08/onlineStore/resources/views/welcome.blade.php +++ /dev/null @@ -1,7 +0,0 @@ -@extends('layouts.app') -@section('title', 'Home Page - Online Store') -@section('content') -
    - Welcome to the application -
    -@endsection \ No newline at end of file diff --git a/Chapter08/onlineStore/routes/api.php b/Chapter08/onlineStore/routes/api.php deleted file mode 100644 index eb6fa48..0000000 --- a/Chapter08/onlineStore/routes/api.php +++ /dev/null @@ -1,19 +0,0 @@ -get('/user', function (Request $request) { - return $request->user(); -}); diff --git a/Chapter08/onlineStore/routes/channels.php b/Chapter08/onlineStore/routes/channels.php deleted file mode 100644 index 5d451e1..0000000 --- a/Chapter08/onlineStore/routes/channels.php +++ /dev/null @@ -1,18 +0,0 @@ -id === (int) $id; -}); diff --git a/Chapter08/onlineStore/routes/console.php b/Chapter08/onlineStore/routes/console.php deleted file mode 100644 index e05f4c9..0000000 --- a/Chapter08/onlineStore/routes/console.php +++ /dev/null @@ -1,19 +0,0 @@ -comment(Inspiring::quote()); -})->purpose('Display an inspiring quote'); diff --git a/Chapter08/onlineStore/routes/web.php b/Chapter08/onlineStore/routes/web.php deleted file mode 100644 index b1e2ba5..0000000 --- a/Chapter08/onlineStore/routes/web.php +++ /dev/null @@ -1,17 +0,0 @@ -name("home.index"); -Route::get('/about', 'App\Http\Controllers\HomeController@about')->name("home.about"); diff --git a/Chapter08/onlineStore/storage/app/.gitignore b/Chapter08/onlineStore/storage/app/.gitignore deleted file mode 100644 index 8f4803c..0000000 --- a/Chapter08/onlineStore/storage/app/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!public/ -!.gitignore diff --git a/Chapter08/onlineStore/storage/app/public/.gitignore b/Chapter08/onlineStore/storage/app/public/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter08/onlineStore/storage/app/public/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter08/onlineStore/storage/framework/.gitignore b/Chapter08/onlineStore/storage/framework/.gitignore deleted file mode 100644 index 05c4471..0000000 --- a/Chapter08/onlineStore/storage/framework/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -compiled.php -config.php -down -events.scanned.php -maintenance.php -routes.php -routes.scanned.php -schedule-* -services.json diff --git a/Chapter08/onlineStore/storage/framework/cache/.gitignore b/Chapter08/onlineStore/storage/framework/cache/.gitignore deleted file mode 100644 index 01e4a6c..0000000 --- a/Chapter08/onlineStore/storage/framework/cache/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!data/ -!.gitignore diff --git a/Chapter08/onlineStore/storage/framework/cache/data/.gitignore b/Chapter08/onlineStore/storage/framework/cache/data/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter08/onlineStore/storage/framework/cache/data/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter08/onlineStore/storage/framework/sessions/.gitignore b/Chapter08/onlineStore/storage/framework/sessions/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter08/onlineStore/storage/framework/sessions/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter08/onlineStore/storage/framework/testing/.gitignore b/Chapter08/onlineStore/storage/framework/testing/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter08/onlineStore/storage/framework/testing/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter08/onlineStore/storage/framework/views/.gitignore b/Chapter08/onlineStore/storage/framework/views/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter08/onlineStore/storage/framework/views/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter08/onlineStore/storage/logs/.gitignore b/Chapter08/onlineStore/storage/logs/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter08/onlineStore/storage/logs/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter08/onlineStore/tests/CreatesApplication.php b/Chapter08/onlineStore/tests/CreatesApplication.php deleted file mode 100644 index 547152f..0000000 --- a/Chapter08/onlineStore/tests/CreatesApplication.php +++ /dev/null @@ -1,22 +0,0 @@ -make(Kernel::class)->bootstrap(); - - return $app; - } -} diff --git a/Chapter08/onlineStore/tests/Feature/ExampleTest.php b/Chapter08/onlineStore/tests/Feature/ExampleTest.php deleted file mode 100644 index 78ccc21..0000000 --- a/Chapter08/onlineStore/tests/Feature/ExampleTest.php +++ /dev/null @@ -1,21 +0,0 @@ -get('/'); - - $response->assertStatus(200); - } -} diff --git a/Chapter08/onlineStore/tests/TestCase.php b/Chapter08/onlineStore/tests/TestCase.php deleted file mode 100644 index 2932d4a..0000000 --- a/Chapter08/onlineStore/tests/TestCase.php +++ /dev/null @@ -1,10 +0,0 @@ -assertTrue(true); - } -} diff --git a/Chapter08/onlineStore/webpack.mix.js b/Chapter08/onlineStore/webpack.mix.js deleted file mode 100644 index 2a22dc1..0000000 --- a/Chapter08/onlineStore/webpack.mix.js +++ /dev/null @@ -1,17 +0,0 @@ -const mix = require('laravel-mix'); - -/* - |-------------------------------------------------------------------------- - | Mix Asset Management - |-------------------------------------------------------------------------- - | - | Mix provides a clean, fluent API for defining some Webpack build steps - | for your Laravel applications. By default, we are compiling the CSS - | file for the application as well as bundling up all the JS files. - | - */ - -mix.js('resources/js/app.js', 'public/js') - .postCss('resources/css/app.css', 'public/css', [ - // - ]); diff --git a/Chapter09/onlineStore/.editorconfig b/Chapter09/onlineStore/.editorconfig deleted file mode 100644 index 1671c9b..0000000 --- a/Chapter09/onlineStore/.editorconfig +++ /dev/null @@ -1,18 +0,0 @@ -root = true - -[*] -charset = utf-8 -end_of_line = lf -insert_final_newline = true -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true - -[*.md] -trim_trailing_whitespace = false - -[*.{yml,yaml}] -indent_size = 2 - -[docker-compose.yml] -indent_size = 4 diff --git a/Chapter09/onlineStore/.env.example b/Chapter09/onlineStore/.env.example deleted file mode 100644 index 8510237..0000000 --- a/Chapter09/onlineStore/.env.example +++ /dev/null @@ -1,52 +0,0 @@ -APP_NAME=Laravel -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=laravel -DB_USERNAME=root -DB_PASSWORD= - -BROADCAST_DRIVER=log -CACHE_DRIVER=file -FILESYSTEM_DISK=local -QUEUE_CONNECTION=sync -SESSION_DRIVER=file -SESSION_LIFETIME=120 - -MEMCACHED_HOST=127.0.0.1 - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -MAIL_MAILER=smtp -MAIL_HOST=mailhog -MAIL_PORT=1025 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS=null -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_APP_CLUSTER=mt1 - -MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/Chapter09/onlineStore/.gitattributes b/Chapter09/onlineStore/.gitattributes deleted file mode 100644 index 510d996..0000000 --- a/Chapter09/onlineStore/.gitattributes +++ /dev/null @@ -1,10 +0,0 @@ -* text=auto - -*.blade.php diff=html -*.css diff=css -*.html diff=html -*.md diff=markdown -*.php diff=php - -/.github export-ignore -CHANGELOG.md export-ignore diff --git a/Chapter09/onlineStore/.gitignore b/Chapter09/onlineStore/.gitignore deleted file mode 100644 index eb003b0..0000000 --- a/Chapter09/onlineStore/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -/node_modules -/public/hot -/public/storage -/storage/*.key -/vendor -.env -.env.backup -.phpunit.result.cache -docker-compose.override.yml -Homestead.json -Homestead.yaml -npm-debug.log -yarn-error.log -/.idea -/.vscode diff --git a/Chapter09/onlineStore/.styleci.yml b/Chapter09/onlineStore/.styleci.yml deleted file mode 100644 index 679a631..0000000 --- a/Chapter09/onlineStore/.styleci.yml +++ /dev/null @@ -1,13 +0,0 @@ -php: - preset: laravel - version: 8 - disabled: - - no_unused_imports - finder: - not-name: - - index.php -js: - finder: - not-name: - - webpack.mix.js -css: true diff --git a/Chapter09/onlineStore/README.md b/Chapter09/onlineStore/README.md deleted file mode 100644 index f171eca..0000000 --- a/Chapter09/onlineStore/README.md +++ /dev/null @@ -1,64 +0,0 @@ -

    - -

    -Build Status -Total Downloads -Latest Stable Version -License -

    - -## About Laravel - -Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as: - -- [Simple, fast routing engine](https://laravel.com/docs/routing). -- [Powerful dependency injection container](https://laravel.com/docs/container). -- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage. -- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent). -- Database agnostic [schema migrations](https://laravel.com/docs/migrations). -- [Robust background job processing](https://laravel.com/docs/queues). -- [Real-time event broadcasting](https://laravel.com/docs/broadcasting). - -Laravel is accessible, powerful, and provides tools required for large, robust applications. - -## Learning Laravel - -Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework. - -If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 2000 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library. - -## Laravel Sponsors - -We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell). - -### Premium Partners - -- **[Vehikl](https://vehikl.com/)** -- **[Tighten Co.](https://tighten.co)** -- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** -- **[64 Robots](https://64robots.com)** -- **[Cubet Techno Labs](https://cubettech.com)** -- **[Cyber-Duck](https://cyber-duck.co.uk)** -- **[Many](https://www.many.co.uk)** -- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)** -- **[DevSquad](https://devsquad.com)** -- **[Curotec](https://www.curotec.com/services/technologies/laravel/)** -- **[OP.GG](https://op.gg)** -- **[WebReinvent](https://webreinvent.com/?utm_source=laravel&utm_medium=github&utm_campaign=patreon-sponsors)** -- **[Lendio](https://lendio.com)** - -## Contributing - -Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions). - -## Code of Conduct - -In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). - -## Security Vulnerabilities - -If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed. - -## License - -The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). diff --git a/Chapter09/onlineStore/app/Console/Kernel.php b/Chapter09/onlineStore/app/Console/Kernel.php deleted file mode 100644 index d8bc1d2..0000000 --- a/Chapter09/onlineStore/app/Console/Kernel.php +++ /dev/null @@ -1,32 +0,0 @@ -command('inspire')->hourly(); - } - - /** - * Register the commands for the application. - * - * @return void - */ - protected function commands() - { - $this->load(__DIR__.'/Commands'); - - require base_path('routes/console.php'); - } -} diff --git a/Chapter09/onlineStore/app/Exceptions/Handler.php b/Chapter09/onlineStore/app/Exceptions/Handler.php deleted file mode 100644 index 8e7fbd1..0000000 --- a/Chapter09/onlineStore/app/Exceptions/Handler.php +++ /dev/null @@ -1,41 +0,0 @@ -> - */ - protected $dontReport = [ - // - ]; - - /** - * A list of the inputs that are never flashed for validation exceptions. - * - * @var array - */ - protected $dontFlash = [ - 'current_password', - 'password', - 'password_confirmation', - ]; - - /** - * Register the exception handling callbacks for the application. - * - * @return void - */ - public function register() - { - $this->reportable(function (Throwable $e) { - // - }); - } -} diff --git a/Chapter09/onlineStore/app/Http/Controllers/Controller.php b/Chapter09/onlineStore/app/Http/Controllers/Controller.php deleted file mode 100644 index a0a2a8a..0000000 --- a/Chapter09/onlineStore/app/Http/Controllers/Controller.php +++ /dev/null @@ -1,13 +0,0 @@ -with("viewData", $viewData); - } - - public function about() - { - $viewData = []; - $viewData["title"] = "About us - Online Store"; - $viewData["subtitle"] = "About us"; - $viewData["description"] = "This is an about page ..."; - $viewData["author"] = "Developed by: Your Name"; - return view('home.about')->with("viewData", $viewData); - } -} diff --git a/Chapter09/onlineStore/app/Http/Controllers/ProductController.php b/Chapter09/onlineStore/app/Http/Controllers/ProductController.php deleted file mode 100644 index 552a472..0000000 --- a/Chapter09/onlineStore/app/Http/Controllers/ProductController.php +++ /dev/null @@ -1,34 +0,0 @@ -"1", "name"=>"TV", "description"=>"Best TV", "image" => "game.png", "price"=>"1000"], - ["id"=>"2", "name"=>"iPhone", "description"=>"Best iPhone", "image" => "safe.png", "price"=>"999"], - ["id"=>"3", "name"=>"Chromecast", "description"=>"Best Chromecast", "image" => "submarine.png", "price"=>"30"], - ["id"=>"4", "name"=>"Glasses", "description"=>"Best Glasses", "image" => "game.png", "price"=>"100"] - ]; - - public function index() - { - $viewData = []; - $viewData["title"] = "Products - Online Store"; - $viewData["subtitle"] = "List of products"; - $viewData["products"] = ProductController::$products; - return view('product.index')->with("viewData", $viewData); - } - - public function show($id) - { - $viewData = []; - $product = ProductController::$products[$id-1]; - $viewData["title"] = $product["name"]." - Online Store"; - $viewData["subtitle"] = $product["name"]." - Product information"; - $viewData["product"] = $product; - return view('product.show')->with("viewData", $viewData); - } -} diff --git a/Chapter09/onlineStore/app/Http/Kernel.php b/Chapter09/onlineStore/app/Http/Kernel.php deleted file mode 100644 index d3722c2..0000000 --- a/Chapter09/onlineStore/app/Http/Kernel.php +++ /dev/null @@ -1,67 +0,0 @@ - - */ - protected $middleware = [ - // \App\Http\Middleware\TrustHosts::class, - \App\Http\Middleware\TrustProxies::class, - \Fruitcake\Cors\HandleCors::class, - \App\Http\Middleware\PreventRequestsDuringMaintenance::class, - \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, - \App\Http\Middleware\TrimStrings::class, - \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, - ]; - - /** - * The application's route middleware groups. - * - * @var array> - */ - protected $middlewareGroups = [ - 'web' => [ - \App\Http\Middleware\EncryptCookies::class, - \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, - \Illuminate\Session\Middleware\StartSession::class, - // \Illuminate\Session\Middleware\AuthenticateSession::class, - \Illuminate\View\Middleware\ShareErrorsFromSession::class, - \App\Http\Middleware\VerifyCsrfToken::class, - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - - 'api' => [ - // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, - 'throttle:api', - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - ]; - - /** - * The application's route middleware. - * - * These middleware may be assigned to groups or used individually. - * - * @var array - */ - protected $routeMiddleware = [ - 'auth' => \App\Http\Middleware\Authenticate::class, - 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::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, - 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, - 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, - 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, - ]; -} diff --git a/Chapter09/onlineStore/app/Http/Middleware/Authenticate.php b/Chapter09/onlineStore/app/Http/Middleware/Authenticate.php deleted file mode 100644 index 704089a..0000000 --- a/Chapter09/onlineStore/app/Http/Middleware/Authenticate.php +++ /dev/null @@ -1,21 +0,0 @@ -expectsJson()) { - return route('login'); - } - } -} diff --git a/Chapter09/onlineStore/app/Http/Middleware/EncryptCookies.php b/Chapter09/onlineStore/app/Http/Middleware/EncryptCookies.php deleted file mode 100644 index 867695b..0000000 --- a/Chapter09/onlineStore/app/Http/Middleware/EncryptCookies.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter09/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/Chapter09/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php deleted file mode 100644 index 74cbd9a..0000000 --- a/Chapter09/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter09/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php b/Chapter09/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php deleted file mode 100644 index a2813a0..0000000 --- a/Chapter09/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php +++ /dev/null @@ -1,32 +0,0 @@ -check()) { - return redirect(RouteServiceProvider::HOME); - } - } - - return $next($request); - } -} diff --git a/Chapter09/onlineStore/app/Http/Middleware/TrimStrings.php b/Chapter09/onlineStore/app/Http/Middleware/TrimStrings.php deleted file mode 100644 index 88cadca..0000000 --- a/Chapter09/onlineStore/app/Http/Middleware/TrimStrings.php +++ /dev/null @@ -1,19 +0,0 @@ - - */ - protected $except = [ - 'current_password', - 'password', - 'password_confirmation', - ]; -} diff --git a/Chapter09/onlineStore/app/Http/Middleware/TrustHosts.php b/Chapter09/onlineStore/app/Http/Middleware/TrustHosts.php deleted file mode 100644 index 7186414..0000000 --- a/Chapter09/onlineStore/app/Http/Middleware/TrustHosts.php +++ /dev/null @@ -1,20 +0,0 @@ - - */ - public function hosts() - { - return [ - $this->allSubdomainsOfApplicationUrl(), - ]; - } -} diff --git a/Chapter09/onlineStore/app/Http/Middleware/TrustProxies.php b/Chapter09/onlineStore/app/Http/Middleware/TrustProxies.php deleted file mode 100644 index 3391630..0000000 --- a/Chapter09/onlineStore/app/Http/Middleware/TrustProxies.php +++ /dev/null @@ -1,28 +0,0 @@ -|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/Chapter09/onlineStore/app/Http/Middleware/VerifyCsrfToken.php b/Chapter09/onlineStore/app/Http/Middleware/VerifyCsrfToken.php deleted file mode 100644 index 9e86521..0000000 --- a/Chapter09/onlineStore/app/Http/Middleware/VerifyCsrfToken.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter09/onlineStore/app/Models/User.php b/Chapter09/onlineStore/app/Models/User.php deleted file mode 100644 index 8996368..0000000 --- a/Chapter09/onlineStore/app/Models/User.php +++ /dev/null @@ -1,44 +0,0 @@ - - */ - 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', - ]; -} diff --git a/Chapter09/onlineStore/app/Providers/AppServiceProvider.php b/Chapter09/onlineStore/app/Providers/AppServiceProvider.php deleted file mode 100644 index ee8ca5b..0000000 --- a/Chapter09/onlineStore/app/Providers/AppServiceProvider.php +++ /dev/null @@ -1,28 +0,0 @@ - - */ - protected $policies = [ - // 'App\Models\Model' => 'App\Policies\ModelPolicy', - ]; - - /** - * Register any authentication / authorization services. - * - * @return void - */ - public function boot() - { - $this->registerPolicies(); - - // - } -} diff --git a/Chapter09/onlineStore/app/Providers/BroadcastServiceProvider.php b/Chapter09/onlineStore/app/Providers/BroadcastServiceProvider.php deleted file mode 100644 index 395c518..0000000 --- a/Chapter09/onlineStore/app/Providers/BroadcastServiceProvider.php +++ /dev/null @@ -1,21 +0,0 @@ -> - */ - protected $listen = [ - Registered::class => [ - SendEmailVerificationNotification::class, - ], - ]; - - /** - * Register any events for your application. - * - * @return void - */ - public function boot() - { - // - } -} diff --git a/Chapter09/onlineStore/app/Providers/RouteServiceProvider.php b/Chapter09/onlineStore/app/Providers/RouteServiceProvider.php deleted file mode 100644 index 7c17d1f..0000000 --- a/Chapter09/onlineStore/app/Providers/RouteServiceProvider.php +++ /dev/null @@ -1,63 +0,0 @@ -configureRateLimiting(); - - $this->routes(function () { - Route::prefix('api') - ->middleware('api') - ->namespace($this->namespace) - ->group(base_path('routes/api.php')); - - Route::middleware('web') - ->namespace($this->namespace) - ->group(base_path('routes/web.php')); - }); - } - - /** - * Configure the rate limiters for the application. - * - * @return void - */ - protected function configureRateLimiting() - { - RateLimiter::for('api', function (Request $request) { - return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); - }); - } -} diff --git a/Chapter09/onlineStore/artisan b/Chapter09/onlineStore/artisan deleted file mode 100644 index 67a3329..0000000 --- a/Chapter09/onlineStore/artisan +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env php -make(Illuminate\Contracts\Console\Kernel::class); - -$status = $kernel->handle( - $input = new Symfony\Component\Console\Input\ArgvInput, - new Symfony\Component\Console\Output\ConsoleOutput -); - -/* -|-------------------------------------------------------------------------- -| Shutdown The Application -|-------------------------------------------------------------------------- -| -| Once Artisan has finished running, we will fire off the shutdown events -| so that any final work may be done by the application before we shut -| down the process. This is the last thing to happen to the request. -| -*/ - -$kernel->terminate($input, $status); - -exit($status); diff --git a/Chapter09/onlineStore/bootstrap/app.php b/Chapter09/onlineStore/bootstrap/app.php deleted file mode 100644 index 037e17d..0000000 --- a/Chapter09/onlineStore/bootstrap/app.php +++ /dev/null @@ -1,55 +0,0 @@ -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/Chapter09/onlineStore/bootstrap/cache/.gitignore b/Chapter09/onlineStore/bootstrap/cache/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter09/onlineStore/bootstrap/cache/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter09/onlineStore/composer.json b/Chapter09/onlineStore/composer.json deleted file mode 100644 index f0f2eda..0000000 --- a/Chapter09/onlineStore/composer.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "name": "laravel/laravel", - "type": "project", - "description": "The Laravel Framework.", - "keywords": ["framework", "laravel"], - "license": "MIT", - "require": { - "php": "^8.0", - "fruitcake/laravel-cors": "^2.0.5", - "guzzlehttp/guzzle": "^7.2", - "laravel/framework": "^9.0", - "laravel/sanctum": "^2.14", - "laravel/tinker": "^2.7" - }, - "require-dev": { - "fakerphp/faker": "^1.9.1", - "laravel/sail": "^1.0.1", - "mockery/mockery": "^1.4.4", - "nunomaduro/collision": "^6.1", - "phpunit/phpunit": "^9.5.10", - "spatie/laravel-ignition": "^1.0", - "squizlabs/php_codesniffer": "^3.6" - }, - "autoload": { - "psr-4": { - "App\\": "app/", - "Database\\Factories\\": "database/factories/", - "Database\\Seeders\\": "database/seeders/" - } - }, - "autoload-dev": { - "psr-4": { - "Tests\\": "tests/" - } - }, - "scripts": { - "post-autoload-dump": [ - "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", - "@php artisan package:discover --ansi" - ], - "post-update-cmd": [ - "@php artisan vendor:publish --tag=laravel-assets --ansi --force" - ], - "post-root-package-install": [ - "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" - ], - "post-create-project-cmd": [ - "@php artisan key:generate --ansi" - ] - }, - "extra": { - "laravel": { - "dont-discover": [] - } - }, - "config": { - "optimize-autoloader": true, - "preferred-install": "dist", - "sort-packages": true - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/Chapter09/onlineStore/composer.lock b/Chapter09/onlineStore/composer.lock deleted file mode 100644 index b55e897..0000000 --- a/Chapter09/onlineStore/composer.lock +++ /dev/null @@ -1,7860 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "8bdcc31974d0d5a00db79c82827c8815", - "packages": [ - { - "name": "asm89/stack-cors", - "version": "v2.1.1", - "source": { - "type": "git", - "url": "https://github.com/asm89/stack-cors.git", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4|^5|^6" - }, - "require-dev": { - "phpunit/phpunit": "^7|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "psr-4": { - "Asm89\\Stack\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alexander", - "email": "iam.asm89@gmail.com" - } - ], - "description": "Cross-origin resource sharing library and stack middleware", - "homepage": "https://github.com/asm89/stack-cors", - "keywords": [ - "cors", - "stack" - ], - "support": { - "issues": "https://github.com/asm89/stack-cors/issues", - "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" - }, - "time": "2022-01-18T09:12:03+00:00" - }, - { - "name": "brick/math", - "version": "0.9.3", - "source": { - "type": "git", - "url": "https://github.com/brick/math.git", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", - "vimeo/psalm": "4.9.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Brick\\Math\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Arbitrary-precision arithmetic library", - "keywords": [ - "Arbitrary-precision", - "BigInteger", - "BigRational", - "arithmetic", - "bigdecimal", - "bignum", - "brick", - "math" - ], - "support": { - "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.9.3" - }, - "funding": [ - { - "url": "https://github.com/BenMorel", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/brick/math", - "type": "tidelift" - } - ], - "time": "2021-08-15T20:50:18+00:00" - }, - { - "name": "dflydev/dot-access-data", - "version": "v3.0.1", - "source": { - "type": "git", - "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c", - "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": "^3.14" - }, - "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.1" - }, - "time": "2021-08-13T13:06:58+00:00" - }, - { - "name": "doctrine/inflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "vimeo/psalm": "^4.10" - }, - "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.4" - }, - "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": "2021-10-22T20:16:43+00:00" - }, - { - "name": "doctrine/lexer", - "version": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" - } - }, - "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/1.2.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%2Flexer", - "type": "tidelift" - } - ], - "time": "2022-01-12T08:27:12+00:00" - }, - { - "name": "dragonmantank/cron-expression", - "version": "v3.3.1", - "source": { - "type": "git", - "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "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.1" - }, - "funding": [ - { - "url": "https://github.com/dragonmantank", - "type": "github" - } - ], - "time": "2022-01-18T15:43:28+00:00" - }, - { - "name": "egulias/email-validator", - "version": "3.1.2", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ee0db30118f661fb166bcffbf5d82032df484697", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^1.2", - "php": ">=7.2", - "symfony/polyfill-intl-idn": "^1.15" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^8.5.8|^9.3.3", - "vimeo/psalm": "^4" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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/3.1.2" - }, - "funding": [ - { - "url": "https://github.com/egulias", - "type": "github" - } - ], - "time": "2021-10-11T09:18:27+00:00" - }, - { - "name": "fruitcake/laravel-cors", - "version": "v2.0.5", - "source": { - "type": "git", - "url": "https://github.com/fruitcake/laravel-cors.git", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "shasum": "" - }, - "require": { - "asm89/stack-cors": "^2.0.1", - "illuminate/contracts": "^6|^7|^8|^9", - "illuminate/support": "^6|^7|^8|^9", - "php": ">=7.2", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4.3.4|^5|^6" - }, - "require-dev": { - "laravel/framework": "^6|^7.24|^8", - "orchestra/testbench-dusk": "^4|^5|^6|^7", - "phpunit/phpunit": "^6|^7|^8|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - }, - "laravel": { - "providers": [ - "Fruitcake\\Cors\\CorsServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Fruitcake\\Cors\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fruitcake", - "homepage": "https://fruitcake.nl" - }, - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", - "keywords": [ - "api", - "cors", - "crossdomain", - "laravel" - ], - "support": { - "issues": "https://github.com/fruitcake/laravel-cors/issues", - "source": "https://github.com/fruitcake/laravel-cors/tree/v2.0.5" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "time": "2022-01-03T14:53:04+00:00" - }, - { - "name": "graham-campbell/result-type", - "version": "v1.0.4", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "0690bde05318336c7221785f2a932467f98b64ca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/0690bde05318336c7221785f2a932467f98b64ca", - "reference": "0690bde05318336c7221785f2a932467f98b64ca", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "phpoption/phpoption": "^1.8" - }, - "require-dev": { - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", - "type": "tidelift" - } - ], - "time": "2021-11-21T21:41:47+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "7.4.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.8.3 || ^2.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.4.1", - "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.5 || ^9.3.5", - "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": { - "branch-alias": { - "dev-master": "7.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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.4.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": "2021-12-06T18:43:05+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "1.5.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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/1.5.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "time": "2021-10-22T20:56:57+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.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.4.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.8 || ^9.3.10" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "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.1.0" - }, - "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": "2021-10-06T17:43:30+00:00" - }, - { - "name": "laravel/framework", - "version": "v9.0.1", - "source": { - "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "shasum": "" - }, - "require": { - "doctrine/inflector": "^2.0", - "dragonmantank/cron-expression": "^3.1", - "egulias/email-validator": "^3.1", - "ext-mbstring": "*", - "ext-openssl": "*", - "laravel/serializable-closure": "^1.0", - "league/commonmark": "^2.2", - "league/flysystem": "^3.0", - "monolog/monolog": "^2.0", - "nesbot/carbon": "^2.53.1", - "php": "^8.0.2", - "psr/container": "^1.1.1|^2.0.1", - "psr/log": "^1.0|^2.0|^3.0", - "psr/simple-cache": "^1.0|^2.0|^3.0", - "ramsey/uuid": "^4.2.2", - "symfony/console": "^6.0", - "symfony/error-handler": "^6.0", - "symfony/finder": "^6.0", - "symfony/http-foundation": "^6.0", - "symfony/http-kernel": "^6.0", - "symfony/mailer": "^6.0", - "symfony/mime": "^6.0", - "symfony/process": "^6.0", - "symfony/routing": "^6.0", - "symfony/var-dumper": "^6.0", - "tijsverkoyen/css-to-inline-styles": "^2.2.2", - "vlucas/phpdotenv": "^5.4.1", - "voku/portable-ascii": "^2.0" - }, - "conflict": { - "tightenco/collect": "<5.5.33" - }, - "provide": { - "psr/container-implementation": "1.1|2.0", - "psr/simple-cache-implementation": "1.0|2.0|3.0" - }, - "replace": { - "illuminate/auth": "self.version", - "illuminate/broadcasting": "self.version", - "illuminate/bus": "self.version", - "illuminate/cache": "self.version", - "illuminate/collections": "self.version", - "illuminate/conditionable": "self.version", - "illuminate/config": "self.version", - "illuminate/console": "self.version", - "illuminate/container": "self.version", - "illuminate/contracts": "self.version", - "illuminate/cookie": "self.version", - "illuminate/database": "self.version", - "illuminate/encryption": "self.version", - "illuminate/events": "self.version", - "illuminate/filesystem": "self.version", - "illuminate/hashing": "self.version", - "illuminate/http": "self.version", - "illuminate/log": "self.version", - "illuminate/macroable": "self.version", - "illuminate/mail": "self.version", - "illuminate/notifications": "self.version", - "illuminate/pagination": "self.version", - "illuminate/pipeline": "self.version", - "illuminate/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": { - "aws/aws-sdk-php": "^3.198.1", - "doctrine/dbal": "^2.13.3|^3.1.4", - "fakerphp/faker": "^1.9.2", - "guzzlehttp/guzzle": "^7.2", - "league/flysystem-aws-s3-v3": "^3.0", - "league/flysystem-ftp": "^3.0", - "league/flysystem-sftp-v3": "^3.0", - "mockery/mockery": "^1.4.4", - "orchestra/testbench-core": "^7.0", - "pda/pheanstalk": "^4.0", - "phpstan/phpstan": "^1.0", - "phpunit/phpunit": "^9.5.8", - "predis/predis": "^1.1.9", - "symfony/amazon-mailer": "^6.0", - "symfony/cache": "^6.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.198.1).", - "brianium/paratest": "Required to run tests in parallel (^6.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", - "ext-bcmath": "Required to use the multiple_of validation rule.", - "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.", - "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.2).", - "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-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", - "mockery/mockery": "Required to use mocking (^1.4.4).", - "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).", - "predis/predis": "Required to use the predis connector (^1.1.9).", - "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.0).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^6.0).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.0).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.0).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.0).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.x-dev" - } - }, - "autoload": { - "files": [ - "src/Illuminate/Collections/helpers.php", - "src/Illuminate/Events/functions.php", - "src/Illuminate/Foundation/helpers.php", - "src/Illuminate/Support/helpers.php" - ], - "psr-4": { - "Illuminate\\": "src/Illuminate/", - "Illuminate\\Support\\": [ - "src/Illuminate/Macroable/", - "src/Illuminate/Collections/", - "src/Illuminate/Conditionable/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Laravel Framework.", - "homepage": "https://laravel.com", - "keywords": [ - "framework", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2022-02-09T15:00:05+00:00" - }, - { - "name": "laravel/sanctum", - "version": "v2.14.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/sanctum.git", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/0647a87140c7522e75826cffcadb3ad6e01f71e9", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/contracts": "^6.9|^7.0|^8.0|^9.0", - "illuminate/database": "^6.9|^7.0|^8.0|^9.0", - "illuminate/support": "^6.9|^7.0|^8.0|^9.0", - "php": "^7.2|^8.0" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0", - "phpunit/phpunit": "^8.0|^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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": "2022-01-12T15:07:43+00:00" - }, - { - "name": "laravel/serializable-closure", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/serializable-closure.git", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/65c9faf50d567b65d81764a44526545689e3fe63", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "pestphp/pest": "^1.18", - "phpstan/phpstan": "^0.12.98", - "symfony/var-dumper": "^5.3" - }, - "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": "2022-02-01T16:29:39+00:00" - }, - { - "name": "laravel/tinker", - "version": "v2.7.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/tinker.git", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/5f2f9815b7631b9f586a3de7933c25f9327d4073", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073", - "shasum": "" - }, - "require": { - "illuminate/console": "^6.0|^7.0|^8.0|^9.0", - "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.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", - "phpunit/phpunit": "^8.5.8|^9.3.3" - }, - "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.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.7.0" - }, - "time": "2022-01-10T08:52:49+00:00" - }, - { - "name": "league/commonmark", - "version": "2.2.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/commonmark.git", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "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.15" - }, - "require-dev": { - "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.0", - "commonmark/commonmark.js": "0.30.0", - "composer/package-versions-deprecated": "^1.8", - "erusev/parsedown": "^1.0", - "ext-json": "*", - "github/gfm": "0.29.0", - "michelf/php-markdown": "^1.4", - "phpstan/phpstan": "^0.12.88 || ^1.0.0", - "phpunit/phpunit": "^9.5.5", - "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", - "unleashedtech/php-coding-standard": "^3.1", - "vimeo/psalm": "^4.7.3" - }, - "suggest": { - "symfony/yaml": "v2.3+ required if using the Front Matter extension" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.3-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": "2022-01-25T14:37:33+00:00" - }, - { - "name": "league/config", - "version": "v1.1.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/config.git", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/config/zipball/a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^3.0.1", - "nette/schema": "^1.2", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.90", - "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": "2021-08-14T12:15:32+00:00" - }, - { - "name": "league/flysystem", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9f8b4260031bfef5497477da53dd57b2aaff0e06", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06", - "shasum": "" - }, - "require": { - "ext-json": "*", - "league/mime-type-detection": "^1.0.0", - "php": "^8.0.2" - }, - "conflict": { - "guzzlehttp/guzzle": "<7.0", - "guzzlehttp/ringphp": "<1.1.1", - "symfony/http-client": "<5.2" - }, - "require-dev": { - "async-aws/s3": "^1.5", - "async-aws/simple-s3": "^1.0", - "aws/aws-sdk-php": "^3.198.1", - "composer/semver": "^3.0", - "ext-fileinfo": "*", - "ext-ftp": "*", - "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.5", - "google/cloud-storage": "^1.23", - "phpseclib/phpseclib": "^2.0", - "phpstan/phpstan": "^0.12.26", - "phpunit/phpunit": "^9.5.11", - "sabre/dav": "^4.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.0.3" - }, - "funding": [ - { - "url": "https://offset.earth/frankdejonge", - "type": "custom" - }, - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2022-01-31T19:41:04+00:00" - }, - { - "name": "league/mime-type-detection", - "version": "1.9.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/aa70e813a6ad3d1558fc927863d47309b4c23e69", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.2", - "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" - }, - "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.9.0" - }, - "funding": [ - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2021-11-21T11:48:40+00:00" - }, - { - "name": "monolog/monolog", - "version": "2.3.5", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd4380d6fc37626e2f799f29d91195040137eba9", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "provide": { - "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7", - "graylog2/gelf-php": "^1.4.2", - "mongodb/mongodb": "^1.8", - "php-amqplib/php-amqplib": "~2.4 || ^3", - "php-console/php-console": "^3.1.3", - "phpspec/prophecy": "^1.6.1", - "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5", - "predis/predis": "^1.1", - "rollbar/rollbar": "^1.3", - "ruflin/elastica": ">=0.90@dev", - "swiftmailer/swiftmailer": "^5.3|^6.0" - }, - "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", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "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": "2.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/2.3.5" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" - } - ], - "time": "2021-10-01T21:08:31+00:00" - }, - { - "name": "nesbot/carbon", - "version": "2.56.0", - "source": { - "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1.8 || ^8.0", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "doctrine/dbal": "^2.0 || ^3.0", - "doctrine/orm": "^2.7", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "phpmd/phpmd": "^2.9", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.54 || ^1.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.14", - "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://opencollective.com/Carbon", - "type": "open_collective" - }, - { - "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", - "type": "tidelift" - } - ], - "time": "2022-01-21T17:08:38+00:00" - }, - { - "name": "nette/schema", - "version": "v1.2.2", - "source": { - "type": "git", - "url": "https://github.com/nette/schema.git", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/9a39cef03a5b34c7de64f551538cbba05c2be5df", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df", - "shasum": "" - }, - "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": ">=7.1 <8.2" - }, - "require-dev": { - "nette/tester": "^2.3 || ^2.4", - "phpstan/phpstan-nette": "^0.12", - "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.2" - }, - "time": "2021-10-15T11:40:02+00:00" - }, - { - "name": "nette/utils", - "version": "v3.2.7", - "source": { - "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/0af4e3de4df9f1543534beab255ccf459e7a2c99", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99", - "shasum": "" - }, - "require": { - "php": ">=7.2 <8.2" - }, - "conflict": { - "nette/di": "<3.0.6" - }, - "require-dev": { - "nette/tester": "~2.0", - "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.3" - }, - "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()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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 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/v3.2.7" - }, - "time": "2022-01-24T11:29:14+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.13.2", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", - "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.13.2" - }, - "time": "2021-11-30T19:35:32+00:00" - }, - { - "name": "phpoption/phpoption", - "version": "1.8.1", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-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.8.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", - "type": "tidelift" - } - ], - "time": "2021-12-04T23:24:31+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.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.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": "http://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/tree/master" - }, - "time": "2020-06-29T06:28:15+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.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": "http://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/master" - }, - "time": "2019-04-30T12:38:16+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.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": "http://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/master" - }, - "time": "2016-08-06T14:39: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.1", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "570292577277f06f590635381a7f761a6cf4f026" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/570292577277f06f590635381a7f761a6cf4f026", - "reference": "570292577277f06f590635381a7f761a6cf4f026", - "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" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "3.17.05.02" - }, - "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.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." - }, - "bin": [ - "bin/psysh" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "0.11.x-dev" - } - }, - "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.1" - }, - "time": "2022-01-03T13:58:38+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": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/ramsey/collection.git", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "shasum": "" - }, - "require": { - "php": "^7.3 || ^8", - "symfony/polyfill-php81": "^1.23" - }, - "require-dev": { - "captainhook/captainhook": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "ergebnis/composer-normalize": "^2.6", - "fakerphp/faker": "^1.5", - "hamcrest/hamcrest-php": "^2", - "jangregor/phpstan-prophecy": "^0.8", - "mockery/mockery": "^1.3", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1", - "phpstan/phpstan": "^0.12.32", - "phpstan/phpstan-mockery": "^0.12.5", - "phpstan/phpstan-phpunit": "^0.12.11", - "phpunit/phpunit": "^8.5 || ^9", - "psy/psysh": "^0.10.4", - "slevomat/coding-standard": "^6.3", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.4" - }, - "type": "library", - "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/1.2.2" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "time": "2021-10-10T03:01:02+00:00" - }, - { - "name": "ramsey/uuid", - "version": "4.2.3", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "shasum": "" - }, - "require": { - "brick/math": "^0.8 || ^0.9", - "ext-json": "*", - "php": "^7.2 || ^8.0", - "ramsey/collection": "^1.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php80": "^1.14" - }, - "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", - "moontoast/math": "^1.1", - "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.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-mockery": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^8.5 || ^9", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" - }, - "suggest": { - "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-ctype": "Enables faster processing of character classification using ctype functions.", - "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": { - "branch-alias": { - "dev-main": "4.x-dev" - }, - "captainhook": { - "force-install": true - } - }, - "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "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.2.3" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2021-09-25T23:10:38+00:00" - }, - { - "name": "symfony/console", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/22e8efd019c3270c4f79376234a3f8752cd25490", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.4|^6.0" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/css-selector", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/1955d595c12c111629cc814d3f2a2ff13580508a", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a", - "shasum": "" - }, - "require": { - "php": ">=8.0.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/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-11-01T23:48:49+00:00" - }, - { - "name": "symfony/error-handler", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/20343b3bad7ebafa38138ddcb97290a24722b57b", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" - }, - "bin": [ - "Resources/bin/patch-type-declarations" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to manage errors and ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6472ea2dd415e925b90ca82be64b8bc6157f3934", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/event-dispatcher-contracts": "^2|^3" - }, - "conflict": { - "symfony/dependency-injection": "<5.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^5.4|^6.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/aa5422287b75594b90ee9cd807caf8f0df491385", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/event-dispatcher": "^1" - }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-07-15T12:33:35+00:00" - }, - { - "name": "symfony/finder", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/8661b74dbabc23223f38c9b99d3f8ade71170430", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ad157299ced81a637fade1efcadd688d6deba5c1", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1" - }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/cache": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0" - }, - "suggest": { - "symfony/mime": "To use the file extension guesser" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v6.0.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/error-handler": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", - "symfony/twig-bridge": "<5.4", - "symfony/validator": "<5.4", - "twig/twig": "<2.13" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/process": "^5.4|^6.0", - "symfony/routing": "^5.4|^6.0", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-29T18:12:46+00:00" - }, - { - "name": "symfony/mailer", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mailer.git", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "shasum": "" - }, - "require": { - "egulias/email-validator": "^2.1.10|^3", - "php": ">=8.0.2", - "psr/event-dispatcher": "^1", - "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3" - }, - "conflict": { - "symfony/http-kernel": "<5.4" - }, - "require-dev": { - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/messenger": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/mime", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/2cd9601efd040e56f43360daa68f3c6b0534923a", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "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" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "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.24.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": "2021-10-20T20:35:02+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-11-23T21:10:46+00:00" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44", - "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.23-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.24.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": "2021-09-14T14:02:44+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.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": "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.24.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": "2021-11-30T18:21:41+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-05-27T09:17:38+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:33+00:00" - }, - { - "name": "symfony/polyfill-php81", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:11+00:00" - }, - { - "name": "symfony/process", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/298ed357274c1868c20a0061df256a1250a6c4af", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/routing", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/yaml": "<5.4" - }, - "require-dev": { - "doctrine/annotations": "^1.12", - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/36715ebf9fb9db73db0cb24263c79077c6fe8603", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/container": "^2.0" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "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.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": "2021-11-04T17:53:12+00:00" - }, - { - "name": "symfony/string", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/522144f0c4c004c80d56fa47e40e17028e2eefc2", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.0" - }, - "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/translation-contracts": "^2.0|^3.0", - "symfony/var-exporter": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "files": [ - "Resources/functions.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 an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/translation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/71bb15335798f8c4da110911bcf2d2fead7a430d", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.3|^3.0" - }, - "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" - }, - "provide": { - "symfony/translation-implementation": "2.3|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-07T00:29:03+00:00" - }, - { - "name": "symfony/translation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "suggest": { - "symfony/translation-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - } - }, - "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.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": "2021-09-07T12:43:40+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7b701676fc64f9ef11f9b4870f16b48f66be4834", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<5.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-17T16:30:44+00:00" - }, - { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.4", - "source": { - "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" - } - ], - "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", - "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "support": { - "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" - }, - "time": "2021-12-08T09:12:39+00:00" - }, - { - "name": "vlucas/phpdotenv", - "version": "v5.4.1", - "source": { - "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", - "shasum": "" - }, - "require": { - "ext-pcre": "*", - "graham-campbell/result-type": "^1.0.2", - "php": "^7.1.3 || ^8.0", - "phpoption/phpoption": "^1.8", - "symfony/polyfill-ctype": "^1.23", - "symfony/polyfill-mbstring": "^1.23.1", - "symfony/polyfill-php80": "^1.23.1" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" - }, - "suggest": { - "ext-filter": "Required to use the boolean validator." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.4-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.4.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", - "type": "tidelift" - } - ], - "time": "2021-12-12T23:22:04+00:00" - }, - { - "name": "voku/portable-ascii", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/voku/portable-ascii.git", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/9bd89e83cecdf8c37b64909454249eaed98b2c89", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89", - "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.0" - }, - "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-01-24T18:59:03+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "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.10.0" - }, - "time": "2021-03-09T10:59:23+00:00" - } - ], - "packages-dev": [ - { - "name": "doctrine/instantiator", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.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%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2020-11-10T18:47:58+00:00" - }, - { - "name": "facade/ignition-contracts", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/facade/ignition-contracts.git", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^v2.15.8", - "phpunit/phpunit": "^9.3.11", - "vimeo/psalm": "^3.17.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Facade\\IgnitionContracts\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://flareapp.io", - "role": "Developer" - } - ], - "description": "Solution contracts for Ignition", - "homepage": "https://github.com/facade/ignition-contracts", - "keywords": [ - "contracts", - "flare", - "ignition" - ], - "support": { - "issues": "https://github.com/facade/ignition-contracts/issues", - "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" - }, - "time": "2020-10-16T08:27:54+00:00" - }, - { - "name": "fakerphp/faker", - "version": "v1.19.0", - "source": { - "type": "git", - "url": "https://github.com/FakerPHP/Faker.git", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^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": "*", - "symfony/phpunit-bridge": "^4.4 || ^5.2" - }, - "suggest": { - "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", - "ext-curl": "Required by Faker\\Provider\\Image to download images.", - "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", - "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.19-dev" - } - }, - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "François Zaninotto" - } - ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], - "support": { - "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0" - }, - "time": "2022-02-02T17:38:57+00:00" - }, - { - "name": "filp/whoops", - "version": "2.14.5", - "source": { - "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "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.14.5" - }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "time": "2022-01-07T12:00:00+00:00" - }, - { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "shasum": "" - }, - "require": { - "php": "^5.3|^7.0|^8.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" - }, - "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "classmap": [ - "hamcrest" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "This is the PHP port of Hamcrest Matchers", - "keywords": [ - "test" - ], - "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" - }, - "time": "2020-07-09T08:09:16+00:00" - }, - { - "name": "laravel/sail", - "version": "v1.13.2", - "source": { - "type": "git", - "url": "https://github.com/laravel/sail.git", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.0|^9.0", - "illuminate/contracts": "^8.0|^9.0", - "illuminate/support": "^8.0|^9.0", - "php": "^7.3|^8.0" - }, - "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": "2022-02-08T14:14:12+00:00" - }, - { - "name": "mockery/mockery", - "version": "1.5.0", - "source": { - "type": "git", - "url": "https://github.com/mockery/mockery.git", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "shasum": "" - }, - "require": { - "hamcrest/hamcrest-php": "^2.0.1", - "lib-pcre": ">=7.0", - "php": "^7.3 || ^8.0" - }, - "conflict": { - "phpunit/phpunit": "<8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-0": { - "Mockery": "library/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" - } - ], - "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": { - "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.5.0" - }, - "time": "2022-01-20T13:18:17+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.10.2", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "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.10.2" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2020-11-13T09:40:50+00:00" - }, - { - "name": "nunomaduro/collision", - "version": "v6.1.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/collision.git", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "shasum": "" - }, - "require": { - "facade/ignition-contracts": "^1.0.2", - "filp/whoops": "^2.14.5", - "php": "^8.0.0", - "symfony/console": "^6.0.2" - }, - "require-dev": { - "brianium/paratest": "^6.4.1", - "laravel/framework": "^9.0", - "nunomaduro/larastan": "^1.0.2", - "nunomaduro/mock-final-classes": "^1.1.0", - "orchestra/testbench": "^7.0.0", - "phpunit/phpunit": "^9.5.11" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "6.x-dev" - }, - "laravel": { - "providers": [ - "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" - ] - } - }, - "autoload": { - "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": "2022-01-18T17:49:08+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.1.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/15a90844ad40f127afd244c0cad228de2a80052a", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a", - "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.1.1" - }, - "time": "2022-02-07T21:56:48+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.6.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "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.6.0" - }, - "time": "2022-01-04T19:58:01+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" - }, - "time": "2021-12-08T12:19:24+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "9.2.10", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d5850aaf931743067f4bfc1ae4cbd06468400687", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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 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", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.10" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-05T09:12:13+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "3.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-02T12:48:52+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "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/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:58:55+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T05:33:50+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.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/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:16:10+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "9.5.13", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/597cb647654ede35e43b137926dfdfef0fb11743", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.3.1", - "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": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.7", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", - "sebastian/version": "^3.0.2" - }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.13" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-01-24T07:33:35+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:08:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "1.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:08:54+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:30:19+00:00" - }, - { - "name": "sebastian/comparator", - "version": "4.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:49:45+00:00" - }, - { - "name": "sebastian/complexity", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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 calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:52:27+00:00" - }, - { - "name": "sebastian/diff", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:10:38+00:00" - }, - { - "name": "sebastian/environment", - "version": "5.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-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": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:52:38+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "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", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-11-11T14:18:36+00:00" - }, - { - "name": "sebastian/global-state", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-11T13:31:12+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-28T06:42:11+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "http://www.github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:17:30+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:45:17+00:00" - }, - { - "name": "sebastian/type", - "version": "2.3.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-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/2.3.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-15T12:49:02+00:00" - }, - { - "name": "sebastian/version", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:39:44+00:00" - }, - { - "name": "spatie/backtrace", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/backtrace.git", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "ext-json": "*", - "phpunit/phpunit": "^9.3", - "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": { - "issues": "https://github.com/spatie/backtrace/issues", - "source": "https://github.com/spatie/backtrace/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/sponsors/spatie", - "type": "github" - }, - { - "url": "https://spatie.be/open-source/support-us", - "type": "other" - } - ], - "time": "2021-11-09T10:57:15+00:00" - }, - { - "name": "spatie/flare-client-php", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/flare-client-php.git", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "shasum": "" - }, - "require": { - "illuminate/pipeline": "^8.0|^9.0", - "php": "^8.0", - "spatie/backtrace": "^1.2", - "symfony/http-foundation": "^5.0|^6.0", - "symfony/mime": "^5.2|^6.0", - "symfony/process": "^5.2|^6.0", - "symfony/var-dumper": "^5.2|^6.0" - }, - "require-dev": { - "dms/phpunit-arraysubset-asserts": "^0.3.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/phpunit-snapshot-assertions": "^4.0" - }, - "type": "library", - "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.0.1" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2022-02-04T15:21:00+00:00" - }, - { - "name": "spatie/ignition", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/spatie/ignition.git", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/d2d5ba823af3004268556e87dfc94449e4159f5a", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "monolog/monolog": "^2.0", - "php": "^8.0", - "spatie/flare-client-php": "^1.0", - "symfony/console": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "mockery/mockery": "^1.4", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/ray": "^1.32", - "symfony/process": "^5.4|^6.0" - }, - "type": "library", - "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": "2022-01-19T12:57:41+00:00" - }, - { - "name": "spatie/laravel-ignition", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/68250225a9f83b086462c2af1b1139dfde48fbd2", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*", - "illuminate/support": "^8.77|^9.0", - "monolog/monolog": "^2.3", - "php": "^8.0", - "spatie/flare-client-php": "^1.0.1", - "spatie/ignition": "^1.0", - "symfony/console": "^5.0|^6.0", - "symfony/var-dumper": "^5.0|^6.0" - }, - "require-dev": { - "filp/whoops": "^2.14", - "livewire/livewire": "^2.8|dev-develop", - "mockery/mockery": "^1.4", - "nunomaduro/larastan": "^1.0", - "orchestra/testbench": "^6.23|^7.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/laravel-ray": "^1.27" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Spatie\\LaravelIgnition\\IgnitionServiceProvider" - ], - "aliases": { - "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" - } - } - }, - "autoload": { - "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": "2022-02-04T15:25:56+00:00" - }, - { - "name": "squizlabs/php_codesniffer", - "version": "3.6.2", - "source": { - "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", - "shasum": "" - }, - "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.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": "lead" - } - ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", - "keywords": [ - "phpcs", - "standards" - ], - "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" - }, - "time": "2021-12-12T21:44:58+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2021-07-28T10:34:58+00:00" - } - ], - "aliases": [], - "minimum-stability": "dev", - "stability-flags": [], - "prefer-stable": true, - "prefer-lowest": false, - "platform": { - "php": "^8.0" - }, - "platform-dev": [], - "plugin-api-version": "2.1.0" -} diff --git a/Chapter09/onlineStore/config/app.php b/Chapter09/onlineStore/config/app.php deleted file mode 100644 index 1941d7c..0000000 --- a/Chapter09/onlineStore/config/app.php +++ /dev/null @@ -1,197 +0,0 @@ - env('APP_NAME', 'Laravel'), - - /* - |-------------------------------------------------------------------------- - | Application Environment - |-------------------------------------------------------------------------- - | - | This value determines the "environment" your application is currently - | running in. This may determine how you prefer to configure various - | services the application utilizes. Set this in your ".env" file. - | - */ - - 'env' => env('APP_ENV', 'production'), - - /* - |-------------------------------------------------------------------------- - | Application Debug Mode - |-------------------------------------------------------------------------- - | - | When your application is in debug mode, detailed error messages with - | stack traces will be shown on every error that occurs within your - | application. If disabled, a simple generic error page is shown. - | - */ - - 'debug' => (bool) env('APP_DEBUG', false), - - /* - |-------------------------------------------------------------------------- - | Application URL - |-------------------------------------------------------------------------- - | - | This URL is used by the console to properly generate URLs when using - | the Artisan command line tool. You should set this to the root of - | your application so that it is used when running Artisan tasks. - | - */ - - 'url' => env('APP_URL', 'http://localhost'), - - 'asset_url' => env('ASSET_URL', null), - - /* - |-------------------------------------------------------------------------- - | 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', - - /* - |-------------------------------------------------------------------------- - | 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' => [ - - /* - * Laravel Framework Service Providers... - */ - Illuminate\Auth\AuthServiceProvider::class, - Illuminate\Broadcasting\BroadcastServiceProvider::class, - Illuminate\Bus\BusServiceProvider::class, - Illuminate\Cache\CacheServiceProvider::class, - Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, - Illuminate\Cookie\CookieServiceProvider::class, - Illuminate\Database\DatabaseServiceProvider::class, - Illuminate\Encryption\EncryptionServiceProvider::class, - Illuminate\Filesystem\FilesystemServiceProvider::class, - Illuminate\Foundation\Providers\FoundationServiceProvider::class, - Illuminate\Hashing\HashServiceProvider::class, - Illuminate\Mail\MailServiceProvider::class, - Illuminate\Notifications\NotificationServiceProvider::class, - Illuminate\Pagination\PaginationServiceProvider::class, - Illuminate\Pipeline\PipelineServiceProvider::class, - Illuminate\Queue\QueueServiceProvider::class, - Illuminate\Redis\RedisServiceProvider::class, - Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, - Illuminate\Session\SessionServiceProvider::class, - Illuminate\Translation\TranslationServiceProvider::class, - Illuminate\Validation\ValidationServiceProvider::class, - Illuminate\View\ViewServiceProvider::class, - - /* - * 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, - - ], - - /* - |-------------------------------------------------------------------------- - | 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([ - // ... - ])->toArray(), - -]; diff --git a/Chapter09/onlineStore/config/auth.php b/Chapter09/onlineStore/config/auth.php deleted file mode 100644 index d8c6cee..0000000 --- a/Chapter09/onlineStore/config/auth.php +++ /dev/null @@ -1,111 +0,0 @@ - [ - '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 expire 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. - | - */ - - 'passwords' => [ - 'users' => [ - 'provider' => 'users', - 'table' => 'password_resets', - '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/Chapter09/onlineStore/config/broadcasting.php b/Chapter09/onlineStore/config/broadcasting.php deleted file mode 100644 index 67fcbbd..0000000 --- a/Chapter09/onlineStore/config/broadcasting.php +++ /dev/null @@ -1,67 +0,0 @@ - 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'), - 'useTLS' => true, - ], - '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/Chapter09/onlineStore/config/cache.php b/Chapter09/onlineStore/config/cache.php deleted file mode 100644 index 8736c7a..0000000 --- a/Chapter09/onlineStore/config/cache.php +++ /dev/null @@ -1,110 +0,0 @@ - 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'), - ], - - '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 a RAM based store such as APC or Memcached, there might - | be other applications utilizing the same cache. So, we'll specify a - | value to get prefixed to all our keys so we can avoid collisions. - | - */ - - 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'), - -]; diff --git a/Chapter09/onlineStore/config/cors.php b/Chapter09/onlineStore/config/cors.php deleted file mode 100644 index 8a39e6d..0000000 --- a/Chapter09/onlineStore/config/cors.php +++ /dev/null @@ -1,34 +0,0 @@ - ['api/*', 'sanctum/csrf-cookie'], - - 'allowed_methods' => ['*'], - - 'allowed_origins' => ['*'], - - 'allowed_origins_patterns' => [], - - 'allowed_headers' => ['*'], - - 'exposed_headers' => [], - - 'max_age' => 0, - - 'supports_credentials' => false, - -]; diff --git a/Chapter09/onlineStore/config/database.php b/Chapter09/onlineStore/config/database.php deleted file mode 100644 index 0faebae..0000000 --- a/Chapter09/onlineStore/config/database.php +++ /dev/null @@ -1,147 +0,0 @@ - env('DB_CONNECTION', 'mysql'), - - /* - |-------------------------------------------------------------------------- - | Database Connections - |-------------------------------------------------------------------------- - | - | Here are each of the database connections setup for your application. - | Of course, examples of configuring each database platform that is - | supported by Laravel is shown below to make development simple. - | - | - | All database work in Laravel is done through the PHP PDO facilities - | so make sure you have the driver for your particular database of - | choice installed on your machine before you begin development. - | - */ - - 'connections' => [ - - 'sqlite' => [ - 'driver' => 'sqlite', - 'url' => env('DATABASE_URL'), - 'database' => env('DB_DATABASE', database_path('database.sqlite')), - 'prefix' => '', - 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), - ], - - 'mysql' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '3306'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'unix_socket' => env('DB_SOCKET', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - 'pgsql' => [ - 'driver' => 'pgsql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '5432'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - 'search_path' => 'public', - 'sslmode' => 'prefer', - ], - - 'sqlsrv' => [ - 'driver' => 'sqlsrv', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', 'localhost'), - 'port' => env('DB_PORT', '1433'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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'), - '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'), - 'password' => env('REDIS_PASSWORD'), - 'port' => env('REDIS_PORT', '6379'), - 'database' => env('REDIS_CACHE_DB', '1'), - ], - - ], - -]; diff --git a/Chapter09/onlineStore/config/filesystems.php b/Chapter09/onlineStore/config/filesystems.php deleted file mode 100644 index cf5abce..0000000 --- a/Chapter09/onlineStore/config/filesystems.php +++ /dev/null @@ -1,73 +0,0 @@ - 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 setup for each driver as an example of the required options. - | - | Supported Drivers: "local", "ftp", "sftp", "s3" - | - */ - - 'disks' => [ - - 'local' => [ - 'driver' => 'local', - 'root' => storage_path('app'), - ], - - 'public' => [ - 'driver' => 'local', - 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', - 'visibility' => 'public', - ], - - '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), - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter09/onlineStore/config/hashing.php b/Chapter09/onlineStore/config/hashing.php deleted file mode 100644 index bcd3be4..0000000 --- a/Chapter09/onlineStore/config/hashing.php +++ /dev/null @@ -1,52 +0,0 @@ - '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/Chapter09/onlineStore/config/logging.php b/Chapter09/onlineStore/config/logging.php deleted file mode 100644 index fefe088..0000000 --- a/Chapter09/onlineStore/config/logging.php +++ /dev/null @@ -1,119 +0,0 @@ - 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' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), - - /* - |-------------------------------------------------------------------------- - | 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'), - ], - - 'daily' => [ - 'driver' => 'daily', - 'path' => storage_path('logs/laravel.log'), - 'level' => env('LOG_LEVEL', 'debug'), - 'days' => 14, - ], - - 'slack' => [ - 'driver' => 'slack', - 'url' => env('LOG_SLACK_WEBHOOK_URL'), - 'username' => 'Laravel Log', - 'emoji' => ':boom:', - 'level' => env('LOG_LEVEL', 'critical'), - ], - - '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'), - ], - ], - - 'stderr' => [ - 'driver' => 'monolog', - 'level' => env('LOG_LEVEL', 'debug'), - 'handler' => StreamHandler::class, - 'formatter' => env('LOG_STDERR_FORMATTER'), - 'with' => [ - 'stream' => 'php://stderr', - ], - ], - - 'syslog' => [ - 'driver' => 'syslog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'errorlog' => [ - 'driver' => 'errorlog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'null' => [ - 'driver' => 'monolog', - 'handler' => NullHandler::class, - ], - - 'emergency' => [ - 'path' => storage_path('logs/laravel.log'), - ], - ], - -]; diff --git a/Chapter09/onlineStore/config/mail.php b/Chapter09/onlineStore/config/mail.php deleted file mode 100644 index 87b6fe3..0000000 --- a/Chapter09/onlineStore/config/mail.php +++ /dev/null @@ -1,117 +0,0 @@ - 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", - | "postmark", "log", "array", "failover" - | - */ - - 'mailers' => [ - 'smtp' => [ - 'transport' => 'smtp', - '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, - ], - - 'ses' => [ - 'transport' => 'ses', - ], - - 'mailgun' => [ - 'transport' => 'mailgun', - ], - - 'postmark' => [ - 'transport' => 'postmark', - ], - - 'sendmail' => [ - 'transport' => 'sendmail', - 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -t -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/Chapter09/onlineStore/config/queue.php b/Chapter09/onlineStore/config/queue.php deleted file mode 100644 index 25ea5a8..0000000 --- a/Chapter09/onlineStore/config/queue.php +++ /dev/null @@ -1,93 +0,0 @@ - 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, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter09/onlineStore/config/sanctum.php b/Chapter09/onlineStore/config/sanctum.php deleted file mode 100644 index 9281c92..0000000 --- a/Chapter09/onlineStore/config/sanctum.php +++ /dev/null @@ -1,65 +0,0 @@ - explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( - '%s%s', - 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', - env('APP_URL') ? ','.parse_url(env('APP_URL'), PHP_URL_HOST) : '' - ))), - - /* - |-------------------------------------------------------------------------- - | 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/Chapter09/onlineStore/config/services.php b/Chapter09/onlineStore/config/services.php deleted file mode 100644 index 2a1d616..0000000 --- a/Chapter09/onlineStore/config/services.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - 'domain' => env('MAILGUN_DOMAIN'), - 'secret' => env('MAILGUN_SECRET'), - 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), - ], - - '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/Chapter09/onlineStore/config/session.php b/Chapter09/onlineStore/config/session.php deleted file mode 100644 index 8fed97c..0000000 --- a/Chapter09/onlineStore/config/session.php +++ /dev/null @@ -1,201 +0,0 @@ - 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/Chapter09/onlineStore/config/view.php b/Chapter09/onlineStore/config/view.php deleted file mode 100644 index 22b8a18..0000000 --- a/Chapter09/onlineStore/config/view.php +++ /dev/null @@ -1,36 +0,0 @@ - [ - 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/Chapter09/onlineStore/database/.gitignore b/Chapter09/onlineStore/database/.gitignore deleted file mode 100644 index 9b19b93..0000000 --- a/Chapter09/onlineStore/database/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.sqlite* diff --git a/Chapter09/onlineStore/database/factories/UserFactory.php b/Chapter09/onlineStore/database/factories/UserFactory.php deleted file mode 100644 index d6ca926..0000000 --- a/Chapter09/onlineStore/database/factories/UserFactory.php +++ /dev/null @@ -1,42 +0,0 @@ - - */ -class UserFactory extends Factory -{ - /** - * Define the model's default state. - * - * @return array - */ - public function definition() - { - return [ - 'name' => $this->faker->name(), - 'email' => $this->faker->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. - * - * @return \Illuminate\Database\Eloquent\Factories\Factory - */ - public function unverified() - { - return $this->state(function (array $attributes) { - return [ - 'email_verified_at' => null, - ]; - }); - } -} diff --git a/Chapter09/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php b/Chapter09/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php deleted file mode 100644 index cf6b776..0000000 --- a/Chapter09/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->string('name'); - $table->string('email')->unique(); - $table->timestamp('email_verified_at')->nullable(); - $table->string('password'); - $table->rememberToken(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('users'); - } -}; diff --git a/Chapter09/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php b/Chapter09/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php deleted file mode 100644 index fcacb80..0000000 --- a/Chapter09/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php +++ /dev/null @@ -1,32 +0,0 @@ -string('email')->index(); - $table->string('token'); - $table->timestamp('created_at')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('password_resets'); - } -}; diff --git a/Chapter09/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/Chapter09/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php deleted file mode 100644 index 1719198..0000000 --- a/Chapter09/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php +++ /dev/null @@ -1,36 +0,0 @@ -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. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('failed_jobs'); - } -}; diff --git a/Chapter09/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/Chapter09/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php deleted file mode 100644 index fd235f8..0000000 --- a/Chapter09/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->morphs('tokenable'); - $table->string('name'); - $table->string('token', 64)->unique(); - $table->text('abilities')->nullable(); - $table->timestamp('last_used_at')->nullable(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('personal_access_tokens'); - } -}; diff --git a/Chapter09/onlineStore/database/seeders/DatabaseSeeder.php b/Chapter09/onlineStore/database/seeders/DatabaseSeeder.php deleted file mode 100644 index 71f673f..0000000 --- a/Chapter09/onlineStore/database/seeders/DatabaseSeeder.php +++ /dev/null @@ -1,19 +0,0 @@ -create(); - } -} diff --git a/Chapter09/onlineStore/lang/en.json b/Chapter09/onlineStore/lang/en.json deleted file mode 100644 index 577680d..0000000 --- a/Chapter09/onlineStore/lang/en.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "The :attribute must contain at least one letter.": "The :attribute must contain at least one letter.", - "The :attribute must contain at least one number.": "The :attribute must contain at least one number.", - "The :attribute must contain at least one symbol.": "The :attribute must contain at least one symbol.", - "The :attribute must contain at least one uppercase and one lowercase letter.": "The :attribute must contain at least one uppercase and one lowercase letter.", - "The given :attribute has appeared in a data leak. Please choose a different :attribute.": "The given :attribute has appeared in a data leak. Please choose a different :attribute." -} diff --git a/Chapter09/onlineStore/lang/en/auth.php b/Chapter09/onlineStore/lang/en/auth.php deleted file mode 100644 index 6598e2c..0000000 --- a/Chapter09/onlineStore/lang/en/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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/Chapter09/onlineStore/lang/en/pagination.php b/Chapter09/onlineStore/lang/en/pagination.php deleted file mode 100644 index d481411..0000000 --- a/Chapter09/onlineStore/lang/en/pagination.php +++ /dev/null @@ -1,19 +0,0 @@ - '« Previous', - 'next' => 'Next »', - -]; diff --git a/Chapter09/onlineStore/lang/en/passwords.php b/Chapter09/onlineStore/lang/en/passwords.php deleted file mode 100644 index 2345a56..0000000 --- a/Chapter09/onlineStore/lang/en/passwords.php +++ /dev/null @@ -1,22 +0,0 @@ - '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/Chapter09/onlineStore/lang/en/validation.php b/Chapter09/onlineStore/lang/en/validation.php deleted file mode 100644 index 783003c..0000000 --- a/Chapter09/onlineStore/lang/en/validation.php +++ /dev/null @@ -1,163 +0,0 @@ - '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' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - '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' => [ - 'numeric' => 'The :attribute must be greater than :value.', - 'file' => 'The :attribute must be greater than :value kilobytes.', - 'string' => 'The :attribute must be greater than :value characters.', - 'array' => 'The :attribute must have more than :value items.', - ], - 'gte' => [ - 'numeric' => 'The :attribute must be greater than or equal to :value.', - 'file' => 'The :attribute must be greater than or equal to :value kilobytes.', - 'string' => 'The :attribute must be greater than or equal to :value characters.', - 'array' => 'The :attribute must have :value items or more.', - ], - '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' => [ - 'numeric' => 'The :attribute must be less than :value.', - 'file' => 'The :attribute must be less than :value kilobytes.', - 'string' => 'The :attribute must be less than :value characters.', - 'array' => 'The :attribute must have less than :value items.', - ], - 'lte' => [ - 'numeric' => 'The :attribute must be less than or equal to :value.', - 'file' => 'The :attribute must be less than or equal to :value kilobytes.', - 'string' => 'The :attribute must be less than or equal to :value characters.', - 'array' => 'The :attribute must not have more than :value items.', - ], - 'mac_address' => 'The :attribute must be a valid MAC address.', - 'max' => [ - 'numeric' => 'The :attribute must not be greater than :max.', - 'file' => 'The :attribute must not be greater than :max kilobytes.', - 'string' => 'The :attribute must not be greater than :max characters.', - 'array' => 'The :attribute must not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - '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.', - 'password' => 'The password is incorrect.', - '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' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - '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/Chapter09/onlineStore/package.json b/Chapter09/onlineStore/package.json deleted file mode 100644 index 7a9aecd..0000000 --- a/Chapter09/onlineStore/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "private": true, - "scripts": { - "dev": "npm run development", - "development": "mix", - "watch": "mix watch", - "watch-poll": "mix watch -- --watch-options-poll=1000", - "hot": "mix watch --hot", - "prod": "npm run production", - "production": "mix --production" - }, - "devDependencies": { - "axios": "^0.25", - "laravel-mix": "^6.0.6", - "lodash": "^4.17.19", - "postcss": "^8.1.14" - } -} diff --git a/Chapter09/onlineStore/phpcs.xml b/Chapter09/onlineStore/phpcs.xml deleted file mode 100644 index a1cf2b6..0000000 --- a/Chapter09/onlineStore/phpcs.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - The coding standard for the Online Store project - - app/ - config/ - database/ - routes/ - */migrations/* - diff --git a/Chapter09/onlineStore/phpunit.xml b/Chapter09/onlineStore/phpunit.xml deleted file mode 100644 index 2ac86a1..0000000 --- a/Chapter09/onlineStore/phpunit.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - ./tests/Unit - - - ./tests/Feature - - - - - ./app - - - - - - - - - - - - - - diff --git a/Chapter09/onlineStore/public/.htaccess b/Chapter09/onlineStore/public/.htaccess deleted file mode 100644 index 3aec5e2..0000000 --- a/Chapter09/onlineStore/public/.htaccess +++ /dev/null @@ -1,21 +0,0 @@ - - - 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/Chapter09/onlineStore/public/css/app.css b/Chapter09/onlineStore/public/css/app.css deleted file mode 100644 index cabac36..0000000 --- a/Chapter09/onlineStore/public/css/app.css +++ /dev/null @@ -1,20 +0,0 @@ -.bg-secondary { - background-color: #2c3e50 !important; -} - -.copyright { - background-color: #1a252f; -} - -.bg-primary { - background-color: #1abc9c !important; -} - -nav{ - font-weight: 700; -} - -.img-card{ - height: 18vw; - object-fit: cover; -} diff --git a/Chapter09/onlineStore/public/favicon.ico b/Chapter09/onlineStore/public/favicon.ico deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter09/onlineStore/public/img/game.png b/Chapter09/onlineStore/public/img/game.png deleted file mode 100644 index 85420e8bbc16098bf26b4ee63bde0e91a19d1f2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25896 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 cz>% diff --git a/Chapter09/onlineStore/public/img/safe.png b/Chapter09/onlineStore/public/img/safe.png deleted file mode 100644 index 445942c707af53210931f9f4f99f6d3cb69e5d89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19240 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
    w==XB0?3|p=#`o%NsudE(E-U#KS3Snw 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 o>ir+C;RN10sIS0&a;pmake(Kernel::class); - -$response = $kernel->handle( - $request = Request::capture() -)->send(); - -$kernel->terminate($request, $response); diff --git a/Chapter09/onlineStore/public/robots.txt b/Chapter09/onlineStore/public/robots.txt deleted file mode 100644 index eb05362..0000000 --- a/Chapter09/onlineStore/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: diff --git a/Chapter09/onlineStore/resources/css/app.css b/Chapter09/onlineStore/resources/css/app.css deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter09/onlineStore/resources/js/app.js b/Chapter09/onlineStore/resources/js/app.js deleted file mode 100644 index 40c55f6..0000000 --- a/Chapter09/onlineStore/resources/js/app.js +++ /dev/null @@ -1 +0,0 @@ -require('./bootstrap'); diff --git a/Chapter09/onlineStore/resources/js/bootstrap.js b/Chapter09/onlineStore/resources/js/bootstrap.js deleted file mode 100644 index 6922577..0000000 --- a/Chapter09/onlineStore/resources/js/bootstrap.js +++ /dev/null @@ -1,28 +0,0 @@ -window._ = require('lodash'); - -/** - * 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 = require('axios'); - -window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; - -/** - * 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'; - -// window.Pusher = require('pusher-js'); - -// window.Echo = new Echo({ -// broadcaster: 'pusher', -// key: process.env.MIX_PUSHER_APP_KEY, -// cluster: process.env.MIX_PUSHER_APP_CLUSTER, -// forceTLS: true -// }); diff --git a/Chapter09/onlineStore/resources/views/home/about.blade.php b/Chapter09/onlineStore/resources/views/home/about.blade.php deleted file mode 100644 index f79abf3..0000000 --- a/Chapter09/onlineStore/resources/views/home/about.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    -
    -
    -

    {{ $viewData["description"] }}

    -
    -
    -

    {{ $viewData["author"] }}

    -
    -
    -
    -@endsection diff --git a/Chapter09/onlineStore/resources/views/home/index.blade.php b/Chapter09/onlineStore/resources/views/home/index.blade.php deleted file mode 100644 index 1affb20..0000000 --- a/Chapter09/onlineStore/resources/views/home/index.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('content') -
    -
    - -
    -
    - -
    -
    - -
    -
    -@endsection diff --git a/Chapter09/onlineStore/resources/views/layouts/app.blade.php b/Chapter09/onlineStore/resources/views/layouts/app.blade.php deleted file mode 100644 index eee7fcb..0000000 --- a/Chapter09/onlineStore/resources/views/layouts/app.blade.php +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - @yield('title', 'Online Store') - - - -
    - -
    -
    -

    @yield('subtitle', 'A Laravel Online Store')

    -
    -
    - - -
    - @yield('content') -
    - - - - - - - diff --git a/Chapter09/onlineStore/resources/views/product/index.blade.php b/Chapter09/onlineStore/resources/views/product/index.blade.php deleted file mode 100644 index 1f766f1..0000000 --- a/Chapter09/onlineStore/resources/views/product/index.blade.php +++ /dev/null @@ -1,18 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    - @foreach ($viewData["products"] as $product) -
    - -
    - @endforeach -
    -@endsection diff --git a/Chapter09/onlineStore/resources/views/product/show.blade.php b/Chapter09/onlineStore/resources/views/product/show.blade.php deleted file mode 100644 index 01d056e..0000000 --- a/Chapter09/onlineStore/resources/views/product/show.blade.php +++ /dev/null @@ -1,21 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    -
    -
    - -
    -
    -
    -
    - {{ $viewData["product"]["name"] }} (${{ $viewData["product"]["price"] }}) -
    -

    {{ $viewData["product"]["description"] }}

    -

    Add to Cart

    -
    -
    -
    -
    -@endsection diff --git a/Chapter09/onlineStore/resources/views/welcome.blade.php b/Chapter09/onlineStore/resources/views/welcome.blade.php deleted file mode 100644 index c587c72..0000000 --- a/Chapter09/onlineStore/resources/views/welcome.blade.php +++ /dev/null @@ -1,7 +0,0 @@ -@extends('layouts.app') -@section('title', 'Home Page - Online Store') -@section('content') -
    - Welcome to the application -
    -@endsection \ No newline at end of file diff --git a/Chapter09/onlineStore/routes/api.php b/Chapter09/onlineStore/routes/api.php deleted file mode 100644 index eb6fa48..0000000 --- a/Chapter09/onlineStore/routes/api.php +++ /dev/null @@ -1,19 +0,0 @@ -get('/user', function (Request $request) { - return $request->user(); -}); diff --git a/Chapter09/onlineStore/routes/channels.php b/Chapter09/onlineStore/routes/channels.php deleted file mode 100644 index 5d451e1..0000000 --- a/Chapter09/onlineStore/routes/channels.php +++ /dev/null @@ -1,18 +0,0 @@ -id === (int) $id; -}); diff --git a/Chapter09/onlineStore/routes/console.php b/Chapter09/onlineStore/routes/console.php deleted file mode 100644 index e05f4c9..0000000 --- a/Chapter09/onlineStore/routes/console.php +++ /dev/null @@ -1,19 +0,0 @@ -comment(Inspiring::quote()); -})->purpose('Display an inspiring quote'); diff --git a/Chapter09/onlineStore/routes/web.php b/Chapter09/onlineStore/routes/web.php deleted file mode 100644 index 0f5e40f..0000000 --- a/Chapter09/onlineStore/routes/web.php +++ /dev/null @@ -1,19 +0,0 @@ -name("home.index"); -Route::get('/about', 'App\Http\Controllers\HomeController@about')->name("home.about"); -Route::get('/products', 'App\Http\Controllers\ProductController@index')->name("product.index"); -Route::get('/products/{id}', 'App\Http\Controllers\ProductController@show')->name("product.show"); diff --git a/Chapter09/onlineStore/storage/app/.gitignore b/Chapter09/onlineStore/storage/app/.gitignore deleted file mode 100644 index 8f4803c..0000000 --- a/Chapter09/onlineStore/storage/app/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!public/ -!.gitignore diff --git a/Chapter09/onlineStore/storage/app/public/.gitignore b/Chapter09/onlineStore/storage/app/public/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter09/onlineStore/storage/app/public/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter09/onlineStore/storage/framework/.gitignore b/Chapter09/onlineStore/storage/framework/.gitignore deleted file mode 100644 index 05c4471..0000000 --- a/Chapter09/onlineStore/storage/framework/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -compiled.php -config.php -down -events.scanned.php -maintenance.php -routes.php -routes.scanned.php -schedule-* -services.json diff --git a/Chapter09/onlineStore/storage/framework/cache/.gitignore b/Chapter09/onlineStore/storage/framework/cache/.gitignore deleted file mode 100644 index 01e4a6c..0000000 --- a/Chapter09/onlineStore/storage/framework/cache/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!data/ -!.gitignore diff --git a/Chapter09/onlineStore/storage/framework/cache/data/.gitignore b/Chapter09/onlineStore/storage/framework/cache/data/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter09/onlineStore/storage/framework/cache/data/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter09/onlineStore/storage/framework/sessions/.gitignore b/Chapter09/onlineStore/storage/framework/sessions/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter09/onlineStore/storage/framework/sessions/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter09/onlineStore/storage/framework/testing/.gitignore b/Chapter09/onlineStore/storage/framework/testing/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter09/onlineStore/storage/framework/testing/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter09/onlineStore/storage/framework/views/.gitignore b/Chapter09/onlineStore/storage/framework/views/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter09/onlineStore/storage/framework/views/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter09/onlineStore/storage/logs/.gitignore b/Chapter09/onlineStore/storage/logs/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter09/onlineStore/storage/logs/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter09/onlineStore/tests/CreatesApplication.php b/Chapter09/onlineStore/tests/CreatesApplication.php deleted file mode 100644 index 547152f..0000000 --- a/Chapter09/onlineStore/tests/CreatesApplication.php +++ /dev/null @@ -1,22 +0,0 @@ -make(Kernel::class)->bootstrap(); - - return $app; - } -} diff --git a/Chapter09/onlineStore/tests/Feature/ExampleTest.php b/Chapter09/onlineStore/tests/Feature/ExampleTest.php deleted file mode 100644 index 78ccc21..0000000 --- a/Chapter09/onlineStore/tests/Feature/ExampleTest.php +++ /dev/null @@ -1,21 +0,0 @@ -get('/'); - - $response->assertStatus(200); - } -} diff --git a/Chapter09/onlineStore/tests/TestCase.php b/Chapter09/onlineStore/tests/TestCase.php deleted file mode 100644 index 2932d4a..0000000 --- a/Chapter09/onlineStore/tests/TestCase.php +++ /dev/null @@ -1,10 +0,0 @@ -assertTrue(true); - } -} diff --git a/Chapter09/onlineStore/webpack.mix.js b/Chapter09/onlineStore/webpack.mix.js deleted file mode 100644 index 2a22dc1..0000000 --- a/Chapter09/onlineStore/webpack.mix.js +++ /dev/null @@ -1,17 +0,0 @@ -const mix = require('laravel-mix'); - -/* - |-------------------------------------------------------------------------- - | Mix Asset Management - |-------------------------------------------------------------------------- - | - | Mix provides a clean, fluent API for defining some Webpack build steps - | for your Laravel applications. By default, we are compiling the CSS - | file for the application as well as bundling up all the JS files. - | - */ - -mix.js('resources/js/app.js', 'public/js') - .postCss('resources/css/app.css', 'public/css', [ - // - ]); diff --git a/Chapter11/onlineStore/.editorconfig b/Chapter11/onlineStore/.editorconfig deleted file mode 100644 index 1671c9b..0000000 --- a/Chapter11/onlineStore/.editorconfig +++ /dev/null @@ -1,18 +0,0 @@ -root = true - -[*] -charset = utf-8 -end_of_line = lf -insert_final_newline = true -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true - -[*.md] -trim_trailing_whitespace = false - -[*.{yml,yaml}] -indent_size = 2 - -[docker-compose.yml] -indent_size = 4 diff --git a/Chapter11/onlineStore/.env.example b/Chapter11/onlineStore/.env.example deleted file mode 100644 index 8510237..0000000 --- a/Chapter11/onlineStore/.env.example +++ /dev/null @@ -1,52 +0,0 @@ -APP_NAME=Laravel -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=laravel -DB_USERNAME=root -DB_PASSWORD= - -BROADCAST_DRIVER=log -CACHE_DRIVER=file -FILESYSTEM_DISK=local -QUEUE_CONNECTION=sync -SESSION_DRIVER=file -SESSION_LIFETIME=120 - -MEMCACHED_HOST=127.0.0.1 - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -MAIL_MAILER=smtp -MAIL_HOST=mailhog -MAIL_PORT=1025 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS=null -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_APP_CLUSTER=mt1 - -MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/Chapter11/onlineStore/.gitattributes b/Chapter11/onlineStore/.gitattributes deleted file mode 100644 index 510d996..0000000 --- a/Chapter11/onlineStore/.gitattributes +++ /dev/null @@ -1,10 +0,0 @@ -* text=auto - -*.blade.php diff=html -*.css diff=css -*.html diff=html -*.md diff=markdown -*.php diff=php - -/.github export-ignore -CHANGELOG.md export-ignore diff --git a/Chapter11/onlineStore/.gitignore b/Chapter11/onlineStore/.gitignore deleted file mode 100644 index eb003b0..0000000 --- a/Chapter11/onlineStore/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -/node_modules -/public/hot -/public/storage -/storage/*.key -/vendor -.env -.env.backup -.phpunit.result.cache -docker-compose.override.yml -Homestead.json -Homestead.yaml -npm-debug.log -yarn-error.log -/.idea -/.vscode diff --git a/Chapter11/onlineStore/.styleci.yml b/Chapter11/onlineStore/.styleci.yml deleted file mode 100644 index 679a631..0000000 --- a/Chapter11/onlineStore/.styleci.yml +++ /dev/null @@ -1,13 +0,0 @@ -php: - preset: laravel - version: 8 - disabled: - - no_unused_imports - finder: - not-name: - - index.php -js: - finder: - not-name: - - webpack.mix.js -css: true diff --git a/Chapter11/onlineStore/CHAPTER-11-SQL-QUERY.txt b/Chapter11/onlineStore/CHAPTER-11-SQL-QUERY.txt deleted file mode 100644 index da7a2a3..0000000 --- a/Chapter11/onlineStore/CHAPTER-11-SQL-QUERY.txt +++ /dev/null @@ -1,4 +0,0 @@ -INSERT INTO products (id, name, description, image, price, created_at, updated_at) VALUES (NULL, 'TV', 'Best TV', 'game.png', '1000', '2021-10-01 00:00:00', '2021-10-01 00:00:00'); -INSERT INTO products (id, name, description, image, price, created_at, updated_at) VALUES (NULL, 'iPhone', 'Best iPhone', 'safe.png', '999', '2021-10-01 00:00:00', '2021-10-01 00:00:00'); -INSERT INTO products (id, name, description, image, price, created_at, updated_at) VALUES (NULL, 'Chromecast', 'Best Chromecast', 'submarine.png', '30', '2021-10-01 00:00:00', '2021-10-01 00:00:00'); -INSERT INTO products (id, name, description, image, price, created_at, updated_at) VALUES (NULL, 'Glasses', 'Best Glasses', 'game.png', '100', '2021-10-01 00:00:00', '2021-10-01 00:00:00'); \ No newline at end of file diff --git a/Chapter11/onlineStore/README.md b/Chapter11/onlineStore/README.md deleted file mode 100644 index e118f46..0000000 --- a/Chapter11/onlineStore/README.md +++ /dev/null @@ -1,8 +0,0 @@ -## CHAPTER 11 - SQL QUERY - -``` -INSERT INTO products (id, name, description, image, price, created_at, updated_at) VALUES (NULL, 'TV', 'Best TV', 'game.png', '1000', '2021-10-01 00:00:00', '2021-10-01 00:00:00'); -INSERT INTO products (id, name, description, image, price, created_at, updated_at) VALUES (NULL, 'iPhone', 'Best iPhone', 'safe.png', '999', '2021-10-01 00:00:00', '2021-10-01 00:00:00'); -INSERT INTO products (id, name, description, image, price, created_at, updated_at) VALUES (NULL, 'Chromecast', 'Best Chromecast', 'submarine.png', '30', '2021-10-01 00:00:00', '2021-10-01 00:00:00'); -INSERT INTO products (id, name, description, image, price, created_at, updated_at) VALUES (NULL, 'Glasses', 'Best Glasses', 'game.png', '100', '2021-10-01 00:00:00', '2021-10-01 00:00:00'); -``` diff --git a/Chapter11/onlineStore/app/Console/Kernel.php b/Chapter11/onlineStore/app/Console/Kernel.php deleted file mode 100644 index d8bc1d2..0000000 --- a/Chapter11/onlineStore/app/Console/Kernel.php +++ /dev/null @@ -1,32 +0,0 @@ -command('inspire')->hourly(); - } - - /** - * Register the commands for the application. - * - * @return void - */ - protected function commands() - { - $this->load(__DIR__.'/Commands'); - - require base_path('routes/console.php'); - } -} diff --git a/Chapter11/onlineStore/app/Exceptions/Handler.php b/Chapter11/onlineStore/app/Exceptions/Handler.php deleted file mode 100644 index 8e7fbd1..0000000 --- a/Chapter11/onlineStore/app/Exceptions/Handler.php +++ /dev/null @@ -1,41 +0,0 @@ -> - */ - protected $dontReport = [ - // - ]; - - /** - * A list of the inputs that are never flashed for validation exceptions. - * - * @var array - */ - protected $dontFlash = [ - 'current_password', - 'password', - 'password_confirmation', - ]; - - /** - * Register the exception handling callbacks for the application. - * - * @return void - */ - public function register() - { - $this->reportable(function (Throwable $e) { - // - }); - } -} diff --git a/Chapter11/onlineStore/app/Http/Controllers/Controller.php b/Chapter11/onlineStore/app/Http/Controllers/Controller.php deleted file mode 100644 index a0a2a8a..0000000 --- a/Chapter11/onlineStore/app/Http/Controllers/Controller.php +++ /dev/null @@ -1,13 +0,0 @@ -with("viewData", $viewData); - } - - public function about() - { - $viewData = []; - $viewData["title"] = "About us - Online Store"; - $viewData["subtitle"] = "About us"; - $viewData["description"] = "This is an about page ..."; - $viewData["author"] = "Developed by: Your Name"; - return view('home.about')->with("viewData", $viewData); - } -} diff --git a/Chapter11/onlineStore/app/Http/Controllers/ProductController.php b/Chapter11/onlineStore/app/Http/Controllers/ProductController.php deleted file mode 100644 index 552a472..0000000 --- a/Chapter11/onlineStore/app/Http/Controllers/ProductController.php +++ /dev/null @@ -1,34 +0,0 @@ -"1", "name"=>"TV", "description"=>"Best TV", "image" => "game.png", "price"=>"1000"], - ["id"=>"2", "name"=>"iPhone", "description"=>"Best iPhone", "image" => "safe.png", "price"=>"999"], - ["id"=>"3", "name"=>"Chromecast", "description"=>"Best Chromecast", "image" => "submarine.png", "price"=>"30"], - ["id"=>"4", "name"=>"Glasses", "description"=>"Best Glasses", "image" => "game.png", "price"=>"100"] - ]; - - public function index() - { - $viewData = []; - $viewData["title"] = "Products - Online Store"; - $viewData["subtitle"] = "List of products"; - $viewData["products"] = ProductController::$products; - return view('product.index')->with("viewData", $viewData); - } - - public function show($id) - { - $viewData = []; - $product = ProductController::$products[$id-1]; - $viewData["title"] = $product["name"]." - Online Store"; - $viewData["subtitle"] = $product["name"]." - Product information"; - $viewData["product"] = $product; - return view('product.show')->with("viewData", $viewData); - } -} diff --git a/Chapter11/onlineStore/app/Http/Kernel.php b/Chapter11/onlineStore/app/Http/Kernel.php deleted file mode 100644 index d3722c2..0000000 --- a/Chapter11/onlineStore/app/Http/Kernel.php +++ /dev/null @@ -1,67 +0,0 @@ - - */ - protected $middleware = [ - // \App\Http\Middleware\TrustHosts::class, - \App\Http\Middleware\TrustProxies::class, - \Fruitcake\Cors\HandleCors::class, - \App\Http\Middleware\PreventRequestsDuringMaintenance::class, - \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, - \App\Http\Middleware\TrimStrings::class, - \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, - ]; - - /** - * The application's route middleware groups. - * - * @var array> - */ - protected $middlewareGroups = [ - 'web' => [ - \App\Http\Middleware\EncryptCookies::class, - \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, - \Illuminate\Session\Middleware\StartSession::class, - // \Illuminate\Session\Middleware\AuthenticateSession::class, - \Illuminate\View\Middleware\ShareErrorsFromSession::class, - \App\Http\Middleware\VerifyCsrfToken::class, - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - - 'api' => [ - // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, - 'throttle:api', - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - ]; - - /** - * The application's route middleware. - * - * These middleware may be assigned to groups or used individually. - * - * @var array - */ - protected $routeMiddleware = [ - 'auth' => \App\Http\Middleware\Authenticate::class, - 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::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, - 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, - 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, - 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, - ]; -} diff --git a/Chapter11/onlineStore/app/Http/Middleware/Authenticate.php b/Chapter11/onlineStore/app/Http/Middleware/Authenticate.php deleted file mode 100644 index 704089a..0000000 --- a/Chapter11/onlineStore/app/Http/Middleware/Authenticate.php +++ /dev/null @@ -1,21 +0,0 @@ -expectsJson()) { - return route('login'); - } - } -} diff --git a/Chapter11/onlineStore/app/Http/Middleware/EncryptCookies.php b/Chapter11/onlineStore/app/Http/Middleware/EncryptCookies.php deleted file mode 100644 index 867695b..0000000 --- a/Chapter11/onlineStore/app/Http/Middleware/EncryptCookies.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter11/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/Chapter11/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php deleted file mode 100644 index 74cbd9a..0000000 --- a/Chapter11/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter11/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php b/Chapter11/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php deleted file mode 100644 index a2813a0..0000000 --- a/Chapter11/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php +++ /dev/null @@ -1,32 +0,0 @@ -check()) { - return redirect(RouteServiceProvider::HOME); - } - } - - return $next($request); - } -} diff --git a/Chapter11/onlineStore/app/Http/Middleware/TrimStrings.php b/Chapter11/onlineStore/app/Http/Middleware/TrimStrings.php deleted file mode 100644 index 88cadca..0000000 --- a/Chapter11/onlineStore/app/Http/Middleware/TrimStrings.php +++ /dev/null @@ -1,19 +0,0 @@ - - */ - protected $except = [ - 'current_password', - 'password', - 'password_confirmation', - ]; -} diff --git a/Chapter11/onlineStore/app/Http/Middleware/TrustHosts.php b/Chapter11/onlineStore/app/Http/Middleware/TrustHosts.php deleted file mode 100644 index 7186414..0000000 --- a/Chapter11/onlineStore/app/Http/Middleware/TrustHosts.php +++ /dev/null @@ -1,20 +0,0 @@ - - */ - public function hosts() - { - return [ - $this->allSubdomainsOfApplicationUrl(), - ]; - } -} diff --git a/Chapter11/onlineStore/app/Http/Middleware/TrustProxies.php b/Chapter11/onlineStore/app/Http/Middleware/TrustProxies.php deleted file mode 100644 index 3391630..0000000 --- a/Chapter11/onlineStore/app/Http/Middleware/TrustProxies.php +++ /dev/null @@ -1,28 +0,0 @@ -|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/Chapter11/onlineStore/app/Http/Middleware/VerifyCsrfToken.php b/Chapter11/onlineStore/app/Http/Middleware/VerifyCsrfToken.php deleted file mode 100644 index 9e86521..0000000 --- a/Chapter11/onlineStore/app/Http/Middleware/VerifyCsrfToken.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter11/onlineStore/app/Models/User.php b/Chapter11/onlineStore/app/Models/User.php deleted file mode 100644 index 8996368..0000000 --- a/Chapter11/onlineStore/app/Models/User.php +++ /dev/null @@ -1,44 +0,0 @@ - - */ - 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', - ]; -} diff --git a/Chapter11/onlineStore/app/Providers/AppServiceProvider.php b/Chapter11/onlineStore/app/Providers/AppServiceProvider.php deleted file mode 100644 index ee8ca5b..0000000 --- a/Chapter11/onlineStore/app/Providers/AppServiceProvider.php +++ /dev/null @@ -1,28 +0,0 @@ - - */ - protected $policies = [ - // 'App\Models\Model' => 'App\Policies\ModelPolicy', - ]; - - /** - * Register any authentication / authorization services. - * - * @return void - */ - public function boot() - { - $this->registerPolicies(); - - // - } -} diff --git a/Chapter11/onlineStore/app/Providers/BroadcastServiceProvider.php b/Chapter11/onlineStore/app/Providers/BroadcastServiceProvider.php deleted file mode 100644 index 395c518..0000000 --- a/Chapter11/onlineStore/app/Providers/BroadcastServiceProvider.php +++ /dev/null @@ -1,21 +0,0 @@ -> - */ - protected $listen = [ - Registered::class => [ - SendEmailVerificationNotification::class, - ], - ]; - - /** - * Register any events for your application. - * - * @return void - */ - public function boot() - { - // - } -} diff --git a/Chapter11/onlineStore/app/Providers/RouteServiceProvider.php b/Chapter11/onlineStore/app/Providers/RouteServiceProvider.php deleted file mode 100644 index 7c17d1f..0000000 --- a/Chapter11/onlineStore/app/Providers/RouteServiceProvider.php +++ /dev/null @@ -1,63 +0,0 @@ -configureRateLimiting(); - - $this->routes(function () { - Route::prefix('api') - ->middleware('api') - ->namespace($this->namespace) - ->group(base_path('routes/api.php')); - - Route::middleware('web') - ->namespace($this->namespace) - ->group(base_path('routes/web.php')); - }); - } - - /** - * Configure the rate limiters for the application. - * - * @return void - */ - protected function configureRateLimiting() - { - RateLimiter::for('api', function (Request $request) { - return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); - }); - } -} diff --git a/Chapter11/onlineStore/artisan b/Chapter11/onlineStore/artisan deleted file mode 100644 index 67a3329..0000000 --- a/Chapter11/onlineStore/artisan +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env php -make(Illuminate\Contracts\Console\Kernel::class); - -$status = $kernel->handle( - $input = new Symfony\Component\Console\Input\ArgvInput, - new Symfony\Component\Console\Output\ConsoleOutput -); - -/* -|-------------------------------------------------------------------------- -| Shutdown The Application -|-------------------------------------------------------------------------- -| -| Once Artisan has finished running, we will fire off the shutdown events -| so that any final work may be done by the application before we shut -| down the process. This is the last thing to happen to the request. -| -*/ - -$kernel->terminate($input, $status); - -exit($status); diff --git a/Chapter11/onlineStore/bootstrap/app.php b/Chapter11/onlineStore/bootstrap/app.php deleted file mode 100644 index 037e17d..0000000 --- a/Chapter11/onlineStore/bootstrap/app.php +++ /dev/null @@ -1,55 +0,0 @@ -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/Chapter11/onlineStore/bootstrap/cache/.gitignore b/Chapter11/onlineStore/bootstrap/cache/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter11/onlineStore/bootstrap/cache/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter11/onlineStore/composer.json b/Chapter11/onlineStore/composer.json deleted file mode 100644 index f0f2eda..0000000 --- a/Chapter11/onlineStore/composer.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "name": "laravel/laravel", - "type": "project", - "description": "The Laravel Framework.", - "keywords": ["framework", "laravel"], - "license": "MIT", - "require": { - "php": "^8.0", - "fruitcake/laravel-cors": "^2.0.5", - "guzzlehttp/guzzle": "^7.2", - "laravel/framework": "^9.0", - "laravel/sanctum": "^2.14", - "laravel/tinker": "^2.7" - }, - "require-dev": { - "fakerphp/faker": "^1.9.1", - "laravel/sail": "^1.0.1", - "mockery/mockery": "^1.4.4", - "nunomaduro/collision": "^6.1", - "phpunit/phpunit": "^9.5.10", - "spatie/laravel-ignition": "^1.0", - "squizlabs/php_codesniffer": "^3.6" - }, - "autoload": { - "psr-4": { - "App\\": "app/", - "Database\\Factories\\": "database/factories/", - "Database\\Seeders\\": "database/seeders/" - } - }, - "autoload-dev": { - "psr-4": { - "Tests\\": "tests/" - } - }, - "scripts": { - "post-autoload-dump": [ - "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", - "@php artisan package:discover --ansi" - ], - "post-update-cmd": [ - "@php artisan vendor:publish --tag=laravel-assets --ansi --force" - ], - "post-root-package-install": [ - "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" - ], - "post-create-project-cmd": [ - "@php artisan key:generate --ansi" - ] - }, - "extra": { - "laravel": { - "dont-discover": [] - } - }, - "config": { - "optimize-autoloader": true, - "preferred-install": "dist", - "sort-packages": true - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/Chapter11/onlineStore/composer.lock b/Chapter11/onlineStore/composer.lock deleted file mode 100644 index b55e897..0000000 --- a/Chapter11/onlineStore/composer.lock +++ /dev/null @@ -1,7860 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "8bdcc31974d0d5a00db79c82827c8815", - "packages": [ - { - "name": "asm89/stack-cors", - "version": "v2.1.1", - "source": { - "type": "git", - "url": "https://github.com/asm89/stack-cors.git", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4|^5|^6" - }, - "require-dev": { - "phpunit/phpunit": "^7|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "psr-4": { - "Asm89\\Stack\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alexander", - "email": "iam.asm89@gmail.com" - } - ], - "description": "Cross-origin resource sharing library and stack middleware", - "homepage": "https://github.com/asm89/stack-cors", - "keywords": [ - "cors", - "stack" - ], - "support": { - "issues": "https://github.com/asm89/stack-cors/issues", - "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" - }, - "time": "2022-01-18T09:12:03+00:00" - }, - { - "name": "brick/math", - "version": "0.9.3", - "source": { - "type": "git", - "url": "https://github.com/brick/math.git", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", - "vimeo/psalm": "4.9.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Brick\\Math\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Arbitrary-precision arithmetic library", - "keywords": [ - "Arbitrary-precision", - "BigInteger", - "BigRational", - "arithmetic", - "bigdecimal", - "bignum", - "brick", - "math" - ], - "support": { - "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.9.3" - }, - "funding": [ - { - "url": "https://github.com/BenMorel", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/brick/math", - "type": "tidelift" - } - ], - "time": "2021-08-15T20:50:18+00:00" - }, - { - "name": "dflydev/dot-access-data", - "version": "v3.0.1", - "source": { - "type": "git", - "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c", - "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": "^3.14" - }, - "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.1" - }, - "time": "2021-08-13T13:06:58+00:00" - }, - { - "name": "doctrine/inflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "vimeo/psalm": "^4.10" - }, - "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.4" - }, - "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": "2021-10-22T20:16:43+00:00" - }, - { - "name": "doctrine/lexer", - "version": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" - } - }, - "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/1.2.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%2Flexer", - "type": "tidelift" - } - ], - "time": "2022-01-12T08:27:12+00:00" - }, - { - "name": "dragonmantank/cron-expression", - "version": "v3.3.1", - "source": { - "type": "git", - "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "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.1" - }, - "funding": [ - { - "url": "https://github.com/dragonmantank", - "type": "github" - } - ], - "time": "2022-01-18T15:43:28+00:00" - }, - { - "name": "egulias/email-validator", - "version": "3.1.2", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ee0db30118f661fb166bcffbf5d82032df484697", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^1.2", - "php": ">=7.2", - "symfony/polyfill-intl-idn": "^1.15" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^8.5.8|^9.3.3", - "vimeo/psalm": "^4" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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/3.1.2" - }, - "funding": [ - { - "url": "https://github.com/egulias", - "type": "github" - } - ], - "time": "2021-10-11T09:18:27+00:00" - }, - { - "name": "fruitcake/laravel-cors", - "version": "v2.0.5", - "source": { - "type": "git", - "url": "https://github.com/fruitcake/laravel-cors.git", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "shasum": "" - }, - "require": { - "asm89/stack-cors": "^2.0.1", - "illuminate/contracts": "^6|^7|^8|^9", - "illuminate/support": "^6|^7|^8|^9", - "php": ">=7.2", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4.3.4|^5|^6" - }, - "require-dev": { - "laravel/framework": "^6|^7.24|^8", - "orchestra/testbench-dusk": "^4|^5|^6|^7", - "phpunit/phpunit": "^6|^7|^8|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - }, - "laravel": { - "providers": [ - "Fruitcake\\Cors\\CorsServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Fruitcake\\Cors\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fruitcake", - "homepage": "https://fruitcake.nl" - }, - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", - "keywords": [ - "api", - "cors", - "crossdomain", - "laravel" - ], - "support": { - "issues": "https://github.com/fruitcake/laravel-cors/issues", - "source": "https://github.com/fruitcake/laravel-cors/tree/v2.0.5" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "time": "2022-01-03T14:53:04+00:00" - }, - { - "name": "graham-campbell/result-type", - "version": "v1.0.4", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "0690bde05318336c7221785f2a932467f98b64ca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/0690bde05318336c7221785f2a932467f98b64ca", - "reference": "0690bde05318336c7221785f2a932467f98b64ca", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "phpoption/phpoption": "^1.8" - }, - "require-dev": { - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", - "type": "tidelift" - } - ], - "time": "2021-11-21T21:41:47+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "7.4.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.8.3 || ^2.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.4.1", - "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.5 || ^9.3.5", - "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": { - "branch-alias": { - "dev-master": "7.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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.4.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": "2021-12-06T18:43:05+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "1.5.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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/1.5.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "time": "2021-10-22T20:56:57+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.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.4.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.8 || ^9.3.10" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "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.1.0" - }, - "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": "2021-10-06T17:43:30+00:00" - }, - { - "name": "laravel/framework", - "version": "v9.0.1", - "source": { - "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "shasum": "" - }, - "require": { - "doctrine/inflector": "^2.0", - "dragonmantank/cron-expression": "^3.1", - "egulias/email-validator": "^3.1", - "ext-mbstring": "*", - "ext-openssl": "*", - "laravel/serializable-closure": "^1.0", - "league/commonmark": "^2.2", - "league/flysystem": "^3.0", - "monolog/monolog": "^2.0", - "nesbot/carbon": "^2.53.1", - "php": "^8.0.2", - "psr/container": "^1.1.1|^2.0.1", - "psr/log": "^1.0|^2.0|^3.0", - "psr/simple-cache": "^1.0|^2.0|^3.0", - "ramsey/uuid": "^4.2.2", - "symfony/console": "^6.0", - "symfony/error-handler": "^6.0", - "symfony/finder": "^6.0", - "symfony/http-foundation": "^6.0", - "symfony/http-kernel": "^6.0", - "symfony/mailer": "^6.0", - "symfony/mime": "^6.0", - "symfony/process": "^6.0", - "symfony/routing": "^6.0", - "symfony/var-dumper": "^6.0", - "tijsverkoyen/css-to-inline-styles": "^2.2.2", - "vlucas/phpdotenv": "^5.4.1", - "voku/portable-ascii": "^2.0" - }, - "conflict": { - "tightenco/collect": "<5.5.33" - }, - "provide": { - "psr/container-implementation": "1.1|2.0", - "psr/simple-cache-implementation": "1.0|2.0|3.0" - }, - "replace": { - "illuminate/auth": "self.version", - "illuminate/broadcasting": "self.version", - "illuminate/bus": "self.version", - "illuminate/cache": "self.version", - "illuminate/collections": "self.version", - "illuminate/conditionable": "self.version", - "illuminate/config": "self.version", - "illuminate/console": "self.version", - "illuminate/container": "self.version", - "illuminate/contracts": "self.version", - "illuminate/cookie": "self.version", - "illuminate/database": "self.version", - "illuminate/encryption": "self.version", - "illuminate/events": "self.version", - "illuminate/filesystem": "self.version", - "illuminate/hashing": "self.version", - "illuminate/http": "self.version", - "illuminate/log": "self.version", - "illuminate/macroable": "self.version", - "illuminate/mail": "self.version", - "illuminate/notifications": "self.version", - "illuminate/pagination": "self.version", - "illuminate/pipeline": "self.version", - "illuminate/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": { - "aws/aws-sdk-php": "^3.198.1", - "doctrine/dbal": "^2.13.3|^3.1.4", - "fakerphp/faker": "^1.9.2", - "guzzlehttp/guzzle": "^7.2", - "league/flysystem-aws-s3-v3": "^3.0", - "league/flysystem-ftp": "^3.0", - "league/flysystem-sftp-v3": "^3.0", - "mockery/mockery": "^1.4.4", - "orchestra/testbench-core": "^7.0", - "pda/pheanstalk": "^4.0", - "phpstan/phpstan": "^1.0", - "phpunit/phpunit": "^9.5.8", - "predis/predis": "^1.1.9", - "symfony/amazon-mailer": "^6.0", - "symfony/cache": "^6.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.198.1).", - "brianium/paratest": "Required to run tests in parallel (^6.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", - "ext-bcmath": "Required to use the multiple_of validation rule.", - "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.", - "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.2).", - "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-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", - "mockery/mockery": "Required to use mocking (^1.4.4).", - "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).", - "predis/predis": "Required to use the predis connector (^1.1.9).", - "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.0).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^6.0).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.0).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.0).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.0).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.x-dev" - } - }, - "autoload": { - "files": [ - "src/Illuminate/Collections/helpers.php", - "src/Illuminate/Events/functions.php", - "src/Illuminate/Foundation/helpers.php", - "src/Illuminate/Support/helpers.php" - ], - "psr-4": { - "Illuminate\\": "src/Illuminate/", - "Illuminate\\Support\\": [ - "src/Illuminate/Macroable/", - "src/Illuminate/Collections/", - "src/Illuminate/Conditionable/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Laravel Framework.", - "homepage": "https://laravel.com", - "keywords": [ - "framework", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2022-02-09T15:00:05+00:00" - }, - { - "name": "laravel/sanctum", - "version": "v2.14.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/sanctum.git", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/0647a87140c7522e75826cffcadb3ad6e01f71e9", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/contracts": "^6.9|^7.0|^8.0|^9.0", - "illuminate/database": "^6.9|^7.0|^8.0|^9.0", - "illuminate/support": "^6.9|^7.0|^8.0|^9.0", - "php": "^7.2|^8.0" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0", - "phpunit/phpunit": "^8.0|^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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": "2022-01-12T15:07:43+00:00" - }, - { - "name": "laravel/serializable-closure", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/serializable-closure.git", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/65c9faf50d567b65d81764a44526545689e3fe63", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "pestphp/pest": "^1.18", - "phpstan/phpstan": "^0.12.98", - "symfony/var-dumper": "^5.3" - }, - "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": "2022-02-01T16:29:39+00:00" - }, - { - "name": "laravel/tinker", - "version": "v2.7.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/tinker.git", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/5f2f9815b7631b9f586a3de7933c25f9327d4073", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073", - "shasum": "" - }, - "require": { - "illuminate/console": "^6.0|^7.0|^8.0|^9.0", - "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.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", - "phpunit/phpunit": "^8.5.8|^9.3.3" - }, - "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.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.7.0" - }, - "time": "2022-01-10T08:52:49+00:00" - }, - { - "name": "league/commonmark", - "version": "2.2.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/commonmark.git", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "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.15" - }, - "require-dev": { - "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.0", - "commonmark/commonmark.js": "0.30.0", - "composer/package-versions-deprecated": "^1.8", - "erusev/parsedown": "^1.0", - "ext-json": "*", - "github/gfm": "0.29.0", - "michelf/php-markdown": "^1.4", - "phpstan/phpstan": "^0.12.88 || ^1.0.0", - "phpunit/phpunit": "^9.5.5", - "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", - "unleashedtech/php-coding-standard": "^3.1", - "vimeo/psalm": "^4.7.3" - }, - "suggest": { - "symfony/yaml": "v2.3+ required if using the Front Matter extension" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.3-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": "2022-01-25T14:37:33+00:00" - }, - { - "name": "league/config", - "version": "v1.1.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/config.git", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/config/zipball/a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^3.0.1", - "nette/schema": "^1.2", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.90", - "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": "2021-08-14T12:15:32+00:00" - }, - { - "name": "league/flysystem", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9f8b4260031bfef5497477da53dd57b2aaff0e06", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06", - "shasum": "" - }, - "require": { - "ext-json": "*", - "league/mime-type-detection": "^1.0.0", - "php": "^8.0.2" - }, - "conflict": { - "guzzlehttp/guzzle": "<7.0", - "guzzlehttp/ringphp": "<1.1.1", - "symfony/http-client": "<5.2" - }, - "require-dev": { - "async-aws/s3": "^1.5", - "async-aws/simple-s3": "^1.0", - "aws/aws-sdk-php": "^3.198.1", - "composer/semver": "^3.0", - "ext-fileinfo": "*", - "ext-ftp": "*", - "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.5", - "google/cloud-storage": "^1.23", - "phpseclib/phpseclib": "^2.0", - "phpstan/phpstan": "^0.12.26", - "phpunit/phpunit": "^9.5.11", - "sabre/dav": "^4.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.0.3" - }, - "funding": [ - { - "url": "https://offset.earth/frankdejonge", - "type": "custom" - }, - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2022-01-31T19:41:04+00:00" - }, - { - "name": "league/mime-type-detection", - "version": "1.9.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/aa70e813a6ad3d1558fc927863d47309b4c23e69", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.2", - "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" - }, - "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.9.0" - }, - "funding": [ - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2021-11-21T11:48:40+00:00" - }, - { - "name": "monolog/monolog", - "version": "2.3.5", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd4380d6fc37626e2f799f29d91195040137eba9", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "provide": { - "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7", - "graylog2/gelf-php": "^1.4.2", - "mongodb/mongodb": "^1.8", - "php-amqplib/php-amqplib": "~2.4 || ^3", - "php-console/php-console": "^3.1.3", - "phpspec/prophecy": "^1.6.1", - "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5", - "predis/predis": "^1.1", - "rollbar/rollbar": "^1.3", - "ruflin/elastica": ">=0.90@dev", - "swiftmailer/swiftmailer": "^5.3|^6.0" - }, - "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", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "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": "2.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/2.3.5" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" - } - ], - "time": "2021-10-01T21:08:31+00:00" - }, - { - "name": "nesbot/carbon", - "version": "2.56.0", - "source": { - "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1.8 || ^8.0", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "doctrine/dbal": "^2.0 || ^3.0", - "doctrine/orm": "^2.7", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "phpmd/phpmd": "^2.9", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.54 || ^1.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.14", - "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://opencollective.com/Carbon", - "type": "open_collective" - }, - { - "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", - "type": "tidelift" - } - ], - "time": "2022-01-21T17:08:38+00:00" - }, - { - "name": "nette/schema", - "version": "v1.2.2", - "source": { - "type": "git", - "url": "https://github.com/nette/schema.git", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/9a39cef03a5b34c7de64f551538cbba05c2be5df", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df", - "shasum": "" - }, - "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": ">=7.1 <8.2" - }, - "require-dev": { - "nette/tester": "^2.3 || ^2.4", - "phpstan/phpstan-nette": "^0.12", - "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.2" - }, - "time": "2021-10-15T11:40:02+00:00" - }, - { - "name": "nette/utils", - "version": "v3.2.7", - "source": { - "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/0af4e3de4df9f1543534beab255ccf459e7a2c99", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99", - "shasum": "" - }, - "require": { - "php": ">=7.2 <8.2" - }, - "conflict": { - "nette/di": "<3.0.6" - }, - "require-dev": { - "nette/tester": "~2.0", - "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.3" - }, - "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()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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 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/v3.2.7" - }, - "time": "2022-01-24T11:29:14+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.13.2", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", - "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.13.2" - }, - "time": "2021-11-30T19:35:32+00:00" - }, - { - "name": "phpoption/phpoption", - "version": "1.8.1", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-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.8.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", - "type": "tidelift" - } - ], - "time": "2021-12-04T23:24:31+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.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.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": "http://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/tree/master" - }, - "time": "2020-06-29T06:28:15+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.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": "http://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/master" - }, - "time": "2019-04-30T12:38:16+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.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": "http://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/master" - }, - "time": "2016-08-06T14:39: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.1", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "570292577277f06f590635381a7f761a6cf4f026" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/570292577277f06f590635381a7f761a6cf4f026", - "reference": "570292577277f06f590635381a7f761a6cf4f026", - "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" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "3.17.05.02" - }, - "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.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." - }, - "bin": [ - "bin/psysh" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "0.11.x-dev" - } - }, - "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.1" - }, - "time": "2022-01-03T13:58:38+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": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/ramsey/collection.git", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "shasum": "" - }, - "require": { - "php": "^7.3 || ^8", - "symfony/polyfill-php81": "^1.23" - }, - "require-dev": { - "captainhook/captainhook": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "ergebnis/composer-normalize": "^2.6", - "fakerphp/faker": "^1.5", - "hamcrest/hamcrest-php": "^2", - "jangregor/phpstan-prophecy": "^0.8", - "mockery/mockery": "^1.3", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1", - "phpstan/phpstan": "^0.12.32", - "phpstan/phpstan-mockery": "^0.12.5", - "phpstan/phpstan-phpunit": "^0.12.11", - "phpunit/phpunit": "^8.5 || ^9", - "psy/psysh": "^0.10.4", - "slevomat/coding-standard": "^6.3", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.4" - }, - "type": "library", - "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/1.2.2" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "time": "2021-10-10T03:01:02+00:00" - }, - { - "name": "ramsey/uuid", - "version": "4.2.3", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "shasum": "" - }, - "require": { - "brick/math": "^0.8 || ^0.9", - "ext-json": "*", - "php": "^7.2 || ^8.0", - "ramsey/collection": "^1.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php80": "^1.14" - }, - "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", - "moontoast/math": "^1.1", - "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.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-mockery": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^8.5 || ^9", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" - }, - "suggest": { - "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-ctype": "Enables faster processing of character classification using ctype functions.", - "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": { - "branch-alias": { - "dev-main": "4.x-dev" - }, - "captainhook": { - "force-install": true - } - }, - "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "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.2.3" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2021-09-25T23:10:38+00:00" - }, - { - "name": "symfony/console", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/22e8efd019c3270c4f79376234a3f8752cd25490", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.4|^6.0" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/css-selector", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/1955d595c12c111629cc814d3f2a2ff13580508a", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a", - "shasum": "" - }, - "require": { - "php": ">=8.0.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/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-11-01T23:48:49+00:00" - }, - { - "name": "symfony/error-handler", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/20343b3bad7ebafa38138ddcb97290a24722b57b", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" - }, - "bin": [ - "Resources/bin/patch-type-declarations" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to manage errors and ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6472ea2dd415e925b90ca82be64b8bc6157f3934", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/event-dispatcher-contracts": "^2|^3" - }, - "conflict": { - "symfony/dependency-injection": "<5.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^5.4|^6.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/aa5422287b75594b90ee9cd807caf8f0df491385", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/event-dispatcher": "^1" - }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-07-15T12:33:35+00:00" - }, - { - "name": "symfony/finder", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/8661b74dbabc23223f38c9b99d3f8ade71170430", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ad157299ced81a637fade1efcadd688d6deba5c1", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1" - }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/cache": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0" - }, - "suggest": { - "symfony/mime": "To use the file extension guesser" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v6.0.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/error-handler": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", - "symfony/twig-bridge": "<5.4", - "symfony/validator": "<5.4", - "twig/twig": "<2.13" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/process": "^5.4|^6.0", - "symfony/routing": "^5.4|^6.0", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-29T18:12:46+00:00" - }, - { - "name": "symfony/mailer", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mailer.git", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "shasum": "" - }, - "require": { - "egulias/email-validator": "^2.1.10|^3", - "php": ">=8.0.2", - "psr/event-dispatcher": "^1", - "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3" - }, - "conflict": { - "symfony/http-kernel": "<5.4" - }, - "require-dev": { - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/messenger": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/mime", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/2cd9601efd040e56f43360daa68f3c6b0534923a", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "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" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "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.24.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": "2021-10-20T20:35:02+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-11-23T21:10:46+00:00" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44", - "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.23-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.24.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": "2021-09-14T14:02:44+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.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": "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.24.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": "2021-11-30T18:21:41+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-05-27T09:17:38+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:33+00:00" - }, - { - "name": "symfony/polyfill-php81", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:11+00:00" - }, - { - "name": "symfony/process", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/298ed357274c1868c20a0061df256a1250a6c4af", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/routing", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/yaml": "<5.4" - }, - "require-dev": { - "doctrine/annotations": "^1.12", - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/36715ebf9fb9db73db0cb24263c79077c6fe8603", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/container": "^2.0" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "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.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": "2021-11-04T17:53:12+00:00" - }, - { - "name": "symfony/string", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/522144f0c4c004c80d56fa47e40e17028e2eefc2", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.0" - }, - "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/translation-contracts": "^2.0|^3.0", - "symfony/var-exporter": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "files": [ - "Resources/functions.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 an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/translation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/71bb15335798f8c4da110911bcf2d2fead7a430d", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.3|^3.0" - }, - "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" - }, - "provide": { - "symfony/translation-implementation": "2.3|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-07T00:29:03+00:00" - }, - { - "name": "symfony/translation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "suggest": { - "symfony/translation-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - } - }, - "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.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": "2021-09-07T12:43:40+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7b701676fc64f9ef11f9b4870f16b48f66be4834", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<5.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-17T16:30:44+00:00" - }, - { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.4", - "source": { - "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" - } - ], - "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", - "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "support": { - "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" - }, - "time": "2021-12-08T09:12:39+00:00" - }, - { - "name": "vlucas/phpdotenv", - "version": "v5.4.1", - "source": { - "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", - "shasum": "" - }, - "require": { - "ext-pcre": "*", - "graham-campbell/result-type": "^1.0.2", - "php": "^7.1.3 || ^8.0", - "phpoption/phpoption": "^1.8", - "symfony/polyfill-ctype": "^1.23", - "symfony/polyfill-mbstring": "^1.23.1", - "symfony/polyfill-php80": "^1.23.1" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" - }, - "suggest": { - "ext-filter": "Required to use the boolean validator." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.4-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.4.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", - "type": "tidelift" - } - ], - "time": "2021-12-12T23:22:04+00:00" - }, - { - "name": "voku/portable-ascii", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/voku/portable-ascii.git", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/9bd89e83cecdf8c37b64909454249eaed98b2c89", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89", - "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.0" - }, - "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-01-24T18:59:03+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "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.10.0" - }, - "time": "2021-03-09T10:59:23+00:00" - } - ], - "packages-dev": [ - { - "name": "doctrine/instantiator", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.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%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2020-11-10T18:47:58+00:00" - }, - { - "name": "facade/ignition-contracts", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/facade/ignition-contracts.git", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^v2.15.8", - "phpunit/phpunit": "^9.3.11", - "vimeo/psalm": "^3.17.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Facade\\IgnitionContracts\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://flareapp.io", - "role": "Developer" - } - ], - "description": "Solution contracts for Ignition", - "homepage": "https://github.com/facade/ignition-contracts", - "keywords": [ - "contracts", - "flare", - "ignition" - ], - "support": { - "issues": "https://github.com/facade/ignition-contracts/issues", - "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" - }, - "time": "2020-10-16T08:27:54+00:00" - }, - { - "name": "fakerphp/faker", - "version": "v1.19.0", - "source": { - "type": "git", - "url": "https://github.com/FakerPHP/Faker.git", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^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": "*", - "symfony/phpunit-bridge": "^4.4 || ^5.2" - }, - "suggest": { - "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", - "ext-curl": "Required by Faker\\Provider\\Image to download images.", - "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", - "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.19-dev" - } - }, - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "François Zaninotto" - } - ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], - "support": { - "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0" - }, - "time": "2022-02-02T17:38:57+00:00" - }, - { - "name": "filp/whoops", - "version": "2.14.5", - "source": { - "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "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.14.5" - }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "time": "2022-01-07T12:00:00+00:00" - }, - { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "shasum": "" - }, - "require": { - "php": "^5.3|^7.0|^8.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" - }, - "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "classmap": [ - "hamcrest" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "This is the PHP port of Hamcrest Matchers", - "keywords": [ - "test" - ], - "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" - }, - "time": "2020-07-09T08:09:16+00:00" - }, - { - "name": "laravel/sail", - "version": "v1.13.2", - "source": { - "type": "git", - "url": "https://github.com/laravel/sail.git", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.0|^9.0", - "illuminate/contracts": "^8.0|^9.0", - "illuminate/support": "^8.0|^9.0", - "php": "^7.3|^8.0" - }, - "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": "2022-02-08T14:14:12+00:00" - }, - { - "name": "mockery/mockery", - "version": "1.5.0", - "source": { - "type": "git", - "url": "https://github.com/mockery/mockery.git", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "shasum": "" - }, - "require": { - "hamcrest/hamcrest-php": "^2.0.1", - "lib-pcre": ">=7.0", - "php": "^7.3 || ^8.0" - }, - "conflict": { - "phpunit/phpunit": "<8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-0": { - "Mockery": "library/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" - } - ], - "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": { - "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.5.0" - }, - "time": "2022-01-20T13:18:17+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.10.2", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "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.10.2" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2020-11-13T09:40:50+00:00" - }, - { - "name": "nunomaduro/collision", - "version": "v6.1.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/collision.git", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "shasum": "" - }, - "require": { - "facade/ignition-contracts": "^1.0.2", - "filp/whoops": "^2.14.5", - "php": "^8.0.0", - "symfony/console": "^6.0.2" - }, - "require-dev": { - "brianium/paratest": "^6.4.1", - "laravel/framework": "^9.0", - "nunomaduro/larastan": "^1.0.2", - "nunomaduro/mock-final-classes": "^1.1.0", - "orchestra/testbench": "^7.0.0", - "phpunit/phpunit": "^9.5.11" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "6.x-dev" - }, - "laravel": { - "providers": [ - "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" - ] - } - }, - "autoload": { - "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": "2022-01-18T17:49:08+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.1.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/15a90844ad40f127afd244c0cad228de2a80052a", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a", - "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.1.1" - }, - "time": "2022-02-07T21:56:48+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.6.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "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.6.0" - }, - "time": "2022-01-04T19:58:01+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" - }, - "time": "2021-12-08T12:19:24+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "9.2.10", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d5850aaf931743067f4bfc1ae4cbd06468400687", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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 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", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.10" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-05T09:12:13+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "3.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-02T12:48:52+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "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/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:58:55+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T05:33:50+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.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/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:16:10+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "9.5.13", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/597cb647654ede35e43b137926dfdfef0fb11743", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.3.1", - "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": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.7", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", - "sebastian/version": "^3.0.2" - }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.13" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-01-24T07:33:35+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:08:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "1.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:08:54+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:30:19+00:00" - }, - { - "name": "sebastian/comparator", - "version": "4.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:49:45+00:00" - }, - { - "name": "sebastian/complexity", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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 calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:52:27+00:00" - }, - { - "name": "sebastian/diff", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:10:38+00:00" - }, - { - "name": "sebastian/environment", - "version": "5.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-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": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:52:38+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "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", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-11-11T14:18:36+00:00" - }, - { - "name": "sebastian/global-state", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-11T13:31:12+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-28T06:42:11+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "http://www.github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:17:30+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:45:17+00:00" - }, - { - "name": "sebastian/type", - "version": "2.3.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-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/2.3.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-15T12:49:02+00:00" - }, - { - "name": "sebastian/version", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:39:44+00:00" - }, - { - "name": "spatie/backtrace", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/backtrace.git", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "ext-json": "*", - "phpunit/phpunit": "^9.3", - "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": { - "issues": "https://github.com/spatie/backtrace/issues", - "source": "https://github.com/spatie/backtrace/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/sponsors/spatie", - "type": "github" - }, - { - "url": "https://spatie.be/open-source/support-us", - "type": "other" - } - ], - "time": "2021-11-09T10:57:15+00:00" - }, - { - "name": "spatie/flare-client-php", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/flare-client-php.git", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "shasum": "" - }, - "require": { - "illuminate/pipeline": "^8.0|^9.0", - "php": "^8.0", - "spatie/backtrace": "^1.2", - "symfony/http-foundation": "^5.0|^6.0", - "symfony/mime": "^5.2|^6.0", - "symfony/process": "^5.2|^6.0", - "symfony/var-dumper": "^5.2|^6.0" - }, - "require-dev": { - "dms/phpunit-arraysubset-asserts": "^0.3.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/phpunit-snapshot-assertions": "^4.0" - }, - "type": "library", - "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.0.1" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2022-02-04T15:21:00+00:00" - }, - { - "name": "spatie/ignition", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/spatie/ignition.git", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/d2d5ba823af3004268556e87dfc94449e4159f5a", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "monolog/monolog": "^2.0", - "php": "^8.0", - "spatie/flare-client-php": "^1.0", - "symfony/console": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "mockery/mockery": "^1.4", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/ray": "^1.32", - "symfony/process": "^5.4|^6.0" - }, - "type": "library", - "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": "2022-01-19T12:57:41+00:00" - }, - { - "name": "spatie/laravel-ignition", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/68250225a9f83b086462c2af1b1139dfde48fbd2", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*", - "illuminate/support": "^8.77|^9.0", - "monolog/monolog": "^2.3", - "php": "^8.0", - "spatie/flare-client-php": "^1.0.1", - "spatie/ignition": "^1.0", - "symfony/console": "^5.0|^6.0", - "symfony/var-dumper": "^5.0|^6.0" - }, - "require-dev": { - "filp/whoops": "^2.14", - "livewire/livewire": "^2.8|dev-develop", - "mockery/mockery": "^1.4", - "nunomaduro/larastan": "^1.0", - "orchestra/testbench": "^6.23|^7.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/laravel-ray": "^1.27" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Spatie\\LaravelIgnition\\IgnitionServiceProvider" - ], - "aliases": { - "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" - } - } - }, - "autoload": { - "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": "2022-02-04T15:25:56+00:00" - }, - { - "name": "squizlabs/php_codesniffer", - "version": "3.6.2", - "source": { - "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", - "shasum": "" - }, - "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.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": "lead" - } - ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", - "keywords": [ - "phpcs", - "standards" - ], - "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" - }, - "time": "2021-12-12T21:44:58+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2021-07-28T10:34:58+00:00" - } - ], - "aliases": [], - "minimum-stability": "dev", - "stability-flags": [], - "prefer-stable": true, - "prefer-lowest": false, - "platform": { - "php": "^8.0" - }, - "platform-dev": [], - "plugin-api-version": "2.1.0" -} diff --git a/Chapter11/onlineStore/config/app.php b/Chapter11/onlineStore/config/app.php deleted file mode 100644 index 1941d7c..0000000 --- a/Chapter11/onlineStore/config/app.php +++ /dev/null @@ -1,197 +0,0 @@ - env('APP_NAME', 'Laravel'), - - /* - |-------------------------------------------------------------------------- - | Application Environment - |-------------------------------------------------------------------------- - | - | This value determines the "environment" your application is currently - | running in. This may determine how you prefer to configure various - | services the application utilizes. Set this in your ".env" file. - | - */ - - 'env' => env('APP_ENV', 'production'), - - /* - |-------------------------------------------------------------------------- - | Application Debug Mode - |-------------------------------------------------------------------------- - | - | When your application is in debug mode, detailed error messages with - | stack traces will be shown on every error that occurs within your - | application. If disabled, a simple generic error page is shown. - | - */ - - 'debug' => (bool) env('APP_DEBUG', false), - - /* - |-------------------------------------------------------------------------- - | Application URL - |-------------------------------------------------------------------------- - | - | This URL is used by the console to properly generate URLs when using - | the Artisan command line tool. You should set this to the root of - | your application so that it is used when running Artisan tasks. - | - */ - - 'url' => env('APP_URL', 'http://localhost'), - - 'asset_url' => env('ASSET_URL', null), - - /* - |-------------------------------------------------------------------------- - | 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', - - /* - |-------------------------------------------------------------------------- - | 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' => [ - - /* - * Laravel Framework Service Providers... - */ - Illuminate\Auth\AuthServiceProvider::class, - Illuminate\Broadcasting\BroadcastServiceProvider::class, - Illuminate\Bus\BusServiceProvider::class, - Illuminate\Cache\CacheServiceProvider::class, - Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, - Illuminate\Cookie\CookieServiceProvider::class, - Illuminate\Database\DatabaseServiceProvider::class, - Illuminate\Encryption\EncryptionServiceProvider::class, - Illuminate\Filesystem\FilesystemServiceProvider::class, - Illuminate\Foundation\Providers\FoundationServiceProvider::class, - Illuminate\Hashing\HashServiceProvider::class, - Illuminate\Mail\MailServiceProvider::class, - Illuminate\Notifications\NotificationServiceProvider::class, - Illuminate\Pagination\PaginationServiceProvider::class, - Illuminate\Pipeline\PipelineServiceProvider::class, - Illuminate\Queue\QueueServiceProvider::class, - Illuminate\Redis\RedisServiceProvider::class, - Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, - Illuminate\Session\SessionServiceProvider::class, - Illuminate\Translation\TranslationServiceProvider::class, - Illuminate\Validation\ValidationServiceProvider::class, - Illuminate\View\ViewServiceProvider::class, - - /* - * 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, - - ], - - /* - |-------------------------------------------------------------------------- - | 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([ - // ... - ])->toArray(), - -]; diff --git a/Chapter11/onlineStore/config/auth.php b/Chapter11/onlineStore/config/auth.php deleted file mode 100644 index d8c6cee..0000000 --- a/Chapter11/onlineStore/config/auth.php +++ /dev/null @@ -1,111 +0,0 @@ - [ - '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 expire 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. - | - */ - - 'passwords' => [ - 'users' => [ - 'provider' => 'users', - 'table' => 'password_resets', - '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/Chapter11/onlineStore/config/broadcasting.php b/Chapter11/onlineStore/config/broadcasting.php deleted file mode 100644 index 67fcbbd..0000000 --- a/Chapter11/onlineStore/config/broadcasting.php +++ /dev/null @@ -1,67 +0,0 @@ - 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'), - 'useTLS' => true, - ], - '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/Chapter11/onlineStore/config/cache.php b/Chapter11/onlineStore/config/cache.php deleted file mode 100644 index 8736c7a..0000000 --- a/Chapter11/onlineStore/config/cache.php +++ /dev/null @@ -1,110 +0,0 @@ - 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'), - ], - - '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 a RAM based store such as APC or Memcached, there might - | be other applications utilizing the same cache. So, we'll specify a - | value to get prefixed to all our keys so we can avoid collisions. - | - */ - - 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'), - -]; diff --git a/Chapter11/onlineStore/config/cors.php b/Chapter11/onlineStore/config/cors.php deleted file mode 100644 index 8a39e6d..0000000 --- a/Chapter11/onlineStore/config/cors.php +++ /dev/null @@ -1,34 +0,0 @@ - ['api/*', 'sanctum/csrf-cookie'], - - 'allowed_methods' => ['*'], - - 'allowed_origins' => ['*'], - - 'allowed_origins_patterns' => [], - - 'allowed_headers' => ['*'], - - 'exposed_headers' => [], - - 'max_age' => 0, - - 'supports_credentials' => false, - -]; diff --git a/Chapter11/onlineStore/config/database.php b/Chapter11/onlineStore/config/database.php deleted file mode 100644 index 0faebae..0000000 --- a/Chapter11/onlineStore/config/database.php +++ /dev/null @@ -1,147 +0,0 @@ - env('DB_CONNECTION', 'mysql'), - - /* - |-------------------------------------------------------------------------- - | Database Connections - |-------------------------------------------------------------------------- - | - | Here are each of the database connections setup for your application. - | Of course, examples of configuring each database platform that is - | supported by Laravel is shown below to make development simple. - | - | - | All database work in Laravel is done through the PHP PDO facilities - | so make sure you have the driver for your particular database of - | choice installed on your machine before you begin development. - | - */ - - 'connections' => [ - - 'sqlite' => [ - 'driver' => 'sqlite', - 'url' => env('DATABASE_URL'), - 'database' => env('DB_DATABASE', database_path('database.sqlite')), - 'prefix' => '', - 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), - ], - - 'mysql' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '3306'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'unix_socket' => env('DB_SOCKET', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - 'pgsql' => [ - 'driver' => 'pgsql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '5432'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - 'search_path' => 'public', - 'sslmode' => 'prefer', - ], - - 'sqlsrv' => [ - 'driver' => 'sqlsrv', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', 'localhost'), - 'port' => env('DB_PORT', '1433'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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'), - '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'), - 'password' => env('REDIS_PASSWORD'), - 'port' => env('REDIS_PORT', '6379'), - 'database' => env('REDIS_CACHE_DB', '1'), - ], - - ], - -]; diff --git a/Chapter11/onlineStore/config/filesystems.php b/Chapter11/onlineStore/config/filesystems.php deleted file mode 100644 index cf5abce..0000000 --- a/Chapter11/onlineStore/config/filesystems.php +++ /dev/null @@ -1,73 +0,0 @@ - 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 setup for each driver as an example of the required options. - | - | Supported Drivers: "local", "ftp", "sftp", "s3" - | - */ - - 'disks' => [ - - 'local' => [ - 'driver' => 'local', - 'root' => storage_path('app'), - ], - - 'public' => [ - 'driver' => 'local', - 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', - 'visibility' => 'public', - ], - - '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), - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter11/onlineStore/config/hashing.php b/Chapter11/onlineStore/config/hashing.php deleted file mode 100644 index bcd3be4..0000000 --- a/Chapter11/onlineStore/config/hashing.php +++ /dev/null @@ -1,52 +0,0 @@ - '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/Chapter11/onlineStore/config/logging.php b/Chapter11/onlineStore/config/logging.php deleted file mode 100644 index fefe088..0000000 --- a/Chapter11/onlineStore/config/logging.php +++ /dev/null @@ -1,119 +0,0 @@ - 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' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), - - /* - |-------------------------------------------------------------------------- - | 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'), - ], - - 'daily' => [ - 'driver' => 'daily', - 'path' => storage_path('logs/laravel.log'), - 'level' => env('LOG_LEVEL', 'debug'), - 'days' => 14, - ], - - 'slack' => [ - 'driver' => 'slack', - 'url' => env('LOG_SLACK_WEBHOOK_URL'), - 'username' => 'Laravel Log', - 'emoji' => ':boom:', - 'level' => env('LOG_LEVEL', 'critical'), - ], - - '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'), - ], - ], - - 'stderr' => [ - 'driver' => 'monolog', - 'level' => env('LOG_LEVEL', 'debug'), - 'handler' => StreamHandler::class, - 'formatter' => env('LOG_STDERR_FORMATTER'), - 'with' => [ - 'stream' => 'php://stderr', - ], - ], - - 'syslog' => [ - 'driver' => 'syslog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'errorlog' => [ - 'driver' => 'errorlog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'null' => [ - 'driver' => 'monolog', - 'handler' => NullHandler::class, - ], - - 'emergency' => [ - 'path' => storage_path('logs/laravel.log'), - ], - ], - -]; diff --git a/Chapter11/onlineStore/config/mail.php b/Chapter11/onlineStore/config/mail.php deleted file mode 100644 index 87b6fe3..0000000 --- a/Chapter11/onlineStore/config/mail.php +++ /dev/null @@ -1,117 +0,0 @@ - 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", - | "postmark", "log", "array", "failover" - | - */ - - 'mailers' => [ - 'smtp' => [ - 'transport' => 'smtp', - '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, - ], - - 'ses' => [ - 'transport' => 'ses', - ], - - 'mailgun' => [ - 'transport' => 'mailgun', - ], - - 'postmark' => [ - 'transport' => 'postmark', - ], - - 'sendmail' => [ - 'transport' => 'sendmail', - 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -t -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/Chapter11/onlineStore/config/queue.php b/Chapter11/onlineStore/config/queue.php deleted file mode 100644 index 25ea5a8..0000000 --- a/Chapter11/onlineStore/config/queue.php +++ /dev/null @@ -1,93 +0,0 @@ - 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, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter11/onlineStore/config/sanctum.php b/Chapter11/onlineStore/config/sanctum.php deleted file mode 100644 index 9281c92..0000000 --- a/Chapter11/onlineStore/config/sanctum.php +++ /dev/null @@ -1,65 +0,0 @@ - explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( - '%s%s', - 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', - env('APP_URL') ? ','.parse_url(env('APP_URL'), PHP_URL_HOST) : '' - ))), - - /* - |-------------------------------------------------------------------------- - | 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/Chapter11/onlineStore/config/services.php b/Chapter11/onlineStore/config/services.php deleted file mode 100644 index 2a1d616..0000000 --- a/Chapter11/onlineStore/config/services.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - 'domain' => env('MAILGUN_DOMAIN'), - 'secret' => env('MAILGUN_SECRET'), - 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), - ], - - '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/Chapter11/onlineStore/config/session.php b/Chapter11/onlineStore/config/session.php deleted file mode 100644 index 8fed97c..0000000 --- a/Chapter11/onlineStore/config/session.php +++ /dev/null @@ -1,201 +0,0 @@ - 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/Chapter11/onlineStore/config/view.php b/Chapter11/onlineStore/config/view.php deleted file mode 100644 index 22b8a18..0000000 --- a/Chapter11/onlineStore/config/view.php +++ /dev/null @@ -1,36 +0,0 @@ - [ - 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/Chapter11/onlineStore/database/.gitignore b/Chapter11/onlineStore/database/.gitignore deleted file mode 100644 index 9b19b93..0000000 --- a/Chapter11/onlineStore/database/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.sqlite* diff --git a/Chapter11/onlineStore/database/factories/UserFactory.php b/Chapter11/onlineStore/database/factories/UserFactory.php deleted file mode 100644 index d6ca926..0000000 --- a/Chapter11/onlineStore/database/factories/UserFactory.php +++ /dev/null @@ -1,42 +0,0 @@ - - */ -class UserFactory extends Factory -{ - /** - * Define the model's default state. - * - * @return array - */ - public function definition() - { - return [ - 'name' => $this->faker->name(), - 'email' => $this->faker->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. - * - * @return \Illuminate\Database\Eloquent\Factories\Factory - */ - public function unverified() - { - return $this->state(function (array $attributes) { - return [ - 'email_verified_at' => null, - ]; - }); - } -} diff --git a/Chapter11/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php b/Chapter11/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php deleted file mode 100644 index cf6b776..0000000 --- a/Chapter11/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->string('name'); - $table->string('email')->unique(); - $table->timestamp('email_verified_at')->nullable(); - $table->string('password'); - $table->rememberToken(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('users'); - } -}; diff --git a/Chapter11/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php b/Chapter11/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php deleted file mode 100644 index fcacb80..0000000 --- a/Chapter11/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php +++ /dev/null @@ -1,32 +0,0 @@ -string('email')->index(); - $table->string('token'); - $table->timestamp('created_at')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('password_resets'); - } -}; diff --git a/Chapter11/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/Chapter11/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php deleted file mode 100644 index 1719198..0000000 --- a/Chapter11/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php +++ /dev/null @@ -1,36 +0,0 @@ -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. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('failed_jobs'); - } -}; diff --git a/Chapter11/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/Chapter11/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php deleted file mode 100644 index fd235f8..0000000 --- a/Chapter11/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->morphs('tokenable'); - $table->string('name'); - $table->string('token', 64)->unique(); - $table->text('abilities')->nullable(); - $table->timestamp('last_used_at')->nullable(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('personal_access_tokens'); - } -}; diff --git a/Chapter11/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php b/Chapter11/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php deleted file mode 100644 index 2eecdc2..0000000 --- a/Chapter11/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php +++ /dev/null @@ -1,35 +0,0 @@ -id(); - $table->string('name'); - $table->text('description'); - $table->string('image'); - $table->integer('price'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('products'); - } -}; diff --git a/Chapter11/onlineStore/database/seeders/DatabaseSeeder.php b/Chapter11/onlineStore/database/seeders/DatabaseSeeder.php deleted file mode 100644 index 71f673f..0000000 --- a/Chapter11/onlineStore/database/seeders/DatabaseSeeder.php +++ /dev/null @@ -1,19 +0,0 @@ -create(); - } -} diff --git a/Chapter11/onlineStore/lang/en.json b/Chapter11/onlineStore/lang/en.json deleted file mode 100644 index 577680d..0000000 --- a/Chapter11/onlineStore/lang/en.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "The :attribute must contain at least one letter.": "The :attribute must contain at least one letter.", - "The :attribute must contain at least one number.": "The :attribute must contain at least one number.", - "The :attribute must contain at least one symbol.": "The :attribute must contain at least one symbol.", - "The :attribute must contain at least one uppercase and one lowercase letter.": "The :attribute must contain at least one uppercase and one lowercase letter.", - "The given :attribute has appeared in a data leak. Please choose a different :attribute.": "The given :attribute has appeared in a data leak. Please choose a different :attribute." -} diff --git a/Chapter11/onlineStore/lang/en/auth.php b/Chapter11/onlineStore/lang/en/auth.php deleted file mode 100644 index 6598e2c..0000000 --- a/Chapter11/onlineStore/lang/en/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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/Chapter11/onlineStore/lang/en/pagination.php b/Chapter11/onlineStore/lang/en/pagination.php deleted file mode 100644 index d481411..0000000 --- a/Chapter11/onlineStore/lang/en/pagination.php +++ /dev/null @@ -1,19 +0,0 @@ - '« Previous', - 'next' => 'Next »', - -]; diff --git a/Chapter11/onlineStore/lang/en/passwords.php b/Chapter11/onlineStore/lang/en/passwords.php deleted file mode 100644 index 2345a56..0000000 --- a/Chapter11/onlineStore/lang/en/passwords.php +++ /dev/null @@ -1,22 +0,0 @@ - '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/Chapter11/onlineStore/lang/en/validation.php b/Chapter11/onlineStore/lang/en/validation.php deleted file mode 100644 index 783003c..0000000 --- a/Chapter11/onlineStore/lang/en/validation.php +++ /dev/null @@ -1,163 +0,0 @@ - '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' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - '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' => [ - 'numeric' => 'The :attribute must be greater than :value.', - 'file' => 'The :attribute must be greater than :value kilobytes.', - 'string' => 'The :attribute must be greater than :value characters.', - 'array' => 'The :attribute must have more than :value items.', - ], - 'gte' => [ - 'numeric' => 'The :attribute must be greater than or equal to :value.', - 'file' => 'The :attribute must be greater than or equal to :value kilobytes.', - 'string' => 'The :attribute must be greater than or equal to :value characters.', - 'array' => 'The :attribute must have :value items or more.', - ], - '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' => [ - 'numeric' => 'The :attribute must be less than :value.', - 'file' => 'The :attribute must be less than :value kilobytes.', - 'string' => 'The :attribute must be less than :value characters.', - 'array' => 'The :attribute must have less than :value items.', - ], - 'lte' => [ - 'numeric' => 'The :attribute must be less than or equal to :value.', - 'file' => 'The :attribute must be less than or equal to :value kilobytes.', - 'string' => 'The :attribute must be less than or equal to :value characters.', - 'array' => 'The :attribute must not have more than :value items.', - ], - 'mac_address' => 'The :attribute must be a valid MAC address.', - 'max' => [ - 'numeric' => 'The :attribute must not be greater than :max.', - 'file' => 'The :attribute must not be greater than :max kilobytes.', - 'string' => 'The :attribute must not be greater than :max characters.', - 'array' => 'The :attribute must not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - '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.', - 'password' => 'The password is incorrect.', - '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' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - '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/Chapter11/onlineStore/package.json b/Chapter11/onlineStore/package.json deleted file mode 100644 index 7a9aecd..0000000 --- a/Chapter11/onlineStore/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "private": true, - "scripts": { - "dev": "npm run development", - "development": "mix", - "watch": "mix watch", - "watch-poll": "mix watch -- --watch-options-poll=1000", - "hot": "mix watch --hot", - "prod": "npm run production", - "production": "mix --production" - }, - "devDependencies": { - "axios": "^0.25", - "laravel-mix": "^6.0.6", - "lodash": "^4.17.19", - "postcss": "^8.1.14" - } -} diff --git a/Chapter11/onlineStore/phpcs.xml b/Chapter11/onlineStore/phpcs.xml deleted file mode 100644 index a1cf2b6..0000000 --- a/Chapter11/onlineStore/phpcs.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - The coding standard for the Online Store project - - app/ - config/ - database/ - routes/ - */migrations/* - diff --git a/Chapter11/onlineStore/phpunit.xml b/Chapter11/onlineStore/phpunit.xml deleted file mode 100644 index 2ac86a1..0000000 --- a/Chapter11/onlineStore/phpunit.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - ./tests/Unit - - - ./tests/Feature - - - - - ./app - - - - - - - - - - - - - - diff --git a/Chapter11/onlineStore/public/.htaccess b/Chapter11/onlineStore/public/.htaccess deleted file mode 100644 index 3aec5e2..0000000 --- a/Chapter11/onlineStore/public/.htaccess +++ /dev/null @@ -1,21 +0,0 @@ - - - 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/Chapter11/onlineStore/public/css/app.css b/Chapter11/onlineStore/public/css/app.css deleted file mode 100644 index cabac36..0000000 --- a/Chapter11/onlineStore/public/css/app.css +++ /dev/null @@ -1,20 +0,0 @@ -.bg-secondary { - background-color: #2c3e50 !important; -} - -.copyright { - background-color: #1a252f; -} - -.bg-primary { - background-color: #1abc9c !important; -} - -nav{ - font-weight: 700; -} - -.img-card{ - height: 18vw; - object-fit: cover; -} diff --git a/Chapter11/onlineStore/public/favicon.ico b/Chapter11/onlineStore/public/favicon.ico deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter11/onlineStore/public/img/game.png b/Chapter11/onlineStore/public/img/game.png deleted file mode 100644 index 85420e8bbc16098bf26b4ee63bde0e91a19d1f2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25896 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 cz>% diff --git a/Chapter11/onlineStore/public/img/safe.png b/Chapter11/onlineStore/public/img/safe.png deleted file mode 100644 index 445942c707af53210931f9f4f99f6d3cb69e5d89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19240 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
    w==XB0?3|p=#`o%NsudE(E-U#KS3Snw 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 o>ir+C;RN10sIS0&a;pmake(Kernel::class); - -$response = $kernel->handle( - $request = Request::capture() -)->send(); - -$kernel->terminate($request, $response); diff --git a/Chapter11/onlineStore/public/robots.txt b/Chapter11/onlineStore/public/robots.txt deleted file mode 100644 index eb05362..0000000 --- a/Chapter11/onlineStore/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: diff --git a/Chapter11/onlineStore/resources/css/app.css b/Chapter11/onlineStore/resources/css/app.css deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter11/onlineStore/resources/js/app.js b/Chapter11/onlineStore/resources/js/app.js deleted file mode 100644 index 40c55f6..0000000 --- a/Chapter11/onlineStore/resources/js/app.js +++ /dev/null @@ -1 +0,0 @@ -require('./bootstrap'); diff --git a/Chapter11/onlineStore/resources/js/bootstrap.js b/Chapter11/onlineStore/resources/js/bootstrap.js deleted file mode 100644 index 6922577..0000000 --- a/Chapter11/onlineStore/resources/js/bootstrap.js +++ /dev/null @@ -1,28 +0,0 @@ -window._ = require('lodash'); - -/** - * 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 = require('axios'); - -window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; - -/** - * 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'; - -// window.Pusher = require('pusher-js'); - -// window.Echo = new Echo({ -// broadcaster: 'pusher', -// key: process.env.MIX_PUSHER_APP_KEY, -// cluster: process.env.MIX_PUSHER_APP_CLUSTER, -// forceTLS: true -// }); diff --git a/Chapter11/onlineStore/resources/views/home/about.blade.php b/Chapter11/onlineStore/resources/views/home/about.blade.php deleted file mode 100644 index f79abf3..0000000 --- a/Chapter11/onlineStore/resources/views/home/about.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    -
    -
    -

    {{ $viewData["description"] }}

    -
    -
    -

    {{ $viewData["author"] }}

    -
    -
    -
    -@endsection diff --git a/Chapter11/onlineStore/resources/views/home/index.blade.php b/Chapter11/onlineStore/resources/views/home/index.blade.php deleted file mode 100644 index 1affb20..0000000 --- a/Chapter11/onlineStore/resources/views/home/index.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('content') -
    -
    - -
    -
    - -
    -
    - -
    -
    -@endsection diff --git a/Chapter11/onlineStore/resources/views/layouts/app.blade.php b/Chapter11/onlineStore/resources/views/layouts/app.blade.php deleted file mode 100644 index eee7fcb..0000000 --- a/Chapter11/onlineStore/resources/views/layouts/app.blade.php +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - @yield('title', 'Online Store') - - - -
    - -
    -
    -

    @yield('subtitle', 'A Laravel Online Store')

    -
    -
    - - -
    - @yield('content') -
    - - - - - - - diff --git a/Chapter11/onlineStore/resources/views/product/index.blade.php b/Chapter11/onlineStore/resources/views/product/index.blade.php deleted file mode 100644 index 1f766f1..0000000 --- a/Chapter11/onlineStore/resources/views/product/index.blade.php +++ /dev/null @@ -1,18 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    - @foreach ($viewData["products"] as $product) -
    - -
    - @endforeach -
    -@endsection diff --git a/Chapter11/onlineStore/resources/views/product/show.blade.php b/Chapter11/onlineStore/resources/views/product/show.blade.php deleted file mode 100644 index 01d056e..0000000 --- a/Chapter11/onlineStore/resources/views/product/show.blade.php +++ /dev/null @@ -1,21 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    -
    -
    - -
    -
    -
    -
    - {{ $viewData["product"]["name"] }} (${{ $viewData["product"]["price"] }}) -
    -

    {{ $viewData["product"]["description"] }}

    -

    Add to Cart

    -
    -
    -
    -
    -@endsection diff --git a/Chapter11/onlineStore/resources/views/welcome.blade.php b/Chapter11/onlineStore/resources/views/welcome.blade.php deleted file mode 100644 index c587c72..0000000 --- a/Chapter11/onlineStore/resources/views/welcome.blade.php +++ /dev/null @@ -1,7 +0,0 @@ -@extends('layouts.app') -@section('title', 'Home Page - Online Store') -@section('content') -
    - Welcome to the application -
    -@endsection \ No newline at end of file diff --git a/Chapter11/onlineStore/routes/api.php b/Chapter11/onlineStore/routes/api.php deleted file mode 100644 index eb6fa48..0000000 --- a/Chapter11/onlineStore/routes/api.php +++ /dev/null @@ -1,19 +0,0 @@ -get('/user', function (Request $request) { - return $request->user(); -}); diff --git a/Chapter11/onlineStore/routes/channels.php b/Chapter11/onlineStore/routes/channels.php deleted file mode 100644 index 5d451e1..0000000 --- a/Chapter11/onlineStore/routes/channels.php +++ /dev/null @@ -1,18 +0,0 @@ -id === (int) $id; -}); diff --git a/Chapter11/onlineStore/routes/console.php b/Chapter11/onlineStore/routes/console.php deleted file mode 100644 index e05f4c9..0000000 --- a/Chapter11/onlineStore/routes/console.php +++ /dev/null @@ -1,19 +0,0 @@ -comment(Inspiring::quote()); -})->purpose('Display an inspiring quote'); diff --git a/Chapter11/onlineStore/routes/web.php b/Chapter11/onlineStore/routes/web.php deleted file mode 100644 index 0f5e40f..0000000 --- a/Chapter11/onlineStore/routes/web.php +++ /dev/null @@ -1,19 +0,0 @@ -name("home.index"); -Route::get('/about', 'App\Http\Controllers\HomeController@about')->name("home.about"); -Route::get('/products', 'App\Http\Controllers\ProductController@index')->name("product.index"); -Route::get('/products/{id}', 'App\Http\Controllers\ProductController@show')->name("product.show"); diff --git a/Chapter11/onlineStore/storage/app/.gitignore b/Chapter11/onlineStore/storage/app/.gitignore deleted file mode 100644 index 8f4803c..0000000 --- a/Chapter11/onlineStore/storage/app/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!public/ -!.gitignore diff --git a/Chapter11/onlineStore/storage/app/public/.gitignore b/Chapter11/onlineStore/storage/app/public/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter11/onlineStore/storage/app/public/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter11/onlineStore/storage/framework/.gitignore b/Chapter11/onlineStore/storage/framework/.gitignore deleted file mode 100644 index 05c4471..0000000 --- a/Chapter11/onlineStore/storage/framework/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -compiled.php -config.php -down -events.scanned.php -maintenance.php -routes.php -routes.scanned.php -schedule-* -services.json diff --git a/Chapter11/onlineStore/storage/framework/cache/.gitignore b/Chapter11/onlineStore/storage/framework/cache/.gitignore deleted file mode 100644 index 01e4a6c..0000000 --- a/Chapter11/onlineStore/storage/framework/cache/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!data/ -!.gitignore diff --git a/Chapter11/onlineStore/storage/framework/cache/data/.gitignore b/Chapter11/onlineStore/storage/framework/cache/data/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter11/onlineStore/storage/framework/cache/data/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter11/onlineStore/storage/framework/sessions/.gitignore b/Chapter11/onlineStore/storage/framework/sessions/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter11/onlineStore/storage/framework/sessions/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter11/onlineStore/storage/framework/testing/.gitignore b/Chapter11/onlineStore/storage/framework/testing/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter11/onlineStore/storage/framework/testing/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter11/onlineStore/storage/framework/views/.gitignore b/Chapter11/onlineStore/storage/framework/views/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter11/onlineStore/storage/framework/views/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter11/onlineStore/storage/logs/.gitignore b/Chapter11/onlineStore/storage/logs/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter11/onlineStore/storage/logs/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter11/onlineStore/tests/CreatesApplication.php b/Chapter11/onlineStore/tests/CreatesApplication.php deleted file mode 100644 index 547152f..0000000 --- a/Chapter11/onlineStore/tests/CreatesApplication.php +++ /dev/null @@ -1,22 +0,0 @@ -make(Kernel::class)->bootstrap(); - - return $app; - } -} diff --git a/Chapter11/onlineStore/tests/Feature/ExampleTest.php b/Chapter11/onlineStore/tests/Feature/ExampleTest.php deleted file mode 100644 index 78ccc21..0000000 --- a/Chapter11/onlineStore/tests/Feature/ExampleTest.php +++ /dev/null @@ -1,21 +0,0 @@ -get('/'); - - $response->assertStatus(200); - } -} diff --git a/Chapter11/onlineStore/tests/TestCase.php b/Chapter11/onlineStore/tests/TestCase.php deleted file mode 100644 index 2932d4a..0000000 --- a/Chapter11/onlineStore/tests/TestCase.php +++ /dev/null @@ -1,10 +0,0 @@ -assertTrue(true); - } -} diff --git a/Chapter11/onlineStore/webpack.mix.js b/Chapter11/onlineStore/webpack.mix.js deleted file mode 100644 index 2a22dc1..0000000 --- a/Chapter11/onlineStore/webpack.mix.js +++ /dev/null @@ -1,17 +0,0 @@ -const mix = require('laravel-mix'); - -/* - |-------------------------------------------------------------------------- - | Mix Asset Management - |-------------------------------------------------------------------------- - | - | Mix provides a clean, fluent API for defining some Webpack build steps - | for your Laravel applications. By default, we are compiling the CSS - | file for the application as well as bundling up all the JS files. - | - */ - -mix.js('resources/js/app.js', 'public/js') - .postCss('resources/css/app.css', 'public/css', [ - // - ]); diff --git a/Chapter12/onlineStore/.editorconfig b/Chapter12/onlineStore/.editorconfig deleted file mode 100644 index 1671c9b..0000000 --- a/Chapter12/onlineStore/.editorconfig +++ /dev/null @@ -1,18 +0,0 @@ -root = true - -[*] -charset = utf-8 -end_of_line = lf -insert_final_newline = true -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true - -[*.md] -trim_trailing_whitespace = false - -[*.{yml,yaml}] -indent_size = 2 - -[docker-compose.yml] -indent_size = 4 diff --git a/Chapter12/onlineStore/.env.example b/Chapter12/onlineStore/.env.example deleted file mode 100644 index 8510237..0000000 --- a/Chapter12/onlineStore/.env.example +++ /dev/null @@ -1,52 +0,0 @@ -APP_NAME=Laravel -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=laravel -DB_USERNAME=root -DB_PASSWORD= - -BROADCAST_DRIVER=log -CACHE_DRIVER=file -FILESYSTEM_DISK=local -QUEUE_CONNECTION=sync -SESSION_DRIVER=file -SESSION_LIFETIME=120 - -MEMCACHED_HOST=127.0.0.1 - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -MAIL_MAILER=smtp -MAIL_HOST=mailhog -MAIL_PORT=1025 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS=null -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_APP_CLUSTER=mt1 - -MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/Chapter12/onlineStore/.gitattributes b/Chapter12/onlineStore/.gitattributes deleted file mode 100644 index 510d996..0000000 --- a/Chapter12/onlineStore/.gitattributes +++ /dev/null @@ -1,10 +0,0 @@ -* text=auto - -*.blade.php diff=html -*.css diff=css -*.html diff=html -*.md diff=markdown -*.php diff=php - -/.github export-ignore -CHANGELOG.md export-ignore diff --git a/Chapter12/onlineStore/.gitignore b/Chapter12/onlineStore/.gitignore deleted file mode 100644 index eb003b0..0000000 --- a/Chapter12/onlineStore/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -/node_modules -/public/hot -/public/storage -/storage/*.key -/vendor -.env -.env.backup -.phpunit.result.cache -docker-compose.override.yml -Homestead.json -Homestead.yaml -npm-debug.log -yarn-error.log -/.idea -/.vscode diff --git a/Chapter12/onlineStore/.styleci.yml b/Chapter12/onlineStore/.styleci.yml deleted file mode 100644 index 679a631..0000000 --- a/Chapter12/onlineStore/.styleci.yml +++ /dev/null @@ -1,13 +0,0 @@ -php: - preset: laravel - version: 8 - disabled: - - no_unused_imports - finder: - not-name: - - index.php -js: - finder: - not-name: - - webpack.mix.js -css: true diff --git a/Chapter12/onlineStore/README.md b/Chapter12/onlineStore/README.md deleted file mode 100644 index f171eca..0000000 --- a/Chapter12/onlineStore/README.md +++ /dev/null @@ -1,64 +0,0 @@ -

    - -

    -Build Status -Total Downloads -Latest Stable Version -License -

    - -## About Laravel - -Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as: - -- [Simple, fast routing engine](https://laravel.com/docs/routing). -- [Powerful dependency injection container](https://laravel.com/docs/container). -- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage. -- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent). -- Database agnostic [schema migrations](https://laravel.com/docs/migrations). -- [Robust background job processing](https://laravel.com/docs/queues). -- [Real-time event broadcasting](https://laravel.com/docs/broadcasting). - -Laravel is accessible, powerful, and provides tools required for large, robust applications. - -## Learning Laravel - -Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework. - -If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 2000 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library. - -## Laravel Sponsors - -We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell). - -### Premium Partners - -- **[Vehikl](https://vehikl.com/)** -- **[Tighten Co.](https://tighten.co)** -- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** -- **[64 Robots](https://64robots.com)** -- **[Cubet Techno Labs](https://cubettech.com)** -- **[Cyber-Duck](https://cyber-duck.co.uk)** -- **[Many](https://www.many.co.uk)** -- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)** -- **[DevSquad](https://devsquad.com)** -- **[Curotec](https://www.curotec.com/services/technologies/laravel/)** -- **[OP.GG](https://op.gg)** -- **[WebReinvent](https://webreinvent.com/?utm_source=laravel&utm_medium=github&utm_campaign=patreon-sponsors)** -- **[Lendio](https://lendio.com)** - -## Contributing - -Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions). - -## Code of Conduct - -In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). - -## Security Vulnerabilities - -If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed. - -## License - -The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). diff --git a/Chapter12/onlineStore/app/Console/Kernel.php b/Chapter12/onlineStore/app/Console/Kernel.php deleted file mode 100644 index d8bc1d2..0000000 --- a/Chapter12/onlineStore/app/Console/Kernel.php +++ /dev/null @@ -1,32 +0,0 @@ -command('inspire')->hourly(); - } - - /** - * Register the commands for the application. - * - * @return void - */ - protected function commands() - { - $this->load(__DIR__.'/Commands'); - - require base_path('routes/console.php'); - } -} diff --git a/Chapter12/onlineStore/app/Exceptions/Handler.php b/Chapter12/onlineStore/app/Exceptions/Handler.php deleted file mode 100644 index 8e7fbd1..0000000 --- a/Chapter12/onlineStore/app/Exceptions/Handler.php +++ /dev/null @@ -1,41 +0,0 @@ -> - */ - protected $dontReport = [ - // - ]; - - /** - * A list of the inputs that are never flashed for validation exceptions. - * - * @var array - */ - protected $dontFlash = [ - 'current_password', - 'password', - 'password_confirmation', - ]; - - /** - * Register the exception handling callbacks for the application. - * - * @return void - */ - public function register() - { - $this->reportable(function (Throwable $e) { - // - }); - } -} diff --git a/Chapter12/onlineStore/app/Http/Controllers/Controller.php b/Chapter12/onlineStore/app/Http/Controllers/Controller.php deleted file mode 100644 index a0a2a8a..0000000 --- a/Chapter12/onlineStore/app/Http/Controllers/Controller.php +++ /dev/null @@ -1,13 +0,0 @@ -with("viewData", $viewData); - } - - public function about() - { - $viewData = []; - $viewData["title"] = "About us - Online Store"; - $viewData["subtitle"] = "About us"; - $viewData["description"] = "This is an about page ..."; - $viewData["author"] = "Developed by: Your Name"; - return view('home.about')->with("viewData", $viewData); - } -} diff --git a/Chapter12/onlineStore/app/Http/Controllers/ProductController.php b/Chapter12/onlineStore/app/Http/Controllers/ProductController.php deleted file mode 100644 index 552a472..0000000 --- a/Chapter12/onlineStore/app/Http/Controllers/ProductController.php +++ /dev/null @@ -1,34 +0,0 @@ -"1", "name"=>"TV", "description"=>"Best TV", "image" => "game.png", "price"=>"1000"], - ["id"=>"2", "name"=>"iPhone", "description"=>"Best iPhone", "image" => "safe.png", "price"=>"999"], - ["id"=>"3", "name"=>"Chromecast", "description"=>"Best Chromecast", "image" => "submarine.png", "price"=>"30"], - ["id"=>"4", "name"=>"Glasses", "description"=>"Best Glasses", "image" => "game.png", "price"=>"100"] - ]; - - public function index() - { - $viewData = []; - $viewData["title"] = "Products - Online Store"; - $viewData["subtitle"] = "List of products"; - $viewData["products"] = ProductController::$products; - return view('product.index')->with("viewData", $viewData); - } - - public function show($id) - { - $viewData = []; - $product = ProductController::$products[$id-1]; - $viewData["title"] = $product["name"]." - Online Store"; - $viewData["subtitle"] = $product["name"]." - Product information"; - $viewData["product"] = $product; - return view('product.show')->with("viewData", $viewData); - } -} diff --git a/Chapter12/onlineStore/app/Http/Kernel.php b/Chapter12/onlineStore/app/Http/Kernel.php deleted file mode 100644 index d3722c2..0000000 --- a/Chapter12/onlineStore/app/Http/Kernel.php +++ /dev/null @@ -1,67 +0,0 @@ - - */ - protected $middleware = [ - // \App\Http\Middleware\TrustHosts::class, - \App\Http\Middleware\TrustProxies::class, - \Fruitcake\Cors\HandleCors::class, - \App\Http\Middleware\PreventRequestsDuringMaintenance::class, - \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, - \App\Http\Middleware\TrimStrings::class, - \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, - ]; - - /** - * The application's route middleware groups. - * - * @var array> - */ - protected $middlewareGroups = [ - 'web' => [ - \App\Http\Middleware\EncryptCookies::class, - \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, - \Illuminate\Session\Middleware\StartSession::class, - // \Illuminate\Session\Middleware\AuthenticateSession::class, - \Illuminate\View\Middleware\ShareErrorsFromSession::class, - \App\Http\Middleware\VerifyCsrfToken::class, - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - - 'api' => [ - // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, - 'throttle:api', - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - ]; - - /** - * The application's route middleware. - * - * These middleware may be assigned to groups or used individually. - * - * @var array - */ - protected $routeMiddleware = [ - 'auth' => \App\Http\Middleware\Authenticate::class, - 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::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, - 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, - 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, - 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, - ]; -} diff --git a/Chapter12/onlineStore/app/Http/Middleware/Authenticate.php b/Chapter12/onlineStore/app/Http/Middleware/Authenticate.php deleted file mode 100644 index 704089a..0000000 --- a/Chapter12/onlineStore/app/Http/Middleware/Authenticate.php +++ /dev/null @@ -1,21 +0,0 @@ -expectsJson()) { - return route('login'); - } - } -} diff --git a/Chapter12/onlineStore/app/Http/Middleware/EncryptCookies.php b/Chapter12/onlineStore/app/Http/Middleware/EncryptCookies.php deleted file mode 100644 index 867695b..0000000 --- a/Chapter12/onlineStore/app/Http/Middleware/EncryptCookies.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter12/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/Chapter12/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php deleted file mode 100644 index 74cbd9a..0000000 --- a/Chapter12/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter12/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php b/Chapter12/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php deleted file mode 100644 index a2813a0..0000000 --- a/Chapter12/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php +++ /dev/null @@ -1,32 +0,0 @@ -check()) { - return redirect(RouteServiceProvider::HOME); - } - } - - return $next($request); - } -} diff --git a/Chapter12/onlineStore/app/Http/Middleware/TrimStrings.php b/Chapter12/onlineStore/app/Http/Middleware/TrimStrings.php deleted file mode 100644 index 88cadca..0000000 --- a/Chapter12/onlineStore/app/Http/Middleware/TrimStrings.php +++ /dev/null @@ -1,19 +0,0 @@ - - */ - protected $except = [ - 'current_password', - 'password', - 'password_confirmation', - ]; -} diff --git a/Chapter12/onlineStore/app/Http/Middleware/TrustHosts.php b/Chapter12/onlineStore/app/Http/Middleware/TrustHosts.php deleted file mode 100644 index 7186414..0000000 --- a/Chapter12/onlineStore/app/Http/Middleware/TrustHosts.php +++ /dev/null @@ -1,20 +0,0 @@ - - */ - public function hosts() - { - return [ - $this->allSubdomainsOfApplicationUrl(), - ]; - } -} diff --git a/Chapter12/onlineStore/app/Http/Middleware/TrustProxies.php b/Chapter12/onlineStore/app/Http/Middleware/TrustProxies.php deleted file mode 100644 index 3391630..0000000 --- a/Chapter12/onlineStore/app/Http/Middleware/TrustProxies.php +++ /dev/null @@ -1,28 +0,0 @@ -|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/Chapter12/onlineStore/app/Http/Middleware/VerifyCsrfToken.php b/Chapter12/onlineStore/app/Http/Middleware/VerifyCsrfToken.php deleted file mode 100644 index 9e86521..0000000 --- a/Chapter12/onlineStore/app/Http/Middleware/VerifyCsrfToken.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter12/onlineStore/app/Models/Product.php b/Chapter12/onlineStore/app/Models/Product.php deleted file mode 100644 index c428a88..0000000 --- a/Chapter12/onlineStore/app/Models/Product.php +++ /dev/null @@ -1,11 +0,0 @@ - - */ - 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', - ]; -} diff --git a/Chapter12/onlineStore/app/Providers/AppServiceProvider.php b/Chapter12/onlineStore/app/Providers/AppServiceProvider.php deleted file mode 100644 index ee8ca5b..0000000 --- a/Chapter12/onlineStore/app/Providers/AppServiceProvider.php +++ /dev/null @@ -1,28 +0,0 @@ - - */ - protected $policies = [ - // 'App\Models\Model' => 'App\Policies\ModelPolicy', - ]; - - /** - * Register any authentication / authorization services. - * - * @return void - */ - public function boot() - { - $this->registerPolicies(); - - // - } -} diff --git a/Chapter12/onlineStore/app/Providers/BroadcastServiceProvider.php b/Chapter12/onlineStore/app/Providers/BroadcastServiceProvider.php deleted file mode 100644 index 395c518..0000000 --- a/Chapter12/onlineStore/app/Providers/BroadcastServiceProvider.php +++ /dev/null @@ -1,21 +0,0 @@ -> - */ - protected $listen = [ - Registered::class => [ - SendEmailVerificationNotification::class, - ], - ]; - - /** - * Register any events for your application. - * - * @return void - */ - public function boot() - { - // - } -} diff --git a/Chapter12/onlineStore/app/Providers/RouteServiceProvider.php b/Chapter12/onlineStore/app/Providers/RouteServiceProvider.php deleted file mode 100644 index 7c17d1f..0000000 --- a/Chapter12/onlineStore/app/Providers/RouteServiceProvider.php +++ /dev/null @@ -1,63 +0,0 @@ -configureRateLimiting(); - - $this->routes(function () { - Route::prefix('api') - ->middleware('api') - ->namespace($this->namespace) - ->group(base_path('routes/api.php')); - - Route::middleware('web') - ->namespace($this->namespace) - ->group(base_path('routes/web.php')); - }); - } - - /** - * Configure the rate limiters for the application. - * - * @return void - */ - protected function configureRateLimiting() - { - RateLimiter::for('api', function (Request $request) { - return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); - }); - } -} diff --git a/Chapter12/onlineStore/artisan b/Chapter12/onlineStore/artisan deleted file mode 100644 index 67a3329..0000000 --- a/Chapter12/onlineStore/artisan +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env php -make(Illuminate\Contracts\Console\Kernel::class); - -$status = $kernel->handle( - $input = new Symfony\Component\Console\Input\ArgvInput, - new Symfony\Component\Console\Output\ConsoleOutput -); - -/* -|-------------------------------------------------------------------------- -| Shutdown The Application -|-------------------------------------------------------------------------- -| -| Once Artisan has finished running, we will fire off the shutdown events -| so that any final work may be done by the application before we shut -| down the process. This is the last thing to happen to the request. -| -*/ - -$kernel->terminate($input, $status); - -exit($status); diff --git a/Chapter12/onlineStore/bootstrap/app.php b/Chapter12/onlineStore/bootstrap/app.php deleted file mode 100644 index 037e17d..0000000 --- a/Chapter12/onlineStore/bootstrap/app.php +++ /dev/null @@ -1,55 +0,0 @@ -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/Chapter12/onlineStore/bootstrap/cache/.gitignore b/Chapter12/onlineStore/bootstrap/cache/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter12/onlineStore/bootstrap/cache/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter12/onlineStore/composer.json b/Chapter12/onlineStore/composer.json deleted file mode 100644 index f0f2eda..0000000 --- a/Chapter12/onlineStore/composer.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "name": "laravel/laravel", - "type": "project", - "description": "The Laravel Framework.", - "keywords": ["framework", "laravel"], - "license": "MIT", - "require": { - "php": "^8.0", - "fruitcake/laravel-cors": "^2.0.5", - "guzzlehttp/guzzle": "^7.2", - "laravel/framework": "^9.0", - "laravel/sanctum": "^2.14", - "laravel/tinker": "^2.7" - }, - "require-dev": { - "fakerphp/faker": "^1.9.1", - "laravel/sail": "^1.0.1", - "mockery/mockery": "^1.4.4", - "nunomaduro/collision": "^6.1", - "phpunit/phpunit": "^9.5.10", - "spatie/laravel-ignition": "^1.0", - "squizlabs/php_codesniffer": "^3.6" - }, - "autoload": { - "psr-4": { - "App\\": "app/", - "Database\\Factories\\": "database/factories/", - "Database\\Seeders\\": "database/seeders/" - } - }, - "autoload-dev": { - "psr-4": { - "Tests\\": "tests/" - } - }, - "scripts": { - "post-autoload-dump": [ - "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", - "@php artisan package:discover --ansi" - ], - "post-update-cmd": [ - "@php artisan vendor:publish --tag=laravel-assets --ansi --force" - ], - "post-root-package-install": [ - "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" - ], - "post-create-project-cmd": [ - "@php artisan key:generate --ansi" - ] - }, - "extra": { - "laravel": { - "dont-discover": [] - } - }, - "config": { - "optimize-autoloader": true, - "preferred-install": "dist", - "sort-packages": true - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/Chapter12/onlineStore/composer.lock b/Chapter12/onlineStore/composer.lock deleted file mode 100644 index b55e897..0000000 --- a/Chapter12/onlineStore/composer.lock +++ /dev/null @@ -1,7860 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "8bdcc31974d0d5a00db79c82827c8815", - "packages": [ - { - "name": "asm89/stack-cors", - "version": "v2.1.1", - "source": { - "type": "git", - "url": "https://github.com/asm89/stack-cors.git", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4|^5|^6" - }, - "require-dev": { - "phpunit/phpunit": "^7|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "psr-4": { - "Asm89\\Stack\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alexander", - "email": "iam.asm89@gmail.com" - } - ], - "description": "Cross-origin resource sharing library and stack middleware", - "homepage": "https://github.com/asm89/stack-cors", - "keywords": [ - "cors", - "stack" - ], - "support": { - "issues": "https://github.com/asm89/stack-cors/issues", - "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" - }, - "time": "2022-01-18T09:12:03+00:00" - }, - { - "name": "brick/math", - "version": "0.9.3", - "source": { - "type": "git", - "url": "https://github.com/brick/math.git", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", - "vimeo/psalm": "4.9.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Brick\\Math\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Arbitrary-precision arithmetic library", - "keywords": [ - "Arbitrary-precision", - "BigInteger", - "BigRational", - "arithmetic", - "bigdecimal", - "bignum", - "brick", - "math" - ], - "support": { - "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.9.3" - }, - "funding": [ - { - "url": "https://github.com/BenMorel", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/brick/math", - "type": "tidelift" - } - ], - "time": "2021-08-15T20:50:18+00:00" - }, - { - "name": "dflydev/dot-access-data", - "version": "v3.0.1", - "source": { - "type": "git", - "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c", - "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": "^3.14" - }, - "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.1" - }, - "time": "2021-08-13T13:06:58+00:00" - }, - { - "name": "doctrine/inflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "vimeo/psalm": "^4.10" - }, - "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.4" - }, - "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": "2021-10-22T20:16:43+00:00" - }, - { - "name": "doctrine/lexer", - "version": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" - } - }, - "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/1.2.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%2Flexer", - "type": "tidelift" - } - ], - "time": "2022-01-12T08:27:12+00:00" - }, - { - "name": "dragonmantank/cron-expression", - "version": "v3.3.1", - "source": { - "type": "git", - "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "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.1" - }, - "funding": [ - { - "url": "https://github.com/dragonmantank", - "type": "github" - } - ], - "time": "2022-01-18T15:43:28+00:00" - }, - { - "name": "egulias/email-validator", - "version": "3.1.2", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ee0db30118f661fb166bcffbf5d82032df484697", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^1.2", - "php": ">=7.2", - "symfony/polyfill-intl-idn": "^1.15" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^8.5.8|^9.3.3", - "vimeo/psalm": "^4" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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/3.1.2" - }, - "funding": [ - { - "url": "https://github.com/egulias", - "type": "github" - } - ], - "time": "2021-10-11T09:18:27+00:00" - }, - { - "name": "fruitcake/laravel-cors", - "version": "v2.0.5", - "source": { - "type": "git", - "url": "https://github.com/fruitcake/laravel-cors.git", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "shasum": "" - }, - "require": { - "asm89/stack-cors": "^2.0.1", - "illuminate/contracts": "^6|^7|^8|^9", - "illuminate/support": "^6|^7|^8|^9", - "php": ">=7.2", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4.3.4|^5|^6" - }, - "require-dev": { - "laravel/framework": "^6|^7.24|^8", - "orchestra/testbench-dusk": "^4|^5|^6|^7", - "phpunit/phpunit": "^6|^7|^8|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - }, - "laravel": { - "providers": [ - "Fruitcake\\Cors\\CorsServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Fruitcake\\Cors\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fruitcake", - "homepage": "https://fruitcake.nl" - }, - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", - "keywords": [ - "api", - "cors", - "crossdomain", - "laravel" - ], - "support": { - "issues": "https://github.com/fruitcake/laravel-cors/issues", - "source": "https://github.com/fruitcake/laravel-cors/tree/v2.0.5" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "time": "2022-01-03T14:53:04+00:00" - }, - { - "name": "graham-campbell/result-type", - "version": "v1.0.4", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "0690bde05318336c7221785f2a932467f98b64ca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/0690bde05318336c7221785f2a932467f98b64ca", - "reference": "0690bde05318336c7221785f2a932467f98b64ca", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "phpoption/phpoption": "^1.8" - }, - "require-dev": { - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", - "type": "tidelift" - } - ], - "time": "2021-11-21T21:41:47+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "7.4.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.8.3 || ^2.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.4.1", - "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.5 || ^9.3.5", - "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": { - "branch-alias": { - "dev-master": "7.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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.4.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": "2021-12-06T18:43:05+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "1.5.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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/1.5.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "time": "2021-10-22T20:56:57+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.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.4.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.8 || ^9.3.10" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "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.1.0" - }, - "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": "2021-10-06T17:43:30+00:00" - }, - { - "name": "laravel/framework", - "version": "v9.0.1", - "source": { - "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "shasum": "" - }, - "require": { - "doctrine/inflector": "^2.0", - "dragonmantank/cron-expression": "^3.1", - "egulias/email-validator": "^3.1", - "ext-mbstring": "*", - "ext-openssl": "*", - "laravel/serializable-closure": "^1.0", - "league/commonmark": "^2.2", - "league/flysystem": "^3.0", - "monolog/monolog": "^2.0", - "nesbot/carbon": "^2.53.1", - "php": "^8.0.2", - "psr/container": "^1.1.1|^2.0.1", - "psr/log": "^1.0|^2.0|^3.0", - "psr/simple-cache": "^1.0|^2.0|^3.0", - "ramsey/uuid": "^4.2.2", - "symfony/console": "^6.0", - "symfony/error-handler": "^6.0", - "symfony/finder": "^6.0", - "symfony/http-foundation": "^6.0", - "symfony/http-kernel": "^6.0", - "symfony/mailer": "^6.0", - "symfony/mime": "^6.0", - "symfony/process": "^6.0", - "symfony/routing": "^6.0", - "symfony/var-dumper": "^6.0", - "tijsverkoyen/css-to-inline-styles": "^2.2.2", - "vlucas/phpdotenv": "^5.4.1", - "voku/portable-ascii": "^2.0" - }, - "conflict": { - "tightenco/collect": "<5.5.33" - }, - "provide": { - "psr/container-implementation": "1.1|2.0", - "psr/simple-cache-implementation": "1.0|2.0|3.0" - }, - "replace": { - "illuminate/auth": "self.version", - "illuminate/broadcasting": "self.version", - "illuminate/bus": "self.version", - "illuminate/cache": "self.version", - "illuminate/collections": "self.version", - "illuminate/conditionable": "self.version", - "illuminate/config": "self.version", - "illuminate/console": "self.version", - "illuminate/container": "self.version", - "illuminate/contracts": "self.version", - "illuminate/cookie": "self.version", - "illuminate/database": "self.version", - "illuminate/encryption": "self.version", - "illuminate/events": "self.version", - "illuminate/filesystem": "self.version", - "illuminate/hashing": "self.version", - "illuminate/http": "self.version", - "illuminate/log": "self.version", - "illuminate/macroable": "self.version", - "illuminate/mail": "self.version", - "illuminate/notifications": "self.version", - "illuminate/pagination": "self.version", - "illuminate/pipeline": "self.version", - "illuminate/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": { - "aws/aws-sdk-php": "^3.198.1", - "doctrine/dbal": "^2.13.3|^3.1.4", - "fakerphp/faker": "^1.9.2", - "guzzlehttp/guzzle": "^7.2", - "league/flysystem-aws-s3-v3": "^3.0", - "league/flysystem-ftp": "^3.0", - "league/flysystem-sftp-v3": "^3.0", - "mockery/mockery": "^1.4.4", - "orchestra/testbench-core": "^7.0", - "pda/pheanstalk": "^4.0", - "phpstan/phpstan": "^1.0", - "phpunit/phpunit": "^9.5.8", - "predis/predis": "^1.1.9", - "symfony/amazon-mailer": "^6.0", - "symfony/cache": "^6.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.198.1).", - "brianium/paratest": "Required to run tests in parallel (^6.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", - "ext-bcmath": "Required to use the multiple_of validation rule.", - "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.", - "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.2).", - "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-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", - "mockery/mockery": "Required to use mocking (^1.4.4).", - "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).", - "predis/predis": "Required to use the predis connector (^1.1.9).", - "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.0).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^6.0).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.0).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.0).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.0).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.x-dev" - } - }, - "autoload": { - "files": [ - "src/Illuminate/Collections/helpers.php", - "src/Illuminate/Events/functions.php", - "src/Illuminate/Foundation/helpers.php", - "src/Illuminate/Support/helpers.php" - ], - "psr-4": { - "Illuminate\\": "src/Illuminate/", - "Illuminate\\Support\\": [ - "src/Illuminate/Macroable/", - "src/Illuminate/Collections/", - "src/Illuminate/Conditionable/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Laravel Framework.", - "homepage": "https://laravel.com", - "keywords": [ - "framework", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2022-02-09T15:00:05+00:00" - }, - { - "name": "laravel/sanctum", - "version": "v2.14.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/sanctum.git", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/0647a87140c7522e75826cffcadb3ad6e01f71e9", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/contracts": "^6.9|^7.0|^8.0|^9.0", - "illuminate/database": "^6.9|^7.0|^8.0|^9.0", - "illuminate/support": "^6.9|^7.0|^8.0|^9.0", - "php": "^7.2|^8.0" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0", - "phpunit/phpunit": "^8.0|^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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": "2022-01-12T15:07:43+00:00" - }, - { - "name": "laravel/serializable-closure", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/serializable-closure.git", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/65c9faf50d567b65d81764a44526545689e3fe63", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "pestphp/pest": "^1.18", - "phpstan/phpstan": "^0.12.98", - "symfony/var-dumper": "^5.3" - }, - "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": "2022-02-01T16:29:39+00:00" - }, - { - "name": "laravel/tinker", - "version": "v2.7.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/tinker.git", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/5f2f9815b7631b9f586a3de7933c25f9327d4073", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073", - "shasum": "" - }, - "require": { - "illuminate/console": "^6.0|^7.0|^8.0|^9.0", - "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.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", - "phpunit/phpunit": "^8.5.8|^9.3.3" - }, - "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.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.7.0" - }, - "time": "2022-01-10T08:52:49+00:00" - }, - { - "name": "league/commonmark", - "version": "2.2.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/commonmark.git", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "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.15" - }, - "require-dev": { - "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.0", - "commonmark/commonmark.js": "0.30.0", - "composer/package-versions-deprecated": "^1.8", - "erusev/parsedown": "^1.0", - "ext-json": "*", - "github/gfm": "0.29.0", - "michelf/php-markdown": "^1.4", - "phpstan/phpstan": "^0.12.88 || ^1.0.0", - "phpunit/phpunit": "^9.5.5", - "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", - "unleashedtech/php-coding-standard": "^3.1", - "vimeo/psalm": "^4.7.3" - }, - "suggest": { - "symfony/yaml": "v2.3+ required if using the Front Matter extension" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.3-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": "2022-01-25T14:37:33+00:00" - }, - { - "name": "league/config", - "version": "v1.1.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/config.git", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/config/zipball/a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^3.0.1", - "nette/schema": "^1.2", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.90", - "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": "2021-08-14T12:15:32+00:00" - }, - { - "name": "league/flysystem", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9f8b4260031bfef5497477da53dd57b2aaff0e06", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06", - "shasum": "" - }, - "require": { - "ext-json": "*", - "league/mime-type-detection": "^1.0.0", - "php": "^8.0.2" - }, - "conflict": { - "guzzlehttp/guzzle": "<7.0", - "guzzlehttp/ringphp": "<1.1.1", - "symfony/http-client": "<5.2" - }, - "require-dev": { - "async-aws/s3": "^1.5", - "async-aws/simple-s3": "^1.0", - "aws/aws-sdk-php": "^3.198.1", - "composer/semver": "^3.0", - "ext-fileinfo": "*", - "ext-ftp": "*", - "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.5", - "google/cloud-storage": "^1.23", - "phpseclib/phpseclib": "^2.0", - "phpstan/phpstan": "^0.12.26", - "phpunit/phpunit": "^9.5.11", - "sabre/dav": "^4.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.0.3" - }, - "funding": [ - { - "url": "https://offset.earth/frankdejonge", - "type": "custom" - }, - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2022-01-31T19:41:04+00:00" - }, - { - "name": "league/mime-type-detection", - "version": "1.9.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/aa70e813a6ad3d1558fc927863d47309b4c23e69", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.2", - "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" - }, - "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.9.0" - }, - "funding": [ - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2021-11-21T11:48:40+00:00" - }, - { - "name": "monolog/monolog", - "version": "2.3.5", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd4380d6fc37626e2f799f29d91195040137eba9", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "provide": { - "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7", - "graylog2/gelf-php": "^1.4.2", - "mongodb/mongodb": "^1.8", - "php-amqplib/php-amqplib": "~2.4 || ^3", - "php-console/php-console": "^3.1.3", - "phpspec/prophecy": "^1.6.1", - "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5", - "predis/predis": "^1.1", - "rollbar/rollbar": "^1.3", - "ruflin/elastica": ">=0.90@dev", - "swiftmailer/swiftmailer": "^5.3|^6.0" - }, - "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", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "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": "2.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/2.3.5" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" - } - ], - "time": "2021-10-01T21:08:31+00:00" - }, - { - "name": "nesbot/carbon", - "version": "2.56.0", - "source": { - "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1.8 || ^8.0", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "doctrine/dbal": "^2.0 || ^3.0", - "doctrine/orm": "^2.7", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "phpmd/phpmd": "^2.9", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.54 || ^1.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.14", - "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://opencollective.com/Carbon", - "type": "open_collective" - }, - { - "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", - "type": "tidelift" - } - ], - "time": "2022-01-21T17:08:38+00:00" - }, - { - "name": "nette/schema", - "version": "v1.2.2", - "source": { - "type": "git", - "url": "https://github.com/nette/schema.git", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/9a39cef03a5b34c7de64f551538cbba05c2be5df", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df", - "shasum": "" - }, - "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": ">=7.1 <8.2" - }, - "require-dev": { - "nette/tester": "^2.3 || ^2.4", - "phpstan/phpstan-nette": "^0.12", - "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.2" - }, - "time": "2021-10-15T11:40:02+00:00" - }, - { - "name": "nette/utils", - "version": "v3.2.7", - "source": { - "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/0af4e3de4df9f1543534beab255ccf459e7a2c99", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99", - "shasum": "" - }, - "require": { - "php": ">=7.2 <8.2" - }, - "conflict": { - "nette/di": "<3.0.6" - }, - "require-dev": { - "nette/tester": "~2.0", - "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.3" - }, - "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()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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 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/v3.2.7" - }, - "time": "2022-01-24T11:29:14+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.13.2", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", - "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.13.2" - }, - "time": "2021-11-30T19:35:32+00:00" - }, - { - "name": "phpoption/phpoption", - "version": "1.8.1", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-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.8.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", - "type": "tidelift" - } - ], - "time": "2021-12-04T23:24:31+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.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.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": "http://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/tree/master" - }, - "time": "2020-06-29T06:28:15+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.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": "http://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/master" - }, - "time": "2019-04-30T12:38:16+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.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": "http://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/master" - }, - "time": "2016-08-06T14:39: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.1", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "570292577277f06f590635381a7f761a6cf4f026" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/570292577277f06f590635381a7f761a6cf4f026", - "reference": "570292577277f06f590635381a7f761a6cf4f026", - "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" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "3.17.05.02" - }, - "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.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." - }, - "bin": [ - "bin/psysh" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "0.11.x-dev" - } - }, - "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.1" - }, - "time": "2022-01-03T13:58:38+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": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/ramsey/collection.git", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "shasum": "" - }, - "require": { - "php": "^7.3 || ^8", - "symfony/polyfill-php81": "^1.23" - }, - "require-dev": { - "captainhook/captainhook": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "ergebnis/composer-normalize": "^2.6", - "fakerphp/faker": "^1.5", - "hamcrest/hamcrest-php": "^2", - "jangregor/phpstan-prophecy": "^0.8", - "mockery/mockery": "^1.3", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1", - "phpstan/phpstan": "^0.12.32", - "phpstan/phpstan-mockery": "^0.12.5", - "phpstan/phpstan-phpunit": "^0.12.11", - "phpunit/phpunit": "^8.5 || ^9", - "psy/psysh": "^0.10.4", - "slevomat/coding-standard": "^6.3", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.4" - }, - "type": "library", - "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/1.2.2" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "time": "2021-10-10T03:01:02+00:00" - }, - { - "name": "ramsey/uuid", - "version": "4.2.3", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "shasum": "" - }, - "require": { - "brick/math": "^0.8 || ^0.9", - "ext-json": "*", - "php": "^7.2 || ^8.0", - "ramsey/collection": "^1.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php80": "^1.14" - }, - "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", - "moontoast/math": "^1.1", - "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.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-mockery": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^8.5 || ^9", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" - }, - "suggest": { - "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-ctype": "Enables faster processing of character classification using ctype functions.", - "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": { - "branch-alias": { - "dev-main": "4.x-dev" - }, - "captainhook": { - "force-install": true - } - }, - "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "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.2.3" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2021-09-25T23:10:38+00:00" - }, - { - "name": "symfony/console", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/22e8efd019c3270c4f79376234a3f8752cd25490", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.4|^6.0" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/css-selector", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/1955d595c12c111629cc814d3f2a2ff13580508a", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a", - "shasum": "" - }, - "require": { - "php": ">=8.0.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/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-11-01T23:48:49+00:00" - }, - { - "name": "symfony/error-handler", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/20343b3bad7ebafa38138ddcb97290a24722b57b", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" - }, - "bin": [ - "Resources/bin/patch-type-declarations" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to manage errors and ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6472ea2dd415e925b90ca82be64b8bc6157f3934", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/event-dispatcher-contracts": "^2|^3" - }, - "conflict": { - "symfony/dependency-injection": "<5.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^5.4|^6.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/aa5422287b75594b90ee9cd807caf8f0df491385", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/event-dispatcher": "^1" - }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-07-15T12:33:35+00:00" - }, - { - "name": "symfony/finder", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/8661b74dbabc23223f38c9b99d3f8ade71170430", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ad157299ced81a637fade1efcadd688d6deba5c1", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1" - }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/cache": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0" - }, - "suggest": { - "symfony/mime": "To use the file extension guesser" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v6.0.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/error-handler": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", - "symfony/twig-bridge": "<5.4", - "symfony/validator": "<5.4", - "twig/twig": "<2.13" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/process": "^5.4|^6.0", - "symfony/routing": "^5.4|^6.0", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-29T18:12:46+00:00" - }, - { - "name": "symfony/mailer", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mailer.git", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "shasum": "" - }, - "require": { - "egulias/email-validator": "^2.1.10|^3", - "php": ">=8.0.2", - "psr/event-dispatcher": "^1", - "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3" - }, - "conflict": { - "symfony/http-kernel": "<5.4" - }, - "require-dev": { - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/messenger": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/mime", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/2cd9601efd040e56f43360daa68f3c6b0534923a", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "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" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "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.24.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": "2021-10-20T20:35:02+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-11-23T21:10:46+00:00" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44", - "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.23-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.24.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": "2021-09-14T14:02:44+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.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": "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.24.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": "2021-11-30T18:21:41+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-05-27T09:17:38+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:33+00:00" - }, - { - "name": "symfony/polyfill-php81", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:11+00:00" - }, - { - "name": "symfony/process", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/298ed357274c1868c20a0061df256a1250a6c4af", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/routing", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/yaml": "<5.4" - }, - "require-dev": { - "doctrine/annotations": "^1.12", - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/36715ebf9fb9db73db0cb24263c79077c6fe8603", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/container": "^2.0" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "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.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": "2021-11-04T17:53:12+00:00" - }, - { - "name": "symfony/string", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/522144f0c4c004c80d56fa47e40e17028e2eefc2", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.0" - }, - "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/translation-contracts": "^2.0|^3.0", - "symfony/var-exporter": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "files": [ - "Resources/functions.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 an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/translation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/71bb15335798f8c4da110911bcf2d2fead7a430d", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.3|^3.0" - }, - "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" - }, - "provide": { - "symfony/translation-implementation": "2.3|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-07T00:29:03+00:00" - }, - { - "name": "symfony/translation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "suggest": { - "symfony/translation-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - } - }, - "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.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": "2021-09-07T12:43:40+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7b701676fc64f9ef11f9b4870f16b48f66be4834", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<5.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-17T16:30:44+00:00" - }, - { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.4", - "source": { - "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" - } - ], - "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", - "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "support": { - "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" - }, - "time": "2021-12-08T09:12:39+00:00" - }, - { - "name": "vlucas/phpdotenv", - "version": "v5.4.1", - "source": { - "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", - "shasum": "" - }, - "require": { - "ext-pcre": "*", - "graham-campbell/result-type": "^1.0.2", - "php": "^7.1.3 || ^8.0", - "phpoption/phpoption": "^1.8", - "symfony/polyfill-ctype": "^1.23", - "symfony/polyfill-mbstring": "^1.23.1", - "symfony/polyfill-php80": "^1.23.1" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" - }, - "suggest": { - "ext-filter": "Required to use the boolean validator." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.4-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.4.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", - "type": "tidelift" - } - ], - "time": "2021-12-12T23:22:04+00:00" - }, - { - "name": "voku/portable-ascii", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/voku/portable-ascii.git", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/9bd89e83cecdf8c37b64909454249eaed98b2c89", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89", - "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.0" - }, - "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-01-24T18:59:03+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "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.10.0" - }, - "time": "2021-03-09T10:59:23+00:00" - } - ], - "packages-dev": [ - { - "name": "doctrine/instantiator", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.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%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2020-11-10T18:47:58+00:00" - }, - { - "name": "facade/ignition-contracts", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/facade/ignition-contracts.git", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^v2.15.8", - "phpunit/phpunit": "^9.3.11", - "vimeo/psalm": "^3.17.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Facade\\IgnitionContracts\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://flareapp.io", - "role": "Developer" - } - ], - "description": "Solution contracts for Ignition", - "homepage": "https://github.com/facade/ignition-contracts", - "keywords": [ - "contracts", - "flare", - "ignition" - ], - "support": { - "issues": "https://github.com/facade/ignition-contracts/issues", - "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" - }, - "time": "2020-10-16T08:27:54+00:00" - }, - { - "name": "fakerphp/faker", - "version": "v1.19.0", - "source": { - "type": "git", - "url": "https://github.com/FakerPHP/Faker.git", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^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": "*", - "symfony/phpunit-bridge": "^4.4 || ^5.2" - }, - "suggest": { - "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", - "ext-curl": "Required by Faker\\Provider\\Image to download images.", - "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", - "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.19-dev" - } - }, - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "François Zaninotto" - } - ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], - "support": { - "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0" - }, - "time": "2022-02-02T17:38:57+00:00" - }, - { - "name": "filp/whoops", - "version": "2.14.5", - "source": { - "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "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.14.5" - }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "time": "2022-01-07T12:00:00+00:00" - }, - { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "shasum": "" - }, - "require": { - "php": "^5.3|^7.0|^8.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" - }, - "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "classmap": [ - "hamcrest" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "This is the PHP port of Hamcrest Matchers", - "keywords": [ - "test" - ], - "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" - }, - "time": "2020-07-09T08:09:16+00:00" - }, - { - "name": "laravel/sail", - "version": "v1.13.2", - "source": { - "type": "git", - "url": "https://github.com/laravel/sail.git", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.0|^9.0", - "illuminate/contracts": "^8.0|^9.0", - "illuminate/support": "^8.0|^9.0", - "php": "^7.3|^8.0" - }, - "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": "2022-02-08T14:14:12+00:00" - }, - { - "name": "mockery/mockery", - "version": "1.5.0", - "source": { - "type": "git", - "url": "https://github.com/mockery/mockery.git", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "shasum": "" - }, - "require": { - "hamcrest/hamcrest-php": "^2.0.1", - "lib-pcre": ">=7.0", - "php": "^7.3 || ^8.0" - }, - "conflict": { - "phpunit/phpunit": "<8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-0": { - "Mockery": "library/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" - } - ], - "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": { - "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.5.0" - }, - "time": "2022-01-20T13:18:17+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.10.2", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "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.10.2" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2020-11-13T09:40:50+00:00" - }, - { - "name": "nunomaduro/collision", - "version": "v6.1.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/collision.git", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "shasum": "" - }, - "require": { - "facade/ignition-contracts": "^1.0.2", - "filp/whoops": "^2.14.5", - "php": "^8.0.0", - "symfony/console": "^6.0.2" - }, - "require-dev": { - "brianium/paratest": "^6.4.1", - "laravel/framework": "^9.0", - "nunomaduro/larastan": "^1.0.2", - "nunomaduro/mock-final-classes": "^1.1.0", - "orchestra/testbench": "^7.0.0", - "phpunit/phpunit": "^9.5.11" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "6.x-dev" - }, - "laravel": { - "providers": [ - "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" - ] - } - }, - "autoload": { - "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": "2022-01-18T17:49:08+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.1.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/15a90844ad40f127afd244c0cad228de2a80052a", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a", - "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.1.1" - }, - "time": "2022-02-07T21:56:48+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.6.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "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.6.0" - }, - "time": "2022-01-04T19:58:01+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" - }, - "time": "2021-12-08T12:19:24+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "9.2.10", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d5850aaf931743067f4bfc1ae4cbd06468400687", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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 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", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.10" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-05T09:12:13+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "3.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-02T12:48:52+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "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/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:58:55+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T05:33:50+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.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/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:16:10+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "9.5.13", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/597cb647654ede35e43b137926dfdfef0fb11743", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.3.1", - "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": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.7", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", - "sebastian/version": "^3.0.2" - }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.13" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-01-24T07:33:35+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:08:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "1.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:08:54+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:30:19+00:00" - }, - { - "name": "sebastian/comparator", - "version": "4.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:49:45+00:00" - }, - { - "name": "sebastian/complexity", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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 calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:52:27+00:00" - }, - { - "name": "sebastian/diff", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:10:38+00:00" - }, - { - "name": "sebastian/environment", - "version": "5.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-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": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:52:38+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "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", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-11-11T14:18:36+00:00" - }, - { - "name": "sebastian/global-state", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-11T13:31:12+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-28T06:42:11+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "http://www.github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:17:30+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:45:17+00:00" - }, - { - "name": "sebastian/type", - "version": "2.3.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-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/2.3.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-15T12:49:02+00:00" - }, - { - "name": "sebastian/version", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:39:44+00:00" - }, - { - "name": "spatie/backtrace", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/backtrace.git", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "ext-json": "*", - "phpunit/phpunit": "^9.3", - "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": { - "issues": "https://github.com/spatie/backtrace/issues", - "source": "https://github.com/spatie/backtrace/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/sponsors/spatie", - "type": "github" - }, - { - "url": "https://spatie.be/open-source/support-us", - "type": "other" - } - ], - "time": "2021-11-09T10:57:15+00:00" - }, - { - "name": "spatie/flare-client-php", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/flare-client-php.git", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "shasum": "" - }, - "require": { - "illuminate/pipeline": "^8.0|^9.0", - "php": "^8.0", - "spatie/backtrace": "^1.2", - "symfony/http-foundation": "^5.0|^6.0", - "symfony/mime": "^5.2|^6.0", - "symfony/process": "^5.2|^6.0", - "symfony/var-dumper": "^5.2|^6.0" - }, - "require-dev": { - "dms/phpunit-arraysubset-asserts": "^0.3.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/phpunit-snapshot-assertions": "^4.0" - }, - "type": "library", - "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.0.1" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2022-02-04T15:21:00+00:00" - }, - { - "name": "spatie/ignition", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/spatie/ignition.git", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/d2d5ba823af3004268556e87dfc94449e4159f5a", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "monolog/monolog": "^2.0", - "php": "^8.0", - "spatie/flare-client-php": "^1.0", - "symfony/console": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "mockery/mockery": "^1.4", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/ray": "^1.32", - "symfony/process": "^5.4|^6.0" - }, - "type": "library", - "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": "2022-01-19T12:57:41+00:00" - }, - { - "name": "spatie/laravel-ignition", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/68250225a9f83b086462c2af1b1139dfde48fbd2", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*", - "illuminate/support": "^8.77|^9.0", - "monolog/monolog": "^2.3", - "php": "^8.0", - "spatie/flare-client-php": "^1.0.1", - "spatie/ignition": "^1.0", - "symfony/console": "^5.0|^6.0", - "symfony/var-dumper": "^5.0|^6.0" - }, - "require-dev": { - "filp/whoops": "^2.14", - "livewire/livewire": "^2.8|dev-develop", - "mockery/mockery": "^1.4", - "nunomaduro/larastan": "^1.0", - "orchestra/testbench": "^6.23|^7.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/laravel-ray": "^1.27" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Spatie\\LaravelIgnition\\IgnitionServiceProvider" - ], - "aliases": { - "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" - } - } - }, - "autoload": { - "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": "2022-02-04T15:25:56+00:00" - }, - { - "name": "squizlabs/php_codesniffer", - "version": "3.6.2", - "source": { - "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", - "shasum": "" - }, - "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.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": "lead" - } - ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", - "keywords": [ - "phpcs", - "standards" - ], - "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" - }, - "time": "2021-12-12T21:44:58+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2021-07-28T10:34:58+00:00" - } - ], - "aliases": [], - "minimum-stability": "dev", - "stability-flags": [], - "prefer-stable": true, - "prefer-lowest": false, - "platform": { - "php": "^8.0" - }, - "platform-dev": [], - "plugin-api-version": "2.1.0" -} diff --git a/Chapter12/onlineStore/config/app.php b/Chapter12/onlineStore/config/app.php deleted file mode 100644 index 1941d7c..0000000 --- a/Chapter12/onlineStore/config/app.php +++ /dev/null @@ -1,197 +0,0 @@ - env('APP_NAME', 'Laravel'), - - /* - |-------------------------------------------------------------------------- - | Application Environment - |-------------------------------------------------------------------------- - | - | This value determines the "environment" your application is currently - | running in. This may determine how you prefer to configure various - | services the application utilizes. Set this in your ".env" file. - | - */ - - 'env' => env('APP_ENV', 'production'), - - /* - |-------------------------------------------------------------------------- - | Application Debug Mode - |-------------------------------------------------------------------------- - | - | When your application is in debug mode, detailed error messages with - | stack traces will be shown on every error that occurs within your - | application. If disabled, a simple generic error page is shown. - | - */ - - 'debug' => (bool) env('APP_DEBUG', false), - - /* - |-------------------------------------------------------------------------- - | Application URL - |-------------------------------------------------------------------------- - | - | This URL is used by the console to properly generate URLs when using - | the Artisan command line tool. You should set this to the root of - | your application so that it is used when running Artisan tasks. - | - */ - - 'url' => env('APP_URL', 'http://localhost'), - - 'asset_url' => env('ASSET_URL', null), - - /* - |-------------------------------------------------------------------------- - | 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', - - /* - |-------------------------------------------------------------------------- - | 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' => [ - - /* - * Laravel Framework Service Providers... - */ - Illuminate\Auth\AuthServiceProvider::class, - Illuminate\Broadcasting\BroadcastServiceProvider::class, - Illuminate\Bus\BusServiceProvider::class, - Illuminate\Cache\CacheServiceProvider::class, - Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, - Illuminate\Cookie\CookieServiceProvider::class, - Illuminate\Database\DatabaseServiceProvider::class, - Illuminate\Encryption\EncryptionServiceProvider::class, - Illuminate\Filesystem\FilesystemServiceProvider::class, - Illuminate\Foundation\Providers\FoundationServiceProvider::class, - Illuminate\Hashing\HashServiceProvider::class, - Illuminate\Mail\MailServiceProvider::class, - Illuminate\Notifications\NotificationServiceProvider::class, - Illuminate\Pagination\PaginationServiceProvider::class, - Illuminate\Pipeline\PipelineServiceProvider::class, - Illuminate\Queue\QueueServiceProvider::class, - Illuminate\Redis\RedisServiceProvider::class, - Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, - Illuminate\Session\SessionServiceProvider::class, - Illuminate\Translation\TranslationServiceProvider::class, - Illuminate\Validation\ValidationServiceProvider::class, - Illuminate\View\ViewServiceProvider::class, - - /* - * 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, - - ], - - /* - |-------------------------------------------------------------------------- - | 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([ - // ... - ])->toArray(), - -]; diff --git a/Chapter12/onlineStore/config/auth.php b/Chapter12/onlineStore/config/auth.php deleted file mode 100644 index d8c6cee..0000000 --- a/Chapter12/onlineStore/config/auth.php +++ /dev/null @@ -1,111 +0,0 @@ - [ - '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 expire 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. - | - */ - - 'passwords' => [ - 'users' => [ - 'provider' => 'users', - 'table' => 'password_resets', - '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/Chapter12/onlineStore/config/broadcasting.php b/Chapter12/onlineStore/config/broadcasting.php deleted file mode 100644 index 67fcbbd..0000000 --- a/Chapter12/onlineStore/config/broadcasting.php +++ /dev/null @@ -1,67 +0,0 @@ - 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'), - 'useTLS' => true, - ], - '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/Chapter12/onlineStore/config/cache.php b/Chapter12/onlineStore/config/cache.php deleted file mode 100644 index 8736c7a..0000000 --- a/Chapter12/onlineStore/config/cache.php +++ /dev/null @@ -1,110 +0,0 @@ - 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'), - ], - - '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 a RAM based store such as APC or Memcached, there might - | be other applications utilizing the same cache. So, we'll specify a - | value to get prefixed to all our keys so we can avoid collisions. - | - */ - - 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'), - -]; diff --git a/Chapter12/onlineStore/config/cors.php b/Chapter12/onlineStore/config/cors.php deleted file mode 100644 index 8a39e6d..0000000 --- a/Chapter12/onlineStore/config/cors.php +++ /dev/null @@ -1,34 +0,0 @@ - ['api/*', 'sanctum/csrf-cookie'], - - 'allowed_methods' => ['*'], - - 'allowed_origins' => ['*'], - - 'allowed_origins_patterns' => [], - - 'allowed_headers' => ['*'], - - 'exposed_headers' => [], - - 'max_age' => 0, - - 'supports_credentials' => false, - -]; diff --git a/Chapter12/onlineStore/config/database.php b/Chapter12/onlineStore/config/database.php deleted file mode 100644 index 0faebae..0000000 --- a/Chapter12/onlineStore/config/database.php +++ /dev/null @@ -1,147 +0,0 @@ - env('DB_CONNECTION', 'mysql'), - - /* - |-------------------------------------------------------------------------- - | Database Connections - |-------------------------------------------------------------------------- - | - | Here are each of the database connections setup for your application. - | Of course, examples of configuring each database platform that is - | supported by Laravel is shown below to make development simple. - | - | - | All database work in Laravel is done through the PHP PDO facilities - | so make sure you have the driver for your particular database of - | choice installed on your machine before you begin development. - | - */ - - 'connections' => [ - - 'sqlite' => [ - 'driver' => 'sqlite', - 'url' => env('DATABASE_URL'), - 'database' => env('DB_DATABASE', database_path('database.sqlite')), - 'prefix' => '', - 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), - ], - - 'mysql' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '3306'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'unix_socket' => env('DB_SOCKET', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - 'pgsql' => [ - 'driver' => 'pgsql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '5432'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - 'search_path' => 'public', - 'sslmode' => 'prefer', - ], - - 'sqlsrv' => [ - 'driver' => 'sqlsrv', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', 'localhost'), - 'port' => env('DB_PORT', '1433'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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'), - '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'), - 'password' => env('REDIS_PASSWORD'), - 'port' => env('REDIS_PORT', '6379'), - 'database' => env('REDIS_CACHE_DB', '1'), - ], - - ], - -]; diff --git a/Chapter12/onlineStore/config/filesystems.php b/Chapter12/onlineStore/config/filesystems.php deleted file mode 100644 index cf5abce..0000000 --- a/Chapter12/onlineStore/config/filesystems.php +++ /dev/null @@ -1,73 +0,0 @@ - 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 setup for each driver as an example of the required options. - | - | Supported Drivers: "local", "ftp", "sftp", "s3" - | - */ - - 'disks' => [ - - 'local' => [ - 'driver' => 'local', - 'root' => storage_path('app'), - ], - - 'public' => [ - 'driver' => 'local', - 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', - 'visibility' => 'public', - ], - - '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), - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter12/onlineStore/config/hashing.php b/Chapter12/onlineStore/config/hashing.php deleted file mode 100644 index bcd3be4..0000000 --- a/Chapter12/onlineStore/config/hashing.php +++ /dev/null @@ -1,52 +0,0 @@ - '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/Chapter12/onlineStore/config/logging.php b/Chapter12/onlineStore/config/logging.php deleted file mode 100644 index fefe088..0000000 --- a/Chapter12/onlineStore/config/logging.php +++ /dev/null @@ -1,119 +0,0 @@ - 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' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), - - /* - |-------------------------------------------------------------------------- - | 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'), - ], - - 'daily' => [ - 'driver' => 'daily', - 'path' => storage_path('logs/laravel.log'), - 'level' => env('LOG_LEVEL', 'debug'), - 'days' => 14, - ], - - 'slack' => [ - 'driver' => 'slack', - 'url' => env('LOG_SLACK_WEBHOOK_URL'), - 'username' => 'Laravel Log', - 'emoji' => ':boom:', - 'level' => env('LOG_LEVEL', 'critical'), - ], - - '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'), - ], - ], - - 'stderr' => [ - 'driver' => 'monolog', - 'level' => env('LOG_LEVEL', 'debug'), - 'handler' => StreamHandler::class, - 'formatter' => env('LOG_STDERR_FORMATTER'), - 'with' => [ - 'stream' => 'php://stderr', - ], - ], - - 'syslog' => [ - 'driver' => 'syslog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'errorlog' => [ - 'driver' => 'errorlog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'null' => [ - 'driver' => 'monolog', - 'handler' => NullHandler::class, - ], - - 'emergency' => [ - 'path' => storage_path('logs/laravel.log'), - ], - ], - -]; diff --git a/Chapter12/onlineStore/config/mail.php b/Chapter12/onlineStore/config/mail.php deleted file mode 100644 index 87b6fe3..0000000 --- a/Chapter12/onlineStore/config/mail.php +++ /dev/null @@ -1,117 +0,0 @@ - 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", - | "postmark", "log", "array", "failover" - | - */ - - 'mailers' => [ - 'smtp' => [ - 'transport' => 'smtp', - '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, - ], - - 'ses' => [ - 'transport' => 'ses', - ], - - 'mailgun' => [ - 'transport' => 'mailgun', - ], - - 'postmark' => [ - 'transport' => 'postmark', - ], - - 'sendmail' => [ - 'transport' => 'sendmail', - 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -t -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/Chapter12/onlineStore/config/queue.php b/Chapter12/onlineStore/config/queue.php deleted file mode 100644 index 25ea5a8..0000000 --- a/Chapter12/onlineStore/config/queue.php +++ /dev/null @@ -1,93 +0,0 @@ - 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, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter12/onlineStore/config/sanctum.php b/Chapter12/onlineStore/config/sanctum.php deleted file mode 100644 index 9281c92..0000000 --- a/Chapter12/onlineStore/config/sanctum.php +++ /dev/null @@ -1,65 +0,0 @@ - explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( - '%s%s', - 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', - env('APP_URL') ? ','.parse_url(env('APP_URL'), PHP_URL_HOST) : '' - ))), - - /* - |-------------------------------------------------------------------------- - | 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/Chapter12/onlineStore/config/services.php b/Chapter12/onlineStore/config/services.php deleted file mode 100644 index 2a1d616..0000000 --- a/Chapter12/onlineStore/config/services.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - 'domain' => env('MAILGUN_DOMAIN'), - 'secret' => env('MAILGUN_SECRET'), - 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), - ], - - '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/Chapter12/onlineStore/config/session.php b/Chapter12/onlineStore/config/session.php deleted file mode 100644 index 8fed97c..0000000 --- a/Chapter12/onlineStore/config/session.php +++ /dev/null @@ -1,201 +0,0 @@ - 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/Chapter12/onlineStore/config/view.php b/Chapter12/onlineStore/config/view.php deleted file mode 100644 index 22b8a18..0000000 --- a/Chapter12/onlineStore/config/view.php +++ /dev/null @@ -1,36 +0,0 @@ - [ - 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/Chapter12/onlineStore/database/.gitignore b/Chapter12/onlineStore/database/.gitignore deleted file mode 100644 index 9b19b93..0000000 --- a/Chapter12/onlineStore/database/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.sqlite* diff --git a/Chapter12/onlineStore/database/factories/UserFactory.php b/Chapter12/onlineStore/database/factories/UserFactory.php deleted file mode 100644 index d6ca926..0000000 --- a/Chapter12/onlineStore/database/factories/UserFactory.php +++ /dev/null @@ -1,42 +0,0 @@ - - */ -class UserFactory extends Factory -{ - /** - * Define the model's default state. - * - * @return array - */ - public function definition() - { - return [ - 'name' => $this->faker->name(), - 'email' => $this->faker->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. - * - * @return \Illuminate\Database\Eloquent\Factories\Factory - */ - public function unverified() - { - return $this->state(function (array $attributes) { - return [ - 'email_verified_at' => null, - ]; - }); - } -} diff --git a/Chapter12/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php b/Chapter12/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php deleted file mode 100644 index cf6b776..0000000 --- a/Chapter12/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->string('name'); - $table->string('email')->unique(); - $table->timestamp('email_verified_at')->nullable(); - $table->string('password'); - $table->rememberToken(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('users'); - } -}; diff --git a/Chapter12/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php b/Chapter12/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php deleted file mode 100644 index fcacb80..0000000 --- a/Chapter12/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php +++ /dev/null @@ -1,32 +0,0 @@ -string('email')->index(); - $table->string('token'); - $table->timestamp('created_at')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('password_resets'); - } -}; diff --git a/Chapter12/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/Chapter12/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php deleted file mode 100644 index 1719198..0000000 --- a/Chapter12/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php +++ /dev/null @@ -1,36 +0,0 @@ -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. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('failed_jobs'); - } -}; diff --git a/Chapter12/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/Chapter12/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php deleted file mode 100644 index fd235f8..0000000 --- a/Chapter12/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->morphs('tokenable'); - $table->string('name'); - $table->string('token', 64)->unique(); - $table->text('abilities')->nullable(); - $table->timestamp('last_used_at')->nullable(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('personal_access_tokens'); - } -}; diff --git a/Chapter12/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php b/Chapter12/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php deleted file mode 100644 index 2eecdc2..0000000 --- a/Chapter12/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php +++ /dev/null @@ -1,35 +0,0 @@ -id(); - $table->string('name'); - $table->text('description'); - $table->string('image'); - $table->integer('price'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('products'); - } -}; diff --git a/Chapter12/onlineStore/database/seeders/DatabaseSeeder.php b/Chapter12/onlineStore/database/seeders/DatabaseSeeder.php deleted file mode 100644 index 71f673f..0000000 --- a/Chapter12/onlineStore/database/seeders/DatabaseSeeder.php +++ /dev/null @@ -1,19 +0,0 @@ -create(); - } -} diff --git a/Chapter12/onlineStore/lang/en.json b/Chapter12/onlineStore/lang/en.json deleted file mode 100644 index 577680d..0000000 --- a/Chapter12/onlineStore/lang/en.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "The :attribute must contain at least one letter.": "The :attribute must contain at least one letter.", - "The :attribute must contain at least one number.": "The :attribute must contain at least one number.", - "The :attribute must contain at least one symbol.": "The :attribute must contain at least one symbol.", - "The :attribute must contain at least one uppercase and one lowercase letter.": "The :attribute must contain at least one uppercase and one lowercase letter.", - "The given :attribute has appeared in a data leak. Please choose a different :attribute.": "The given :attribute has appeared in a data leak. Please choose a different :attribute." -} diff --git a/Chapter12/onlineStore/lang/en/auth.php b/Chapter12/onlineStore/lang/en/auth.php deleted file mode 100644 index 6598e2c..0000000 --- a/Chapter12/onlineStore/lang/en/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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/Chapter12/onlineStore/lang/en/pagination.php b/Chapter12/onlineStore/lang/en/pagination.php deleted file mode 100644 index d481411..0000000 --- a/Chapter12/onlineStore/lang/en/pagination.php +++ /dev/null @@ -1,19 +0,0 @@ - '« Previous', - 'next' => 'Next »', - -]; diff --git a/Chapter12/onlineStore/lang/en/passwords.php b/Chapter12/onlineStore/lang/en/passwords.php deleted file mode 100644 index 2345a56..0000000 --- a/Chapter12/onlineStore/lang/en/passwords.php +++ /dev/null @@ -1,22 +0,0 @@ - '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/Chapter12/onlineStore/lang/en/validation.php b/Chapter12/onlineStore/lang/en/validation.php deleted file mode 100644 index 783003c..0000000 --- a/Chapter12/onlineStore/lang/en/validation.php +++ /dev/null @@ -1,163 +0,0 @@ - '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' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - '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' => [ - 'numeric' => 'The :attribute must be greater than :value.', - 'file' => 'The :attribute must be greater than :value kilobytes.', - 'string' => 'The :attribute must be greater than :value characters.', - 'array' => 'The :attribute must have more than :value items.', - ], - 'gte' => [ - 'numeric' => 'The :attribute must be greater than or equal to :value.', - 'file' => 'The :attribute must be greater than or equal to :value kilobytes.', - 'string' => 'The :attribute must be greater than or equal to :value characters.', - 'array' => 'The :attribute must have :value items or more.', - ], - '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' => [ - 'numeric' => 'The :attribute must be less than :value.', - 'file' => 'The :attribute must be less than :value kilobytes.', - 'string' => 'The :attribute must be less than :value characters.', - 'array' => 'The :attribute must have less than :value items.', - ], - 'lte' => [ - 'numeric' => 'The :attribute must be less than or equal to :value.', - 'file' => 'The :attribute must be less than or equal to :value kilobytes.', - 'string' => 'The :attribute must be less than or equal to :value characters.', - 'array' => 'The :attribute must not have more than :value items.', - ], - 'mac_address' => 'The :attribute must be a valid MAC address.', - 'max' => [ - 'numeric' => 'The :attribute must not be greater than :max.', - 'file' => 'The :attribute must not be greater than :max kilobytes.', - 'string' => 'The :attribute must not be greater than :max characters.', - 'array' => 'The :attribute must not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - '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.', - 'password' => 'The password is incorrect.', - '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' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - '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/Chapter12/onlineStore/package.json b/Chapter12/onlineStore/package.json deleted file mode 100644 index 7a9aecd..0000000 --- a/Chapter12/onlineStore/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "private": true, - "scripts": { - "dev": "npm run development", - "development": "mix", - "watch": "mix watch", - "watch-poll": "mix watch -- --watch-options-poll=1000", - "hot": "mix watch --hot", - "prod": "npm run production", - "production": "mix --production" - }, - "devDependencies": { - "axios": "^0.25", - "laravel-mix": "^6.0.6", - "lodash": "^4.17.19", - "postcss": "^8.1.14" - } -} diff --git a/Chapter12/onlineStore/phpcs.xml b/Chapter12/onlineStore/phpcs.xml deleted file mode 100644 index a1cf2b6..0000000 --- a/Chapter12/onlineStore/phpcs.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - The coding standard for the Online Store project - - app/ - config/ - database/ - routes/ - */migrations/* - diff --git a/Chapter12/onlineStore/phpunit.xml b/Chapter12/onlineStore/phpunit.xml deleted file mode 100644 index 2ac86a1..0000000 --- a/Chapter12/onlineStore/phpunit.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - ./tests/Unit - - - ./tests/Feature - - - - - ./app - - - - - - - - - - - - - - diff --git a/Chapter12/onlineStore/public/.htaccess b/Chapter12/onlineStore/public/.htaccess deleted file mode 100644 index 3aec5e2..0000000 --- a/Chapter12/onlineStore/public/.htaccess +++ /dev/null @@ -1,21 +0,0 @@ - - - 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/Chapter12/onlineStore/public/css/app.css b/Chapter12/onlineStore/public/css/app.css deleted file mode 100644 index cabac36..0000000 --- a/Chapter12/onlineStore/public/css/app.css +++ /dev/null @@ -1,20 +0,0 @@ -.bg-secondary { - background-color: #2c3e50 !important; -} - -.copyright { - background-color: #1a252f; -} - -.bg-primary { - background-color: #1abc9c !important; -} - -nav{ - font-weight: 700; -} - -.img-card{ - height: 18vw; - object-fit: cover; -} diff --git a/Chapter12/onlineStore/public/favicon.ico b/Chapter12/onlineStore/public/favicon.ico deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter12/onlineStore/public/img/game.png b/Chapter12/onlineStore/public/img/game.png deleted file mode 100644 index 85420e8bbc16098bf26b4ee63bde0e91a19d1f2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25896 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 cz>% diff --git a/Chapter12/onlineStore/public/img/safe.png b/Chapter12/onlineStore/public/img/safe.png deleted file mode 100644 index 445942c707af53210931f9f4f99f6d3cb69e5d89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19240 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
    w==XB0?3|p=#`o%NsudE(E-U#KS3Snw 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 o>ir+C;RN10sIS0&a;pmake(Kernel::class); - -$response = $kernel->handle( - $request = Request::capture() -)->send(); - -$kernel->terminate($request, $response); diff --git a/Chapter12/onlineStore/public/robots.txt b/Chapter12/onlineStore/public/robots.txt deleted file mode 100644 index eb05362..0000000 --- a/Chapter12/onlineStore/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: diff --git a/Chapter12/onlineStore/resources/css/app.css b/Chapter12/onlineStore/resources/css/app.css deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter12/onlineStore/resources/js/app.js b/Chapter12/onlineStore/resources/js/app.js deleted file mode 100644 index 40c55f6..0000000 --- a/Chapter12/onlineStore/resources/js/app.js +++ /dev/null @@ -1 +0,0 @@ -require('./bootstrap'); diff --git a/Chapter12/onlineStore/resources/js/bootstrap.js b/Chapter12/onlineStore/resources/js/bootstrap.js deleted file mode 100644 index 6922577..0000000 --- a/Chapter12/onlineStore/resources/js/bootstrap.js +++ /dev/null @@ -1,28 +0,0 @@ -window._ = require('lodash'); - -/** - * 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 = require('axios'); - -window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; - -/** - * 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'; - -// window.Pusher = require('pusher-js'); - -// window.Echo = new Echo({ -// broadcaster: 'pusher', -// key: process.env.MIX_PUSHER_APP_KEY, -// cluster: process.env.MIX_PUSHER_APP_CLUSTER, -// forceTLS: true -// }); diff --git a/Chapter12/onlineStore/resources/views/home/about.blade.php b/Chapter12/onlineStore/resources/views/home/about.blade.php deleted file mode 100644 index f79abf3..0000000 --- a/Chapter12/onlineStore/resources/views/home/about.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    -
    -
    -

    {{ $viewData["description"] }}

    -
    -
    -

    {{ $viewData["author"] }}

    -
    -
    -
    -@endsection diff --git a/Chapter12/onlineStore/resources/views/home/index.blade.php b/Chapter12/onlineStore/resources/views/home/index.blade.php deleted file mode 100644 index 1affb20..0000000 --- a/Chapter12/onlineStore/resources/views/home/index.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('content') -
    -
    - -
    -
    - -
    -
    - -
    -
    -@endsection diff --git a/Chapter12/onlineStore/resources/views/layouts/app.blade.php b/Chapter12/onlineStore/resources/views/layouts/app.blade.php deleted file mode 100644 index eee7fcb..0000000 --- a/Chapter12/onlineStore/resources/views/layouts/app.blade.php +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - @yield('title', 'Online Store') - - - -
    - -
    -
    -

    @yield('subtitle', 'A Laravel Online Store')

    -
    -
    - - -
    - @yield('content') -
    - - - - - - - diff --git a/Chapter12/onlineStore/resources/views/product/index.blade.php b/Chapter12/onlineStore/resources/views/product/index.blade.php deleted file mode 100644 index 1f766f1..0000000 --- a/Chapter12/onlineStore/resources/views/product/index.blade.php +++ /dev/null @@ -1,18 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    - @foreach ($viewData["products"] as $product) -
    - -
    - @endforeach -
    -@endsection diff --git a/Chapter12/onlineStore/resources/views/product/show.blade.php b/Chapter12/onlineStore/resources/views/product/show.blade.php deleted file mode 100644 index 01d056e..0000000 --- a/Chapter12/onlineStore/resources/views/product/show.blade.php +++ /dev/null @@ -1,21 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    -
    -
    - -
    -
    -
    -
    - {{ $viewData["product"]["name"] }} (${{ $viewData["product"]["price"] }}) -
    -

    {{ $viewData["product"]["description"] }}

    -

    Add to Cart

    -
    -
    -
    -
    -@endsection diff --git a/Chapter12/onlineStore/resources/views/welcome.blade.php b/Chapter12/onlineStore/resources/views/welcome.blade.php deleted file mode 100644 index c587c72..0000000 --- a/Chapter12/onlineStore/resources/views/welcome.blade.php +++ /dev/null @@ -1,7 +0,0 @@ -@extends('layouts.app') -@section('title', 'Home Page - Online Store') -@section('content') -
    - Welcome to the application -
    -@endsection \ No newline at end of file diff --git a/Chapter12/onlineStore/routes/api.php b/Chapter12/onlineStore/routes/api.php deleted file mode 100644 index eb6fa48..0000000 --- a/Chapter12/onlineStore/routes/api.php +++ /dev/null @@ -1,19 +0,0 @@ -get('/user', function (Request $request) { - return $request->user(); -}); diff --git a/Chapter12/onlineStore/routes/channels.php b/Chapter12/onlineStore/routes/channels.php deleted file mode 100644 index 5d451e1..0000000 --- a/Chapter12/onlineStore/routes/channels.php +++ /dev/null @@ -1,18 +0,0 @@ -id === (int) $id; -}); diff --git a/Chapter12/onlineStore/routes/console.php b/Chapter12/onlineStore/routes/console.php deleted file mode 100644 index e05f4c9..0000000 --- a/Chapter12/onlineStore/routes/console.php +++ /dev/null @@ -1,19 +0,0 @@ -comment(Inspiring::quote()); -})->purpose('Display an inspiring quote'); diff --git a/Chapter12/onlineStore/routes/web.php b/Chapter12/onlineStore/routes/web.php deleted file mode 100644 index 0f5e40f..0000000 --- a/Chapter12/onlineStore/routes/web.php +++ /dev/null @@ -1,19 +0,0 @@ -name("home.index"); -Route::get('/about', 'App\Http\Controllers\HomeController@about')->name("home.about"); -Route::get('/products', 'App\Http\Controllers\ProductController@index')->name("product.index"); -Route::get('/products/{id}', 'App\Http\Controllers\ProductController@show')->name("product.show"); diff --git a/Chapter12/onlineStore/storage/app/.gitignore b/Chapter12/onlineStore/storage/app/.gitignore deleted file mode 100644 index 8f4803c..0000000 --- a/Chapter12/onlineStore/storage/app/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!public/ -!.gitignore diff --git a/Chapter12/onlineStore/storage/app/public/.gitignore b/Chapter12/onlineStore/storage/app/public/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter12/onlineStore/storage/app/public/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter12/onlineStore/storage/framework/.gitignore b/Chapter12/onlineStore/storage/framework/.gitignore deleted file mode 100644 index 05c4471..0000000 --- a/Chapter12/onlineStore/storage/framework/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -compiled.php -config.php -down -events.scanned.php -maintenance.php -routes.php -routes.scanned.php -schedule-* -services.json diff --git a/Chapter12/onlineStore/storage/framework/cache/.gitignore b/Chapter12/onlineStore/storage/framework/cache/.gitignore deleted file mode 100644 index 01e4a6c..0000000 --- a/Chapter12/onlineStore/storage/framework/cache/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!data/ -!.gitignore diff --git a/Chapter12/onlineStore/storage/framework/cache/data/.gitignore b/Chapter12/onlineStore/storage/framework/cache/data/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter12/onlineStore/storage/framework/cache/data/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter12/onlineStore/storage/framework/sessions/.gitignore b/Chapter12/onlineStore/storage/framework/sessions/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter12/onlineStore/storage/framework/sessions/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter12/onlineStore/storage/framework/testing/.gitignore b/Chapter12/onlineStore/storage/framework/testing/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter12/onlineStore/storage/framework/testing/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter12/onlineStore/storage/framework/views/.gitignore b/Chapter12/onlineStore/storage/framework/views/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter12/onlineStore/storage/framework/views/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter12/onlineStore/storage/logs/.gitignore b/Chapter12/onlineStore/storage/logs/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter12/onlineStore/storage/logs/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter12/onlineStore/tests/CreatesApplication.php b/Chapter12/onlineStore/tests/CreatesApplication.php deleted file mode 100644 index 547152f..0000000 --- a/Chapter12/onlineStore/tests/CreatesApplication.php +++ /dev/null @@ -1,22 +0,0 @@ -make(Kernel::class)->bootstrap(); - - return $app; - } -} diff --git a/Chapter12/onlineStore/tests/Feature/ExampleTest.php b/Chapter12/onlineStore/tests/Feature/ExampleTest.php deleted file mode 100644 index 78ccc21..0000000 --- a/Chapter12/onlineStore/tests/Feature/ExampleTest.php +++ /dev/null @@ -1,21 +0,0 @@ -get('/'); - - $response->assertStatus(200); - } -} diff --git a/Chapter12/onlineStore/tests/TestCase.php b/Chapter12/onlineStore/tests/TestCase.php deleted file mode 100644 index 2932d4a..0000000 --- a/Chapter12/onlineStore/tests/TestCase.php +++ /dev/null @@ -1,10 +0,0 @@ -assertTrue(true); - } -} diff --git a/Chapter12/onlineStore/webpack.mix.js b/Chapter12/onlineStore/webpack.mix.js deleted file mode 100644 index 2a22dc1..0000000 --- a/Chapter12/onlineStore/webpack.mix.js +++ /dev/null @@ -1,17 +0,0 @@ -const mix = require('laravel-mix'); - -/* - |-------------------------------------------------------------------------- - | Mix Asset Management - |-------------------------------------------------------------------------- - | - | Mix provides a clean, fluent API for defining some Webpack build steps - | for your Laravel applications. By default, we are compiling the CSS - | file for the application as well as bundling up all the JS files. - | - */ - -mix.js('resources/js/app.js', 'public/js') - .postCss('resources/css/app.css', 'public/css', [ - // - ]); diff --git a/Chapter13/onlineStore/.editorconfig b/Chapter13/onlineStore/.editorconfig deleted file mode 100644 index 1671c9b..0000000 --- a/Chapter13/onlineStore/.editorconfig +++ /dev/null @@ -1,18 +0,0 @@ -root = true - -[*] -charset = utf-8 -end_of_line = lf -insert_final_newline = true -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true - -[*.md] -trim_trailing_whitespace = false - -[*.{yml,yaml}] -indent_size = 2 - -[docker-compose.yml] -indent_size = 4 diff --git a/Chapter13/onlineStore/.env.example b/Chapter13/onlineStore/.env.example deleted file mode 100644 index 8510237..0000000 --- a/Chapter13/onlineStore/.env.example +++ /dev/null @@ -1,52 +0,0 @@ -APP_NAME=Laravel -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=laravel -DB_USERNAME=root -DB_PASSWORD= - -BROADCAST_DRIVER=log -CACHE_DRIVER=file -FILESYSTEM_DISK=local -QUEUE_CONNECTION=sync -SESSION_DRIVER=file -SESSION_LIFETIME=120 - -MEMCACHED_HOST=127.0.0.1 - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -MAIL_MAILER=smtp -MAIL_HOST=mailhog -MAIL_PORT=1025 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS=null -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_APP_CLUSTER=mt1 - -MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/Chapter13/onlineStore/.gitattributes b/Chapter13/onlineStore/.gitattributes deleted file mode 100644 index 510d996..0000000 --- a/Chapter13/onlineStore/.gitattributes +++ /dev/null @@ -1,10 +0,0 @@ -* text=auto - -*.blade.php diff=html -*.css diff=css -*.html diff=html -*.md diff=markdown -*.php diff=php - -/.github export-ignore -CHANGELOG.md export-ignore diff --git a/Chapter13/onlineStore/.gitignore b/Chapter13/onlineStore/.gitignore deleted file mode 100644 index eb003b0..0000000 --- a/Chapter13/onlineStore/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -/node_modules -/public/hot -/public/storage -/storage/*.key -/vendor -.env -.env.backup -.phpunit.result.cache -docker-compose.override.yml -Homestead.json -Homestead.yaml -npm-debug.log -yarn-error.log -/.idea -/.vscode diff --git a/Chapter13/onlineStore/.styleci.yml b/Chapter13/onlineStore/.styleci.yml deleted file mode 100644 index 679a631..0000000 --- a/Chapter13/onlineStore/.styleci.yml +++ /dev/null @@ -1,13 +0,0 @@ -php: - preset: laravel - version: 8 - disabled: - - no_unused_imports - finder: - not-name: - - index.php -js: - finder: - not-name: - - webpack.mix.js -css: true diff --git a/Chapter13/onlineStore/README.md b/Chapter13/onlineStore/README.md deleted file mode 100644 index f171eca..0000000 --- a/Chapter13/onlineStore/README.md +++ /dev/null @@ -1,64 +0,0 @@ -

    - -

    -Build Status -Total Downloads -Latest Stable Version -License -

    - -## About Laravel - -Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as: - -- [Simple, fast routing engine](https://laravel.com/docs/routing). -- [Powerful dependency injection container](https://laravel.com/docs/container). -- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage. -- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent). -- Database agnostic [schema migrations](https://laravel.com/docs/migrations). -- [Robust background job processing](https://laravel.com/docs/queues). -- [Real-time event broadcasting](https://laravel.com/docs/broadcasting). - -Laravel is accessible, powerful, and provides tools required for large, robust applications. - -## Learning Laravel - -Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework. - -If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 2000 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library. - -## Laravel Sponsors - -We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell). - -### Premium Partners - -- **[Vehikl](https://vehikl.com/)** -- **[Tighten Co.](https://tighten.co)** -- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** -- **[64 Robots](https://64robots.com)** -- **[Cubet Techno Labs](https://cubettech.com)** -- **[Cyber-Duck](https://cyber-duck.co.uk)** -- **[Many](https://www.many.co.uk)** -- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)** -- **[DevSquad](https://devsquad.com)** -- **[Curotec](https://www.curotec.com/services/technologies/laravel/)** -- **[OP.GG](https://op.gg)** -- **[WebReinvent](https://webreinvent.com/?utm_source=laravel&utm_medium=github&utm_campaign=patreon-sponsors)** -- **[Lendio](https://lendio.com)** - -## Contributing - -Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions). - -## Code of Conduct - -In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). - -## Security Vulnerabilities - -If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed. - -## License - -The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). diff --git a/Chapter13/onlineStore/app/Console/Kernel.php b/Chapter13/onlineStore/app/Console/Kernel.php deleted file mode 100644 index d8bc1d2..0000000 --- a/Chapter13/onlineStore/app/Console/Kernel.php +++ /dev/null @@ -1,32 +0,0 @@ -command('inspire')->hourly(); - } - - /** - * Register the commands for the application. - * - * @return void - */ - protected function commands() - { - $this->load(__DIR__.'/Commands'); - - require base_path('routes/console.php'); - } -} diff --git a/Chapter13/onlineStore/app/Exceptions/Handler.php b/Chapter13/onlineStore/app/Exceptions/Handler.php deleted file mode 100644 index 8e7fbd1..0000000 --- a/Chapter13/onlineStore/app/Exceptions/Handler.php +++ /dev/null @@ -1,41 +0,0 @@ -> - */ - protected $dontReport = [ - // - ]; - - /** - * A list of the inputs that are never flashed for validation exceptions. - * - * @var array - */ - protected $dontFlash = [ - 'current_password', - 'password', - 'password_confirmation', - ]; - - /** - * Register the exception handling callbacks for the application. - * - * @return void - */ - public function register() - { - $this->reportable(function (Throwable $e) { - // - }); - } -} diff --git a/Chapter13/onlineStore/app/Http/Controllers/Controller.php b/Chapter13/onlineStore/app/Http/Controllers/Controller.php deleted file mode 100644 index a0a2a8a..0000000 --- a/Chapter13/onlineStore/app/Http/Controllers/Controller.php +++ /dev/null @@ -1,13 +0,0 @@ -with("viewData", $viewData); - } - - public function about() - { - $viewData = []; - $viewData["title"] = "About us - Online Store"; - $viewData["subtitle"] = "About us"; - $viewData["description"] = "This is an about page ..."; - $viewData["author"] = "Developed by: Your Name"; - return view('home.about')->with("viewData", $viewData); - } -} diff --git a/Chapter13/onlineStore/app/Http/Controllers/ProductController.php b/Chapter13/onlineStore/app/Http/Controllers/ProductController.php deleted file mode 100644 index 5e0f7a3..0000000 --- a/Chapter13/onlineStore/app/Http/Controllers/ProductController.php +++ /dev/null @@ -1,29 +0,0 @@ -with("viewData", $viewData); - } - - public function show($id) - { - $viewData = []; - $product = Product::findOrFail($id); - $viewData["title"] = $product["name"]." - Online Store"; - $viewData["subtitle"] = $product["name"]." - Product information"; - $viewData["product"] = $product; - return view('product.show')->with("viewData", $viewData); - } -} diff --git a/Chapter13/onlineStore/app/Http/Kernel.php b/Chapter13/onlineStore/app/Http/Kernel.php deleted file mode 100644 index d3722c2..0000000 --- a/Chapter13/onlineStore/app/Http/Kernel.php +++ /dev/null @@ -1,67 +0,0 @@ - - */ - protected $middleware = [ - // \App\Http\Middleware\TrustHosts::class, - \App\Http\Middleware\TrustProxies::class, - \Fruitcake\Cors\HandleCors::class, - \App\Http\Middleware\PreventRequestsDuringMaintenance::class, - \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, - \App\Http\Middleware\TrimStrings::class, - \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, - ]; - - /** - * The application's route middleware groups. - * - * @var array> - */ - protected $middlewareGroups = [ - 'web' => [ - \App\Http\Middleware\EncryptCookies::class, - \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, - \Illuminate\Session\Middleware\StartSession::class, - // \Illuminate\Session\Middleware\AuthenticateSession::class, - \Illuminate\View\Middleware\ShareErrorsFromSession::class, - \App\Http\Middleware\VerifyCsrfToken::class, - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - - 'api' => [ - // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, - 'throttle:api', - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - ]; - - /** - * The application's route middleware. - * - * These middleware may be assigned to groups or used individually. - * - * @var array - */ - protected $routeMiddleware = [ - 'auth' => \App\Http\Middleware\Authenticate::class, - 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::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, - 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, - 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, - 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, - ]; -} diff --git a/Chapter13/onlineStore/app/Http/Middleware/Authenticate.php b/Chapter13/onlineStore/app/Http/Middleware/Authenticate.php deleted file mode 100644 index 704089a..0000000 --- a/Chapter13/onlineStore/app/Http/Middleware/Authenticate.php +++ /dev/null @@ -1,21 +0,0 @@ -expectsJson()) { - return route('login'); - } - } -} diff --git a/Chapter13/onlineStore/app/Http/Middleware/EncryptCookies.php b/Chapter13/onlineStore/app/Http/Middleware/EncryptCookies.php deleted file mode 100644 index 867695b..0000000 --- a/Chapter13/onlineStore/app/Http/Middleware/EncryptCookies.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter13/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/Chapter13/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php deleted file mode 100644 index 74cbd9a..0000000 --- a/Chapter13/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter13/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php b/Chapter13/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php deleted file mode 100644 index a2813a0..0000000 --- a/Chapter13/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php +++ /dev/null @@ -1,32 +0,0 @@ -check()) { - return redirect(RouteServiceProvider::HOME); - } - } - - return $next($request); - } -} diff --git a/Chapter13/onlineStore/app/Http/Middleware/TrimStrings.php b/Chapter13/onlineStore/app/Http/Middleware/TrimStrings.php deleted file mode 100644 index 88cadca..0000000 --- a/Chapter13/onlineStore/app/Http/Middleware/TrimStrings.php +++ /dev/null @@ -1,19 +0,0 @@ - - */ - protected $except = [ - 'current_password', - 'password', - 'password_confirmation', - ]; -} diff --git a/Chapter13/onlineStore/app/Http/Middleware/TrustHosts.php b/Chapter13/onlineStore/app/Http/Middleware/TrustHosts.php deleted file mode 100644 index 7186414..0000000 --- a/Chapter13/onlineStore/app/Http/Middleware/TrustHosts.php +++ /dev/null @@ -1,20 +0,0 @@ - - */ - public function hosts() - { - return [ - $this->allSubdomainsOfApplicationUrl(), - ]; - } -} diff --git a/Chapter13/onlineStore/app/Http/Middleware/TrustProxies.php b/Chapter13/onlineStore/app/Http/Middleware/TrustProxies.php deleted file mode 100644 index 3391630..0000000 --- a/Chapter13/onlineStore/app/Http/Middleware/TrustProxies.php +++ /dev/null @@ -1,28 +0,0 @@ -|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/Chapter13/onlineStore/app/Http/Middleware/VerifyCsrfToken.php b/Chapter13/onlineStore/app/Http/Middleware/VerifyCsrfToken.php deleted file mode 100644 index 9e86521..0000000 --- a/Chapter13/onlineStore/app/Http/Middleware/VerifyCsrfToken.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter13/onlineStore/app/Models/Product.php b/Chapter13/onlineStore/app/Models/Product.php deleted file mode 100644 index c428a88..0000000 --- a/Chapter13/onlineStore/app/Models/Product.php +++ /dev/null @@ -1,11 +0,0 @@ - - */ - 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', - ]; -} diff --git a/Chapter13/onlineStore/app/Providers/AppServiceProvider.php b/Chapter13/onlineStore/app/Providers/AppServiceProvider.php deleted file mode 100644 index ee8ca5b..0000000 --- a/Chapter13/onlineStore/app/Providers/AppServiceProvider.php +++ /dev/null @@ -1,28 +0,0 @@ - - */ - protected $policies = [ - // 'App\Models\Model' => 'App\Policies\ModelPolicy', - ]; - - /** - * Register any authentication / authorization services. - * - * @return void - */ - public function boot() - { - $this->registerPolicies(); - - // - } -} diff --git a/Chapter13/onlineStore/app/Providers/BroadcastServiceProvider.php b/Chapter13/onlineStore/app/Providers/BroadcastServiceProvider.php deleted file mode 100644 index 395c518..0000000 --- a/Chapter13/onlineStore/app/Providers/BroadcastServiceProvider.php +++ /dev/null @@ -1,21 +0,0 @@ -> - */ - protected $listen = [ - Registered::class => [ - SendEmailVerificationNotification::class, - ], - ]; - - /** - * Register any events for your application. - * - * @return void - */ - public function boot() - { - // - } -} diff --git a/Chapter13/onlineStore/app/Providers/RouteServiceProvider.php b/Chapter13/onlineStore/app/Providers/RouteServiceProvider.php deleted file mode 100644 index 7c17d1f..0000000 --- a/Chapter13/onlineStore/app/Providers/RouteServiceProvider.php +++ /dev/null @@ -1,63 +0,0 @@ -configureRateLimiting(); - - $this->routes(function () { - Route::prefix('api') - ->middleware('api') - ->namespace($this->namespace) - ->group(base_path('routes/api.php')); - - Route::middleware('web') - ->namespace($this->namespace) - ->group(base_path('routes/web.php')); - }); - } - - /** - * Configure the rate limiters for the application. - * - * @return void - */ - protected function configureRateLimiting() - { - RateLimiter::for('api', function (Request $request) { - return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); - }); - } -} diff --git a/Chapter13/onlineStore/artisan b/Chapter13/onlineStore/artisan deleted file mode 100644 index 67a3329..0000000 --- a/Chapter13/onlineStore/artisan +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env php -make(Illuminate\Contracts\Console\Kernel::class); - -$status = $kernel->handle( - $input = new Symfony\Component\Console\Input\ArgvInput, - new Symfony\Component\Console\Output\ConsoleOutput -); - -/* -|-------------------------------------------------------------------------- -| Shutdown The Application -|-------------------------------------------------------------------------- -| -| Once Artisan has finished running, we will fire off the shutdown events -| so that any final work may be done by the application before we shut -| down the process. This is the last thing to happen to the request. -| -*/ - -$kernel->terminate($input, $status); - -exit($status); diff --git a/Chapter13/onlineStore/bootstrap/app.php b/Chapter13/onlineStore/bootstrap/app.php deleted file mode 100644 index 037e17d..0000000 --- a/Chapter13/onlineStore/bootstrap/app.php +++ /dev/null @@ -1,55 +0,0 @@ -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/Chapter13/onlineStore/bootstrap/cache/.gitignore b/Chapter13/onlineStore/bootstrap/cache/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter13/onlineStore/bootstrap/cache/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter13/onlineStore/composer.json b/Chapter13/onlineStore/composer.json deleted file mode 100644 index f0f2eda..0000000 --- a/Chapter13/onlineStore/composer.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "name": "laravel/laravel", - "type": "project", - "description": "The Laravel Framework.", - "keywords": ["framework", "laravel"], - "license": "MIT", - "require": { - "php": "^8.0", - "fruitcake/laravel-cors": "^2.0.5", - "guzzlehttp/guzzle": "^7.2", - "laravel/framework": "^9.0", - "laravel/sanctum": "^2.14", - "laravel/tinker": "^2.7" - }, - "require-dev": { - "fakerphp/faker": "^1.9.1", - "laravel/sail": "^1.0.1", - "mockery/mockery": "^1.4.4", - "nunomaduro/collision": "^6.1", - "phpunit/phpunit": "^9.5.10", - "spatie/laravel-ignition": "^1.0", - "squizlabs/php_codesniffer": "^3.6" - }, - "autoload": { - "psr-4": { - "App\\": "app/", - "Database\\Factories\\": "database/factories/", - "Database\\Seeders\\": "database/seeders/" - } - }, - "autoload-dev": { - "psr-4": { - "Tests\\": "tests/" - } - }, - "scripts": { - "post-autoload-dump": [ - "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", - "@php artisan package:discover --ansi" - ], - "post-update-cmd": [ - "@php artisan vendor:publish --tag=laravel-assets --ansi --force" - ], - "post-root-package-install": [ - "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" - ], - "post-create-project-cmd": [ - "@php artisan key:generate --ansi" - ] - }, - "extra": { - "laravel": { - "dont-discover": [] - } - }, - "config": { - "optimize-autoloader": true, - "preferred-install": "dist", - "sort-packages": true - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/Chapter13/onlineStore/composer.lock b/Chapter13/onlineStore/composer.lock deleted file mode 100644 index b55e897..0000000 --- a/Chapter13/onlineStore/composer.lock +++ /dev/null @@ -1,7860 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "8bdcc31974d0d5a00db79c82827c8815", - "packages": [ - { - "name": "asm89/stack-cors", - "version": "v2.1.1", - "source": { - "type": "git", - "url": "https://github.com/asm89/stack-cors.git", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4|^5|^6" - }, - "require-dev": { - "phpunit/phpunit": "^7|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "psr-4": { - "Asm89\\Stack\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alexander", - "email": "iam.asm89@gmail.com" - } - ], - "description": "Cross-origin resource sharing library and stack middleware", - "homepage": "https://github.com/asm89/stack-cors", - "keywords": [ - "cors", - "stack" - ], - "support": { - "issues": "https://github.com/asm89/stack-cors/issues", - "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" - }, - "time": "2022-01-18T09:12:03+00:00" - }, - { - "name": "brick/math", - "version": "0.9.3", - "source": { - "type": "git", - "url": "https://github.com/brick/math.git", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", - "vimeo/psalm": "4.9.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Brick\\Math\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Arbitrary-precision arithmetic library", - "keywords": [ - "Arbitrary-precision", - "BigInteger", - "BigRational", - "arithmetic", - "bigdecimal", - "bignum", - "brick", - "math" - ], - "support": { - "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.9.3" - }, - "funding": [ - { - "url": "https://github.com/BenMorel", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/brick/math", - "type": "tidelift" - } - ], - "time": "2021-08-15T20:50:18+00:00" - }, - { - "name": "dflydev/dot-access-data", - "version": "v3.0.1", - "source": { - "type": "git", - "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c", - "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": "^3.14" - }, - "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.1" - }, - "time": "2021-08-13T13:06:58+00:00" - }, - { - "name": "doctrine/inflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "vimeo/psalm": "^4.10" - }, - "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.4" - }, - "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": "2021-10-22T20:16:43+00:00" - }, - { - "name": "doctrine/lexer", - "version": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" - } - }, - "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/1.2.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%2Flexer", - "type": "tidelift" - } - ], - "time": "2022-01-12T08:27:12+00:00" - }, - { - "name": "dragonmantank/cron-expression", - "version": "v3.3.1", - "source": { - "type": "git", - "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "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.1" - }, - "funding": [ - { - "url": "https://github.com/dragonmantank", - "type": "github" - } - ], - "time": "2022-01-18T15:43:28+00:00" - }, - { - "name": "egulias/email-validator", - "version": "3.1.2", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ee0db30118f661fb166bcffbf5d82032df484697", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^1.2", - "php": ">=7.2", - "symfony/polyfill-intl-idn": "^1.15" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^8.5.8|^9.3.3", - "vimeo/psalm": "^4" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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/3.1.2" - }, - "funding": [ - { - "url": "https://github.com/egulias", - "type": "github" - } - ], - "time": "2021-10-11T09:18:27+00:00" - }, - { - "name": "fruitcake/laravel-cors", - "version": "v2.0.5", - "source": { - "type": "git", - "url": "https://github.com/fruitcake/laravel-cors.git", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "shasum": "" - }, - "require": { - "asm89/stack-cors": "^2.0.1", - "illuminate/contracts": "^6|^7|^8|^9", - "illuminate/support": "^6|^7|^8|^9", - "php": ">=7.2", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4.3.4|^5|^6" - }, - "require-dev": { - "laravel/framework": "^6|^7.24|^8", - "orchestra/testbench-dusk": "^4|^5|^6|^7", - "phpunit/phpunit": "^6|^7|^8|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - }, - "laravel": { - "providers": [ - "Fruitcake\\Cors\\CorsServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Fruitcake\\Cors\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fruitcake", - "homepage": "https://fruitcake.nl" - }, - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", - "keywords": [ - "api", - "cors", - "crossdomain", - "laravel" - ], - "support": { - "issues": "https://github.com/fruitcake/laravel-cors/issues", - "source": "https://github.com/fruitcake/laravel-cors/tree/v2.0.5" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "time": "2022-01-03T14:53:04+00:00" - }, - { - "name": "graham-campbell/result-type", - "version": "v1.0.4", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "0690bde05318336c7221785f2a932467f98b64ca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/0690bde05318336c7221785f2a932467f98b64ca", - "reference": "0690bde05318336c7221785f2a932467f98b64ca", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "phpoption/phpoption": "^1.8" - }, - "require-dev": { - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", - "type": "tidelift" - } - ], - "time": "2021-11-21T21:41:47+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "7.4.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.8.3 || ^2.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.4.1", - "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.5 || ^9.3.5", - "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": { - "branch-alias": { - "dev-master": "7.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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.4.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": "2021-12-06T18:43:05+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "1.5.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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/1.5.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "time": "2021-10-22T20:56:57+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.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.4.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.8 || ^9.3.10" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "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.1.0" - }, - "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": "2021-10-06T17:43:30+00:00" - }, - { - "name": "laravel/framework", - "version": "v9.0.1", - "source": { - "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "shasum": "" - }, - "require": { - "doctrine/inflector": "^2.0", - "dragonmantank/cron-expression": "^3.1", - "egulias/email-validator": "^3.1", - "ext-mbstring": "*", - "ext-openssl": "*", - "laravel/serializable-closure": "^1.0", - "league/commonmark": "^2.2", - "league/flysystem": "^3.0", - "monolog/monolog": "^2.0", - "nesbot/carbon": "^2.53.1", - "php": "^8.0.2", - "psr/container": "^1.1.1|^2.0.1", - "psr/log": "^1.0|^2.0|^3.0", - "psr/simple-cache": "^1.0|^2.0|^3.0", - "ramsey/uuid": "^4.2.2", - "symfony/console": "^6.0", - "symfony/error-handler": "^6.0", - "symfony/finder": "^6.0", - "symfony/http-foundation": "^6.0", - "symfony/http-kernel": "^6.0", - "symfony/mailer": "^6.0", - "symfony/mime": "^6.0", - "symfony/process": "^6.0", - "symfony/routing": "^6.0", - "symfony/var-dumper": "^6.0", - "tijsverkoyen/css-to-inline-styles": "^2.2.2", - "vlucas/phpdotenv": "^5.4.1", - "voku/portable-ascii": "^2.0" - }, - "conflict": { - "tightenco/collect": "<5.5.33" - }, - "provide": { - "psr/container-implementation": "1.1|2.0", - "psr/simple-cache-implementation": "1.0|2.0|3.0" - }, - "replace": { - "illuminate/auth": "self.version", - "illuminate/broadcasting": "self.version", - "illuminate/bus": "self.version", - "illuminate/cache": "self.version", - "illuminate/collections": "self.version", - "illuminate/conditionable": "self.version", - "illuminate/config": "self.version", - "illuminate/console": "self.version", - "illuminate/container": "self.version", - "illuminate/contracts": "self.version", - "illuminate/cookie": "self.version", - "illuminate/database": "self.version", - "illuminate/encryption": "self.version", - "illuminate/events": "self.version", - "illuminate/filesystem": "self.version", - "illuminate/hashing": "self.version", - "illuminate/http": "self.version", - "illuminate/log": "self.version", - "illuminate/macroable": "self.version", - "illuminate/mail": "self.version", - "illuminate/notifications": "self.version", - "illuminate/pagination": "self.version", - "illuminate/pipeline": "self.version", - "illuminate/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": { - "aws/aws-sdk-php": "^3.198.1", - "doctrine/dbal": "^2.13.3|^3.1.4", - "fakerphp/faker": "^1.9.2", - "guzzlehttp/guzzle": "^7.2", - "league/flysystem-aws-s3-v3": "^3.0", - "league/flysystem-ftp": "^3.0", - "league/flysystem-sftp-v3": "^3.0", - "mockery/mockery": "^1.4.4", - "orchestra/testbench-core": "^7.0", - "pda/pheanstalk": "^4.0", - "phpstan/phpstan": "^1.0", - "phpunit/phpunit": "^9.5.8", - "predis/predis": "^1.1.9", - "symfony/amazon-mailer": "^6.0", - "symfony/cache": "^6.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.198.1).", - "brianium/paratest": "Required to run tests in parallel (^6.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", - "ext-bcmath": "Required to use the multiple_of validation rule.", - "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.", - "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.2).", - "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-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", - "mockery/mockery": "Required to use mocking (^1.4.4).", - "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).", - "predis/predis": "Required to use the predis connector (^1.1.9).", - "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.0).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^6.0).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.0).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.0).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.0).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.x-dev" - } - }, - "autoload": { - "files": [ - "src/Illuminate/Collections/helpers.php", - "src/Illuminate/Events/functions.php", - "src/Illuminate/Foundation/helpers.php", - "src/Illuminate/Support/helpers.php" - ], - "psr-4": { - "Illuminate\\": "src/Illuminate/", - "Illuminate\\Support\\": [ - "src/Illuminate/Macroable/", - "src/Illuminate/Collections/", - "src/Illuminate/Conditionable/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Laravel Framework.", - "homepage": "https://laravel.com", - "keywords": [ - "framework", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2022-02-09T15:00:05+00:00" - }, - { - "name": "laravel/sanctum", - "version": "v2.14.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/sanctum.git", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/0647a87140c7522e75826cffcadb3ad6e01f71e9", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/contracts": "^6.9|^7.0|^8.0|^9.0", - "illuminate/database": "^6.9|^7.0|^8.0|^9.0", - "illuminate/support": "^6.9|^7.0|^8.0|^9.0", - "php": "^7.2|^8.0" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0", - "phpunit/phpunit": "^8.0|^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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": "2022-01-12T15:07:43+00:00" - }, - { - "name": "laravel/serializable-closure", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/serializable-closure.git", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/65c9faf50d567b65d81764a44526545689e3fe63", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "pestphp/pest": "^1.18", - "phpstan/phpstan": "^0.12.98", - "symfony/var-dumper": "^5.3" - }, - "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": "2022-02-01T16:29:39+00:00" - }, - { - "name": "laravel/tinker", - "version": "v2.7.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/tinker.git", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/5f2f9815b7631b9f586a3de7933c25f9327d4073", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073", - "shasum": "" - }, - "require": { - "illuminate/console": "^6.0|^7.0|^8.0|^9.0", - "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.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", - "phpunit/phpunit": "^8.5.8|^9.3.3" - }, - "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.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.7.0" - }, - "time": "2022-01-10T08:52:49+00:00" - }, - { - "name": "league/commonmark", - "version": "2.2.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/commonmark.git", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "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.15" - }, - "require-dev": { - "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.0", - "commonmark/commonmark.js": "0.30.0", - "composer/package-versions-deprecated": "^1.8", - "erusev/parsedown": "^1.0", - "ext-json": "*", - "github/gfm": "0.29.0", - "michelf/php-markdown": "^1.4", - "phpstan/phpstan": "^0.12.88 || ^1.0.0", - "phpunit/phpunit": "^9.5.5", - "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", - "unleashedtech/php-coding-standard": "^3.1", - "vimeo/psalm": "^4.7.3" - }, - "suggest": { - "symfony/yaml": "v2.3+ required if using the Front Matter extension" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.3-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": "2022-01-25T14:37:33+00:00" - }, - { - "name": "league/config", - "version": "v1.1.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/config.git", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/config/zipball/a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^3.0.1", - "nette/schema": "^1.2", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.90", - "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": "2021-08-14T12:15:32+00:00" - }, - { - "name": "league/flysystem", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9f8b4260031bfef5497477da53dd57b2aaff0e06", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06", - "shasum": "" - }, - "require": { - "ext-json": "*", - "league/mime-type-detection": "^1.0.0", - "php": "^8.0.2" - }, - "conflict": { - "guzzlehttp/guzzle": "<7.0", - "guzzlehttp/ringphp": "<1.1.1", - "symfony/http-client": "<5.2" - }, - "require-dev": { - "async-aws/s3": "^1.5", - "async-aws/simple-s3": "^1.0", - "aws/aws-sdk-php": "^3.198.1", - "composer/semver": "^3.0", - "ext-fileinfo": "*", - "ext-ftp": "*", - "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.5", - "google/cloud-storage": "^1.23", - "phpseclib/phpseclib": "^2.0", - "phpstan/phpstan": "^0.12.26", - "phpunit/phpunit": "^9.5.11", - "sabre/dav": "^4.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.0.3" - }, - "funding": [ - { - "url": "https://offset.earth/frankdejonge", - "type": "custom" - }, - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2022-01-31T19:41:04+00:00" - }, - { - "name": "league/mime-type-detection", - "version": "1.9.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/aa70e813a6ad3d1558fc927863d47309b4c23e69", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.2", - "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" - }, - "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.9.0" - }, - "funding": [ - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2021-11-21T11:48:40+00:00" - }, - { - "name": "monolog/monolog", - "version": "2.3.5", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd4380d6fc37626e2f799f29d91195040137eba9", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "provide": { - "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7", - "graylog2/gelf-php": "^1.4.2", - "mongodb/mongodb": "^1.8", - "php-amqplib/php-amqplib": "~2.4 || ^3", - "php-console/php-console": "^3.1.3", - "phpspec/prophecy": "^1.6.1", - "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5", - "predis/predis": "^1.1", - "rollbar/rollbar": "^1.3", - "ruflin/elastica": ">=0.90@dev", - "swiftmailer/swiftmailer": "^5.3|^6.0" - }, - "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", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "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": "2.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/2.3.5" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" - } - ], - "time": "2021-10-01T21:08:31+00:00" - }, - { - "name": "nesbot/carbon", - "version": "2.56.0", - "source": { - "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1.8 || ^8.0", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "doctrine/dbal": "^2.0 || ^3.0", - "doctrine/orm": "^2.7", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "phpmd/phpmd": "^2.9", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.54 || ^1.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.14", - "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://opencollective.com/Carbon", - "type": "open_collective" - }, - { - "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", - "type": "tidelift" - } - ], - "time": "2022-01-21T17:08:38+00:00" - }, - { - "name": "nette/schema", - "version": "v1.2.2", - "source": { - "type": "git", - "url": "https://github.com/nette/schema.git", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/9a39cef03a5b34c7de64f551538cbba05c2be5df", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df", - "shasum": "" - }, - "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": ">=7.1 <8.2" - }, - "require-dev": { - "nette/tester": "^2.3 || ^2.4", - "phpstan/phpstan-nette": "^0.12", - "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.2" - }, - "time": "2021-10-15T11:40:02+00:00" - }, - { - "name": "nette/utils", - "version": "v3.2.7", - "source": { - "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/0af4e3de4df9f1543534beab255ccf459e7a2c99", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99", - "shasum": "" - }, - "require": { - "php": ">=7.2 <8.2" - }, - "conflict": { - "nette/di": "<3.0.6" - }, - "require-dev": { - "nette/tester": "~2.0", - "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.3" - }, - "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()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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 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/v3.2.7" - }, - "time": "2022-01-24T11:29:14+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.13.2", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", - "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.13.2" - }, - "time": "2021-11-30T19:35:32+00:00" - }, - { - "name": "phpoption/phpoption", - "version": "1.8.1", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-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.8.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", - "type": "tidelift" - } - ], - "time": "2021-12-04T23:24:31+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.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.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": "http://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/tree/master" - }, - "time": "2020-06-29T06:28:15+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.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": "http://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/master" - }, - "time": "2019-04-30T12:38:16+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.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": "http://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/master" - }, - "time": "2016-08-06T14:39: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.1", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "570292577277f06f590635381a7f761a6cf4f026" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/570292577277f06f590635381a7f761a6cf4f026", - "reference": "570292577277f06f590635381a7f761a6cf4f026", - "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" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "3.17.05.02" - }, - "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.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." - }, - "bin": [ - "bin/psysh" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "0.11.x-dev" - } - }, - "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.1" - }, - "time": "2022-01-03T13:58:38+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": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/ramsey/collection.git", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "shasum": "" - }, - "require": { - "php": "^7.3 || ^8", - "symfony/polyfill-php81": "^1.23" - }, - "require-dev": { - "captainhook/captainhook": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "ergebnis/composer-normalize": "^2.6", - "fakerphp/faker": "^1.5", - "hamcrest/hamcrest-php": "^2", - "jangregor/phpstan-prophecy": "^0.8", - "mockery/mockery": "^1.3", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1", - "phpstan/phpstan": "^0.12.32", - "phpstan/phpstan-mockery": "^0.12.5", - "phpstan/phpstan-phpunit": "^0.12.11", - "phpunit/phpunit": "^8.5 || ^9", - "psy/psysh": "^0.10.4", - "slevomat/coding-standard": "^6.3", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.4" - }, - "type": "library", - "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/1.2.2" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "time": "2021-10-10T03:01:02+00:00" - }, - { - "name": "ramsey/uuid", - "version": "4.2.3", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "shasum": "" - }, - "require": { - "brick/math": "^0.8 || ^0.9", - "ext-json": "*", - "php": "^7.2 || ^8.0", - "ramsey/collection": "^1.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php80": "^1.14" - }, - "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", - "moontoast/math": "^1.1", - "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.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-mockery": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^8.5 || ^9", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" - }, - "suggest": { - "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-ctype": "Enables faster processing of character classification using ctype functions.", - "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": { - "branch-alias": { - "dev-main": "4.x-dev" - }, - "captainhook": { - "force-install": true - } - }, - "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "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.2.3" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2021-09-25T23:10:38+00:00" - }, - { - "name": "symfony/console", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/22e8efd019c3270c4f79376234a3f8752cd25490", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.4|^6.0" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/css-selector", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/1955d595c12c111629cc814d3f2a2ff13580508a", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a", - "shasum": "" - }, - "require": { - "php": ">=8.0.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/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-11-01T23:48:49+00:00" - }, - { - "name": "symfony/error-handler", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/20343b3bad7ebafa38138ddcb97290a24722b57b", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" - }, - "bin": [ - "Resources/bin/patch-type-declarations" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to manage errors and ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6472ea2dd415e925b90ca82be64b8bc6157f3934", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/event-dispatcher-contracts": "^2|^3" - }, - "conflict": { - "symfony/dependency-injection": "<5.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^5.4|^6.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/aa5422287b75594b90ee9cd807caf8f0df491385", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/event-dispatcher": "^1" - }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-07-15T12:33:35+00:00" - }, - { - "name": "symfony/finder", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/8661b74dbabc23223f38c9b99d3f8ade71170430", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ad157299ced81a637fade1efcadd688d6deba5c1", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1" - }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/cache": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0" - }, - "suggest": { - "symfony/mime": "To use the file extension guesser" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v6.0.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/error-handler": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", - "symfony/twig-bridge": "<5.4", - "symfony/validator": "<5.4", - "twig/twig": "<2.13" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/process": "^5.4|^6.0", - "symfony/routing": "^5.4|^6.0", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-29T18:12:46+00:00" - }, - { - "name": "symfony/mailer", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mailer.git", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "shasum": "" - }, - "require": { - "egulias/email-validator": "^2.1.10|^3", - "php": ">=8.0.2", - "psr/event-dispatcher": "^1", - "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3" - }, - "conflict": { - "symfony/http-kernel": "<5.4" - }, - "require-dev": { - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/messenger": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/mime", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/2cd9601efd040e56f43360daa68f3c6b0534923a", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "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" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "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.24.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": "2021-10-20T20:35:02+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-11-23T21:10:46+00:00" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44", - "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.23-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.24.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": "2021-09-14T14:02:44+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.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": "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.24.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": "2021-11-30T18:21:41+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-05-27T09:17:38+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:33+00:00" - }, - { - "name": "symfony/polyfill-php81", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:11+00:00" - }, - { - "name": "symfony/process", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/298ed357274c1868c20a0061df256a1250a6c4af", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/routing", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/yaml": "<5.4" - }, - "require-dev": { - "doctrine/annotations": "^1.12", - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/36715ebf9fb9db73db0cb24263c79077c6fe8603", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/container": "^2.0" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "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.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": "2021-11-04T17:53:12+00:00" - }, - { - "name": "symfony/string", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/522144f0c4c004c80d56fa47e40e17028e2eefc2", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.0" - }, - "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/translation-contracts": "^2.0|^3.0", - "symfony/var-exporter": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "files": [ - "Resources/functions.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 an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/translation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/71bb15335798f8c4da110911bcf2d2fead7a430d", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.3|^3.0" - }, - "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" - }, - "provide": { - "symfony/translation-implementation": "2.3|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-07T00:29:03+00:00" - }, - { - "name": "symfony/translation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "suggest": { - "symfony/translation-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - } - }, - "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.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": "2021-09-07T12:43:40+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7b701676fc64f9ef11f9b4870f16b48f66be4834", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<5.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-17T16:30:44+00:00" - }, - { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.4", - "source": { - "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" - } - ], - "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", - "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "support": { - "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" - }, - "time": "2021-12-08T09:12:39+00:00" - }, - { - "name": "vlucas/phpdotenv", - "version": "v5.4.1", - "source": { - "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", - "shasum": "" - }, - "require": { - "ext-pcre": "*", - "graham-campbell/result-type": "^1.0.2", - "php": "^7.1.3 || ^8.0", - "phpoption/phpoption": "^1.8", - "symfony/polyfill-ctype": "^1.23", - "symfony/polyfill-mbstring": "^1.23.1", - "symfony/polyfill-php80": "^1.23.1" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" - }, - "suggest": { - "ext-filter": "Required to use the boolean validator." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.4-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.4.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", - "type": "tidelift" - } - ], - "time": "2021-12-12T23:22:04+00:00" - }, - { - "name": "voku/portable-ascii", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/voku/portable-ascii.git", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/9bd89e83cecdf8c37b64909454249eaed98b2c89", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89", - "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.0" - }, - "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-01-24T18:59:03+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "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.10.0" - }, - "time": "2021-03-09T10:59:23+00:00" - } - ], - "packages-dev": [ - { - "name": "doctrine/instantiator", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.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%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2020-11-10T18:47:58+00:00" - }, - { - "name": "facade/ignition-contracts", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/facade/ignition-contracts.git", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^v2.15.8", - "phpunit/phpunit": "^9.3.11", - "vimeo/psalm": "^3.17.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Facade\\IgnitionContracts\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://flareapp.io", - "role": "Developer" - } - ], - "description": "Solution contracts for Ignition", - "homepage": "https://github.com/facade/ignition-contracts", - "keywords": [ - "contracts", - "flare", - "ignition" - ], - "support": { - "issues": "https://github.com/facade/ignition-contracts/issues", - "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" - }, - "time": "2020-10-16T08:27:54+00:00" - }, - { - "name": "fakerphp/faker", - "version": "v1.19.0", - "source": { - "type": "git", - "url": "https://github.com/FakerPHP/Faker.git", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^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": "*", - "symfony/phpunit-bridge": "^4.4 || ^5.2" - }, - "suggest": { - "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", - "ext-curl": "Required by Faker\\Provider\\Image to download images.", - "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", - "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.19-dev" - } - }, - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "François Zaninotto" - } - ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], - "support": { - "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0" - }, - "time": "2022-02-02T17:38:57+00:00" - }, - { - "name": "filp/whoops", - "version": "2.14.5", - "source": { - "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "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.14.5" - }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "time": "2022-01-07T12:00:00+00:00" - }, - { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "shasum": "" - }, - "require": { - "php": "^5.3|^7.0|^8.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" - }, - "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "classmap": [ - "hamcrest" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "This is the PHP port of Hamcrest Matchers", - "keywords": [ - "test" - ], - "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" - }, - "time": "2020-07-09T08:09:16+00:00" - }, - { - "name": "laravel/sail", - "version": "v1.13.2", - "source": { - "type": "git", - "url": "https://github.com/laravel/sail.git", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.0|^9.0", - "illuminate/contracts": "^8.0|^9.0", - "illuminate/support": "^8.0|^9.0", - "php": "^7.3|^8.0" - }, - "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": "2022-02-08T14:14:12+00:00" - }, - { - "name": "mockery/mockery", - "version": "1.5.0", - "source": { - "type": "git", - "url": "https://github.com/mockery/mockery.git", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "shasum": "" - }, - "require": { - "hamcrest/hamcrest-php": "^2.0.1", - "lib-pcre": ">=7.0", - "php": "^7.3 || ^8.0" - }, - "conflict": { - "phpunit/phpunit": "<8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-0": { - "Mockery": "library/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" - } - ], - "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": { - "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.5.0" - }, - "time": "2022-01-20T13:18:17+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.10.2", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "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.10.2" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2020-11-13T09:40:50+00:00" - }, - { - "name": "nunomaduro/collision", - "version": "v6.1.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/collision.git", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "shasum": "" - }, - "require": { - "facade/ignition-contracts": "^1.0.2", - "filp/whoops": "^2.14.5", - "php": "^8.0.0", - "symfony/console": "^6.0.2" - }, - "require-dev": { - "brianium/paratest": "^6.4.1", - "laravel/framework": "^9.0", - "nunomaduro/larastan": "^1.0.2", - "nunomaduro/mock-final-classes": "^1.1.0", - "orchestra/testbench": "^7.0.0", - "phpunit/phpunit": "^9.5.11" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "6.x-dev" - }, - "laravel": { - "providers": [ - "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" - ] - } - }, - "autoload": { - "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": "2022-01-18T17:49:08+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.1.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/15a90844ad40f127afd244c0cad228de2a80052a", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a", - "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.1.1" - }, - "time": "2022-02-07T21:56:48+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.6.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "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.6.0" - }, - "time": "2022-01-04T19:58:01+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" - }, - "time": "2021-12-08T12:19:24+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "9.2.10", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d5850aaf931743067f4bfc1ae4cbd06468400687", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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 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", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.10" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-05T09:12:13+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "3.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-02T12:48:52+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "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/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:58:55+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T05:33:50+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.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/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:16:10+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "9.5.13", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/597cb647654ede35e43b137926dfdfef0fb11743", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.3.1", - "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": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.7", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", - "sebastian/version": "^3.0.2" - }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.13" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-01-24T07:33:35+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:08:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "1.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:08:54+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:30:19+00:00" - }, - { - "name": "sebastian/comparator", - "version": "4.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:49:45+00:00" - }, - { - "name": "sebastian/complexity", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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 calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:52:27+00:00" - }, - { - "name": "sebastian/diff", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:10:38+00:00" - }, - { - "name": "sebastian/environment", - "version": "5.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-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": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:52:38+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "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", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-11-11T14:18:36+00:00" - }, - { - "name": "sebastian/global-state", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-11T13:31:12+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-28T06:42:11+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "http://www.github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:17:30+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:45:17+00:00" - }, - { - "name": "sebastian/type", - "version": "2.3.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-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/2.3.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-15T12:49:02+00:00" - }, - { - "name": "sebastian/version", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:39:44+00:00" - }, - { - "name": "spatie/backtrace", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/backtrace.git", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "ext-json": "*", - "phpunit/phpunit": "^9.3", - "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": { - "issues": "https://github.com/spatie/backtrace/issues", - "source": "https://github.com/spatie/backtrace/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/sponsors/spatie", - "type": "github" - }, - { - "url": "https://spatie.be/open-source/support-us", - "type": "other" - } - ], - "time": "2021-11-09T10:57:15+00:00" - }, - { - "name": "spatie/flare-client-php", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/flare-client-php.git", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "shasum": "" - }, - "require": { - "illuminate/pipeline": "^8.0|^9.0", - "php": "^8.0", - "spatie/backtrace": "^1.2", - "symfony/http-foundation": "^5.0|^6.0", - "symfony/mime": "^5.2|^6.0", - "symfony/process": "^5.2|^6.0", - "symfony/var-dumper": "^5.2|^6.0" - }, - "require-dev": { - "dms/phpunit-arraysubset-asserts": "^0.3.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/phpunit-snapshot-assertions": "^4.0" - }, - "type": "library", - "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.0.1" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2022-02-04T15:21:00+00:00" - }, - { - "name": "spatie/ignition", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/spatie/ignition.git", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/d2d5ba823af3004268556e87dfc94449e4159f5a", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "monolog/monolog": "^2.0", - "php": "^8.0", - "spatie/flare-client-php": "^1.0", - "symfony/console": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "mockery/mockery": "^1.4", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/ray": "^1.32", - "symfony/process": "^5.4|^6.0" - }, - "type": "library", - "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": "2022-01-19T12:57:41+00:00" - }, - { - "name": "spatie/laravel-ignition", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/68250225a9f83b086462c2af1b1139dfde48fbd2", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*", - "illuminate/support": "^8.77|^9.0", - "monolog/monolog": "^2.3", - "php": "^8.0", - "spatie/flare-client-php": "^1.0.1", - "spatie/ignition": "^1.0", - "symfony/console": "^5.0|^6.0", - "symfony/var-dumper": "^5.0|^6.0" - }, - "require-dev": { - "filp/whoops": "^2.14", - "livewire/livewire": "^2.8|dev-develop", - "mockery/mockery": "^1.4", - "nunomaduro/larastan": "^1.0", - "orchestra/testbench": "^6.23|^7.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/laravel-ray": "^1.27" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Spatie\\LaravelIgnition\\IgnitionServiceProvider" - ], - "aliases": { - "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" - } - } - }, - "autoload": { - "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": "2022-02-04T15:25:56+00:00" - }, - { - "name": "squizlabs/php_codesniffer", - "version": "3.6.2", - "source": { - "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", - "shasum": "" - }, - "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.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": "lead" - } - ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", - "keywords": [ - "phpcs", - "standards" - ], - "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" - }, - "time": "2021-12-12T21:44:58+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2021-07-28T10:34:58+00:00" - } - ], - "aliases": [], - "minimum-stability": "dev", - "stability-flags": [], - "prefer-stable": true, - "prefer-lowest": false, - "platform": { - "php": "^8.0" - }, - "platform-dev": [], - "plugin-api-version": "2.1.0" -} diff --git a/Chapter13/onlineStore/config/app.php b/Chapter13/onlineStore/config/app.php deleted file mode 100644 index 1941d7c..0000000 --- a/Chapter13/onlineStore/config/app.php +++ /dev/null @@ -1,197 +0,0 @@ - env('APP_NAME', 'Laravel'), - - /* - |-------------------------------------------------------------------------- - | Application Environment - |-------------------------------------------------------------------------- - | - | This value determines the "environment" your application is currently - | running in. This may determine how you prefer to configure various - | services the application utilizes. Set this in your ".env" file. - | - */ - - 'env' => env('APP_ENV', 'production'), - - /* - |-------------------------------------------------------------------------- - | Application Debug Mode - |-------------------------------------------------------------------------- - | - | When your application is in debug mode, detailed error messages with - | stack traces will be shown on every error that occurs within your - | application. If disabled, a simple generic error page is shown. - | - */ - - 'debug' => (bool) env('APP_DEBUG', false), - - /* - |-------------------------------------------------------------------------- - | Application URL - |-------------------------------------------------------------------------- - | - | This URL is used by the console to properly generate URLs when using - | the Artisan command line tool. You should set this to the root of - | your application so that it is used when running Artisan tasks. - | - */ - - 'url' => env('APP_URL', 'http://localhost'), - - 'asset_url' => env('ASSET_URL', null), - - /* - |-------------------------------------------------------------------------- - | 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', - - /* - |-------------------------------------------------------------------------- - | 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' => [ - - /* - * Laravel Framework Service Providers... - */ - Illuminate\Auth\AuthServiceProvider::class, - Illuminate\Broadcasting\BroadcastServiceProvider::class, - Illuminate\Bus\BusServiceProvider::class, - Illuminate\Cache\CacheServiceProvider::class, - Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, - Illuminate\Cookie\CookieServiceProvider::class, - Illuminate\Database\DatabaseServiceProvider::class, - Illuminate\Encryption\EncryptionServiceProvider::class, - Illuminate\Filesystem\FilesystemServiceProvider::class, - Illuminate\Foundation\Providers\FoundationServiceProvider::class, - Illuminate\Hashing\HashServiceProvider::class, - Illuminate\Mail\MailServiceProvider::class, - Illuminate\Notifications\NotificationServiceProvider::class, - Illuminate\Pagination\PaginationServiceProvider::class, - Illuminate\Pipeline\PipelineServiceProvider::class, - Illuminate\Queue\QueueServiceProvider::class, - Illuminate\Redis\RedisServiceProvider::class, - Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, - Illuminate\Session\SessionServiceProvider::class, - Illuminate\Translation\TranslationServiceProvider::class, - Illuminate\Validation\ValidationServiceProvider::class, - Illuminate\View\ViewServiceProvider::class, - - /* - * 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, - - ], - - /* - |-------------------------------------------------------------------------- - | 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([ - // ... - ])->toArray(), - -]; diff --git a/Chapter13/onlineStore/config/auth.php b/Chapter13/onlineStore/config/auth.php deleted file mode 100644 index d8c6cee..0000000 --- a/Chapter13/onlineStore/config/auth.php +++ /dev/null @@ -1,111 +0,0 @@ - [ - '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 expire 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. - | - */ - - 'passwords' => [ - 'users' => [ - 'provider' => 'users', - 'table' => 'password_resets', - '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/Chapter13/onlineStore/config/broadcasting.php b/Chapter13/onlineStore/config/broadcasting.php deleted file mode 100644 index 67fcbbd..0000000 --- a/Chapter13/onlineStore/config/broadcasting.php +++ /dev/null @@ -1,67 +0,0 @@ - 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'), - 'useTLS' => true, - ], - '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/Chapter13/onlineStore/config/cache.php b/Chapter13/onlineStore/config/cache.php deleted file mode 100644 index 8736c7a..0000000 --- a/Chapter13/onlineStore/config/cache.php +++ /dev/null @@ -1,110 +0,0 @@ - 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'), - ], - - '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 a RAM based store such as APC or Memcached, there might - | be other applications utilizing the same cache. So, we'll specify a - | value to get prefixed to all our keys so we can avoid collisions. - | - */ - - 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'), - -]; diff --git a/Chapter13/onlineStore/config/cors.php b/Chapter13/onlineStore/config/cors.php deleted file mode 100644 index 8a39e6d..0000000 --- a/Chapter13/onlineStore/config/cors.php +++ /dev/null @@ -1,34 +0,0 @@ - ['api/*', 'sanctum/csrf-cookie'], - - 'allowed_methods' => ['*'], - - 'allowed_origins' => ['*'], - - 'allowed_origins_patterns' => [], - - 'allowed_headers' => ['*'], - - 'exposed_headers' => [], - - 'max_age' => 0, - - 'supports_credentials' => false, - -]; diff --git a/Chapter13/onlineStore/config/database.php b/Chapter13/onlineStore/config/database.php deleted file mode 100644 index 0faebae..0000000 --- a/Chapter13/onlineStore/config/database.php +++ /dev/null @@ -1,147 +0,0 @@ - env('DB_CONNECTION', 'mysql'), - - /* - |-------------------------------------------------------------------------- - | Database Connections - |-------------------------------------------------------------------------- - | - | Here are each of the database connections setup for your application. - | Of course, examples of configuring each database platform that is - | supported by Laravel is shown below to make development simple. - | - | - | All database work in Laravel is done through the PHP PDO facilities - | so make sure you have the driver for your particular database of - | choice installed on your machine before you begin development. - | - */ - - 'connections' => [ - - 'sqlite' => [ - 'driver' => 'sqlite', - 'url' => env('DATABASE_URL'), - 'database' => env('DB_DATABASE', database_path('database.sqlite')), - 'prefix' => '', - 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), - ], - - 'mysql' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '3306'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'unix_socket' => env('DB_SOCKET', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - 'pgsql' => [ - 'driver' => 'pgsql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '5432'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - 'search_path' => 'public', - 'sslmode' => 'prefer', - ], - - 'sqlsrv' => [ - 'driver' => 'sqlsrv', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', 'localhost'), - 'port' => env('DB_PORT', '1433'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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'), - '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'), - 'password' => env('REDIS_PASSWORD'), - 'port' => env('REDIS_PORT', '6379'), - 'database' => env('REDIS_CACHE_DB', '1'), - ], - - ], - -]; diff --git a/Chapter13/onlineStore/config/filesystems.php b/Chapter13/onlineStore/config/filesystems.php deleted file mode 100644 index cf5abce..0000000 --- a/Chapter13/onlineStore/config/filesystems.php +++ /dev/null @@ -1,73 +0,0 @@ - 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 setup for each driver as an example of the required options. - | - | Supported Drivers: "local", "ftp", "sftp", "s3" - | - */ - - 'disks' => [ - - 'local' => [ - 'driver' => 'local', - 'root' => storage_path('app'), - ], - - 'public' => [ - 'driver' => 'local', - 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', - 'visibility' => 'public', - ], - - '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), - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter13/onlineStore/config/hashing.php b/Chapter13/onlineStore/config/hashing.php deleted file mode 100644 index bcd3be4..0000000 --- a/Chapter13/onlineStore/config/hashing.php +++ /dev/null @@ -1,52 +0,0 @@ - '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/Chapter13/onlineStore/config/logging.php b/Chapter13/onlineStore/config/logging.php deleted file mode 100644 index fefe088..0000000 --- a/Chapter13/onlineStore/config/logging.php +++ /dev/null @@ -1,119 +0,0 @@ - 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' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), - - /* - |-------------------------------------------------------------------------- - | 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'), - ], - - 'daily' => [ - 'driver' => 'daily', - 'path' => storage_path('logs/laravel.log'), - 'level' => env('LOG_LEVEL', 'debug'), - 'days' => 14, - ], - - 'slack' => [ - 'driver' => 'slack', - 'url' => env('LOG_SLACK_WEBHOOK_URL'), - 'username' => 'Laravel Log', - 'emoji' => ':boom:', - 'level' => env('LOG_LEVEL', 'critical'), - ], - - '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'), - ], - ], - - 'stderr' => [ - 'driver' => 'monolog', - 'level' => env('LOG_LEVEL', 'debug'), - 'handler' => StreamHandler::class, - 'formatter' => env('LOG_STDERR_FORMATTER'), - 'with' => [ - 'stream' => 'php://stderr', - ], - ], - - 'syslog' => [ - 'driver' => 'syslog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'errorlog' => [ - 'driver' => 'errorlog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'null' => [ - 'driver' => 'monolog', - 'handler' => NullHandler::class, - ], - - 'emergency' => [ - 'path' => storage_path('logs/laravel.log'), - ], - ], - -]; diff --git a/Chapter13/onlineStore/config/mail.php b/Chapter13/onlineStore/config/mail.php deleted file mode 100644 index 87b6fe3..0000000 --- a/Chapter13/onlineStore/config/mail.php +++ /dev/null @@ -1,117 +0,0 @@ - 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", - | "postmark", "log", "array", "failover" - | - */ - - 'mailers' => [ - 'smtp' => [ - 'transport' => 'smtp', - '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, - ], - - 'ses' => [ - 'transport' => 'ses', - ], - - 'mailgun' => [ - 'transport' => 'mailgun', - ], - - 'postmark' => [ - 'transport' => 'postmark', - ], - - 'sendmail' => [ - 'transport' => 'sendmail', - 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -t -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/Chapter13/onlineStore/config/queue.php b/Chapter13/onlineStore/config/queue.php deleted file mode 100644 index 25ea5a8..0000000 --- a/Chapter13/onlineStore/config/queue.php +++ /dev/null @@ -1,93 +0,0 @@ - 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, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter13/onlineStore/config/sanctum.php b/Chapter13/onlineStore/config/sanctum.php deleted file mode 100644 index 9281c92..0000000 --- a/Chapter13/onlineStore/config/sanctum.php +++ /dev/null @@ -1,65 +0,0 @@ - explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( - '%s%s', - 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', - env('APP_URL') ? ','.parse_url(env('APP_URL'), PHP_URL_HOST) : '' - ))), - - /* - |-------------------------------------------------------------------------- - | 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/Chapter13/onlineStore/config/services.php b/Chapter13/onlineStore/config/services.php deleted file mode 100644 index 2a1d616..0000000 --- a/Chapter13/onlineStore/config/services.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - 'domain' => env('MAILGUN_DOMAIN'), - 'secret' => env('MAILGUN_SECRET'), - 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), - ], - - '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/Chapter13/onlineStore/config/session.php b/Chapter13/onlineStore/config/session.php deleted file mode 100644 index 8fed97c..0000000 --- a/Chapter13/onlineStore/config/session.php +++ /dev/null @@ -1,201 +0,0 @@ - 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/Chapter13/onlineStore/config/view.php b/Chapter13/onlineStore/config/view.php deleted file mode 100644 index 22b8a18..0000000 --- a/Chapter13/onlineStore/config/view.php +++ /dev/null @@ -1,36 +0,0 @@ - [ - 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/Chapter13/onlineStore/database/.gitignore b/Chapter13/onlineStore/database/.gitignore deleted file mode 100644 index 9b19b93..0000000 --- a/Chapter13/onlineStore/database/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.sqlite* diff --git a/Chapter13/onlineStore/database/factories/UserFactory.php b/Chapter13/onlineStore/database/factories/UserFactory.php deleted file mode 100644 index d6ca926..0000000 --- a/Chapter13/onlineStore/database/factories/UserFactory.php +++ /dev/null @@ -1,42 +0,0 @@ - - */ -class UserFactory extends Factory -{ - /** - * Define the model's default state. - * - * @return array - */ - public function definition() - { - return [ - 'name' => $this->faker->name(), - 'email' => $this->faker->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. - * - * @return \Illuminate\Database\Eloquent\Factories\Factory - */ - public function unverified() - { - return $this->state(function (array $attributes) { - return [ - 'email_verified_at' => null, - ]; - }); - } -} diff --git a/Chapter13/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php b/Chapter13/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php deleted file mode 100644 index cf6b776..0000000 --- a/Chapter13/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->string('name'); - $table->string('email')->unique(); - $table->timestamp('email_verified_at')->nullable(); - $table->string('password'); - $table->rememberToken(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('users'); - } -}; diff --git a/Chapter13/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php b/Chapter13/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php deleted file mode 100644 index fcacb80..0000000 --- a/Chapter13/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php +++ /dev/null @@ -1,32 +0,0 @@ -string('email')->index(); - $table->string('token'); - $table->timestamp('created_at')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('password_resets'); - } -}; diff --git a/Chapter13/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/Chapter13/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php deleted file mode 100644 index 1719198..0000000 --- a/Chapter13/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php +++ /dev/null @@ -1,36 +0,0 @@ -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. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('failed_jobs'); - } -}; diff --git a/Chapter13/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/Chapter13/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php deleted file mode 100644 index fd235f8..0000000 --- a/Chapter13/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->morphs('tokenable'); - $table->string('name'); - $table->string('token', 64)->unique(); - $table->text('abilities')->nullable(); - $table->timestamp('last_used_at')->nullable(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('personal_access_tokens'); - } -}; diff --git a/Chapter13/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php b/Chapter13/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php deleted file mode 100644 index 2eecdc2..0000000 --- a/Chapter13/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php +++ /dev/null @@ -1,35 +0,0 @@ -id(); - $table->string('name'); - $table->text('description'); - $table->string('image'); - $table->integer('price'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('products'); - } -}; diff --git a/Chapter13/onlineStore/database/seeders/DatabaseSeeder.php b/Chapter13/onlineStore/database/seeders/DatabaseSeeder.php deleted file mode 100644 index 71f673f..0000000 --- a/Chapter13/onlineStore/database/seeders/DatabaseSeeder.php +++ /dev/null @@ -1,19 +0,0 @@ -create(); - } -} diff --git a/Chapter13/onlineStore/lang/en.json b/Chapter13/onlineStore/lang/en.json deleted file mode 100644 index 577680d..0000000 --- a/Chapter13/onlineStore/lang/en.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "The :attribute must contain at least one letter.": "The :attribute must contain at least one letter.", - "The :attribute must contain at least one number.": "The :attribute must contain at least one number.", - "The :attribute must contain at least one symbol.": "The :attribute must contain at least one symbol.", - "The :attribute must contain at least one uppercase and one lowercase letter.": "The :attribute must contain at least one uppercase and one lowercase letter.", - "The given :attribute has appeared in a data leak. Please choose a different :attribute.": "The given :attribute has appeared in a data leak. Please choose a different :attribute." -} diff --git a/Chapter13/onlineStore/lang/en/auth.php b/Chapter13/onlineStore/lang/en/auth.php deleted file mode 100644 index 6598e2c..0000000 --- a/Chapter13/onlineStore/lang/en/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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/Chapter13/onlineStore/lang/en/pagination.php b/Chapter13/onlineStore/lang/en/pagination.php deleted file mode 100644 index d481411..0000000 --- a/Chapter13/onlineStore/lang/en/pagination.php +++ /dev/null @@ -1,19 +0,0 @@ - '« Previous', - 'next' => 'Next »', - -]; diff --git a/Chapter13/onlineStore/lang/en/passwords.php b/Chapter13/onlineStore/lang/en/passwords.php deleted file mode 100644 index 2345a56..0000000 --- a/Chapter13/onlineStore/lang/en/passwords.php +++ /dev/null @@ -1,22 +0,0 @@ - '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/Chapter13/onlineStore/lang/en/validation.php b/Chapter13/onlineStore/lang/en/validation.php deleted file mode 100644 index 783003c..0000000 --- a/Chapter13/onlineStore/lang/en/validation.php +++ /dev/null @@ -1,163 +0,0 @@ - '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' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - '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' => [ - 'numeric' => 'The :attribute must be greater than :value.', - 'file' => 'The :attribute must be greater than :value kilobytes.', - 'string' => 'The :attribute must be greater than :value characters.', - 'array' => 'The :attribute must have more than :value items.', - ], - 'gte' => [ - 'numeric' => 'The :attribute must be greater than or equal to :value.', - 'file' => 'The :attribute must be greater than or equal to :value kilobytes.', - 'string' => 'The :attribute must be greater than or equal to :value characters.', - 'array' => 'The :attribute must have :value items or more.', - ], - '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' => [ - 'numeric' => 'The :attribute must be less than :value.', - 'file' => 'The :attribute must be less than :value kilobytes.', - 'string' => 'The :attribute must be less than :value characters.', - 'array' => 'The :attribute must have less than :value items.', - ], - 'lte' => [ - 'numeric' => 'The :attribute must be less than or equal to :value.', - 'file' => 'The :attribute must be less than or equal to :value kilobytes.', - 'string' => 'The :attribute must be less than or equal to :value characters.', - 'array' => 'The :attribute must not have more than :value items.', - ], - 'mac_address' => 'The :attribute must be a valid MAC address.', - 'max' => [ - 'numeric' => 'The :attribute must not be greater than :max.', - 'file' => 'The :attribute must not be greater than :max kilobytes.', - 'string' => 'The :attribute must not be greater than :max characters.', - 'array' => 'The :attribute must not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - '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.', - 'password' => 'The password is incorrect.', - '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' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - '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/Chapter13/onlineStore/package.json b/Chapter13/onlineStore/package.json deleted file mode 100644 index 7a9aecd..0000000 --- a/Chapter13/onlineStore/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "private": true, - "scripts": { - "dev": "npm run development", - "development": "mix", - "watch": "mix watch", - "watch-poll": "mix watch -- --watch-options-poll=1000", - "hot": "mix watch --hot", - "prod": "npm run production", - "production": "mix --production" - }, - "devDependencies": { - "axios": "^0.25", - "laravel-mix": "^6.0.6", - "lodash": "^4.17.19", - "postcss": "^8.1.14" - } -} diff --git a/Chapter13/onlineStore/phpcs.xml b/Chapter13/onlineStore/phpcs.xml deleted file mode 100644 index a1cf2b6..0000000 --- a/Chapter13/onlineStore/phpcs.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - The coding standard for the Online Store project - - app/ - config/ - database/ - routes/ - */migrations/* - diff --git a/Chapter13/onlineStore/phpunit.xml b/Chapter13/onlineStore/phpunit.xml deleted file mode 100644 index 2ac86a1..0000000 --- a/Chapter13/onlineStore/phpunit.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - ./tests/Unit - - - ./tests/Feature - - - - - ./app - - - - - - - - - - - - - - diff --git a/Chapter13/onlineStore/public/.htaccess b/Chapter13/onlineStore/public/.htaccess deleted file mode 100644 index 3aec5e2..0000000 --- a/Chapter13/onlineStore/public/.htaccess +++ /dev/null @@ -1,21 +0,0 @@ - - - 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/Chapter13/onlineStore/public/css/app.css b/Chapter13/onlineStore/public/css/app.css deleted file mode 100644 index cabac36..0000000 --- a/Chapter13/onlineStore/public/css/app.css +++ /dev/null @@ -1,20 +0,0 @@ -.bg-secondary { - background-color: #2c3e50 !important; -} - -.copyright { - background-color: #1a252f; -} - -.bg-primary { - background-color: #1abc9c !important; -} - -nav{ - font-weight: 700; -} - -.img-card{ - height: 18vw; - object-fit: cover; -} diff --git a/Chapter13/onlineStore/public/favicon.ico b/Chapter13/onlineStore/public/favicon.ico deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter13/onlineStore/public/img/game.png b/Chapter13/onlineStore/public/img/game.png deleted file mode 100644 index 85420e8bbc16098bf26b4ee63bde0e91a19d1f2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25896 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 cz>% diff --git a/Chapter13/onlineStore/public/img/safe.png b/Chapter13/onlineStore/public/img/safe.png deleted file mode 100644 index 445942c707af53210931f9f4f99f6d3cb69e5d89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19240 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
    w==XB0?3|p=#`o%NsudE(E-U#KS3Snw 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 o>ir+C;RN10sIS0&a;pmake(Kernel::class); - -$response = $kernel->handle( - $request = Request::capture() -)->send(); - -$kernel->terminate($request, $response); diff --git a/Chapter13/onlineStore/public/robots.txt b/Chapter13/onlineStore/public/robots.txt deleted file mode 100644 index eb05362..0000000 --- a/Chapter13/onlineStore/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: diff --git a/Chapter13/onlineStore/resources/css/app.css b/Chapter13/onlineStore/resources/css/app.css deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter13/onlineStore/resources/js/app.js b/Chapter13/onlineStore/resources/js/app.js deleted file mode 100644 index 40c55f6..0000000 --- a/Chapter13/onlineStore/resources/js/app.js +++ /dev/null @@ -1 +0,0 @@ -require('./bootstrap'); diff --git a/Chapter13/onlineStore/resources/js/bootstrap.js b/Chapter13/onlineStore/resources/js/bootstrap.js deleted file mode 100644 index 6922577..0000000 --- a/Chapter13/onlineStore/resources/js/bootstrap.js +++ /dev/null @@ -1,28 +0,0 @@ -window._ = require('lodash'); - -/** - * 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 = require('axios'); - -window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; - -/** - * 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'; - -// window.Pusher = require('pusher-js'); - -// window.Echo = new Echo({ -// broadcaster: 'pusher', -// key: process.env.MIX_PUSHER_APP_KEY, -// cluster: process.env.MIX_PUSHER_APP_CLUSTER, -// forceTLS: true -// }); diff --git a/Chapter13/onlineStore/resources/views/home/about.blade.php b/Chapter13/onlineStore/resources/views/home/about.blade.php deleted file mode 100644 index f79abf3..0000000 --- a/Chapter13/onlineStore/resources/views/home/about.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    -
    -
    -

    {{ $viewData["description"] }}

    -
    -
    -

    {{ $viewData["author"] }}

    -
    -
    -
    -@endsection diff --git a/Chapter13/onlineStore/resources/views/home/index.blade.php b/Chapter13/onlineStore/resources/views/home/index.blade.php deleted file mode 100644 index 1affb20..0000000 --- a/Chapter13/onlineStore/resources/views/home/index.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('content') -
    -
    - -
    -
    - -
    -
    - -
    -
    -@endsection diff --git a/Chapter13/onlineStore/resources/views/layouts/app.blade.php b/Chapter13/onlineStore/resources/views/layouts/app.blade.php deleted file mode 100644 index eee7fcb..0000000 --- a/Chapter13/onlineStore/resources/views/layouts/app.blade.php +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - @yield('title', 'Online Store') - - - -
    - -
    -
    -

    @yield('subtitle', 'A Laravel Online Store')

    -
    -
    - - -
    - @yield('content') -
    - - - - - - - diff --git a/Chapter13/onlineStore/resources/views/product/index.blade.php b/Chapter13/onlineStore/resources/views/product/index.blade.php deleted file mode 100644 index 1f766f1..0000000 --- a/Chapter13/onlineStore/resources/views/product/index.blade.php +++ /dev/null @@ -1,18 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    - @foreach ($viewData["products"] as $product) -
    - -
    - @endforeach -
    -@endsection diff --git a/Chapter13/onlineStore/resources/views/product/show.blade.php b/Chapter13/onlineStore/resources/views/product/show.blade.php deleted file mode 100644 index 01d056e..0000000 --- a/Chapter13/onlineStore/resources/views/product/show.blade.php +++ /dev/null @@ -1,21 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    -
    -
    - -
    -
    -
    -
    - {{ $viewData["product"]["name"] }} (${{ $viewData["product"]["price"] }}) -
    -

    {{ $viewData["product"]["description"] }}

    -

    Add to Cart

    -
    -
    -
    -
    -@endsection diff --git a/Chapter13/onlineStore/resources/views/welcome.blade.php b/Chapter13/onlineStore/resources/views/welcome.blade.php deleted file mode 100644 index c587c72..0000000 --- a/Chapter13/onlineStore/resources/views/welcome.blade.php +++ /dev/null @@ -1,7 +0,0 @@ -@extends('layouts.app') -@section('title', 'Home Page - Online Store') -@section('content') -
    - Welcome to the application -
    -@endsection \ No newline at end of file diff --git a/Chapter13/onlineStore/routes/api.php b/Chapter13/onlineStore/routes/api.php deleted file mode 100644 index eb6fa48..0000000 --- a/Chapter13/onlineStore/routes/api.php +++ /dev/null @@ -1,19 +0,0 @@ -get('/user', function (Request $request) { - return $request->user(); -}); diff --git a/Chapter13/onlineStore/routes/channels.php b/Chapter13/onlineStore/routes/channels.php deleted file mode 100644 index 5d451e1..0000000 --- a/Chapter13/onlineStore/routes/channels.php +++ /dev/null @@ -1,18 +0,0 @@ -id === (int) $id; -}); diff --git a/Chapter13/onlineStore/routes/console.php b/Chapter13/onlineStore/routes/console.php deleted file mode 100644 index e05f4c9..0000000 --- a/Chapter13/onlineStore/routes/console.php +++ /dev/null @@ -1,19 +0,0 @@ -comment(Inspiring::quote()); -})->purpose('Display an inspiring quote'); diff --git a/Chapter13/onlineStore/routes/web.php b/Chapter13/onlineStore/routes/web.php deleted file mode 100644 index 0f5e40f..0000000 --- a/Chapter13/onlineStore/routes/web.php +++ /dev/null @@ -1,19 +0,0 @@ -name("home.index"); -Route::get('/about', 'App\Http\Controllers\HomeController@about')->name("home.about"); -Route::get('/products', 'App\Http\Controllers\ProductController@index')->name("product.index"); -Route::get('/products/{id}', 'App\Http\Controllers\ProductController@show')->name("product.show"); diff --git a/Chapter13/onlineStore/storage/app/.gitignore b/Chapter13/onlineStore/storage/app/.gitignore deleted file mode 100644 index 8f4803c..0000000 --- a/Chapter13/onlineStore/storage/app/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!public/ -!.gitignore diff --git a/Chapter13/onlineStore/storage/app/public/.gitignore b/Chapter13/onlineStore/storage/app/public/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter13/onlineStore/storage/app/public/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter13/onlineStore/storage/framework/.gitignore b/Chapter13/onlineStore/storage/framework/.gitignore deleted file mode 100644 index 05c4471..0000000 --- a/Chapter13/onlineStore/storage/framework/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -compiled.php -config.php -down -events.scanned.php -maintenance.php -routes.php -routes.scanned.php -schedule-* -services.json diff --git a/Chapter13/onlineStore/storage/framework/cache/.gitignore b/Chapter13/onlineStore/storage/framework/cache/.gitignore deleted file mode 100644 index 01e4a6c..0000000 --- a/Chapter13/onlineStore/storage/framework/cache/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!data/ -!.gitignore diff --git a/Chapter13/onlineStore/storage/framework/cache/data/.gitignore b/Chapter13/onlineStore/storage/framework/cache/data/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter13/onlineStore/storage/framework/cache/data/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter13/onlineStore/storage/framework/sessions/.gitignore b/Chapter13/onlineStore/storage/framework/sessions/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter13/onlineStore/storage/framework/sessions/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter13/onlineStore/storage/framework/testing/.gitignore b/Chapter13/onlineStore/storage/framework/testing/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter13/onlineStore/storage/framework/testing/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter13/onlineStore/storage/framework/views/.gitignore b/Chapter13/onlineStore/storage/framework/views/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter13/onlineStore/storage/framework/views/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter13/onlineStore/storage/logs/.gitignore b/Chapter13/onlineStore/storage/logs/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter13/onlineStore/storage/logs/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter13/onlineStore/tests/CreatesApplication.php b/Chapter13/onlineStore/tests/CreatesApplication.php deleted file mode 100644 index 547152f..0000000 --- a/Chapter13/onlineStore/tests/CreatesApplication.php +++ /dev/null @@ -1,22 +0,0 @@ -make(Kernel::class)->bootstrap(); - - return $app; - } -} diff --git a/Chapter13/onlineStore/tests/Feature/ExampleTest.php b/Chapter13/onlineStore/tests/Feature/ExampleTest.php deleted file mode 100644 index 78ccc21..0000000 --- a/Chapter13/onlineStore/tests/Feature/ExampleTest.php +++ /dev/null @@ -1,21 +0,0 @@ -get('/'); - - $response->assertStatus(200); - } -} diff --git a/Chapter13/onlineStore/tests/TestCase.php b/Chapter13/onlineStore/tests/TestCase.php deleted file mode 100644 index 2932d4a..0000000 --- a/Chapter13/onlineStore/tests/TestCase.php +++ /dev/null @@ -1,10 +0,0 @@ -assertTrue(true); - } -} diff --git a/Chapter13/onlineStore/webpack.mix.js b/Chapter13/onlineStore/webpack.mix.js deleted file mode 100644 index 2a22dc1..0000000 --- a/Chapter13/onlineStore/webpack.mix.js +++ /dev/null @@ -1,17 +0,0 @@ -const mix = require('laravel-mix'); - -/* - |-------------------------------------------------------------------------- - | Mix Asset Management - |-------------------------------------------------------------------------- - | - | Mix provides a clean, fluent API for defining some Webpack build steps - | for your Laravel applications. By default, we are compiling the CSS - | file for the application as well as bundling up all the JS files. - | - */ - -mix.js('resources/js/app.js', 'public/js') - .postCss('resources/css/app.css', 'public/css', [ - // - ]); diff --git a/Chapter14/onlineStore/.editorconfig b/Chapter14/onlineStore/.editorconfig deleted file mode 100644 index 1671c9b..0000000 --- a/Chapter14/onlineStore/.editorconfig +++ /dev/null @@ -1,18 +0,0 @@ -root = true - -[*] -charset = utf-8 -end_of_line = lf -insert_final_newline = true -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true - -[*.md] -trim_trailing_whitespace = false - -[*.{yml,yaml}] -indent_size = 2 - -[docker-compose.yml] -indent_size = 4 diff --git a/Chapter14/onlineStore/.env.example b/Chapter14/onlineStore/.env.example deleted file mode 100644 index 8510237..0000000 --- a/Chapter14/onlineStore/.env.example +++ /dev/null @@ -1,52 +0,0 @@ -APP_NAME=Laravel -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=laravel -DB_USERNAME=root -DB_PASSWORD= - -BROADCAST_DRIVER=log -CACHE_DRIVER=file -FILESYSTEM_DISK=local -QUEUE_CONNECTION=sync -SESSION_DRIVER=file -SESSION_LIFETIME=120 - -MEMCACHED_HOST=127.0.0.1 - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -MAIL_MAILER=smtp -MAIL_HOST=mailhog -MAIL_PORT=1025 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS=null -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_APP_CLUSTER=mt1 - -MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/Chapter14/onlineStore/.gitattributes b/Chapter14/onlineStore/.gitattributes deleted file mode 100644 index 510d996..0000000 --- a/Chapter14/onlineStore/.gitattributes +++ /dev/null @@ -1,10 +0,0 @@ -* text=auto - -*.blade.php diff=html -*.css diff=css -*.html diff=html -*.md diff=markdown -*.php diff=php - -/.github export-ignore -CHANGELOG.md export-ignore diff --git a/Chapter14/onlineStore/.gitignore b/Chapter14/onlineStore/.gitignore deleted file mode 100644 index eb003b0..0000000 --- a/Chapter14/onlineStore/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -/node_modules -/public/hot -/public/storage -/storage/*.key -/vendor -.env -.env.backup -.phpunit.result.cache -docker-compose.override.yml -Homestead.json -Homestead.yaml -npm-debug.log -yarn-error.log -/.idea -/.vscode diff --git a/Chapter14/onlineStore/.styleci.yml b/Chapter14/onlineStore/.styleci.yml deleted file mode 100644 index 679a631..0000000 --- a/Chapter14/onlineStore/.styleci.yml +++ /dev/null @@ -1,13 +0,0 @@ -php: - preset: laravel - version: 8 - disabled: - - no_unused_imports - finder: - not-name: - - index.php -js: - finder: - not-name: - - webpack.mix.js -css: true diff --git a/Chapter14/onlineStore/README.md b/Chapter14/onlineStore/README.md deleted file mode 100644 index f171eca..0000000 --- a/Chapter14/onlineStore/README.md +++ /dev/null @@ -1,64 +0,0 @@ -

    - -

    -Build Status -Total Downloads -Latest Stable Version -License -

    - -## About Laravel - -Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as: - -- [Simple, fast routing engine](https://laravel.com/docs/routing). -- [Powerful dependency injection container](https://laravel.com/docs/container). -- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage. -- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent). -- Database agnostic [schema migrations](https://laravel.com/docs/migrations). -- [Robust background job processing](https://laravel.com/docs/queues). -- [Real-time event broadcasting](https://laravel.com/docs/broadcasting). - -Laravel is accessible, powerful, and provides tools required for large, robust applications. - -## Learning Laravel - -Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework. - -If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 2000 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library. - -## Laravel Sponsors - -We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell). - -### Premium Partners - -- **[Vehikl](https://vehikl.com/)** -- **[Tighten Co.](https://tighten.co)** -- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** -- **[64 Robots](https://64robots.com)** -- **[Cubet Techno Labs](https://cubettech.com)** -- **[Cyber-Duck](https://cyber-duck.co.uk)** -- **[Many](https://www.many.co.uk)** -- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)** -- **[DevSquad](https://devsquad.com)** -- **[Curotec](https://www.curotec.com/services/technologies/laravel/)** -- **[OP.GG](https://op.gg)** -- **[WebReinvent](https://webreinvent.com/?utm_source=laravel&utm_medium=github&utm_campaign=patreon-sponsors)** -- **[Lendio](https://lendio.com)** - -## Contributing - -Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions). - -## Code of Conduct - -In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). - -## Security Vulnerabilities - -If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed. - -## License - -The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). diff --git a/Chapter14/onlineStore/app/Console/Kernel.php b/Chapter14/onlineStore/app/Console/Kernel.php deleted file mode 100644 index d8bc1d2..0000000 --- a/Chapter14/onlineStore/app/Console/Kernel.php +++ /dev/null @@ -1,32 +0,0 @@ -command('inspire')->hourly(); - } - - /** - * Register the commands for the application. - * - * @return void - */ - protected function commands() - { - $this->load(__DIR__.'/Commands'); - - require base_path('routes/console.php'); - } -} diff --git a/Chapter14/onlineStore/app/Exceptions/Handler.php b/Chapter14/onlineStore/app/Exceptions/Handler.php deleted file mode 100644 index 8e7fbd1..0000000 --- a/Chapter14/onlineStore/app/Exceptions/Handler.php +++ /dev/null @@ -1,41 +0,0 @@ -> - */ - protected $dontReport = [ - // - ]; - - /** - * A list of the inputs that are never flashed for validation exceptions. - * - * @var array - */ - protected $dontFlash = [ - 'current_password', - 'password', - 'password_confirmation', - ]; - - /** - * Register the exception handling callbacks for the application. - * - * @return void - */ - public function register() - { - $this->reportable(function (Throwable $e) { - // - }); - } -} diff --git a/Chapter14/onlineStore/app/Http/Controllers/Controller.php b/Chapter14/onlineStore/app/Http/Controllers/Controller.php deleted file mode 100644 index a0a2a8a..0000000 --- a/Chapter14/onlineStore/app/Http/Controllers/Controller.php +++ /dev/null @@ -1,13 +0,0 @@ -with("viewData", $viewData); - } - - public function about() - { - $viewData = []; - $viewData["title"] = "About us - Online Store"; - $viewData["subtitle"] = "About us"; - $viewData["description"] = "This is an about page ..."; - $viewData["author"] = "Developed by: Your Name"; - return view('home.about')->with("viewData", $viewData); - } -} diff --git a/Chapter14/onlineStore/app/Http/Controllers/ProductController.php b/Chapter14/onlineStore/app/Http/Controllers/ProductController.php deleted file mode 100644 index d27a3a3..0000000 --- a/Chapter14/onlineStore/app/Http/Controllers/ProductController.php +++ /dev/null @@ -1,29 +0,0 @@ -with("viewData", $viewData); - } - - public function show($id) - { - $viewData = []; - $product = Product::findOrFail($id); - $viewData["title"] = $product->getName()." - Online Store"; - $viewData["subtitle"] = $product->getName()." - Product information"; - $viewData["product"] = $product; - return view('product.show')->with("viewData", $viewData); - } -} diff --git a/Chapter14/onlineStore/app/Http/Kernel.php b/Chapter14/onlineStore/app/Http/Kernel.php deleted file mode 100644 index d3722c2..0000000 --- a/Chapter14/onlineStore/app/Http/Kernel.php +++ /dev/null @@ -1,67 +0,0 @@ - - */ - protected $middleware = [ - // \App\Http\Middleware\TrustHosts::class, - \App\Http\Middleware\TrustProxies::class, - \Fruitcake\Cors\HandleCors::class, - \App\Http\Middleware\PreventRequestsDuringMaintenance::class, - \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, - \App\Http\Middleware\TrimStrings::class, - \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, - ]; - - /** - * The application's route middleware groups. - * - * @var array> - */ - protected $middlewareGroups = [ - 'web' => [ - \App\Http\Middleware\EncryptCookies::class, - \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, - \Illuminate\Session\Middleware\StartSession::class, - // \Illuminate\Session\Middleware\AuthenticateSession::class, - \Illuminate\View\Middleware\ShareErrorsFromSession::class, - \App\Http\Middleware\VerifyCsrfToken::class, - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - - 'api' => [ - // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, - 'throttle:api', - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - ]; - - /** - * The application's route middleware. - * - * These middleware may be assigned to groups or used individually. - * - * @var array - */ - protected $routeMiddleware = [ - 'auth' => \App\Http\Middleware\Authenticate::class, - 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::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, - 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, - 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, - 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, - ]; -} diff --git a/Chapter14/onlineStore/app/Http/Middleware/Authenticate.php b/Chapter14/onlineStore/app/Http/Middleware/Authenticate.php deleted file mode 100644 index 704089a..0000000 --- a/Chapter14/onlineStore/app/Http/Middleware/Authenticate.php +++ /dev/null @@ -1,21 +0,0 @@ -expectsJson()) { - return route('login'); - } - } -} diff --git a/Chapter14/onlineStore/app/Http/Middleware/EncryptCookies.php b/Chapter14/onlineStore/app/Http/Middleware/EncryptCookies.php deleted file mode 100644 index 867695b..0000000 --- a/Chapter14/onlineStore/app/Http/Middleware/EncryptCookies.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter14/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/Chapter14/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php deleted file mode 100644 index 74cbd9a..0000000 --- a/Chapter14/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter14/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php b/Chapter14/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php deleted file mode 100644 index a2813a0..0000000 --- a/Chapter14/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php +++ /dev/null @@ -1,32 +0,0 @@ -check()) { - return redirect(RouteServiceProvider::HOME); - } - } - - return $next($request); - } -} diff --git a/Chapter14/onlineStore/app/Http/Middleware/TrimStrings.php b/Chapter14/onlineStore/app/Http/Middleware/TrimStrings.php deleted file mode 100644 index 88cadca..0000000 --- a/Chapter14/onlineStore/app/Http/Middleware/TrimStrings.php +++ /dev/null @@ -1,19 +0,0 @@ - - */ - protected $except = [ - 'current_password', - 'password', - 'password_confirmation', - ]; -} diff --git a/Chapter14/onlineStore/app/Http/Middleware/TrustHosts.php b/Chapter14/onlineStore/app/Http/Middleware/TrustHosts.php deleted file mode 100644 index 7186414..0000000 --- a/Chapter14/onlineStore/app/Http/Middleware/TrustHosts.php +++ /dev/null @@ -1,20 +0,0 @@ - - */ - public function hosts() - { - return [ - $this->allSubdomainsOfApplicationUrl(), - ]; - } -} diff --git a/Chapter14/onlineStore/app/Http/Middleware/TrustProxies.php b/Chapter14/onlineStore/app/Http/Middleware/TrustProxies.php deleted file mode 100644 index 3391630..0000000 --- a/Chapter14/onlineStore/app/Http/Middleware/TrustProxies.php +++ /dev/null @@ -1,28 +0,0 @@ -|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/Chapter14/onlineStore/app/Http/Middleware/VerifyCsrfToken.php b/Chapter14/onlineStore/app/Http/Middleware/VerifyCsrfToken.php deleted file mode 100644 index 9e86521..0000000 --- a/Chapter14/onlineStore/app/Http/Middleware/VerifyCsrfToken.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter14/onlineStore/app/Models/Product.php b/Chapter14/onlineStore/app/Models/Product.php deleted file mode 100644 index 84efbb6..0000000 --- a/Chapter14/onlineStore/app/Models/Product.php +++ /dev/null @@ -1,89 +0,0 @@ -attributes['id'] - int - contains the product primary key (id) - * $this->attributes['name'] - string - contains the product name - * $this->attributes['description'] - string - contains the product description - * $this->attributes['image'] - string - contains the product image - * $this->attributes['price'] - int - contains the product price - * $this->attributes['created_at'] - timestamp - contains the product creation date - * $this->attributes['updated_at'] - timestamp - contains the product update date - */ - - public function getId() - { - return $this->attributes['id']; - } - - public function setId($id) - { - $this->attributes['id'] = $id; - } - - public function getName() - { - return $this->attributes['name']; - } - - public function setName($name) - { - $this->attributes['name'] = $name; - } - - public function getDescription() - { - return $this->attributes['description']; - } - - public function setDescription($description) - { - $this->attributes['description'] = $description; - } - - public function getImage() - { - return $this->attributes['image']; - } - - public function setImage($image) - { - $this->attributes['image'] = $image; - } - - public function getPrice() - { - return $this->attributes['price']; - } - - public function setPrice($price) - { - $this->attributes['price'] = $price; - } - - public function getCreatedAt() - { - return $this->attributes['created_at']; - } - - public function setCreatedAt($createdAt) - { - $this->attributes['created_at'] = $createdAt; - } - - public function getUpdatedAt() - { - return $this->attributes['updated_at']; - } - - public function setUpdatedAt($updatedAt) - { - $this->attributes['updated_at'] = $updatedAt; - } -} diff --git a/Chapter14/onlineStore/app/Models/User.php b/Chapter14/onlineStore/app/Models/User.php deleted file mode 100644 index 8996368..0000000 --- a/Chapter14/onlineStore/app/Models/User.php +++ /dev/null @@ -1,44 +0,0 @@ - - */ - 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', - ]; -} diff --git a/Chapter14/onlineStore/app/Providers/AppServiceProvider.php b/Chapter14/onlineStore/app/Providers/AppServiceProvider.php deleted file mode 100644 index ee8ca5b..0000000 --- a/Chapter14/onlineStore/app/Providers/AppServiceProvider.php +++ /dev/null @@ -1,28 +0,0 @@ - - */ - protected $policies = [ - // 'App\Models\Model' => 'App\Policies\ModelPolicy', - ]; - - /** - * Register any authentication / authorization services. - * - * @return void - */ - public function boot() - { - $this->registerPolicies(); - - // - } -} diff --git a/Chapter14/onlineStore/app/Providers/BroadcastServiceProvider.php b/Chapter14/onlineStore/app/Providers/BroadcastServiceProvider.php deleted file mode 100644 index 395c518..0000000 --- a/Chapter14/onlineStore/app/Providers/BroadcastServiceProvider.php +++ /dev/null @@ -1,21 +0,0 @@ -> - */ - protected $listen = [ - Registered::class => [ - SendEmailVerificationNotification::class, - ], - ]; - - /** - * Register any events for your application. - * - * @return void - */ - public function boot() - { - // - } -} diff --git a/Chapter14/onlineStore/app/Providers/RouteServiceProvider.php b/Chapter14/onlineStore/app/Providers/RouteServiceProvider.php deleted file mode 100644 index 7c17d1f..0000000 --- a/Chapter14/onlineStore/app/Providers/RouteServiceProvider.php +++ /dev/null @@ -1,63 +0,0 @@ -configureRateLimiting(); - - $this->routes(function () { - Route::prefix('api') - ->middleware('api') - ->namespace($this->namespace) - ->group(base_path('routes/api.php')); - - Route::middleware('web') - ->namespace($this->namespace) - ->group(base_path('routes/web.php')); - }); - } - - /** - * Configure the rate limiters for the application. - * - * @return void - */ - protected function configureRateLimiting() - { - RateLimiter::for('api', function (Request $request) { - return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); - }); - } -} diff --git a/Chapter14/onlineStore/artisan b/Chapter14/onlineStore/artisan deleted file mode 100644 index 67a3329..0000000 --- a/Chapter14/onlineStore/artisan +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env php -make(Illuminate\Contracts\Console\Kernel::class); - -$status = $kernel->handle( - $input = new Symfony\Component\Console\Input\ArgvInput, - new Symfony\Component\Console\Output\ConsoleOutput -); - -/* -|-------------------------------------------------------------------------- -| Shutdown The Application -|-------------------------------------------------------------------------- -| -| Once Artisan has finished running, we will fire off the shutdown events -| so that any final work may be done by the application before we shut -| down the process. This is the last thing to happen to the request. -| -*/ - -$kernel->terminate($input, $status); - -exit($status); diff --git a/Chapter14/onlineStore/bootstrap/app.php b/Chapter14/onlineStore/bootstrap/app.php deleted file mode 100644 index 037e17d..0000000 --- a/Chapter14/onlineStore/bootstrap/app.php +++ /dev/null @@ -1,55 +0,0 @@ -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/Chapter14/onlineStore/bootstrap/cache/.gitignore b/Chapter14/onlineStore/bootstrap/cache/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter14/onlineStore/bootstrap/cache/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter14/onlineStore/composer.json b/Chapter14/onlineStore/composer.json deleted file mode 100644 index f0f2eda..0000000 --- a/Chapter14/onlineStore/composer.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "name": "laravel/laravel", - "type": "project", - "description": "The Laravel Framework.", - "keywords": ["framework", "laravel"], - "license": "MIT", - "require": { - "php": "^8.0", - "fruitcake/laravel-cors": "^2.0.5", - "guzzlehttp/guzzle": "^7.2", - "laravel/framework": "^9.0", - "laravel/sanctum": "^2.14", - "laravel/tinker": "^2.7" - }, - "require-dev": { - "fakerphp/faker": "^1.9.1", - "laravel/sail": "^1.0.1", - "mockery/mockery": "^1.4.4", - "nunomaduro/collision": "^6.1", - "phpunit/phpunit": "^9.5.10", - "spatie/laravel-ignition": "^1.0", - "squizlabs/php_codesniffer": "^3.6" - }, - "autoload": { - "psr-4": { - "App\\": "app/", - "Database\\Factories\\": "database/factories/", - "Database\\Seeders\\": "database/seeders/" - } - }, - "autoload-dev": { - "psr-4": { - "Tests\\": "tests/" - } - }, - "scripts": { - "post-autoload-dump": [ - "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", - "@php artisan package:discover --ansi" - ], - "post-update-cmd": [ - "@php artisan vendor:publish --tag=laravel-assets --ansi --force" - ], - "post-root-package-install": [ - "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" - ], - "post-create-project-cmd": [ - "@php artisan key:generate --ansi" - ] - }, - "extra": { - "laravel": { - "dont-discover": [] - } - }, - "config": { - "optimize-autoloader": true, - "preferred-install": "dist", - "sort-packages": true - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/Chapter14/onlineStore/composer.lock b/Chapter14/onlineStore/composer.lock deleted file mode 100644 index b55e897..0000000 --- a/Chapter14/onlineStore/composer.lock +++ /dev/null @@ -1,7860 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "8bdcc31974d0d5a00db79c82827c8815", - "packages": [ - { - "name": "asm89/stack-cors", - "version": "v2.1.1", - "source": { - "type": "git", - "url": "https://github.com/asm89/stack-cors.git", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4|^5|^6" - }, - "require-dev": { - "phpunit/phpunit": "^7|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "psr-4": { - "Asm89\\Stack\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alexander", - "email": "iam.asm89@gmail.com" - } - ], - "description": "Cross-origin resource sharing library and stack middleware", - "homepage": "https://github.com/asm89/stack-cors", - "keywords": [ - "cors", - "stack" - ], - "support": { - "issues": "https://github.com/asm89/stack-cors/issues", - "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" - }, - "time": "2022-01-18T09:12:03+00:00" - }, - { - "name": "brick/math", - "version": "0.9.3", - "source": { - "type": "git", - "url": "https://github.com/brick/math.git", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", - "vimeo/psalm": "4.9.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Brick\\Math\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Arbitrary-precision arithmetic library", - "keywords": [ - "Arbitrary-precision", - "BigInteger", - "BigRational", - "arithmetic", - "bigdecimal", - "bignum", - "brick", - "math" - ], - "support": { - "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.9.3" - }, - "funding": [ - { - "url": "https://github.com/BenMorel", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/brick/math", - "type": "tidelift" - } - ], - "time": "2021-08-15T20:50:18+00:00" - }, - { - "name": "dflydev/dot-access-data", - "version": "v3.0.1", - "source": { - "type": "git", - "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c", - "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": "^3.14" - }, - "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.1" - }, - "time": "2021-08-13T13:06:58+00:00" - }, - { - "name": "doctrine/inflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "vimeo/psalm": "^4.10" - }, - "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.4" - }, - "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": "2021-10-22T20:16:43+00:00" - }, - { - "name": "doctrine/lexer", - "version": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" - } - }, - "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/1.2.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%2Flexer", - "type": "tidelift" - } - ], - "time": "2022-01-12T08:27:12+00:00" - }, - { - "name": "dragonmantank/cron-expression", - "version": "v3.3.1", - "source": { - "type": "git", - "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "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.1" - }, - "funding": [ - { - "url": "https://github.com/dragonmantank", - "type": "github" - } - ], - "time": "2022-01-18T15:43:28+00:00" - }, - { - "name": "egulias/email-validator", - "version": "3.1.2", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ee0db30118f661fb166bcffbf5d82032df484697", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^1.2", - "php": ">=7.2", - "symfony/polyfill-intl-idn": "^1.15" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^8.5.8|^9.3.3", - "vimeo/psalm": "^4" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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/3.1.2" - }, - "funding": [ - { - "url": "https://github.com/egulias", - "type": "github" - } - ], - "time": "2021-10-11T09:18:27+00:00" - }, - { - "name": "fruitcake/laravel-cors", - "version": "v2.0.5", - "source": { - "type": "git", - "url": "https://github.com/fruitcake/laravel-cors.git", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "shasum": "" - }, - "require": { - "asm89/stack-cors": "^2.0.1", - "illuminate/contracts": "^6|^7|^8|^9", - "illuminate/support": "^6|^7|^8|^9", - "php": ">=7.2", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4.3.4|^5|^6" - }, - "require-dev": { - "laravel/framework": "^6|^7.24|^8", - "orchestra/testbench-dusk": "^4|^5|^6|^7", - "phpunit/phpunit": "^6|^7|^8|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - }, - "laravel": { - "providers": [ - "Fruitcake\\Cors\\CorsServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Fruitcake\\Cors\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fruitcake", - "homepage": "https://fruitcake.nl" - }, - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", - "keywords": [ - "api", - "cors", - "crossdomain", - "laravel" - ], - "support": { - "issues": "https://github.com/fruitcake/laravel-cors/issues", - "source": "https://github.com/fruitcake/laravel-cors/tree/v2.0.5" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "time": "2022-01-03T14:53:04+00:00" - }, - { - "name": "graham-campbell/result-type", - "version": "v1.0.4", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "0690bde05318336c7221785f2a932467f98b64ca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/0690bde05318336c7221785f2a932467f98b64ca", - "reference": "0690bde05318336c7221785f2a932467f98b64ca", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "phpoption/phpoption": "^1.8" - }, - "require-dev": { - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", - "type": "tidelift" - } - ], - "time": "2021-11-21T21:41:47+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "7.4.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.8.3 || ^2.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.4.1", - "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.5 || ^9.3.5", - "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": { - "branch-alias": { - "dev-master": "7.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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.4.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": "2021-12-06T18:43:05+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "1.5.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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/1.5.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "time": "2021-10-22T20:56:57+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.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.4.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.8 || ^9.3.10" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "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.1.0" - }, - "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": "2021-10-06T17:43:30+00:00" - }, - { - "name": "laravel/framework", - "version": "v9.0.1", - "source": { - "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "shasum": "" - }, - "require": { - "doctrine/inflector": "^2.0", - "dragonmantank/cron-expression": "^3.1", - "egulias/email-validator": "^3.1", - "ext-mbstring": "*", - "ext-openssl": "*", - "laravel/serializable-closure": "^1.0", - "league/commonmark": "^2.2", - "league/flysystem": "^3.0", - "monolog/monolog": "^2.0", - "nesbot/carbon": "^2.53.1", - "php": "^8.0.2", - "psr/container": "^1.1.1|^2.0.1", - "psr/log": "^1.0|^2.0|^3.0", - "psr/simple-cache": "^1.0|^2.0|^3.0", - "ramsey/uuid": "^4.2.2", - "symfony/console": "^6.0", - "symfony/error-handler": "^6.0", - "symfony/finder": "^6.0", - "symfony/http-foundation": "^6.0", - "symfony/http-kernel": "^6.0", - "symfony/mailer": "^6.0", - "symfony/mime": "^6.0", - "symfony/process": "^6.0", - "symfony/routing": "^6.0", - "symfony/var-dumper": "^6.0", - "tijsverkoyen/css-to-inline-styles": "^2.2.2", - "vlucas/phpdotenv": "^5.4.1", - "voku/portable-ascii": "^2.0" - }, - "conflict": { - "tightenco/collect": "<5.5.33" - }, - "provide": { - "psr/container-implementation": "1.1|2.0", - "psr/simple-cache-implementation": "1.0|2.0|3.0" - }, - "replace": { - "illuminate/auth": "self.version", - "illuminate/broadcasting": "self.version", - "illuminate/bus": "self.version", - "illuminate/cache": "self.version", - "illuminate/collections": "self.version", - "illuminate/conditionable": "self.version", - "illuminate/config": "self.version", - "illuminate/console": "self.version", - "illuminate/container": "self.version", - "illuminate/contracts": "self.version", - "illuminate/cookie": "self.version", - "illuminate/database": "self.version", - "illuminate/encryption": "self.version", - "illuminate/events": "self.version", - "illuminate/filesystem": "self.version", - "illuminate/hashing": "self.version", - "illuminate/http": "self.version", - "illuminate/log": "self.version", - "illuminate/macroable": "self.version", - "illuminate/mail": "self.version", - "illuminate/notifications": "self.version", - "illuminate/pagination": "self.version", - "illuminate/pipeline": "self.version", - "illuminate/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": { - "aws/aws-sdk-php": "^3.198.1", - "doctrine/dbal": "^2.13.3|^3.1.4", - "fakerphp/faker": "^1.9.2", - "guzzlehttp/guzzle": "^7.2", - "league/flysystem-aws-s3-v3": "^3.0", - "league/flysystem-ftp": "^3.0", - "league/flysystem-sftp-v3": "^3.0", - "mockery/mockery": "^1.4.4", - "orchestra/testbench-core": "^7.0", - "pda/pheanstalk": "^4.0", - "phpstan/phpstan": "^1.0", - "phpunit/phpunit": "^9.5.8", - "predis/predis": "^1.1.9", - "symfony/amazon-mailer": "^6.0", - "symfony/cache": "^6.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.198.1).", - "brianium/paratest": "Required to run tests in parallel (^6.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", - "ext-bcmath": "Required to use the multiple_of validation rule.", - "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.", - "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.2).", - "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-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", - "mockery/mockery": "Required to use mocking (^1.4.4).", - "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).", - "predis/predis": "Required to use the predis connector (^1.1.9).", - "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.0).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^6.0).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.0).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.0).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.0).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.x-dev" - } - }, - "autoload": { - "files": [ - "src/Illuminate/Collections/helpers.php", - "src/Illuminate/Events/functions.php", - "src/Illuminate/Foundation/helpers.php", - "src/Illuminate/Support/helpers.php" - ], - "psr-4": { - "Illuminate\\": "src/Illuminate/", - "Illuminate\\Support\\": [ - "src/Illuminate/Macroable/", - "src/Illuminate/Collections/", - "src/Illuminate/Conditionable/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Laravel Framework.", - "homepage": "https://laravel.com", - "keywords": [ - "framework", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2022-02-09T15:00:05+00:00" - }, - { - "name": "laravel/sanctum", - "version": "v2.14.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/sanctum.git", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/0647a87140c7522e75826cffcadb3ad6e01f71e9", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/contracts": "^6.9|^7.0|^8.0|^9.0", - "illuminate/database": "^6.9|^7.0|^8.0|^9.0", - "illuminate/support": "^6.9|^7.0|^8.0|^9.0", - "php": "^7.2|^8.0" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0", - "phpunit/phpunit": "^8.0|^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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": "2022-01-12T15:07:43+00:00" - }, - { - "name": "laravel/serializable-closure", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/serializable-closure.git", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/65c9faf50d567b65d81764a44526545689e3fe63", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "pestphp/pest": "^1.18", - "phpstan/phpstan": "^0.12.98", - "symfony/var-dumper": "^5.3" - }, - "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": "2022-02-01T16:29:39+00:00" - }, - { - "name": "laravel/tinker", - "version": "v2.7.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/tinker.git", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/5f2f9815b7631b9f586a3de7933c25f9327d4073", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073", - "shasum": "" - }, - "require": { - "illuminate/console": "^6.0|^7.0|^8.0|^9.0", - "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.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", - "phpunit/phpunit": "^8.5.8|^9.3.3" - }, - "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.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.7.0" - }, - "time": "2022-01-10T08:52:49+00:00" - }, - { - "name": "league/commonmark", - "version": "2.2.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/commonmark.git", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "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.15" - }, - "require-dev": { - "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.0", - "commonmark/commonmark.js": "0.30.0", - "composer/package-versions-deprecated": "^1.8", - "erusev/parsedown": "^1.0", - "ext-json": "*", - "github/gfm": "0.29.0", - "michelf/php-markdown": "^1.4", - "phpstan/phpstan": "^0.12.88 || ^1.0.0", - "phpunit/phpunit": "^9.5.5", - "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", - "unleashedtech/php-coding-standard": "^3.1", - "vimeo/psalm": "^4.7.3" - }, - "suggest": { - "symfony/yaml": "v2.3+ required if using the Front Matter extension" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.3-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": "2022-01-25T14:37:33+00:00" - }, - { - "name": "league/config", - "version": "v1.1.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/config.git", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/config/zipball/a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^3.0.1", - "nette/schema": "^1.2", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.90", - "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": "2021-08-14T12:15:32+00:00" - }, - { - "name": "league/flysystem", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9f8b4260031bfef5497477da53dd57b2aaff0e06", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06", - "shasum": "" - }, - "require": { - "ext-json": "*", - "league/mime-type-detection": "^1.0.0", - "php": "^8.0.2" - }, - "conflict": { - "guzzlehttp/guzzle": "<7.0", - "guzzlehttp/ringphp": "<1.1.1", - "symfony/http-client": "<5.2" - }, - "require-dev": { - "async-aws/s3": "^1.5", - "async-aws/simple-s3": "^1.0", - "aws/aws-sdk-php": "^3.198.1", - "composer/semver": "^3.0", - "ext-fileinfo": "*", - "ext-ftp": "*", - "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.5", - "google/cloud-storage": "^1.23", - "phpseclib/phpseclib": "^2.0", - "phpstan/phpstan": "^0.12.26", - "phpunit/phpunit": "^9.5.11", - "sabre/dav": "^4.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.0.3" - }, - "funding": [ - { - "url": "https://offset.earth/frankdejonge", - "type": "custom" - }, - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2022-01-31T19:41:04+00:00" - }, - { - "name": "league/mime-type-detection", - "version": "1.9.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/aa70e813a6ad3d1558fc927863d47309b4c23e69", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.2", - "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" - }, - "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.9.0" - }, - "funding": [ - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2021-11-21T11:48:40+00:00" - }, - { - "name": "monolog/monolog", - "version": "2.3.5", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd4380d6fc37626e2f799f29d91195040137eba9", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "provide": { - "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7", - "graylog2/gelf-php": "^1.4.2", - "mongodb/mongodb": "^1.8", - "php-amqplib/php-amqplib": "~2.4 || ^3", - "php-console/php-console": "^3.1.3", - "phpspec/prophecy": "^1.6.1", - "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5", - "predis/predis": "^1.1", - "rollbar/rollbar": "^1.3", - "ruflin/elastica": ">=0.90@dev", - "swiftmailer/swiftmailer": "^5.3|^6.0" - }, - "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", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "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": "2.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/2.3.5" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" - } - ], - "time": "2021-10-01T21:08:31+00:00" - }, - { - "name": "nesbot/carbon", - "version": "2.56.0", - "source": { - "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1.8 || ^8.0", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "doctrine/dbal": "^2.0 || ^3.0", - "doctrine/orm": "^2.7", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "phpmd/phpmd": "^2.9", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.54 || ^1.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.14", - "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://opencollective.com/Carbon", - "type": "open_collective" - }, - { - "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", - "type": "tidelift" - } - ], - "time": "2022-01-21T17:08:38+00:00" - }, - { - "name": "nette/schema", - "version": "v1.2.2", - "source": { - "type": "git", - "url": "https://github.com/nette/schema.git", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/9a39cef03a5b34c7de64f551538cbba05c2be5df", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df", - "shasum": "" - }, - "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": ">=7.1 <8.2" - }, - "require-dev": { - "nette/tester": "^2.3 || ^2.4", - "phpstan/phpstan-nette": "^0.12", - "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.2" - }, - "time": "2021-10-15T11:40:02+00:00" - }, - { - "name": "nette/utils", - "version": "v3.2.7", - "source": { - "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/0af4e3de4df9f1543534beab255ccf459e7a2c99", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99", - "shasum": "" - }, - "require": { - "php": ">=7.2 <8.2" - }, - "conflict": { - "nette/di": "<3.0.6" - }, - "require-dev": { - "nette/tester": "~2.0", - "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.3" - }, - "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()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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 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/v3.2.7" - }, - "time": "2022-01-24T11:29:14+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.13.2", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", - "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.13.2" - }, - "time": "2021-11-30T19:35:32+00:00" - }, - { - "name": "phpoption/phpoption", - "version": "1.8.1", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-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.8.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", - "type": "tidelift" - } - ], - "time": "2021-12-04T23:24:31+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.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.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": "http://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/tree/master" - }, - "time": "2020-06-29T06:28:15+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.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": "http://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/master" - }, - "time": "2019-04-30T12:38:16+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.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": "http://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/master" - }, - "time": "2016-08-06T14:39: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.1", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "570292577277f06f590635381a7f761a6cf4f026" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/570292577277f06f590635381a7f761a6cf4f026", - "reference": "570292577277f06f590635381a7f761a6cf4f026", - "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" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "3.17.05.02" - }, - "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.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." - }, - "bin": [ - "bin/psysh" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "0.11.x-dev" - } - }, - "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.1" - }, - "time": "2022-01-03T13:58:38+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": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/ramsey/collection.git", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "shasum": "" - }, - "require": { - "php": "^7.3 || ^8", - "symfony/polyfill-php81": "^1.23" - }, - "require-dev": { - "captainhook/captainhook": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "ergebnis/composer-normalize": "^2.6", - "fakerphp/faker": "^1.5", - "hamcrest/hamcrest-php": "^2", - "jangregor/phpstan-prophecy": "^0.8", - "mockery/mockery": "^1.3", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1", - "phpstan/phpstan": "^0.12.32", - "phpstan/phpstan-mockery": "^0.12.5", - "phpstan/phpstan-phpunit": "^0.12.11", - "phpunit/phpunit": "^8.5 || ^9", - "psy/psysh": "^0.10.4", - "slevomat/coding-standard": "^6.3", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.4" - }, - "type": "library", - "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/1.2.2" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "time": "2021-10-10T03:01:02+00:00" - }, - { - "name": "ramsey/uuid", - "version": "4.2.3", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "shasum": "" - }, - "require": { - "brick/math": "^0.8 || ^0.9", - "ext-json": "*", - "php": "^7.2 || ^8.0", - "ramsey/collection": "^1.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php80": "^1.14" - }, - "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", - "moontoast/math": "^1.1", - "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.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-mockery": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^8.5 || ^9", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" - }, - "suggest": { - "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-ctype": "Enables faster processing of character classification using ctype functions.", - "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": { - "branch-alias": { - "dev-main": "4.x-dev" - }, - "captainhook": { - "force-install": true - } - }, - "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "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.2.3" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2021-09-25T23:10:38+00:00" - }, - { - "name": "symfony/console", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/22e8efd019c3270c4f79376234a3f8752cd25490", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.4|^6.0" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/css-selector", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/1955d595c12c111629cc814d3f2a2ff13580508a", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a", - "shasum": "" - }, - "require": { - "php": ">=8.0.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/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-11-01T23:48:49+00:00" - }, - { - "name": "symfony/error-handler", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/20343b3bad7ebafa38138ddcb97290a24722b57b", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" - }, - "bin": [ - "Resources/bin/patch-type-declarations" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to manage errors and ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6472ea2dd415e925b90ca82be64b8bc6157f3934", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/event-dispatcher-contracts": "^2|^3" - }, - "conflict": { - "symfony/dependency-injection": "<5.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^5.4|^6.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/aa5422287b75594b90ee9cd807caf8f0df491385", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/event-dispatcher": "^1" - }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-07-15T12:33:35+00:00" - }, - { - "name": "symfony/finder", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/8661b74dbabc23223f38c9b99d3f8ade71170430", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ad157299ced81a637fade1efcadd688d6deba5c1", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1" - }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/cache": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0" - }, - "suggest": { - "symfony/mime": "To use the file extension guesser" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v6.0.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/error-handler": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", - "symfony/twig-bridge": "<5.4", - "symfony/validator": "<5.4", - "twig/twig": "<2.13" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/process": "^5.4|^6.0", - "symfony/routing": "^5.4|^6.0", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-29T18:12:46+00:00" - }, - { - "name": "symfony/mailer", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mailer.git", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "shasum": "" - }, - "require": { - "egulias/email-validator": "^2.1.10|^3", - "php": ">=8.0.2", - "psr/event-dispatcher": "^1", - "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3" - }, - "conflict": { - "symfony/http-kernel": "<5.4" - }, - "require-dev": { - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/messenger": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/mime", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/2cd9601efd040e56f43360daa68f3c6b0534923a", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "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" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "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.24.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": "2021-10-20T20:35:02+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-11-23T21:10:46+00:00" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44", - "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.23-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.24.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": "2021-09-14T14:02:44+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.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": "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.24.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": "2021-11-30T18:21:41+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-05-27T09:17:38+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:33+00:00" - }, - { - "name": "symfony/polyfill-php81", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:11+00:00" - }, - { - "name": "symfony/process", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/298ed357274c1868c20a0061df256a1250a6c4af", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/routing", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/yaml": "<5.4" - }, - "require-dev": { - "doctrine/annotations": "^1.12", - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/36715ebf9fb9db73db0cb24263c79077c6fe8603", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/container": "^2.0" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "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.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": "2021-11-04T17:53:12+00:00" - }, - { - "name": "symfony/string", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/522144f0c4c004c80d56fa47e40e17028e2eefc2", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.0" - }, - "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/translation-contracts": "^2.0|^3.0", - "symfony/var-exporter": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "files": [ - "Resources/functions.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 an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/translation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/71bb15335798f8c4da110911bcf2d2fead7a430d", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.3|^3.0" - }, - "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" - }, - "provide": { - "symfony/translation-implementation": "2.3|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-07T00:29:03+00:00" - }, - { - "name": "symfony/translation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "suggest": { - "symfony/translation-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - } - }, - "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.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": "2021-09-07T12:43:40+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7b701676fc64f9ef11f9b4870f16b48f66be4834", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<5.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-17T16:30:44+00:00" - }, - { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.4", - "source": { - "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" - } - ], - "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", - "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "support": { - "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" - }, - "time": "2021-12-08T09:12:39+00:00" - }, - { - "name": "vlucas/phpdotenv", - "version": "v5.4.1", - "source": { - "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", - "shasum": "" - }, - "require": { - "ext-pcre": "*", - "graham-campbell/result-type": "^1.0.2", - "php": "^7.1.3 || ^8.0", - "phpoption/phpoption": "^1.8", - "symfony/polyfill-ctype": "^1.23", - "symfony/polyfill-mbstring": "^1.23.1", - "symfony/polyfill-php80": "^1.23.1" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" - }, - "suggest": { - "ext-filter": "Required to use the boolean validator." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.4-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.4.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", - "type": "tidelift" - } - ], - "time": "2021-12-12T23:22:04+00:00" - }, - { - "name": "voku/portable-ascii", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/voku/portable-ascii.git", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/9bd89e83cecdf8c37b64909454249eaed98b2c89", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89", - "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.0" - }, - "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-01-24T18:59:03+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "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.10.0" - }, - "time": "2021-03-09T10:59:23+00:00" - } - ], - "packages-dev": [ - { - "name": "doctrine/instantiator", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.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%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2020-11-10T18:47:58+00:00" - }, - { - "name": "facade/ignition-contracts", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/facade/ignition-contracts.git", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^v2.15.8", - "phpunit/phpunit": "^9.3.11", - "vimeo/psalm": "^3.17.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Facade\\IgnitionContracts\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://flareapp.io", - "role": "Developer" - } - ], - "description": "Solution contracts for Ignition", - "homepage": "https://github.com/facade/ignition-contracts", - "keywords": [ - "contracts", - "flare", - "ignition" - ], - "support": { - "issues": "https://github.com/facade/ignition-contracts/issues", - "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" - }, - "time": "2020-10-16T08:27:54+00:00" - }, - { - "name": "fakerphp/faker", - "version": "v1.19.0", - "source": { - "type": "git", - "url": "https://github.com/FakerPHP/Faker.git", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^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": "*", - "symfony/phpunit-bridge": "^4.4 || ^5.2" - }, - "suggest": { - "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", - "ext-curl": "Required by Faker\\Provider\\Image to download images.", - "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", - "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.19-dev" - } - }, - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "François Zaninotto" - } - ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], - "support": { - "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0" - }, - "time": "2022-02-02T17:38:57+00:00" - }, - { - "name": "filp/whoops", - "version": "2.14.5", - "source": { - "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "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.14.5" - }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "time": "2022-01-07T12:00:00+00:00" - }, - { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "shasum": "" - }, - "require": { - "php": "^5.3|^7.0|^8.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" - }, - "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "classmap": [ - "hamcrest" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "This is the PHP port of Hamcrest Matchers", - "keywords": [ - "test" - ], - "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" - }, - "time": "2020-07-09T08:09:16+00:00" - }, - { - "name": "laravel/sail", - "version": "v1.13.2", - "source": { - "type": "git", - "url": "https://github.com/laravel/sail.git", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.0|^9.0", - "illuminate/contracts": "^8.0|^9.0", - "illuminate/support": "^8.0|^9.0", - "php": "^7.3|^8.0" - }, - "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": "2022-02-08T14:14:12+00:00" - }, - { - "name": "mockery/mockery", - "version": "1.5.0", - "source": { - "type": "git", - "url": "https://github.com/mockery/mockery.git", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "shasum": "" - }, - "require": { - "hamcrest/hamcrest-php": "^2.0.1", - "lib-pcre": ">=7.0", - "php": "^7.3 || ^8.0" - }, - "conflict": { - "phpunit/phpunit": "<8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-0": { - "Mockery": "library/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" - } - ], - "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": { - "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.5.0" - }, - "time": "2022-01-20T13:18:17+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.10.2", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "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.10.2" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2020-11-13T09:40:50+00:00" - }, - { - "name": "nunomaduro/collision", - "version": "v6.1.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/collision.git", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "shasum": "" - }, - "require": { - "facade/ignition-contracts": "^1.0.2", - "filp/whoops": "^2.14.5", - "php": "^8.0.0", - "symfony/console": "^6.0.2" - }, - "require-dev": { - "brianium/paratest": "^6.4.1", - "laravel/framework": "^9.0", - "nunomaduro/larastan": "^1.0.2", - "nunomaduro/mock-final-classes": "^1.1.0", - "orchestra/testbench": "^7.0.0", - "phpunit/phpunit": "^9.5.11" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "6.x-dev" - }, - "laravel": { - "providers": [ - "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" - ] - } - }, - "autoload": { - "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": "2022-01-18T17:49:08+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.1.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/15a90844ad40f127afd244c0cad228de2a80052a", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a", - "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.1.1" - }, - "time": "2022-02-07T21:56:48+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.6.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "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.6.0" - }, - "time": "2022-01-04T19:58:01+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" - }, - "time": "2021-12-08T12:19:24+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "9.2.10", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d5850aaf931743067f4bfc1ae4cbd06468400687", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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 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", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.10" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-05T09:12:13+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "3.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-02T12:48:52+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "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/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:58:55+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T05:33:50+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.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/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:16:10+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "9.5.13", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/597cb647654ede35e43b137926dfdfef0fb11743", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.3.1", - "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": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.7", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", - "sebastian/version": "^3.0.2" - }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.13" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-01-24T07:33:35+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:08:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "1.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:08:54+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:30:19+00:00" - }, - { - "name": "sebastian/comparator", - "version": "4.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:49:45+00:00" - }, - { - "name": "sebastian/complexity", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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 calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:52:27+00:00" - }, - { - "name": "sebastian/diff", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:10:38+00:00" - }, - { - "name": "sebastian/environment", - "version": "5.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-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": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:52:38+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "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", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-11-11T14:18:36+00:00" - }, - { - "name": "sebastian/global-state", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-11T13:31:12+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-28T06:42:11+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "http://www.github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:17:30+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:45:17+00:00" - }, - { - "name": "sebastian/type", - "version": "2.3.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-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/2.3.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-15T12:49:02+00:00" - }, - { - "name": "sebastian/version", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:39:44+00:00" - }, - { - "name": "spatie/backtrace", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/backtrace.git", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "ext-json": "*", - "phpunit/phpunit": "^9.3", - "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": { - "issues": "https://github.com/spatie/backtrace/issues", - "source": "https://github.com/spatie/backtrace/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/sponsors/spatie", - "type": "github" - }, - { - "url": "https://spatie.be/open-source/support-us", - "type": "other" - } - ], - "time": "2021-11-09T10:57:15+00:00" - }, - { - "name": "spatie/flare-client-php", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/flare-client-php.git", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "shasum": "" - }, - "require": { - "illuminate/pipeline": "^8.0|^9.0", - "php": "^8.0", - "spatie/backtrace": "^1.2", - "symfony/http-foundation": "^5.0|^6.0", - "symfony/mime": "^5.2|^6.0", - "symfony/process": "^5.2|^6.0", - "symfony/var-dumper": "^5.2|^6.0" - }, - "require-dev": { - "dms/phpunit-arraysubset-asserts": "^0.3.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/phpunit-snapshot-assertions": "^4.0" - }, - "type": "library", - "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.0.1" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2022-02-04T15:21:00+00:00" - }, - { - "name": "spatie/ignition", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/spatie/ignition.git", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/d2d5ba823af3004268556e87dfc94449e4159f5a", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "monolog/monolog": "^2.0", - "php": "^8.0", - "spatie/flare-client-php": "^1.0", - "symfony/console": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "mockery/mockery": "^1.4", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/ray": "^1.32", - "symfony/process": "^5.4|^6.0" - }, - "type": "library", - "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": "2022-01-19T12:57:41+00:00" - }, - { - "name": "spatie/laravel-ignition", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/68250225a9f83b086462c2af1b1139dfde48fbd2", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*", - "illuminate/support": "^8.77|^9.0", - "monolog/monolog": "^2.3", - "php": "^8.0", - "spatie/flare-client-php": "^1.0.1", - "spatie/ignition": "^1.0", - "symfony/console": "^5.0|^6.0", - "symfony/var-dumper": "^5.0|^6.0" - }, - "require-dev": { - "filp/whoops": "^2.14", - "livewire/livewire": "^2.8|dev-develop", - "mockery/mockery": "^1.4", - "nunomaduro/larastan": "^1.0", - "orchestra/testbench": "^6.23|^7.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/laravel-ray": "^1.27" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Spatie\\LaravelIgnition\\IgnitionServiceProvider" - ], - "aliases": { - "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" - } - } - }, - "autoload": { - "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": "2022-02-04T15:25:56+00:00" - }, - { - "name": "squizlabs/php_codesniffer", - "version": "3.6.2", - "source": { - "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", - "shasum": "" - }, - "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.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": "lead" - } - ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", - "keywords": [ - "phpcs", - "standards" - ], - "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" - }, - "time": "2021-12-12T21:44:58+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2021-07-28T10:34:58+00:00" - } - ], - "aliases": [], - "minimum-stability": "dev", - "stability-flags": [], - "prefer-stable": true, - "prefer-lowest": false, - "platform": { - "php": "^8.0" - }, - "platform-dev": [], - "plugin-api-version": "2.1.0" -} diff --git a/Chapter14/onlineStore/config/app.php b/Chapter14/onlineStore/config/app.php deleted file mode 100644 index 1941d7c..0000000 --- a/Chapter14/onlineStore/config/app.php +++ /dev/null @@ -1,197 +0,0 @@ - env('APP_NAME', 'Laravel'), - - /* - |-------------------------------------------------------------------------- - | Application Environment - |-------------------------------------------------------------------------- - | - | This value determines the "environment" your application is currently - | running in. This may determine how you prefer to configure various - | services the application utilizes. Set this in your ".env" file. - | - */ - - 'env' => env('APP_ENV', 'production'), - - /* - |-------------------------------------------------------------------------- - | Application Debug Mode - |-------------------------------------------------------------------------- - | - | When your application is in debug mode, detailed error messages with - | stack traces will be shown on every error that occurs within your - | application. If disabled, a simple generic error page is shown. - | - */ - - 'debug' => (bool) env('APP_DEBUG', false), - - /* - |-------------------------------------------------------------------------- - | Application URL - |-------------------------------------------------------------------------- - | - | This URL is used by the console to properly generate URLs when using - | the Artisan command line tool. You should set this to the root of - | your application so that it is used when running Artisan tasks. - | - */ - - 'url' => env('APP_URL', 'http://localhost'), - - 'asset_url' => env('ASSET_URL', null), - - /* - |-------------------------------------------------------------------------- - | 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', - - /* - |-------------------------------------------------------------------------- - | 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' => [ - - /* - * Laravel Framework Service Providers... - */ - Illuminate\Auth\AuthServiceProvider::class, - Illuminate\Broadcasting\BroadcastServiceProvider::class, - Illuminate\Bus\BusServiceProvider::class, - Illuminate\Cache\CacheServiceProvider::class, - Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, - Illuminate\Cookie\CookieServiceProvider::class, - Illuminate\Database\DatabaseServiceProvider::class, - Illuminate\Encryption\EncryptionServiceProvider::class, - Illuminate\Filesystem\FilesystemServiceProvider::class, - Illuminate\Foundation\Providers\FoundationServiceProvider::class, - Illuminate\Hashing\HashServiceProvider::class, - Illuminate\Mail\MailServiceProvider::class, - Illuminate\Notifications\NotificationServiceProvider::class, - Illuminate\Pagination\PaginationServiceProvider::class, - Illuminate\Pipeline\PipelineServiceProvider::class, - Illuminate\Queue\QueueServiceProvider::class, - Illuminate\Redis\RedisServiceProvider::class, - Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, - Illuminate\Session\SessionServiceProvider::class, - Illuminate\Translation\TranslationServiceProvider::class, - Illuminate\Validation\ValidationServiceProvider::class, - Illuminate\View\ViewServiceProvider::class, - - /* - * 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, - - ], - - /* - |-------------------------------------------------------------------------- - | 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([ - // ... - ])->toArray(), - -]; diff --git a/Chapter14/onlineStore/config/auth.php b/Chapter14/onlineStore/config/auth.php deleted file mode 100644 index d8c6cee..0000000 --- a/Chapter14/onlineStore/config/auth.php +++ /dev/null @@ -1,111 +0,0 @@ - [ - '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 expire 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. - | - */ - - 'passwords' => [ - 'users' => [ - 'provider' => 'users', - 'table' => 'password_resets', - '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/Chapter14/onlineStore/config/broadcasting.php b/Chapter14/onlineStore/config/broadcasting.php deleted file mode 100644 index 67fcbbd..0000000 --- a/Chapter14/onlineStore/config/broadcasting.php +++ /dev/null @@ -1,67 +0,0 @@ - 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'), - 'useTLS' => true, - ], - '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/Chapter14/onlineStore/config/cache.php b/Chapter14/onlineStore/config/cache.php deleted file mode 100644 index 8736c7a..0000000 --- a/Chapter14/onlineStore/config/cache.php +++ /dev/null @@ -1,110 +0,0 @@ - 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'), - ], - - '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 a RAM based store such as APC or Memcached, there might - | be other applications utilizing the same cache. So, we'll specify a - | value to get prefixed to all our keys so we can avoid collisions. - | - */ - - 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'), - -]; diff --git a/Chapter14/onlineStore/config/cors.php b/Chapter14/onlineStore/config/cors.php deleted file mode 100644 index 8a39e6d..0000000 --- a/Chapter14/onlineStore/config/cors.php +++ /dev/null @@ -1,34 +0,0 @@ - ['api/*', 'sanctum/csrf-cookie'], - - 'allowed_methods' => ['*'], - - 'allowed_origins' => ['*'], - - 'allowed_origins_patterns' => [], - - 'allowed_headers' => ['*'], - - 'exposed_headers' => [], - - 'max_age' => 0, - - 'supports_credentials' => false, - -]; diff --git a/Chapter14/onlineStore/config/database.php b/Chapter14/onlineStore/config/database.php deleted file mode 100644 index 0faebae..0000000 --- a/Chapter14/onlineStore/config/database.php +++ /dev/null @@ -1,147 +0,0 @@ - env('DB_CONNECTION', 'mysql'), - - /* - |-------------------------------------------------------------------------- - | Database Connections - |-------------------------------------------------------------------------- - | - | Here are each of the database connections setup for your application. - | Of course, examples of configuring each database platform that is - | supported by Laravel is shown below to make development simple. - | - | - | All database work in Laravel is done through the PHP PDO facilities - | so make sure you have the driver for your particular database of - | choice installed on your machine before you begin development. - | - */ - - 'connections' => [ - - 'sqlite' => [ - 'driver' => 'sqlite', - 'url' => env('DATABASE_URL'), - 'database' => env('DB_DATABASE', database_path('database.sqlite')), - 'prefix' => '', - 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), - ], - - 'mysql' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '3306'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'unix_socket' => env('DB_SOCKET', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - 'pgsql' => [ - 'driver' => 'pgsql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '5432'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - 'search_path' => 'public', - 'sslmode' => 'prefer', - ], - - 'sqlsrv' => [ - 'driver' => 'sqlsrv', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', 'localhost'), - 'port' => env('DB_PORT', '1433'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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'), - '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'), - 'password' => env('REDIS_PASSWORD'), - 'port' => env('REDIS_PORT', '6379'), - 'database' => env('REDIS_CACHE_DB', '1'), - ], - - ], - -]; diff --git a/Chapter14/onlineStore/config/filesystems.php b/Chapter14/onlineStore/config/filesystems.php deleted file mode 100644 index cf5abce..0000000 --- a/Chapter14/onlineStore/config/filesystems.php +++ /dev/null @@ -1,73 +0,0 @@ - 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 setup for each driver as an example of the required options. - | - | Supported Drivers: "local", "ftp", "sftp", "s3" - | - */ - - 'disks' => [ - - 'local' => [ - 'driver' => 'local', - 'root' => storage_path('app'), - ], - - 'public' => [ - 'driver' => 'local', - 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', - 'visibility' => 'public', - ], - - '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), - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter14/onlineStore/config/hashing.php b/Chapter14/onlineStore/config/hashing.php deleted file mode 100644 index bcd3be4..0000000 --- a/Chapter14/onlineStore/config/hashing.php +++ /dev/null @@ -1,52 +0,0 @@ - '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/Chapter14/onlineStore/config/logging.php b/Chapter14/onlineStore/config/logging.php deleted file mode 100644 index fefe088..0000000 --- a/Chapter14/onlineStore/config/logging.php +++ /dev/null @@ -1,119 +0,0 @@ - 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' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), - - /* - |-------------------------------------------------------------------------- - | 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'), - ], - - 'daily' => [ - 'driver' => 'daily', - 'path' => storage_path('logs/laravel.log'), - 'level' => env('LOG_LEVEL', 'debug'), - 'days' => 14, - ], - - 'slack' => [ - 'driver' => 'slack', - 'url' => env('LOG_SLACK_WEBHOOK_URL'), - 'username' => 'Laravel Log', - 'emoji' => ':boom:', - 'level' => env('LOG_LEVEL', 'critical'), - ], - - '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'), - ], - ], - - 'stderr' => [ - 'driver' => 'monolog', - 'level' => env('LOG_LEVEL', 'debug'), - 'handler' => StreamHandler::class, - 'formatter' => env('LOG_STDERR_FORMATTER'), - 'with' => [ - 'stream' => 'php://stderr', - ], - ], - - 'syslog' => [ - 'driver' => 'syslog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'errorlog' => [ - 'driver' => 'errorlog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'null' => [ - 'driver' => 'monolog', - 'handler' => NullHandler::class, - ], - - 'emergency' => [ - 'path' => storage_path('logs/laravel.log'), - ], - ], - -]; diff --git a/Chapter14/onlineStore/config/mail.php b/Chapter14/onlineStore/config/mail.php deleted file mode 100644 index 87b6fe3..0000000 --- a/Chapter14/onlineStore/config/mail.php +++ /dev/null @@ -1,117 +0,0 @@ - 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", - | "postmark", "log", "array", "failover" - | - */ - - 'mailers' => [ - 'smtp' => [ - 'transport' => 'smtp', - '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, - ], - - 'ses' => [ - 'transport' => 'ses', - ], - - 'mailgun' => [ - 'transport' => 'mailgun', - ], - - 'postmark' => [ - 'transport' => 'postmark', - ], - - 'sendmail' => [ - 'transport' => 'sendmail', - 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -t -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/Chapter14/onlineStore/config/queue.php b/Chapter14/onlineStore/config/queue.php deleted file mode 100644 index 25ea5a8..0000000 --- a/Chapter14/onlineStore/config/queue.php +++ /dev/null @@ -1,93 +0,0 @@ - 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, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter14/onlineStore/config/sanctum.php b/Chapter14/onlineStore/config/sanctum.php deleted file mode 100644 index 9281c92..0000000 --- a/Chapter14/onlineStore/config/sanctum.php +++ /dev/null @@ -1,65 +0,0 @@ - explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( - '%s%s', - 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', - env('APP_URL') ? ','.parse_url(env('APP_URL'), PHP_URL_HOST) : '' - ))), - - /* - |-------------------------------------------------------------------------- - | 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/Chapter14/onlineStore/config/services.php b/Chapter14/onlineStore/config/services.php deleted file mode 100644 index 2a1d616..0000000 --- a/Chapter14/onlineStore/config/services.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - 'domain' => env('MAILGUN_DOMAIN'), - 'secret' => env('MAILGUN_SECRET'), - 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), - ], - - '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/Chapter14/onlineStore/config/session.php b/Chapter14/onlineStore/config/session.php deleted file mode 100644 index 8fed97c..0000000 --- a/Chapter14/onlineStore/config/session.php +++ /dev/null @@ -1,201 +0,0 @@ - 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/Chapter14/onlineStore/config/view.php b/Chapter14/onlineStore/config/view.php deleted file mode 100644 index 22b8a18..0000000 --- a/Chapter14/onlineStore/config/view.php +++ /dev/null @@ -1,36 +0,0 @@ - [ - 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/Chapter14/onlineStore/database/.gitignore b/Chapter14/onlineStore/database/.gitignore deleted file mode 100644 index 9b19b93..0000000 --- a/Chapter14/onlineStore/database/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.sqlite* diff --git a/Chapter14/onlineStore/database/factories/UserFactory.php b/Chapter14/onlineStore/database/factories/UserFactory.php deleted file mode 100644 index d6ca926..0000000 --- a/Chapter14/onlineStore/database/factories/UserFactory.php +++ /dev/null @@ -1,42 +0,0 @@ - - */ -class UserFactory extends Factory -{ - /** - * Define the model's default state. - * - * @return array - */ - public function definition() - { - return [ - 'name' => $this->faker->name(), - 'email' => $this->faker->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. - * - * @return \Illuminate\Database\Eloquent\Factories\Factory - */ - public function unverified() - { - return $this->state(function (array $attributes) { - return [ - 'email_verified_at' => null, - ]; - }); - } -} diff --git a/Chapter14/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php b/Chapter14/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php deleted file mode 100644 index cf6b776..0000000 --- a/Chapter14/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->string('name'); - $table->string('email')->unique(); - $table->timestamp('email_verified_at')->nullable(); - $table->string('password'); - $table->rememberToken(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('users'); - } -}; diff --git a/Chapter14/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php b/Chapter14/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php deleted file mode 100644 index fcacb80..0000000 --- a/Chapter14/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php +++ /dev/null @@ -1,32 +0,0 @@ -string('email')->index(); - $table->string('token'); - $table->timestamp('created_at')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('password_resets'); - } -}; diff --git a/Chapter14/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/Chapter14/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php deleted file mode 100644 index 1719198..0000000 --- a/Chapter14/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php +++ /dev/null @@ -1,36 +0,0 @@ -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. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('failed_jobs'); - } -}; diff --git a/Chapter14/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/Chapter14/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php deleted file mode 100644 index fd235f8..0000000 --- a/Chapter14/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->morphs('tokenable'); - $table->string('name'); - $table->string('token', 64)->unique(); - $table->text('abilities')->nullable(); - $table->timestamp('last_used_at')->nullable(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('personal_access_tokens'); - } -}; diff --git a/Chapter14/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php b/Chapter14/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php deleted file mode 100644 index 2eecdc2..0000000 --- a/Chapter14/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php +++ /dev/null @@ -1,35 +0,0 @@ -id(); - $table->string('name'); - $table->text('description'); - $table->string('image'); - $table->integer('price'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('products'); - } -}; diff --git a/Chapter14/onlineStore/database/seeders/DatabaseSeeder.php b/Chapter14/onlineStore/database/seeders/DatabaseSeeder.php deleted file mode 100644 index 71f673f..0000000 --- a/Chapter14/onlineStore/database/seeders/DatabaseSeeder.php +++ /dev/null @@ -1,19 +0,0 @@ -create(); - } -} diff --git a/Chapter14/onlineStore/lang/en.json b/Chapter14/onlineStore/lang/en.json deleted file mode 100644 index 577680d..0000000 --- a/Chapter14/onlineStore/lang/en.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "The :attribute must contain at least one letter.": "The :attribute must contain at least one letter.", - "The :attribute must contain at least one number.": "The :attribute must contain at least one number.", - "The :attribute must contain at least one symbol.": "The :attribute must contain at least one symbol.", - "The :attribute must contain at least one uppercase and one lowercase letter.": "The :attribute must contain at least one uppercase and one lowercase letter.", - "The given :attribute has appeared in a data leak. Please choose a different :attribute.": "The given :attribute has appeared in a data leak. Please choose a different :attribute." -} diff --git a/Chapter14/onlineStore/lang/en/auth.php b/Chapter14/onlineStore/lang/en/auth.php deleted file mode 100644 index 6598e2c..0000000 --- a/Chapter14/onlineStore/lang/en/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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/Chapter14/onlineStore/lang/en/pagination.php b/Chapter14/onlineStore/lang/en/pagination.php deleted file mode 100644 index d481411..0000000 --- a/Chapter14/onlineStore/lang/en/pagination.php +++ /dev/null @@ -1,19 +0,0 @@ - '« Previous', - 'next' => 'Next »', - -]; diff --git a/Chapter14/onlineStore/lang/en/passwords.php b/Chapter14/onlineStore/lang/en/passwords.php deleted file mode 100644 index 2345a56..0000000 --- a/Chapter14/onlineStore/lang/en/passwords.php +++ /dev/null @@ -1,22 +0,0 @@ - '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/Chapter14/onlineStore/lang/en/validation.php b/Chapter14/onlineStore/lang/en/validation.php deleted file mode 100644 index 783003c..0000000 --- a/Chapter14/onlineStore/lang/en/validation.php +++ /dev/null @@ -1,163 +0,0 @@ - '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' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - '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' => [ - 'numeric' => 'The :attribute must be greater than :value.', - 'file' => 'The :attribute must be greater than :value kilobytes.', - 'string' => 'The :attribute must be greater than :value characters.', - 'array' => 'The :attribute must have more than :value items.', - ], - 'gte' => [ - 'numeric' => 'The :attribute must be greater than or equal to :value.', - 'file' => 'The :attribute must be greater than or equal to :value kilobytes.', - 'string' => 'The :attribute must be greater than or equal to :value characters.', - 'array' => 'The :attribute must have :value items or more.', - ], - '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' => [ - 'numeric' => 'The :attribute must be less than :value.', - 'file' => 'The :attribute must be less than :value kilobytes.', - 'string' => 'The :attribute must be less than :value characters.', - 'array' => 'The :attribute must have less than :value items.', - ], - 'lte' => [ - 'numeric' => 'The :attribute must be less than or equal to :value.', - 'file' => 'The :attribute must be less than or equal to :value kilobytes.', - 'string' => 'The :attribute must be less than or equal to :value characters.', - 'array' => 'The :attribute must not have more than :value items.', - ], - 'mac_address' => 'The :attribute must be a valid MAC address.', - 'max' => [ - 'numeric' => 'The :attribute must not be greater than :max.', - 'file' => 'The :attribute must not be greater than :max kilobytes.', - 'string' => 'The :attribute must not be greater than :max characters.', - 'array' => 'The :attribute must not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - '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.', - 'password' => 'The password is incorrect.', - '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' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - '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/Chapter14/onlineStore/package.json b/Chapter14/onlineStore/package.json deleted file mode 100644 index 7a9aecd..0000000 --- a/Chapter14/onlineStore/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "private": true, - "scripts": { - "dev": "npm run development", - "development": "mix", - "watch": "mix watch", - "watch-poll": "mix watch -- --watch-options-poll=1000", - "hot": "mix watch --hot", - "prod": "npm run production", - "production": "mix --production" - }, - "devDependencies": { - "axios": "^0.25", - "laravel-mix": "^6.0.6", - "lodash": "^4.17.19", - "postcss": "^8.1.14" - } -} diff --git a/Chapter14/onlineStore/phpcs.xml b/Chapter14/onlineStore/phpcs.xml deleted file mode 100644 index a1cf2b6..0000000 --- a/Chapter14/onlineStore/phpcs.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - The coding standard for the Online Store project - - app/ - config/ - database/ - routes/ - */migrations/* - diff --git a/Chapter14/onlineStore/phpunit.xml b/Chapter14/onlineStore/phpunit.xml deleted file mode 100644 index 2ac86a1..0000000 --- a/Chapter14/onlineStore/phpunit.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - ./tests/Unit - - - ./tests/Feature - - - - - ./app - - - - - - - - - - - - - - diff --git a/Chapter14/onlineStore/public/.htaccess b/Chapter14/onlineStore/public/.htaccess deleted file mode 100644 index 3aec5e2..0000000 --- a/Chapter14/onlineStore/public/.htaccess +++ /dev/null @@ -1,21 +0,0 @@ - - - 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/Chapter14/onlineStore/public/css/app.css b/Chapter14/onlineStore/public/css/app.css deleted file mode 100644 index cabac36..0000000 --- a/Chapter14/onlineStore/public/css/app.css +++ /dev/null @@ -1,20 +0,0 @@ -.bg-secondary { - background-color: #2c3e50 !important; -} - -.copyright { - background-color: #1a252f; -} - -.bg-primary { - background-color: #1abc9c !important; -} - -nav{ - font-weight: 700; -} - -.img-card{ - height: 18vw; - object-fit: cover; -} diff --git a/Chapter14/onlineStore/public/favicon.ico b/Chapter14/onlineStore/public/favicon.ico deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter14/onlineStore/public/img/game.png b/Chapter14/onlineStore/public/img/game.png deleted file mode 100644 index 85420e8bbc16098bf26b4ee63bde0e91a19d1f2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25896 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 cz>% diff --git a/Chapter14/onlineStore/public/img/safe.png b/Chapter14/onlineStore/public/img/safe.png deleted file mode 100644 index 445942c707af53210931f9f4f99f6d3cb69e5d89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19240 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
    w==XB0?3|p=#`o%NsudE(E-U#KS3Snw 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 o>ir+C;RN10sIS0&a;pmake(Kernel::class); - -$response = $kernel->handle( - $request = Request::capture() -)->send(); - -$kernel->terminate($request, $response); diff --git a/Chapter14/onlineStore/public/robots.txt b/Chapter14/onlineStore/public/robots.txt deleted file mode 100644 index eb05362..0000000 --- a/Chapter14/onlineStore/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: diff --git a/Chapter14/onlineStore/resources/css/app.css b/Chapter14/onlineStore/resources/css/app.css deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter14/onlineStore/resources/js/app.js b/Chapter14/onlineStore/resources/js/app.js deleted file mode 100644 index 40c55f6..0000000 --- a/Chapter14/onlineStore/resources/js/app.js +++ /dev/null @@ -1 +0,0 @@ -require('./bootstrap'); diff --git a/Chapter14/onlineStore/resources/js/bootstrap.js b/Chapter14/onlineStore/resources/js/bootstrap.js deleted file mode 100644 index 6922577..0000000 --- a/Chapter14/onlineStore/resources/js/bootstrap.js +++ /dev/null @@ -1,28 +0,0 @@ -window._ = require('lodash'); - -/** - * 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 = require('axios'); - -window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; - -/** - * 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'; - -// window.Pusher = require('pusher-js'); - -// window.Echo = new Echo({ -// broadcaster: 'pusher', -// key: process.env.MIX_PUSHER_APP_KEY, -// cluster: process.env.MIX_PUSHER_APP_CLUSTER, -// forceTLS: true -// }); diff --git a/Chapter14/onlineStore/resources/views/home/about.blade.php b/Chapter14/onlineStore/resources/views/home/about.blade.php deleted file mode 100644 index f79abf3..0000000 --- a/Chapter14/onlineStore/resources/views/home/about.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    -
    -
    -

    {{ $viewData["description"] }}

    -
    -
    -

    {{ $viewData["author"] }}

    -
    -
    -
    -@endsection diff --git a/Chapter14/onlineStore/resources/views/home/index.blade.php b/Chapter14/onlineStore/resources/views/home/index.blade.php deleted file mode 100644 index 1affb20..0000000 --- a/Chapter14/onlineStore/resources/views/home/index.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('content') -
    -
    - -
    -
    - -
    -
    - -
    -
    -@endsection diff --git a/Chapter14/onlineStore/resources/views/layouts/app.blade.php b/Chapter14/onlineStore/resources/views/layouts/app.blade.php deleted file mode 100644 index eee7fcb..0000000 --- a/Chapter14/onlineStore/resources/views/layouts/app.blade.php +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - @yield('title', 'Online Store') - - - -
    - -
    -
    -

    @yield('subtitle', 'A Laravel Online Store')

    -
    -
    - - -
    - @yield('content') -
    - - - - - - - diff --git a/Chapter14/onlineStore/resources/views/product/index.blade.php b/Chapter14/onlineStore/resources/views/product/index.blade.php deleted file mode 100644 index c82528a..0000000 --- a/Chapter14/onlineStore/resources/views/product/index.blade.php +++ /dev/null @@ -1,18 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    - @foreach ($viewData["products"] as $product) - - @endforeach -
    -@endsection diff --git a/Chapter14/onlineStore/resources/views/product/show.blade.php b/Chapter14/onlineStore/resources/views/product/show.blade.php deleted file mode 100644 index 0adad34..0000000 --- a/Chapter14/onlineStore/resources/views/product/show.blade.php +++ /dev/null @@ -1,21 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    -
    -
    - getImage()) }}" class="img-fluid rounded-start"> -
    -
    -
    -
    - {{ $viewData["product"]->getName() }} (${{ $viewData["product"]->getPrice() }}) -
    -

    {{ $viewData["product"]->getDescription() }}

    -

    Add to Cart

    -
    -
    -
    -
    -@endsection diff --git a/Chapter14/onlineStore/resources/views/welcome.blade.php b/Chapter14/onlineStore/resources/views/welcome.blade.php deleted file mode 100644 index c587c72..0000000 --- a/Chapter14/onlineStore/resources/views/welcome.blade.php +++ /dev/null @@ -1,7 +0,0 @@ -@extends('layouts.app') -@section('title', 'Home Page - Online Store') -@section('content') -
    - Welcome to the application -
    -@endsection \ No newline at end of file diff --git a/Chapter14/onlineStore/routes/api.php b/Chapter14/onlineStore/routes/api.php deleted file mode 100644 index eb6fa48..0000000 --- a/Chapter14/onlineStore/routes/api.php +++ /dev/null @@ -1,19 +0,0 @@ -get('/user', function (Request $request) { - return $request->user(); -}); diff --git a/Chapter14/onlineStore/routes/channels.php b/Chapter14/onlineStore/routes/channels.php deleted file mode 100644 index 5d451e1..0000000 --- a/Chapter14/onlineStore/routes/channels.php +++ /dev/null @@ -1,18 +0,0 @@ -id === (int) $id; -}); diff --git a/Chapter14/onlineStore/routes/console.php b/Chapter14/onlineStore/routes/console.php deleted file mode 100644 index e05f4c9..0000000 --- a/Chapter14/onlineStore/routes/console.php +++ /dev/null @@ -1,19 +0,0 @@ -comment(Inspiring::quote()); -})->purpose('Display an inspiring quote'); diff --git a/Chapter14/onlineStore/routes/web.php b/Chapter14/onlineStore/routes/web.php deleted file mode 100644 index 0f5e40f..0000000 --- a/Chapter14/onlineStore/routes/web.php +++ /dev/null @@ -1,19 +0,0 @@ -name("home.index"); -Route::get('/about', 'App\Http\Controllers\HomeController@about')->name("home.about"); -Route::get('/products', 'App\Http\Controllers\ProductController@index')->name("product.index"); -Route::get('/products/{id}', 'App\Http\Controllers\ProductController@show')->name("product.show"); diff --git a/Chapter14/onlineStore/storage/app/.gitignore b/Chapter14/onlineStore/storage/app/.gitignore deleted file mode 100644 index 8f4803c..0000000 --- a/Chapter14/onlineStore/storage/app/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!public/ -!.gitignore diff --git a/Chapter14/onlineStore/storage/app/public/.gitignore b/Chapter14/onlineStore/storage/app/public/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter14/onlineStore/storage/app/public/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter14/onlineStore/storage/framework/.gitignore b/Chapter14/onlineStore/storage/framework/.gitignore deleted file mode 100644 index 05c4471..0000000 --- a/Chapter14/onlineStore/storage/framework/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -compiled.php -config.php -down -events.scanned.php -maintenance.php -routes.php -routes.scanned.php -schedule-* -services.json diff --git a/Chapter14/onlineStore/storage/framework/cache/.gitignore b/Chapter14/onlineStore/storage/framework/cache/.gitignore deleted file mode 100644 index 01e4a6c..0000000 --- a/Chapter14/onlineStore/storage/framework/cache/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!data/ -!.gitignore diff --git a/Chapter14/onlineStore/storage/framework/cache/data/.gitignore b/Chapter14/onlineStore/storage/framework/cache/data/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter14/onlineStore/storage/framework/cache/data/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter14/onlineStore/storage/framework/sessions/.gitignore b/Chapter14/onlineStore/storage/framework/sessions/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter14/onlineStore/storage/framework/sessions/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter14/onlineStore/storage/framework/testing/.gitignore b/Chapter14/onlineStore/storage/framework/testing/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter14/onlineStore/storage/framework/testing/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter14/onlineStore/storage/framework/views/.gitignore b/Chapter14/onlineStore/storage/framework/views/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter14/onlineStore/storage/framework/views/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter14/onlineStore/storage/logs/.gitignore b/Chapter14/onlineStore/storage/logs/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter14/onlineStore/storage/logs/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter14/onlineStore/tests/CreatesApplication.php b/Chapter14/onlineStore/tests/CreatesApplication.php deleted file mode 100644 index 547152f..0000000 --- a/Chapter14/onlineStore/tests/CreatesApplication.php +++ /dev/null @@ -1,22 +0,0 @@ -make(Kernel::class)->bootstrap(); - - return $app; - } -} diff --git a/Chapter14/onlineStore/tests/Feature/ExampleTest.php b/Chapter14/onlineStore/tests/Feature/ExampleTest.php deleted file mode 100644 index 78ccc21..0000000 --- a/Chapter14/onlineStore/tests/Feature/ExampleTest.php +++ /dev/null @@ -1,21 +0,0 @@ -get('/'); - - $response->assertStatus(200); - } -} diff --git a/Chapter14/onlineStore/tests/TestCase.php b/Chapter14/onlineStore/tests/TestCase.php deleted file mode 100644 index 2932d4a..0000000 --- a/Chapter14/onlineStore/tests/TestCase.php +++ /dev/null @@ -1,10 +0,0 @@ -assertTrue(true); - } -} diff --git a/Chapter14/onlineStore/webpack.mix.js b/Chapter14/onlineStore/webpack.mix.js deleted file mode 100644 index 2a22dc1..0000000 --- a/Chapter14/onlineStore/webpack.mix.js +++ /dev/null @@ -1,17 +0,0 @@ -const mix = require('laravel-mix'); - -/* - |-------------------------------------------------------------------------- - | Mix Asset Management - |-------------------------------------------------------------------------- - | - | Mix provides a clean, fluent API for defining some Webpack build steps - | for your Laravel applications. By default, we are compiling the CSS - | file for the application as well as bundling up all the JS files. - | - */ - -mix.js('resources/js/app.js', 'public/js') - .postCss('resources/css/app.css', 'public/css', [ - // - ]); diff --git a/Chapter15/onlineStore/.editorconfig b/Chapter15/onlineStore/.editorconfig deleted file mode 100644 index 1671c9b..0000000 --- a/Chapter15/onlineStore/.editorconfig +++ /dev/null @@ -1,18 +0,0 @@ -root = true - -[*] -charset = utf-8 -end_of_line = lf -insert_final_newline = true -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true - -[*.md] -trim_trailing_whitespace = false - -[*.{yml,yaml}] -indent_size = 2 - -[docker-compose.yml] -indent_size = 4 diff --git a/Chapter15/onlineStore/.env.example b/Chapter15/onlineStore/.env.example deleted file mode 100644 index 8510237..0000000 --- a/Chapter15/onlineStore/.env.example +++ /dev/null @@ -1,52 +0,0 @@ -APP_NAME=Laravel -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=laravel -DB_USERNAME=root -DB_PASSWORD= - -BROADCAST_DRIVER=log -CACHE_DRIVER=file -FILESYSTEM_DISK=local -QUEUE_CONNECTION=sync -SESSION_DRIVER=file -SESSION_LIFETIME=120 - -MEMCACHED_HOST=127.0.0.1 - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -MAIL_MAILER=smtp -MAIL_HOST=mailhog -MAIL_PORT=1025 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS=null -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_APP_CLUSTER=mt1 - -MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/Chapter15/onlineStore/.gitattributes b/Chapter15/onlineStore/.gitattributes deleted file mode 100644 index 510d996..0000000 --- a/Chapter15/onlineStore/.gitattributes +++ /dev/null @@ -1,10 +0,0 @@ -* text=auto - -*.blade.php diff=html -*.css diff=css -*.html diff=html -*.md diff=markdown -*.php diff=php - -/.github export-ignore -CHANGELOG.md export-ignore diff --git a/Chapter15/onlineStore/.gitignore b/Chapter15/onlineStore/.gitignore deleted file mode 100644 index eb003b0..0000000 --- a/Chapter15/onlineStore/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -/node_modules -/public/hot -/public/storage -/storage/*.key -/vendor -.env -.env.backup -.phpunit.result.cache -docker-compose.override.yml -Homestead.json -Homestead.yaml -npm-debug.log -yarn-error.log -/.idea -/.vscode diff --git a/Chapter15/onlineStore/.styleci.yml b/Chapter15/onlineStore/.styleci.yml deleted file mode 100644 index 679a631..0000000 --- a/Chapter15/onlineStore/.styleci.yml +++ /dev/null @@ -1,13 +0,0 @@ -php: - preset: laravel - version: 8 - disabled: - - no_unused_imports - finder: - not-name: - - index.php -js: - finder: - not-name: - - webpack.mix.js -css: true diff --git a/Chapter15/onlineStore/README.md b/Chapter15/onlineStore/README.md deleted file mode 100644 index f171eca..0000000 --- a/Chapter15/onlineStore/README.md +++ /dev/null @@ -1,64 +0,0 @@ -

    - -

    -Build Status -Total Downloads -Latest Stable Version -License -

    - -## About Laravel - -Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as: - -- [Simple, fast routing engine](https://laravel.com/docs/routing). -- [Powerful dependency injection container](https://laravel.com/docs/container). -- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage. -- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent). -- Database agnostic [schema migrations](https://laravel.com/docs/migrations). -- [Robust background job processing](https://laravel.com/docs/queues). -- [Real-time event broadcasting](https://laravel.com/docs/broadcasting). - -Laravel is accessible, powerful, and provides tools required for large, robust applications. - -## Learning Laravel - -Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework. - -If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 2000 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library. - -## Laravel Sponsors - -We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell). - -### Premium Partners - -- **[Vehikl](https://vehikl.com/)** -- **[Tighten Co.](https://tighten.co)** -- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** -- **[64 Robots](https://64robots.com)** -- **[Cubet Techno Labs](https://cubettech.com)** -- **[Cyber-Duck](https://cyber-duck.co.uk)** -- **[Many](https://www.many.co.uk)** -- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)** -- **[DevSquad](https://devsquad.com)** -- **[Curotec](https://www.curotec.com/services/technologies/laravel/)** -- **[OP.GG](https://op.gg)** -- **[WebReinvent](https://webreinvent.com/?utm_source=laravel&utm_medium=github&utm_campaign=patreon-sponsors)** -- **[Lendio](https://lendio.com)** - -## Contributing - -Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions). - -## Code of Conduct - -In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). - -## Security Vulnerabilities - -If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed. - -## License - -The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). diff --git a/Chapter15/onlineStore/app/Console/Kernel.php b/Chapter15/onlineStore/app/Console/Kernel.php deleted file mode 100644 index d8bc1d2..0000000 --- a/Chapter15/onlineStore/app/Console/Kernel.php +++ /dev/null @@ -1,32 +0,0 @@ -command('inspire')->hourly(); - } - - /** - * Register the commands for the application. - * - * @return void - */ - protected function commands() - { - $this->load(__DIR__.'/Commands'); - - require base_path('routes/console.php'); - } -} diff --git a/Chapter15/onlineStore/app/Exceptions/Handler.php b/Chapter15/onlineStore/app/Exceptions/Handler.php deleted file mode 100644 index 8e7fbd1..0000000 --- a/Chapter15/onlineStore/app/Exceptions/Handler.php +++ /dev/null @@ -1,41 +0,0 @@ -> - */ - protected $dontReport = [ - // - ]; - - /** - * A list of the inputs that are never flashed for validation exceptions. - * - * @var array - */ - protected $dontFlash = [ - 'current_password', - 'password', - 'password_confirmation', - ]; - - /** - * Register the exception handling callbacks for the application. - * - * @return void - */ - public function register() - { - $this->reportable(function (Throwable $e) { - // - }); - } -} diff --git a/Chapter15/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php b/Chapter15/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php deleted file mode 100644 index cd78cb3..0000000 --- a/Chapter15/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php +++ /dev/null @@ -1,16 +0,0 @@ -with("viewData", $viewData); - } -} diff --git a/Chapter15/onlineStore/app/Http/Controllers/Controller.php b/Chapter15/onlineStore/app/Http/Controllers/Controller.php deleted file mode 100644 index a0a2a8a..0000000 --- a/Chapter15/onlineStore/app/Http/Controllers/Controller.php +++ /dev/null @@ -1,13 +0,0 @@ -with("viewData", $viewData); - } - - public function about() - { - $viewData = []; - $viewData["title"] = "About us - Online Store"; - $viewData["subtitle"] = "About us"; - $viewData["description"] = "This is an about page ..."; - $viewData["author"] = "Developed by: Your Name"; - return view('home.about')->with("viewData", $viewData); - } -} diff --git a/Chapter15/onlineStore/app/Http/Controllers/ProductController.php b/Chapter15/onlineStore/app/Http/Controllers/ProductController.php deleted file mode 100644 index d27a3a3..0000000 --- a/Chapter15/onlineStore/app/Http/Controllers/ProductController.php +++ /dev/null @@ -1,29 +0,0 @@ -with("viewData", $viewData); - } - - public function show($id) - { - $viewData = []; - $product = Product::findOrFail($id); - $viewData["title"] = $product->getName()." - Online Store"; - $viewData["subtitle"] = $product->getName()." - Product information"; - $viewData["product"] = $product; - return view('product.show')->with("viewData", $viewData); - } -} diff --git a/Chapter15/onlineStore/app/Http/Kernel.php b/Chapter15/onlineStore/app/Http/Kernel.php deleted file mode 100644 index d3722c2..0000000 --- a/Chapter15/onlineStore/app/Http/Kernel.php +++ /dev/null @@ -1,67 +0,0 @@ - - */ - protected $middleware = [ - // \App\Http\Middleware\TrustHosts::class, - \App\Http\Middleware\TrustProxies::class, - \Fruitcake\Cors\HandleCors::class, - \App\Http\Middleware\PreventRequestsDuringMaintenance::class, - \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, - \App\Http\Middleware\TrimStrings::class, - \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, - ]; - - /** - * The application's route middleware groups. - * - * @var array> - */ - protected $middlewareGroups = [ - 'web' => [ - \App\Http\Middleware\EncryptCookies::class, - \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, - \Illuminate\Session\Middleware\StartSession::class, - // \Illuminate\Session\Middleware\AuthenticateSession::class, - \Illuminate\View\Middleware\ShareErrorsFromSession::class, - \App\Http\Middleware\VerifyCsrfToken::class, - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - - 'api' => [ - // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, - 'throttle:api', - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - ]; - - /** - * The application's route middleware. - * - * These middleware may be assigned to groups or used individually. - * - * @var array - */ - protected $routeMiddleware = [ - 'auth' => \App\Http\Middleware\Authenticate::class, - 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::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, - 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, - 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, - 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, - ]; -} diff --git a/Chapter15/onlineStore/app/Http/Middleware/Authenticate.php b/Chapter15/onlineStore/app/Http/Middleware/Authenticate.php deleted file mode 100644 index 704089a..0000000 --- a/Chapter15/onlineStore/app/Http/Middleware/Authenticate.php +++ /dev/null @@ -1,21 +0,0 @@ -expectsJson()) { - return route('login'); - } - } -} diff --git a/Chapter15/onlineStore/app/Http/Middleware/EncryptCookies.php b/Chapter15/onlineStore/app/Http/Middleware/EncryptCookies.php deleted file mode 100644 index 867695b..0000000 --- a/Chapter15/onlineStore/app/Http/Middleware/EncryptCookies.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter15/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/Chapter15/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php deleted file mode 100644 index 74cbd9a..0000000 --- a/Chapter15/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter15/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php b/Chapter15/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php deleted file mode 100644 index a2813a0..0000000 --- a/Chapter15/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php +++ /dev/null @@ -1,32 +0,0 @@ -check()) { - return redirect(RouteServiceProvider::HOME); - } - } - - return $next($request); - } -} diff --git a/Chapter15/onlineStore/app/Http/Middleware/TrimStrings.php b/Chapter15/onlineStore/app/Http/Middleware/TrimStrings.php deleted file mode 100644 index 88cadca..0000000 --- a/Chapter15/onlineStore/app/Http/Middleware/TrimStrings.php +++ /dev/null @@ -1,19 +0,0 @@ - - */ - protected $except = [ - 'current_password', - 'password', - 'password_confirmation', - ]; -} diff --git a/Chapter15/onlineStore/app/Http/Middleware/TrustHosts.php b/Chapter15/onlineStore/app/Http/Middleware/TrustHosts.php deleted file mode 100644 index 7186414..0000000 --- a/Chapter15/onlineStore/app/Http/Middleware/TrustHosts.php +++ /dev/null @@ -1,20 +0,0 @@ - - */ - public function hosts() - { - return [ - $this->allSubdomainsOfApplicationUrl(), - ]; - } -} diff --git a/Chapter15/onlineStore/app/Http/Middleware/TrustProxies.php b/Chapter15/onlineStore/app/Http/Middleware/TrustProxies.php deleted file mode 100644 index 3391630..0000000 --- a/Chapter15/onlineStore/app/Http/Middleware/TrustProxies.php +++ /dev/null @@ -1,28 +0,0 @@ -|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/Chapter15/onlineStore/app/Http/Middleware/VerifyCsrfToken.php b/Chapter15/onlineStore/app/Http/Middleware/VerifyCsrfToken.php deleted file mode 100644 index 9e86521..0000000 --- a/Chapter15/onlineStore/app/Http/Middleware/VerifyCsrfToken.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter15/onlineStore/app/Models/Product.php b/Chapter15/onlineStore/app/Models/Product.php deleted file mode 100644 index 84efbb6..0000000 --- a/Chapter15/onlineStore/app/Models/Product.php +++ /dev/null @@ -1,89 +0,0 @@ -attributes['id'] - int - contains the product primary key (id) - * $this->attributes['name'] - string - contains the product name - * $this->attributes['description'] - string - contains the product description - * $this->attributes['image'] - string - contains the product image - * $this->attributes['price'] - int - contains the product price - * $this->attributes['created_at'] - timestamp - contains the product creation date - * $this->attributes['updated_at'] - timestamp - contains the product update date - */ - - public function getId() - { - return $this->attributes['id']; - } - - public function setId($id) - { - $this->attributes['id'] = $id; - } - - public function getName() - { - return $this->attributes['name']; - } - - public function setName($name) - { - $this->attributes['name'] = $name; - } - - public function getDescription() - { - return $this->attributes['description']; - } - - public function setDescription($description) - { - $this->attributes['description'] = $description; - } - - public function getImage() - { - return $this->attributes['image']; - } - - public function setImage($image) - { - $this->attributes['image'] = $image; - } - - public function getPrice() - { - return $this->attributes['price']; - } - - public function setPrice($price) - { - $this->attributes['price'] = $price; - } - - public function getCreatedAt() - { - return $this->attributes['created_at']; - } - - public function setCreatedAt($createdAt) - { - $this->attributes['created_at'] = $createdAt; - } - - public function getUpdatedAt() - { - return $this->attributes['updated_at']; - } - - public function setUpdatedAt($updatedAt) - { - $this->attributes['updated_at'] = $updatedAt; - } -} diff --git a/Chapter15/onlineStore/app/Models/User.php b/Chapter15/onlineStore/app/Models/User.php deleted file mode 100644 index 8996368..0000000 --- a/Chapter15/onlineStore/app/Models/User.php +++ /dev/null @@ -1,44 +0,0 @@ - - */ - 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', - ]; -} diff --git a/Chapter15/onlineStore/app/Providers/AppServiceProvider.php b/Chapter15/onlineStore/app/Providers/AppServiceProvider.php deleted file mode 100644 index ee8ca5b..0000000 --- a/Chapter15/onlineStore/app/Providers/AppServiceProvider.php +++ /dev/null @@ -1,28 +0,0 @@ - - */ - protected $policies = [ - // 'App\Models\Model' => 'App\Policies\ModelPolicy', - ]; - - /** - * Register any authentication / authorization services. - * - * @return void - */ - public function boot() - { - $this->registerPolicies(); - - // - } -} diff --git a/Chapter15/onlineStore/app/Providers/BroadcastServiceProvider.php b/Chapter15/onlineStore/app/Providers/BroadcastServiceProvider.php deleted file mode 100644 index 395c518..0000000 --- a/Chapter15/onlineStore/app/Providers/BroadcastServiceProvider.php +++ /dev/null @@ -1,21 +0,0 @@ -> - */ - protected $listen = [ - Registered::class => [ - SendEmailVerificationNotification::class, - ], - ]; - - /** - * Register any events for your application. - * - * @return void - */ - public function boot() - { - // - } -} diff --git a/Chapter15/onlineStore/app/Providers/RouteServiceProvider.php b/Chapter15/onlineStore/app/Providers/RouteServiceProvider.php deleted file mode 100644 index 7c17d1f..0000000 --- a/Chapter15/onlineStore/app/Providers/RouteServiceProvider.php +++ /dev/null @@ -1,63 +0,0 @@ -configureRateLimiting(); - - $this->routes(function () { - Route::prefix('api') - ->middleware('api') - ->namespace($this->namespace) - ->group(base_path('routes/api.php')); - - Route::middleware('web') - ->namespace($this->namespace) - ->group(base_path('routes/web.php')); - }); - } - - /** - * Configure the rate limiters for the application. - * - * @return void - */ - protected function configureRateLimiting() - { - RateLimiter::for('api', function (Request $request) { - return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); - }); - } -} diff --git a/Chapter15/onlineStore/artisan b/Chapter15/onlineStore/artisan deleted file mode 100644 index 67a3329..0000000 --- a/Chapter15/onlineStore/artisan +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env php -make(Illuminate\Contracts\Console\Kernel::class); - -$status = $kernel->handle( - $input = new Symfony\Component\Console\Input\ArgvInput, - new Symfony\Component\Console\Output\ConsoleOutput -); - -/* -|-------------------------------------------------------------------------- -| Shutdown The Application -|-------------------------------------------------------------------------- -| -| Once Artisan has finished running, we will fire off the shutdown events -| so that any final work may be done by the application before we shut -| down the process. This is the last thing to happen to the request. -| -*/ - -$kernel->terminate($input, $status); - -exit($status); diff --git a/Chapter15/onlineStore/bootstrap/app.php b/Chapter15/onlineStore/bootstrap/app.php deleted file mode 100644 index 037e17d..0000000 --- a/Chapter15/onlineStore/bootstrap/app.php +++ /dev/null @@ -1,55 +0,0 @@ -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/Chapter15/onlineStore/bootstrap/cache/.gitignore b/Chapter15/onlineStore/bootstrap/cache/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter15/onlineStore/bootstrap/cache/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter15/onlineStore/composer.json b/Chapter15/onlineStore/composer.json deleted file mode 100644 index f0f2eda..0000000 --- a/Chapter15/onlineStore/composer.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "name": "laravel/laravel", - "type": "project", - "description": "The Laravel Framework.", - "keywords": ["framework", "laravel"], - "license": "MIT", - "require": { - "php": "^8.0", - "fruitcake/laravel-cors": "^2.0.5", - "guzzlehttp/guzzle": "^7.2", - "laravel/framework": "^9.0", - "laravel/sanctum": "^2.14", - "laravel/tinker": "^2.7" - }, - "require-dev": { - "fakerphp/faker": "^1.9.1", - "laravel/sail": "^1.0.1", - "mockery/mockery": "^1.4.4", - "nunomaduro/collision": "^6.1", - "phpunit/phpunit": "^9.5.10", - "spatie/laravel-ignition": "^1.0", - "squizlabs/php_codesniffer": "^3.6" - }, - "autoload": { - "psr-4": { - "App\\": "app/", - "Database\\Factories\\": "database/factories/", - "Database\\Seeders\\": "database/seeders/" - } - }, - "autoload-dev": { - "psr-4": { - "Tests\\": "tests/" - } - }, - "scripts": { - "post-autoload-dump": [ - "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", - "@php artisan package:discover --ansi" - ], - "post-update-cmd": [ - "@php artisan vendor:publish --tag=laravel-assets --ansi --force" - ], - "post-root-package-install": [ - "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" - ], - "post-create-project-cmd": [ - "@php artisan key:generate --ansi" - ] - }, - "extra": { - "laravel": { - "dont-discover": [] - } - }, - "config": { - "optimize-autoloader": true, - "preferred-install": "dist", - "sort-packages": true - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/Chapter15/onlineStore/composer.lock b/Chapter15/onlineStore/composer.lock deleted file mode 100644 index b55e897..0000000 --- a/Chapter15/onlineStore/composer.lock +++ /dev/null @@ -1,7860 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "8bdcc31974d0d5a00db79c82827c8815", - "packages": [ - { - "name": "asm89/stack-cors", - "version": "v2.1.1", - "source": { - "type": "git", - "url": "https://github.com/asm89/stack-cors.git", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4|^5|^6" - }, - "require-dev": { - "phpunit/phpunit": "^7|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "psr-4": { - "Asm89\\Stack\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alexander", - "email": "iam.asm89@gmail.com" - } - ], - "description": "Cross-origin resource sharing library and stack middleware", - "homepage": "https://github.com/asm89/stack-cors", - "keywords": [ - "cors", - "stack" - ], - "support": { - "issues": "https://github.com/asm89/stack-cors/issues", - "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" - }, - "time": "2022-01-18T09:12:03+00:00" - }, - { - "name": "brick/math", - "version": "0.9.3", - "source": { - "type": "git", - "url": "https://github.com/brick/math.git", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", - "vimeo/psalm": "4.9.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Brick\\Math\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Arbitrary-precision arithmetic library", - "keywords": [ - "Arbitrary-precision", - "BigInteger", - "BigRational", - "arithmetic", - "bigdecimal", - "bignum", - "brick", - "math" - ], - "support": { - "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.9.3" - }, - "funding": [ - { - "url": "https://github.com/BenMorel", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/brick/math", - "type": "tidelift" - } - ], - "time": "2021-08-15T20:50:18+00:00" - }, - { - "name": "dflydev/dot-access-data", - "version": "v3.0.1", - "source": { - "type": "git", - "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c", - "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": "^3.14" - }, - "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.1" - }, - "time": "2021-08-13T13:06:58+00:00" - }, - { - "name": "doctrine/inflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "vimeo/psalm": "^4.10" - }, - "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.4" - }, - "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": "2021-10-22T20:16:43+00:00" - }, - { - "name": "doctrine/lexer", - "version": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" - } - }, - "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/1.2.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%2Flexer", - "type": "tidelift" - } - ], - "time": "2022-01-12T08:27:12+00:00" - }, - { - "name": "dragonmantank/cron-expression", - "version": "v3.3.1", - "source": { - "type": "git", - "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "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.1" - }, - "funding": [ - { - "url": "https://github.com/dragonmantank", - "type": "github" - } - ], - "time": "2022-01-18T15:43:28+00:00" - }, - { - "name": "egulias/email-validator", - "version": "3.1.2", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ee0db30118f661fb166bcffbf5d82032df484697", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^1.2", - "php": ">=7.2", - "symfony/polyfill-intl-idn": "^1.15" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^8.5.8|^9.3.3", - "vimeo/psalm": "^4" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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/3.1.2" - }, - "funding": [ - { - "url": "https://github.com/egulias", - "type": "github" - } - ], - "time": "2021-10-11T09:18:27+00:00" - }, - { - "name": "fruitcake/laravel-cors", - "version": "v2.0.5", - "source": { - "type": "git", - "url": "https://github.com/fruitcake/laravel-cors.git", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "shasum": "" - }, - "require": { - "asm89/stack-cors": "^2.0.1", - "illuminate/contracts": "^6|^7|^8|^9", - "illuminate/support": "^6|^7|^8|^9", - "php": ">=7.2", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4.3.4|^5|^6" - }, - "require-dev": { - "laravel/framework": "^6|^7.24|^8", - "orchestra/testbench-dusk": "^4|^5|^6|^7", - "phpunit/phpunit": "^6|^7|^8|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - }, - "laravel": { - "providers": [ - "Fruitcake\\Cors\\CorsServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Fruitcake\\Cors\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fruitcake", - "homepage": "https://fruitcake.nl" - }, - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", - "keywords": [ - "api", - "cors", - "crossdomain", - "laravel" - ], - "support": { - "issues": "https://github.com/fruitcake/laravel-cors/issues", - "source": "https://github.com/fruitcake/laravel-cors/tree/v2.0.5" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "time": "2022-01-03T14:53:04+00:00" - }, - { - "name": "graham-campbell/result-type", - "version": "v1.0.4", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "0690bde05318336c7221785f2a932467f98b64ca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/0690bde05318336c7221785f2a932467f98b64ca", - "reference": "0690bde05318336c7221785f2a932467f98b64ca", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "phpoption/phpoption": "^1.8" - }, - "require-dev": { - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", - "type": "tidelift" - } - ], - "time": "2021-11-21T21:41:47+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "7.4.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.8.3 || ^2.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.4.1", - "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.5 || ^9.3.5", - "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": { - "branch-alias": { - "dev-master": "7.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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.4.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": "2021-12-06T18:43:05+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "1.5.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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/1.5.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "time": "2021-10-22T20:56:57+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.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.4.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.8 || ^9.3.10" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "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.1.0" - }, - "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": "2021-10-06T17:43:30+00:00" - }, - { - "name": "laravel/framework", - "version": "v9.0.1", - "source": { - "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "shasum": "" - }, - "require": { - "doctrine/inflector": "^2.0", - "dragonmantank/cron-expression": "^3.1", - "egulias/email-validator": "^3.1", - "ext-mbstring": "*", - "ext-openssl": "*", - "laravel/serializable-closure": "^1.0", - "league/commonmark": "^2.2", - "league/flysystem": "^3.0", - "monolog/monolog": "^2.0", - "nesbot/carbon": "^2.53.1", - "php": "^8.0.2", - "psr/container": "^1.1.1|^2.0.1", - "psr/log": "^1.0|^2.0|^3.0", - "psr/simple-cache": "^1.0|^2.0|^3.0", - "ramsey/uuid": "^4.2.2", - "symfony/console": "^6.0", - "symfony/error-handler": "^6.0", - "symfony/finder": "^6.0", - "symfony/http-foundation": "^6.0", - "symfony/http-kernel": "^6.0", - "symfony/mailer": "^6.0", - "symfony/mime": "^6.0", - "symfony/process": "^6.0", - "symfony/routing": "^6.0", - "symfony/var-dumper": "^6.0", - "tijsverkoyen/css-to-inline-styles": "^2.2.2", - "vlucas/phpdotenv": "^5.4.1", - "voku/portable-ascii": "^2.0" - }, - "conflict": { - "tightenco/collect": "<5.5.33" - }, - "provide": { - "psr/container-implementation": "1.1|2.0", - "psr/simple-cache-implementation": "1.0|2.0|3.0" - }, - "replace": { - "illuminate/auth": "self.version", - "illuminate/broadcasting": "self.version", - "illuminate/bus": "self.version", - "illuminate/cache": "self.version", - "illuminate/collections": "self.version", - "illuminate/conditionable": "self.version", - "illuminate/config": "self.version", - "illuminate/console": "self.version", - "illuminate/container": "self.version", - "illuminate/contracts": "self.version", - "illuminate/cookie": "self.version", - "illuminate/database": "self.version", - "illuminate/encryption": "self.version", - "illuminate/events": "self.version", - "illuminate/filesystem": "self.version", - "illuminate/hashing": "self.version", - "illuminate/http": "self.version", - "illuminate/log": "self.version", - "illuminate/macroable": "self.version", - "illuminate/mail": "self.version", - "illuminate/notifications": "self.version", - "illuminate/pagination": "self.version", - "illuminate/pipeline": "self.version", - "illuminate/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": { - "aws/aws-sdk-php": "^3.198.1", - "doctrine/dbal": "^2.13.3|^3.1.4", - "fakerphp/faker": "^1.9.2", - "guzzlehttp/guzzle": "^7.2", - "league/flysystem-aws-s3-v3": "^3.0", - "league/flysystem-ftp": "^3.0", - "league/flysystem-sftp-v3": "^3.0", - "mockery/mockery": "^1.4.4", - "orchestra/testbench-core": "^7.0", - "pda/pheanstalk": "^4.0", - "phpstan/phpstan": "^1.0", - "phpunit/phpunit": "^9.5.8", - "predis/predis": "^1.1.9", - "symfony/amazon-mailer": "^6.0", - "symfony/cache": "^6.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.198.1).", - "brianium/paratest": "Required to run tests in parallel (^6.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", - "ext-bcmath": "Required to use the multiple_of validation rule.", - "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.", - "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.2).", - "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-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", - "mockery/mockery": "Required to use mocking (^1.4.4).", - "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).", - "predis/predis": "Required to use the predis connector (^1.1.9).", - "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.0).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^6.0).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.0).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.0).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.0).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.x-dev" - } - }, - "autoload": { - "files": [ - "src/Illuminate/Collections/helpers.php", - "src/Illuminate/Events/functions.php", - "src/Illuminate/Foundation/helpers.php", - "src/Illuminate/Support/helpers.php" - ], - "psr-4": { - "Illuminate\\": "src/Illuminate/", - "Illuminate\\Support\\": [ - "src/Illuminate/Macroable/", - "src/Illuminate/Collections/", - "src/Illuminate/Conditionable/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Laravel Framework.", - "homepage": "https://laravel.com", - "keywords": [ - "framework", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2022-02-09T15:00:05+00:00" - }, - { - "name": "laravel/sanctum", - "version": "v2.14.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/sanctum.git", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/0647a87140c7522e75826cffcadb3ad6e01f71e9", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/contracts": "^6.9|^7.0|^8.0|^9.0", - "illuminate/database": "^6.9|^7.0|^8.0|^9.0", - "illuminate/support": "^6.9|^7.0|^8.0|^9.0", - "php": "^7.2|^8.0" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0", - "phpunit/phpunit": "^8.0|^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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": "2022-01-12T15:07:43+00:00" - }, - { - "name": "laravel/serializable-closure", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/serializable-closure.git", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/65c9faf50d567b65d81764a44526545689e3fe63", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "pestphp/pest": "^1.18", - "phpstan/phpstan": "^0.12.98", - "symfony/var-dumper": "^5.3" - }, - "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": "2022-02-01T16:29:39+00:00" - }, - { - "name": "laravel/tinker", - "version": "v2.7.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/tinker.git", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/5f2f9815b7631b9f586a3de7933c25f9327d4073", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073", - "shasum": "" - }, - "require": { - "illuminate/console": "^6.0|^7.0|^8.0|^9.0", - "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.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", - "phpunit/phpunit": "^8.5.8|^9.3.3" - }, - "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.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.7.0" - }, - "time": "2022-01-10T08:52:49+00:00" - }, - { - "name": "league/commonmark", - "version": "2.2.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/commonmark.git", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "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.15" - }, - "require-dev": { - "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.0", - "commonmark/commonmark.js": "0.30.0", - "composer/package-versions-deprecated": "^1.8", - "erusev/parsedown": "^1.0", - "ext-json": "*", - "github/gfm": "0.29.0", - "michelf/php-markdown": "^1.4", - "phpstan/phpstan": "^0.12.88 || ^1.0.0", - "phpunit/phpunit": "^9.5.5", - "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", - "unleashedtech/php-coding-standard": "^3.1", - "vimeo/psalm": "^4.7.3" - }, - "suggest": { - "symfony/yaml": "v2.3+ required if using the Front Matter extension" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.3-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": "2022-01-25T14:37:33+00:00" - }, - { - "name": "league/config", - "version": "v1.1.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/config.git", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/config/zipball/a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^3.0.1", - "nette/schema": "^1.2", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.90", - "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": "2021-08-14T12:15:32+00:00" - }, - { - "name": "league/flysystem", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9f8b4260031bfef5497477da53dd57b2aaff0e06", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06", - "shasum": "" - }, - "require": { - "ext-json": "*", - "league/mime-type-detection": "^1.0.0", - "php": "^8.0.2" - }, - "conflict": { - "guzzlehttp/guzzle": "<7.0", - "guzzlehttp/ringphp": "<1.1.1", - "symfony/http-client": "<5.2" - }, - "require-dev": { - "async-aws/s3": "^1.5", - "async-aws/simple-s3": "^1.0", - "aws/aws-sdk-php": "^3.198.1", - "composer/semver": "^3.0", - "ext-fileinfo": "*", - "ext-ftp": "*", - "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.5", - "google/cloud-storage": "^1.23", - "phpseclib/phpseclib": "^2.0", - "phpstan/phpstan": "^0.12.26", - "phpunit/phpunit": "^9.5.11", - "sabre/dav": "^4.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.0.3" - }, - "funding": [ - { - "url": "https://offset.earth/frankdejonge", - "type": "custom" - }, - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2022-01-31T19:41:04+00:00" - }, - { - "name": "league/mime-type-detection", - "version": "1.9.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/aa70e813a6ad3d1558fc927863d47309b4c23e69", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.2", - "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" - }, - "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.9.0" - }, - "funding": [ - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2021-11-21T11:48:40+00:00" - }, - { - "name": "monolog/monolog", - "version": "2.3.5", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd4380d6fc37626e2f799f29d91195040137eba9", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "provide": { - "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7", - "graylog2/gelf-php": "^1.4.2", - "mongodb/mongodb": "^1.8", - "php-amqplib/php-amqplib": "~2.4 || ^3", - "php-console/php-console": "^3.1.3", - "phpspec/prophecy": "^1.6.1", - "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5", - "predis/predis": "^1.1", - "rollbar/rollbar": "^1.3", - "ruflin/elastica": ">=0.90@dev", - "swiftmailer/swiftmailer": "^5.3|^6.0" - }, - "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", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "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": "2.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/2.3.5" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" - } - ], - "time": "2021-10-01T21:08:31+00:00" - }, - { - "name": "nesbot/carbon", - "version": "2.56.0", - "source": { - "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1.8 || ^8.0", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "doctrine/dbal": "^2.0 || ^3.0", - "doctrine/orm": "^2.7", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "phpmd/phpmd": "^2.9", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.54 || ^1.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.14", - "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://opencollective.com/Carbon", - "type": "open_collective" - }, - { - "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", - "type": "tidelift" - } - ], - "time": "2022-01-21T17:08:38+00:00" - }, - { - "name": "nette/schema", - "version": "v1.2.2", - "source": { - "type": "git", - "url": "https://github.com/nette/schema.git", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/9a39cef03a5b34c7de64f551538cbba05c2be5df", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df", - "shasum": "" - }, - "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": ">=7.1 <8.2" - }, - "require-dev": { - "nette/tester": "^2.3 || ^2.4", - "phpstan/phpstan-nette": "^0.12", - "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.2" - }, - "time": "2021-10-15T11:40:02+00:00" - }, - { - "name": "nette/utils", - "version": "v3.2.7", - "source": { - "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/0af4e3de4df9f1543534beab255ccf459e7a2c99", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99", - "shasum": "" - }, - "require": { - "php": ">=7.2 <8.2" - }, - "conflict": { - "nette/di": "<3.0.6" - }, - "require-dev": { - "nette/tester": "~2.0", - "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.3" - }, - "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()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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 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/v3.2.7" - }, - "time": "2022-01-24T11:29:14+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.13.2", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", - "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.13.2" - }, - "time": "2021-11-30T19:35:32+00:00" - }, - { - "name": "phpoption/phpoption", - "version": "1.8.1", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-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.8.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", - "type": "tidelift" - } - ], - "time": "2021-12-04T23:24:31+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.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.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": "http://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/tree/master" - }, - "time": "2020-06-29T06:28:15+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.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": "http://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/master" - }, - "time": "2019-04-30T12:38:16+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.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": "http://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/master" - }, - "time": "2016-08-06T14:39: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.1", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "570292577277f06f590635381a7f761a6cf4f026" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/570292577277f06f590635381a7f761a6cf4f026", - "reference": "570292577277f06f590635381a7f761a6cf4f026", - "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" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "3.17.05.02" - }, - "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.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." - }, - "bin": [ - "bin/psysh" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "0.11.x-dev" - } - }, - "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.1" - }, - "time": "2022-01-03T13:58:38+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": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/ramsey/collection.git", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "shasum": "" - }, - "require": { - "php": "^7.3 || ^8", - "symfony/polyfill-php81": "^1.23" - }, - "require-dev": { - "captainhook/captainhook": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "ergebnis/composer-normalize": "^2.6", - "fakerphp/faker": "^1.5", - "hamcrest/hamcrest-php": "^2", - "jangregor/phpstan-prophecy": "^0.8", - "mockery/mockery": "^1.3", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1", - "phpstan/phpstan": "^0.12.32", - "phpstan/phpstan-mockery": "^0.12.5", - "phpstan/phpstan-phpunit": "^0.12.11", - "phpunit/phpunit": "^8.5 || ^9", - "psy/psysh": "^0.10.4", - "slevomat/coding-standard": "^6.3", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.4" - }, - "type": "library", - "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/1.2.2" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "time": "2021-10-10T03:01:02+00:00" - }, - { - "name": "ramsey/uuid", - "version": "4.2.3", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "shasum": "" - }, - "require": { - "brick/math": "^0.8 || ^0.9", - "ext-json": "*", - "php": "^7.2 || ^8.0", - "ramsey/collection": "^1.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php80": "^1.14" - }, - "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", - "moontoast/math": "^1.1", - "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.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-mockery": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^8.5 || ^9", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" - }, - "suggest": { - "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-ctype": "Enables faster processing of character classification using ctype functions.", - "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": { - "branch-alias": { - "dev-main": "4.x-dev" - }, - "captainhook": { - "force-install": true - } - }, - "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "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.2.3" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2021-09-25T23:10:38+00:00" - }, - { - "name": "symfony/console", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/22e8efd019c3270c4f79376234a3f8752cd25490", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.4|^6.0" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/css-selector", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/1955d595c12c111629cc814d3f2a2ff13580508a", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a", - "shasum": "" - }, - "require": { - "php": ">=8.0.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/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-11-01T23:48:49+00:00" - }, - { - "name": "symfony/error-handler", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/20343b3bad7ebafa38138ddcb97290a24722b57b", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" - }, - "bin": [ - "Resources/bin/patch-type-declarations" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to manage errors and ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6472ea2dd415e925b90ca82be64b8bc6157f3934", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/event-dispatcher-contracts": "^2|^3" - }, - "conflict": { - "symfony/dependency-injection": "<5.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^5.4|^6.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/aa5422287b75594b90ee9cd807caf8f0df491385", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/event-dispatcher": "^1" - }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-07-15T12:33:35+00:00" - }, - { - "name": "symfony/finder", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/8661b74dbabc23223f38c9b99d3f8ade71170430", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ad157299ced81a637fade1efcadd688d6deba5c1", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1" - }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/cache": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0" - }, - "suggest": { - "symfony/mime": "To use the file extension guesser" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v6.0.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/error-handler": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", - "symfony/twig-bridge": "<5.4", - "symfony/validator": "<5.4", - "twig/twig": "<2.13" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/process": "^5.4|^6.0", - "symfony/routing": "^5.4|^6.0", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-29T18:12:46+00:00" - }, - { - "name": "symfony/mailer", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mailer.git", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "shasum": "" - }, - "require": { - "egulias/email-validator": "^2.1.10|^3", - "php": ">=8.0.2", - "psr/event-dispatcher": "^1", - "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3" - }, - "conflict": { - "symfony/http-kernel": "<5.4" - }, - "require-dev": { - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/messenger": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/mime", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/2cd9601efd040e56f43360daa68f3c6b0534923a", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "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" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "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.24.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": "2021-10-20T20:35:02+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-11-23T21:10:46+00:00" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44", - "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.23-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.24.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": "2021-09-14T14:02:44+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.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": "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.24.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": "2021-11-30T18:21:41+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-05-27T09:17:38+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:33+00:00" - }, - { - "name": "symfony/polyfill-php81", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:11+00:00" - }, - { - "name": "symfony/process", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/298ed357274c1868c20a0061df256a1250a6c4af", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/routing", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/yaml": "<5.4" - }, - "require-dev": { - "doctrine/annotations": "^1.12", - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/36715ebf9fb9db73db0cb24263c79077c6fe8603", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/container": "^2.0" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "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.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": "2021-11-04T17:53:12+00:00" - }, - { - "name": "symfony/string", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/522144f0c4c004c80d56fa47e40e17028e2eefc2", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.0" - }, - "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/translation-contracts": "^2.0|^3.0", - "symfony/var-exporter": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "files": [ - "Resources/functions.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 an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/translation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/71bb15335798f8c4da110911bcf2d2fead7a430d", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.3|^3.0" - }, - "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" - }, - "provide": { - "symfony/translation-implementation": "2.3|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-07T00:29:03+00:00" - }, - { - "name": "symfony/translation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "suggest": { - "symfony/translation-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - } - }, - "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.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": "2021-09-07T12:43:40+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7b701676fc64f9ef11f9b4870f16b48f66be4834", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<5.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-17T16:30:44+00:00" - }, - { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.4", - "source": { - "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" - } - ], - "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", - "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "support": { - "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" - }, - "time": "2021-12-08T09:12:39+00:00" - }, - { - "name": "vlucas/phpdotenv", - "version": "v5.4.1", - "source": { - "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", - "shasum": "" - }, - "require": { - "ext-pcre": "*", - "graham-campbell/result-type": "^1.0.2", - "php": "^7.1.3 || ^8.0", - "phpoption/phpoption": "^1.8", - "symfony/polyfill-ctype": "^1.23", - "symfony/polyfill-mbstring": "^1.23.1", - "symfony/polyfill-php80": "^1.23.1" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" - }, - "suggest": { - "ext-filter": "Required to use the boolean validator." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.4-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.4.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", - "type": "tidelift" - } - ], - "time": "2021-12-12T23:22:04+00:00" - }, - { - "name": "voku/portable-ascii", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/voku/portable-ascii.git", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/9bd89e83cecdf8c37b64909454249eaed98b2c89", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89", - "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.0" - }, - "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-01-24T18:59:03+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "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.10.0" - }, - "time": "2021-03-09T10:59:23+00:00" - } - ], - "packages-dev": [ - { - "name": "doctrine/instantiator", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.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%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2020-11-10T18:47:58+00:00" - }, - { - "name": "facade/ignition-contracts", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/facade/ignition-contracts.git", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^v2.15.8", - "phpunit/phpunit": "^9.3.11", - "vimeo/psalm": "^3.17.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Facade\\IgnitionContracts\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://flareapp.io", - "role": "Developer" - } - ], - "description": "Solution contracts for Ignition", - "homepage": "https://github.com/facade/ignition-contracts", - "keywords": [ - "contracts", - "flare", - "ignition" - ], - "support": { - "issues": "https://github.com/facade/ignition-contracts/issues", - "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" - }, - "time": "2020-10-16T08:27:54+00:00" - }, - { - "name": "fakerphp/faker", - "version": "v1.19.0", - "source": { - "type": "git", - "url": "https://github.com/FakerPHP/Faker.git", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^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": "*", - "symfony/phpunit-bridge": "^4.4 || ^5.2" - }, - "suggest": { - "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", - "ext-curl": "Required by Faker\\Provider\\Image to download images.", - "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", - "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.19-dev" - } - }, - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "François Zaninotto" - } - ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], - "support": { - "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0" - }, - "time": "2022-02-02T17:38:57+00:00" - }, - { - "name": "filp/whoops", - "version": "2.14.5", - "source": { - "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "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.14.5" - }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "time": "2022-01-07T12:00:00+00:00" - }, - { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "shasum": "" - }, - "require": { - "php": "^5.3|^7.0|^8.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" - }, - "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "classmap": [ - "hamcrest" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "This is the PHP port of Hamcrest Matchers", - "keywords": [ - "test" - ], - "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" - }, - "time": "2020-07-09T08:09:16+00:00" - }, - { - "name": "laravel/sail", - "version": "v1.13.2", - "source": { - "type": "git", - "url": "https://github.com/laravel/sail.git", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.0|^9.0", - "illuminate/contracts": "^8.0|^9.0", - "illuminate/support": "^8.0|^9.0", - "php": "^7.3|^8.0" - }, - "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": "2022-02-08T14:14:12+00:00" - }, - { - "name": "mockery/mockery", - "version": "1.5.0", - "source": { - "type": "git", - "url": "https://github.com/mockery/mockery.git", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "shasum": "" - }, - "require": { - "hamcrest/hamcrest-php": "^2.0.1", - "lib-pcre": ">=7.0", - "php": "^7.3 || ^8.0" - }, - "conflict": { - "phpunit/phpunit": "<8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-0": { - "Mockery": "library/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" - } - ], - "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": { - "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.5.0" - }, - "time": "2022-01-20T13:18:17+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.10.2", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "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.10.2" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2020-11-13T09:40:50+00:00" - }, - { - "name": "nunomaduro/collision", - "version": "v6.1.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/collision.git", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "shasum": "" - }, - "require": { - "facade/ignition-contracts": "^1.0.2", - "filp/whoops": "^2.14.5", - "php": "^8.0.0", - "symfony/console": "^6.0.2" - }, - "require-dev": { - "brianium/paratest": "^6.4.1", - "laravel/framework": "^9.0", - "nunomaduro/larastan": "^1.0.2", - "nunomaduro/mock-final-classes": "^1.1.0", - "orchestra/testbench": "^7.0.0", - "phpunit/phpunit": "^9.5.11" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "6.x-dev" - }, - "laravel": { - "providers": [ - "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" - ] - } - }, - "autoload": { - "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": "2022-01-18T17:49:08+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.1.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/15a90844ad40f127afd244c0cad228de2a80052a", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a", - "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.1.1" - }, - "time": "2022-02-07T21:56:48+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.6.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "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.6.0" - }, - "time": "2022-01-04T19:58:01+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" - }, - "time": "2021-12-08T12:19:24+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "9.2.10", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d5850aaf931743067f4bfc1ae4cbd06468400687", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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 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", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.10" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-05T09:12:13+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "3.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-02T12:48:52+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "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/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:58:55+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T05:33:50+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.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/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:16:10+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "9.5.13", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/597cb647654ede35e43b137926dfdfef0fb11743", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.3.1", - "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": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.7", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", - "sebastian/version": "^3.0.2" - }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.13" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-01-24T07:33:35+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:08:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "1.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:08:54+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:30:19+00:00" - }, - { - "name": "sebastian/comparator", - "version": "4.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:49:45+00:00" - }, - { - "name": "sebastian/complexity", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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 calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:52:27+00:00" - }, - { - "name": "sebastian/diff", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:10:38+00:00" - }, - { - "name": "sebastian/environment", - "version": "5.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-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": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:52:38+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "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", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-11-11T14:18:36+00:00" - }, - { - "name": "sebastian/global-state", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-11T13:31:12+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-28T06:42:11+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "http://www.github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:17:30+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:45:17+00:00" - }, - { - "name": "sebastian/type", - "version": "2.3.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-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/2.3.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-15T12:49:02+00:00" - }, - { - "name": "sebastian/version", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:39:44+00:00" - }, - { - "name": "spatie/backtrace", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/backtrace.git", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "ext-json": "*", - "phpunit/phpunit": "^9.3", - "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": { - "issues": "https://github.com/spatie/backtrace/issues", - "source": "https://github.com/spatie/backtrace/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/sponsors/spatie", - "type": "github" - }, - { - "url": "https://spatie.be/open-source/support-us", - "type": "other" - } - ], - "time": "2021-11-09T10:57:15+00:00" - }, - { - "name": "spatie/flare-client-php", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/flare-client-php.git", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "shasum": "" - }, - "require": { - "illuminate/pipeline": "^8.0|^9.0", - "php": "^8.0", - "spatie/backtrace": "^1.2", - "symfony/http-foundation": "^5.0|^6.0", - "symfony/mime": "^5.2|^6.0", - "symfony/process": "^5.2|^6.0", - "symfony/var-dumper": "^5.2|^6.0" - }, - "require-dev": { - "dms/phpunit-arraysubset-asserts": "^0.3.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/phpunit-snapshot-assertions": "^4.0" - }, - "type": "library", - "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.0.1" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2022-02-04T15:21:00+00:00" - }, - { - "name": "spatie/ignition", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/spatie/ignition.git", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/d2d5ba823af3004268556e87dfc94449e4159f5a", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "monolog/monolog": "^2.0", - "php": "^8.0", - "spatie/flare-client-php": "^1.0", - "symfony/console": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "mockery/mockery": "^1.4", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/ray": "^1.32", - "symfony/process": "^5.4|^6.0" - }, - "type": "library", - "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": "2022-01-19T12:57:41+00:00" - }, - { - "name": "spatie/laravel-ignition", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/68250225a9f83b086462c2af1b1139dfde48fbd2", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*", - "illuminate/support": "^8.77|^9.0", - "monolog/monolog": "^2.3", - "php": "^8.0", - "spatie/flare-client-php": "^1.0.1", - "spatie/ignition": "^1.0", - "symfony/console": "^5.0|^6.0", - "symfony/var-dumper": "^5.0|^6.0" - }, - "require-dev": { - "filp/whoops": "^2.14", - "livewire/livewire": "^2.8|dev-develop", - "mockery/mockery": "^1.4", - "nunomaduro/larastan": "^1.0", - "orchestra/testbench": "^6.23|^7.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/laravel-ray": "^1.27" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Spatie\\LaravelIgnition\\IgnitionServiceProvider" - ], - "aliases": { - "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" - } - } - }, - "autoload": { - "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": "2022-02-04T15:25:56+00:00" - }, - { - "name": "squizlabs/php_codesniffer", - "version": "3.6.2", - "source": { - "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", - "shasum": "" - }, - "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.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": "lead" - } - ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", - "keywords": [ - "phpcs", - "standards" - ], - "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" - }, - "time": "2021-12-12T21:44:58+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2021-07-28T10:34:58+00:00" - } - ], - "aliases": [], - "minimum-stability": "dev", - "stability-flags": [], - "prefer-stable": true, - "prefer-lowest": false, - "platform": { - "php": "^8.0" - }, - "platform-dev": [], - "plugin-api-version": "2.1.0" -} diff --git a/Chapter15/onlineStore/config/app.php b/Chapter15/onlineStore/config/app.php deleted file mode 100644 index 1941d7c..0000000 --- a/Chapter15/onlineStore/config/app.php +++ /dev/null @@ -1,197 +0,0 @@ - env('APP_NAME', 'Laravel'), - - /* - |-------------------------------------------------------------------------- - | Application Environment - |-------------------------------------------------------------------------- - | - | This value determines the "environment" your application is currently - | running in. This may determine how you prefer to configure various - | services the application utilizes. Set this in your ".env" file. - | - */ - - 'env' => env('APP_ENV', 'production'), - - /* - |-------------------------------------------------------------------------- - | Application Debug Mode - |-------------------------------------------------------------------------- - | - | When your application is in debug mode, detailed error messages with - | stack traces will be shown on every error that occurs within your - | application. If disabled, a simple generic error page is shown. - | - */ - - 'debug' => (bool) env('APP_DEBUG', false), - - /* - |-------------------------------------------------------------------------- - | Application URL - |-------------------------------------------------------------------------- - | - | This URL is used by the console to properly generate URLs when using - | the Artisan command line tool. You should set this to the root of - | your application so that it is used when running Artisan tasks. - | - */ - - 'url' => env('APP_URL', 'http://localhost'), - - 'asset_url' => env('ASSET_URL', null), - - /* - |-------------------------------------------------------------------------- - | 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', - - /* - |-------------------------------------------------------------------------- - | 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' => [ - - /* - * Laravel Framework Service Providers... - */ - Illuminate\Auth\AuthServiceProvider::class, - Illuminate\Broadcasting\BroadcastServiceProvider::class, - Illuminate\Bus\BusServiceProvider::class, - Illuminate\Cache\CacheServiceProvider::class, - Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, - Illuminate\Cookie\CookieServiceProvider::class, - Illuminate\Database\DatabaseServiceProvider::class, - Illuminate\Encryption\EncryptionServiceProvider::class, - Illuminate\Filesystem\FilesystemServiceProvider::class, - Illuminate\Foundation\Providers\FoundationServiceProvider::class, - Illuminate\Hashing\HashServiceProvider::class, - Illuminate\Mail\MailServiceProvider::class, - Illuminate\Notifications\NotificationServiceProvider::class, - Illuminate\Pagination\PaginationServiceProvider::class, - Illuminate\Pipeline\PipelineServiceProvider::class, - Illuminate\Queue\QueueServiceProvider::class, - Illuminate\Redis\RedisServiceProvider::class, - Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, - Illuminate\Session\SessionServiceProvider::class, - Illuminate\Translation\TranslationServiceProvider::class, - Illuminate\Validation\ValidationServiceProvider::class, - Illuminate\View\ViewServiceProvider::class, - - /* - * 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, - - ], - - /* - |-------------------------------------------------------------------------- - | 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([ - // ... - ])->toArray(), - -]; diff --git a/Chapter15/onlineStore/config/auth.php b/Chapter15/onlineStore/config/auth.php deleted file mode 100644 index d8c6cee..0000000 --- a/Chapter15/onlineStore/config/auth.php +++ /dev/null @@ -1,111 +0,0 @@ - [ - '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 expire 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. - | - */ - - 'passwords' => [ - 'users' => [ - 'provider' => 'users', - 'table' => 'password_resets', - '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/Chapter15/onlineStore/config/broadcasting.php b/Chapter15/onlineStore/config/broadcasting.php deleted file mode 100644 index 67fcbbd..0000000 --- a/Chapter15/onlineStore/config/broadcasting.php +++ /dev/null @@ -1,67 +0,0 @@ - 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'), - 'useTLS' => true, - ], - '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/Chapter15/onlineStore/config/cache.php b/Chapter15/onlineStore/config/cache.php deleted file mode 100644 index 8736c7a..0000000 --- a/Chapter15/onlineStore/config/cache.php +++ /dev/null @@ -1,110 +0,0 @@ - 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'), - ], - - '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 a RAM based store such as APC or Memcached, there might - | be other applications utilizing the same cache. So, we'll specify a - | value to get prefixed to all our keys so we can avoid collisions. - | - */ - - 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'), - -]; diff --git a/Chapter15/onlineStore/config/cors.php b/Chapter15/onlineStore/config/cors.php deleted file mode 100644 index 8a39e6d..0000000 --- a/Chapter15/onlineStore/config/cors.php +++ /dev/null @@ -1,34 +0,0 @@ - ['api/*', 'sanctum/csrf-cookie'], - - 'allowed_methods' => ['*'], - - 'allowed_origins' => ['*'], - - 'allowed_origins_patterns' => [], - - 'allowed_headers' => ['*'], - - 'exposed_headers' => [], - - 'max_age' => 0, - - 'supports_credentials' => false, - -]; diff --git a/Chapter15/onlineStore/config/database.php b/Chapter15/onlineStore/config/database.php deleted file mode 100644 index 0faebae..0000000 --- a/Chapter15/onlineStore/config/database.php +++ /dev/null @@ -1,147 +0,0 @@ - env('DB_CONNECTION', 'mysql'), - - /* - |-------------------------------------------------------------------------- - | Database Connections - |-------------------------------------------------------------------------- - | - | Here are each of the database connections setup for your application. - | Of course, examples of configuring each database platform that is - | supported by Laravel is shown below to make development simple. - | - | - | All database work in Laravel is done through the PHP PDO facilities - | so make sure you have the driver for your particular database of - | choice installed on your machine before you begin development. - | - */ - - 'connections' => [ - - 'sqlite' => [ - 'driver' => 'sqlite', - 'url' => env('DATABASE_URL'), - 'database' => env('DB_DATABASE', database_path('database.sqlite')), - 'prefix' => '', - 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), - ], - - 'mysql' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '3306'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'unix_socket' => env('DB_SOCKET', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - 'pgsql' => [ - 'driver' => 'pgsql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '5432'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - 'search_path' => 'public', - 'sslmode' => 'prefer', - ], - - 'sqlsrv' => [ - 'driver' => 'sqlsrv', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', 'localhost'), - 'port' => env('DB_PORT', '1433'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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'), - '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'), - 'password' => env('REDIS_PASSWORD'), - 'port' => env('REDIS_PORT', '6379'), - 'database' => env('REDIS_CACHE_DB', '1'), - ], - - ], - -]; diff --git a/Chapter15/onlineStore/config/filesystems.php b/Chapter15/onlineStore/config/filesystems.php deleted file mode 100644 index cf5abce..0000000 --- a/Chapter15/onlineStore/config/filesystems.php +++ /dev/null @@ -1,73 +0,0 @@ - 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 setup for each driver as an example of the required options. - | - | Supported Drivers: "local", "ftp", "sftp", "s3" - | - */ - - 'disks' => [ - - 'local' => [ - 'driver' => 'local', - 'root' => storage_path('app'), - ], - - 'public' => [ - 'driver' => 'local', - 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', - 'visibility' => 'public', - ], - - '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), - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter15/onlineStore/config/hashing.php b/Chapter15/onlineStore/config/hashing.php deleted file mode 100644 index bcd3be4..0000000 --- a/Chapter15/onlineStore/config/hashing.php +++ /dev/null @@ -1,52 +0,0 @@ - '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/Chapter15/onlineStore/config/logging.php b/Chapter15/onlineStore/config/logging.php deleted file mode 100644 index fefe088..0000000 --- a/Chapter15/onlineStore/config/logging.php +++ /dev/null @@ -1,119 +0,0 @@ - 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' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), - - /* - |-------------------------------------------------------------------------- - | 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'), - ], - - 'daily' => [ - 'driver' => 'daily', - 'path' => storage_path('logs/laravel.log'), - 'level' => env('LOG_LEVEL', 'debug'), - 'days' => 14, - ], - - 'slack' => [ - 'driver' => 'slack', - 'url' => env('LOG_SLACK_WEBHOOK_URL'), - 'username' => 'Laravel Log', - 'emoji' => ':boom:', - 'level' => env('LOG_LEVEL', 'critical'), - ], - - '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'), - ], - ], - - 'stderr' => [ - 'driver' => 'monolog', - 'level' => env('LOG_LEVEL', 'debug'), - 'handler' => StreamHandler::class, - 'formatter' => env('LOG_STDERR_FORMATTER'), - 'with' => [ - 'stream' => 'php://stderr', - ], - ], - - 'syslog' => [ - 'driver' => 'syslog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'errorlog' => [ - 'driver' => 'errorlog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'null' => [ - 'driver' => 'monolog', - 'handler' => NullHandler::class, - ], - - 'emergency' => [ - 'path' => storage_path('logs/laravel.log'), - ], - ], - -]; diff --git a/Chapter15/onlineStore/config/mail.php b/Chapter15/onlineStore/config/mail.php deleted file mode 100644 index 87b6fe3..0000000 --- a/Chapter15/onlineStore/config/mail.php +++ /dev/null @@ -1,117 +0,0 @@ - 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", - | "postmark", "log", "array", "failover" - | - */ - - 'mailers' => [ - 'smtp' => [ - 'transport' => 'smtp', - '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, - ], - - 'ses' => [ - 'transport' => 'ses', - ], - - 'mailgun' => [ - 'transport' => 'mailgun', - ], - - 'postmark' => [ - 'transport' => 'postmark', - ], - - 'sendmail' => [ - 'transport' => 'sendmail', - 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -t -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/Chapter15/onlineStore/config/queue.php b/Chapter15/onlineStore/config/queue.php deleted file mode 100644 index 25ea5a8..0000000 --- a/Chapter15/onlineStore/config/queue.php +++ /dev/null @@ -1,93 +0,0 @@ - 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, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter15/onlineStore/config/sanctum.php b/Chapter15/onlineStore/config/sanctum.php deleted file mode 100644 index 9281c92..0000000 --- a/Chapter15/onlineStore/config/sanctum.php +++ /dev/null @@ -1,65 +0,0 @@ - explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( - '%s%s', - 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', - env('APP_URL') ? ','.parse_url(env('APP_URL'), PHP_URL_HOST) : '' - ))), - - /* - |-------------------------------------------------------------------------- - | 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/Chapter15/onlineStore/config/services.php b/Chapter15/onlineStore/config/services.php deleted file mode 100644 index 2a1d616..0000000 --- a/Chapter15/onlineStore/config/services.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - 'domain' => env('MAILGUN_DOMAIN'), - 'secret' => env('MAILGUN_SECRET'), - 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), - ], - - '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/Chapter15/onlineStore/config/session.php b/Chapter15/onlineStore/config/session.php deleted file mode 100644 index 8fed97c..0000000 --- a/Chapter15/onlineStore/config/session.php +++ /dev/null @@ -1,201 +0,0 @@ - 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/Chapter15/onlineStore/config/view.php b/Chapter15/onlineStore/config/view.php deleted file mode 100644 index 22b8a18..0000000 --- a/Chapter15/onlineStore/config/view.php +++ /dev/null @@ -1,36 +0,0 @@ - [ - 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/Chapter15/onlineStore/database/.gitignore b/Chapter15/onlineStore/database/.gitignore deleted file mode 100644 index 9b19b93..0000000 --- a/Chapter15/onlineStore/database/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.sqlite* diff --git a/Chapter15/onlineStore/database/factories/UserFactory.php b/Chapter15/onlineStore/database/factories/UserFactory.php deleted file mode 100644 index d6ca926..0000000 --- a/Chapter15/onlineStore/database/factories/UserFactory.php +++ /dev/null @@ -1,42 +0,0 @@ - - */ -class UserFactory extends Factory -{ - /** - * Define the model's default state. - * - * @return array - */ - public function definition() - { - return [ - 'name' => $this->faker->name(), - 'email' => $this->faker->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. - * - * @return \Illuminate\Database\Eloquent\Factories\Factory - */ - public function unverified() - { - return $this->state(function (array $attributes) { - return [ - 'email_verified_at' => null, - ]; - }); - } -} diff --git a/Chapter15/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php b/Chapter15/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php deleted file mode 100644 index cf6b776..0000000 --- a/Chapter15/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->string('name'); - $table->string('email')->unique(); - $table->timestamp('email_verified_at')->nullable(); - $table->string('password'); - $table->rememberToken(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('users'); - } -}; diff --git a/Chapter15/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php b/Chapter15/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php deleted file mode 100644 index fcacb80..0000000 --- a/Chapter15/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php +++ /dev/null @@ -1,32 +0,0 @@ -string('email')->index(); - $table->string('token'); - $table->timestamp('created_at')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('password_resets'); - } -}; diff --git a/Chapter15/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/Chapter15/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php deleted file mode 100644 index 1719198..0000000 --- a/Chapter15/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php +++ /dev/null @@ -1,36 +0,0 @@ -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. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('failed_jobs'); - } -}; diff --git a/Chapter15/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/Chapter15/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php deleted file mode 100644 index fd235f8..0000000 --- a/Chapter15/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->morphs('tokenable'); - $table->string('name'); - $table->string('token', 64)->unique(); - $table->text('abilities')->nullable(); - $table->timestamp('last_used_at')->nullable(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('personal_access_tokens'); - } -}; diff --git a/Chapter15/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php b/Chapter15/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php deleted file mode 100644 index 2eecdc2..0000000 --- a/Chapter15/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php +++ /dev/null @@ -1,35 +0,0 @@ -id(); - $table->string('name'); - $table->text('description'); - $table->string('image'); - $table->integer('price'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('products'); - } -}; diff --git a/Chapter15/onlineStore/database/seeders/DatabaseSeeder.php b/Chapter15/onlineStore/database/seeders/DatabaseSeeder.php deleted file mode 100644 index 71f673f..0000000 --- a/Chapter15/onlineStore/database/seeders/DatabaseSeeder.php +++ /dev/null @@ -1,19 +0,0 @@ -create(); - } -} diff --git a/Chapter15/onlineStore/lang/en.json b/Chapter15/onlineStore/lang/en.json deleted file mode 100644 index 577680d..0000000 --- a/Chapter15/onlineStore/lang/en.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "The :attribute must contain at least one letter.": "The :attribute must contain at least one letter.", - "The :attribute must contain at least one number.": "The :attribute must contain at least one number.", - "The :attribute must contain at least one symbol.": "The :attribute must contain at least one symbol.", - "The :attribute must contain at least one uppercase and one lowercase letter.": "The :attribute must contain at least one uppercase and one lowercase letter.", - "The given :attribute has appeared in a data leak. Please choose a different :attribute.": "The given :attribute has appeared in a data leak. Please choose a different :attribute." -} diff --git a/Chapter15/onlineStore/lang/en/auth.php b/Chapter15/onlineStore/lang/en/auth.php deleted file mode 100644 index 6598e2c..0000000 --- a/Chapter15/onlineStore/lang/en/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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/Chapter15/onlineStore/lang/en/pagination.php b/Chapter15/onlineStore/lang/en/pagination.php deleted file mode 100644 index d481411..0000000 --- a/Chapter15/onlineStore/lang/en/pagination.php +++ /dev/null @@ -1,19 +0,0 @@ - '« Previous', - 'next' => 'Next »', - -]; diff --git a/Chapter15/onlineStore/lang/en/passwords.php b/Chapter15/onlineStore/lang/en/passwords.php deleted file mode 100644 index 2345a56..0000000 --- a/Chapter15/onlineStore/lang/en/passwords.php +++ /dev/null @@ -1,22 +0,0 @@ - '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/Chapter15/onlineStore/lang/en/validation.php b/Chapter15/onlineStore/lang/en/validation.php deleted file mode 100644 index 783003c..0000000 --- a/Chapter15/onlineStore/lang/en/validation.php +++ /dev/null @@ -1,163 +0,0 @@ - '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' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - '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' => [ - 'numeric' => 'The :attribute must be greater than :value.', - 'file' => 'The :attribute must be greater than :value kilobytes.', - 'string' => 'The :attribute must be greater than :value characters.', - 'array' => 'The :attribute must have more than :value items.', - ], - 'gte' => [ - 'numeric' => 'The :attribute must be greater than or equal to :value.', - 'file' => 'The :attribute must be greater than or equal to :value kilobytes.', - 'string' => 'The :attribute must be greater than or equal to :value characters.', - 'array' => 'The :attribute must have :value items or more.', - ], - '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' => [ - 'numeric' => 'The :attribute must be less than :value.', - 'file' => 'The :attribute must be less than :value kilobytes.', - 'string' => 'The :attribute must be less than :value characters.', - 'array' => 'The :attribute must have less than :value items.', - ], - 'lte' => [ - 'numeric' => 'The :attribute must be less than or equal to :value.', - 'file' => 'The :attribute must be less than or equal to :value kilobytes.', - 'string' => 'The :attribute must be less than or equal to :value characters.', - 'array' => 'The :attribute must not have more than :value items.', - ], - 'mac_address' => 'The :attribute must be a valid MAC address.', - 'max' => [ - 'numeric' => 'The :attribute must not be greater than :max.', - 'file' => 'The :attribute must not be greater than :max kilobytes.', - 'string' => 'The :attribute must not be greater than :max characters.', - 'array' => 'The :attribute must not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - '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.', - 'password' => 'The password is incorrect.', - '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' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - '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/Chapter15/onlineStore/package.json b/Chapter15/onlineStore/package.json deleted file mode 100644 index 7a9aecd..0000000 --- a/Chapter15/onlineStore/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "private": true, - "scripts": { - "dev": "npm run development", - "development": "mix", - "watch": "mix watch", - "watch-poll": "mix watch -- --watch-options-poll=1000", - "hot": "mix watch --hot", - "prod": "npm run production", - "production": "mix --production" - }, - "devDependencies": { - "axios": "^0.25", - "laravel-mix": "^6.0.6", - "lodash": "^4.17.19", - "postcss": "^8.1.14" - } -} diff --git a/Chapter15/onlineStore/phpcs.xml b/Chapter15/onlineStore/phpcs.xml deleted file mode 100644 index a1cf2b6..0000000 --- a/Chapter15/onlineStore/phpcs.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - The coding standard for the Online Store project - - app/ - config/ - database/ - routes/ - */migrations/* - diff --git a/Chapter15/onlineStore/phpunit.xml b/Chapter15/onlineStore/phpunit.xml deleted file mode 100644 index 2ac86a1..0000000 --- a/Chapter15/onlineStore/phpunit.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - ./tests/Unit - - - ./tests/Feature - - - - - ./app - - - - - - - - - - - - - - diff --git a/Chapter15/onlineStore/public/.htaccess b/Chapter15/onlineStore/public/.htaccess deleted file mode 100644 index 3aec5e2..0000000 --- a/Chapter15/onlineStore/public/.htaccess +++ /dev/null @@ -1,21 +0,0 @@ - - - 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/Chapter15/onlineStore/public/css/admin.css b/Chapter15/onlineStore/public/css/admin.css deleted file mode 100644 index d9495a1..0000000 --- a/Chapter15/onlineStore/public/css/admin.css +++ /dev/null @@ -1,33 +0,0 @@ -.copyright { - background-color: #1a252f; -} - -.fixed { - -ms-flex: 0 0 250px; - flex: 0 0 250px; -} - -.content-grey { - background-color: #f8f9fc; -} - -hr { - margin-top: 0.8em; - margin-bottom: 0.8em; -} - -.img-profile { - height: 2rem; - width: 2rem; -} - -.profile-font { - color: #858796 !important; - font-size: 80%; - font-weight: 400; -} - -.card-header { - background-color: #f8f9fc; - border-bottom: 1px solid #e3e6f0; -} diff --git a/Chapter15/onlineStore/public/css/app.css b/Chapter15/onlineStore/public/css/app.css deleted file mode 100644 index cabac36..0000000 --- a/Chapter15/onlineStore/public/css/app.css +++ /dev/null @@ -1,20 +0,0 @@ -.bg-secondary { - background-color: #2c3e50 !important; -} - -.copyright { - background-color: #1a252f; -} - -.bg-primary { - background-color: #1abc9c !important; -} - -nav{ - font-weight: 700; -} - -.img-card{ - height: 18vw; - object-fit: cover; -} diff --git a/Chapter15/onlineStore/public/favicon.ico b/Chapter15/onlineStore/public/favicon.ico deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter15/onlineStore/public/img/game.png b/Chapter15/onlineStore/public/img/game.png deleted file mode 100644 index 85420e8bbc16098bf26b4ee63bde0e91a19d1f2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25896 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 cz>% diff --git a/Chapter15/onlineStore/public/img/safe.png b/Chapter15/onlineStore/public/img/safe.png deleted file mode 100644 index 445942c707af53210931f9f4f99f6d3cb69e5d89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19240 zcmcG$WmHse)Hkf6f+(ScNTUb?(jg6!BS;M;DbfQ72qGOSC5?2~(A^yh(m8Y^-90n| z&o%%1em}nJeZIV|HH&f1Ialnxubsbr{FN1z0)gS96-$ zp4IuJyY`*Y>6dib+W_gw3gbzJCF`EUiWfmv_IvF^+r}S_8XhlF-;K4W;EsJ=!u{Zm z@g?0-gVTvg+3)A&>{~Go1SQjd?#mLCY;30|$$pb<*D@0+;Wn@M=oNr_lz9BT`8@!sYom=skJ z#xB_%G{rBu9%KkN>}Lzepv#ci$)zjzUEWl{_J)14mKoqCkXM@fkXVPPnOsO_USm`I z5Z|XT-)+{5k*KHh_qjaqq{ZMyA+H`N0tpjLU`?g-$4%8E$O7xL z-~_|bE=a6DLLM0rG(I)VVLO|%H@9{-ygu!pf4Z34rf}PU`0bA{p#jmWU6=d3512G0 zsPS@9nbnH1=XY@sZ>|#KdvA6TPbD6W;*dMi1^K?c2p*>y@h1S+iiIu*>$8B#EW*+%h0ur^{wIN^#llD<^0+d#yrFEH@c5SGSj6ESg?OOepi6%}m+-z&s0^ z2J`*rD!mUGc}va^EsgV@ zEcAF53tX^v%Q)QVn8(b!@hdw5H*@>FzWdp$V&NxEFmkXca~@up+v-xW*w>36>8XLg z010(c2w7wGK4f|7G&zZnV4wD1~(7h2hntA?n#=b;2h;L-LdZaDuN9-O_ z^!E&i2_?np!A?@OfRwK#duTm+Ira-RSuA3}f_eJNFo#Kw-giR*%vs7Qs&d}K=t=7v z-ud>T&BkM-E(84BNFm9puT-YROan%NPWDEiO41HKeDbBxx0xLJdWvWvKm8kZwh6Jz)Y;pW zQ?Zj)%=1(f`YPllo(nIIP-0gJO-;vY+FH+)X$Q+If+Y61U=Q&7|1zxGYRjZO4GvYi z?qlpn7vEfs9{kE1`sU>xpQn`6MA&qFJP=~}+=n^?j2&_x2FF&&7)$`q6Ci1Ecdp#b zp9A7g%;t7o#fTm)PWsKO5)Xzyg$c|+!7@4w279ssP_{s&fU{eb4T($$!Bc|7J4=lcgP0a}3H5&^dtz8#;EJqFoDDI0Y#BE3TL`%l%FuNsUpB^w-7Hhot)^l75Ufu6%{}A`m>2St zFb5oyCGu!>M}L`j*>2r?g}ZK&opoqND@l22)h4iIRlGozz}>^%=LIUv^f(( z8v=GO435IiVupGOSpM0A=GN=8)0+tKbV5ro>w@Yh9Hxp;PQ+lc{znR<{zp&l(U^U- z0h~Kd7Ia?-z3I3y4ujCkobijH32sa;+H2I`ij(<#IQ3Dw{^xn|H{})f+hjmaK2a6) zwT~;wJsiYfVETrfk|)ZB_#XYJ&GiMZYJ6(tg|!fxD)SbrY`Xrb+i@TQtsKiA8Abi;J};US60QaTqo7e)A!OGSS+FKMbRW!13Y`Rq;R8 z(oLpnaB^OUiuHWxCy35-Pb%`gxMXBtxPL$B_q)LDf13v{G9w)O=3P5llAv;>qA?Oo zm*7aEe8#C!RX;dzXJyj|&~rVdqCR}r*2|Y`1p3K49)y%)cE-lWf2E^d(*<2uGZx*T z3HsVDSd!5ZjLR^1{3L2HLrLslqY zR;Z>`@aTGZ^A`=;ZLt%698y|y!jb5{-e@Rr`ChEChXN=e`_3=Tr-yqtr(!`He`4~` zH{(6kji?x-g@j~54riW9=AO8R!_@=5p@}u+{9#&wOH9Hi3#Zu(7#V7*e*gw}?l1cF zLPDP4`f&T-&B2a;N*@aTF9JIJ$=cwo*wcY$8QI$U%2xPVRn^&<*c%omW%Enw=JbXK z`2u}-2$?P%yYO^7cfeetEtRb}idb2JEyDl51Ts7l|a zA3|W%=>6rsg+HUQt4MAF-RrsY%TLd6FAb2c6Yrm(0oT5+F59~)E!=n10-8yFeaswOQ~c&p3k0S7B=}hLmCe;`r%;UFqSNvrJial7<`Ox; zxafL?ocnYL)MVHRJ$VBl%YlfKGf&_3w#`zbUA8cw-`n)9zVt6`@&!ub)Cz^?nQ5AQ zA>9btpqB4$8{F*eBL4U1#XR|M@A(MFYugeaVAOa~{?$*sVeno+ce?^J7U{WKu91hA z{ngB&Y-}twT*IsAtBKyLw=)CJ)fm#`4y=Kc;L#(`iWs%`f}5#ihc3%XN(i6lZgE>( zFU}f0;15*J>;w}^)P=9>avrtM2h(rQGDXQ9!l$m**NCE4-q`YE0 zVz(wm)(H$vOfswL;;E<|YO^}tnC{FWWXUoNJQ*ewdmvZc*)*QqoU#>aJ4%`~XzYH) zOL#Z^NAlq;@-*9PXP(a3?a2OiB8p;>Y!0$+?PT-JVh z7v$_u_|2y@abBOGV0$c-LtMBCvOESxwbxsrGDJ5;<}?aX^t>U|a$`Sf31t>i6%|&S z_q%B5H^)zu{Fa&q8-=?`yEK<_Kjb((DGBEUNBReSd;=QRl=8zA=FH<0UfMpKWxRcG zzXd{xiunWda|%(k6#D>v(-&um`W`|!{)xZV64RtQA$at6@%LiST^(ROy_3dI2ST&< zXCtAii*98yA@|d8%bZ18AQ>ZHlx|{{zlOcEOLKLORPc-|NWOS`=vxRZVKr&qHP9~! z4M!J&6%1hZm#Z?iBCR{+8T}^>u{6&yN zi}aU!;VusB=#|)NO=<-%vCHZDa2E^zM0IfJt|ZFd!<^T;mE}n5VxZ?;qc0xlEHS+t zCB{Ky=#`xcoqO^Ib|Z2hhr{zPD{2E8fONN=ulK z+Nuq^(NMgF=!3hb%6Dp8UlA%0Eg12GurqV{jod+C@nFg4XB6h}w}UKG z6{Dl0wY37yJhz`Tx2w{t!Mi@B;2RJ>S=pA{^SC(RBl3*@($*X55r6E!XH}>X0ga%; z3r2|Nj7hAl?#KZ1!Us$iFmB<#+?7BY<>(JAg{^R-5~84wWztSxZK(wnFsokz^=n{L z4X(ZnMj-#eZ1{jmDH;$vcaeKN=(=PBl^Ye^s}Yu4z8YZspJmuq6++2;sH5_3U*8-< z9rVJX=TTu&!yLg(;o%SBaS(*uxton;81Z-TpAXJWj!Gt!5myzDY0Yuer8Wr!IwoZx z%S0mu^Ltu#qJTh>Z)M{17&GkoTH$4d80h3K`l`8)e@xu)LusD2kMpRxq;Bkok&(M%%ov0c<~s? z-G)wS%c$zSd>$mh=MFffI`QZ;5=b26Qdz6Nw>R6`=%@0_%>qD1eAzV%hD?haAP{>^ z!rdOd#6vajw5G;tC4mV)Z`r$|^-+cH)X|5Qc`{MHc7Ypx|D`PAatavO2*OBF5UVf= zA2=4_Ai&sB{n1ETwa{p)mky|l$K1J88Dfovp`tN83X~$`P55|Sxf#gKO^ZwwEp6RL z`qjS3^Is#R?{esGkT-{7HNrn1vm*X>VNO})i}cO<4ar+**X9EXf~$6$8QTu3a7b=c zm$3{K8cHohdi@9=zZ>yOS=KjiXyrQxu2rsq*zttUhVW@mdGm#|>#4}8H<@5`Pc1!d zc%SK>u!ozQTf;T`+PjTLrHAU7ap1rWx@;s?6Hjg>!TbAKWFTsRRA_eZ9kPFT zM*fUylmWLol7c3*J(N_=oJO(GHnN5zA(_l+6LoKz&2wFnX6ib|-QB(Q#fydaHfQZ$ zCGrXi3t8FOW8P)%_eFaO+D%&l*I0Fq3lLf)tK#Wg6Go0-pknK`y)t3&I7Y?DkSos*m z>KWH(8YNG!mPU>_v(EZw%LHnOKPOQ;)$9j&xs~XplEyvJzG_t3b9H<`(x6=bMWB}; zepG%<=A=H2V)$sZ#~-vr&RaYOAh@Qn)x-i^+UhvpHi-?01?9>ip9w3q73e+<@dp4a z?Yg@WLvrVv9EkyO-M`*0bBf8^Iq$)=LdnjDcs{pMEu_irRqx%hcuy!}yNCY`m(+lG zrUom=NSy3tspxS{pV)1+@{G=J&r==c6^I8!QAKv^-=dvC_L_+Z6*RNk~4d||NHS)tDdQaI}J~PRT8`toY z{OksE)wM^zqf%yyc^c3b6-6Q~Ui=`&q=vusWgbNEw=WQ=e~OI{<=(wBY2MhdT6lu@ zG|x_X1suR^;L7)lUM1VXQ{-xO3pJv!8rgMorl3N!YPD&L7_#kS0y>3J!^?uAA`7CI zGA%0>S8(k3TM}*gl)$h*6+Mp4l$kouZ&Xvkse!`|h7wpZ#ZN^*Ol*og(V8qN-uxHy zY8!Q0uaK!{Q8~5RZCKr4U3fa8k+z68y7#bHBnPt2)@-*fy0kuR;Y=eb%^lafP+Gcg zhLN7k#^$dVm#rqGdNvC!LjN)YH=hD=*aYN%6;v_Gnjr1x=htB;prCB8S+m^Y^OUVQ zi(L<&O|97hTbk_U&L{bCYuDmWVqAjpvm$tJ>V10Hb-fjI>vFsS<9PX2PHwi-7Zw)M z(&$#+IQj&Bu0BClR`RY4TO)T6%Zaj4!FG(wJ0kX1;XcKDxiK@ohXq z_MM(VFk{`j9*EvieQ4d&y?Aj+=>(NR4V$@!+KP$_6VKHB<^}dvvB@u^Cb<I-UN zlHWR-lUhjty`-r*VI-$;mc9RNpTlIOEQl(9n=U9^u)W9eJi^B0^1gchXj@wwT9`{% z{xYXWrScKp%unV!buCWLhQ?M_R^0xkTyZZbHpidmMD`p}r0-tt|NHYtduo|WC^n`@y^n)xzjjkEdvn1z%UEPS+G zc!b@H59#Le7*eTWvNue37fEDV$6r80Nz2^=Z z@85r^otZtIDNn)n^Yg*BiL)js{m94Q4I6?@im>=UVYIZgjFVs8t>2rw3H8RFR>D!| z!9k!P`IC=@pdpkSHuSnDHu82V);a0oWSMIqW928-{he%MYs>Pv7A_(uQ=F_#gs-AK zy7tKG;;}LeSi|XO!BX3rY{VqII0*W`AmDY5za_$^HsZ4RSVoq?weK-hqe<#3UJK-b z?TJAT6IMxC4W={|0>0l`g0g<5QizP4_GMn2WM^y8L5-xz#s zLi`t$^8ECB5Az&V-u6JOYQ83yU15tbFE@i(fp*Iub=l0xqqw-dEN^WEAvCacb1Z6m zKqxb~8Ch?{+1m##O!VH9i=Q${Ee{Q;)E2WR^x>P7KWEBw9D2hiQrKiu#mv?CRPxn| zU8yo8rl&DcYKx$z!S;7lEF}lCGoWjxiyR}qVb0qCIqDMyJ`vWF1=kT(lsA~)E_X!L zNHQTLW7OiSlkwk-OBwZO?n&`W{G8>-GPc8yl1PFZu%fKRaE(ruuALkw-X1r*?QUAxV}Q(+U@-8zkxJ>3P^@C{(wa z5aK>+!8O{H)pxD-jPeSMtm|IjHWR|^}=*kO_{04_~Cez&z+p6 zkga~Kq0LFrFm({>nDcz~BhO=%5UvyD{xUx6m>}DjsVVV93uwXq1QtdRdjcU z!)PU`MLsg)L7QqyIJgAKlRI91&jSavqFhzC{%E~aXfG1_f==9*aLoQkP?gu7@%`BY zvS>c3Tzfb?r}ln-4g^0mxC@c9>Hng66h7Nnb{=I#s?rlI(E1NQUaEB6}pEmu%y!Ov*#xhLp35T)_ndi@RdU^|R%BT|K zdAxImZ?8;^<}=BrUP0ZF*c*6(uFg5PIj}D7nnCfzRMp91DM%SI>BV?H=(+B7N?l zIK?Z$3U!R9*4t-ve`fd#SE8$TFkYuzW+X}uiuW6-cv`I%vLJUS=LA^o107?_{;xuz z48=Br@f8&*P>t89se@|Q!OiP|y0lt-%)IyFyF|u|J_H|=%LsWF+MP!`vl$lA<%NsC9AsZ%g8Nm?vA~> z{ARHSd~tM|^JSCln}ya^SjJBMQFwHsRT;dtUnS47ii_DJx*mPPnXfKMm3R;o6ts;_ zOyj`5kKOw2G9z^=dmR4EXZdaK^2KqabN)$ZG$Zo(Aa~_(anbOM{KUEWGToJ0u?c1TQ*!-(NUYy`_wL<;PQ<93$zJ5-6n$Mo1LYki?ZjEOtEf&OuJCS(JfD&fvEd4YJUNVM6M>g*;z2V_-6+Ht1Yn#>|d8}z5NIe zZ--1Lp%dXsW93x)CoRqR(efL>Gh9^Bq?^abj~|_!_(QNgd+;yhGVS(7cXL!dTptB< z!P#OS-c&BzOLPmD8K6beYOLQe&jw{IpmB>mehZW1GA8ux>NWToxgzd>%t<*Y(2z(J z`!jIk;o-Gyl_0t#T^W&B4pw`wZ;NHLBRWD>+S@M(qH#_+s(#s8=I7IetrqJSi}}Kt zF4svHX@?Wi*JfUX%DnuBXQ#lxK)O(BdKO>CpsbxeSSJ=a6x5F3)nT8C^cts7 zVI4)3`_z5uFdF+|r6waUxS!EFsgTSN+**Ub$re6t-f+dAjG*WX zbx31)_hIKiH$WU9yCz^+J`#^KK2Fwa*;fnfU6$6>)xDg+BOoYVYeqn)`GhM<1Nb8z zU=!izdh}}%rzRxlRXR!@vUaTg=%xYdk88QQ66JH=OW#cH%H2pyhY=aMQ!M=b`?q-B zQNQXmnjFWE7@vi5Zgt+fb#5+oy3Ea{52R>ca@w`3`wT9vuC7j1e0O~}Vo^DZ&rZHI zY5$~9zll?oQ@87@1)4A!qQORj$N@M?W+nv^wpV5RvSx4*CNynpkrmSzs?g>IN;y_{5 zBlLQ4RdBtU5$U?uSPfle=2aFl<60=u35Pm9OafkIqp%YesBzuJJt!I{b=97HNx;kJ z<(#qdZbfW4K1x#H3ABF3>~eK>P&ANa<8qWit6XtX`f7Xfwo#jKV5-M6<(A z^V}T$am))RyGp>xK2+ea{y|5HQJf_urlM&{N=jN61$Ct4n3DRPck_#I9G~BuNq7M$ zzcgj|Xm2vS8#W^6GRS=C1rthiLOgTqh|ngH0q1T#ov@*9j}rj%VEmM6d;t2}va(#rl++oxfh3rU*~Ylw-vBY%(`Dw{P1CjxewTWceno z=Na$1tzVh2<3pL8rjDg^8|+3FSd|@PYOAh)Z5LShe@Zth6D5dWkp>>mu0unq>Tj+u zCAWqCT__vX&NMckSS~2Je=+^pfNk!E=SQsQ&>;b@ThArMNQv7R47BP=3SLdSkQ%iwhet~B=?i){gpu2vt1V<}SXN$$SyG%_ z=a%a3USICb>n3l|I`iCJDJ?DSyRot_8pW3`OrQqG;)60pSe#78Nd#x7=$v4YV zS5ZOyvK%lTD65^)H|E4|V%}@y(Onc46nH3~C9J1toFsaY?CjJ!SI~vN7U4<1j-
    w==XB0?3|p=#`o%NsudE(E-U#KS3Snw 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 o>ir+C;RN10sIS0&a;p - - - - - - - - - - - - - - - - - - diff --git a/Chapter15/onlineStore/public/index.php b/Chapter15/onlineStore/public/index.php deleted file mode 100644 index 1d69f3a..0000000 --- a/Chapter15/onlineStore/public/index.php +++ /dev/null @@ -1,55 +0,0 @@ -make(Kernel::class); - -$response = $kernel->handle( - $request = Request::capture() -)->send(); - -$kernel->terminate($request, $response); diff --git a/Chapter15/onlineStore/public/robots.txt b/Chapter15/onlineStore/public/robots.txt deleted file mode 100644 index eb05362..0000000 --- a/Chapter15/onlineStore/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: diff --git a/Chapter15/onlineStore/resources/css/app.css b/Chapter15/onlineStore/resources/css/app.css deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter15/onlineStore/resources/js/app.js b/Chapter15/onlineStore/resources/js/app.js deleted file mode 100644 index 40c55f6..0000000 --- a/Chapter15/onlineStore/resources/js/app.js +++ /dev/null @@ -1 +0,0 @@ -require('./bootstrap'); diff --git a/Chapter15/onlineStore/resources/js/bootstrap.js b/Chapter15/onlineStore/resources/js/bootstrap.js deleted file mode 100644 index 6922577..0000000 --- a/Chapter15/onlineStore/resources/js/bootstrap.js +++ /dev/null @@ -1,28 +0,0 @@ -window._ = require('lodash'); - -/** - * 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 = require('axios'); - -window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; - -/** - * 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'; - -// window.Pusher = require('pusher-js'); - -// window.Echo = new Echo({ -// broadcaster: 'pusher', -// key: process.env.MIX_PUSHER_APP_KEY, -// cluster: process.env.MIX_PUSHER_APP_CLUSTER, -// forceTLS: true -// }); diff --git a/Chapter15/onlineStore/resources/views/admin/home/index.blade.php b/Chapter15/onlineStore/resources/views/admin/home/index.blade.php deleted file mode 100644 index a2b4868..0000000 --- a/Chapter15/onlineStore/resources/views/admin/home/index.blade.php +++ /dev/null @@ -1,12 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
    -
    - Admin Panel - Home Page -
    -
    - Welcome to the Admin Panel, use the sidebar to navigate between the different options. -
    -
    -@endsection diff --git a/Chapter15/onlineStore/resources/views/home/about.blade.php b/Chapter15/onlineStore/resources/views/home/about.blade.php deleted file mode 100644 index f79abf3..0000000 --- a/Chapter15/onlineStore/resources/views/home/about.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    -
    -
    -

    {{ $viewData["description"] }}

    -
    -
    -

    {{ $viewData["author"] }}

    -
    -
    -
    -@endsection diff --git a/Chapter15/onlineStore/resources/views/home/index.blade.php b/Chapter15/onlineStore/resources/views/home/index.blade.php deleted file mode 100644 index 1affb20..0000000 --- a/Chapter15/onlineStore/resources/views/home/index.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('content') -
    -
    - -
    -
    - -
    -
    - -
    -
    -@endsection diff --git a/Chapter15/onlineStore/resources/views/layouts/admin.blade.php b/Chapter15/onlineStore/resources/views/layouts/admin.blade.php deleted file mode 100644 index 3219fd1..0000000 --- a/Chapter15/onlineStore/resources/views/layouts/admin.blade.php +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - @yield('title', 'Admin - Online Store') - - - -
    - - - -
    - - -
    - @yield('content') -
    -
    -
    - - - - - - - - - diff --git a/Chapter15/onlineStore/resources/views/layouts/app.blade.php b/Chapter15/onlineStore/resources/views/layouts/app.blade.php deleted file mode 100644 index eee7fcb..0000000 --- a/Chapter15/onlineStore/resources/views/layouts/app.blade.php +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - @yield('title', 'Online Store') - - - - - -
    -
    -

    @yield('subtitle', 'A Laravel Online Store')

    -
    -
    - - -
    - @yield('content') -
    - - - - - - - diff --git a/Chapter15/onlineStore/resources/views/product/index.blade.php b/Chapter15/onlineStore/resources/views/product/index.blade.php deleted file mode 100644 index c82528a..0000000 --- a/Chapter15/onlineStore/resources/views/product/index.blade.php +++ /dev/null @@ -1,18 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    - @foreach ($viewData["products"] as $product) - - @endforeach -
    -@endsection diff --git a/Chapter15/onlineStore/resources/views/product/show.blade.php b/Chapter15/onlineStore/resources/views/product/show.blade.php deleted file mode 100644 index 0adad34..0000000 --- a/Chapter15/onlineStore/resources/views/product/show.blade.php +++ /dev/null @@ -1,21 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    -
    -
    - getImage()) }}" class="img-fluid rounded-start"> -
    -
    -
    -
    - {{ $viewData["product"]->getName() }} (${{ $viewData["product"]->getPrice() }}) -
    -

    {{ $viewData["product"]->getDescription() }}

    -

    Add to Cart

    -
    -
    -
    -
    -@endsection diff --git a/Chapter15/onlineStore/resources/views/welcome.blade.php b/Chapter15/onlineStore/resources/views/welcome.blade.php deleted file mode 100644 index c587c72..0000000 --- a/Chapter15/onlineStore/resources/views/welcome.blade.php +++ /dev/null @@ -1,7 +0,0 @@ -@extends('layouts.app') -@section('title', 'Home Page - Online Store') -@section('content') -
    - Welcome to the application -
    -@endsection \ No newline at end of file diff --git a/Chapter15/onlineStore/routes/api.php b/Chapter15/onlineStore/routes/api.php deleted file mode 100644 index eb6fa48..0000000 --- a/Chapter15/onlineStore/routes/api.php +++ /dev/null @@ -1,19 +0,0 @@ -get('/user', function (Request $request) { - return $request->user(); -}); diff --git a/Chapter15/onlineStore/routes/channels.php b/Chapter15/onlineStore/routes/channels.php deleted file mode 100644 index 5d451e1..0000000 --- a/Chapter15/onlineStore/routes/channels.php +++ /dev/null @@ -1,18 +0,0 @@ -id === (int) $id; -}); diff --git a/Chapter15/onlineStore/routes/console.php b/Chapter15/onlineStore/routes/console.php deleted file mode 100644 index e05f4c9..0000000 --- a/Chapter15/onlineStore/routes/console.php +++ /dev/null @@ -1,19 +0,0 @@ -comment(Inspiring::quote()); -})->purpose('Display an inspiring quote'); diff --git a/Chapter15/onlineStore/routes/web.php b/Chapter15/onlineStore/routes/web.php deleted file mode 100644 index 27bc46a..0000000 --- a/Chapter15/onlineStore/routes/web.php +++ /dev/null @@ -1,20 +0,0 @@ -name("home.index"); -Route::get('/about', 'App\Http\Controllers\HomeController@about')->name("home.about"); -Route::get('/products', 'App\Http\Controllers\ProductController@index')->name("product.index"); -Route::get('/products/{id}', 'App\Http\Controllers\ProductController@show')->name("product.show"); -Route::get('/admin', 'App\Http\Controllers\Admin\AdminHomeController@index')->name("admin.home.index"); diff --git a/Chapter15/onlineStore/storage/app/.gitignore b/Chapter15/onlineStore/storage/app/.gitignore deleted file mode 100644 index 8f4803c..0000000 --- a/Chapter15/onlineStore/storage/app/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!public/ -!.gitignore diff --git a/Chapter15/onlineStore/storage/app/public/.gitignore b/Chapter15/onlineStore/storage/app/public/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter15/onlineStore/storage/app/public/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter15/onlineStore/storage/framework/.gitignore b/Chapter15/onlineStore/storage/framework/.gitignore deleted file mode 100644 index 05c4471..0000000 --- a/Chapter15/onlineStore/storage/framework/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -compiled.php -config.php -down -events.scanned.php -maintenance.php -routes.php -routes.scanned.php -schedule-* -services.json diff --git a/Chapter15/onlineStore/storage/framework/cache/.gitignore b/Chapter15/onlineStore/storage/framework/cache/.gitignore deleted file mode 100644 index 01e4a6c..0000000 --- a/Chapter15/onlineStore/storage/framework/cache/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!data/ -!.gitignore diff --git a/Chapter15/onlineStore/storage/framework/cache/data/.gitignore b/Chapter15/onlineStore/storage/framework/cache/data/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter15/onlineStore/storage/framework/cache/data/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter15/onlineStore/storage/framework/sessions/.gitignore b/Chapter15/onlineStore/storage/framework/sessions/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter15/onlineStore/storage/framework/sessions/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter15/onlineStore/storage/framework/testing/.gitignore b/Chapter15/onlineStore/storage/framework/testing/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter15/onlineStore/storage/framework/testing/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter15/onlineStore/storage/framework/views/.gitignore b/Chapter15/onlineStore/storage/framework/views/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter15/onlineStore/storage/framework/views/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter15/onlineStore/storage/logs/.gitignore b/Chapter15/onlineStore/storage/logs/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter15/onlineStore/storage/logs/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter15/onlineStore/tests/CreatesApplication.php b/Chapter15/onlineStore/tests/CreatesApplication.php deleted file mode 100644 index 547152f..0000000 --- a/Chapter15/onlineStore/tests/CreatesApplication.php +++ /dev/null @@ -1,22 +0,0 @@ -make(Kernel::class)->bootstrap(); - - return $app; - } -} diff --git a/Chapter15/onlineStore/tests/Feature/ExampleTest.php b/Chapter15/onlineStore/tests/Feature/ExampleTest.php deleted file mode 100644 index 78ccc21..0000000 --- a/Chapter15/onlineStore/tests/Feature/ExampleTest.php +++ /dev/null @@ -1,21 +0,0 @@ -get('/'); - - $response->assertStatus(200); - } -} diff --git a/Chapter15/onlineStore/tests/TestCase.php b/Chapter15/onlineStore/tests/TestCase.php deleted file mode 100644 index 2932d4a..0000000 --- a/Chapter15/onlineStore/tests/TestCase.php +++ /dev/null @@ -1,10 +0,0 @@ -assertTrue(true); - } -} diff --git a/Chapter15/onlineStore/webpack.mix.js b/Chapter15/onlineStore/webpack.mix.js deleted file mode 100644 index 2a22dc1..0000000 --- a/Chapter15/onlineStore/webpack.mix.js +++ /dev/null @@ -1,17 +0,0 @@ -const mix = require('laravel-mix'); - -/* - |-------------------------------------------------------------------------- - | Mix Asset Management - |-------------------------------------------------------------------------- - | - | Mix provides a clean, fluent API for defining some Webpack build steps - | for your Laravel applications. By default, we are compiling the CSS - | file for the application as well as bundling up all the JS files. - | - */ - -mix.js('resources/js/app.js', 'public/js') - .postCss('resources/css/app.css', 'public/css', [ - // - ]); diff --git a/Chapter16/onlineStore/.editorconfig b/Chapter16/onlineStore/.editorconfig deleted file mode 100644 index 1671c9b..0000000 --- a/Chapter16/onlineStore/.editorconfig +++ /dev/null @@ -1,18 +0,0 @@ -root = true - -[*] -charset = utf-8 -end_of_line = lf -insert_final_newline = true -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true - -[*.md] -trim_trailing_whitespace = false - -[*.{yml,yaml}] -indent_size = 2 - -[docker-compose.yml] -indent_size = 4 diff --git a/Chapter16/onlineStore/.env.example b/Chapter16/onlineStore/.env.example deleted file mode 100644 index 8510237..0000000 --- a/Chapter16/onlineStore/.env.example +++ /dev/null @@ -1,52 +0,0 @@ -APP_NAME=Laravel -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=laravel -DB_USERNAME=root -DB_PASSWORD= - -BROADCAST_DRIVER=log -CACHE_DRIVER=file -FILESYSTEM_DISK=local -QUEUE_CONNECTION=sync -SESSION_DRIVER=file -SESSION_LIFETIME=120 - -MEMCACHED_HOST=127.0.0.1 - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -MAIL_MAILER=smtp -MAIL_HOST=mailhog -MAIL_PORT=1025 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS=null -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_APP_CLUSTER=mt1 - -MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/Chapter16/onlineStore/.gitattributes b/Chapter16/onlineStore/.gitattributes deleted file mode 100644 index 510d996..0000000 --- a/Chapter16/onlineStore/.gitattributes +++ /dev/null @@ -1,10 +0,0 @@ -* text=auto - -*.blade.php diff=html -*.css diff=css -*.html diff=html -*.md diff=markdown -*.php diff=php - -/.github export-ignore -CHANGELOG.md export-ignore diff --git a/Chapter16/onlineStore/.gitignore b/Chapter16/onlineStore/.gitignore deleted file mode 100644 index eb003b0..0000000 --- a/Chapter16/onlineStore/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -/node_modules -/public/hot -/public/storage -/storage/*.key -/vendor -.env -.env.backup -.phpunit.result.cache -docker-compose.override.yml -Homestead.json -Homestead.yaml -npm-debug.log -yarn-error.log -/.idea -/.vscode diff --git a/Chapter16/onlineStore/.styleci.yml b/Chapter16/onlineStore/.styleci.yml deleted file mode 100644 index 679a631..0000000 --- a/Chapter16/onlineStore/.styleci.yml +++ /dev/null @@ -1,13 +0,0 @@ -php: - preset: laravel - version: 8 - disabled: - - no_unused_imports - finder: - not-name: - - index.php -js: - finder: - not-name: - - webpack.mix.js -css: true diff --git a/Chapter16/onlineStore/README.md b/Chapter16/onlineStore/README.md deleted file mode 100644 index f171eca..0000000 --- a/Chapter16/onlineStore/README.md +++ /dev/null @@ -1,64 +0,0 @@ -

    - -

    -Build Status -Total Downloads -Latest Stable Version -License -

    - -## About Laravel - -Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as: - -- [Simple, fast routing engine](https://laravel.com/docs/routing). -- [Powerful dependency injection container](https://laravel.com/docs/container). -- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage. -- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent). -- Database agnostic [schema migrations](https://laravel.com/docs/migrations). -- [Robust background job processing](https://laravel.com/docs/queues). -- [Real-time event broadcasting](https://laravel.com/docs/broadcasting). - -Laravel is accessible, powerful, and provides tools required for large, robust applications. - -## Learning Laravel - -Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework. - -If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 2000 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library. - -## Laravel Sponsors - -We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell). - -### Premium Partners - -- **[Vehikl](https://vehikl.com/)** -- **[Tighten Co.](https://tighten.co)** -- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** -- **[64 Robots](https://64robots.com)** -- **[Cubet Techno Labs](https://cubettech.com)** -- **[Cyber-Duck](https://cyber-duck.co.uk)** -- **[Many](https://www.many.co.uk)** -- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)** -- **[DevSquad](https://devsquad.com)** -- **[Curotec](https://www.curotec.com/services/technologies/laravel/)** -- **[OP.GG](https://op.gg)** -- **[WebReinvent](https://webreinvent.com/?utm_source=laravel&utm_medium=github&utm_campaign=patreon-sponsors)** -- **[Lendio](https://lendio.com)** - -## Contributing - -Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions). - -## Code of Conduct - -In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). - -## Security Vulnerabilities - -If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed. - -## License - -The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). diff --git a/Chapter16/onlineStore/app/Console/Kernel.php b/Chapter16/onlineStore/app/Console/Kernel.php deleted file mode 100644 index d8bc1d2..0000000 --- a/Chapter16/onlineStore/app/Console/Kernel.php +++ /dev/null @@ -1,32 +0,0 @@ -command('inspire')->hourly(); - } - - /** - * Register the commands for the application. - * - * @return void - */ - protected function commands() - { - $this->load(__DIR__.'/Commands'); - - require base_path('routes/console.php'); - } -} diff --git a/Chapter16/onlineStore/app/Exceptions/Handler.php b/Chapter16/onlineStore/app/Exceptions/Handler.php deleted file mode 100644 index 8e7fbd1..0000000 --- a/Chapter16/onlineStore/app/Exceptions/Handler.php +++ /dev/null @@ -1,41 +0,0 @@ -> - */ - protected $dontReport = [ - // - ]; - - /** - * A list of the inputs that are never flashed for validation exceptions. - * - * @var array - */ - protected $dontFlash = [ - 'current_password', - 'password', - 'password_confirmation', - ]; - - /** - * Register the exception handling callbacks for the application. - * - * @return void - */ - public function register() - { - $this->reportable(function (Throwable $e) { - // - }); - } -} diff --git a/Chapter16/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php b/Chapter16/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php deleted file mode 100644 index cd78cb3..0000000 --- a/Chapter16/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php +++ /dev/null @@ -1,16 +0,0 @@ -with("viewData", $viewData); - } -} diff --git a/Chapter16/onlineStore/app/Http/Controllers/Admin/AdminProductController.php b/Chapter16/onlineStore/app/Http/Controllers/Admin/AdminProductController.php deleted file mode 100644 index b190204..0000000 --- a/Chapter16/onlineStore/app/Http/Controllers/Admin/AdminProductController.php +++ /dev/null @@ -1,18 +0,0 @@ -with("viewData", $viewData); - } -} diff --git a/Chapter16/onlineStore/app/Http/Controllers/Controller.php b/Chapter16/onlineStore/app/Http/Controllers/Controller.php deleted file mode 100644 index a0a2a8a..0000000 --- a/Chapter16/onlineStore/app/Http/Controllers/Controller.php +++ /dev/null @@ -1,13 +0,0 @@ -with("viewData", $viewData); - } - - public function about() - { - $viewData = []; - $viewData["title"] = "About us - Online Store"; - $viewData["subtitle"] = "About us"; - $viewData["description"] = "This is an about page ..."; - $viewData["author"] = "Developed by: Your Name"; - return view('home.about')->with("viewData", $viewData); - } -} diff --git a/Chapter16/onlineStore/app/Http/Controllers/ProductController.php b/Chapter16/onlineStore/app/Http/Controllers/ProductController.php deleted file mode 100644 index d27a3a3..0000000 --- a/Chapter16/onlineStore/app/Http/Controllers/ProductController.php +++ /dev/null @@ -1,29 +0,0 @@ -with("viewData", $viewData); - } - - public function show($id) - { - $viewData = []; - $product = Product::findOrFail($id); - $viewData["title"] = $product->getName()." - Online Store"; - $viewData["subtitle"] = $product->getName()." - Product information"; - $viewData["product"] = $product; - return view('product.show')->with("viewData", $viewData); - } -} diff --git a/Chapter16/onlineStore/app/Http/Kernel.php b/Chapter16/onlineStore/app/Http/Kernel.php deleted file mode 100644 index d3722c2..0000000 --- a/Chapter16/onlineStore/app/Http/Kernel.php +++ /dev/null @@ -1,67 +0,0 @@ - - */ - protected $middleware = [ - // \App\Http\Middleware\TrustHosts::class, - \App\Http\Middleware\TrustProxies::class, - \Fruitcake\Cors\HandleCors::class, - \App\Http\Middleware\PreventRequestsDuringMaintenance::class, - \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, - \App\Http\Middleware\TrimStrings::class, - \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, - ]; - - /** - * The application's route middleware groups. - * - * @var array> - */ - protected $middlewareGroups = [ - 'web' => [ - \App\Http\Middleware\EncryptCookies::class, - \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, - \Illuminate\Session\Middleware\StartSession::class, - // \Illuminate\Session\Middleware\AuthenticateSession::class, - \Illuminate\View\Middleware\ShareErrorsFromSession::class, - \App\Http\Middleware\VerifyCsrfToken::class, - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - - 'api' => [ - // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, - 'throttle:api', - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - ]; - - /** - * The application's route middleware. - * - * These middleware may be assigned to groups or used individually. - * - * @var array - */ - protected $routeMiddleware = [ - 'auth' => \App\Http\Middleware\Authenticate::class, - 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::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, - 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, - 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, - 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, - ]; -} diff --git a/Chapter16/onlineStore/app/Http/Middleware/Authenticate.php b/Chapter16/onlineStore/app/Http/Middleware/Authenticate.php deleted file mode 100644 index 704089a..0000000 --- a/Chapter16/onlineStore/app/Http/Middleware/Authenticate.php +++ /dev/null @@ -1,21 +0,0 @@ -expectsJson()) { - return route('login'); - } - } -} diff --git a/Chapter16/onlineStore/app/Http/Middleware/EncryptCookies.php b/Chapter16/onlineStore/app/Http/Middleware/EncryptCookies.php deleted file mode 100644 index 867695b..0000000 --- a/Chapter16/onlineStore/app/Http/Middleware/EncryptCookies.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter16/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/Chapter16/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php deleted file mode 100644 index 74cbd9a..0000000 --- a/Chapter16/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter16/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php b/Chapter16/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php deleted file mode 100644 index a2813a0..0000000 --- a/Chapter16/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php +++ /dev/null @@ -1,32 +0,0 @@ -check()) { - return redirect(RouteServiceProvider::HOME); - } - } - - return $next($request); - } -} diff --git a/Chapter16/onlineStore/app/Http/Middleware/TrimStrings.php b/Chapter16/onlineStore/app/Http/Middleware/TrimStrings.php deleted file mode 100644 index 88cadca..0000000 --- a/Chapter16/onlineStore/app/Http/Middleware/TrimStrings.php +++ /dev/null @@ -1,19 +0,0 @@ - - */ - protected $except = [ - 'current_password', - 'password', - 'password_confirmation', - ]; -} diff --git a/Chapter16/onlineStore/app/Http/Middleware/TrustHosts.php b/Chapter16/onlineStore/app/Http/Middleware/TrustHosts.php deleted file mode 100644 index 7186414..0000000 --- a/Chapter16/onlineStore/app/Http/Middleware/TrustHosts.php +++ /dev/null @@ -1,20 +0,0 @@ - - */ - public function hosts() - { - return [ - $this->allSubdomainsOfApplicationUrl(), - ]; - } -} diff --git a/Chapter16/onlineStore/app/Http/Middleware/TrustProxies.php b/Chapter16/onlineStore/app/Http/Middleware/TrustProxies.php deleted file mode 100644 index 3391630..0000000 --- a/Chapter16/onlineStore/app/Http/Middleware/TrustProxies.php +++ /dev/null @@ -1,28 +0,0 @@ -|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/Chapter16/onlineStore/app/Http/Middleware/VerifyCsrfToken.php b/Chapter16/onlineStore/app/Http/Middleware/VerifyCsrfToken.php deleted file mode 100644 index 9e86521..0000000 --- a/Chapter16/onlineStore/app/Http/Middleware/VerifyCsrfToken.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter16/onlineStore/app/Models/Product.php b/Chapter16/onlineStore/app/Models/Product.php deleted file mode 100644 index 84efbb6..0000000 --- a/Chapter16/onlineStore/app/Models/Product.php +++ /dev/null @@ -1,89 +0,0 @@ -attributes['id'] - int - contains the product primary key (id) - * $this->attributes['name'] - string - contains the product name - * $this->attributes['description'] - string - contains the product description - * $this->attributes['image'] - string - contains the product image - * $this->attributes['price'] - int - contains the product price - * $this->attributes['created_at'] - timestamp - contains the product creation date - * $this->attributes['updated_at'] - timestamp - contains the product update date - */ - - public function getId() - { - return $this->attributes['id']; - } - - public function setId($id) - { - $this->attributes['id'] = $id; - } - - public function getName() - { - return $this->attributes['name']; - } - - public function setName($name) - { - $this->attributes['name'] = $name; - } - - public function getDescription() - { - return $this->attributes['description']; - } - - public function setDescription($description) - { - $this->attributes['description'] = $description; - } - - public function getImage() - { - return $this->attributes['image']; - } - - public function setImage($image) - { - $this->attributes['image'] = $image; - } - - public function getPrice() - { - return $this->attributes['price']; - } - - public function setPrice($price) - { - $this->attributes['price'] = $price; - } - - public function getCreatedAt() - { - return $this->attributes['created_at']; - } - - public function setCreatedAt($createdAt) - { - $this->attributes['created_at'] = $createdAt; - } - - public function getUpdatedAt() - { - return $this->attributes['updated_at']; - } - - public function setUpdatedAt($updatedAt) - { - $this->attributes['updated_at'] = $updatedAt; - } -} diff --git a/Chapter16/onlineStore/app/Models/User.php b/Chapter16/onlineStore/app/Models/User.php deleted file mode 100644 index 8996368..0000000 --- a/Chapter16/onlineStore/app/Models/User.php +++ /dev/null @@ -1,44 +0,0 @@ - - */ - 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', - ]; -} diff --git a/Chapter16/onlineStore/app/Providers/AppServiceProvider.php b/Chapter16/onlineStore/app/Providers/AppServiceProvider.php deleted file mode 100644 index ee8ca5b..0000000 --- a/Chapter16/onlineStore/app/Providers/AppServiceProvider.php +++ /dev/null @@ -1,28 +0,0 @@ - - */ - protected $policies = [ - // 'App\Models\Model' => 'App\Policies\ModelPolicy', - ]; - - /** - * Register any authentication / authorization services. - * - * @return void - */ - public function boot() - { - $this->registerPolicies(); - - // - } -} diff --git a/Chapter16/onlineStore/app/Providers/BroadcastServiceProvider.php b/Chapter16/onlineStore/app/Providers/BroadcastServiceProvider.php deleted file mode 100644 index 395c518..0000000 --- a/Chapter16/onlineStore/app/Providers/BroadcastServiceProvider.php +++ /dev/null @@ -1,21 +0,0 @@ -> - */ - protected $listen = [ - Registered::class => [ - SendEmailVerificationNotification::class, - ], - ]; - - /** - * Register any events for your application. - * - * @return void - */ - public function boot() - { - // - } -} diff --git a/Chapter16/onlineStore/app/Providers/RouteServiceProvider.php b/Chapter16/onlineStore/app/Providers/RouteServiceProvider.php deleted file mode 100644 index 7c17d1f..0000000 --- a/Chapter16/onlineStore/app/Providers/RouteServiceProvider.php +++ /dev/null @@ -1,63 +0,0 @@ -configureRateLimiting(); - - $this->routes(function () { - Route::prefix('api') - ->middleware('api') - ->namespace($this->namespace) - ->group(base_path('routes/api.php')); - - Route::middleware('web') - ->namespace($this->namespace) - ->group(base_path('routes/web.php')); - }); - } - - /** - * Configure the rate limiters for the application. - * - * @return void - */ - protected function configureRateLimiting() - { - RateLimiter::for('api', function (Request $request) { - return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); - }); - } -} diff --git a/Chapter16/onlineStore/artisan b/Chapter16/onlineStore/artisan deleted file mode 100644 index 67a3329..0000000 --- a/Chapter16/onlineStore/artisan +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env php -make(Illuminate\Contracts\Console\Kernel::class); - -$status = $kernel->handle( - $input = new Symfony\Component\Console\Input\ArgvInput, - new Symfony\Component\Console\Output\ConsoleOutput -); - -/* -|-------------------------------------------------------------------------- -| Shutdown The Application -|-------------------------------------------------------------------------- -| -| Once Artisan has finished running, we will fire off the shutdown events -| so that any final work may be done by the application before we shut -| down the process. This is the last thing to happen to the request. -| -*/ - -$kernel->terminate($input, $status); - -exit($status); diff --git a/Chapter16/onlineStore/bootstrap/app.php b/Chapter16/onlineStore/bootstrap/app.php deleted file mode 100644 index 037e17d..0000000 --- a/Chapter16/onlineStore/bootstrap/app.php +++ /dev/null @@ -1,55 +0,0 @@ -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/Chapter16/onlineStore/bootstrap/cache/.gitignore b/Chapter16/onlineStore/bootstrap/cache/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter16/onlineStore/bootstrap/cache/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter16/onlineStore/composer.json b/Chapter16/onlineStore/composer.json deleted file mode 100644 index f0f2eda..0000000 --- a/Chapter16/onlineStore/composer.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "name": "laravel/laravel", - "type": "project", - "description": "The Laravel Framework.", - "keywords": ["framework", "laravel"], - "license": "MIT", - "require": { - "php": "^8.0", - "fruitcake/laravel-cors": "^2.0.5", - "guzzlehttp/guzzle": "^7.2", - "laravel/framework": "^9.0", - "laravel/sanctum": "^2.14", - "laravel/tinker": "^2.7" - }, - "require-dev": { - "fakerphp/faker": "^1.9.1", - "laravel/sail": "^1.0.1", - "mockery/mockery": "^1.4.4", - "nunomaduro/collision": "^6.1", - "phpunit/phpunit": "^9.5.10", - "spatie/laravel-ignition": "^1.0", - "squizlabs/php_codesniffer": "^3.6" - }, - "autoload": { - "psr-4": { - "App\\": "app/", - "Database\\Factories\\": "database/factories/", - "Database\\Seeders\\": "database/seeders/" - } - }, - "autoload-dev": { - "psr-4": { - "Tests\\": "tests/" - } - }, - "scripts": { - "post-autoload-dump": [ - "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", - "@php artisan package:discover --ansi" - ], - "post-update-cmd": [ - "@php artisan vendor:publish --tag=laravel-assets --ansi --force" - ], - "post-root-package-install": [ - "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" - ], - "post-create-project-cmd": [ - "@php artisan key:generate --ansi" - ] - }, - "extra": { - "laravel": { - "dont-discover": [] - } - }, - "config": { - "optimize-autoloader": true, - "preferred-install": "dist", - "sort-packages": true - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/Chapter16/onlineStore/composer.lock b/Chapter16/onlineStore/composer.lock deleted file mode 100644 index b55e897..0000000 --- a/Chapter16/onlineStore/composer.lock +++ /dev/null @@ -1,7860 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "8bdcc31974d0d5a00db79c82827c8815", - "packages": [ - { - "name": "asm89/stack-cors", - "version": "v2.1.1", - "source": { - "type": "git", - "url": "https://github.com/asm89/stack-cors.git", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4|^5|^6" - }, - "require-dev": { - "phpunit/phpunit": "^7|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "psr-4": { - "Asm89\\Stack\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alexander", - "email": "iam.asm89@gmail.com" - } - ], - "description": "Cross-origin resource sharing library and stack middleware", - "homepage": "https://github.com/asm89/stack-cors", - "keywords": [ - "cors", - "stack" - ], - "support": { - "issues": "https://github.com/asm89/stack-cors/issues", - "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" - }, - "time": "2022-01-18T09:12:03+00:00" - }, - { - "name": "brick/math", - "version": "0.9.3", - "source": { - "type": "git", - "url": "https://github.com/brick/math.git", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", - "vimeo/psalm": "4.9.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Brick\\Math\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Arbitrary-precision arithmetic library", - "keywords": [ - "Arbitrary-precision", - "BigInteger", - "BigRational", - "arithmetic", - "bigdecimal", - "bignum", - "brick", - "math" - ], - "support": { - "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.9.3" - }, - "funding": [ - { - "url": "https://github.com/BenMorel", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/brick/math", - "type": "tidelift" - } - ], - "time": "2021-08-15T20:50:18+00:00" - }, - { - "name": "dflydev/dot-access-data", - "version": "v3.0.1", - "source": { - "type": "git", - "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c", - "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": "^3.14" - }, - "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.1" - }, - "time": "2021-08-13T13:06:58+00:00" - }, - { - "name": "doctrine/inflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "vimeo/psalm": "^4.10" - }, - "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.4" - }, - "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": "2021-10-22T20:16:43+00:00" - }, - { - "name": "doctrine/lexer", - "version": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" - } - }, - "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/1.2.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%2Flexer", - "type": "tidelift" - } - ], - "time": "2022-01-12T08:27:12+00:00" - }, - { - "name": "dragonmantank/cron-expression", - "version": "v3.3.1", - "source": { - "type": "git", - "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "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.1" - }, - "funding": [ - { - "url": "https://github.com/dragonmantank", - "type": "github" - } - ], - "time": "2022-01-18T15:43:28+00:00" - }, - { - "name": "egulias/email-validator", - "version": "3.1.2", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ee0db30118f661fb166bcffbf5d82032df484697", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^1.2", - "php": ">=7.2", - "symfony/polyfill-intl-idn": "^1.15" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^8.5.8|^9.3.3", - "vimeo/psalm": "^4" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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/3.1.2" - }, - "funding": [ - { - "url": "https://github.com/egulias", - "type": "github" - } - ], - "time": "2021-10-11T09:18:27+00:00" - }, - { - "name": "fruitcake/laravel-cors", - "version": "v2.0.5", - "source": { - "type": "git", - "url": "https://github.com/fruitcake/laravel-cors.git", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "shasum": "" - }, - "require": { - "asm89/stack-cors": "^2.0.1", - "illuminate/contracts": "^6|^7|^8|^9", - "illuminate/support": "^6|^7|^8|^9", - "php": ">=7.2", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4.3.4|^5|^6" - }, - "require-dev": { - "laravel/framework": "^6|^7.24|^8", - "orchestra/testbench-dusk": "^4|^5|^6|^7", - "phpunit/phpunit": "^6|^7|^8|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - }, - "laravel": { - "providers": [ - "Fruitcake\\Cors\\CorsServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Fruitcake\\Cors\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fruitcake", - "homepage": "https://fruitcake.nl" - }, - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", - "keywords": [ - "api", - "cors", - "crossdomain", - "laravel" - ], - "support": { - "issues": "https://github.com/fruitcake/laravel-cors/issues", - "source": "https://github.com/fruitcake/laravel-cors/tree/v2.0.5" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "time": "2022-01-03T14:53:04+00:00" - }, - { - "name": "graham-campbell/result-type", - "version": "v1.0.4", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "0690bde05318336c7221785f2a932467f98b64ca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/0690bde05318336c7221785f2a932467f98b64ca", - "reference": "0690bde05318336c7221785f2a932467f98b64ca", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "phpoption/phpoption": "^1.8" - }, - "require-dev": { - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", - "type": "tidelift" - } - ], - "time": "2021-11-21T21:41:47+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "7.4.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.8.3 || ^2.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.4.1", - "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.5 || ^9.3.5", - "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": { - "branch-alias": { - "dev-master": "7.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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.4.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": "2021-12-06T18:43:05+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "1.5.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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/1.5.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "time": "2021-10-22T20:56:57+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.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.4.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.8 || ^9.3.10" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "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.1.0" - }, - "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": "2021-10-06T17:43:30+00:00" - }, - { - "name": "laravel/framework", - "version": "v9.0.1", - "source": { - "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "shasum": "" - }, - "require": { - "doctrine/inflector": "^2.0", - "dragonmantank/cron-expression": "^3.1", - "egulias/email-validator": "^3.1", - "ext-mbstring": "*", - "ext-openssl": "*", - "laravel/serializable-closure": "^1.0", - "league/commonmark": "^2.2", - "league/flysystem": "^3.0", - "monolog/monolog": "^2.0", - "nesbot/carbon": "^2.53.1", - "php": "^8.0.2", - "psr/container": "^1.1.1|^2.0.1", - "psr/log": "^1.0|^2.0|^3.0", - "psr/simple-cache": "^1.0|^2.0|^3.0", - "ramsey/uuid": "^4.2.2", - "symfony/console": "^6.0", - "symfony/error-handler": "^6.0", - "symfony/finder": "^6.0", - "symfony/http-foundation": "^6.0", - "symfony/http-kernel": "^6.0", - "symfony/mailer": "^6.0", - "symfony/mime": "^6.0", - "symfony/process": "^6.0", - "symfony/routing": "^6.0", - "symfony/var-dumper": "^6.0", - "tijsverkoyen/css-to-inline-styles": "^2.2.2", - "vlucas/phpdotenv": "^5.4.1", - "voku/portable-ascii": "^2.0" - }, - "conflict": { - "tightenco/collect": "<5.5.33" - }, - "provide": { - "psr/container-implementation": "1.1|2.0", - "psr/simple-cache-implementation": "1.0|2.0|3.0" - }, - "replace": { - "illuminate/auth": "self.version", - "illuminate/broadcasting": "self.version", - "illuminate/bus": "self.version", - "illuminate/cache": "self.version", - "illuminate/collections": "self.version", - "illuminate/conditionable": "self.version", - "illuminate/config": "self.version", - "illuminate/console": "self.version", - "illuminate/container": "self.version", - "illuminate/contracts": "self.version", - "illuminate/cookie": "self.version", - "illuminate/database": "self.version", - "illuminate/encryption": "self.version", - "illuminate/events": "self.version", - "illuminate/filesystem": "self.version", - "illuminate/hashing": "self.version", - "illuminate/http": "self.version", - "illuminate/log": "self.version", - "illuminate/macroable": "self.version", - "illuminate/mail": "self.version", - "illuminate/notifications": "self.version", - "illuminate/pagination": "self.version", - "illuminate/pipeline": "self.version", - "illuminate/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": { - "aws/aws-sdk-php": "^3.198.1", - "doctrine/dbal": "^2.13.3|^3.1.4", - "fakerphp/faker": "^1.9.2", - "guzzlehttp/guzzle": "^7.2", - "league/flysystem-aws-s3-v3": "^3.0", - "league/flysystem-ftp": "^3.0", - "league/flysystem-sftp-v3": "^3.0", - "mockery/mockery": "^1.4.4", - "orchestra/testbench-core": "^7.0", - "pda/pheanstalk": "^4.0", - "phpstan/phpstan": "^1.0", - "phpunit/phpunit": "^9.5.8", - "predis/predis": "^1.1.9", - "symfony/amazon-mailer": "^6.0", - "symfony/cache": "^6.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.198.1).", - "brianium/paratest": "Required to run tests in parallel (^6.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", - "ext-bcmath": "Required to use the multiple_of validation rule.", - "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.", - "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.2).", - "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-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", - "mockery/mockery": "Required to use mocking (^1.4.4).", - "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).", - "predis/predis": "Required to use the predis connector (^1.1.9).", - "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.0).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^6.0).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.0).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.0).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.0).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.x-dev" - } - }, - "autoload": { - "files": [ - "src/Illuminate/Collections/helpers.php", - "src/Illuminate/Events/functions.php", - "src/Illuminate/Foundation/helpers.php", - "src/Illuminate/Support/helpers.php" - ], - "psr-4": { - "Illuminate\\": "src/Illuminate/", - "Illuminate\\Support\\": [ - "src/Illuminate/Macroable/", - "src/Illuminate/Collections/", - "src/Illuminate/Conditionable/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Laravel Framework.", - "homepage": "https://laravel.com", - "keywords": [ - "framework", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2022-02-09T15:00:05+00:00" - }, - { - "name": "laravel/sanctum", - "version": "v2.14.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/sanctum.git", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/0647a87140c7522e75826cffcadb3ad6e01f71e9", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/contracts": "^6.9|^7.0|^8.0|^9.0", - "illuminate/database": "^6.9|^7.0|^8.0|^9.0", - "illuminate/support": "^6.9|^7.0|^8.0|^9.0", - "php": "^7.2|^8.0" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0", - "phpunit/phpunit": "^8.0|^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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": "2022-01-12T15:07:43+00:00" - }, - { - "name": "laravel/serializable-closure", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/serializable-closure.git", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/65c9faf50d567b65d81764a44526545689e3fe63", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "pestphp/pest": "^1.18", - "phpstan/phpstan": "^0.12.98", - "symfony/var-dumper": "^5.3" - }, - "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": "2022-02-01T16:29:39+00:00" - }, - { - "name": "laravel/tinker", - "version": "v2.7.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/tinker.git", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/5f2f9815b7631b9f586a3de7933c25f9327d4073", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073", - "shasum": "" - }, - "require": { - "illuminate/console": "^6.0|^7.0|^8.0|^9.0", - "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.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", - "phpunit/phpunit": "^8.5.8|^9.3.3" - }, - "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.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.7.0" - }, - "time": "2022-01-10T08:52:49+00:00" - }, - { - "name": "league/commonmark", - "version": "2.2.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/commonmark.git", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "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.15" - }, - "require-dev": { - "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.0", - "commonmark/commonmark.js": "0.30.0", - "composer/package-versions-deprecated": "^1.8", - "erusev/parsedown": "^1.0", - "ext-json": "*", - "github/gfm": "0.29.0", - "michelf/php-markdown": "^1.4", - "phpstan/phpstan": "^0.12.88 || ^1.0.0", - "phpunit/phpunit": "^9.5.5", - "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", - "unleashedtech/php-coding-standard": "^3.1", - "vimeo/psalm": "^4.7.3" - }, - "suggest": { - "symfony/yaml": "v2.3+ required if using the Front Matter extension" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.3-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": "2022-01-25T14:37:33+00:00" - }, - { - "name": "league/config", - "version": "v1.1.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/config.git", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/config/zipball/a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^3.0.1", - "nette/schema": "^1.2", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.90", - "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": "2021-08-14T12:15:32+00:00" - }, - { - "name": "league/flysystem", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9f8b4260031bfef5497477da53dd57b2aaff0e06", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06", - "shasum": "" - }, - "require": { - "ext-json": "*", - "league/mime-type-detection": "^1.0.0", - "php": "^8.0.2" - }, - "conflict": { - "guzzlehttp/guzzle": "<7.0", - "guzzlehttp/ringphp": "<1.1.1", - "symfony/http-client": "<5.2" - }, - "require-dev": { - "async-aws/s3": "^1.5", - "async-aws/simple-s3": "^1.0", - "aws/aws-sdk-php": "^3.198.1", - "composer/semver": "^3.0", - "ext-fileinfo": "*", - "ext-ftp": "*", - "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.5", - "google/cloud-storage": "^1.23", - "phpseclib/phpseclib": "^2.0", - "phpstan/phpstan": "^0.12.26", - "phpunit/phpunit": "^9.5.11", - "sabre/dav": "^4.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.0.3" - }, - "funding": [ - { - "url": "https://offset.earth/frankdejonge", - "type": "custom" - }, - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2022-01-31T19:41:04+00:00" - }, - { - "name": "league/mime-type-detection", - "version": "1.9.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/aa70e813a6ad3d1558fc927863d47309b4c23e69", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.2", - "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" - }, - "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.9.0" - }, - "funding": [ - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2021-11-21T11:48:40+00:00" - }, - { - "name": "monolog/monolog", - "version": "2.3.5", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd4380d6fc37626e2f799f29d91195040137eba9", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "provide": { - "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7", - "graylog2/gelf-php": "^1.4.2", - "mongodb/mongodb": "^1.8", - "php-amqplib/php-amqplib": "~2.4 || ^3", - "php-console/php-console": "^3.1.3", - "phpspec/prophecy": "^1.6.1", - "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5", - "predis/predis": "^1.1", - "rollbar/rollbar": "^1.3", - "ruflin/elastica": ">=0.90@dev", - "swiftmailer/swiftmailer": "^5.3|^6.0" - }, - "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", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "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": "2.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/2.3.5" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" - } - ], - "time": "2021-10-01T21:08:31+00:00" - }, - { - "name": "nesbot/carbon", - "version": "2.56.0", - "source": { - "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1.8 || ^8.0", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "doctrine/dbal": "^2.0 || ^3.0", - "doctrine/orm": "^2.7", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "phpmd/phpmd": "^2.9", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.54 || ^1.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.14", - "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://opencollective.com/Carbon", - "type": "open_collective" - }, - { - "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", - "type": "tidelift" - } - ], - "time": "2022-01-21T17:08:38+00:00" - }, - { - "name": "nette/schema", - "version": "v1.2.2", - "source": { - "type": "git", - "url": "https://github.com/nette/schema.git", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/9a39cef03a5b34c7de64f551538cbba05c2be5df", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df", - "shasum": "" - }, - "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": ">=7.1 <8.2" - }, - "require-dev": { - "nette/tester": "^2.3 || ^2.4", - "phpstan/phpstan-nette": "^0.12", - "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.2" - }, - "time": "2021-10-15T11:40:02+00:00" - }, - { - "name": "nette/utils", - "version": "v3.2.7", - "source": { - "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/0af4e3de4df9f1543534beab255ccf459e7a2c99", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99", - "shasum": "" - }, - "require": { - "php": ">=7.2 <8.2" - }, - "conflict": { - "nette/di": "<3.0.6" - }, - "require-dev": { - "nette/tester": "~2.0", - "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.3" - }, - "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()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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 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/v3.2.7" - }, - "time": "2022-01-24T11:29:14+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.13.2", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", - "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.13.2" - }, - "time": "2021-11-30T19:35:32+00:00" - }, - { - "name": "phpoption/phpoption", - "version": "1.8.1", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-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.8.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", - "type": "tidelift" - } - ], - "time": "2021-12-04T23:24:31+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.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.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": "http://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/tree/master" - }, - "time": "2020-06-29T06:28:15+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.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": "http://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/master" - }, - "time": "2019-04-30T12:38:16+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.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": "http://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/master" - }, - "time": "2016-08-06T14:39: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.1", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "570292577277f06f590635381a7f761a6cf4f026" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/570292577277f06f590635381a7f761a6cf4f026", - "reference": "570292577277f06f590635381a7f761a6cf4f026", - "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" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "3.17.05.02" - }, - "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.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." - }, - "bin": [ - "bin/psysh" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "0.11.x-dev" - } - }, - "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.1" - }, - "time": "2022-01-03T13:58:38+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": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/ramsey/collection.git", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "shasum": "" - }, - "require": { - "php": "^7.3 || ^8", - "symfony/polyfill-php81": "^1.23" - }, - "require-dev": { - "captainhook/captainhook": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "ergebnis/composer-normalize": "^2.6", - "fakerphp/faker": "^1.5", - "hamcrest/hamcrest-php": "^2", - "jangregor/phpstan-prophecy": "^0.8", - "mockery/mockery": "^1.3", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1", - "phpstan/phpstan": "^0.12.32", - "phpstan/phpstan-mockery": "^0.12.5", - "phpstan/phpstan-phpunit": "^0.12.11", - "phpunit/phpunit": "^8.5 || ^9", - "psy/psysh": "^0.10.4", - "slevomat/coding-standard": "^6.3", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.4" - }, - "type": "library", - "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/1.2.2" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "time": "2021-10-10T03:01:02+00:00" - }, - { - "name": "ramsey/uuid", - "version": "4.2.3", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "shasum": "" - }, - "require": { - "brick/math": "^0.8 || ^0.9", - "ext-json": "*", - "php": "^7.2 || ^8.0", - "ramsey/collection": "^1.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php80": "^1.14" - }, - "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", - "moontoast/math": "^1.1", - "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.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-mockery": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^8.5 || ^9", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" - }, - "suggest": { - "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-ctype": "Enables faster processing of character classification using ctype functions.", - "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": { - "branch-alias": { - "dev-main": "4.x-dev" - }, - "captainhook": { - "force-install": true - } - }, - "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "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.2.3" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2021-09-25T23:10:38+00:00" - }, - { - "name": "symfony/console", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/22e8efd019c3270c4f79376234a3f8752cd25490", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.4|^6.0" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/css-selector", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/1955d595c12c111629cc814d3f2a2ff13580508a", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a", - "shasum": "" - }, - "require": { - "php": ">=8.0.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/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-11-01T23:48:49+00:00" - }, - { - "name": "symfony/error-handler", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/20343b3bad7ebafa38138ddcb97290a24722b57b", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" - }, - "bin": [ - "Resources/bin/patch-type-declarations" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to manage errors and ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6472ea2dd415e925b90ca82be64b8bc6157f3934", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/event-dispatcher-contracts": "^2|^3" - }, - "conflict": { - "symfony/dependency-injection": "<5.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^5.4|^6.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/aa5422287b75594b90ee9cd807caf8f0df491385", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/event-dispatcher": "^1" - }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-07-15T12:33:35+00:00" - }, - { - "name": "symfony/finder", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/8661b74dbabc23223f38c9b99d3f8ade71170430", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ad157299ced81a637fade1efcadd688d6deba5c1", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1" - }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/cache": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0" - }, - "suggest": { - "symfony/mime": "To use the file extension guesser" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v6.0.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/error-handler": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", - "symfony/twig-bridge": "<5.4", - "symfony/validator": "<5.4", - "twig/twig": "<2.13" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/process": "^5.4|^6.0", - "symfony/routing": "^5.4|^6.0", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-29T18:12:46+00:00" - }, - { - "name": "symfony/mailer", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mailer.git", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "shasum": "" - }, - "require": { - "egulias/email-validator": "^2.1.10|^3", - "php": ">=8.0.2", - "psr/event-dispatcher": "^1", - "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3" - }, - "conflict": { - "symfony/http-kernel": "<5.4" - }, - "require-dev": { - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/messenger": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/mime", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/2cd9601efd040e56f43360daa68f3c6b0534923a", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "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" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "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.24.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": "2021-10-20T20:35:02+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-11-23T21:10:46+00:00" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44", - "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.23-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.24.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": "2021-09-14T14:02:44+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.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": "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.24.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": "2021-11-30T18:21:41+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-05-27T09:17:38+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:33+00:00" - }, - { - "name": "symfony/polyfill-php81", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:11+00:00" - }, - { - "name": "symfony/process", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/298ed357274c1868c20a0061df256a1250a6c4af", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/routing", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/yaml": "<5.4" - }, - "require-dev": { - "doctrine/annotations": "^1.12", - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/36715ebf9fb9db73db0cb24263c79077c6fe8603", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/container": "^2.0" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "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.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": "2021-11-04T17:53:12+00:00" - }, - { - "name": "symfony/string", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/522144f0c4c004c80d56fa47e40e17028e2eefc2", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.0" - }, - "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/translation-contracts": "^2.0|^3.0", - "symfony/var-exporter": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "files": [ - "Resources/functions.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 an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/translation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/71bb15335798f8c4da110911bcf2d2fead7a430d", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.3|^3.0" - }, - "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" - }, - "provide": { - "symfony/translation-implementation": "2.3|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-07T00:29:03+00:00" - }, - { - "name": "symfony/translation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "suggest": { - "symfony/translation-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - } - }, - "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.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": "2021-09-07T12:43:40+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7b701676fc64f9ef11f9b4870f16b48f66be4834", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<5.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-17T16:30:44+00:00" - }, - { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.4", - "source": { - "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" - } - ], - "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", - "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "support": { - "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" - }, - "time": "2021-12-08T09:12:39+00:00" - }, - { - "name": "vlucas/phpdotenv", - "version": "v5.4.1", - "source": { - "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", - "shasum": "" - }, - "require": { - "ext-pcre": "*", - "graham-campbell/result-type": "^1.0.2", - "php": "^7.1.3 || ^8.0", - "phpoption/phpoption": "^1.8", - "symfony/polyfill-ctype": "^1.23", - "symfony/polyfill-mbstring": "^1.23.1", - "symfony/polyfill-php80": "^1.23.1" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" - }, - "suggest": { - "ext-filter": "Required to use the boolean validator." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.4-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.4.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", - "type": "tidelift" - } - ], - "time": "2021-12-12T23:22:04+00:00" - }, - { - "name": "voku/portable-ascii", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/voku/portable-ascii.git", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/9bd89e83cecdf8c37b64909454249eaed98b2c89", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89", - "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.0" - }, - "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-01-24T18:59:03+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "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.10.0" - }, - "time": "2021-03-09T10:59:23+00:00" - } - ], - "packages-dev": [ - { - "name": "doctrine/instantiator", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.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%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2020-11-10T18:47:58+00:00" - }, - { - "name": "facade/ignition-contracts", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/facade/ignition-contracts.git", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^v2.15.8", - "phpunit/phpunit": "^9.3.11", - "vimeo/psalm": "^3.17.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Facade\\IgnitionContracts\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://flareapp.io", - "role": "Developer" - } - ], - "description": "Solution contracts for Ignition", - "homepage": "https://github.com/facade/ignition-contracts", - "keywords": [ - "contracts", - "flare", - "ignition" - ], - "support": { - "issues": "https://github.com/facade/ignition-contracts/issues", - "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" - }, - "time": "2020-10-16T08:27:54+00:00" - }, - { - "name": "fakerphp/faker", - "version": "v1.19.0", - "source": { - "type": "git", - "url": "https://github.com/FakerPHP/Faker.git", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^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": "*", - "symfony/phpunit-bridge": "^4.4 || ^5.2" - }, - "suggest": { - "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", - "ext-curl": "Required by Faker\\Provider\\Image to download images.", - "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", - "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.19-dev" - } - }, - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "François Zaninotto" - } - ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], - "support": { - "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0" - }, - "time": "2022-02-02T17:38:57+00:00" - }, - { - "name": "filp/whoops", - "version": "2.14.5", - "source": { - "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "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.14.5" - }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "time": "2022-01-07T12:00:00+00:00" - }, - { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "shasum": "" - }, - "require": { - "php": "^5.3|^7.0|^8.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" - }, - "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "classmap": [ - "hamcrest" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "This is the PHP port of Hamcrest Matchers", - "keywords": [ - "test" - ], - "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" - }, - "time": "2020-07-09T08:09:16+00:00" - }, - { - "name": "laravel/sail", - "version": "v1.13.2", - "source": { - "type": "git", - "url": "https://github.com/laravel/sail.git", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.0|^9.0", - "illuminate/contracts": "^8.0|^9.0", - "illuminate/support": "^8.0|^9.0", - "php": "^7.3|^8.0" - }, - "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": "2022-02-08T14:14:12+00:00" - }, - { - "name": "mockery/mockery", - "version": "1.5.0", - "source": { - "type": "git", - "url": "https://github.com/mockery/mockery.git", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "shasum": "" - }, - "require": { - "hamcrest/hamcrest-php": "^2.0.1", - "lib-pcre": ">=7.0", - "php": "^7.3 || ^8.0" - }, - "conflict": { - "phpunit/phpunit": "<8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-0": { - "Mockery": "library/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" - } - ], - "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": { - "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.5.0" - }, - "time": "2022-01-20T13:18:17+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.10.2", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "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.10.2" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2020-11-13T09:40:50+00:00" - }, - { - "name": "nunomaduro/collision", - "version": "v6.1.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/collision.git", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "shasum": "" - }, - "require": { - "facade/ignition-contracts": "^1.0.2", - "filp/whoops": "^2.14.5", - "php": "^8.0.0", - "symfony/console": "^6.0.2" - }, - "require-dev": { - "brianium/paratest": "^6.4.1", - "laravel/framework": "^9.0", - "nunomaduro/larastan": "^1.0.2", - "nunomaduro/mock-final-classes": "^1.1.0", - "orchestra/testbench": "^7.0.0", - "phpunit/phpunit": "^9.5.11" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "6.x-dev" - }, - "laravel": { - "providers": [ - "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" - ] - } - }, - "autoload": { - "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": "2022-01-18T17:49:08+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.1.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/15a90844ad40f127afd244c0cad228de2a80052a", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a", - "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.1.1" - }, - "time": "2022-02-07T21:56:48+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.6.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "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.6.0" - }, - "time": "2022-01-04T19:58:01+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" - }, - "time": "2021-12-08T12:19:24+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "9.2.10", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d5850aaf931743067f4bfc1ae4cbd06468400687", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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 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", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.10" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-05T09:12:13+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "3.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-02T12:48:52+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "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/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:58:55+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T05:33:50+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.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/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:16:10+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "9.5.13", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/597cb647654ede35e43b137926dfdfef0fb11743", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.3.1", - "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": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.7", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", - "sebastian/version": "^3.0.2" - }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.13" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-01-24T07:33:35+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:08:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "1.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:08:54+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:30:19+00:00" - }, - { - "name": "sebastian/comparator", - "version": "4.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:49:45+00:00" - }, - { - "name": "sebastian/complexity", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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 calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:52:27+00:00" - }, - { - "name": "sebastian/diff", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:10:38+00:00" - }, - { - "name": "sebastian/environment", - "version": "5.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-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": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:52:38+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "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", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-11-11T14:18:36+00:00" - }, - { - "name": "sebastian/global-state", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-11T13:31:12+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-28T06:42:11+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "http://www.github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:17:30+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:45:17+00:00" - }, - { - "name": "sebastian/type", - "version": "2.3.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-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/2.3.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-15T12:49:02+00:00" - }, - { - "name": "sebastian/version", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:39:44+00:00" - }, - { - "name": "spatie/backtrace", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/backtrace.git", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "ext-json": "*", - "phpunit/phpunit": "^9.3", - "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": { - "issues": "https://github.com/spatie/backtrace/issues", - "source": "https://github.com/spatie/backtrace/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/sponsors/spatie", - "type": "github" - }, - { - "url": "https://spatie.be/open-source/support-us", - "type": "other" - } - ], - "time": "2021-11-09T10:57:15+00:00" - }, - { - "name": "spatie/flare-client-php", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/flare-client-php.git", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "shasum": "" - }, - "require": { - "illuminate/pipeline": "^8.0|^9.0", - "php": "^8.0", - "spatie/backtrace": "^1.2", - "symfony/http-foundation": "^5.0|^6.0", - "symfony/mime": "^5.2|^6.0", - "symfony/process": "^5.2|^6.0", - "symfony/var-dumper": "^5.2|^6.0" - }, - "require-dev": { - "dms/phpunit-arraysubset-asserts": "^0.3.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/phpunit-snapshot-assertions": "^4.0" - }, - "type": "library", - "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.0.1" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2022-02-04T15:21:00+00:00" - }, - { - "name": "spatie/ignition", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/spatie/ignition.git", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/d2d5ba823af3004268556e87dfc94449e4159f5a", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "monolog/monolog": "^2.0", - "php": "^8.0", - "spatie/flare-client-php": "^1.0", - "symfony/console": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "mockery/mockery": "^1.4", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/ray": "^1.32", - "symfony/process": "^5.4|^6.0" - }, - "type": "library", - "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": "2022-01-19T12:57:41+00:00" - }, - { - "name": "spatie/laravel-ignition", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/68250225a9f83b086462c2af1b1139dfde48fbd2", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*", - "illuminate/support": "^8.77|^9.0", - "monolog/monolog": "^2.3", - "php": "^8.0", - "spatie/flare-client-php": "^1.0.1", - "spatie/ignition": "^1.0", - "symfony/console": "^5.0|^6.0", - "symfony/var-dumper": "^5.0|^6.0" - }, - "require-dev": { - "filp/whoops": "^2.14", - "livewire/livewire": "^2.8|dev-develop", - "mockery/mockery": "^1.4", - "nunomaduro/larastan": "^1.0", - "orchestra/testbench": "^6.23|^7.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/laravel-ray": "^1.27" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Spatie\\LaravelIgnition\\IgnitionServiceProvider" - ], - "aliases": { - "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" - } - } - }, - "autoload": { - "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": "2022-02-04T15:25:56+00:00" - }, - { - "name": "squizlabs/php_codesniffer", - "version": "3.6.2", - "source": { - "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", - "shasum": "" - }, - "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.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": "lead" - } - ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", - "keywords": [ - "phpcs", - "standards" - ], - "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" - }, - "time": "2021-12-12T21:44:58+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2021-07-28T10:34:58+00:00" - } - ], - "aliases": [], - "minimum-stability": "dev", - "stability-flags": [], - "prefer-stable": true, - "prefer-lowest": false, - "platform": { - "php": "^8.0" - }, - "platform-dev": [], - "plugin-api-version": "2.1.0" -} diff --git a/Chapter16/onlineStore/config/app.php b/Chapter16/onlineStore/config/app.php deleted file mode 100644 index 1941d7c..0000000 --- a/Chapter16/onlineStore/config/app.php +++ /dev/null @@ -1,197 +0,0 @@ - env('APP_NAME', 'Laravel'), - - /* - |-------------------------------------------------------------------------- - | Application Environment - |-------------------------------------------------------------------------- - | - | This value determines the "environment" your application is currently - | running in. This may determine how you prefer to configure various - | services the application utilizes. Set this in your ".env" file. - | - */ - - 'env' => env('APP_ENV', 'production'), - - /* - |-------------------------------------------------------------------------- - | Application Debug Mode - |-------------------------------------------------------------------------- - | - | When your application is in debug mode, detailed error messages with - | stack traces will be shown on every error that occurs within your - | application. If disabled, a simple generic error page is shown. - | - */ - - 'debug' => (bool) env('APP_DEBUG', false), - - /* - |-------------------------------------------------------------------------- - | Application URL - |-------------------------------------------------------------------------- - | - | This URL is used by the console to properly generate URLs when using - | the Artisan command line tool. You should set this to the root of - | your application so that it is used when running Artisan tasks. - | - */ - - 'url' => env('APP_URL', 'http://localhost'), - - 'asset_url' => env('ASSET_URL', null), - - /* - |-------------------------------------------------------------------------- - | 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', - - /* - |-------------------------------------------------------------------------- - | 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' => [ - - /* - * Laravel Framework Service Providers... - */ - Illuminate\Auth\AuthServiceProvider::class, - Illuminate\Broadcasting\BroadcastServiceProvider::class, - Illuminate\Bus\BusServiceProvider::class, - Illuminate\Cache\CacheServiceProvider::class, - Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, - Illuminate\Cookie\CookieServiceProvider::class, - Illuminate\Database\DatabaseServiceProvider::class, - Illuminate\Encryption\EncryptionServiceProvider::class, - Illuminate\Filesystem\FilesystemServiceProvider::class, - Illuminate\Foundation\Providers\FoundationServiceProvider::class, - Illuminate\Hashing\HashServiceProvider::class, - Illuminate\Mail\MailServiceProvider::class, - Illuminate\Notifications\NotificationServiceProvider::class, - Illuminate\Pagination\PaginationServiceProvider::class, - Illuminate\Pipeline\PipelineServiceProvider::class, - Illuminate\Queue\QueueServiceProvider::class, - Illuminate\Redis\RedisServiceProvider::class, - Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, - Illuminate\Session\SessionServiceProvider::class, - Illuminate\Translation\TranslationServiceProvider::class, - Illuminate\Validation\ValidationServiceProvider::class, - Illuminate\View\ViewServiceProvider::class, - - /* - * 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, - - ], - - /* - |-------------------------------------------------------------------------- - | 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([ - // ... - ])->toArray(), - -]; diff --git a/Chapter16/onlineStore/config/auth.php b/Chapter16/onlineStore/config/auth.php deleted file mode 100644 index d8c6cee..0000000 --- a/Chapter16/onlineStore/config/auth.php +++ /dev/null @@ -1,111 +0,0 @@ - [ - '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 expire 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. - | - */ - - 'passwords' => [ - 'users' => [ - 'provider' => 'users', - 'table' => 'password_resets', - '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/Chapter16/onlineStore/config/broadcasting.php b/Chapter16/onlineStore/config/broadcasting.php deleted file mode 100644 index 67fcbbd..0000000 --- a/Chapter16/onlineStore/config/broadcasting.php +++ /dev/null @@ -1,67 +0,0 @@ - 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'), - 'useTLS' => true, - ], - '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/Chapter16/onlineStore/config/cache.php b/Chapter16/onlineStore/config/cache.php deleted file mode 100644 index 8736c7a..0000000 --- a/Chapter16/onlineStore/config/cache.php +++ /dev/null @@ -1,110 +0,0 @@ - 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'), - ], - - '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 a RAM based store such as APC or Memcached, there might - | be other applications utilizing the same cache. So, we'll specify a - | value to get prefixed to all our keys so we can avoid collisions. - | - */ - - 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'), - -]; diff --git a/Chapter16/onlineStore/config/cors.php b/Chapter16/onlineStore/config/cors.php deleted file mode 100644 index 8a39e6d..0000000 --- a/Chapter16/onlineStore/config/cors.php +++ /dev/null @@ -1,34 +0,0 @@ - ['api/*', 'sanctum/csrf-cookie'], - - 'allowed_methods' => ['*'], - - 'allowed_origins' => ['*'], - - 'allowed_origins_patterns' => [], - - 'allowed_headers' => ['*'], - - 'exposed_headers' => [], - - 'max_age' => 0, - - 'supports_credentials' => false, - -]; diff --git a/Chapter16/onlineStore/config/database.php b/Chapter16/onlineStore/config/database.php deleted file mode 100644 index 0faebae..0000000 --- a/Chapter16/onlineStore/config/database.php +++ /dev/null @@ -1,147 +0,0 @@ - env('DB_CONNECTION', 'mysql'), - - /* - |-------------------------------------------------------------------------- - | Database Connections - |-------------------------------------------------------------------------- - | - | Here are each of the database connections setup for your application. - | Of course, examples of configuring each database platform that is - | supported by Laravel is shown below to make development simple. - | - | - | All database work in Laravel is done through the PHP PDO facilities - | so make sure you have the driver for your particular database of - | choice installed on your machine before you begin development. - | - */ - - 'connections' => [ - - 'sqlite' => [ - 'driver' => 'sqlite', - 'url' => env('DATABASE_URL'), - 'database' => env('DB_DATABASE', database_path('database.sqlite')), - 'prefix' => '', - 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), - ], - - 'mysql' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '3306'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'unix_socket' => env('DB_SOCKET', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - 'pgsql' => [ - 'driver' => 'pgsql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '5432'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - 'search_path' => 'public', - 'sslmode' => 'prefer', - ], - - 'sqlsrv' => [ - 'driver' => 'sqlsrv', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', 'localhost'), - 'port' => env('DB_PORT', '1433'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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'), - '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'), - 'password' => env('REDIS_PASSWORD'), - 'port' => env('REDIS_PORT', '6379'), - 'database' => env('REDIS_CACHE_DB', '1'), - ], - - ], - -]; diff --git a/Chapter16/onlineStore/config/filesystems.php b/Chapter16/onlineStore/config/filesystems.php deleted file mode 100644 index cf5abce..0000000 --- a/Chapter16/onlineStore/config/filesystems.php +++ /dev/null @@ -1,73 +0,0 @@ - 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 setup for each driver as an example of the required options. - | - | Supported Drivers: "local", "ftp", "sftp", "s3" - | - */ - - 'disks' => [ - - 'local' => [ - 'driver' => 'local', - 'root' => storage_path('app'), - ], - - 'public' => [ - 'driver' => 'local', - 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', - 'visibility' => 'public', - ], - - '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), - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter16/onlineStore/config/hashing.php b/Chapter16/onlineStore/config/hashing.php deleted file mode 100644 index bcd3be4..0000000 --- a/Chapter16/onlineStore/config/hashing.php +++ /dev/null @@ -1,52 +0,0 @@ - '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/Chapter16/onlineStore/config/logging.php b/Chapter16/onlineStore/config/logging.php deleted file mode 100644 index fefe088..0000000 --- a/Chapter16/onlineStore/config/logging.php +++ /dev/null @@ -1,119 +0,0 @@ - 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' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), - - /* - |-------------------------------------------------------------------------- - | 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'), - ], - - 'daily' => [ - 'driver' => 'daily', - 'path' => storage_path('logs/laravel.log'), - 'level' => env('LOG_LEVEL', 'debug'), - 'days' => 14, - ], - - 'slack' => [ - 'driver' => 'slack', - 'url' => env('LOG_SLACK_WEBHOOK_URL'), - 'username' => 'Laravel Log', - 'emoji' => ':boom:', - 'level' => env('LOG_LEVEL', 'critical'), - ], - - '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'), - ], - ], - - 'stderr' => [ - 'driver' => 'monolog', - 'level' => env('LOG_LEVEL', 'debug'), - 'handler' => StreamHandler::class, - 'formatter' => env('LOG_STDERR_FORMATTER'), - 'with' => [ - 'stream' => 'php://stderr', - ], - ], - - 'syslog' => [ - 'driver' => 'syslog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'errorlog' => [ - 'driver' => 'errorlog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'null' => [ - 'driver' => 'monolog', - 'handler' => NullHandler::class, - ], - - 'emergency' => [ - 'path' => storage_path('logs/laravel.log'), - ], - ], - -]; diff --git a/Chapter16/onlineStore/config/mail.php b/Chapter16/onlineStore/config/mail.php deleted file mode 100644 index 87b6fe3..0000000 --- a/Chapter16/onlineStore/config/mail.php +++ /dev/null @@ -1,117 +0,0 @@ - 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", - | "postmark", "log", "array", "failover" - | - */ - - 'mailers' => [ - 'smtp' => [ - 'transport' => 'smtp', - '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, - ], - - 'ses' => [ - 'transport' => 'ses', - ], - - 'mailgun' => [ - 'transport' => 'mailgun', - ], - - 'postmark' => [ - 'transport' => 'postmark', - ], - - 'sendmail' => [ - 'transport' => 'sendmail', - 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -t -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/Chapter16/onlineStore/config/queue.php b/Chapter16/onlineStore/config/queue.php deleted file mode 100644 index 25ea5a8..0000000 --- a/Chapter16/onlineStore/config/queue.php +++ /dev/null @@ -1,93 +0,0 @@ - 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, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter16/onlineStore/config/sanctum.php b/Chapter16/onlineStore/config/sanctum.php deleted file mode 100644 index 9281c92..0000000 --- a/Chapter16/onlineStore/config/sanctum.php +++ /dev/null @@ -1,65 +0,0 @@ - explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( - '%s%s', - 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', - env('APP_URL') ? ','.parse_url(env('APP_URL'), PHP_URL_HOST) : '' - ))), - - /* - |-------------------------------------------------------------------------- - | 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/Chapter16/onlineStore/config/services.php b/Chapter16/onlineStore/config/services.php deleted file mode 100644 index 2a1d616..0000000 --- a/Chapter16/onlineStore/config/services.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - 'domain' => env('MAILGUN_DOMAIN'), - 'secret' => env('MAILGUN_SECRET'), - 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), - ], - - '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/Chapter16/onlineStore/config/session.php b/Chapter16/onlineStore/config/session.php deleted file mode 100644 index 8fed97c..0000000 --- a/Chapter16/onlineStore/config/session.php +++ /dev/null @@ -1,201 +0,0 @@ - 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/Chapter16/onlineStore/config/view.php b/Chapter16/onlineStore/config/view.php deleted file mode 100644 index 22b8a18..0000000 --- a/Chapter16/onlineStore/config/view.php +++ /dev/null @@ -1,36 +0,0 @@ - [ - 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/Chapter16/onlineStore/database/.gitignore b/Chapter16/onlineStore/database/.gitignore deleted file mode 100644 index 9b19b93..0000000 --- a/Chapter16/onlineStore/database/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.sqlite* diff --git a/Chapter16/onlineStore/database/factories/UserFactory.php b/Chapter16/onlineStore/database/factories/UserFactory.php deleted file mode 100644 index d6ca926..0000000 --- a/Chapter16/onlineStore/database/factories/UserFactory.php +++ /dev/null @@ -1,42 +0,0 @@ - - */ -class UserFactory extends Factory -{ - /** - * Define the model's default state. - * - * @return array - */ - public function definition() - { - return [ - 'name' => $this->faker->name(), - 'email' => $this->faker->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. - * - * @return \Illuminate\Database\Eloquent\Factories\Factory - */ - public function unverified() - { - return $this->state(function (array $attributes) { - return [ - 'email_verified_at' => null, - ]; - }); - } -} diff --git a/Chapter16/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php b/Chapter16/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php deleted file mode 100644 index cf6b776..0000000 --- a/Chapter16/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->string('name'); - $table->string('email')->unique(); - $table->timestamp('email_verified_at')->nullable(); - $table->string('password'); - $table->rememberToken(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('users'); - } -}; diff --git a/Chapter16/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php b/Chapter16/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php deleted file mode 100644 index fcacb80..0000000 --- a/Chapter16/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php +++ /dev/null @@ -1,32 +0,0 @@ -string('email')->index(); - $table->string('token'); - $table->timestamp('created_at')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('password_resets'); - } -}; diff --git a/Chapter16/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/Chapter16/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php deleted file mode 100644 index 1719198..0000000 --- a/Chapter16/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php +++ /dev/null @@ -1,36 +0,0 @@ -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. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('failed_jobs'); - } -}; diff --git a/Chapter16/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/Chapter16/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php deleted file mode 100644 index fd235f8..0000000 --- a/Chapter16/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->morphs('tokenable'); - $table->string('name'); - $table->string('token', 64)->unique(); - $table->text('abilities')->nullable(); - $table->timestamp('last_used_at')->nullable(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('personal_access_tokens'); - } -}; diff --git a/Chapter16/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php b/Chapter16/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php deleted file mode 100644 index 2eecdc2..0000000 --- a/Chapter16/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php +++ /dev/null @@ -1,35 +0,0 @@ -id(); - $table->string('name'); - $table->text('description'); - $table->string('image'); - $table->integer('price'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('products'); - } -}; diff --git a/Chapter16/onlineStore/database/seeders/DatabaseSeeder.php b/Chapter16/onlineStore/database/seeders/DatabaseSeeder.php deleted file mode 100644 index 71f673f..0000000 --- a/Chapter16/onlineStore/database/seeders/DatabaseSeeder.php +++ /dev/null @@ -1,19 +0,0 @@ -create(); - } -} diff --git a/Chapter16/onlineStore/lang/en.json b/Chapter16/onlineStore/lang/en.json deleted file mode 100644 index 577680d..0000000 --- a/Chapter16/onlineStore/lang/en.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "The :attribute must contain at least one letter.": "The :attribute must contain at least one letter.", - "The :attribute must contain at least one number.": "The :attribute must contain at least one number.", - "The :attribute must contain at least one symbol.": "The :attribute must contain at least one symbol.", - "The :attribute must contain at least one uppercase and one lowercase letter.": "The :attribute must contain at least one uppercase and one lowercase letter.", - "The given :attribute has appeared in a data leak. Please choose a different :attribute.": "The given :attribute has appeared in a data leak. Please choose a different :attribute." -} diff --git a/Chapter16/onlineStore/lang/en/auth.php b/Chapter16/onlineStore/lang/en/auth.php deleted file mode 100644 index 6598e2c..0000000 --- a/Chapter16/onlineStore/lang/en/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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/Chapter16/onlineStore/lang/en/pagination.php b/Chapter16/onlineStore/lang/en/pagination.php deleted file mode 100644 index d481411..0000000 --- a/Chapter16/onlineStore/lang/en/pagination.php +++ /dev/null @@ -1,19 +0,0 @@ - '« Previous', - 'next' => 'Next »', - -]; diff --git a/Chapter16/onlineStore/lang/en/passwords.php b/Chapter16/onlineStore/lang/en/passwords.php deleted file mode 100644 index 2345a56..0000000 --- a/Chapter16/onlineStore/lang/en/passwords.php +++ /dev/null @@ -1,22 +0,0 @@ - '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/Chapter16/onlineStore/lang/en/validation.php b/Chapter16/onlineStore/lang/en/validation.php deleted file mode 100644 index 783003c..0000000 --- a/Chapter16/onlineStore/lang/en/validation.php +++ /dev/null @@ -1,163 +0,0 @@ - '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' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - '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' => [ - 'numeric' => 'The :attribute must be greater than :value.', - 'file' => 'The :attribute must be greater than :value kilobytes.', - 'string' => 'The :attribute must be greater than :value characters.', - 'array' => 'The :attribute must have more than :value items.', - ], - 'gte' => [ - 'numeric' => 'The :attribute must be greater than or equal to :value.', - 'file' => 'The :attribute must be greater than or equal to :value kilobytes.', - 'string' => 'The :attribute must be greater than or equal to :value characters.', - 'array' => 'The :attribute must have :value items or more.', - ], - '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' => [ - 'numeric' => 'The :attribute must be less than :value.', - 'file' => 'The :attribute must be less than :value kilobytes.', - 'string' => 'The :attribute must be less than :value characters.', - 'array' => 'The :attribute must have less than :value items.', - ], - 'lte' => [ - 'numeric' => 'The :attribute must be less than or equal to :value.', - 'file' => 'The :attribute must be less than or equal to :value kilobytes.', - 'string' => 'The :attribute must be less than or equal to :value characters.', - 'array' => 'The :attribute must not have more than :value items.', - ], - 'mac_address' => 'The :attribute must be a valid MAC address.', - 'max' => [ - 'numeric' => 'The :attribute must not be greater than :max.', - 'file' => 'The :attribute must not be greater than :max kilobytes.', - 'string' => 'The :attribute must not be greater than :max characters.', - 'array' => 'The :attribute must not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - '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.', - 'password' => 'The password is incorrect.', - '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' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - '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/Chapter16/onlineStore/package.json b/Chapter16/onlineStore/package.json deleted file mode 100644 index 7a9aecd..0000000 --- a/Chapter16/onlineStore/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "private": true, - "scripts": { - "dev": "npm run development", - "development": "mix", - "watch": "mix watch", - "watch-poll": "mix watch -- --watch-options-poll=1000", - "hot": "mix watch --hot", - "prod": "npm run production", - "production": "mix --production" - }, - "devDependencies": { - "axios": "^0.25", - "laravel-mix": "^6.0.6", - "lodash": "^4.17.19", - "postcss": "^8.1.14" - } -} diff --git a/Chapter16/onlineStore/phpcs.xml b/Chapter16/onlineStore/phpcs.xml deleted file mode 100644 index a1cf2b6..0000000 --- a/Chapter16/onlineStore/phpcs.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - The coding standard for the Online Store project - - app/ - config/ - database/ - routes/ - */migrations/* - diff --git a/Chapter16/onlineStore/phpunit.xml b/Chapter16/onlineStore/phpunit.xml deleted file mode 100644 index 2ac86a1..0000000 --- a/Chapter16/onlineStore/phpunit.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - ./tests/Unit - - - ./tests/Feature - - - - - ./app - - - - - - - - - - - - - - diff --git a/Chapter16/onlineStore/public/.htaccess b/Chapter16/onlineStore/public/.htaccess deleted file mode 100644 index 3aec5e2..0000000 --- a/Chapter16/onlineStore/public/.htaccess +++ /dev/null @@ -1,21 +0,0 @@ - - - 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/Chapter16/onlineStore/public/css/admin.css b/Chapter16/onlineStore/public/css/admin.css deleted file mode 100644 index d9495a1..0000000 --- a/Chapter16/onlineStore/public/css/admin.css +++ /dev/null @@ -1,33 +0,0 @@ -.copyright { - background-color: #1a252f; -} - -.fixed { - -ms-flex: 0 0 250px; - flex: 0 0 250px; -} - -.content-grey { - background-color: #f8f9fc; -} - -hr { - margin-top: 0.8em; - margin-bottom: 0.8em; -} - -.img-profile { - height: 2rem; - width: 2rem; -} - -.profile-font { - color: #858796 !important; - font-size: 80%; - font-weight: 400; -} - -.card-header { - background-color: #f8f9fc; - border-bottom: 1px solid #e3e6f0; -} diff --git a/Chapter16/onlineStore/public/css/app.css b/Chapter16/onlineStore/public/css/app.css deleted file mode 100644 index cabac36..0000000 --- a/Chapter16/onlineStore/public/css/app.css +++ /dev/null @@ -1,20 +0,0 @@ -.bg-secondary { - background-color: #2c3e50 !important; -} - -.copyright { - background-color: #1a252f; -} - -.bg-primary { - background-color: #1abc9c !important; -} - -nav{ - font-weight: 700; -} - -.img-card{ - height: 18vw; - object-fit: cover; -} diff --git a/Chapter16/onlineStore/public/favicon.ico b/Chapter16/onlineStore/public/favicon.ico deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter16/onlineStore/public/img/game.png b/Chapter16/onlineStore/public/img/game.png deleted file mode 100644 index 85420e8bbc16098bf26b4ee63bde0e91a19d1f2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25896 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 cz>% diff --git a/Chapter16/onlineStore/public/img/safe.png b/Chapter16/onlineStore/public/img/safe.png deleted file mode 100644 index 445942c707af53210931f9f4f99f6d3cb69e5d89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19240 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
    w==XB0?3|p=#`o%NsudE(E-U#KS3Snw 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 o>ir+C;RN10sIS0&a;p - - - - - - - - - - - - - - - - - - diff --git a/Chapter16/onlineStore/public/index.php b/Chapter16/onlineStore/public/index.php deleted file mode 100644 index 1d69f3a..0000000 --- a/Chapter16/onlineStore/public/index.php +++ /dev/null @@ -1,55 +0,0 @@ -make(Kernel::class); - -$response = $kernel->handle( - $request = Request::capture() -)->send(); - -$kernel->terminate($request, $response); diff --git a/Chapter16/onlineStore/public/robots.txt b/Chapter16/onlineStore/public/robots.txt deleted file mode 100644 index eb05362..0000000 --- a/Chapter16/onlineStore/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: diff --git a/Chapter16/onlineStore/resources/css/app.css b/Chapter16/onlineStore/resources/css/app.css deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter16/onlineStore/resources/js/app.js b/Chapter16/onlineStore/resources/js/app.js deleted file mode 100644 index 40c55f6..0000000 --- a/Chapter16/onlineStore/resources/js/app.js +++ /dev/null @@ -1 +0,0 @@ -require('./bootstrap'); diff --git a/Chapter16/onlineStore/resources/js/bootstrap.js b/Chapter16/onlineStore/resources/js/bootstrap.js deleted file mode 100644 index 6922577..0000000 --- a/Chapter16/onlineStore/resources/js/bootstrap.js +++ /dev/null @@ -1,28 +0,0 @@ -window._ = require('lodash'); - -/** - * 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 = require('axios'); - -window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; - -/** - * 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'; - -// window.Pusher = require('pusher-js'); - -// window.Echo = new Echo({ -// broadcaster: 'pusher', -// key: process.env.MIX_PUSHER_APP_KEY, -// cluster: process.env.MIX_PUSHER_APP_CLUSTER, -// forceTLS: true -// }); diff --git a/Chapter16/onlineStore/resources/views/admin/home/index.blade.php b/Chapter16/onlineStore/resources/views/admin/home/index.blade.php deleted file mode 100644 index a2b4868..0000000 --- a/Chapter16/onlineStore/resources/views/admin/home/index.blade.php +++ /dev/null @@ -1,12 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
    -
    - Admin Panel - Home Page -
    -
    - Welcome to the Admin Panel, use the sidebar to navigate between the different options. -
    -
    -@endsection diff --git a/Chapter16/onlineStore/resources/views/admin/product/index.blade.php b/Chapter16/onlineStore/resources/views/admin/product/index.blade.php deleted file mode 100644 index e3e4fb2..0000000 --- a/Chapter16/onlineStore/resources/views/admin/product/index.blade.php +++ /dev/null @@ -1,31 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
    -
    - Manage Products -
    -
    - - - - - - - - - - - @foreach ($viewData["products"] as $product) - - - - - - - @endforeach - -
    IDNameEditDelete
    {{ $product->getId() }}{{ $product->getName() }}EditDelete
    -
    -
    -@endsection diff --git a/Chapter16/onlineStore/resources/views/home/about.blade.php b/Chapter16/onlineStore/resources/views/home/about.blade.php deleted file mode 100644 index f79abf3..0000000 --- a/Chapter16/onlineStore/resources/views/home/about.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    -
    -
    -

    {{ $viewData["description"] }}

    -
    -
    -

    {{ $viewData["author"] }}

    -
    -
    -
    -@endsection diff --git a/Chapter16/onlineStore/resources/views/home/index.blade.php b/Chapter16/onlineStore/resources/views/home/index.blade.php deleted file mode 100644 index 1affb20..0000000 --- a/Chapter16/onlineStore/resources/views/home/index.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('content') -
    -
    - -
    -
    - -
    -
    - -
    -
    -@endsection diff --git a/Chapter16/onlineStore/resources/views/layouts/admin.blade.php b/Chapter16/onlineStore/resources/views/layouts/admin.blade.php deleted file mode 100644 index a1a1d57..0000000 --- a/Chapter16/onlineStore/resources/views/layouts/admin.blade.php +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - @yield('title', 'Admin - Online Store') - - - -
    - - - -
    - - -
    - @yield('content') -
    -
    -
    - - - - - - - - - diff --git a/Chapter16/onlineStore/resources/views/layouts/app.blade.php b/Chapter16/onlineStore/resources/views/layouts/app.blade.php deleted file mode 100644 index eee7fcb..0000000 --- a/Chapter16/onlineStore/resources/views/layouts/app.blade.php +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - @yield('title', 'Online Store') - - - - - -
    -
    -

    @yield('subtitle', 'A Laravel Online Store')

    -
    -
    - - -
    - @yield('content') -
    - - - - - - - diff --git a/Chapter16/onlineStore/resources/views/product/index.blade.php b/Chapter16/onlineStore/resources/views/product/index.blade.php deleted file mode 100644 index c82528a..0000000 --- a/Chapter16/onlineStore/resources/views/product/index.blade.php +++ /dev/null @@ -1,18 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    - @foreach ($viewData["products"] as $product) - - @endforeach -
    -@endsection diff --git a/Chapter16/onlineStore/resources/views/product/show.blade.php b/Chapter16/onlineStore/resources/views/product/show.blade.php deleted file mode 100644 index 0adad34..0000000 --- a/Chapter16/onlineStore/resources/views/product/show.blade.php +++ /dev/null @@ -1,21 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    -
    -
    - getImage()) }}" class="img-fluid rounded-start"> -
    -
    -
    -
    - {{ $viewData["product"]->getName() }} (${{ $viewData["product"]->getPrice() }}) -
    -

    {{ $viewData["product"]->getDescription() }}

    -

    Add to Cart

    -
    -
    -
    -
    -@endsection diff --git a/Chapter16/onlineStore/resources/views/welcome.blade.php b/Chapter16/onlineStore/resources/views/welcome.blade.php deleted file mode 100644 index c587c72..0000000 --- a/Chapter16/onlineStore/resources/views/welcome.blade.php +++ /dev/null @@ -1,7 +0,0 @@ -@extends('layouts.app') -@section('title', 'Home Page - Online Store') -@section('content') -
    - Welcome to the application -
    -@endsection \ No newline at end of file diff --git a/Chapter16/onlineStore/routes/api.php b/Chapter16/onlineStore/routes/api.php deleted file mode 100644 index eb6fa48..0000000 --- a/Chapter16/onlineStore/routes/api.php +++ /dev/null @@ -1,19 +0,0 @@ -get('/user', function (Request $request) { - return $request->user(); -}); diff --git a/Chapter16/onlineStore/routes/channels.php b/Chapter16/onlineStore/routes/channels.php deleted file mode 100644 index 5d451e1..0000000 --- a/Chapter16/onlineStore/routes/channels.php +++ /dev/null @@ -1,18 +0,0 @@ -id === (int) $id; -}); diff --git a/Chapter16/onlineStore/routes/console.php b/Chapter16/onlineStore/routes/console.php deleted file mode 100644 index e05f4c9..0000000 --- a/Chapter16/onlineStore/routes/console.php +++ /dev/null @@ -1,19 +0,0 @@ -comment(Inspiring::quote()); -})->purpose('Display an inspiring quote'); diff --git a/Chapter16/onlineStore/routes/web.php b/Chapter16/onlineStore/routes/web.php deleted file mode 100644 index 68245f0..0000000 --- a/Chapter16/onlineStore/routes/web.php +++ /dev/null @@ -1,21 +0,0 @@ -name("home.index"); -Route::get('/about', 'App\Http\Controllers\HomeController@about')->name("home.about"); -Route::get('/products', 'App\Http\Controllers\ProductController@index')->name("product.index"); -Route::get('/products/{id}', 'App\Http\Controllers\ProductController@show')->name("product.show"); -Route::get('/admin', 'App\Http\Controllers\Admin\AdminHomeController@index')->name("admin.home.index"); -Route::get('/admin/products', 'App\Http\Controllers\Admin\AdminProductController@index')->name("admin.product.index"); diff --git a/Chapter16/onlineStore/storage/app/.gitignore b/Chapter16/onlineStore/storage/app/.gitignore deleted file mode 100644 index 8f4803c..0000000 --- a/Chapter16/onlineStore/storage/app/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!public/ -!.gitignore diff --git a/Chapter16/onlineStore/storage/app/public/.gitignore b/Chapter16/onlineStore/storage/app/public/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter16/onlineStore/storage/app/public/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter16/onlineStore/storage/framework/.gitignore b/Chapter16/onlineStore/storage/framework/.gitignore deleted file mode 100644 index 05c4471..0000000 --- a/Chapter16/onlineStore/storage/framework/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -compiled.php -config.php -down -events.scanned.php -maintenance.php -routes.php -routes.scanned.php -schedule-* -services.json diff --git a/Chapter16/onlineStore/storage/framework/cache/.gitignore b/Chapter16/onlineStore/storage/framework/cache/.gitignore deleted file mode 100644 index 01e4a6c..0000000 --- a/Chapter16/onlineStore/storage/framework/cache/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!data/ -!.gitignore diff --git a/Chapter16/onlineStore/storage/framework/cache/data/.gitignore b/Chapter16/onlineStore/storage/framework/cache/data/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter16/onlineStore/storage/framework/cache/data/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter16/onlineStore/storage/framework/sessions/.gitignore b/Chapter16/onlineStore/storage/framework/sessions/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter16/onlineStore/storage/framework/sessions/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter16/onlineStore/storage/framework/testing/.gitignore b/Chapter16/onlineStore/storage/framework/testing/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter16/onlineStore/storage/framework/testing/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter16/onlineStore/storage/framework/views/.gitignore b/Chapter16/onlineStore/storage/framework/views/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter16/onlineStore/storage/framework/views/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter16/onlineStore/storage/logs/.gitignore b/Chapter16/onlineStore/storage/logs/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter16/onlineStore/storage/logs/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter16/onlineStore/tests/CreatesApplication.php b/Chapter16/onlineStore/tests/CreatesApplication.php deleted file mode 100644 index 547152f..0000000 --- a/Chapter16/onlineStore/tests/CreatesApplication.php +++ /dev/null @@ -1,22 +0,0 @@ -make(Kernel::class)->bootstrap(); - - return $app; - } -} diff --git a/Chapter16/onlineStore/tests/Feature/ExampleTest.php b/Chapter16/onlineStore/tests/Feature/ExampleTest.php deleted file mode 100644 index 78ccc21..0000000 --- a/Chapter16/onlineStore/tests/Feature/ExampleTest.php +++ /dev/null @@ -1,21 +0,0 @@ -get('/'); - - $response->assertStatus(200); - } -} diff --git a/Chapter16/onlineStore/tests/TestCase.php b/Chapter16/onlineStore/tests/TestCase.php deleted file mode 100644 index 2932d4a..0000000 --- a/Chapter16/onlineStore/tests/TestCase.php +++ /dev/null @@ -1,10 +0,0 @@ -assertTrue(true); - } -} diff --git a/Chapter16/onlineStore/webpack.mix.js b/Chapter16/onlineStore/webpack.mix.js deleted file mode 100644 index 2a22dc1..0000000 --- a/Chapter16/onlineStore/webpack.mix.js +++ /dev/null @@ -1,17 +0,0 @@ -const mix = require('laravel-mix'); - -/* - |-------------------------------------------------------------------------- - | Mix Asset Management - |-------------------------------------------------------------------------- - | - | Mix provides a clean, fluent API for defining some Webpack build steps - | for your Laravel applications. By default, we are compiling the CSS - | file for the application as well as bundling up all the JS files. - | - */ - -mix.js('resources/js/app.js', 'public/js') - .postCss('resources/css/app.css', 'public/css', [ - // - ]); diff --git a/Chapter17-Advanced/onlineStore/.editorconfig b/Chapter17-Advanced/onlineStore/.editorconfig deleted file mode 100644 index 1671c9b..0000000 --- a/Chapter17-Advanced/onlineStore/.editorconfig +++ /dev/null @@ -1,18 +0,0 @@ -root = true - -[*] -charset = utf-8 -end_of_line = lf -insert_final_newline = true -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true - -[*.md] -trim_trailing_whitespace = false - -[*.{yml,yaml}] -indent_size = 2 - -[docker-compose.yml] -indent_size = 4 diff --git a/Chapter17-Advanced/onlineStore/.env.example b/Chapter17-Advanced/onlineStore/.env.example deleted file mode 100644 index 8510237..0000000 --- a/Chapter17-Advanced/onlineStore/.env.example +++ /dev/null @@ -1,52 +0,0 @@ -APP_NAME=Laravel -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=laravel -DB_USERNAME=root -DB_PASSWORD= - -BROADCAST_DRIVER=log -CACHE_DRIVER=file -FILESYSTEM_DISK=local -QUEUE_CONNECTION=sync -SESSION_DRIVER=file -SESSION_LIFETIME=120 - -MEMCACHED_HOST=127.0.0.1 - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -MAIL_MAILER=smtp -MAIL_HOST=mailhog -MAIL_PORT=1025 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS=null -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_APP_CLUSTER=mt1 - -MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/Chapter17-Advanced/onlineStore/.gitattributes b/Chapter17-Advanced/onlineStore/.gitattributes deleted file mode 100644 index 510d996..0000000 --- a/Chapter17-Advanced/onlineStore/.gitattributes +++ /dev/null @@ -1,10 +0,0 @@ -* text=auto - -*.blade.php diff=html -*.css diff=css -*.html diff=html -*.md diff=markdown -*.php diff=php - -/.github export-ignore -CHANGELOG.md export-ignore diff --git a/Chapter17-Advanced/onlineStore/.gitignore b/Chapter17-Advanced/onlineStore/.gitignore deleted file mode 100644 index eb003b0..0000000 --- a/Chapter17-Advanced/onlineStore/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -/node_modules -/public/hot -/public/storage -/storage/*.key -/vendor -.env -.env.backup -.phpunit.result.cache -docker-compose.override.yml -Homestead.json -Homestead.yaml -npm-debug.log -yarn-error.log -/.idea -/.vscode diff --git a/Chapter17-Advanced/onlineStore/.styleci.yml b/Chapter17-Advanced/onlineStore/.styleci.yml deleted file mode 100644 index 679a631..0000000 --- a/Chapter17-Advanced/onlineStore/.styleci.yml +++ /dev/null @@ -1,13 +0,0 @@ -php: - preset: laravel - version: 8 - disabled: - - no_unused_imports - finder: - not-name: - - index.php -js: - finder: - not-name: - - webpack.mix.js -css: true diff --git a/Chapter17-Advanced/onlineStore/README.md b/Chapter17-Advanced/onlineStore/README.md deleted file mode 100644 index f171eca..0000000 --- a/Chapter17-Advanced/onlineStore/README.md +++ /dev/null @@ -1,64 +0,0 @@ -

    - -

    -Build Status -Total Downloads -Latest Stable Version -License -

    - -## About Laravel - -Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as: - -- [Simple, fast routing engine](https://laravel.com/docs/routing). -- [Powerful dependency injection container](https://laravel.com/docs/container). -- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage. -- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent). -- Database agnostic [schema migrations](https://laravel.com/docs/migrations). -- [Robust background job processing](https://laravel.com/docs/queues). -- [Real-time event broadcasting](https://laravel.com/docs/broadcasting). - -Laravel is accessible, powerful, and provides tools required for large, robust applications. - -## Learning Laravel - -Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework. - -If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 2000 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library. - -## Laravel Sponsors - -We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell). - -### Premium Partners - -- **[Vehikl](https://vehikl.com/)** -- **[Tighten Co.](https://tighten.co)** -- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** -- **[64 Robots](https://64robots.com)** -- **[Cubet Techno Labs](https://cubettech.com)** -- **[Cyber-Duck](https://cyber-duck.co.uk)** -- **[Many](https://www.many.co.uk)** -- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)** -- **[DevSquad](https://devsquad.com)** -- **[Curotec](https://www.curotec.com/services/technologies/laravel/)** -- **[OP.GG](https://op.gg)** -- **[WebReinvent](https://webreinvent.com/?utm_source=laravel&utm_medium=github&utm_campaign=patreon-sponsors)** -- **[Lendio](https://lendio.com)** - -## Contributing - -Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions). - -## Code of Conduct - -In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). - -## Security Vulnerabilities - -If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed. - -## License - -The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). diff --git a/Chapter17-Advanced/onlineStore/app/Console/Kernel.php b/Chapter17-Advanced/onlineStore/app/Console/Kernel.php deleted file mode 100644 index d8bc1d2..0000000 --- a/Chapter17-Advanced/onlineStore/app/Console/Kernel.php +++ /dev/null @@ -1,32 +0,0 @@ -command('inspire')->hourly(); - } - - /** - * Register the commands for the application. - * - * @return void - */ - protected function commands() - { - $this->load(__DIR__.'/Commands'); - - require base_path('routes/console.php'); - } -} diff --git a/Chapter17-Advanced/onlineStore/app/Exceptions/Handler.php b/Chapter17-Advanced/onlineStore/app/Exceptions/Handler.php deleted file mode 100644 index 8e7fbd1..0000000 --- a/Chapter17-Advanced/onlineStore/app/Exceptions/Handler.php +++ /dev/null @@ -1,41 +0,0 @@ -> - */ - protected $dontReport = [ - // - ]; - - /** - * A list of the inputs that are never flashed for validation exceptions. - * - * @var array - */ - protected $dontFlash = [ - 'current_password', - 'password', - 'password_confirmation', - ]; - - /** - * Register the exception handling callbacks for the application. - * - * @return void - */ - public function register() - { - $this->reportable(function (Throwable $e) { - // - }); - } -} diff --git a/Chapter17-Advanced/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php b/Chapter17-Advanced/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php deleted file mode 100644 index cd78cb3..0000000 --- a/Chapter17-Advanced/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php +++ /dev/null @@ -1,16 +0,0 @@ -with("viewData", $viewData); - } -} diff --git a/Chapter17-Advanced/onlineStore/app/Http/Controllers/Admin/AdminProductController.php b/Chapter17-Advanced/onlineStore/app/Http/Controllers/Admin/AdminProductController.php deleted file mode 100644 index b9e6577..0000000 --- a/Chapter17-Advanced/onlineStore/app/Http/Controllers/Admin/AdminProductController.php +++ /dev/null @@ -1,34 +0,0 @@ -with("viewData", $viewData); - } - - public function store(Request $request) - { - $request->validate([ - "name" => "required|max:255", - "description" => "required", - "price" => "required|numeric|gt:0", - 'image' => 'image', - ]); - - $creationData = $request->only(["name","description","price"]); - $creationData["image"] = "game.png"; - Product::create($creationData); - - return back(); - } -} diff --git a/Chapter17-Advanced/onlineStore/app/Http/Controllers/Controller.php b/Chapter17-Advanced/onlineStore/app/Http/Controllers/Controller.php deleted file mode 100644 index a0a2a8a..0000000 --- a/Chapter17-Advanced/onlineStore/app/Http/Controllers/Controller.php +++ /dev/null @@ -1,13 +0,0 @@ -with("viewData", $viewData); - } - - public function about() - { - $viewData = []; - $viewData["title"] = "About us - Online Store"; - $viewData["subtitle"] = "About us"; - $viewData["description"] = "This is an about page ..."; - $viewData["author"] = "Developed by: Your Name"; - return view('home.about')->with("viewData", $viewData); - } -} diff --git a/Chapter17-Advanced/onlineStore/app/Http/Controllers/ProductController.php b/Chapter17-Advanced/onlineStore/app/Http/Controllers/ProductController.php deleted file mode 100644 index d27a3a3..0000000 --- a/Chapter17-Advanced/onlineStore/app/Http/Controllers/ProductController.php +++ /dev/null @@ -1,29 +0,0 @@ -with("viewData", $viewData); - } - - public function show($id) - { - $viewData = []; - $product = Product::findOrFail($id); - $viewData["title"] = $product->getName()." - Online Store"; - $viewData["subtitle"] = $product->getName()." - Product information"; - $viewData["product"] = $product; - return view('product.show')->with("viewData", $viewData); - } -} diff --git a/Chapter17-Advanced/onlineStore/app/Http/Kernel.php b/Chapter17-Advanced/onlineStore/app/Http/Kernel.php deleted file mode 100644 index d3722c2..0000000 --- a/Chapter17-Advanced/onlineStore/app/Http/Kernel.php +++ /dev/null @@ -1,67 +0,0 @@ - - */ - protected $middleware = [ - // \App\Http\Middleware\TrustHosts::class, - \App\Http\Middleware\TrustProxies::class, - \Fruitcake\Cors\HandleCors::class, - \App\Http\Middleware\PreventRequestsDuringMaintenance::class, - \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, - \App\Http\Middleware\TrimStrings::class, - \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, - ]; - - /** - * The application's route middleware groups. - * - * @var array> - */ - protected $middlewareGroups = [ - 'web' => [ - \App\Http\Middleware\EncryptCookies::class, - \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, - \Illuminate\Session\Middleware\StartSession::class, - // \Illuminate\Session\Middleware\AuthenticateSession::class, - \Illuminate\View\Middleware\ShareErrorsFromSession::class, - \App\Http\Middleware\VerifyCsrfToken::class, - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - - 'api' => [ - // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, - 'throttle:api', - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - ]; - - /** - * The application's route middleware. - * - * These middleware may be assigned to groups or used individually. - * - * @var array - */ - protected $routeMiddleware = [ - 'auth' => \App\Http\Middleware\Authenticate::class, - 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::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, - 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, - 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, - 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, - ]; -} diff --git a/Chapter17-Advanced/onlineStore/app/Http/Middleware/Authenticate.php b/Chapter17-Advanced/onlineStore/app/Http/Middleware/Authenticate.php deleted file mode 100644 index 704089a..0000000 --- a/Chapter17-Advanced/onlineStore/app/Http/Middleware/Authenticate.php +++ /dev/null @@ -1,21 +0,0 @@ -expectsJson()) { - return route('login'); - } - } -} diff --git a/Chapter17-Advanced/onlineStore/app/Http/Middleware/EncryptCookies.php b/Chapter17-Advanced/onlineStore/app/Http/Middleware/EncryptCookies.php deleted file mode 100644 index 867695b..0000000 --- a/Chapter17-Advanced/onlineStore/app/Http/Middleware/EncryptCookies.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter17-Advanced/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/Chapter17-Advanced/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php deleted file mode 100644 index 74cbd9a..0000000 --- a/Chapter17-Advanced/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter17-Advanced/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php b/Chapter17-Advanced/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php deleted file mode 100644 index a2813a0..0000000 --- a/Chapter17-Advanced/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php +++ /dev/null @@ -1,32 +0,0 @@ -check()) { - return redirect(RouteServiceProvider::HOME); - } - } - - return $next($request); - } -} diff --git a/Chapter17-Advanced/onlineStore/app/Http/Middleware/TrimStrings.php b/Chapter17-Advanced/onlineStore/app/Http/Middleware/TrimStrings.php deleted file mode 100644 index 88cadca..0000000 --- a/Chapter17-Advanced/onlineStore/app/Http/Middleware/TrimStrings.php +++ /dev/null @@ -1,19 +0,0 @@ - - */ - protected $except = [ - 'current_password', - 'password', - 'password_confirmation', - ]; -} diff --git a/Chapter17-Advanced/onlineStore/app/Http/Middleware/TrustHosts.php b/Chapter17-Advanced/onlineStore/app/Http/Middleware/TrustHosts.php deleted file mode 100644 index 7186414..0000000 --- a/Chapter17-Advanced/onlineStore/app/Http/Middleware/TrustHosts.php +++ /dev/null @@ -1,20 +0,0 @@ - - */ - public function hosts() - { - return [ - $this->allSubdomainsOfApplicationUrl(), - ]; - } -} diff --git a/Chapter17-Advanced/onlineStore/app/Http/Middleware/TrustProxies.php b/Chapter17-Advanced/onlineStore/app/Http/Middleware/TrustProxies.php deleted file mode 100644 index 3391630..0000000 --- a/Chapter17-Advanced/onlineStore/app/Http/Middleware/TrustProxies.php +++ /dev/null @@ -1,28 +0,0 @@ -|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/Chapter17-Advanced/onlineStore/app/Http/Middleware/VerifyCsrfToken.php b/Chapter17-Advanced/onlineStore/app/Http/Middleware/VerifyCsrfToken.php deleted file mode 100644 index 9e86521..0000000 --- a/Chapter17-Advanced/onlineStore/app/Http/Middleware/VerifyCsrfToken.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter17-Advanced/onlineStore/app/Models/Product.php b/Chapter17-Advanced/onlineStore/app/Models/Product.php deleted file mode 100644 index 5ef80c0..0000000 --- a/Chapter17-Advanced/onlineStore/app/Models/Product.php +++ /dev/null @@ -1,99 +0,0 @@ -attributes['id'] - int - contains the product primary key (id) - * $this->attributes['name'] - string - contains the product name - * $this->attributes['description'] - string - contains the product description - * $this->attributes['image'] - string - contains the product image - * $this->attributes['price'] - int - contains the product price - * $this->attributes['created_at'] - timestamp - contains the product creation date - * $this->attributes['updated_at'] - timestamp - contains the product update date - */ - - protected $fillable = [ - 'name', - 'description', - 'price', - 'image', - ]; - - public function getId() - { - return $this->attributes['id']; - } - - public function setId($id) - { - $this->attributes['id'] = $id; - } - - public function getName() - { - return $this->attributes['name']; - } - - public function setName($name) - { - $this->attributes['name'] = $name; - } - - public function getDescription() - { - return $this->attributes['description']; - } - - public function setDescription($description) - { - $this->attributes['description'] = $description; - } - - public function getImage() - { - return $this->attributes['image']; - } - - public function setImage($image) - { - $this->attributes['image'] = $image; - } - - public function getPrice() - { - return $this->attributes['price']; - } - - public function setPrice($price) - { - $this->attributes['price'] = $price; - } - - public function getCreatedAt() - { - return $this->attributes['created_at']; - } - - public function setCreatedAt($createdAt) - { - $this->attributes['created_at'] = $createdAt; - } - - public function getUpdatedAt() - { - return $this->attributes['updated_at']; - } - - public function setUpdatedAt($updatedAt) - { - $this->attributes['updated_at'] = $updatedAt; - } -} diff --git a/Chapter17-Advanced/onlineStore/app/Models/User.php b/Chapter17-Advanced/onlineStore/app/Models/User.php deleted file mode 100644 index 8996368..0000000 --- a/Chapter17-Advanced/onlineStore/app/Models/User.php +++ /dev/null @@ -1,44 +0,0 @@ - - */ - 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', - ]; -} diff --git a/Chapter17-Advanced/onlineStore/app/Providers/AppServiceProvider.php b/Chapter17-Advanced/onlineStore/app/Providers/AppServiceProvider.php deleted file mode 100644 index ee8ca5b..0000000 --- a/Chapter17-Advanced/onlineStore/app/Providers/AppServiceProvider.php +++ /dev/null @@ -1,28 +0,0 @@ - - */ - protected $policies = [ - // 'App\Models\Model' => 'App\Policies\ModelPolicy', - ]; - - /** - * Register any authentication / authorization services. - * - * @return void - */ - public function boot() - { - $this->registerPolicies(); - - // - } -} diff --git a/Chapter17-Advanced/onlineStore/app/Providers/BroadcastServiceProvider.php b/Chapter17-Advanced/onlineStore/app/Providers/BroadcastServiceProvider.php deleted file mode 100644 index 395c518..0000000 --- a/Chapter17-Advanced/onlineStore/app/Providers/BroadcastServiceProvider.php +++ /dev/null @@ -1,21 +0,0 @@ -> - */ - protected $listen = [ - Registered::class => [ - SendEmailVerificationNotification::class, - ], - ]; - - /** - * Register any events for your application. - * - * @return void - */ - public function boot() - { - // - } -} diff --git a/Chapter17-Advanced/onlineStore/app/Providers/RouteServiceProvider.php b/Chapter17-Advanced/onlineStore/app/Providers/RouteServiceProvider.php deleted file mode 100644 index 7c17d1f..0000000 --- a/Chapter17-Advanced/onlineStore/app/Providers/RouteServiceProvider.php +++ /dev/null @@ -1,63 +0,0 @@ -configureRateLimiting(); - - $this->routes(function () { - Route::prefix('api') - ->middleware('api') - ->namespace($this->namespace) - ->group(base_path('routes/api.php')); - - Route::middleware('web') - ->namespace($this->namespace) - ->group(base_path('routes/web.php')); - }); - } - - /** - * Configure the rate limiters for the application. - * - * @return void - */ - protected function configureRateLimiting() - { - RateLimiter::for('api', function (Request $request) { - return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); - }); - } -} diff --git a/Chapter17-Advanced/onlineStore/app/Traits/HasClassicSetter.php b/Chapter17-Advanced/onlineStore/app/Traits/HasClassicSetter.php deleted file mode 100644 index 09b2166..0000000 --- a/Chapter17-Advanced/onlineStore/app/Traits/HasClassicSetter.php +++ /dev/null @@ -1,31 +0,0 @@ -{'set'.Str::studly($key)}($value); - } -} \ No newline at end of file diff --git a/Chapter17-Advanced/onlineStore/artisan b/Chapter17-Advanced/onlineStore/artisan deleted file mode 100644 index 67a3329..0000000 --- a/Chapter17-Advanced/onlineStore/artisan +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env php -make(Illuminate\Contracts\Console\Kernel::class); - -$status = $kernel->handle( - $input = new Symfony\Component\Console\Input\ArgvInput, - new Symfony\Component\Console\Output\ConsoleOutput -); - -/* -|-------------------------------------------------------------------------- -| Shutdown The Application -|-------------------------------------------------------------------------- -| -| Once Artisan has finished running, we will fire off the shutdown events -| so that any final work may be done by the application before we shut -| down the process. This is the last thing to happen to the request. -| -*/ - -$kernel->terminate($input, $status); - -exit($status); diff --git a/Chapter17-Advanced/onlineStore/bootstrap/app.php b/Chapter17-Advanced/onlineStore/bootstrap/app.php deleted file mode 100644 index 037e17d..0000000 --- a/Chapter17-Advanced/onlineStore/bootstrap/app.php +++ /dev/null @@ -1,55 +0,0 @@ -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/Chapter17-Advanced/onlineStore/bootstrap/cache/.gitignore b/Chapter17-Advanced/onlineStore/bootstrap/cache/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter17-Advanced/onlineStore/bootstrap/cache/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter17-Advanced/onlineStore/composer.json b/Chapter17-Advanced/onlineStore/composer.json deleted file mode 100644 index f0f2eda..0000000 --- a/Chapter17-Advanced/onlineStore/composer.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "name": "laravel/laravel", - "type": "project", - "description": "The Laravel Framework.", - "keywords": ["framework", "laravel"], - "license": "MIT", - "require": { - "php": "^8.0", - "fruitcake/laravel-cors": "^2.0.5", - "guzzlehttp/guzzle": "^7.2", - "laravel/framework": "^9.0", - "laravel/sanctum": "^2.14", - "laravel/tinker": "^2.7" - }, - "require-dev": { - "fakerphp/faker": "^1.9.1", - "laravel/sail": "^1.0.1", - "mockery/mockery": "^1.4.4", - "nunomaduro/collision": "^6.1", - "phpunit/phpunit": "^9.5.10", - "spatie/laravel-ignition": "^1.0", - "squizlabs/php_codesniffer": "^3.6" - }, - "autoload": { - "psr-4": { - "App\\": "app/", - "Database\\Factories\\": "database/factories/", - "Database\\Seeders\\": "database/seeders/" - } - }, - "autoload-dev": { - "psr-4": { - "Tests\\": "tests/" - } - }, - "scripts": { - "post-autoload-dump": [ - "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", - "@php artisan package:discover --ansi" - ], - "post-update-cmd": [ - "@php artisan vendor:publish --tag=laravel-assets --ansi --force" - ], - "post-root-package-install": [ - "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" - ], - "post-create-project-cmd": [ - "@php artisan key:generate --ansi" - ] - }, - "extra": { - "laravel": { - "dont-discover": [] - } - }, - "config": { - "optimize-autoloader": true, - "preferred-install": "dist", - "sort-packages": true - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/Chapter17-Advanced/onlineStore/composer.lock b/Chapter17-Advanced/onlineStore/composer.lock deleted file mode 100644 index b55e897..0000000 --- a/Chapter17-Advanced/onlineStore/composer.lock +++ /dev/null @@ -1,7860 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "8bdcc31974d0d5a00db79c82827c8815", - "packages": [ - { - "name": "asm89/stack-cors", - "version": "v2.1.1", - "source": { - "type": "git", - "url": "https://github.com/asm89/stack-cors.git", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4|^5|^6" - }, - "require-dev": { - "phpunit/phpunit": "^7|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "psr-4": { - "Asm89\\Stack\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alexander", - "email": "iam.asm89@gmail.com" - } - ], - "description": "Cross-origin resource sharing library and stack middleware", - "homepage": "https://github.com/asm89/stack-cors", - "keywords": [ - "cors", - "stack" - ], - "support": { - "issues": "https://github.com/asm89/stack-cors/issues", - "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" - }, - "time": "2022-01-18T09:12:03+00:00" - }, - { - "name": "brick/math", - "version": "0.9.3", - "source": { - "type": "git", - "url": "https://github.com/brick/math.git", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", - "vimeo/psalm": "4.9.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Brick\\Math\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Arbitrary-precision arithmetic library", - "keywords": [ - "Arbitrary-precision", - "BigInteger", - "BigRational", - "arithmetic", - "bigdecimal", - "bignum", - "brick", - "math" - ], - "support": { - "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.9.3" - }, - "funding": [ - { - "url": "https://github.com/BenMorel", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/brick/math", - "type": "tidelift" - } - ], - "time": "2021-08-15T20:50:18+00:00" - }, - { - "name": "dflydev/dot-access-data", - "version": "v3.0.1", - "source": { - "type": "git", - "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c", - "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": "^3.14" - }, - "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.1" - }, - "time": "2021-08-13T13:06:58+00:00" - }, - { - "name": "doctrine/inflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "vimeo/psalm": "^4.10" - }, - "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.4" - }, - "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": "2021-10-22T20:16:43+00:00" - }, - { - "name": "doctrine/lexer", - "version": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" - } - }, - "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/1.2.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%2Flexer", - "type": "tidelift" - } - ], - "time": "2022-01-12T08:27:12+00:00" - }, - { - "name": "dragonmantank/cron-expression", - "version": "v3.3.1", - "source": { - "type": "git", - "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "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.1" - }, - "funding": [ - { - "url": "https://github.com/dragonmantank", - "type": "github" - } - ], - "time": "2022-01-18T15:43:28+00:00" - }, - { - "name": "egulias/email-validator", - "version": "3.1.2", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ee0db30118f661fb166bcffbf5d82032df484697", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^1.2", - "php": ">=7.2", - "symfony/polyfill-intl-idn": "^1.15" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^8.5.8|^9.3.3", - "vimeo/psalm": "^4" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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/3.1.2" - }, - "funding": [ - { - "url": "https://github.com/egulias", - "type": "github" - } - ], - "time": "2021-10-11T09:18:27+00:00" - }, - { - "name": "fruitcake/laravel-cors", - "version": "v2.0.5", - "source": { - "type": "git", - "url": "https://github.com/fruitcake/laravel-cors.git", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "shasum": "" - }, - "require": { - "asm89/stack-cors": "^2.0.1", - "illuminate/contracts": "^6|^7|^8|^9", - "illuminate/support": "^6|^7|^8|^9", - "php": ">=7.2", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4.3.4|^5|^6" - }, - "require-dev": { - "laravel/framework": "^6|^7.24|^8", - "orchestra/testbench-dusk": "^4|^5|^6|^7", - "phpunit/phpunit": "^6|^7|^8|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - }, - "laravel": { - "providers": [ - "Fruitcake\\Cors\\CorsServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Fruitcake\\Cors\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fruitcake", - "homepage": "https://fruitcake.nl" - }, - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", - "keywords": [ - "api", - "cors", - "crossdomain", - "laravel" - ], - "support": { - "issues": "https://github.com/fruitcake/laravel-cors/issues", - "source": "https://github.com/fruitcake/laravel-cors/tree/v2.0.5" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "time": "2022-01-03T14:53:04+00:00" - }, - { - "name": "graham-campbell/result-type", - "version": "v1.0.4", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "0690bde05318336c7221785f2a932467f98b64ca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/0690bde05318336c7221785f2a932467f98b64ca", - "reference": "0690bde05318336c7221785f2a932467f98b64ca", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "phpoption/phpoption": "^1.8" - }, - "require-dev": { - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", - "type": "tidelift" - } - ], - "time": "2021-11-21T21:41:47+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "7.4.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.8.3 || ^2.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.4.1", - "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.5 || ^9.3.5", - "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": { - "branch-alias": { - "dev-master": "7.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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.4.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": "2021-12-06T18:43:05+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "1.5.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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/1.5.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "time": "2021-10-22T20:56:57+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.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.4.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.8 || ^9.3.10" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "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.1.0" - }, - "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": "2021-10-06T17:43:30+00:00" - }, - { - "name": "laravel/framework", - "version": "v9.0.1", - "source": { - "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "shasum": "" - }, - "require": { - "doctrine/inflector": "^2.0", - "dragonmantank/cron-expression": "^3.1", - "egulias/email-validator": "^3.1", - "ext-mbstring": "*", - "ext-openssl": "*", - "laravel/serializable-closure": "^1.0", - "league/commonmark": "^2.2", - "league/flysystem": "^3.0", - "monolog/monolog": "^2.0", - "nesbot/carbon": "^2.53.1", - "php": "^8.0.2", - "psr/container": "^1.1.1|^2.0.1", - "psr/log": "^1.0|^2.0|^3.0", - "psr/simple-cache": "^1.0|^2.0|^3.0", - "ramsey/uuid": "^4.2.2", - "symfony/console": "^6.0", - "symfony/error-handler": "^6.0", - "symfony/finder": "^6.0", - "symfony/http-foundation": "^6.0", - "symfony/http-kernel": "^6.0", - "symfony/mailer": "^6.0", - "symfony/mime": "^6.0", - "symfony/process": "^6.0", - "symfony/routing": "^6.0", - "symfony/var-dumper": "^6.0", - "tijsverkoyen/css-to-inline-styles": "^2.2.2", - "vlucas/phpdotenv": "^5.4.1", - "voku/portable-ascii": "^2.0" - }, - "conflict": { - "tightenco/collect": "<5.5.33" - }, - "provide": { - "psr/container-implementation": "1.1|2.0", - "psr/simple-cache-implementation": "1.0|2.0|3.0" - }, - "replace": { - "illuminate/auth": "self.version", - "illuminate/broadcasting": "self.version", - "illuminate/bus": "self.version", - "illuminate/cache": "self.version", - "illuminate/collections": "self.version", - "illuminate/conditionable": "self.version", - "illuminate/config": "self.version", - "illuminate/console": "self.version", - "illuminate/container": "self.version", - "illuminate/contracts": "self.version", - "illuminate/cookie": "self.version", - "illuminate/database": "self.version", - "illuminate/encryption": "self.version", - "illuminate/events": "self.version", - "illuminate/filesystem": "self.version", - "illuminate/hashing": "self.version", - "illuminate/http": "self.version", - "illuminate/log": "self.version", - "illuminate/macroable": "self.version", - "illuminate/mail": "self.version", - "illuminate/notifications": "self.version", - "illuminate/pagination": "self.version", - "illuminate/pipeline": "self.version", - "illuminate/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": { - "aws/aws-sdk-php": "^3.198.1", - "doctrine/dbal": "^2.13.3|^3.1.4", - "fakerphp/faker": "^1.9.2", - "guzzlehttp/guzzle": "^7.2", - "league/flysystem-aws-s3-v3": "^3.0", - "league/flysystem-ftp": "^3.0", - "league/flysystem-sftp-v3": "^3.0", - "mockery/mockery": "^1.4.4", - "orchestra/testbench-core": "^7.0", - "pda/pheanstalk": "^4.0", - "phpstan/phpstan": "^1.0", - "phpunit/phpunit": "^9.5.8", - "predis/predis": "^1.1.9", - "symfony/amazon-mailer": "^6.0", - "symfony/cache": "^6.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.198.1).", - "brianium/paratest": "Required to run tests in parallel (^6.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", - "ext-bcmath": "Required to use the multiple_of validation rule.", - "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.", - "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.2).", - "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-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", - "mockery/mockery": "Required to use mocking (^1.4.4).", - "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).", - "predis/predis": "Required to use the predis connector (^1.1.9).", - "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.0).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^6.0).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.0).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.0).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.0).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.x-dev" - } - }, - "autoload": { - "files": [ - "src/Illuminate/Collections/helpers.php", - "src/Illuminate/Events/functions.php", - "src/Illuminate/Foundation/helpers.php", - "src/Illuminate/Support/helpers.php" - ], - "psr-4": { - "Illuminate\\": "src/Illuminate/", - "Illuminate\\Support\\": [ - "src/Illuminate/Macroable/", - "src/Illuminate/Collections/", - "src/Illuminate/Conditionable/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Laravel Framework.", - "homepage": "https://laravel.com", - "keywords": [ - "framework", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2022-02-09T15:00:05+00:00" - }, - { - "name": "laravel/sanctum", - "version": "v2.14.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/sanctum.git", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/0647a87140c7522e75826cffcadb3ad6e01f71e9", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/contracts": "^6.9|^7.0|^8.0|^9.0", - "illuminate/database": "^6.9|^7.0|^8.0|^9.0", - "illuminate/support": "^6.9|^7.0|^8.0|^9.0", - "php": "^7.2|^8.0" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0", - "phpunit/phpunit": "^8.0|^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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": "2022-01-12T15:07:43+00:00" - }, - { - "name": "laravel/serializable-closure", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/serializable-closure.git", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/65c9faf50d567b65d81764a44526545689e3fe63", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "pestphp/pest": "^1.18", - "phpstan/phpstan": "^0.12.98", - "symfony/var-dumper": "^5.3" - }, - "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": "2022-02-01T16:29:39+00:00" - }, - { - "name": "laravel/tinker", - "version": "v2.7.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/tinker.git", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/5f2f9815b7631b9f586a3de7933c25f9327d4073", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073", - "shasum": "" - }, - "require": { - "illuminate/console": "^6.0|^7.0|^8.0|^9.0", - "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.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", - "phpunit/phpunit": "^8.5.8|^9.3.3" - }, - "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.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.7.0" - }, - "time": "2022-01-10T08:52:49+00:00" - }, - { - "name": "league/commonmark", - "version": "2.2.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/commonmark.git", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "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.15" - }, - "require-dev": { - "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.0", - "commonmark/commonmark.js": "0.30.0", - "composer/package-versions-deprecated": "^1.8", - "erusev/parsedown": "^1.0", - "ext-json": "*", - "github/gfm": "0.29.0", - "michelf/php-markdown": "^1.4", - "phpstan/phpstan": "^0.12.88 || ^1.0.0", - "phpunit/phpunit": "^9.5.5", - "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", - "unleashedtech/php-coding-standard": "^3.1", - "vimeo/psalm": "^4.7.3" - }, - "suggest": { - "symfony/yaml": "v2.3+ required if using the Front Matter extension" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.3-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": "2022-01-25T14:37:33+00:00" - }, - { - "name": "league/config", - "version": "v1.1.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/config.git", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/config/zipball/a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^3.0.1", - "nette/schema": "^1.2", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.90", - "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": "2021-08-14T12:15:32+00:00" - }, - { - "name": "league/flysystem", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9f8b4260031bfef5497477da53dd57b2aaff0e06", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06", - "shasum": "" - }, - "require": { - "ext-json": "*", - "league/mime-type-detection": "^1.0.0", - "php": "^8.0.2" - }, - "conflict": { - "guzzlehttp/guzzle": "<7.0", - "guzzlehttp/ringphp": "<1.1.1", - "symfony/http-client": "<5.2" - }, - "require-dev": { - "async-aws/s3": "^1.5", - "async-aws/simple-s3": "^1.0", - "aws/aws-sdk-php": "^3.198.1", - "composer/semver": "^3.0", - "ext-fileinfo": "*", - "ext-ftp": "*", - "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.5", - "google/cloud-storage": "^1.23", - "phpseclib/phpseclib": "^2.0", - "phpstan/phpstan": "^0.12.26", - "phpunit/phpunit": "^9.5.11", - "sabre/dav": "^4.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.0.3" - }, - "funding": [ - { - "url": "https://offset.earth/frankdejonge", - "type": "custom" - }, - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2022-01-31T19:41:04+00:00" - }, - { - "name": "league/mime-type-detection", - "version": "1.9.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/aa70e813a6ad3d1558fc927863d47309b4c23e69", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.2", - "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" - }, - "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.9.0" - }, - "funding": [ - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2021-11-21T11:48:40+00:00" - }, - { - "name": "monolog/monolog", - "version": "2.3.5", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd4380d6fc37626e2f799f29d91195040137eba9", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "provide": { - "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7", - "graylog2/gelf-php": "^1.4.2", - "mongodb/mongodb": "^1.8", - "php-amqplib/php-amqplib": "~2.4 || ^3", - "php-console/php-console": "^3.1.3", - "phpspec/prophecy": "^1.6.1", - "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5", - "predis/predis": "^1.1", - "rollbar/rollbar": "^1.3", - "ruflin/elastica": ">=0.90@dev", - "swiftmailer/swiftmailer": "^5.3|^6.0" - }, - "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", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "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": "2.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/2.3.5" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" - } - ], - "time": "2021-10-01T21:08:31+00:00" - }, - { - "name": "nesbot/carbon", - "version": "2.56.0", - "source": { - "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1.8 || ^8.0", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "doctrine/dbal": "^2.0 || ^3.0", - "doctrine/orm": "^2.7", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "phpmd/phpmd": "^2.9", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.54 || ^1.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.14", - "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://opencollective.com/Carbon", - "type": "open_collective" - }, - { - "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", - "type": "tidelift" - } - ], - "time": "2022-01-21T17:08:38+00:00" - }, - { - "name": "nette/schema", - "version": "v1.2.2", - "source": { - "type": "git", - "url": "https://github.com/nette/schema.git", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/9a39cef03a5b34c7de64f551538cbba05c2be5df", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df", - "shasum": "" - }, - "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": ">=7.1 <8.2" - }, - "require-dev": { - "nette/tester": "^2.3 || ^2.4", - "phpstan/phpstan-nette": "^0.12", - "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.2" - }, - "time": "2021-10-15T11:40:02+00:00" - }, - { - "name": "nette/utils", - "version": "v3.2.7", - "source": { - "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/0af4e3de4df9f1543534beab255ccf459e7a2c99", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99", - "shasum": "" - }, - "require": { - "php": ">=7.2 <8.2" - }, - "conflict": { - "nette/di": "<3.0.6" - }, - "require-dev": { - "nette/tester": "~2.0", - "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.3" - }, - "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()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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 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/v3.2.7" - }, - "time": "2022-01-24T11:29:14+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.13.2", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", - "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.13.2" - }, - "time": "2021-11-30T19:35:32+00:00" - }, - { - "name": "phpoption/phpoption", - "version": "1.8.1", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-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.8.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", - "type": "tidelift" - } - ], - "time": "2021-12-04T23:24:31+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.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.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": "http://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/tree/master" - }, - "time": "2020-06-29T06:28:15+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.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": "http://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/master" - }, - "time": "2019-04-30T12:38:16+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.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": "http://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/master" - }, - "time": "2016-08-06T14:39: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.1", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "570292577277f06f590635381a7f761a6cf4f026" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/570292577277f06f590635381a7f761a6cf4f026", - "reference": "570292577277f06f590635381a7f761a6cf4f026", - "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" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "3.17.05.02" - }, - "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.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." - }, - "bin": [ - "bin/psysh" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "0.11.x-dev" - } - }, - "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.1" - }, - "time": "2022-01-03T13:58:38+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": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/ramsey/collection.git", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "shasum": "" - }, - "require": { - "php": "^7.3 || ^8", - "symfony/polyfill-php81": "^1.23" - }, - "require-dev": { - "captainhook/captainhook": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "ergebnis/composer-normalize": "^2.6", - "fakerphp/faker": "^1.5", - "hamcrest/hamcrest-php": "^2", - "jangregor/phpstan-prophecy": "^0.8", - "mockery/mockery": "^1.3", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1", - "phpstan/phpstan": "^0.12.32", - "phpstan/phpstan-mockery": "^0.12.5", - "phpstan/phpstan-phpunit": "^0.12.11", - "phpunit/phpunit": "^8.5 || ^9", - "psy/psysh": "^0.10.4", - "slevomat/coding-standard": "^6.3", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.4" - }, - "type": "library", - "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/1.2.2" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "time": "2021-10-10T03:01:02+00:00" - }, - { - "name": "ramsey/uuid", - "version": "4.2.3", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "shasum": "" - }, - "require": { - "brick/math": "^0.8 || ^0.9", - "ext-json": "*", - "php": "^7.2 || ^8.0", - "ramsey/collection": "^1.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php80": "^1.14" - }, - "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", - "moontoast/math": "^1.1", - "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.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-mockery": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^8.5 || ^9", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" - }, - "suggest": { - "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-ctype": "Enables faster processing of character classification using ctype functions.", - "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": { - "branch-alias": { - "dev-main": "4.x-dev" - }, - "captainhook": { - "force-install": true - } - }, - "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "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.2.3" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2021-09-25T23:10:38+00:00" - }, - { - "name": "symfony/console", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/22e8efd019c3270c4f79376234a3f8752cd25490", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.4|^6.0" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/css-selector", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/1955d595c12c111629cc814d3f2a2ff13580508a", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a", - "shasum": "" - }, - "require": { - "php": ">=8.0.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/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-11-01T23:48:49+00:00" - }, - { - "name": "symfony/error-handler", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/20343b3bad7ebafa38138ddcb97290a24722b57b", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" - }, - "bin": [ - "Resources/bin/patch-type-declarations" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to manage errors and ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6472ea2dd415e925b90ca82be64b8bc6157f3934", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/event-dispatcher-contracts": "^2|^3" - }, - "conflict": { - "symfony/dependency-injection": "<5.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^5.4|^6.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/aa5422287b75594b90ee9cd807caf8f0df491385", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/event-dispatcher": "^1" - }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-07-15T12:33:35+00:00" - }, - { - "name": "symfony/finder", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/8661b74dbabc23223f38c9b99d3f8ade71170430", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ad157299ced81a637fade1efcadd688d6deba5c1", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1" - }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/cache": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0" - }, - "suggest": { - "symfony/mime": "To use the file extension guesser" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v6.0.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/error-handler": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", - "symfony/twig-bridge": "<5.4", - "symfony/validator": "<5.4", - "twig/twig": "<2.13" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/process": "^5.4|^6.0", - "symfony/routing": "^5.4|^6.0", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-29T18:12:46+00:00" - }, - { - "name": "symfony/mailer", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mailer.git", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "shasum": "" - }, - "require": { - "egulias/email-validator": "^2.1.10|^3", - "php": ">=8.0.2", - "psr/event-dispatcher": "^1", - "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3" - }, - "conflict": { - "symfony/http-kernel": "<5.4" - }, - "require-dev": { - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/messenger": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/mime", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/2cd9601efd040e56f43360daa68f3c6b0534923a", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "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" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "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.24.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": "2021-10-20T20:35:02+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-11-23T21:10:46+00:00" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44", - "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.23-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.24.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": "2021-09-14T14:02:44+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.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": "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.24.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": "2021-11-30T18:21:41+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-05-27T09:17:38+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:33+00:00" - }, - { - "name": "symfony/polyfill-php81", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:11+00:00" - }, - { - "name": "symfony/process", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/298ed357274c1868c20a0061df256a1250a6c4af", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/routing", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/yaml": "<5.4" - }, - "require-dev": { - "doctrine/annotations": "^1.12", - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/36715ebf9fb9db73db0cb24263c79077c6fe8603", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/container": "^2.0" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "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.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": "2021-11-04T17:53:12+00:00" - }, - { - "name": "symfony/string", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/522144f0c4c004c80d56fa47e40e17028e2eefc2", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.0" - }, - "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/translation-contracts": "^2.0|^3.0", - "symfony/var-exporter": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "files": [ - "Resources/functions.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 an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/translation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/71bb15335798f8c4da110911bcf2d2fead7a430d", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.3|^3.0" - }, - "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" - }, - "provide": { - "symfony/translation-implementation": "2.3|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-07T00:29:03+00:00" - }, - { - "name": "symfony/translation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "suggest": { - "symfony/translation-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - } - }, - "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.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": "2021-09-07T12:43:40+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7b701676fc64f9ef11f9b4870f16b48f66be4834", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<5.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-17T16:30:44+00:00" - }, - { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.4", - "source": { - "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" - } - ], - "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", - "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "support": { - "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" - }, - "time": "2021-12-08T09:12:39+00:00" - }, - { - "name": "vlucas/phpdotenv", - "version": "v5.4.1", - "source": { - "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", - "shasum": "" - }, - "require": { - "ext-pcre": "*", - "graham-campbell/result-type": "^1.0.2", - "php": "^7.1.3 || ^8.0", - "phpoption/phpoption": "^1.8", - "symfony/polyfill-ctype": "^1.23", - "symfony/polyfill-mbstring": "^1.23.1", - "symfony/polyfill-php80": "^1.23.1" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" - }, - "suggest": { - "ext-filter": "Required to use the boolean validator." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.4-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.4.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", - "type": "tidelift" - } - ], - "time": "2021-12-12T23:22:04+00:00" - }, - { - "name": "voku/portable-ascii", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/voku/portable-ascii.git", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/9bd89e83cecdf8c37b64909454249eaed98b2c89", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89", - "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.0" - }, - "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-01-24T18:59:03+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "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.10.0" - }, - "time": "2021-03-09T10:59:23+00:00" - } - ], - "packages-dev": [ - { - "name": "doctrine/instantiator", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.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%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2020-11-10T18:47:58+00:00" - }, - { - "name": "facade/ignition-contracts", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/facade/ignition-contracts.git", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^v2.15.8", - "phpunit/phpunit": "^9.3.11", - "vimeo/psalm": "^3.17.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Facade\\IgnitionContracts\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://flareapp.io", - "role": "Developer" - } - ], - "description": "Solution contracts for Ignition", - "homepage": "https://github.com/facade/ignition-contracts", - "keywords": [ - "contracts", - "flare", - "ignition" - ], - "support": { - "issues": "https://github.com/facade/ignition-contracts/issues", - "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" - }, - "time": "2020-10-16T08:27:54+00:00" - }, - { - "name": "fakerphp/faker", - "version": "v1.19.0", - "source": { - "type": "git", - "url": "https://github.com/FakerPHP/Faker.git", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^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": "*", - "symfony/phpunit-bridge": "^4.4 || ^5.2" - }, - "suggest": { - "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", - "ext-curl": "Required by Faker\\Provider\\Image to download images.", - "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", - "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.19-dev" - } - }, - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "François Zaninotto" - } - ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], - "support": { - "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0" - }, - "time": "2022-02-02T17:38:57+00:00" - }, - { - "name": "filp/whoops", - "version": "2.14.5", - "source": { - "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "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.14.5" - }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "time": "2022-01-07T12:00:00+00:00" - }, - { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "shasum": "" - }, - "require": { - "php": "^5.3|^7.0|^8.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" - }, - "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "classmap": [ - "hamcrest" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "This is the PHP port of Hamcrest Matchers", - "keywords": [ - "test" - ], - "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" - }, - "time": "2020-07-09T08:09:16+00:00" - }, - { - "name": "laravel/sail", - "version": "v1.13.2", - "source": { - "type": "git", - "url": "https://github.com/laravel/sail.git", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.0|^9.0", - "illuminate/contracts": "^8.0|^9.0", - "illuminate/support": "^8.0|^9.0", - "php": "^7.3|^8.0" - }, - "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": "2022-02-08T14:14:12+00:00" - }, - { - "name": "mockery/mockery", - "version": "1.5.0", - "source": { - "type": "git", - "url": "https://github.com/mockery/mockery.git", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "shasum": "" - }, - "require": { - "hamcrest/hamcrest-php": "^2.0.1", - "lib-pcre": ">=7.0", - "php": "^7.3 || ^8.0" - }, - "conflict": { - "phpunit/phpunit": "<8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-0": { - "Mockery": "library/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" - } - ], - "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": { - "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.5.0" - }, - "time": "2022-01-20T13:18:17+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.10.2", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "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.10.2" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2020-11-13T09:40:50+00:00" - }, - { - "name": "nunomaduro/collision", - "version": "v6.1.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/collision.git", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "shasum": "" - }, - "require": { - "facade/ignition-contracts": "^1.0.2", - "filp/whoops": "^2.14.5", - "php": "^8.0.0", - "symfony/console": "^6.0.2" - }, - "require-dev": { - "brianium/paratest": "^6.4.1", - "laravel/framework": "^9.0", - "nunomaduro/larastan": "^1.0.2", - "nunomaduro/mock-final-classes": "^1.1.0", - "orchestra/testbench": "^7.0.0", - "phpunit/phpunit": "^9.5.11" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "6.x-dev" - }, - "laravel": { - "providers": [ - "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" - ] - } - }, - "autoload": { - "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": "2022-01-18T17:49:08+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.1.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/15a90844ad40f127afd244c0cad228de2a80052a", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a", - "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.1.1" - }, - "time": "2022-02-07T21:56:48+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.6.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "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.6.0" - }, - "time": "2022-01-04T19:58:01+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" - }, - "time": "2021-12-08T12:19:24+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "9.2.10", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d5850aaf931743067f4bfc1ae4cbd06468400687", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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 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", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.10" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-05T09:12:13+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "3.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-02T12:48:52+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "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/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:58:55+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T05:33:50+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.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/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:16:10+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "9.5.13", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/597cb647654ede35e43b137926dfdfef0fb11743", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.3.1", - "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": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.7", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", - "sebastian/version": "^3.0.2" - }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.13" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-01-24T07:33:35+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:08:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "1.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:08:54+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:30:19+00:00" - }, - { - "name": "sebastian/comparator", - "version": "4.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:49:45+00:00" - }, - { - "name": "sebastian/complexity", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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 calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:52:27+00:00" - }, - { - "name": "sebastian/diff", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:10:38+00:00" - }, - { - "name": "sebastian/environment", - "version": "5.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-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": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:52:38+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "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", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-11-11T14:18:36+00:00" - }, - { - "name": "sebastian/global-state", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-11T13:31:12+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-28T06:42:11+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "http://www.github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:17:30+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:45:17+00:00" - }, - { - "name": "sebastian/type", - "version": "2.3.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-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/2.3.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-15T12:49:02+00:00" - }, - { - "name": "sebastian/version", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:39:44+00:00" - }, - { - "name": "spatie/backtrace", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/backtrace.git", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "ext-json": "*", - "phpunit/phpunit": "^9.3", - "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": { - "issues": "https://github.com/spatie/backtrace/issues", - "source": "https://github.com/spatie/backtrace/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/sponsors/spatie", - "type": "github" - }, - { - "url": "https://spatie.be/open-source/support-us", - "type": "other" - } - ], - "time": "2021-11-09T10:57:15+00:00" - }, - { - "name": "spatie/flare-client-php", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/flare-client-php.git", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "shasum": "" - }, - "require": { - "illuminate/pipeline": "^8.0|^9.0", - "php": "^8.0", - "spatie/backtrace": "^1.2", - "symfony/http-foundation": "^5.0|^6.0", - "symfony/mime": "^5.2|^6.0", - "symfony/process": "^5.2|^6.0", - "symfony/var-dumper": "^5.2|^6.0" - }, - "require-dev": { - "dms/phpunit-arraysubset-asserts": "^0.3.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/phpunit-snapshot-assertions": "^4.0" - }, - "type": "library", - "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.0.1" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2022-02-04T15:21:00+00:00" - }, - { - "name": "spatie/ignition", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/spatie/ignition.git", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/d2d5ba823af3004268556e87dfc94449e4159f5a", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "monolog/monolog": "^2.0", - "php": "^8.0", - "spatie/flare-client-php": "^1.0", - "symfony/console": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "mockery/mockery": "^1.4", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/ray": "^1.32", - "symfony/process": "^5.4|^6.0" - }, - "type": "library", - "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": "2022-01-19T12:57:41+00:00" - }, - { - "name": "spatie/laravel-ignition", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/68250225a9f83b086462c2af1b1139dfde48fbd2", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*", - "illuminate/support": "^8.77|^9.0", - "monolog/monolog": "^2.3", - "php": "^8.0", - "spatie/flare-client-php": "^1.0.1", - "spatie/ignition": "^1.0", - "symfony/console": "^5.0|^6.0", - "symfony/var-dumper": "^5.0|^6.0" - }, - "require-dev": { - "filp/whoops": "^2.14", - "livewire/livewire": "^2.8|dev-develop", - "mockery/mockery": "^1.4", - "nunomaduro/larastan": "^1.0", - "orchestra/testbench": "^6.23|^7.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/laravel-ray": "^1.27" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Spatie\\LaravelIgnition\\IgnitionServiceProvider" - ], - "aliases": { - "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" - } - } - }, - "autoload": { - "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": "2022-02-04T15:25:56+00:00" - }, - { - "name": "squizlabs/php_codesniffer", - "version": "3.6.2", - "source": { - "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", - "shasum": "" - }, - "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.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": "lead" - } - ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", - "keywords": [ - "phpcs", - "standards" - ], - "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" - }, - "time": "2021-12-12T21:44:58+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2021-07-28T10:34:58+00:00" - } - ], - "aliases": [], - "minimum-stability": "dev", - "stability-flags": [], - "prefer-stable": true, - "prefer-lowest": false, - "platform": { - "php": "^8.0" - }, - "platform-dev": [], - "plugin-api-version": "2.1.0" -} diff --git a/Chapter17-Advanced/onlineStore/config/app.php b/Chapter17-Advanced/onlineStore/config/app.php deleted file mode 100644 index 1941d7c..0000000 --- a/Chapter17-Advanced/onlineStore/config/app.php +++ /dev/null @@ -1,197 +0,0 @@ - env('APP_NAME', 'Laravel'), - - /* - |-------------------------------------------------------------------------- - | Application Environment - |-------------------------------------------------------------------------- - | - | This value determines the "environment" your application is currently - | running in. This may determine how you prefer to configure various - | services the application utilizes. Set this in your ".env" file. - | - */ - - 'env' => env('APP_ENV', 'production'), - - /* - |-------------------------------------------------------------------------- - | Application Debug Mode - |-------------------------------------------------------------------------- - | - | When your application is in debug mode, detailed error messages with - | stack traces will be shown on every error that occurs within your - | application. If disabled, a simple generic error page is shown. - | - */ - - 'debug' => (bool) env('APP_DEBUG', false), - - /* - |-------------------------------------------------------------------------- - | Application URL - |-------------------------------------------------------------------------- - | - | This URL is used by the console to properly generate URLs when using - | the Artisan command line tool. You should set this to the root of - | your application so that it is used when running Artisan tasks. - | - */ - - 'url' => env('APP_URL', 'http://localhost'), - - 'asset_url' => env('ASSET_URL', null), - - /* - |-------------------------------------------------------------------------- - | 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', - - /* - |-------------------------------------------------------------------------- - | 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' => [ - - /* - * Laravel Framework Service Providers... - */ - Illuminate\Auth\AuthServiceProvider::class, - Illuminate\Broadcasting\BroadcastServiceProvider::class, - Illuminate\Bus\BusServiceProvider::class, - Illuminate\Cache\CacheServiceProvider::class, - Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, - Illuminate\Cookie\CookieServiceProvider::class, - Illuminate\Database\DatabaseServiceProvider::class, - Illuminate\Encryption\EncryptionServiceProvider::class, - Illuminate\Filesystem\FilesystemServiceProvider::class, - Illuminate\Foundation\Providers\FoundationServiceProvider::class, - Illuminate\Hashing\HashServiceProvider::class, - Illuminate\Mail\MailServiceProvider::class, - Illuminate\Notifications\NotificationServiceProvider::class, - Illuminate\Pagination\PaginationServiceProvider::class, - Illuminate\Pipeline\PipelineServiceProvider::class, - Illuminate\Queue\QueueServiceProvider::class, - Illuminate\Redis\RedisServiceProvider::class, - Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, - Illuminate\Session\SessionServiceProvider::class, - Illuminate\Translation\TranslationServiceProvider::class, - Illuminate\Validation\ValidationServiceProvider::class, - Illuminate\View\ViewServiceProvider::class, - - /* - * 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, - - ], - - /* - |-------------------------------------------------------------------------- - | 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([ - // ... - ])->toArray(), - -]; diff --git a/Chapter17-Advanced/onlineStore/config/auth.php b/Chapter17-Advanced/onlineStore/config/auth.php deleted file mode 100644 index d8c6cee..0000000 --- a/Chapter17-Advanced/onlineStore/config/auth.php +++ /dev/null @@ -1,111 +0,0 @@ - [ - '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 expire 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. - | - */ - - 'passwords' => [ - 'users' => [ - 'provider' => 'users', - 'table' => 'password_resets', - '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/Chapter17-Advanced/onlineStore/config/broadcasting.php b/Chapter17-Advanced/onlineStore/config/broadcasting.php deleted file mode 100644 index 67fcbbd..0000000 --- a/Chapter17-Advanced/onlineStore/config/broadcasting.php +++ /dev/null @@ -1,67 +0,0 @@ - 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'), - 'useTLS' => true, - ], - '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/Chapter17-Advanced/onlineStore/config/cache.php b/Chapter17-Advanced/onlineStore/config/cache.php deleted file mode 100644 index 8736c7a..0000000 --- a/Chapter17-Advanced/onlineStore/config/cache.php +++ /dev/null @@ -1,110 +0,0 @@ - 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'), - ], - - '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 a RAM based store such as APC or Memcached, there might - | be other applications utilizing the same cache. So, we'll specify a - | value to get prefixed to all our keys so we can avoid collisions. - | - */ - - 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'), - -]; diff --git a/Chapter17-Advanced/onlineStore/config/cors.php b/Chapter17-Advanced/onlineStore/config/cors.php deleted file mode 100644 index 8a39e6d..0000000 --- a/Chapter17-Advanced/onlineStore/config/cors.php +++ /dev/null @@ -1,34 +0,0 @@ - ['api/*', 'sanctum/csrf-cookie'], - - 'allowed_methods' => ['*'], - - 'allowed_origins' => ['*'], - - 'allowed_origins_patterns' => [], - - 'allowed_headers' => ['*'], - - 'exposed_headers' => [], - - 'max_age' => 0, - - 'supports_credentials' => false, - -]; diff --git a/Chapter17-Advanced/onlineStore/config/database.php b/Chapter17-Advanced/onlineStore/config/database.php deleted file mode 100644 index 0faebae..0000000 --- a/Chapter17-Advanced/onlineStore/config/database.php +++ /dev/null @@ -1,147 +0,0 @@ - env('DB_CONNECTION', 'mysql'), - - /* - |-------------------------------------------------------------------------- - | Database Connections - |-------------------------------------------------------------------------- - | - | Here are each of the database connections setup for your application. - | Of course, examples of configuring each database platform that is - | supported by Laravel is shown below to make development simple. - | - | - | All database work in Laravel is done through the PHP PDO facilities - | so make sure you have the driver for your particular database of - | choice installed on your machine before you begin development. - | - */ - - 'connections' => [ - - 'sqlite' => [ - 'driver' => 'sqlite', - 'url' => env('DATABASE_URL'), - 'database' => env('DB_DATABASE', database_path('database.sqlite')), - 'prefix' => '', - 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), - ], - - 'mysql' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '3306'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'unix_socket' => env('DB_SOCKET', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - 'pgsql' => [ - 'driver' => 'pgsql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '5432'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - 'search_path' => 'public', - 'sslmode' => 'prefer', - ], - - 'sqlsrv' => [ - 'driver' => 'sqlsrv', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', 'localhost'), - 'port' => env('DB_PORT', '1433'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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'), - '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'), - 'password' => env('REDIS_PASSWORD'), - 'port' => env('REDIS_PORT', '6379'), - 'database' => env('REDIS_CACHE_DB', '1'), - ], - - ], - -]; diff --git a/Chapter17-Advanced/onlineStore/config/filesystems.php b/Chapter17-Advanced/onlineStore/config/filesystems.php deleted file mode 100644 index cf5abce..0000000 --- a/Chapter17-Advanced/onlineStore/config/filesystems.php +++ /dev/null @@ -1,73 +0,0 @@ - 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 setup for each driver as an example of the required options. - | - | Supported Drivers: "local", "ftp", "sftp", "s3" - | - */ - - 'disks' => [ - - 'local' => [ - 'driver' => 'local', - 'root' => storage_path('app'), - ], - - 'public' => [ - 'driver' => 'local', - 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', - 'visibility' => 'public', - ], - - '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), - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter17-Advanced/onlineStore/config/hashing.php b/Chapter17-Advanced/onlineStore/config/hashing.php deleted file mode 100644 index bcd3be4..0000000 --- a/Chapter17-Advanced/onlineStore/config/hashing.php +++ /dev/null @@ -1,52 +0,0 @@ - '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/Chapter17-Advanced/onlineStore/config/logging.php b/Chapter17-Advanced/onlineStore/config/logging.php deleted file mode 100644 index fefe088..0000000 --- a/Chapter17-Advanced/onlineStore/config/logging.php +++ /dev/null @@ -1,119 +0,0 @@ - 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' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), - - /* - |-------------------------------------------------------------------------- - | 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'), - ], - - 'daily' => [ - 'driver' => 'daily', - 'path' => storage_path('logs/laravel.log'), - 'level' => env('LOG_LEVEL', 'debug'), - 'days' => 14, - ], - - 'slack' => [ - 'driver' => 'slack', - 'url' => env('LOG_SLACK_WEBHOOK_URL'), - 'username' => 'Laravel Log', - 'emoji' => ':boom:', - 'level' => env('LOG_LEVEL', 'critical'), - ], - - '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'), - ], - ], - - 'stderr' => [ - 'driver' => 'monolog', - 'level' => env('LOG_LEVEL', 'debug'), - 'handler' => StreamHandler::class, - 'formatter' => env('LOG_STDERR_FORMATTER'), - 'with' => [ - 'stream' => 'php://stderr', - ], - ], - - 'syslog' => [ - 'driver' => 'syslog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'errorlog' => [ - 'driver' => 'errorlog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'null' => [ - 'driver' => 'monolog', - 'handler' => NullHandler::class, - ], - - 'emergency' => [ - 'path' => storage_path('logs/laravel.log'), - ], - ], - -]; diff --git a/Chapter17-Advanced/onlineStore/config/mail.php b/Chapter17-Advanced/onlineStore/config/mail.php deleted file mode 100644 index 87b6fe3..0000000 --- a/Chapter17-Advanced/onlineStore/config/mail.php +++ /dev/null @@ -1,117 +0,0 @@ - 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", - | "postmark", "log", "array", "failover" - | - */ - - 'mailers' => [ - 'smtp' => [ - 'transport' => 'smtp', - '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, - ], - - 'ses' => [ - 'transport' => 'ses', - ], - - 'mailgun' => [ - 'transport' => 'mailgun', - ], - - 'postmark' => [ - 'transport' => 'postmark', - ], - - 'sendmail' => [ - 'transport' => 'sendmail', - 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -t -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/Chapter17-Advanced/onlineStore/config/queue.php b/Chapter17-Advanced/onlineStore/config/queue.php deleted file mode 100644 index 25ea5a8..0000000 --- a/Chapter17-Advanced/onlineStore/config/queue.php +++ /dev/null @@ -1,93 +0,0 @@ - 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, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter17-Advanced/onlineStore/config/sanctum.php b/Chapter17-Advanced/onlineStore/config/sanctum.php deleted file mode 100644 index 9281c92..0000000 --- a/Chapter17-Advanced/onlineStore/config/sanctum.php +++ /dev/null @@ -1,65 +0,0 @@ - explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( - '%s%s', - 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', - env('APP_URL') ? ','.parse_url(env('APP_URL'), PHP_URL_HOST) : '' - ))), - - /* - |-------------------------------------------------------------------------- - | 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/Chapter17-Advanced/onlineStore/config/services.php b/Chapter17-Advanced/onlineStore/config/services.php deleted file mode 100644 index 2a1d616..0000000 --- a/Chapter17-Advanced/onlineStore/config/services.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - 'domain' => env('MAILGUN_DOMAIN'), - 'secret' => env('MAILGUN_SECRET'), - 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), - ], - - '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/Chapter17-Advanced/onlineStore/config/session.php b/Chapter17-Advanced/onlineStore/config/session.php deleted file mode 100644 index 8fed97c..0000000 --- a/Chapter17-Advanced/onlineStore/config/session.php +++ /dev/null @@ -1,201 +0,0 @@ - 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/Chapter17-Advanced/onlineStore/config/view.php b/Chapter17-Advanced/onlineStore/config/view.php deleted file mode 100644 index 22b8a18..0000000 --- a/Chapter17-Advanced/onlineStore/config/view.php +++ /dev/null @@ -1,36 +0,0 @@ - [ - 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/Chapter17-Advanced/onlineStore/database/.gitignore b/Chapter17-Advanced/onlineStore/database/.gitignore deleted file mode 100644 index 9b19b93..0000000 --- a/Chapter17-Advanced/onlineStore/database/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.sqlite* diff --git a/Chapter17-Advanced/onlineStore/database/factories/UserFactory.php b/Chapter17-Advanced/onlineStore/database/factories/UserFactory.php deleted file mode 100644 index d6ca926..0000000 --- a/Chapter17-Advanced/onlineStore/database/factories/UserFactory.php +++ /dev/null @@ -1,42 +0,0 @@ - - */ -class UserFactory extends Factory -{ - /** - * Define the model's default state. - * - * @return array - */ - public function definition() - { - return [ - 'name' => $this->faker->name(), - 'email' => $this->faker->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. - * - * @return \Illuminate\Database\Eloquent\Factories\Factory - */ - public function unverified() - { - return $this->state(function (array $attributes) { - return [ - 'email_verified_at' => null, - ]; - }); - } -} diff --git a/Chapter17-Advanced/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php b/Chapter17-Advanced/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php deleted file mode 100644 index cf6b776..0000000 --- a/Chapter17-Advanced/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->string('name'); - $table->string('email')->unique(); - $table->timestamp('email_verified_at')->nullable(); - $table->string('password'); - $table->rememberToken(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('users'); - } -}; diff --git a/Chapter17-Advanced/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php b/Chapter17-Advanced/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php deleted file mode 100644 index fcacb80..0000000 --- a/Chapter17-Advanced/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php +++ /dev/null @@ -1,32 +0,0 @@ -string('email')->index(); - $table->string('token'); - $table->timestamp('created_at')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('password_resets'); - } -}; diff --git a/Chapter17-Advanced/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/Chapter17-Advanced/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php deleted file mode 100644 index 1719198..0000000 --- a/Chapter17-Advanced/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php +++ /dev/null @@ -1,36 +0,0 @@ -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. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('failed_jobs'); - } -}; diff --git a/Chapter17-Advanced/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/Chapter17-Advanced/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php deleted file mode 100644 index fd235f8..0000000 --- a/Chapter17-Advanced/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->morphs('tokenable'); - $table->string('name'); - $table->string('token', 64)->unique(); - $table->text('abilities')->nullable(); - $table->timestamp('last_used_at')->nullable(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('personal_access_tokens'); - } -}; diff --git a/Chapter17-Advanced/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php b/Chapter17-Advanced/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php deleted file mode 100644 index 2eecdc2..0000000 --- a/Chapter17-Advanced/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php +++ /dev/null @@ -1,35 +0,0 @@ -id(); - $table->string('name'); - $table->text('description'); - $table->string('image'); - $table->integer('price'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('products'); - } -}; diff --git a/Chapter17-Advanced/onlineStore/database/seeders/DatabaseSeeder.php b/Chapter17-Advanced/onlineStore/database/seeders/DatabaseSeeder.php deleted file mode 100644 index 71f673f..0000000 --- a/Chapter17-Advanced/onlineStore/database/seeders/DatabaseSeeder.php +++ /dev/null @@ -1,19 +0,0 @@ -create(); - } -} diff --git a/Chapter17-Advanced/onlineStore/lang/en.json b/Chapter17-Advanced/onlineStore/lang/en.json deleted file mode 100644 index 577680d..0000000 --- a/Chapter17-Advanced/onlineStore/lang/en.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "The :attribute must contain at least one letter.": "The :attribute must contain at least one letter.", - "The :attribute must contain at least one number.": "The :attribute must contain at least one number.", - "The :attribute must contain at least one symbol.": "The :attribute must contain at least one symbol.", - "The :attribute must contain at least one uppercase and one lowercase letter.": "The :attribute must contain at least one uppercase and one lowercase letter.", - "The given :attribute has appeared in a data leak. Please choose a different :attribute.": "The given :attribute has appeared in a data leak. Please choose a different :attribute." -} diff --git a/Chapter17-Advanced/onlineStore/lang/en/auth.php b/Chapter17-Advanced/onlineStore/lang/en/auth.php deleted file mode 100644 index 6598e2c..0000000 --- a/Chapter17-Advanced/onlineStore/lang/en/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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/Chapter17-Advanced/onlineStore/lang/en/pagination.php b/Chapter17-Advanced/onlineStore/lang/en/pagination.php deleted file mode 100644 index d481411..0000000 --- a/Chapter17-Advanced/onlineStore/lang/en/pagination.php +++ /dev/null @@ -1,19 +0,0 @@ - '« Previous', - 'next' => 'Next »', - -]; diff --git a/Chapter17-Advanced/onlineStore/lang/en/passwords.php b/Chapter17-Advanced/onlineStore/lang/en/passwords.php deleted file mode 100644 index 2345a56..0000000 --- a/Chapter17-Advanced/onlineStore/lang/en/passwords.php +++ /dev/null @@ -1,22 +0,0 @@ - '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/Chapter17-Advanced/onlineStore/lang/en/validation.php b/Chapter17-Advanced/onlineStore/lang/en/validation.php deleted file mode 100644 index 783003c..0000000 --- a/Chapter17-Advanced/onlineStore/lang/en/validation.php +++ /dev/null @@ -1,163 +0,0 @@ - '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' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - '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' => [ - 'numeric' => 'The :attribute must be greater than :value.', - 'file' => 'The :attribute must be greater than :value kilobytes.', - 'string' => 'The :attribute must be greater than :value characters.', - 'array' => 'The :attribute must have more than :value items.', - ], - 'gte' => [ - 'numeric' => 'The :attribute must be greater than or equal to :value.', - 'file' => 'The :attribute must be greater than or equal to :value kilobytes.', - 'string' => 'The :attribute must be greater than or equal to :value characters.', - 'array' => 'The :attribute must have :value items or more.', - ], - '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' => [ - 'numeric' => 'The :attribute must be less than :value.', - 'file' => 'The :attribute must be less than :value kilobytes.', - 'string' => 'The :attribute must be less than :value characters.', - 'array' => 'The :attribute must have less than :value items.', - ], - 'lte' => [ - 'numeric' => 'The :attribute must be less than or equal to :value.', - 'file' => 'The :attribute must be less than or equal to :value kilobytes.', - 'string' => 'The :attribute must be less than or equal to :value characters.', - 'array' => 'The :attribute must not have more than :value items.', - ], - 'mac_address' => 'The :attribute must be a valid MAC address.', - 'max' => [ - 'numeric' => 'The :attribute must not be greater than :max.', - 'file' => 'The :attribute must not be greater than :max kilobytes.', - 'string' => 'The :attribute must not be greater than :max characters.', - 'array' => 'The :attribute must not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - '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.', - 'password' => 'The password is incorrect.', - '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' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - '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/Chapter17-Advanced/onlineStore/package.json b/Chapter17-Advanced/onlineStore/package.json deleted file mode 100644 index 7a9aecd..0000000 --- a/Chapter17-Advanced/onlineStore/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "private": true, - "scripts": { - "dev": "npm run development", - "development": "mix", - "watch": "mix watch", - "watch-poll": "mix watch -- --watch-options-poll=1000", - "hot": "mix watch --hot", - "prod": "npm run production", - "production": "mix --production" - }, - "devDependencies": { - "axios": "^0.25", - "laravel-mix": "^6.0.6", - "lodash": "^4.17.19", - "postcss": "^8.1.14" - } -} diff --git a/Chapter17-Advanced/onlineStore/phpcs.xml b/Chapter17-Advanced/onlineStore/phpcs.xml deleted file mode 100644 index a1cf2b6..0000000 --- a/Chapter17-Advanced/onlineStore/phpcs.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - The coding standard for the Online Store project - - app/ - config/ - database/ - routes/ - */migrations/* - diff --git a/Chapter17-Advanced/onlineStore/phpunit.xml b/Chapter17-Advanced/onlineStore/phpunit.xml deleted file mode 100644 index 2ac86a1..0000000 --- a/Chapter17-Advanced/onlineStore/phpunit.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - ./tests/Unit - - - ./tests/Feature - - - - - ./app - - - - - - - - - - - - - - diff --git a/Chapter17-Advanced/onlineStore/public/.htaccess b/Chapter17-Advanced/onlineStore/public/.htaccess deleted file mode 100644 index 3aec5e2..0000000 --- a/Chapter17-Advanced/onlineStore/public/.htaccess +++ /dev/null @@ -1,21 +0,0 @@ - - - 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/Chapter17-Advanced/onlineStore/public/css/admin.css b/Chapter17-Advanced/onlineStore/public/css/admin.css deleted file mode 100644 index d9495a1..0000000 --- a/Chapter17-Advanced/onlineStore/public/css/admin.css +++ /dev/null @@ -1,33 +0,0 @@ -.copyright { - background-color: #1a252f; -} - -.fixed { - -ms-flex: 0 0 250px; - flex: 0 0 250px; -} - -.content-grey { - background-color: #f8f9fc; -} - -hr { - margin-top: 0.8em; - margin-bottom: 0.8em; -} - -.img-profile { - height: 2rem; - width: 2rem; -} - -.profile-font { - color: #858796 !important; - font-size: 80%; - font-weight: 400; -} - -.card-header { - background-color: #f8f9fc; - border-bottom: 1px solid #e3e6f0; -} diff --git a/Chapter17-Advanced/onlineStore/public/css/app.css b/Chapter17-Advanced/onlineStore/public/css/app.css deleted file mode 100644 index cabac36..0000000 --- a/Chapter17-Advanced/onlineStore/public/css/app.css +++ /dev/null @@ -1,20 +0,0 @@ -.bg-secondary { - background-color: #2c3e50 !important; -} - -.copyright { - background-color: #1a252f; -} - -.bg-primary { - background-color: #1abc9c !important; -} - -nav{ - font-weight: 700; -} - -.img-card{ - height: 18vw; - object-fit: cover; -} diff --git a/Chapter17-Advanced/onlineStore/public/favicon.ico b/Chapter17-Advanced/onlineStore/public/favicon.ico deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter17-Advanced/onlineStore/public/img/game.png b/Chapter17-Advanced/onlineStore/public/img/game.png deleted file mode 100644 index 85420e8bbc16098bf26b4ee63bde0e91a19d1f2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25896 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 cz>% diff --git a/Chapter17-Advanced/onlineStore/public/img/safe.png b/Chapter17-Advanced/onlineStore/public/img/safe.png deleted file mode 100644 index 445942c707af53210931f9f4f99f6d3cb69e5d89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19240 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
    w==XB0?3|p=#`o%NsudE(E-U#KS3Snw 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 o>ir+C;RN10sIS0&a;p - - - - - - - - - - - - - - - - - - diff --git a/Chapter17-Advanced/onlineStore/public/index.php b/Chapter17-Advanced/onlineStore/public/index.php deleted file mode 100644 index 1d69f3a..0000000 --- a/Chapter17-Advanced/onlineStore/public/index.php +++ /dev/null @@ -1,55 +0,0 @@ -make(Kernel::class); - -$response = $kernel->handle( - $request = Request::capture() -)->send(); - -$kernel->terminate($request, $response); diff --git a/Chapter17-Advanced/onlineStore/public/robots.txt b/Chapter17-Advanced/onlineStore/public/robots.txt deleted file mode 100644 index eb05362..0000000 --- a/Chapter17-Advanced/onlineStore/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: diff --git a/Chapter17-Advanced/onlineStore/resources/css/app.css b/Chapter17-Advanced/onlineStore/resources/css/app.css deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter17-Advanced/onlineStore/resources/js/app.js b/Chapter17-Advanced/onlineStore/resources/js/app.js deleted file mode 100644 index 40c55f6..0000000 --- a/Chapter17-Advanced/onlineStore/resources/js/app.js +++ /dev/null @@ -1 +0,0 @@ -require('./bootstrap'); diff --git a/Chapter17-Advanced/onlineStore/resources/js/bootstrap.js b/Chapter17-Advanced/onlineStore/resources/js/bootstrap.js deleted file mode 100644 index 6922577..0000000 --- a/Chapter17-Advanced/onlineStore/resources/js/bootstrap.js +++ /dev/null @@ -1,28 +0,0 @@ -window._ = require('lodash'); - -/** - * 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 = require('axios'); - -window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; - -/** - * 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'; - -// window.Pusher = require('pusher-js'); - -// window.Echo = new Echo({ -// broadcaster: 'pusher', -// key: process.env.MIX_PUSHER_APP_KEY, -// cluster: process.env.MIX_PUSHER_APP_CLUSTER, -// forceTLS: true -// }); diff --git a/Chapter17-Advanced/onlineStore/resources/views/admin/home/index.blade.php b/Chapter17-Advanced/onlineStore/resources/views/admin/home/index.blade.php deleted file mode 100644 index a2b4868..0000000 --- a/Chapter17-Advanced/onlineStore/resources/views/admin/home/index.blade.php +++ /dev/null @@ -1,12 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
    -
    - Admin Panel - Home Page -
    -
    - Welcome to the Admin Panel, use the sidebar to navigate between the different options. -
    -
    -@endsection diff --git a/Chapter17-Advanced/onlineStore/resources/views/admin/product/index.blade.php b/Chapter17-Advanced/onlineStore/resources/views/admin/product/index.blade.php deleted file mode 100644 index c81f6a2..0000000 --- a/Chapter17-Advanced/onlineStore/resources/views/admin/product/index.blade.php +++ /dev/null @@ -1,73 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
    -
    - Create Products -
    -
    - @if($errors->any()) -
      - @foreach($errors->all() as $error) -
    • - {{ $error }}
    • - @endforeach -
    - @endif - -
    - @csrf -
    -
    -
    - -
    - -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    - - -
    - -
    -
    -
    - -
    -
    - Manage Products -
    -
    - - - - - - - - - - - @foreach ($viewData["products"] as $product) - - - - - - - @endforeach - -
    IDNameEditDelete
    {{ $product->getId() }}{{ $product->getName() }}EditDelete
    -
    -
    -@endsection diff --git a/Chapter17-Advanced/onlineStore/resources/views/home/about.blade.php b/Chapter17-Advanced/onlineStore/resources/views/home/about.blade.php deleted file mode 100644 index f79abf3..0000000 --- a/Chapter17-Advanced/onlineStore/resources/views/home/about.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    -
    -
    -

    {{ $viewData["description"] }}

    -
    -
    -

    {{ $viewData["author"] }}

    -
    -
    -
    -@endsection diff --git a/Chapter17-Advanced/onlineStore/resources/views/home/index.blade.php b/Chapter17-Advanced/onlineStore/resources/views/home/index.blade.php deleted file mode 100644 index 1affb20..0000000 --- a/Chapter17-Advanced/onlineStore/resources/views/home/index.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('content') -
    -
    - -
    -
    - -
    -
    - -
    -
    -@endsection diff --git a/Chapter17-Advanced/onlineStore/resources/views/layouts/admin.blade.php b/Chapter17-Advanced/onlineStore/resources/views/layouts/admin.blade.php deleted file mode 100644 index a1a1d57..0000000 --- a/Chapter17-Advanced/onlineStore/resources/views/layouts/admin.blade.php +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - @yield('title', 'Admin - Online Store') - - - -
    - - - -
    - - -
    - @yield('content') -
    -
    -
    - - - - - - - - - diff --git a/Chapter17-Advanced/onlineStore/resources/views/layouts/app.blade.php b/Chapter17-Advanced/onlineStore/resources/views/layouts/app.blade.php deleted file mode 100644 index eee7fcb..0000000 --- a/Chapter17-Advanced/onlineStore/resources/views/layouts/app.blade.php +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - @yield('title', 'Online Store') - - - - - -
    -
    -

    @yield('subtitle', 'A Laravel Online Store')

    -
    -
    - - -
    - @yield('content') -
    - - - - - - - diff --git a/Chapter17-Advanced/onlineStore/resources/views/product/index.blade.php b/Chapter17-Advanced/onlineStore/resources/views/product/index.blade.php deleted file mode 100644 index c82528a..0000000 --- a/Chapter17-Advanced/onlineStore/resources/views/product/index.blade.php +++ /dev/null @@ -1,18 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    - @foreach ($viewData["products"] as $product) - - @endforeach -
    -@endsection diff --git a/Chapter17-Advanced/onlineStore/resources/views/product/show.blade.php b/Chapter17-Advanced/onlineStore/resources/views/product/show.blade.php deleted file mode 100644 index 0adad34..0000000 --- a/Chapter17-Advanced/onlineStore/resources/views/product/show.blade.php +++ /dev/null @@ -1,21 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    -
    -
    - getImage()) }}" class="img-fluid rounded-start"> -
    -
    -
    -
    - {{ $viewData["product"]->getName() }} (${{ $viewData["product"]->getPrice() }}) -
    -

    {{ $viewData["product"]->getDescription() }}

    -

    Add to Cart

    -
    -
    -
    -
    -@endsection diff --git a/Chapter17-Advanced/onlineStore/resources/views/welcome.blade.php b/Chapter17-Advanced/onlineStore/resources/views/welcome.blade.php deleted file mode 100644 index c587c72..0000000 --- a/Chapter17-Advanced/onlineStore/resources/views/welcome.blade.php +++ /dev/null @@ -1,7 +0,0 @@ -@extends('layouts.app') -@section('title', 'Home Page - Online Store') -@section('content') -
    - Welcome to the application -
    -@endsection \ No newline at end of file diff --git a/Chapter17-Advanced/onlineStore/routes/api.php b/Chapter17-Advanced/onlineStore/routes/api.php deleted file mode 100644 index eb6fa48..0000000 --- a/Chapter17-Advanced/onlineStore/routes/api.php +++ /dev/null @@ -1,19 +0,0 @@ -get('/user', function (Request $request) { - return $request->user(); -}); diff --git a/Chapter17-Advanced/onlineStore/routes/channels.php b/Chapter17-Advanced/onlineStore/routes/channels.php deleted file mode 100644 index 5d451e1..0000000 --- a/Chapter17-Advanced/onlineStore/routes/channels.php +++ /dev/null @@ -1,18 +0,0 @@ -id === (int) $id; -}); diff --git a/Chapter17-Advanced/onlineStore/routes/console.php b/Chapter17-Advanced/onlineStore/routes/console.php deleted file mode 100644 index e05f4c9..0000000 --- a/Chapter17-Advanced/onlineStore/routes/console.php +++ /dev/null @@ -1,19 +0,0 @@ -comment(Inspiring::quote()); -})->purpose('Display an inspiring quote'); diff --git a/Chapter17-Advanced/onlineStore/routes/web.php b/Chapter17-Advanced/onlineStore/routes/web.php deleted file mode 100644 index e1829ed..0000000 --- a/Chapter17-Advanced/onlineStore/routes/web.php +++ /dev/null @@ -1,22 +0,0 @@ -name("home.index"); -Route::get('/about', 'App\Http\Controllers\HomeController@about')->name("home.about"); -Route::get('/products', 'App\Http\Controllers\ProductController@index')->name("product.index"); -Route::get('/products/{id}', 'App\Http\Controllers\ProductController@show')->name("product.show"); -Route::get('/admin', 'App\Http\Controllers\Admin\AdminHomeController@index')->name("admin.home.index"); -Route::get('/admin/products', 'App\Http\Controllers\Admin\AdminProductController@index')->name("admin.product.index"); -Route::post('/admin/products/store', 'App\Http\Controllers\Admin\AdminProductController@store')->name("admin.product.store"); diff --git a/Chapter17-Advanced/onlineStore/storage/app/.gitignore b/Chapter17-Advanced/onlineStore/storage/app/.gitignore deleted file mode 100644 index 8f4803c..0000000 --- a/Chapter17-Advanced/onlineStore/storage/app/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!public/ -!.gitignore diff --git a/Chapter17-Advanced/onlineStore/storage/app/public/.gitignore b/Chapter17-Advanced/onlineStore/storage/app/public/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter17-Advanced/onlineStore/storage/app/public/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter17-Advanced/onlineStore/storage/framework/.gitignore b/Chapter17-Advanced/onlineStore/storage/framework/.gitignore deleted file mode 100644 index 05c4471..0000000 --- a/Chapter17-Advanced/onlineStore/storage/framework/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -compiled.php -config.php -down -events.scanned.php -maintenance.php -routes.php -routes.scanned.php -schedule-* -services.json diff --git a/Chapter17-Advanced/onlineStore/storage/framework/cache/.gitignore b/Chapter17-Advanced/onlineStore/storage/framework/cache/.gitignore deleted file mode 100644 index 01e4a6c..0000000 --- a/Chapter17-Advanced/onlineStore/storage/framework/cache/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!data/ -!.gitignore diff --git a/Chapter17-Advanced/onlineStore/storage/framework/cache/data/.gitignore b/Chapter17-Advanced/onlineStore/storage/framework/cache/data/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter17-Advanced/onlineStore/storage/framework/cache/data/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter17-Advanced/onlineStore/storage/framework/sessions/.gitignore b/Chapter17-Advanced/onlineStore/storage/framework/sessions/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter17-Advanced/onlineStore/storage/framework/sessions/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter17-Advanced/onlineStore/storage/framework/testing/.gitignore b/Chapter17-Advanced/onlineStore/storage/framework/testing/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter17-Advanced/onlineStore/storage/framework/testing/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter17-Advanced/onlineStore/storage/framework/views/.gitignore b/Chapter17-Advanced/onlineStore/storage/framework/views/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter17-Advanced/onlineStore/storage/framework/views/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter17-Advanced/onlineStore/storage/logs/.gitignore b/Chapter17-Advanced/onlineStore/storage/logs/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter17-Advanced/onlineStore/storage/logs/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter17-Advanced/onlineStore/tests/CreatesApplication.php b/Chapter17-Advanced/onlineStore/tests/CreatesApplication.php deleted file mode 100644 index 547152f..0000000 --- a/Chapter17-Advanced/onlineStore/tests/CreatesApplication.php +++ /dev/null @@ -1,22 +0,0 @@ -make(Kernel::class)->bootstrap(); - - return $app; - } -} diff --git a/Chapter17-Advanced/onlineStore/tests/Feature/ExampleTest.php b/Chapter17-Advanced/onlineStore/tests/Feature/ExampleTest.php deleted file mode 100644 index 78ccc21..0000000 --- a/Chapter17-Advanced/onlineStore/tests/Feature/ExampleTest.php +++ /dev/null @@ -1,21 +0,0 @@ -get('/'); - - $response->assertStatus(200); - } -} diff --git a/Chapter17-Advanced/onlineStore/tests/TestCase.php b/Chapter17-Advanced/onlineStore/tests/TestCase.php deleted file mode 100644 index 2932d4a..0000000 --- a/Chapter17-Advanced/onlineStore/tests/TestCase.php +++ /dev/null @@ -1,10 +0,0 @@ -assertTrue(true); - } -} diff --git a/Chapter17-Advanced/onlineStore/webpack.mix.js b/Chapter17-Advanced/onlineStore/webpack.mix.js deleted file mode 100644 index 2a22dc1..0000000 --- a/Chapter17-Advanced/onlineStore/webpack.mix.js +++ /dev/null @@ -1,17 +0,0 @@ -const mix = require('laravel-mix'); - -/* - |-------------------------------------------------------------------------- - | Mix Asset Management - |-------------------------------------------------------------------------- - | - | Mix provides a clean, fluent API for defining some Webpack build steps - | for your Laravel applications. By default, we are compiling the CSS - | file for the application as well as bundling up all the JS files. - | - */ - -mix.js('resources/js/app.js', 'public/js') - .postCss('resources/css/app.css', 'public/css', [ - // - ]); diff --git a/Chapter17/onlineStore/.editorconfig b/Chapter17/onlineStore/.editorconfig deleted file mode 100644 index 1671c9b..0000000 --- a/Chapter17/onlineStore/.editorconfig +++ /dev/null @@ -1,18 +0,0 @@ -root = true - -[*] -charset = utf-8 -end_of_line = lf -insert_final_newline = true -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true - -[*.md] -trim_trailing_whitespace = false - -[*.{yml,yaml}] -indent_size = 2 - -[docker-compose.yml] -indent_size = 4 diff --git a/Chapter17/onlineStore/.env.example b/Chapter17/onlineStore/.env.example deleted file mode 100644 index 8510237..0000000 --- a/Chapter17/onlineStore/.env.example +++ /dev/null @@ -1,52 +0,0 @@ -APP_NAME=Laravel -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=laravel -DB_USERNAME=root -DB_PASSWORD= - -BROADCAST_DRIVER=log -CACHE_DRIVER=file -FILESYSTEM_DISK=local -QUEUE_CONNECTION=sync -SESSION_DRIVER=file -SESSION_LIFETIME=120 - -MEMCACHED_HOST=127.0.0.1 - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -MAIL_MAILER=smtp -MAIL_HOST=mailhog -MAIL_PORT=1025 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS=null -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_APP_CLUSTER=mt1 - -MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/Chapter17/onlineStore/.gitattributes b/Chapter17/onlineStore/.gitattributes deleted file mode 100644 index 510d996..0000000 --- a/Chapter17/onlineStore/.gitattributes +++ /dev/null @@ -1,10 +0,0 @@ -* text=auto - -*.blade.php diff=html -*.css diff=css -*.html diff=html -*.md diff=markdown -*.php diff=php - -/.github export-ignore -CHANGELOG.md export-ignore diff --git a/Chapter17/onlineStore/.gitignore b/Chapter17/onlineStore/.gitignore deleted file mode 100644 index eb003b0..0000000 --- a/Chapter17/onlineStore/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -/node_modules -/public/hot -/public/storage -/storage/*.key -/vendor -.env -.env.backup -.phpunit.result.cache -docker-compose.override.yml -Homestead.json -Homestead.yaml -npm-debug.log -yarn-error.log -/.idea -/.vscode diff --git a/Chapter17/onlineStore/.styleci.yml b/Chapter17/onlineStore/.styleci.yml deleted file mode 100644 index 679a631..0000000 --- a/Chapter17/onlineStore/.styleci.yml +++ /dev/null @@ -1,13 +0,0 @@ -php: - preset: laravel - version: 8 - disabled: - - no_unused_imports - finder: - not-name: - - index.php -js: - finder: - not-name: - - webpack.mix.js -css: true diff --git a/Chapter17/onlineStore/README.md b/Chapter17/onlineStore/README.md deleted file mode 100644 index f171eca..0000000 --- a/Chapter17/onlineStore/README.md +++ /dev/null @@ -1,64 +0,0 @@ -

    - -

    -Build Status -Total Downloads -Latest Stable Version -License -

    - -## About Laravel - -Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as: - -- [Simple, fast routing engine](https://laravel.com/docs/routing). -- [Powerful dependency injection container](https://laravel.com/docs/container). -- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage. -- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent). -- Database agnostic [schema migrations](https://laravel.com/docs/migrations). -- [Robust background job processing](https://laravel.com/docs/queues). -- [Real-time event broadcasting](https://laravel.com/docs/broadcasting). - -Laravel is accessible, powerful, and provides tools required for large, robust applications. - -## Learning Laravel - -Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework. - -If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 2000 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library. - -## Laravel Sponsors - -We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell). - -### Premium Partners - -- **[Vehikl](https://vehikl.com/)** -- **[Tighten Co.](https://tighten.co)** -- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** -- **[64 Robots](https://64robots.com)** -- **[Cubet Techno Labs](https://cubettech.com)** -- **[Cyber-Duck](https://cyber-duck.co.uk)** -- **[Many](https://www.many.co.uk)** -- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)** -- **[DevSquad](https://devsquad.com)** -- **[Curotec](https://www.curotec.com/services/technologies/laravel/)** -- **[OP.GG](https://op.gg)** -- **[WebReinvent](https://webreinvent.com/?utm_source=laravel&utm_medium=github&utm_campaign=patreon-sponsors)** -- **[Lendio](https://lendio.com)** - -## Contributing - -Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions). - -## Code of Conduct - -In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). - -## Security Vulnerabilities - -If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed. - -## License - -The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). diff --git a/Chapter17/onlineStore/app/Console/Kernel.php b/Chapter17/onlineStore/app/Console/Kernel.php deleted file mode 100644 index d8bc1d2..0000000 --- a/Chapter17/onlineStore/app/Console/Kernel.php +++ /dev/null @@ -1,32 +0,0 @@ -command('inspire')->hourly(); - } - - /** - * Register the commands for the application. - * - * @return void - */ - protected function commands() - { - $this->load(__DIR__.'/Commands'); - - require base_path('routes/console.php'); - } -} diff --git a/Chapter17/onlineStore/app/Exceptions/Handler.php b/Chapter17/onlineStore/app/Exceptions/Handler.php deleted file mode 100644 index 8e7fbd1..0000000 --- a/Chapter17/onlineStore/app/Exceptions/Handler.php +++ /dev/null @@ -1,41 +0,0 @@ -> - */ - protected $dontReport = [ - // - ]; - - /** - * A list of the inputs that are never flashed for validation exceptions. - * - * @var array - */ - protected $dontFlash = [ - 'current_password', - 'password', - 'password_confirmation', - ]; - - /** - * Register the exception handling callbacks for the application. - * - * @return void - */ - public function register() - { - $this->reportable(function (Throwable $e) { - // - }); - } -} diff --git a/Chapter17/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php b/Chapter17/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php deleted file mode 100644 index cd78cb3..0000000 --- a/Chapter17/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php +++ /dev/null @@ -1,16 +0,0 @@ -with("viewData", $viewData); - } -} diff --git a/Chapter17/onlineStore/app/Http/Controllers/Admin/AdminProductController.php b/Chapter17/onlineStore/app/Http/Controllers/Admin/AdminProductController.php deleted file mode 100644 index 313ced3..0000000 --- a/Chapter17/onlineStore/app/Http/Controllers/Admin/AdminProductController.php +++ /dev/null @@ -1,37 +0,0 @@ -with("viewData", $viewData); - } - - public function store(Request $request) - { - $request->validate([ - "name" => "required|max:255", - "description" => "required", - "price" => "required|numeric|gt:0", - 'image' => 'image', - ]); - - $newProduct = new Product(); - $newProduct->setName($request->input('name')); - $newProduct->setDescription($request->input('description')); - $newProduct->setPrice($request->input('price')); - $newProduct->setImage("game.png"); - $newProduct->save(); - - return back(); - } -} diff --git a/Chapter17/onlineStore/app/Http/Controllers/Controller.php b/Chapter17/onlineStore/app/Http/Controllers/Controller.php deleted file mode 100644 index a0a2a8a..0000000 --- a/Chapter17/onlineStore/app/Http/Controllers/Controller.php +++ /dev/null @@ -1,13 +0,0 @@ -with("viewData", $viewData); - } - - public function about() - { - $viewData = []; - $viewData["title"] = "About us - Online Store"; - $viewData["subtitle"] = "About us"; - $viewData["description"] = "This is an about page ..."; - $viewData["author"] = "Developed by: Your Name"; - return view('home.about')->with("viewData", $viewData); - } -} diff --git a/Chapter17/onlineStore/app/Http/Controllers/ProductController.php b/Chapter17/onlineStore/app/Http/Controllers/ProductController.php deleted file mode 100644 index d27a3a3..0000000 --- a/Chapter17/onlineStore/app/Http/Controllers/ProductController.php +++ /dev/null @@ -1,29 +0,0 @@ -with("viewData", $viewData); - } - - public function show($id) - { - $viewData = []; - $product = Product::findOrFail($id); - $viewData["title"] = $product->getName()." - Online Store"; - $viewData["subtitle"] = $product->getName()." - Product information"; - $viewData["product"] = $product; - return view('product.show')->with("viewData", $viewData); - } -} diff --git a/Chapter17/onlineStore/app/Http/Kernel.php b/Chapter17/onlineStore/app/Http/Kernel.php deleted file mode 100644 index d3722c2..0000000 --- a/Chapter17/onlineStore/app/Http/Kernel.php +++ /dev/null @@ -1,67 +0,0 @@ - - */ - protected $middleware = [ - // \App\Http\Middleware\TrustHosts::class, - \App\Http\Middleware\TrustProxies::class, - \Fruitcake\Cors\HandleCors::class, - \App\Http\Middleware\PreventRequestsDuringMaintenance::class, - \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, - \App\Http\Middleware\TrimStrings::class, - \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, - ]; - - /** - * The application's route middleware groups. - * - * @var array> - */ - protected $middlewareGroups = [ - 'web' => [ - \App\Http\Middleware\EncryptCookies::class, - \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, - \Illuminate\Session\Middleware\StartSession::class, - // \Illuminate\Session\Middleware\AuthenticateSession::class, - \Illuminate\View\Middleware\ShareErrorsFromSession::class, - \App\Http\Middleware\VerifyCsrfToken::class, - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - - 'api' => [ - // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, - 'throttle:api', - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - ]; - - /** - * The application's route middleware. - * - * These middleware may be assigned to groups or used individually. - * - * @var array - */ - protected $routeMiddleware = [ - 'auth' => \App\Http\Middleware\Authenticate::class, - 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::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, - 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, - 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, - 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, - ]; -} diff --git a/Chapter17/onlineStore/app/Http/Middleware/Authenticate.php b/Chapter17/onlineStore/app/Http/Middleware/Authenticate.php deleted file mode 100644 index 704089a..0000000 --- a/Chapter17/onlineStore/app/Http/Middleware/Authenticate.php +++ /dev/null @@ -1,21 +0,0 @@ -expectsJson()) { - return route('login'); - } - } -} diff --git a/Chapter17/onlineStore/app/Http/Middleware/EncryptCookies.php b/Chapter17/onlineStore/app/Http/Middleware/EncryptCookies.php deleted file mode 100644 index 867695b..0000000 --- a/Chapter17/onlineStore/app/Http/Middleware/EncryptCookies.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter17/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/Chapter17/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php deleted file mode 100644 index 74cbd9a..0000000 --- a/Chapter17/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter17/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php b/Chapter17/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php deleted file mode 100644 index a2813a0..0000000 --- a/Chapter17/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php +++ /dev/null @@ -1,32 +0,0 @@ -check()) { - return redirect(RouteServiceProvider::HOME); - } - } - - return $next($request); - } -} diff --git a/Chapter17/onlineStore/app/Http/Middleware/TrimStrings.php b/Chapter17/onlineStore/app/Http/Middleware/TrimStrings.php deleted file mode 100644 index 88cadca..0000000 --- a/Chapter17/onlineStore/app/Http/Middleware/TrimStrings.php +++ /dev/null @@ -1,19 +0,0 @@ - - */ - protected $except = [ - 'current_password', - 'password', - 'password_confirmation', - ]; -} diff --git a/Chapter17/onlineStore/app/Http/Middleware/TrustHosts.php b/Chapter17/onlineStore/app/Http/Middleware/TrustHosts.php deleted file mode 100644 index 7186414..0000000 --- a/Chapter17/onlineStore/app/Http/Middleware/TrustHosts.php +++ /dev/null @@ -1,20 +0,0 @@ - - */ - public function hosts() - { - return [ - $this->allSubdomainsOfApplicationUrl(), - ]; - } -} diff --git a/Chapter17/onlineStore/app/Http/Middleware/TrustProxies.php b/Chapter17/onlineStore/app/Http/Middleware/TrustProxies.php deleted file mode 100644 index 3391630..0000000 --- a/Chapter17/onlineStore/app/Http/Middleware/TrustProxies.php +++ /dev/null @@ -1,28 +0,0 @@ -|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/Chapter17/onlineStore/app/Http/Middleware/VerifyCsrfToken.php b/Chapter17/onlineStore/app/Http/Middleware/VerifyCsrfToken.php deleted file mode 100644 index 9e86521..0000000 --- a/Chapter17/onlineStore/app/Http/Middleware/VerifyCsrfToken.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter17/onlineStore/app/Models/Product.php b/Chapter17/onlineStore/app/Models/Product.php deleted file mode 100644 index 84efbb6..0000000 --- a/Chapter17/onlineStore/app/Models/Product.php +++ /dev/null @@ -1,89 +0,0 @@ -attributes['id'] - int - contains the product primary key (id) - * $this->attributes['name'] - string - contains the product name - * $this->attributes['description'] - string - contains the product description - * $this->attributes['image'] - string - contains the product image - * $this->attributes['price'] - int - contains the product price - * $this->attributes['created_at'] - timestamp - contains the product creation date - * $this->attributes['updated_at'] - timestamp - contains the product update date - */ - - public function getId() - { - return $this->attributes['id']; - } - - public function setId($id) - { - $this->attributes['id'] = $id; - } - - public function getName() - { - return $this->attributes['name']; - } - - public function setName($name) - { - $this->attributes['name'] = $name; - } - - public function getDescription() - { - return $this->attributes['description']; - } - - public function setDescription($description) - { - $this->attributes['description'] = $description; - } - - public function getImage() - { - return $this->attributes['image']; - } - - public function setImage($image) - { - $this->attributes['image'] = $image; - } - - public function getPrice() - { - return $this->attributes['price']; - } - - public function setPrice($price) - { - $this->attributes['price'] = $price; - } - - public function getCreatedAt() - { - return $this->attributes['created_at']; - } - - public function setCreatedAt($createdAt) - { - $this->attributes['created_at'] = $createdAt; - } - - public function getUpdatedAt() - { - return $this->attributes['updated_at']; - } - - public function setUpdatedAt($updatedAt) - { - $this->attributes['updated_at'] = $updatedAt; - } -} diff --git a/Chapter17/onlineStore/app/Models/User.php b/Chapter17/onlineStore/app/Models/User.php deleted file mode 100644 index 8996368..0000000 --- a/Chapter17/onlineStore/app/Models/User.php +++ /dev/null @@ -1,44 +0,0 @@ - - */ - 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', - ]; -} diff --git a/Chapter17/onlineStore/app/Providers/AppServiceProvider.php b/Chapter17/onlineStore/app/Providers/AppServiceProvider.php deleted file mode 100644 index ee8ca5b..0000000 --- a/Chapter17/onlineStore/app/Providers/AppServiceProvider.php +++ /dev/null @@ -1,28 +0,0 @@ - - */ - protected $policies = [ - // 'App\Models\Model' => 'App\Policies\ModelPolicy', - ]; - - /** - * Register any authentication / authorization services. - * - * @return void - */ - public function boot() - { - $this->registerPolicies(); - - // - } -} diff --git a/Chapter17/onlineStore/app/Providers/BroadcastServiceProvider.php b/Chapter17/onlineStore/app/Providers/BroadcastServiceProvider.php deleted file mode 100644 index 395c518..0000000 --- a/Chapter17/onlineStore/app/Providers/BroadcastServiceProvider.php +++ /dev/null @@ -1,21 +0,0 @@ -> - */ - protected $listen = [ - Registered::class => [ - SendEmailVerificationNotification::class, - ], - ]; - - /** - * Register any events for your application. - * - * @return void - */ - public function boot() - { - // - } -} diff --git a/Chapter17/onlineStore/app/Providers/RouteServiceProvider.php b/Chapter17/onlineStore/app/Providers/RouteServiceProvider.php deleted file mode 100644 index 7c17d1f..0000000 --- a/Chapter17/onlineStore/app/Providers/RouteServiceProvider.php +++ /dev/null @@ -1,63 +0,0 @@ -configureRateLimiting(); - - $this->routes(function () { - Route::prefix('api') - ->middleware('api') - ->namespace($this->namespace) - ->group(base_path('routes/api.php')); - - Route::middleware('web') - ->namespace($this->namespace) - ->group(base_path('routes/web.php')); - }); - } - - /** - * Configure the rate limiters for the application. - * - * @return void - */ - protected function configureRateLimiting() - { - RateLimiter::for('api', function (Request $request) { - return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); - }); - } -} diff --git a/Chapter17/onlineStore/artisan b/Chapter17/onlineStore/artisan deleted file mode 100644 index 67a3329..0000000 --- a/Chapter17/onlineStore/artisan +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env php -make(Illuminate\Contracts\Console\Kernel::class); - -$status = $kernel->handle( - $input = new Symfony\Component\Console\Input\ArgvInput, - new Symfony\Component\Console\Output\ConsoleOutput -); - -/* -|-------------------------------------------------------------------------- -| Shutdown The Application -|-------------------------------------------------------------------------- -| -| Once Artisan has finished running, we will fire off the shutdown events -| so that any final work may be done by the application before we shut -| down the process. This is the last thing to happen to the request. -| -*/ - -$kernel->terminate($input, $status); - -exit($status); diff --git a/Chapter17/onlineStore/bootstrap/app.php b/Chapter17/onlineStore/bootstrap/app.php deleted file mode 100644 index 037e17d..0000000 --- a/Chapter17/onlineStore/bootstrap/app.php +++ /dev/null @@ -1,55 +0,0 @@ -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/Chapter17/onlineStore/bootstrap/cache/.gitignore b/Chapter17/onlineStore/bootstrap/cache/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter17/onlineStore/bootstrap/cache/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter17/onlineStore/composer.json b/Chapter17/onlineStore/composer.json deleted file mode 100644 index f0f2eda..0000000 --- a/Chapter17/onlineStore/composer.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "name": "laravel/laravel", - "type": "project", - "description": "The Laravel Framework.", - "keywords": ["framework", "laravel"], - "license": "MIT", - "require": { - "php": "^8.0", - "fruitcake/laravel-cors": "^2.0.5", - "guzzlehttp/guzzle": "^7.2", - "laravel/framework": "^9.0", - "laravel/sanctum": "^2.14", - "laravel/tinker": "^2.7" - }, - "require-dev": { - "fakerphp/faker": "^1.9.1", - "laravel/sail": "^1.0.1", - "mockery/mockery": "^1.4.4", - "nunomaduro/collision": "^6.1", - "phpunit/phpunit": "^9.5.10", - "spatie/laravel-ignition": "^1.0", - "squizlabs/php_codesniffer": "^3.6" - }, - "autoload": { - "psr-4": { - "App\\": "app/", - "Database\\Factories\\": "database/factories/", - "Database\\Seeders\\": "database/seeders/" - } - }, - "autoload-dev": { - "psr-4": { - "Tests\\": "tests/" - } - }, - "scripts": { - "post-autoload-dump": [ - "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", - "@php artisan package:discover --ansi" - ], - "post-update-cmd": [ - "@php artisan vendor:publish --tag=laravel-assets --ansi --force" - ], - "post-root-package-install": [ - "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" - ], - "post-create-project-cmd": [ - "@php artisan key:generate --ansi" - ] - }, - "extra": { - "laravel": { - "dont-discover": [] - } - }, - "config": { - "optimize-autoloader": true, - "preferred-install": "dist", - "sort-packages": true - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/Chapter17/onlineStore/composer.lock b/Chapter17/onlineStore/composer.lock deleted file mode 100644 index b55e897..0000000 --- a/Chapter17/onlineStore/composer.lock +++ /dev/null @@ -1,7860 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "8bdcc31974d0d5a00db79c82827c8815", - "packages": [ - { - "name": "asm89/stack-cors", - "version": "v2.1.1", - "source": { - "type": "git", - "url": "https://github.com/asm89/stack-cors.git", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4|^5|^6" - }, - "require-dev": { - "phpunit/phpunit": "^7|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "psr-4": { - "Asm89\\Stack\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alexander", - "email": "iam.asm89@gmail.com" - } - ], - "description": "Cross-origin resource sharing library and stack middleware", - "homepage": "https://github.com/asm89/stack-cors", - "keywords": [ - "cors", - "stack" - ], - "support": { - "issues": "https://github.com/asm89/stack-cors/issues", - "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" - }, - "time": "2022-01-18T09:12:03+00:00" - }, - { - "name": "brick/math", - "version": "0.9.3", - "source": { - "type": "git", - "url": "https://github.com/brick/math.git", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", - "vimeo/psalm": "4.9.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Brick\\Math\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Arbitrary-precision arithmetic library", - "keywords": [ - "Arbitrary-precision", - "BigInteger", - "BigRational", - "arithmetic", - "bigdecimal", - "bignum", - "brick", - "math" - ], - "support": { - "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.9.3" - }, - "funding": [ - { - "url": "https://github.com/BenMorel", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/brick/math", - "type": "tidelift" - } - ], - "time": "2021-08-15T20:50:18+00:00" - }, - { - "name": "dflydev/dot-access-data", - "version": "v3.0.1", - "source": { - "type": "git", - "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c", - "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": "^3.14" - }, - "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.1" - }, - "time": "2021-08-13T13:06:58+00:00" - }, - { - "name": "doctrine/inflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "vimeo/psalm": "^4.10" - }, - "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.4" - }, - "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": "2021-10-22T20:16:43+00:00" - }, - { - "name": "doctrine/lexer", - "version": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" - } - }, - "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/1.2.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%2Flexer", - "type": "tidelift" - } - ], - "time": "2022-01-12T08:27:12+00:00" - }, - { - "name": "dragonmantank/cron-expression", - "version": "v3.3.1", - "source": { - "type": "git", - "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "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.1" - }, - "funding": [ - { - "url": "https://github.com/dragonmantank", - "type": "github" - } - ], - "time": "2022-01-18T15:43:28+00:00" - }, - { - "name": "egulias/email-validator", - "version": "3.1.2", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ee0db30118f661fb166bcffbf5d82032df484697", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^1.2", - "php": ">=7.2", - "symfony/polyfill-intl-idn": "^1.15" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^8.5.8|^9.3.3", - "vimeo/psalm": "^4" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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/3.1.2" - }, - "funding": [ - { - "url": "https://github.com/egulias", - "type": "github" - } - ], - "time": "2021-10-11T09:18:27+00:00" - }, - { - "name": "fruitcake/laravel-cors", - "version": "v2.0.5", - "source": { - "type": "git", - "url": "https://github.com/fruitcake/laravel-cors.git", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "shasum": "" - }, - "require": { - "asm89/stack-cors": "^2.0.1", - "illuminate/contracts": "^6|^7|^8|^9", - "illuminate/support": "^6|^7|^8|^9", - "php": ">=7.2", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4.3.4|^5|^6" - }, - "require-dev": { - "laravel/framework": "^6|^7.24|^8", - "orchestra/testbench-dusk": "^4|^5|^6|^7", - "phpunit/phpunit": "^6|^7|^8|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - }, - "laravel": { - "providers": [ - "Fruitcake\\Cors\\CorsServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Fruitcake\\Cors\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fruitcake", - "homepage": "https://fruitcake.nl" - }, - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", - "keywords": [ - "api", - "cors", - "crossdomain", - "laravel" - ], - "support": { - "issues": "https://github.com/fruitcake/laravel-cors/issues", - "source": "https://github.com/fruitcake/laravel-cors/tree/v2.0.5" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "time": "2022-01-03T14:53:04+00:00" - }, - { - "name": "graham-campbell/result-type", - "version": "v1.0.4", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "0690bde05318336c7221785f2a932467f98b64ca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/0690bde05318336c7221785f2a932467f98b64ca", - "reference": "0690bde05318336c7221785f2a932467f98b64ca", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "phpoption/phpoption": "^1.8" - }, - "require-dev": { - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", - "type": "tidelift" - } - ], - "time": "2021-11-21T21:41:47+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "7.4.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.8.3 || ^2.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.4.1", - "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.5 || ^9.3.5", - "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": { - "branch-alias": { - "dev-master": "7.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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.4.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": "2021-12-06T18:43:05+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "1.5.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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/1.5.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "time": "2021-10-22T20:56:57+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.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.4.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.8 || ^9.3.10" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "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.1.0" - }, - "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": "2021-10-06T17:43:30+00:00" - }, - { - "name": "laravel/framework", - "version": "v9.0.1", - "source": { - "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "shasum": "" - }, - "require": { - "doctrine/inflector": "^2.0", - "dragonmantank/cron-expression": "^3.1", - "egulias/email-validator": "^3.1", - "ext-mbstring": "*", - "ext-openssl": "*", - "laravel/serializable-closure": "^1.0", - "league/commonmark": "^2.2", - "league/flysystem": "^3.0", - "monolog/monolog": "^2.0", - "nesbot/carbon": "^2.53.1", - "php": "^8.0.2", - "psr/container": "^1.1.1|^2.0.1", - "psr/log": "^1.0|^2.0|^3.0", - "psr/simple-cache": "^1.0|^2.0|^3.0", - "ramsey/uuid": "^4.2.2", - "symfony/console": "^6.0", - "symfony/error-handler": "^6.0", - "symfony/finder": "^6.0", - "symfony/http-foundation": "^6.0", - "symfony/http-kernel": "^6.0", - "symfony/mailer": "^6.0", - "symfony/mime": "^6.0", - "symfony/process": "^6.0", - "symfony/routing": "^6.0", - "symfony/var-dumper": "^6.0", - "tijsverkoyen/css-to-inline-styles": "^2.2.2", - "vlucas/phpdotenv": "^5.4.1", - "voku/portable-ascii": "^2.0" - }, - "conflict": { - "tightenco/collect": "<5.5.33" - }, - "provide": { - "psr/container-implementation": "1.1|2.0", - "psr/simple-cache-implementation": "1.0|2.0|3.0" - }, - "replace": { - "illuminate/auth": "self.version", - "illuminate/broadcasting": "self.version", - "illuminate/bus": "self.version", - "illuminate/cache": "self.version", - "illuminate/collections": "self.version", - "illuminate/conditionable": "self.version", - "illuminate/config": "self.version", - "illuminate/console": "self.version", - "illuminate/container": "self.version", - "illuminate/contracts": "self.version", - "illuminate/cookie": "self.version", - "illuminate/database": "self.version", - "illuminate/encryption": "self.version", - "illuminate/events": "self.version", - "illuminate/filesystem": "self.version", - "illuminate/hashing": "self.version", - "illuminate/http": "self.version", - "illuminate/log": "self.version", - "illuminate/macroable": "self.version", - "illuminate/mail": "self.version", - "illuminate/notifications": "self.version", - "illuminate/pagination": "self.version", - "illuminate/pipeline": "self.version", - "illuminate/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": { - "aws/aws-sdk-php": "^3.198.1", - "doctrine/dbal": "^2.13.3|^3.1.4", - "fakerphp/faker": "^1.9.2", - "guzzlehttp/guzzle": "^7.2", - "league/flysystem-aws-s3-v3": "^3.0", - "league/flysystem-ftp": "^3.0", - "league/flysystem-sftp-v3": "^3.0", - "mockery/mockery": "^1.4.4", - "orchestra/testbench-core": "^7.0", - "pda/pheanstalk": "^4.0", - "phpstan/phpstan": "^1.0", - "phpunit/phpunit": "^9.5.8", - "predis/predis": "^1.1.9", - "symfony/amazon-mailer": "^6.0", - "symfony/cache": "^6.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.198.1).", - "brianium/paratest": "Required to run tests in parallel (^6.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", - "ext-bcmath": "Required to use the multiple_of validation rule.", - "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.", - "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.2).", - "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-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", - "mockery/mockery": "Required to use mocking (^1.4.4).", - "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).", - "predis/predis": "Required to use the predis connector (^1.1.9).", - "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.0).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^6.0).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.0).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.0).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.0).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.x-dev" - } - }, - "autoload": { - "files": [ - "src/Illuminate/Collections/helpers.php", - "src/Illuminate/Events/functions.php", - "src/Illuminate/Foundation/helpers.php", - "src/Illuminate/Support/helpers.php" - ], - "psr-4": { - "Illuminate\\": "src/Illuminate/", - "Illuminate\\Support\\": [ - "src/Illuminate/Macroable/", - "src/Illuminate/Collections/", - "src/Illuminate/Conditionable/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Laravel Framework.", - "homepage": "https://laravel.com", - "keywords": [ - "framework", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2022-02-09T15:00:05+00:00" - }, - { - "name": "laravel/sanctum", - "version": "v2.14.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/sanctum.git", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/0647a87140c7522e75826cffcadb3ad6e01f71e9", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/contracts": "^6.9|^7.0|^8.0|^9.0", - "illuminate/database": "^6.9|^7.0|^8.0|^9.0", - "illuminate/support": "^6.9|^7.0|^8.0|^9.0", - "php": "^7.2|^8.0" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0", - "phpunit/phpunit": "^8.0|^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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": "2022-01-12T15:07:43+00:00" - }, - { - "name": "laravel/serializable-closure", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/serializable-closure.git", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/65c9faf50d567b65d81764a44526545689e3fe63", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "pestphp/pest": "^1.18", - "phpstan/phpstan": "^0.12.98", - "symfony/var-dumper": "^5.3" - }, - "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": "2022-02-01T16:29:39+00:00" - }, - { - "name": "laravel/tinker", - "version": "v2.7.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/tinker.git", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/5f2f9815b7631b9f586a3de7933c25f9327d4073", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073", - "shasum": "" - }, - "require": { - "illuminate/console": "^6.0|^7.0|^8.0|^9.0", - "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.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", - "phpunit/phpunit": "^8.5.8|^9.3.3" - }, - "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.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.7.0" - }, - "time": "2022-01-10T08:52:49+00:00" - }, - { - "name": "league/commonmark", - "version": "2.2.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/commonmark.git", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "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.15" - }, - "require-dev": { - "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.0", - "commonmark/commonmark.js": "0.30.0", - "composer/package-versions-deprecated": "^1.8", - "erusev/parsedown": "^1.0", - "ext-json": "*", - "github/gfm": "0.29.0", - "michelf/php-markdown": "^1.4", - "phpstan/phpstan": "^0.12.88 || ^1.0.0", - "phpunit/phpunit": "^9.5.5", - "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", - "unleashedtech/php-coding-standard": "^3.1", - "vimeo/psalm": "^4.7.3" - }, - "suggest": { - "symfony/yaml": "v2.3+ required if using the Front Matter extension" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.3-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": "2022-01-25T14:37:33+00:00" - }, - { - "name": "league/config", - "version": "v1.1.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/config.git", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/config/zipball/a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^3.0.1", - "nette/schema": "^1.2", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.90", - "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": "2021-08-14T12:15:32+00:00" - }, - { - "name": "league/flysystem", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9f8b4260031bfef5497477da53dd57b2aaff0e06", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06", - "shasum": "" - }, - "require": { - "ext-json": "*", - "league/mime-type-detection": "^1.0.0", - "php": "^8.0.2" - }, - "conflict": { - "guzzlehttp/guzzle": "<7.0", - "guzzlehttp/ringphp": "<1.1.1", - "symfony/http-client": "<5.2" - }, - "require-dev": { - "async-aws/s3": "^1.5", - "async-aws/simple-s3": "^1.0", - "aws/aws-sdk-php": "^3.198.1", - "composer/semver": "^3.0", - "ext-fileinfo": "*", - "ext-ftp": "*", - "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.5", - "google/cloud-storage": "^1.23", - "phpseclib/phpseclib": "^2.0", - "phpstan/phpstan": "^0.12.26", - "phpunit/phpunit": "^9.5.11", - "sabre/dav": "^4.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.0.3" - }, - "funding": [ - { - "url": "https://offset.earth/frankdejonge", - "type": "custom" - }, - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2022-01-31T19:41:04+00:00" - }, - { - "name": "league/mime-type-detection", - "version": "1.9.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/aa70e813a6ad3d1558fc927863d47309b4c23e69", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.2", - "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" - }, - "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.9.0" - }, - "funding": [ - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2021-11-21T11:48:40+00:00" - }, - { - "name": "monolog/monolog", - "version": "2.3.5", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd4380d6fc37626e2f799f29d91195040137eba9", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "provide": { - "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7", - "graylog2/gelf-php": "^1.4.2", - "mongodb/mongodb": "^1.8", - "php-amqplib/php-amqplib": "~2.4 || ^3", - "php-console/php-console": "^3.1.3", - "phpspec/prophecy": "^1.6.1", - "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5", - "predis/predis": "^1.1", - "rollbar/rollbar": "^1.3", - "ruflin/elastica": ">=0.90@dev", - "swiftmailer/swiftmailer": "^5.3|^6.0" - }, - "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", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "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": "2.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/2.3.5" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" - } - ], - "time": "2021-10-01T21:08:31+00:00" - }, - { - "name": "nesbot/carbon", - "version": "2.56.0", - "source": { - "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1.8 || ^8.0", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "doctrine/dbal": "^2.0 || ^3.0", - "doctrine/orm": "^2.7", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "phpmd/phpmd": "^2.9", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.54 || ^1.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.14", - "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://opencollective.com/Carbon", - "type": "open_collective" - }, - { - "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", - "type": "tidelift" - } - ], - "time": "2022-01-21T17:08:38+00:00" - }, - { - "name": "nette/schema", - "version": "v1.2.2", - "source": { - "type": "git", - "url": "https://github.com/nette/schema.git", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/9a39cef03a5b34c7de64f551538cbba05c2be5df", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df", - "shasum": "" - }, - "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": ">=7.1 <8.2" - }, - "require-dev": { - "nette/tester": "^2.3 || ^2.4", - "phpstan/phpstan-nette": "^0.12", - "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.2" - }, - "time": "2021-10-15T11:40:02+00:00" - }, - { - "name": "nette/utils", - "version": "v3.2.7", - "source": { - "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/0af4e3de4df9f1543534beab255ccf459e7a2c99", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99", - "shasum": "" - }, - "require": { - "php": ">=7.2 <8.2" - }, - "conflict": { - "nette/di": "<3.0.6" - }, - "require-dev": { - "nette/tester": "~2.0", - "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.3" - }, - "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()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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 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/v3.2.7" - }, - "time": "2022-01-24T11:29:14+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.13.2", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", - "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.13.2" - }, - "time": "2021-11-30T19:35:32+00:00" - }, - { - "name": "phpoption/phpoption", - "version": "1.8.1", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-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.8.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", - "type": "tidelift" - } - ], - "time": "2021-12-04T23:24:31+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.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.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": "http://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/tree/master" - }, - "time": "2020-06-29T06:28:15+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.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": "http://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/master" - }, - "time": "2019-04-30T12:38:16+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.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": "http://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/master" - }, - "time": "2016-08-06T14:39: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.1", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "570292577277f06f590635381a7f761a6cf4f026" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/570292577277f06f590635381a7f761a6cf4f026", - "reference": "570292577277f06f590635381a7f761a6cf4f026", - "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" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "3.17.05.02" - }, - "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.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." - }, - "bin": [ - "bin/psysh" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "0.11.x-dev" - } - }, - "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.1" - }, - "time": "2022-01-03T13:58:38+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": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/ramsey/collection.git", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "shasum": "" - }, - "require": { - "php": "^7.3 || ^8", - "symfony/polyfill-php81": "^1.23" - }, - "require-dev": { - "captainhook/captainhook": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "ergebnis/composer-normalize": "^2.6", - "fakerphp/faker": "^1.5", - "hamcrest/hamcrest-php": "^2", - "jangregor/phpstan-prophecy": "^0.8", - "mockery/mockery": "^1.3", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1", - "phpstan/phpstan": "^0.12.32", - "phpstan/phpstan-mockery": "^0.12.5", - "phpstan/phpstan-phpunit": "^0.12.11", - "phpunit/phpunit": "^8.5 || ^9", - "psy/psysh": "^0.10.4", - "slevomat/coding-standard": "^6.3", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.4" - }, - "type": "library", - "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/1.2.2" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "time": "2021-10-10T03:01:02+00:00" - }, - { - "name": "ramsey/uuid", - "version": "4.2.3", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "shasum": "" - }, - "require": { - "brick/math": "^0.8 || ^0.9", - "ext-json": "*", - "php": "^7.2 || ^8.0", - "ramsey/collection": "^1.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php80": "^1.14" - }, - "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", - "moontoast/math": "^1.1", - "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.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-mockery": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^8.5 || ^9", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" - }, - "suggest": { - "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-ctype": "Enables faster processing of character classification using ctype functions.", - "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": { - "branch-alias": { - "dev-main": "4.x-dev" - }, - "captainhook": { - "force-install": true - } - }, - "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "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.2.3" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2021-09-25T23:10:38+00:00" - }, - { - "name": "symfony/console", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/22e8efd019c3270c4f79376234a3f8752cd25490", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.4|^6.0" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/css-selector", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/1955d595c12c111629cc814d3f2a2ff13580508a", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a", - "shasum": "" - }, - "require": { - "php": ">=8.0.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/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-11-01T23:48:49+00:00" - }, - { - "name": "symfony/error-handler", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/20343b3bad7ebafa38138ddcb97290a24722b57b", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" - }, - "bin": [ - "Resources/bin/patch-type-declarations" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to manage errors and ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6472ea2dd415e925b90ca82be64b8bc6157f3934", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/event-dispatcher-contracts": "^2|^3" - }, - "conflict": { - "symfony/dependency-injection": "<5.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^5.4|^6.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/aa5422287b75594b90ee9cd807caf8f0df491385", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/event-dispatcher": "^1" - }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-07-15T12:33:35+00:00" - }, - { - "name": "symfony/finder", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/8661b74dbabc23223f38c9b99d3f8ade71170430", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ad157299ced81a637fade1efcadd688d6deba5c1", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1" - }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/cache": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0" - }, - "suggest": { - "symfony/mime": "To use the file extension guesser" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v6.0.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/error-handler": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", - "symfony/twig-bridge": "<5.4", - "symfony/validator": "<5.4", - "twig/twig": "<2.13" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/process": "^5.4|^6.0", - "symfony/routing": "^5.4|^6.0", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-29T18:12:46+00:00" - }, - { - "name": "symfony/mailer", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mailer.git", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "shasum": "" - }, - "require": { - "egulias/email-validator": "^2.1.10|^3", - "php": ">=8.0.2", - "psr/event-dispatcher": "^1", - "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3" - }, - "conflict": { - "symfony/http-kernel": "<5.4" - }, - "require-dev": { - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/messenger": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/mime", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/2cd9601efd040e56f43360daa68f3c6b0534923a", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "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" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "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.24.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": "2021-10-20T20:35:02+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-11-23T21:10:46+00:00" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44", - "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.23-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.24.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": "2021-09-14T14:02:44+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.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": "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.24.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": "2021-11-30T18:21:41+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-05-27T09:17:38+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:33+00:00" - }, - { - "name": "symfony/polyfill-php81", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:11+00:00" - }, - { - "name": "symfony/process", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/298ed357274c1868c20a0061df256a1250a6c4af", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/routing", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/yaml": "<5.4" - }, - "require-dev": { - "doctrine/annotations": "^1.12", - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/36715ebf9fb9db73db0cb24263c79077c6fe8603", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/container": "^2.0" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "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.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": "2021-11-04T17:53:12+00:00" - }, - { - "name": "symfony/string", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/522144f0c4c004c80d56fa47e40e17028e2eefc2", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.0" - }, - "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/translation-contracts": "^2.0|^3.0", - "symfony/var-exporter": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "files": [ - "Resources/functions.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 an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/translation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/71bb15335798f8c4da110911bcf2d2fead7a430d", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.3|^3.0" - }, - "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" - }, - "provide": { - "symfony/translation-implementation": "2.3|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-07T00:29:03+00:00" - }, - { - "name": "symfony/translation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "suggest": { - "symfony/translation-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - } - }, - "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.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": "2021-09-07T12:43:40+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7b701676fc64f9ef11f9b4870f16b48f66be4834", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<5.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-17T16:30:44+00:00" - }, - { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.4", - "source": { - "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" - } - ], - "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", - "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "support": { - "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" - }, - "time": "2021-12-08T09:12:39+00:00" - }, - { - "name": "vlucas/phpdotenv", - "version": "v5.4.1", - "source": { - "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", - "shasum": "" - }, - "require": { - "ext-pcre": "*", - "graham-campbell/result-type": "^1.0.2", - "php": "^7.1.3 || ^8.0", - "phpoption/phpoption": "^1.8", - "symfony/polyfill-ctype": "^1.23", - "symfony/polyfill-mbstring": "^1.23.1", - "symfony/polyfill-php80": "^1.23.1" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" - }, - "suggest": { - "ext-filter": "Required to use the boolean validator." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.4-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.4.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", - "type": "tidelift" - } - ], - "time": "2021-12-12T23:22:04+00:00" - }, - { - "name": "voku/portable-ascii", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/voku/portable-ascii.git", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/9bd89e83cecdf8c37b64909454249eaed98b2c89", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89", - "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.0" - }, - "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-01-24T18:59:03+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "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.10.0" - }, - "time": "2021-03-09T10:59:23+00:00" - } - ], - "packages-dev": [ - { - "name": "doctrine/instantiator", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.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%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2020-11-10T18:47:58+00:00" - }, - { - "name": "facade/ignition-contracts", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/facade/ignition-contracts.git", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^v2.15.8", - "phpunit/phpunit": "^9.3.11", - "vimeo/psalm": "^3.17.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Facade\\IgnitionContracts\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://flareapp.io", - "role": "Developer" - } - ], - "description": "Solution contracts for Ignition", - "homepage": "https://github.com/facade/ignition-contracts", - "keywords": [ - "contracts", - "flare", - "ignition" - ], - "support": { - "issues": "https://github.com/facade/ignition-contracts/issues", - "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" - }, - "time": "2020-10-16T08:27:54+00:00" - }, - { - "name": "fakerphp/faker", - "version": "v1.19.0", - "source": { - "type": "git", - "url": "https://github.com/FakerPHP/Faker.git", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^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": "*", - "symfony/phpunit-bridge": "^4.4 || ^5.2" - }, - "suggest": { - "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", - "ext-curl": "Required by Faker\\Provider\\Image to download images.", - "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", - "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.19-dev" - } - }, - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "François Zaninotto" - } - ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], - "support": { - "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0" - }, - "time": "2022-02-02T17:38:57+00:00" - }, - { - "name": "filp/whoops", - "version": "2.14.5", - "source": { - "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "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.14.5" - }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "time": "2022-01-07T12:00:00+00:00" - }, - { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "shasum": "" - }, - "require": { - "php": "^5.3|^7.0|^8.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" - }, - "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "classmap": [ - "hamcrest" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "This is the PHP port of Hamcrest Matchers", - "keywords": [ - "test" - ], - "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" - }, - "time": "2020-07-09T08:09:16+00:00" - }, - { - "name": "laravel/sail", - "version": "v1.13.2", - "source": { - "type": "git", - "url": "https://github.com/laravel/sail.git", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.0|^9.0", - "illuminate/contracts": "^8.0|^9.0", - "illuminate/support": "^8.0|^9.0", - "php": "^7.3|^8.0" - }, - "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": "2022-02-08T14:14:12+00:00" - }, - { - "name": "mockery/mockery", - "version": "1.5.0", - "source": { - "type": "git", - "url": "https://github.com/mockery/mockery.git", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "shasum": "" - }, - "require": { - "hamcrest/hamcrest-php": "^2.0.1", - "lib-pcre": ">=7.0", - "php": "^7.3 || ^8.0" - }, - "conflict": { - "phpunit/phpunit": "<8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-0": { - "Mockery": "library/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" - } - ], - "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": { - "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.5.0" - }, - "time": "2022-01-20T13:18:17+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.10.2", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "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.10.2" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2020-11-13T09:40:50+00:00" - }, - { - "name": "nunomaduro/collision", - "version": "v6.1.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/collision.git", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "shasum": "" - }, - "require": { - "facade/ignition-contracts": "^1.0.2", - "filp/whoops": "^2.14.5", - "php": "^8.0.0", - "symfony/console": "^6.0.2" - }, - "require-dev": { - "brianium/paratest": "^6.4.1", - "laravel/framework": "^9.0", - "nunomaduro/larastan": "^1.0.2", - "nunomaduro/mock-final-classes": "^1.1.0", - "orchestra/testbench": "^7.0.0", - "phpunit/phpunit": "^9.5.11" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "6.x-dev" - }, - "laravel": { - "providers": [ - "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" - ] - } - }, - "autoload": { - "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": "2022-01-18T17:49:08+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.1.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/15a90844ad40f127afd244c0cad228de2a80052a", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a", - "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.1.1" - }, - "time": "2022-02-07T21:56:48+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.6.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "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.6.0" - }, - "time": "2022-01-04T19:58:01+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" - }, - "time": "2021-12-08T12:19:24+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "9.2.10", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d5850aaf931743067f4bfc1ae4cbd06468400687", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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 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", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.10" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-05T09:12:13+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "3.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-02T12:48:52+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "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/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:58:55+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T05:33:50+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.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/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:16:10+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "9.5.13", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/597cb647654ede35e43b137926dfdfef0fb11743", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.3.1", - "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": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.7", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", - "sebastian/version": "^3.0.2" - }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.13" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-01-24T07:33:35+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:08:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "1.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:08:54+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:30:19+00:00" - }, - { - "name": "sebastian/comparator", - "version": "4.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:49:45+00:00" - }, - { - "name": "sebastian/complexity", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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 calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:52:27+00:00" - }, - { - "name": "sebastian/diff", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:10:38+00:00" - }, - { - "name": "sebastian/environment", - "version": "5.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-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": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:52:38+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "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", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-11-11T14:18:36+00:00" - }, - { - "name": "sebastian/global-state", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-11T13:31:12+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-28T06:42:11+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "http://www.github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:17:30+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:45:17+00:00" - }, - { - "name": "sebastian/type", - "version": "2.3.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-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/2.3.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-15T12:49:02+00:00" - }, - { - "name": "sebastian/version", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:39:44+00:00" - }, - { - "name": "spatie/backtrace", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/backtrace.git", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "ext-json": "*", - "phpunit/phpunit": "^9.3", - "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": { - "issues": "https://github.com/spatie/backtrace/issues", - "source": "https://github.com/spatie/backtrace/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/sponsors/spatie", - "type": "github" - }, - { - "url": "https://spatie.be/open-source/support-us", - "type": "other" - } - ], - "time": "2021-11-09T10:57:15+00:00" - }, - { - "name": "spatie/flare-client-php", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/flare-client-php.git", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "shasum": "" - }, - "require": { - "illuminate/pipeline": "^8.0|^9.0", - "php": "^8.0", - "spatie/backtrace": "^1.2", - "symfony/http-foundation": "^5.0|^6.0", - "symfony/mime": "^5.2|^6.0", - "symfony/process": "^5.2|^6.0", - "symfony/var-dumper": "^5.2|^6.0" - }, - "require-dev": { - "dms/phpunit-arraysubset-asserts": "^0.3.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/phpunit-snapshot-assertions": "^4.0" - }, - "type": "library", - "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.0.1" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2022-02-04T15:21:00+00:00" - }, - { - "name": "spatie/ignition", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/spatie/ignition.git", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/d2d5ba823af3004268556e87dfc94449e4159f5a", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "monolog/monolog": "^2.0", - "php": "^8.0", - "spatie/flare-client-php": "^1.0", - "symfony/console": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "mockery/mockery": "^1.4", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/ray": "^1.32", - "symfony/process": "^5.4|^6.0" - }, - "type": "library", - "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": "2022-01-19T12:57:41+00:00" - }, - { - "name": "spatie/laravel-ignition", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/68250225a9f83b086462c2af1b1139dfde48fbd2", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*", - "illuminate/support": "^8.77|^9.0", - "monolog/monolog": "^2.3", - "php": "^8.0", - "spatie/flare-client-php": "^1.0.1", - "spatie/ignition": "^1.0", - "symfony/console": "^5.0|^6.0", - "symfony/var-dumper": "^5.0|^6.0" - }, - "require-dev": { - "filp/whoops": "^2.14", - "livewire/livewire": "^2.8|dev-develop", - "mockery/mockery": "^1.4", - "nunomaduro/larastan": "^1.0", - "orchestra/testbench": "^6.23|^7.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/laravel-ray": "^1.27" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Spatie\\LaravelIgnition\\IgnitionServiceProvider" - ], - "aliases": { - "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" - } - } - }, - "autoload": { - "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": "2022-02-04T15:25:56+00:00" - }, - { - "name": "squizlabs/php_codesniffer", - "version": "3.6.2", - "source": { - "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", - "shasum": "" - }, - "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.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": "lead" - } - ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", - "keywords": [ - "phpcs", - "standards" - ], - "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" - }, - "time": "2021-12-12T21:44:58+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2021-07-28T10:34:58+00:00" - } - ], - "aliases": [], - "minimum-stability": "dev", - "stability-flags": [], - "prefer-stable": true, - "prefer-lowest": false, - "platform": { - "php": "^8.0" - }, - "platform-dev": [], - "plugin-api-version": "2.1.0" -} diff --git a/Chapter17/onlineStore/config/app.php b/Chapter17/onlineStore/config/app.php deleted file mode 100644 index 1941d7c..0000000 --- a/Chapter17/onlineStore/config/app.php +++ /dev/null @@ -1,197 +0,0 @@ - env('APP_NAME', 'Laravel'), - - /* - |-------------------------------------------------------------------------- - | Application Environment - |-------------------------------------------------------------------------- - | - | This value determines the "environment" your application is currently - | running in. This may determine how you prefer to configure various - | services the application utilizes. Set this in your ".env" file. - | - */ - - 'env' => env('APP_ENV', 'production'), - - /* - |-------------------------------------------------------------------------- - | Application Debug Mode - |-------------------------------------------------------------------------- - | - | When your application is in debug mode, detailed error messages with - | stack traces will be shown on every error that occurs within your - | application. If disabled, a simple generic error page is shown. - | - */ - - 'debug' => (bool) env('APP_DEBUG', false), - - /* - |-------------------------------------------------------------------------- - | Application URL - |-------------------------------------------------------------------------- - | - | This URL is used by the console to properly generate URLs when using - | the Artisan command line tool. You should set this to the root of - | your application so that it is used when running Artisan tasks. - | - */ - - 'url' => env('APP_URL', 'http://localhost'), - - 'asset_url' => env('ASSET_URL', null), - - /* - |-------------------------------------------------------------------------- - | 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', - - /* - |-------------------------------------------------------------------------- - | 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' => [ - - /* - * Laravel Framework Service Providers... - */ - Illuminate\Auth\AuthServiceProvider::class, - Illuminate\Broadcasting\BroadcastServiceProvider::class, - Illuminate\Bus\BusServiceProvider::class, - Illuminate\Cache\CacheServiceProvider::class, - Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, - Illuminate\Cookie\CookieServiceProvider::class, - Illuminate\Database\DatabaseServiceProvider::class, - Illuminate\Encryption\EncryptionServiceProvider::class, - Illuminate\Filesystem\FilesystemServiceProvider::class, - Illuminate\Foundation\Providers\FoundationServiceProvider::class, - Illuminate\Hashing\HashServiceProvider::class, - Illuminate\Mail\MailServiceProvider::class, - Illuminate\Notifications\NotificationServiceProvider::class, - Illuminate\Pagination\PaginationServiceProvider::class, - Illuminate\Pipeline\PipelineServiceProvider::class, - Illuminate\Queue\QueueServiceProvider::class, - Illuminate\Redis\RedisServiceProvider::class, - Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, - Illuminate\Session\SessionServiceProvider::class, - Illuminate\Translation\TranslationServiceProvider::class, - Illuminate\Validation\ValidationServiceProvider::class, - Illuminate\View\ViewServiceProvider::class, - - /* - * 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, - - ], - - /* - |-------------------------------------------------------------------------- - | 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([ - // ... - ])->toArray(), - -]; diff --git a/Chapter17/onlineStore/config/auth.php b/Chapter17/onlineStore/config/auth.php deleted file mode 100644 index d8c6cee..0000000 --- a/Chapter17/onlineStore/config/auth.php +++ /dev/null @@ -1,111 +0,0 @@ - [ - '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 expire 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. - | - */ - - 'passwords' => [ - 'users' => [ - 'provider' => 'users', - 'table' => 'password_resets', - '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/Chapter17/onlineStore/config/broadcasting.php b/Chapter17/onlineStore/config/broadcasting.php deleted file mode 100644 index 67fcbbd..0000000 --- a/Chapter17/onlineStore/config/broadcasting.php +++ /dev/null @@ -1,67 +0,0 @@ - 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'), - 'useTLS' => true, - ], - '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/Chapter17/onlineStore/config/cache.php b/Chapter17/onlineStore/config/cache.php deleted file mode 100644 index 8736c7a..0000000 --- a/Chapter17/onlineStore/config/cache.php +++ /dev/null @@ -1,110 +0,0 @@ - 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'), - ], - - '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 a RAM based store such as APC or Memcached, there might - | be other applications utilizing the same cache. So, we'll specify a - | value to get prefixed to all our keys so we can avoid collisions. - | - */ - - 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'), - -]; diff --git a/Chapter17/onlineStore/config/cors.php b/Chapter17/onlineStore/config/cors.php deleted file mode 100644 index 8a39e6d..0000000 --- a/Chapter17/onlineStore/config/cors.php +++ /dev/null @@ -1,34 +0,0 @@ - ['api/*', 'sanctum/csrf-cookie'], - - 'allowed_methods' => ['*'], - - 'allowed_origins' => ['*'], - - 'allowed_origins_patterns' => [], - - 'allowed_headers' => ['*'], - - 'exposed_headers' => [], - - 'max_age' => 0, - - 'supports_credentials' => false, - -]; diff --git a/Chapter17/onlineStore/config/database.php b/Chapter17/onlineStore/config/database.php deleted file mode 100644 index 0faebae..0000000 --- a/Chapter17/onlineStore/config/database.php +++ /dev/null @@ -1,147 +0,0 @@ - env('DB_CONNECTION', 'mysql'), - - /* - |-------------------------------------------------------------------------- - | Database Connections - |-------------------------------------------------------------------------- - | - | Here are each of the database connections setup for your application. - | Of course, examples of configuring each database platform that is - | supported by Laravel is shown below to make development simple. - | - | - | All database work in Laravel is done through the PHP PDO facilities - | so make sure you have the driver for your particular database of - | choice installed on your machine before you begin development. - | - */ - - 'connections' => [ - - 'sqlite' => [ - 'driver' => 'sqlite', - 'url' => env('DATABASE_URL'), - 'database' => env('DB_DATABASE', database_path('database.sqlite')), - 'prefix' => '', - 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), - ], - - 'mysql' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '3306'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'unix_socket' => env('DB_SOCKET', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - 'pgsql' => [ - 'driver' => 'pgsql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '5432'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - 'search_path' => 'public', - 'sslmode' => 'prefer', - ], - - 'sqlsrv' => [ - 'driver' => 'sqlsrv', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', 'localhost'), - 'port' => env('DB_PORT', '1433'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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'), - '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'), - 'password' => env('REDIS_PASSWORD'), - 'port' => env('REDIS_PORT', '6379'), - 'database' => env('REDIS_CACHE_DB', '1'), - ], - - ], - -]; diff --git a/Chapter17/onlineStore/config/filesystems.php b/Chapter17/onlineStore/config/filesystems.php deleted file mode 100644 index cf5abce..0000000 --- a/Chapter17/onlineStore/config/filesystems.php +++ /dev/null @@ -1,73 +0,0 @@ - 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 setup for each driver as an example of the required options. - | - | Supported Drivers: "local", "ftp", "sftp", "s3" - | - */ - - 'disks' => [ - - 'local' => [ - 'driver' => 'local', - 'root' => storage_path('app'), - ], - - 'public' => [ - 'driver' => 'local', - 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', - 'visibility' => 'public', - ], - - '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), - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter17/onlineStore/config/hashing.php b/Chapter17/onlineStore/config/hashing.php deleted file mode 100644 index bcd3be4..0000000 --- a/Chapter17/onlineStore/config/hashing.php +++ /dev/null @@ -1,52 +0,0 @@ - '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/Chapter17/onlineStore/config/logging.php b/Chapter17/onlineStore/config/logging.php deleted file mode 100644 index fefe088..0000000 --- a/Chapter17/onlineStore/config/logging.php +++ /dev/null @@ -1,119 +0,0 @@ - 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' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), - - /* - |-------------------------------------------------------------------------- - | 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'), - ], - - 'daily' => [ - 'driver' => 'daily', - 'path' => storage_path('logs/laravel.log'), - 'level' => env('LOG_LEVEL', 'debug'), - 'days' => 14, - ], - - 'slack' => [ - 'driver' => 'slack', - 'url' => env('LOG_SLACK_WEBHOOK_URL'), - 'username' => 'Laravel Log', - 'emoji' => ':boom:', - 'level' => env('LOG_LEVEL', 'critical'), - ], - - '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'), - ], - ], - - 'stderr' => [ - 'driver' => 'monolog', - 'level' => env('LOG_LEVEL', 'debug'), - 'handler' => StreamHandler::class, - 'formatter' => env('LOG_STDERR_FORMATTER'), - 'with' => [ - 'stream' => 'php://stderr', - ], - ], - - 'syslog' => [ - 'driver' => 'syslog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'errorlog' => [ - 'driver' => 'errorlog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'null' => [ - 'driver' => 'monolog', - 'handler' => NullHandler::class, - ], - - 'emergency' => [ - 'path' => storage_path('logs/laravel.log'), - ], - ], - -]; diff --git a/Chapter17/onlineStore/config/mail.php b/Chapter17/onlineStore/config/mail.php deleted file mode 100644 index 87b6fe3..0000000 --- a/Chapter17/onlineStore/config/mail.php +++ /dev/null @@ -1,117 +0,0 @@ - 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", - | "postmark", "log", "array", "failover" - | - */ - - 'mailers' => [ - 'smtp' => [ - 'transport' => 'smtp', - '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, - ], - - 'ses' => [ - 'transport' => 'ses', - ], - - 'mailgun' => [ - 'transport' => 'mailgun', - ], - - 'postmark' => [ - 'transport' => 'postmark', - ], - - 'sendmail' => [ - 'transport' => 'sendmail', - 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -t -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/Chapter17/onlineStore/config/queue.php b/Chapter17/onlineStore/config/queue.php deleted file mode 100644 index 25ea5a8..0000000 --- a/Chapter17/onlineStore/config/queue.php +++ /dev/null @@ -1,93 +0,0 @@ - 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, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter17/onlineStore/config/sanctum.php b/Chapter17/onlineStore/config/sanctum.php deleted file mode 100644 index 9281c92..0000000 --- a/Chapter17/onlineStore/config/sanctum.php +++ /dev/null @@ -1,65 +0,0 @@ - explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( - '%s%s', - 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', - env('APP_URL') ? ','.parse_url(env('APP_URL'), PHP_URL_HOST) : '' - ))), - - /* - |-------------------------------------------------------------------------- - | 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/Chapter17/onlineStore/config/services.php b/Chapter17/onlineStore/config/services.php deleted file mode 100644 index 2a1d616..0000000 --- a/Chapter17/onlineStore/config/services.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - 'domain' => env('MAILGUN_DOMAIN'), - 'secret' => env('MAILGUN_SECRET'), - 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), - ], - - '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/Chapter17/onlineStore/config/session.php b/Chapter17/onlineStore/config/session.php deleted file mode 100644 index 8fed97c..0000000 --- a/Chapter17/onlineStore/config/session.php +++ /dev/null @@ -1,201 +0,0 @@ - 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/Chapter17/onlineStore/config/view.php b/Chapter17/onlineStore/config/view.php deleted file mode 100644 index 22b8a18..0000000 --- a/Chapter17/onlineStore/config/view.php +++ /dev/null @@ -1,36 +0,0 @@ - [ - 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/Chapter17/onlineStore/database/.gitignore b/Chapter17/onlineStore/database/.gitignore deleted file mode 100644 index 9b19b93..0000000 --- a/Chapter17/onlineStore/database/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.sqlite* diff --git a/Chapter17/onlineStore/database/factories/UserFactory.php b/Chapter17/onlineStore/database/factories/UserFactory.php deleted file mode 100644 index d6ca926..0000000 --- a/Chapter17/onlineStore/database/factories/UserFactory.php +++ /dev/null @@ -1,42 +0,0 @@ - - */ -class UserFactory extends Factory -{ - /** - * Define the model's default state. - * - * @return array - */ - public function definition() - { - return [ - 'name' => $this->faker->name(), - 'email' => $this->faker->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. - * - * @return \Illuminate\Database\Eloquent\Factories\Factory - */ - public function unverified() - { - return $this->state(function (array $attributes) { - return [ - 'email_verified_at' => null, - ]; - }); - } -} diff --git a/Chapter17/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php b/Chapter17/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php deleted file mode 100644 index cf6b776..0000000 --- a/Chapter17/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->string('name'); - $table->string('email')->unique(); - $table->timestamp('email_verified_at')->nullable(); - $table->string('password'); - $table->rememberToken(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('users'); - } -}; diff --git a/Chapter17/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php b/Chapter17/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php deleted file mode 100644 index fcacb80..0000000 --- a/Chapter17/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php +++ /dev/null @@ -1,32 +0,0 @@ -string('email')->index(); - $table->string('token'); - $table->timestamp('created_at')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('password_resets'); - } -}; diff --git a/Chapter17/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/Chapter17/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php deleted file mode 100644 index 1719198..0000000 --- a/Chapter17/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php +++ /dev/null @@ -1,36 +0,0 @@ -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. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('failed_jobs'); - } -}; diff --git a/Chapter17/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/Chapter17/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php deleted file mode 100644 index fd235f8..0000000 --- a/Chapter17/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->morphs('tokenable'); - $table->string('name'); - $table->string('token', 64)->unique(); - $table->text('abilities')->nullable(); - $table->timestamp('last_used_at')->nullable(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('personal_access_tokens'); - } -}; diff --git a/Chapter17/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php b/Chapter17/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php deleted file mode 100644 index 2eecdc2..0000000 --- a/Chapter17/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php +++ /dev/null @@ -1,35 +0,0 @@ -id(); - $table->string('name'); - $table->text('description'); - $table->string('image'); - $table->integer('price'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('products'); - } -}; diff --git a/Chapter17/onlineStore/database/seeders/DatabaseSeeder.php b/Chapter17/onlineStore/database/seeders/DatabaseSeeder.php deleted file mode 100644 index 71f673f..0000000 --- a/Chapter17/onlineStore/database/seeders/DatabaseSeeder.php +++ /dev/null @@ -1,19 +0,0 @@ -create(); - } -} diff --git a/Chapter17/onlineStore/lang/en.json b/Chapter17/onlineStore/lang/en.json deleted file mode 100644 index 577680d..0000000 --- a/Chapter17/onlineStore/lang/en.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "The :attribute must contain at least one letter.": "The :attribute must contain at least one letter.", - "The :attribute must contain at least one number.": "The :attribute must contain at least one number.", - "The :attribute must contain at least one symbol.": "The :attribute must contain at least one symbol.", - "The :attribute must contain at least one uppercase and one lowercase letter.": "The :attribute must contain at least one uppercase and one lowercase letter.", - "The given :attribute has appeared in a data leak. Please choose a different :attribute.": "The given :attribute has appeared in a data leak. Please choose a different :attribute." -} diff --git a/Chapter17/onlineStore/lang/en/auth.php b/Chapter17/onlineStore/lang/en/auth.php deleted file mode 100644 index 6598e2c..0000000 --- a/Chapter17/onlineStore/lang/en/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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/Chapter17/onlineStore/lang/en/pagination.php b/Chapter17/onlineStore/lang/en/pagination.php deleted file mode 100644 index d481411..0000000 --- a/Chapter17/onlineStore/lang/en/pagination.php +++ /dev/null @@ -1,19 +0,0 @@ - '« Previous', - 'next' => 'Next »', - -]; diff --git a/Chapter17/onlineStore/lang/en/passwords.php b/Chapter17/onlineStore/lang/en/passwords.php deleted file mode 100644 index 2345a56..0000000 --- a/Chapter17/onlineStore/lang/en/passwords.php +++ /dev/null @@ -1,22 +0,0 @@ - '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/Chapter17/onlineStore/lang/en/validation.php b/Chapter17/onlineStore/lang/en/validation.php deleted file mode 100644 index 783003c..0000000 --- a/Chapter17/onlineStore/lang/en/validation.php +++ /dev/null @@ -1,163 +0,0 @@ - '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' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - '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' => [ - 'numeric' => 'The :attribute must be greater than :value.', - 'file' => 'The :attribute must be greater than :value kilobytes.', - 'string' => 'The :attribute must be greater than :value characters.', - 'array' => 'The :attribute must have more than :value items.', - ], - 'gte' => [ - 'numeric' => 'The :attribute must be greater than or equal to :value.', - 'file' => 'The :attribute must be greater than or equal to :value kilobytes.', - 'string' => 'The :attribute must be greater than or equal to :value characters.', - 'array' => 'The :attribute must have :value items or more.', - ], - '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' => [ - 'numeric' => 'The :attribute must be less than :value.', - 'file' => 'The :attribute must be less than :value kilobytes.', - 'string' => 'The :attribute must be less than :value characters.', - 'array' => 'The :attribute must have less than :value items.', - ], - 'lte' => [ - 'numeric' => 'The :attribute must be less than or equal to :value.', - 'file' => 'The :attribute must be less than or equal to :value kilobytes.', - 'string' => 'The :attribute must be less than or equal to :value characters.', - 'array' => 'The :attribute must not have more than :value items.', - ], - 'mac_address' => 'The :attribute must be a valid MAC address.', - 'max' => [ - 'numeric' => 'The :attribute must not be greater than :max.', - 'file' => 'The :attribute must not be greater than :max kilobytes.', - 'string' => 'The :attribute must not be greater than :max characters.', - 'array' => 'The :attribute must not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - '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.', - 'password' => 'The password is incorrect.', - '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' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - '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/Chapter17/onlineStore/package.json b/Chapter17/onlineStore/package.json deleted file mode 100644 index 7a9aecd..0000000 --- a/Chapter17/onlineStore/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "private": true, - "scripts": { - "dev": "npm run development", - "development": "mix", - "watch": "mix watch", - "watch-poll": "mix watch -- --watch-options-poll=1000", - "hot": "mix watch --hot", - "prod": "npm run production", - "production": "mix --production" - }, - "devDependencies": { - "axios": "^0.25", - "laravel-mix": "^6.0.6", - "lodash": "^4.17.19", - "postcss": "^8.1.14" - } -} diff --git a/Chapter17/onlineStore/phpcs.xml b/Chapter17/onlineStore/phpcs.xml deleted file mode 100644 index a1cf2b6..0000000 --- a/Chapter17/onlineStore/phpcs.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - The coding standard for the Online Store project - - app/ - config/ - database/ - routes/ - */migrations/* - diff --git a/Chapter17/onlineStore/phpunit.xml b/Chapter17/onlineStore/phpunit.xml deleted file mode 100644 index 2ac86a1..0000000 --- a/Chapter17/onlineStore/phpunit.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - ./tests/Unit - - - ./tests/Feature - - - - - ./app - - - - - - - - - - - - - - diff --git a/Chapter17/onlineStore/public/.htaccess b/Chapter17/onlineStore/public/.htaccess deleted file mode 100644 index 3aec5e2..0000000 --- a/Chapter17/onlineStore/public/.htaccess +++ /dev/null @@ -1,21 +0,0 @@ - - - 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/Chapter17/onlineStore/public/css/admin.css b/Chapter17/onlineStore/public/css/admin.css deleted file mode 100644 index d9495a1..0000000 --- a/Chapter17/onlineStore/public/css/admin.css +++ /dev/null @@ -1,33 +0,0 @@ -.copyright { - background-color: #1a252f; -} - -.fixed { - -ms-flex: 0 0 250px; - flex: 0 0 250px; -} - -.content-grey { - background-color: #f8f9fc; -} - -hr { - margin-top: 0.8em; - margin-bottom: 0.8em; -} - -.img-profile { - height: 2rem; - width: 2rem; -} - -.profile-font { - color: #858796 !important; - font-size: 80%; - font-weight: 400; -} - -.card-header { - background-color: #f8f9fc; - border-bottom: 1px solid #e3e6f0; -} diff --git a/Chapter17/onlineStore/public/css/app.css b/Chapter17/onlineStore/public/css/app.css deleted file mode 100644 index cabac36..0000000 --- a/Chapter17/onlineStore/public/css/app.css +++ /dev/null @@ -1,20 +0,0 @@ -.bg-secondary { - background-color: #2c3e50 !important; -} - -.copyright { - background-color: #1a252f; -} - -.bg-primary { - background-color: #1abc9c !important; -} - -nav{ - font-weight: 700; -} - -.img-card{ - height: 18vw; - object-fit: cover; -} diff --git a/Chapter17/onlineStore/public/favicon.ico b/Chapter17/onlineStore/public/favicon.ico deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter17/onlineStore/public/img/game.png b/Chapter17/onlineStore/public/img/game.png deleted file mode 100644 index 85420e8bbc16098bf26b4ee63bde0e91a19d1f2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25896 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 cz>% diff --git a/Chapter17/onlineStore/public/img/safe.png b/Chapter17/onlineStore/public/img/safe.png deleted file mode 100644 index 445942c707af53210931f9f4f99f6d3cb69e5d89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19240 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
    w==XB0?3|p=#`o%NsudE(E-U#KS3Snw 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 o>ir+C;RN10sIS0&a;p - - - - - - - - - - - - - - - - - - diff --git a/Chapter17/onlineStore/public/index.php b/Chapter17/onlineStore/public/index.php deleted file mode 100644 index 1d69f3a..0000000 --- a/Chapter17/onlineStore/public/index.php +++ /dev/null @@ -1,55 +0,0 @@ -make(Kernel::class); - -$response = $kernel->handle( - $request = Request::capture() -)->send(); - -$kernel->terminate($request, $response); diff --git a/Chapter17/onlineStore/public/robots.txt b/Chapter17/onlineStore/public/robots.txt deleted file mode 100644 index eb05362..0000000 --- a/Chapter17/onlineStore/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: diff --git a/Chapter17/onlineStore/resources/css/app.css b/Chapter17/onlineStore/resources/css/app.css deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter17/onlineStore/resources/js/app.js b/Chapter17/onlineStore/resources/js/app.js deleted file mode 100644 index 40c55f6..0000000 --- a/Chapter17/onlineStore/resources/js/app.js +++ /dev/null @@ -1 +0,0 @@ -require('./bootstrap'); diff --git a/Chapter17/onlineStore/resources/js/bootstrap.js b/Chapter17/onlineStore/resources/js/bootstrap.js deleted file mode 100644 index 6922577..0000000 --- a/Chapter17/onlineStore/resources/js/bootstrap.js +++ /dev/null @@ -1,28 +0,0 @@ -window._ = require('lodash'); - -/** - * 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 = require('axios'); - -window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; - -/** - * 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'; - -// window.Pusher = require('pusher-js'); - -// window.Echo = new Echo({ -// broadcaster: 'pusher', -// key: process.env.MIX_PUSHER_APP_KEY, -// cluster: process.env.MIX_PUSHER_APP_CLUSTER, -// forceTLS: true -// }); diff --git a/Chapter17/onlineStore/resources/views/admin/home/index.blade.php b/Chapter17/onlineStore/resources/views/admin/home/index.blade.php deleted file mode 100644 index a2b4868..0000000 --- a/Chapter17/onlineStore/resources/views/admin/home/index.blade.php +++ /dev/null @@ -1,12 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
    -
    - Admin Panel - Home Page -
    -
    - Welcome to the Admin Panel, use the sidebar to navigate between the different options. -
    -
    -@endsection diff --git a/Chapter17/onlineStore/resources/views/admin/product/index.blade.php b/Chapter17/onlineStore/resources/views/admin/product/index.blade.php deleted file mode 100644 index c81f6a2..0000000 --- a/Chapter17/onlineStore/resources/views/admin/product/index.blade.php +++ /dev/null @@ -1,73 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
    -
    - Create Products -
    -
    - @if($errors->any()) -
      - @foreach($errors->all() as $error) -
    • - {{ $error }}
    • - @endforeach -
    - @endif - -
    - @csrf -
    -
    -
    - -
    - -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    - - -
    - -
    -
    -
    - -
    -
    - Manage Products -
    -
    - - - - - - - - - - - @foreach ($viewData["products"] as $product) - - - - - - - @endforeach - -
    IDNameEditDelete
    {{ $product->getId() }}{{ $product->getName() }}EditDelete
    -
    -
    -@endsection diff --git a/Chapter17/onlineStore/resources/views/home/about.blade.php b/Chapter17/onlineStore/resources/views/home/about.blade.php deleted file mode 100644 index f79abf3..0000000 --- a/Chapter17/onlineStore/resources/views/home/about.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    -
    -
    -

    {{ $viewData["description"] }}

    -
    -
    -

    {{ $viewData["author"] }}

    -
    -
    -
    -@endsection diff --git a/Chapter17/onlineStore/resources/views/home/index.blade.php b/Chapter17/onlineStore/resources/views/home/index.blade.php deleted file mode 100644 index 1affb20..0000000 --- a/Chapter17/onlineStore/resources/views/home/index.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('content') -
    -
    - -
    -
    - -
    -
    - -
    -
    -@endsection diff --git a/Chapter17/onlineStore/resources/views/layouts/admin.blade.php b/Chapter17/onlineStore/resources/views/layouts/admin.blade.php deleted file mode 100644 index a1a1d57..0000000 --- a/Chapter17/onlineStore/resources/views/layouts/admin.blade.php +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - @yield('title', 'Admin - Online Store') - - - -
    - - - -
    - - -
    - @yield('content') -
    -
    -
    - - - - - - - - - diff --git a/Chapter17/onlineStore/resources/views/layouts/app.blade.php b/Chapter17/onlineStore/resources/views/layouts/app.blade.php deleted file mode 100644 index eee7fcb..0000000 --- a/Chapter17/onlineStore/resources/views/layouts/app.blade.php +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - @yield('title', 'Online Store') - - - - - -
    -
    -

    @yield('subtitle', 'A Laravel Online Store')

    -
    -
    - - -
    - @yield('content') -
    - - - - - - - diff --git a/Chapter17/onlineStore/resources/views/product/index.blade.php b/Chapter17/onlineStore/resources/views/product/index.blade.php deleted file mode 100644 index c82528a..0000000 --- a/Chapter17/onlineStore/resources/views/product/index.blade.php +++ /dev/null @@ -1,18 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    - @foreach ($viewData["products"] as $product) - - @endforeach -
    -@endsection diff --git a/Chapter17/onlineStore/resources/views/product/show.blade.php b/Chapter17/onlineStore/resources/views/product/show.blade.php deleted file mode 100644 index 0adad34..0000000 --- a/Chapter17/onlineStore/resources/views/product/show.blade.php +++ /dev/null @@ -1,21 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    -
    -
    - getImage()) }}" class="img-fluid rounded-start"> -
    -
    -
    -
    - {{ $viewData["product"]->getName() }} (${{ $viewData["product"]->getPrice() }}) -
    -

    {{ $viewData["product"]->getDescription() }}

    -

    Add to Cart

    -
    -
    -
    -
    -@endsection diff --git a/Chapter17/onlineStore/resources/views/welcome.blade.php b/Chapter17/onlineStore/resources/views/welcome.blade.php deleted file mode 100644 index c587c72..0000000 --- a/Chapter17/onlineStore/resources/views/welcome.blade.php +++ /dev/null @@ -1,7 +0,0 @@ -@extends('layouts.app') -@section('title', 'Home Page - Online Store') -@section('content') -
    - Welcome to the application -
    -@endsection \ No newline at end of file diff --git a/Chapter17/onlineStore/routes/api.php b/Chapter17/onlineStore/routes/api.php deleted file mode 100644 index eb6fa48..0000000 --- a/Chapter17/onlineStore/routes/api.php +++ /dev/null @@ -1,19 +0,0 @@ -get('/user', function (Request $request) { - return $request->user(); -}); diff --git a/Chapter17/onlineStore/routes/channels.php b/Chapter17/onlineStore/routes/channels.php deleted file mode 100644 index 5d451e1..0000000 --- a/Chapter17/onlineStore/routes/channels.php +++ /dev/null @@ -1,18 +0,0 @@ -id === (int) $id; -}); diff --git a/Chapter17/onlineStore/routes/console.php b/Chapter17/onlineStore/routes/console.php deleted file mode 100644 index e05f4c9..0000000 --- a/Chapter17/onlineStore/routes/console.php +++ /dev/null @@ -1,19 +0,0 @@ -comment(Inspiring::quote()); -})->purpose('Display an inspiring quote'); diff --git a/Chapter17/onlineStore/routes/web.php b/Chapter17/onlineStore/routes/web.php deleted file mode 100644 index e1829ed..0000000 --- a/Chapter17/onlineStore/routes/web.php +++ /dev/null @@ -1,22 +0,0 @@ -name("home.index"); -Route::get('/about', 'App\Http\Controllers\HomeController@about')->name("home.about"); -Route::get('/products', 'App\Http\Controllers\ProductController@index')->name("product.index"); -Route::get('/products/{id}', 'App\Http\Controllers\ProductController@show')->name("product.show"); -Route::get('/admin', 'App\Http\Controllers\Admin\AdminHomeController@index')->name("admin.home.index"); -Route::get('/admin/products', 'App\Http\Controllers\Admin\AdminProductController@index')->name("admin.product.index"); -Route::post('/admin/products/store', 'App\Http\Controllers\Admin\AdminProductController@store')->name("admin.product.store"); diff --git a/Chapter17/onlineStore/storage/app/.gitignore b/Chapter17/onlineStore/storage/app/.gitignore deleted file mode 100644 index 8f4803c..0000000 --- a/Chapter17/onlineStore/storage/app/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!public/ -!.gitignore diff --git a/Chapter17/onlineStore/storage/app/public/.gitignore b/Chapter17/onlineStore/storage/app/public/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter17/onlineStore/storage/app/public/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter17/onlineStore/storage/framework/.gitignore b/Chapter17/onlineStore/storage/framework/.gitignore deleted file mode 100644 index 05c4471..0000000 --- a/Chapter17/onlineStore/storage/framework/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -compiled.php -config.php -down -events.scanned.php -maintenance.php -routes.php -routes.scanned.php -schedule-* -services.json diff --git a/Chapter17/onlineStore/storage/framework/cache/.gitignore b/Chapter17/onlineStore/storage/framework/cache/.gitignore deleted file mode 100644 index 01e4a6c..0000000 --- a/Chapter17/onlineStore/storage/framework/cache/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!data/ -!.gitignore diff --git a/Chapter17/onlineStore/storage/framework/cache/data/.gitignore b/Chapter17/onlineStore/storage/framework/cache/data/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter17/onlineStore/storage/framework/cache/data/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter17/onlineStore/storage/framework/sessions/.gitignore b/Chapter17/onlineStore/storage/framework/sessions/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter17/onlineStore/storage/framework/sessions/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter17/onlineStore/storage/framework/testing/.gitignore b/Chapter17/onlineStore/storage/framework/testing/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter17/onlineStore/storage/framework/testing/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter17/onlineStore/storage/framework/views/.gitignore b/Chapter17/onlineStore/storage/framework/views/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter17/onlineStore/storage/framework/views/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter17/onlineStore/storage/logs/.gitignore b/Chapter17/onlineStore/storage/logs/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter17/onlineStore/storage/logs/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter17/onlineStore/tests/CreatesApplication.php b/Chapter17/onlineStore/tests/CreatesApplication.php deleted file mode 100644 index 547152f..0000000 --- a/Chapter17/onlineStore/tests/CreatesApplication.php +++ /dev/null @@ -1,22 +0,0 @@ -make(Kernel::class)->bootstrap(); - - return $app; - } -} diff --git a/Chapter17/onlineStore/tests/Feature/ExampleTest.php b/Chapter17/onlineStore/tests/Feature/ExampleTest.php deleted file mode 100644 index 78ccc21..0000000 --- a/Chapter17/onlineStore/tests/Feature/ExampleTest.php +++ /dev/null @@ -1,21 +0,0 @@ -get('/'); - - $response->assertStatus(200); - } -} diff --git a/Chapter17/onlineStore/tests/TestCase.php b/Chapter17/onlineStore/tests/TestCase.php deleted file mode 100644 index 2932d4a..0000000 --- a/Chapter17/onlineStore/tests/TestCase.php +++ /dev/null @@ -1,10 +0,0 @@ -assertTrue(true); - } -} diff --git a/Chapter17/onlineStore/webpack.mix.js b/Chapter17/onlineStore/webpack.mix.js deleted file mode 100644 index 2a22dc1..0000000 --- a/Chapter17/onlineStore/webpack.mix.js +++ /dev/null @@ -1,17 +0,0 @@ -const mix = require('laravel-mix'); - -/* - |-------------------------------------------------------------------------- - | Mix Asset Management - |-------------------------------------------------------------------------- - | - | Mix provides a clean, fluent API for defining some Webpack build steps - | for your Laravel applications. By default, we are compiling the CSS - | file for the application as well as bundling up all the JS files. - | - */ - -mix.js('resources/js/app.js', 'public/js') - .postCss('resources/css/app.css', 'public/css', [ - // - ]); diff --git a/Chapter18/onlineStore/.editorconfig b/Chapter18/onlineStore/.editorconfig deleted file mode 100644 index 1671c9b..0000000 --- a/Chapter18/onlineStore/.editorconfig +++ /dev/null @@ -1,18 +0,0 @@ -root = true - -[*] -charset = utf-8 -end_of_line = lf -insert_final_newline = true -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true - -[*.md] -trim_trailing_whitespace = false - -[*.{yml,yaml}] -indent_size = 2 - -[docker-compose.yml] -indent_size = 4 diff --git a/Chapter18/onlineStore/.env.example b/Chapter18/onlineStore/.env.example deleted file mode 100644 index 8510237..0000000 --- a/Chapter18/onlineStore/.env.example +++ /dev/null @@ -1,52 +0,0 @@ -APP_NAME=Laravel -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=laravel -DB_USERNAME=root -DB_PASSWORD= - -BROADCAST_DRIVER=log -CACHE_DRIVER=file -FILESYSTEM_DISK=local -QUEUE_CONNECTION=sync -SESSION_DRIVER=file -SESSION_LIFETIME=120 - -MEMCACHED_HOST=127.0.0.1 - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -MAIL_MAILER=smtp -MAIL_HOST=mailhog -MAIL_PORT=1025 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS=null -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_APP_CLUSTER=mt1 - -MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/Chapter18/onlineStore/.gitattributes b/Chapter18/onlineStore/.gitattributes deleted file mode 100644 index 510d996..0000000 --- a/Chapter18/onlineStore/.gitattributes +++ /dev/null @@ -1,10 +0,0 @@ -* text=auto - -*.blade.php diff=html -*.css diff=css -*.html diff=html -*.md diff=markdown -*.php diff=php - -/.github export-ignore -CHANGELOG.md export-ignore diff --git a/Chapter18/onlineStore/.gitignore b/Chapter18/onlineStore/.gitignore deleted file mode 100644 index eb003b0..0000000 --- a/Chapter18/onlineStore/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -/node_modules -/public/hot -/public/storage -/storage/*.key -/vendor -.env -.env.backup -.phpunit.result.cache -docker-compose.override.yml -Homestead.json -Homestead.yaml -npm-debug.log -yarn-error.log -/.idea -/.vscode diff --git a/Chapter18/onlineStore/.styleci.yml b/Chapter18/onlineStore/.styleci.yml deleted file mode 100644 index 679a631..0000000 --- a/Chapter18/onlineStore/.styleci.yml +++ /dev/null @@ -1,13 +0,0 @@ -php: - preset: laravel - version: 8 - disabled: - - no_unused_imports - finder: - not-name: - - index.php -js: - finder: - not-name: - - webpack.mix.js -css: true diff --git a/Chapter18/onlineStore/README.md b/Chapter18/onlineStore/README.md deleted file mode 100644 index f171eca..0000000 --- a/Chapter18/onlineStore/README.md +++ /dev/null @@ -1,64 +0,0 @@ -

    - -

    -Build Status -Total Downloads -Latest Stable Version -License -

    - -## About Laravel - -Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as: - -- [Simple, fast routing engine](https://laravel.com/docs/routing). -- [Powerful dependency injection container](https://laravel.com/docs/container). -- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage. -- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent). -- Database agnostic [schema migrations](https://laravel.com/docs/migrations). -- [Robust background job processing](https://laravel.com/docs/queues). -- [Real-time event broadcasting](https://laravel.com/docs/broadcasting). - -Laravel is accessible, powerful, and provides tools required for large, robust applications. - -## Learning Laravel - -Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework. - -If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 2000 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library. - -## Laravel Sponsors - -We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell). - -### Premium Partners - -- **[Vehikl](https://vehikl.com/)** -- **[Tighten Co.](https://tighten.co)** -- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** -- **[64 Robots](https://64robots.com)** -- **[Cubet Techno Labs](https://cubettech.com)** -- **[Cyber-Duck](https://cyber-duck.co.uk)** -- **[Many](https://www.many.co.uk)** -- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)** -- **[DevSquad](https://devsquad.com)** -- **[Curotec](https://www.curotec.com/services/technologies/laravel/)** -- **[OP.GG](https://op.gg)** -- **[WebReinvent](https://webreinvent.com/?utm_source=laravel&utm_medium=github&utm_campaign=patreon-sponsors)** -- **[Lendio](https://lendio.com)** - -## Contributing - -Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions). - -## Code of Conduct - -In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). - -## Security Vulnerabilities - -If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed. - -## License - -The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). diff --git a/Chapter18/onlineStore/app/Console/Kernel.php b/Chapter18/onlineStore/app/Console/Kernel.php deleted file mode 100644 index d8bc1d2..0000000 --- a/Chapter18/onlineStore/app/Console/Kernel.php +++ /dev/null @@ -1,32 +0,0 @@ -command('inspire')->hourly(); - } - - /** - * Register the commands for the application. - * - * @return void - */ - protected function commands() - { - $this->load(__DIR__.'/Commands'); - - require base_path('routes/console.php'); - } -} diff --git a/Chapter18/onlineStore/app/Exceptions/Handler.php b/Chapter18/onlineStore/app/Exceptions/Handler.php deleted file mode 100644 index 8e7fbd1..0000000 --- a/Chapter18/onlineStore/app/Exceptions/Handler.php +++ /dev/null @@ -1,41 +0,0 @@ -> - */ - protected $dontReport = [ - // - ]; - - /** - * A list of the inputs that are never flashed for validation exceptions. - * - * @var array - */ - protected $dontFlash = [ - 'current_password', - 'password', - 'password_confirmation', - ]; - - /** - * Register the exception handling callbacks for the application. - * - * @return void - */ - public function register() - { - $this->reportable(function (Throwable $e) { - // - }); - } -} diff --git a/Chapter18/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php b/Chapter18/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php deleted file mode 100644 index cd78cb3..0000000 --- a/Chapter18/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php +++ /dev/null @@ -1,16 +0,0 @@ -with("viewData", $viewData); - } -} diff --git a/Chapter18/onlineStore/app/Http/Controllers/Admin/AdminProductController.php b/Chapter18/onlineStore/app/Http/Controllers/Admin/AdminProductController.php deleted file mode 100644 index 4a317a5..0000000 --- a/Chapter18/onlineStore/app/Http/Controllers/Admin/AdminProductController.php +++ /dev/null @@ -1,48 +0,0 @@ -with("viewData", $viewData); - } - - public function store(Request $request) - { - $request->validate([ - "name" => "required|max:255", - "description" => "required", - "price" => "required|numeric|gt:0", - 'image' => 'image', - ]); - - $newProduct = new Product(); - $newProduct->setName($request->input('name')); - $newProduct->setDescription($request->input('description')); - $newProduct->setPrice($request->input('price')); - $newProduct->setImage("game.png"); - $newProduct->save(); - - if ($request->hasFile('image')) { - $imageName = $newProduct->getId().".".$request->file('image')->extension(); - Storage::disk('public')->put( - $imageName, - file_get_contents($request->file('image')->getRealPath()) - ); - $newProduct->setImage($imageName); - $newProduct->save(); - } - - return back(); - } -} diff --git a/Chapter18/onlineStore/app/Http/Controllers/Controller.php b/Chapter18/onlineStore/app/Http/Controllers/Controller.php deleted file mode 100644 index a0a2a8a..0000000 --- a/Chapter18/onlineStore/app/Http/Controllers/Controller.php +++ /dev/null @@ -1,13 +0,0 @@ -with("viewData", $viewData); - } - - public function about() - { - $viewData = []; - $viewData["title"] = "About us - Online Store"; - $viewData["subtitle"] = "About us"; - $viewData["description"] = "This is an about page ..."; - $viewData["author"] = "Developed by: Your Name"; - return view('home.about')->with("viewData", $viewData); - } -} diff --git a/Chapter18/onlineStore/app/Http/Controllers/ProductController.php b/Chapter18/onlineStore/app/Http/Controllers/ProductController.php deleted file mode 100644 index d27a3a3..0000000 --- a/Chapter18/onlineStore/app/Http/Controllers/ProductController.php +++ /dev/null @@ -1,29 +0,0 @@ -with("viewData", $viewData); - } - - public function show($id) - { - $viewData = []; - $product = Product::findOrFail($id); - $viewData["title"] = $product->getName()." - Online Store"; - $viewData["subtitle"] = $product->getName()." - Product information"; - $viewData["product"] = $product; - return view('product.show')->with("viewData", $viewData); - } -} diff --git a/Chapter18/onlineStore/app/Http/Kernel.php b/Chapter18/onlineStore/app/Http/Kernel.php deleted file mode 100644 index d3722c2..0000000 --- a/Chapter18/onlineStore/app/Http/Kernel.php +++ /dev/null @@ -1,67 +0,0 @@ - - */ - protected $middleware = [ - // \App\Http\Middleware\TrustHosts::class, - \App\Http\Middleware\TrustProxies::class, - \Fruitcake\Cors\HandleCors::class, - \App\Http\Middleware\PreventRequestsDuringMaintenance::class, - \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, - \App\Http\Middleware\TrimStrings::class, - \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, - ]; - - /** - * The application's route middleware groups. - * - * @var array> - */ - protected $middlewareGroups = [ - 'web' => [ - \App\Http\Middleware\EncryptCookies::class, - \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, - \Illuminate\Session\Middleware\StartSession::class, - // \Illuminate\Session\Middleware\AuthenticateSession::class, - \Illuminate\View\Middleware\ShareErrorsFromSession::class, - \App\Http\Middleware\VerifyCsrfToken::class, - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - - 'api' => [ - // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, - 'throttle:api', - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - ]; - - /** - * The application's route middleware. - * - * These middleware may be assigned to groups or used individually. - * - * @var array - */ - protected $routeMiddleware = [ - 'auth' => \App\Http\Middleware\Authenticate::class, - 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::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, - 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, - 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, - 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, - ]; -} diff --git a/Chapter18/onlineStore/app/Http/Middleware/Authenticate.php b/Chapter18/onlineStore/app/Http/Middleware/Authenticate.php deleted file mode 100644 index 704089a..0000000 --- a/Chapter18/onlineStore/app/Http/Middleware/Authenticate.php +++ /dev/null @@ -1,21 +0,0 @@ -expectsJson()) { - return route('login'); - } - } -} diff --git a/Chapter18/onlineStore/app/Http/Middleware/EncryptCookies.php b/Chapter18/onlineStore/app/Http/Middleware/EncryptCookies.php deleted file mode 100644 index 867695b..0000000 --- a/Chapter18/onlineStore/app/Http/Middleware/EncryptCookies.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter18/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/Chapter18/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php deleted file mode 100644 index 74cbd9a..0000000 --- a/Chapter18/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter18/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php b/Chapter18/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php deleted file mode 100644 index a2813a0..0000000 --- a/Chapter18/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php +++ /dev/null @@ -1,32 +0,0 @@ -check()) { - return redirect(RouteServiceProvider::HOME); - } - } - - return $next($request); - } -} diff --git a/Chapter18/onlineStore/app/Http/Middleware/TrimStrings.php b/Chapter18/onlineStore/app/Http/Middleware/TrimStrings.php deleted file mode 100644 index 88cadca..0000000 --- a/Chapter18/onlineStore/app/Http/Middleware/TrimStrings.php +++ /dev/null @@ -1,19 +0,0 @@ - - */ - protected $except = [ - 'current_password', - 'password', - 'password_confirmation', - ]; -} diff --git a/Chapter18/onlineStore/app/Http/Middleware/TrustHosts.php b/Chapter18/onlineStore/app/Http/Middleware/TrustHosts.php deleted file mode 100644 index 7186414..0000000 --- a/Chapter18/onlineStore/app/Http/Middleware/TrustHosts.php +++ /dev/null @@ -1,20 +0,0 @@ - - */ - public function hosts() - { - return [ - $this->allSubdomainsOfApplicationUrl(), - ]; - } -} diff --git a/Chapter18/onlineStore/app/Http/Middleware/TrustProxies.php b/Chapter18/onlineStore/app/Http/Middleware/TrustProxies.php deleted file mode 100644 index 3391630..0000000 --- a/Chapter18/onlineStore/app/Http/Middleware/TrustProxies.php +++ /dev/null @@ -1,28 +0,0 @@ -|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/Chapter18/onlineStore/app/Http/Middleware/VerifyCsrfToken.php b/Chapter18/onlineStore/app/Http/Middleware/VerifyCsrfToken.php deleted file mode 100644 index 9e86521..0000000 --- a/Chapter18/onlineStore/app/Http/Middleware/VerifyCsrfToken.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter18/onlineStore/app/Models/Product.php b/Chapter18/onlineStore/app/Models/Product.php deleted file mode 100644 index 84efbb6..0000000 --- a/Chapter18/onlineStore/app/Models/Product.php +++ /dev/null @@ -1,89 +0,0 @@ -attributes['id'] - int - contains the product primary key (id) - * $this->attributes['name'] - string - contains the product name - * $this->attributes['description'] - string - contains the product description - * $this->attributes['image'] - string - contains the product image - * $this->attributes['price'] - int - contains the product price - * $this->attributes['created_at'] - timestamp - contains the product creation date - * $this->attributes['updated_at'] - timestamp - contains the product update date - */ - - public function getId() - { - return $this->attributes['id']; - } - - public function setId($id) - { - $this->attributes['id'] = $id; - } - - public function getName() - { - return $this->attributes['name']; - } - - public function setName($name) - { - $this->attributes['name'] = $name; - } - - public function getDescription() - { - return $this->attributes['description']; - } - - public function setDescription($description) - { - $this->attributes['description'] = $description; - } - - public function getImage() - { - return $this->attributes['image']; - } - - public function setImage($image) - { - $this->attributes['image'] = $image; - } - - public function getPrice() - { - return $this->attributes['price']; - } - - public function setPrice($price) - { - $this->attributes['price'] = $price; - } - - public function getCreatedAt() - { - return $this->attributes['created_at']; - } - - public function setCreatedAt($createdAt) - { - $this->attributes['created_at'] = $createdAt; - } - - public function getUpdatedAt() - { - return $this->attributes['updated_at']; - } - - public function setUpdatedAt($updatedAt) - { - $this->attributes['updated_at'] = $updatedAt; - } -} diff --git a/Chapter18/onlineStore/app/Models/User.php b/Chapter18/onlineStore/app/Models/User.php deleted file mode 100644 index 8996368..0000000 --- a/Chapter18/onlineStore/app/Models/User.php +++ /dev/null @@ -1,44 +0,0 @@ - - */ - 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', - ]; -} diff --git a/Chapter18/onlineStore/app/Providers/AppServiceProvider.php b/Chapter18/onlineStore/app/Providers/AppServiceProvider.php deleted file mode 100644 index ee8ca5b..0000000 --- a/Chapter18/onlineStore/app/Providers/AppServiceProvider.php +++ /dev/null @@ -1,28 +0,0 @@ - - */ - protected $policies = [ - // 'App\Models\Model' => 'App\Policies\ModelPolicy', - ]; - - /** - * Register any authentication / authorization services. - * - * @return void - */ - public function boot() - { - $this->registerPolicies(); - - // - } -} diff --git a/Chapter18/onlineStore/app/Providers/BroadcastServiceProvider.php b/Chapter18/onlineStore/app/Providers/BroadcastServiceProvider.php deleted file mode 100644 index 395c518..0000000 --- a/Chapter18/onlineStore/app/Providers/BroadcastServiceProvider.php +++ /dev/null @@ -1,21 +0,0 @@ -> - */ - protected $listen = [ - Registered::class => [ - SendEmailVerificationNotification::class, - ], - ]; - - /** - * Register any events for your application. - * - * @return void - */ - public function boot() - { - // - } -} diff --git a/Chapter18/onlineStore/app/Providers/RouteServiceProvider.php b/Chapter18/onlineStore/app/Providers/RouteServiceProvider.php deleted file mode 100644 index 7c17d1f..0000000 --- a/Chapter18/onlineStore/app/Providers/RouteServiceProvider.php +++ /dev/null @@ -1,63 +0,0 @@ -configureRateLimiting(); - - $this->routes(function () { - Route::prefix('api') - ->middleware('api') - ->namespace($this->namespace) - ->group(base_path('routes/api.php')); - - Route::middleware('web') - ->namespace($this->namespace) - ->group(base_path('routes/web.php')); - }); - } - - /** - * Configure the rate limiters for the application. - * - * @return void - */ - protected function configureRateLimiting() - { - RateLimiter::for('api', function (Request $request) { - return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); - }); - } -} diff --git a/Chapter18/onlineStore/artisan b/Chapter18/onlineStore/artisan deleted file mode 100644 index 67a3329..0000000 --- a/Chapter18/onlineStore/artisan +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env php -make(Illuminate\Contracts\Console\Kernel::class); - -$status = $kernel->handle( - $input = new Symfony\Component\Console\Input\ArgvInput, - new Symfony\Component\Console\Output\ConsoleOutput -); - -/* -|-------------------------------------------------------------------------- -| Shutdown The Application -|-------------------------------------------------------------------------- -| -| Once Artisan has finished running, we will fire off the shutdown events -| so that any final work may be done by the application before we shut -| down the process. This is the last thing to happen to the request. -| -*/ - -$kernel->terminate($input, $status); - -exit($status); diff --git a/Chapter18/onlineStore/bootstrap/app.php b/Chapter18/onlineStore/bootstrap/app.php deleted file mode 100644 index 037e17d..0000000 --- a/Chapter18/onlineStore/bootstrap/app.php +++ /dev/null @@ -1,55 +0,0 @@ -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/Chapter18/onlineStore/bootstrap/cache/.gitignore b/Chapter18/onlineStore/bootstrap/cache/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter18/onlineStore/bootstrap/cache/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter18/onlineStore/composer.json b/Chapter18/onlineStore/composer.json deleted file mode 100644 index f0f2eda..0000000 --- a/Chapter18/onlineStore/composer.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "name": "laravel/laravel", - "type": "project", - "description": "The Laravel Framework.", - "keywords": ["framework", "laravel"], - "license": "MIT", - "require": { - "php": "^8.0", - "fruitcake/laravel-cors": "^2.0.5", - "guzzlehttp/guzzle": "^7.2", - "laravel/framework": "^9.0", - "laravel/sanctum": "^2.14", - "laravel/tinker": "^2.7" - }, - "require-dev": { - "fakerphp/faker": "^1.9.1", - "laravel/sail": "^1.0.1", - "mockery/mockery": "^1.4.4", - "nunomaduro/collision": "^6.1", - "phpunit/phpunit": "^9.5.10", - "spatie/laravel-ignition": "^1.0", - "squizlabs/php_codesniffer": "^3.6" - }, - "autoload": { - "psr-4": { - "App\\": "app/", - "Database\\Factories\\": "database/factories/", - "Database\\Seeders\\": "database/seeders/" - } - }, - "autoload-dev": { - "psr-4": { - "Tests\\": "tests/" - } - }, - "scripts": { - "post-autoload-dump": [ - "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", - "@php artisan package:discover --ansi" - ], - "post-update-cmd": [ - "@php artisan vendor:publish --tag=laravel-assets --ansi --force" - ], - "post-root-package-install": [ - "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" - ], - "post-create-project-cmd": [ - "@php artisan key:generate --ansi" - ] - }, - "extra": { - "laravel": { - "dont-discover": [] - } - }, - "config": { - "optimize-autoloader": true, - "preferred-install": "dist", - "sort-packages": true - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/Chapter18/onlineStore/composer.lock b/Chapter18/onlineStore/composer.lock deleted file mode 100644 index b55e897..0000000 --- a/Chapter18/onlineStore/composer.lock +++ /dev/null @@ -1,7860 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "8bdcc31974d0d5a00db79c82827c8815", - "packages": [ - { - "name": "asm89/stack-cors", - "version": "v2.1.1", - "source": { - "type": "git", - "url": "https://github.com/asm89/stack-cors.git", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4|^5|^6" - }, - "require-dev": { - "phpunit/phpunit": "^7|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "psr-4": { - "Asm89\\Stack\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alexander", - "email": "iam.asm89@gmail.com" - } - ], - "description": "Cross-origin resource sharing library and stack middleware", - "homepage": "https://github.com/asm89/stack-cors", - "keywords": [ - "cors", - "stack" - ], - "support": { - "issues": "https://github.com/asm89/stack-cors/issues", - "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" - }, - "time": "2022-01-18T09:12:03+00:00" - }, - { - "name": "brick/math", - "version": "0.9.3", - "source": { - "type": "git", - "url": "https://github.com/brick/math.git", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", - "vimeo/psalm": "4.9.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Brick\\Math\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Arbitrary-precision arithmetic library", - "keywords": [ - "Arbitrary-precision", - "BigInteger", - "BigRational", - "arithmetic", - "bigdecimal", - "bignum", - "brick", - "math" - ], - "support": { - "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.9.3" - }, - "funding": [ - { - "url": "https://github.com/BenMorel", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/brick/math", - "type": "tidelift" - } - ], - "time": "2021-08-15T20:50:18+00:00" - }, - { - "name": "dflydev/dot-access-data", - "version": "v3.0.1", - "source": { - "type": "git", - "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c", - "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": "^3.14" - }, - "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.1" - }, - "time": "2021-08-13T13:06:58+00:00" - }, - { - "name": "doctrine/inflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "vimeo/psalm": "^4.10" - }, - "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.4" - }, - "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": "2021-10-22T20:16:43+00:00" - }, - { - "name": "doctrine/lexer", - "version": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" - } - }, - "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/1.2.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%2Flexer", - "type": "tidelift" - } - ], - "time": "2022-01-12T08:27:12+00:00" - }, - { - "name": "dragonmantank/cron-expression", - "version": "v3.3.1", - "source": { - "type": "git", - "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "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.1" - }, - "funding": [ - { - "url": "https://github.com/dragonmantank", - "type": "github" - } - ], - "time": "2022-01-18T15:43:28+00:00" - }, - { - "name": "egulias/email-validator", - "version": "3.1.2", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ee0db30118f661fb166bcffbf5d82032df484697", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^1.2", - "php": ">=7.2", - "symfony/polyfill-intl-idn": "^1.15" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^8.5.8|^9.3.3", - "vimeo/psalm": "^4" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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/3.1.2" - }, - "funding": [ - { - "url": "https://github.com/egulias", - "type": "github" - } - ], - "time": "2021-10-11T09:18:27+00:00" - }, - { - "name": "fruitcake/laravel-cors", - "version": "v2.0.5", - "source": { - "type": "git", - "url": "https://github.com/fruitcake/laravel-cors.git", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "shasum": "" - }, - "require": { - "asm89/stack-cors": "^2.0.1", - "illuminate/contracts": "^6|^7|^8|^9", - "illuminate/support": "^6|^7|^8|^9", - "php": ">=7.2", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4.3.4|^5|^6" - }, - "require-dev": { - "laravel/framework": "^6|^7.24|^8", - "orchestra/testbench-dusk": "^4|^5|^6|^7", - "phpunit/phpunit": "^6|^7|^8|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - }, - "laravel": { - "providers": [ - "Fruitcake\\Cors\\CorsServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Fruitcake\\Cors\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fruitcake", - "homepage": "https://fruitcake.nl" - }, - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", - "keywords": [ - "api", - "cors", - "crossdomain", - "laravel" - ], - "support": { - "issues": "https://github.com/fruitcake/laravel-cors/issues", - "source": "https://github.com/fruitcake/laravel-cors/tree/v2.0.5" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "time": "2022-01-03T14:53:04+00:00" - }, - { - "name": "graham-campbell/result-type", - "version": "v1.0.4", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "0690bde05318336c7221785f2a932467f98b64ca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/0690bde05318336c7221785f2a932467f98b64ca", - "reference": "0690bde05318336c7221785f2a932467f98b64ca", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "phpoption/phpoption": "^1.8" - }, - "require-dev": { - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", - "type": "tidelift" - } - ], - "time": "2021-11-21T21:41:47+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "7.4.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.8.3 || ^2.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.4.1", - "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.5 || ^9.3.5", - "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": { - "branch-alias": { - "dev-master": "7.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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.4.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": "2021-12-06T18:43:05+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "1.5.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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/1.5.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "time": "2021-10-22T20:56:57+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.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.4.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.8 || ^9.3.10" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "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.1.0" - }, - "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": "2021-10-06T17:43:30+00:00" - }, - { - "name": "laravel/framework", - "version": "v9.0.1", - "source": { - "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "shasum": "" - }, - "require": { - "doctrine/inflector": "^2.0", - "dragonmantank/cron-expression": "^3.1", - "egulias/email-validator": "^3.1", - "ext-mbstring": "*", - "ext-openssl": "*", - "laravel/serializable-closure": "^1.0", - "league/commonmark": "^2.2", - "league/flysystem": "^3.0", - "monolog/monolog": "^2.0", - "nesbot/carbon": "^2.53.1", - "php": "^8.0.2", - "psr/container": "^1.1.1|^2.0.1", - "psr/log": "^1.0|^2.0|^3.0", - "psr/simple-cache": "^1.0|^2.0|^3.0", - "ramsey/uuid": "^4.2.2", - "symfony/console": "^6.0", - "symfony/error-handler": "^6.0", - "symfony/finder": "^6.0", - "symfony/http-foundation": "^6.0", - "symfony/http-kernel": "^6.0", - "symfony/mailer": "^6.0", - "symfony/mime": "^6.0", - "symfony/process": "^6.0", - "symfony/routing": "^6.0", - "symfony/var-dumper": "^6.0", - "tijsverkoyen/css-to-inline-styles": "^2.2.2", - "vlucas/phpdotenv": "^5.4.1", - "voku/portable-ascii": "^2.0" - }, - "conflict": { - "tightenco/collect": "<5.5.33" - }, - "provide": { - "psr/container-implementation": "1.1|2.0", - "psr/simple-cache-implementation": "1.0|2.0|3.0" - }, - "replace": { - "illuminate/auth": "self.version", - "illuminate/broadcasting": "self.version", - "illuminate/bus": "self.version", - "illuminate/cache": "self.version", - "illuminate/collections": "self.version", - "illuminate/conditionable": "self.version", - "illuminate/config": "self.version", - "illuminate/console": "self.version", - "illuminate/container": "self.version", - "illuminate/contracts": "self.version", - "illuminate/cookie": "self.version", - "illuminate/database": "self.version", - "illuminate/encryption": "self.version", - "illuminate/events": "self.version", - "illuminate/filesystem": "self.version", - "illuminate/hashing": "self.version", - "illuminate/http": "self.version", - "illuminate/log": "self.version", - "illuminate/macroable": "self.version", - "illuminate/mail": "self.version", - "illuminate/notifications": "self.version", - "illuminate/pagination": "self.version", - "illuminate/pipeline": "self.version", - "illuminate/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": { - "aws/aws-sdk-php": "^3.198.1", - "doctrine/dbal": "^2.13.3|^3.1.4", - "fakerphp/faker": "^1.9.2", - "guzzlehttp/guzzle": "^7.2", - "league/flysystem-aws-s3-v3": "^3.0", - "league/flysystem-ftp": "^3.0", - "league/flysystem-sftp-v3": "^3.0", - "mockery/mockery": "^1.4.4", - "orchestra/testbench-core": "^7.0", - "pda/pheanstalk": "^4.0", - "phpstan/phpstan": "^1.0", - "phpunit/phpunit": "^9.5.8", - "predis/predis": "^1.1.9", - "symfony/amazon-mailer": "^6.0", - "symfony/cache": "^6.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.198.1).", - "brianium/paratest": "Required to run tests in parallel (^6.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", - "ext-bcmath": "Required to use the multiple_of validation rule.", - "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.", - "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.2).", - "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-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", - "mockery/mockery": "Required to use mocking (^1.4.4).", - "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).", - "predis/predis": "Required to use the predis connector (^1.1.9).", - "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.0).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^6.0).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.0).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.0).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.0).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.x-dev" - } - }, - "autoload": { - "files": [ - "src/Illuminate/Collections/helpers.php", - "src/Illuminate/Events/functions.php", - "src/Illuminate/Foundation/helpers.php", - "src/Illuminate/Support/helpers.php" - ], - "psr-4": { - "Illuminate\\": "src/Illuminate/", - "Illuminate\\Support\\": [ - "src/Illuminate/Macroable/", - "src/Illuminate/Collections/", - "src/Illuminate/Conditionable/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Laravel Framework.", - "homepage": "https://laravel.com", - "keywords": [ - "framework", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2022-02-09T15:00:05+00:00" - }, - { - "name": "laravel/sanctum", - "version": "v2.14.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/sanctum.git", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/0647a87140c7522e75826cffcadb3ad6e01f71e9", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/contracts": "^6.9|^7.0|^8.0|^9.0", - "illuminate/database": "^6.9|^7.0|^8.0|^9.0", - "illuminate/support": "^6.9|^7.0|^8.0|^9.0", - "php": "^7.2|^8.0" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0", - "phpunit/phpunit": "^8.0|^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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": "2022-01-12T15:07:43+00:00" - }, - { - "name": "laravel/serializable-closure", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/serializable-closure.git", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/65c9faf50d567b65d81764a44526545689e3fe63", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "pestphp/pest": "^1.18", - "phpstan/phpstan": "^0.12.98", - "symfony/var-dumper": "^5.3" - }, - "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": "2022-02-01T16:29:39+00:00" - }, - { - "name": "laravel/tinker", - "version": "v2.7.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/tinker.git", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/5f2f9815b7631b9f586a3de7933c25f9327d4073", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073", - "shasum": "" - }, - "require": { - "illuminate/console": "^6.0|^7.0|^8.0|^9.0", - "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.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", - "phpunit/phpunit": "^8.5.8|^9.3.3" - }, - "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.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.7.0" - }, - "time": "2022-01-10T08:52:49+00:00" - }, - { - "name": "league/commonmark", - "version": "2.2.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/commonmark.git", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "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.15" - }, - "require-dev": { - "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.0", - "commonmark/commonmark.js": "0.30.0", - "composer/package-versions-deprecated": "^1.8", - "erusev/parsedown": "^1.0", - "ext-json": "*", - "github/gfm": "0.29.0", - "michelf/php-markdown": "^1.4", - "phpstan/phpstan": "^0.12.88 || ^1.0.0", - "phpunit/phpunit": "^9.5.5", - "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", - "unleashedtech/php-coding-standard": "^3.1", - "vimeo/psalm": "^4.7.3" - }, - "suggest": { - "symfony/yaml": "v2.3+ required if using the Front Matter extension" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.3-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": "2022-01-25T14:37:33+00:00" - }, - { - "name": "league/config", - "version": "v1.1.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/config.git", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/config/zipball/a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^3.0.1", - "nette/schema": "^1.2", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.90", - "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": "2021-08-14T12:15:32+00:00" - }, - { - "name": "league/flysystem", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9f8b4260031bfef5497477da53dd57b2aaff0e06", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06", - "shasum": "" - }, - "require": { - "ext-json": "*", - "league/mime-type-detection": "^1.0.0", - "php": "^8.0.2" - }, - "conflict": { - "guzzlehttp/guzzle": "<7.0", - "guzzlehttp/ringphp": "<1.1.1", - "symfony/http-client": "<5.2" - }, - "require-dev": { - "async-aws/s3": "^1.5", - "async-aws/simple-s3": "^1.0", - "aws/aws-sdk-php": "^3.198.1", - "composer/semver": "^3.0", - "ext-fileinfo": "*", - "ext-ftp": "*", - "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.5", - "google/cloud-storage": "^1.23", - "phpseclib/phpseclib": "^2.0", - "phpstan/phpstan": "^0.12.26", - "phpunit/phpunit": "^9.5.11", - "sabre/dav": "^4.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.0.3" - }, - "funding": [ - { - "url": "https://offset.earth/frankdejonge", - "type": "custom" - }, - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2022-01-31T19:41:04+00:00" - }, - { - "name": "league/mime-type-detection", - "version": "1.9.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/aa70e813a6ad3d1558fc927863d47309b4c23e69", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.2", - "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" - }, - "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.9.0" - }, - "funding": [ - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2021-11-21T11:48:40+00:00" - }, - { - "name": "monolog/monolog", - "version": "2.3.5", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd4380d6fc37626e2f799f29d91195040137eba9", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "provide": { - "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7", - "graylog2/gelf-php": "^1.4.2", - "mongodb/mongodb": "^1.8", - "php-amqplib/php-amqplib": "~2.4 || ^3", - "php-console/php-console": "^3.1.3", - "phpspec/prophecy": "^1.6.1", - "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5", - "predis/predis": "^1.1", - "rollbar/rollbar": "^1.3", - "ruflin/elastica": ">=0.90@dev", - "swiftmailer/swiftmailer": "^5.3|^6.0" - }, - "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", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "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": "2.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/2.3.5" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" - } - ], - "time": "2021-10-01T21:08:31+00:00" - }, - { - "name": "nesbot/carbon", - "version": "2.56.0", - "source": { - "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1.8 || ^8.0", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "doctrine/dbal": "^2.0 || ^3.0", - "doctrine/orm": "^2.7", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "phpmd/phpmd": "^2.9", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.54 || ^1.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.14", - "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://opencollective.com/Carbon", - "type": "open_collective" - }, - { - "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", - "type": "tidelift" - } - ], - "time": "2022-01-21T17:08:38+00:00" - }, - { - "name": "nette/schema", - "version": "v1.2.2", - "source": { - "type": "git", - "url": "https://github.com/nette/schema.git", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/9a39cef03a5b34c7de64f551538cbba05c2be5df", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df", - "shasum": "" - }, - "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": ">=7.1 <8.2" - }, - "require-dev": { - "nette/tester": "^2.3 || ^2.4", - "phpstan/phpstan-nette": "^0.12", - "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.2" - }, - "time": "2021-10-15T11:40:02+00:00" - }, - { - "name": "nette/utils", - "version": "v3.2.7", - "source": { - "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/0af4e3de4df9f1543534beab255ccf459e7a2c99", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99", - "shasum": "" - }, - "require": { - "php": ">=7.2 <8.2" - }, - "conflict": { - "nette/di": "<3.0.6" - }, - "require-dev": { - "nette/tester": "~2.0", - "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.3" - }, - "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()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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 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/v3.2.7" - }, - "time": "2022-01-24T11:29:14+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.13.2", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", - "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.13.2" - }, - "time": "2021-11-30T19:35:32+00:00" - }, - { - "name": "phpoption/phpoption", - "version": "1.8.1", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-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.8.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", - "type": "tidelift" - } - ], - "time": "2021-12-04T23:24:31+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.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.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": "http://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/tree/master" - }, - "time": "2020-06-29T06:28:15+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.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": "http://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/master" - }, - "time": "2019-04-30T12:38:16+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.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": "http://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/master" - }, - "time": "2016-08-06T14:39: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.1", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "570292577277f06f590635381a7f761a6cf4f026" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/570292577277f06f590635381a7f761a6cf4f026", - "reference": "570292577277f06f590635381a7f761a6cf4f026", - "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" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "3.17.05.02" - }, - "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.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." - }, - "bin": [ - "bin/psysh" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "0.11.x-dev" - } - }, - "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.1" - }, - "time": "2022-01-03T13:58:38+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": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/ramsey/collection.git", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "shasum": "" - }, - "require": { - "php": "^7.3 || ^8", - "symfony/polyfill-php81": "^1.23" - }, - "require-dev": { - "captainhook/captainhook": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "ergebnis/composer-normalize": "^2.6", - "fakerphp/faker": "^1.5", - "hamcrest/hamcrest-php": "^2", - "jangregor/phpstan-prophecy": "^0.8", - "mockery/mockery": "^1.3", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1", - "phpstan/phpstan": "^0.12.32", - "phpstan/phpstan-mockery": "^0.12.5", - "phpstan/phpstan-phpunit": "^0.12.11", - "phpunit/phpunit": "^8.5 || ^9", - "psy/psysh": "^0.10.4", - "slevomat/coding-standard": "^6.3", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.4" - }, - "type": "library", - "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/1.2.2" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "time": "2021-10-10T03:01:02+00:00" - }, - { - "name": "ramsey/uuid", - "version": "4.2.3", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "shasum": "" - }, - "require": { - "brick/math": "^0.8 || ^0.9", - "ext-json": "*", - "php": "^7.2 || ^8.0", - "ramsey/collection": "^1.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php80": "^1.14" - }, - "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", - "moontoast/math": "^1.1", - "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.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-mockery": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^8.5 || ^9", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" - }, - "suggest": { - "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-ctype": "Enables faster processing of character classification using ctype functions.", - "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": { - "branch-alias": { - "dev-main": "4.x-dev" - }, - "captainhook": { - "force-install": true - } - }, - "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "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.2.3" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2021-09-25T23:10:38+00:00" - }, - { - "name": "symfony/console", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/22e8efd019c3270c4f79376234a3f8752cd25490", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.4|^6.0" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/css-selector", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/1955d595c12c111629cc814d3f2a2ff13580508a", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a", - "shasum": "" - }, - "require": { - "php": ">=8.0.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/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-11-01T23:48:49+00:00" - }, - { - "name": "symfony/error-handler", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/20343b3bad7ebafa38138ddcb97290a24722b57b", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" - }, - "bin": [ - "Resources/bin/patch-type-declarations" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to manage errors and ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6472ea2dd415e925b90ca82be64b8bc6157f3934", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/event-dispatcher-contracts": "^2|^3" - }, - "conflict": { - "symfony/dependency-injection": "<5.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^5.4|^6.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/aa5422287b75594b90ee9cd807caf8f0df491385", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/event-dispatcher": "^1" - }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-07-15T12:33:35+00:00" - }, - { - "name": "symfony/finder", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/8661b74dbabc23223f38c9b99d3f8ade71170430", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ad157299ced81a637fade1efcadd688d6deba5c1", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1" - }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/cache": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0" - }, - "suggest": { - "symfony/mime": "To use the file extension guesser" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v6.0.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/error-handler": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", - "symfony/twig-bridge": "<5.4", - "symfony/validator": "<5.4", - "twig/twig": "<2.13" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/process": "^5.4|^6.0", - "symfony/routing": "^5.4|^6.0", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-29T18:12:46+00:00" - }, - { - "name": "symfony/mailer", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mailer.git", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "shasum": "" - }, - "require": { - "egulias/email-validator": "^2.1.10|^3", - "php": ">=8.0.2", - "psr/event-dispatcher": "^1", - "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3" - }, - "conflict": { - "symfony/http-kernel": "<5.4" - }, - "require-dev": { - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/messenger": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/mime", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/2cd9601efd040e56f43360daa68f3c6b0534923a", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "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" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "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.24.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": "2021-10-20T20:35:02+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-11-23T21:10:46+00:00" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44", - "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.23-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.24.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": "2021-09-14T14:02:44+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.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": "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.24.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": "2021-11-30T18:21:41+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-05-27T09:17:38+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:33+00:00" - }, - { - "name": "symfony/polyfill-php81", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:11+00:00" - }, - { - "name": "symfony/process", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/298ed357274c1868c20a0061df256a1250a6c4af", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/routing", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/yaml": "<5.4" - }, - "require-dev": { - "doctrine/annotations": "^1.12", - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/36715ebf9fb9db73db0cb24263c79077c6fe8603", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/container": "^2.0" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "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.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": "2021-11-04T17:53:12+00:00" - }, - { - "name": "symfony/string", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/522144f0c4c004c80d56fa47e40e17028e2eefc2", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.0" - }, - "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/translation-contracts": "^2.0|^3.0", - "symfony/var-exporter": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "files": [ - "Resources/functions.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 an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/translation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/71bb15335798f8c4da110911bcf2d2fead7a430d", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.3|^3.0" - }, - "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" - }, - "provide": { - "symfony/translation-implementation": "2.3|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-07T00:29:03+00:00" - }, - { - "name": "symfony/translation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "suggest": { - "symfony/translation-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - } - }, - "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.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": "2021-09-07T12:43:40+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7b701676fc64f9ef11f9b4870f16b48f66be4834", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<5.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-17T16:30:44+00:00" - }, - { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.4", - "source": { - "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" - } - ], - "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", - "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "support": { - "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" - }, - "time": "2021-12-08T09:12:39+00:00" - }, - { - "name": "vlucas/phpdotenv", - "version": "v5.4.1", - "source": { - "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", - "shasum": "" - }, - "require": { - "ext-pcre": "*", - "graham-campbell/result-type": "^1.0.2", - "php": "^7.1.3 || ^8.0", - "phpoption/phpoption": "^1.8", - "symfony/polyfill-ctype": "^1.23", - "symfony/polyfill-mbstring": "^1.23.1", - "symfony/polyfill-php80": "^1.23.1" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" - }, - "suggest": { - "ext-filter": "Required to use the boolean validator." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.4-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.4.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", - "type": "tidelift" - } - ], - "time": "2021-12-12T23:22:04+00:00" - }, - { - "name": "voku/portable-ascii", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/voku/portable-ascii.git", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/9bd89e83cecdf8c37b64909454249eaed98b2c89", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89", - "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.0" - }, - "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-01-24T18:59:03+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "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.10.0" - }, - "time": "2021-03-09T10:59:23+00:00" - } - ], - "packages-dev": [ - { - "name": "doctrine/instantiator", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.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%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2020-11-10T18:47:58+00:00" - }, - { - "name": "facade/ignition-contracts", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/facade/ignition-contracts.git", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^v2.15.8", - "phpunit/phpunit": "^9.3.11", - "vimeo/psalm": "^3.17.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Facade\\IgnitionContracts\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://flareapp.io", - "role": "Developer" - } - ], - "description": "Solution contracts for Ignition", - "homepage": "https://github.com/facade/ignition-contracts", - "keywords": [ - "contracts", - "flare", - "ignition" - ], - "support": { - "issues": "https://github.com/facade/ignition-contracts/issues", - "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" - }, - "time": "2020-10-16T08:27:54+00:00" - }, - { - "name": "fakerphp/faker", - "version": "v1.19.0", - "source": { - "type": "git", - "url": "https://github.com/FakerPHP/Faker.git", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^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": "*", - "symfony/phpunit-bridge": "^4.4 || ^5.2" - }, - "suggest": { - "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", - "ext-curl": "Required by Faker\\Provider\\Image to download images.", - "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", - "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.19-dev" - } - }, - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "François Zaninotto" - } - ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], - "support": { - "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0" - }, - "time": "2022-02-02T17:38:57+00:00" - }, - { - "name": "filp/whoops", - "version": "2.14.5", - "source": { - "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "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.14.5" - }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "time": "2022-01-07T12:00:00+00:00" - }, - { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "shasum": "" - }, - "require": { - "php": "^5.3|^7.0|^8.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" - }, - "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "classmap": [ - "hamcrest" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "This is the PHP port of Hamcrest Matchers", - "keywords": [ - "test" - ], - "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" - }, - "time": "2020-07-09T08:09:16+00:00" - }, - { - "name": "laravel/sail", - "version": "v1.13.2", - "source": { - "type": "git", - "url": "https://github.com/laravel/sail.git", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.0|^9.0", - "illuminate/contracts": "^8.0|^9.0", - "illuminate/support": "^8.0|^9.0", - "php": "^7.3|^8.0" - }, - "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": "2022-02-08T14:14:12+00:00" - }, - { - "name": "mockery/mockery", - "version": "1.5.0", - "source": { - "type": "git", - "url": "https://github.com/mockery/mockery.git", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "shasum": "" - }, - "require": { - "hamcrest/hamcrest-php": "^2.0.1", - "lib-pcre": ">=7.0", - "php": "^7.3 || ^8.0" - }, - "conflict": { - "phpunit/phpunit": "<8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-0": { - "Mockery": "library/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" - } - ], - "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": { - "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.5.0" - }, - "time": "2022-01-20T13:18:17+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.10.2", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "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.10.2" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2020-11-13T09:40:50+00:00" - }, - { - "name": "nunomaduro/collision", - "version": "v6.1.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/collision.git", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "shasum": "" - }, - "require": { - "facade/ignition-contracts": "^1.0.2", - "filp/whoops": "^2.14.5", - "php": "^8.0.0", - "symfony/console": "^6.0.2" - }, - "require-dev": { - "brianium/paratest": "^6.4.1", - "laravel/framework": "^9.0", - "nunomaduro/larastan": "^1.0.2", - "nunomaduro/mock-final-classes": "^1.1.0", - "orchestra/testbench": "^7.0.0", - "phpunit/phpunit": "^9.5.11" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "6.x-dev" - }, - "laravel": { - "providers": [ - "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" - ] - } - }, - "autoload": { - "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": "2022-01-18T17:49:08+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.1.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/15a90844ad40f127afd244c0cad228de2a80052a", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a", - "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.1.1" - }, - "time": "2022-02-07T21:56:48+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.6.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "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.6.0" - }, - "time": "2022-01-04T19:58:01+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" - }, - "time": "2021-12-08T12:19:24+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "9.2.10", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d5850aaf931743067f4bfc1ae4cbd06468400687", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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 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", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.10" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-05T09:12:13+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "3.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-02T12:48:52+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "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/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:58:55+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T05:33:50+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.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/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:16:10+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "9.5.13", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/597cb647654ede35e43b137926dfdfef0fb11743", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.3.1", - "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": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.7", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", - "sebastian/version": "^3.0.2" - }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.13" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-01-24T07:33:35+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:08:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "1.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:08:54+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:30:19+00:00" - }, - { - "name": "sebastian/comparator", - "version": "4.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:49:45+00:00" - }, - { - "name": "sebastian/complexity", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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 calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:52:27+00:00" - }, - { - "name": "sebastian/diff", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:10:38+00:00" - }, - { - "name": "sebastian/environment", - "version": "5.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-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": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:52:38+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "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", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-11-11T14:18:36+00:00" - }, - { - "name": "sebastian/global-state", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-11T13:31:12+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-28T06:42:11+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "http://www.github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:17:30+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:45:17+00:00" - }, - { - "name": "sebastian/type", - "version": "2.3.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-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/2.3.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-15T12:49:02+00:00" - }, - { - "name": "sebastian/version", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:39:44+00:00" - }, - { - "name": "spatie/backtrace", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/backtrace.git", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "ext-json": "*", - "phpunit/phpunit": "^9.3", - "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": { - "issues": "https://github.com/spatie/backtrace/issues", - "source": "https://github.com/spatie/backtrace/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/sponsors/spatie", - "type": "github" - }, - { - "url": "https://spatie.be/open-source/support-us", - "type": "other" - } - ], - "time": "2021-11-09T10:57:15+00:00" - }, - { - "name": "spatie/flare-client-php", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/flare-client-php.git", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "shasum": "" - }, - "require": { - "illuminate/pipeline": "^8.0|^9.0", - "php": "^8.0", - "spatie/backtrace": "^1.2", - "symfony/http-foundation": "^5.0|^6.0", - "symfony/mime": "^5.2|^6.0", - "symfony/process": "^5.2|^6.0", - "symfony/var-dumper": "^5.2|^6.0" - }, - "require-dev": { - "dms/phpunit-arraysubset-asserts": "^0.3.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/phpunit-snapshot-assertions": "^4.0" - }, - "type": "library", - "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.0.1" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2022-02-04T15:21:00+00:00" - }, - { - "name": "spatie/ignition", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/spatie/ignition.git", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/d2d5ba823af3004268556e87dfc94449e4159f5a", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "monolog/monolog": "^2.0", - "php": "^8.0", - "spatie/flare-client-php": "^1.0", - "symfony/console": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "mockery/mockery": "^1.4", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/ray": "^1.32", - "symfony/process": "^5.4|^6.0" - }, - "type": "library", - "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": "2022-01-19T12:57:41+00:00" - }, - { - "name": "spatie/laravel-ignition", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/68250225a9f83b086462c2af1b1139dfde48fbd2", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*", - "illuminate/support": "^8.77|^9.0", - "monolog/monolog": "^2.3", - "php": "^8.0", - "spatie/flare-client-php": "^1.0.1", - "spatie/ignition": "^1.0", - "symfony/console": "^5.0|^6.0", - "symfony/var-dumper": "^5.0|^6.0" - }, - "require-dev": { - "filp/whoops": "^2.14", - "livewire/livewire": "^2.8|dev-develop", - "mockery/mockery": "^1.4", - "nunomaduro/larastan": "^1.0", - "orchestra/testbench": "^6.23|^7.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/laravel-ray": "^1.27" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Spatie\\LaravelIgnition\\IgnitionServiceProvider" - ], - "aliases": { - "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" - } - } - }, - "autoload": { - "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": "2022-02-04T15:25:56+00:00" - }, - { - "name": "squizlabs/php_codesniffer", - "version": "3.6.2", - "source": { - "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", - "shasum": "" - }, - "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.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": "lead" - } - ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", - "keywords": [ - "phpcs", - "standards" - ], - "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" - }, - "time": "2021-12-12T21:44:58+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2021-07-28T10:34:58+00:00" - } - ], - "aliases": [], - "minimum-stability": "dev", - "stability-flags": [], - "prefer-stable": true, - "prefer-lowest": false, - "platform": { - "php": "^8.0" - }, - "platform-dev": [], - "plugin-api-version": "2.1.0" -} diff --git a/Chapter18/onlineStore/config/app.php b/Chapter18/onlineStore/config/app.php deleted file mode 100644 index 1941d7c..0000000 --- a/Chapter18/onlineStore/config/app.php +++ /dev/null @@ -1,197 +0,0 @@ - env('APP_NAME', 'Laravel'), - - /* - |-------------------------------------------------------------------------- - | Application Environment - |-------------------------------------------------------------------------- - | - | This value determines the "environment" your application is currently - | running in. This may determine how you prefer to configure various - | services the application utilizes. Set this in your ".env" file. - | - */ - - 'env' => env('APP_ENV', 'production'), - - /* - |-------------------------------------------------------------------------- - | Application Debug Mode - |-------------------------------------------------------------------------- - | - | When your application is in debug mode, detailed error messages with - | stack traces will be shown on every error that occurs within your - | application. If disabled, a simple generic error page is shown. - | - */ - - 'debug' => (bool) env('APP_DEBUG', false), - - /* - |-------------------------------------------------------------------------- - | Application URL - |-------------------------------------------------------------------------- - | - | This URL is used by the console to properly generate URLs when using - | the Artisan command line tool. You should set this to the root of - | your application so that it is used when running Artisan tasks. - | - */ - - 'url' => env('APP_URL', 'http://localhost'), - - 'asset_url' => env('ASSET_URL', null), - - /* - |-------------------------------------------------------------------------- - | 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', - - /* - |-------------------------------------------------------------------------- - | 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' => [ - - /* - * Laravel Framework Service Providers... - */ - Illuminate\Auth\AuthServiceProvider::class, - Illuminate\Broadcasting\BroadcastServiceProvider::class, - Illuminate\Bus\BusServiceProvider::class, - Illuminate\Cache\CacheServiceProvider::class, - Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, - Illuminate\Cookie\CookieServiceProvider::class, - Illuminate\Database\DatabaseServiceProvider::class, - Illuminate\Encryption\EncryptionServiceProvider::class, - Illuminate\Filesystem\FilesystemServiceProvider::class, - Illuminate\Foundation\Providers\FoundationServiceProvider::class, - Illuminate\Hashing\HashServiceProvider::class, - Illuminate\Mail\MailServiceProvider::class, - Illuminate\Notifications\NotificationServiceProvider::class, - Illuminate\Pagination\PaginationServiceProvider::class, - Illuminate\Pipeline\PipelineServiceProvider::class, - Illuminate\Queue\QueueServiceProvider::class, - Illuminate\Redis\RedisServiceProvider::class, - Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, - Illuminate\Session\SessionServiceProvider::class, - Illuminate\Translation\TranslationServiceProvider::class, - Illuminate\Validation\ValidationServiceProvider::class, - Illuminate\View\ViewServiceProvider::class, - - /* - * 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, - - ], - - /* - |-------------------------------------------------------------------------- - | 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([ - // ... - ])->toArray(), - -]; diff --git a/Chapter18/onlineStore/config/auth.php b/Chapter18/onlineStore/config/auth.php deleted file mode 100644 index d8c6cee..0000000 --- a/Chapter18/onlineStore/config/auth.php +++ /dev/null @@ -1,111 +0,0 @@ - [ - '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 expire 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. - | - */ - - 'passwords' => [ - 'users' => [ - 'provider' => 'users', - 'table' => 'password_resets', - '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/Chapter18/onlineStore/config/broadcasting.php b/Chapter18/onlineStore/config/broadcasting.php deleted file mode 100644 index 67fcbbd..0000000 --- a/Chapter18/onlineStore/config/broadcasting.php +++ /dev/null @@ -1,67 +0,0 @@ - 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'), - 'useTLS' => true, - ], - '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/Chapter18/onlineStore/config/cache.php b/Chapter18/onlineStore/config/cache.php deleted file mode 100644 index 8736c7a..0000000 --- a/Chapter18/onlineStore/config/cache.php +++ /dev/null @@ -1,110 +0,0 @@ - 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'), - ], - - '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 a RAM based store such as APC or Memcached, there might - | be other applications utilizing the same cache. So, we'll specify a - | value to get prefixed to all our keys so we can avoid collisions. - | - */ - - 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'), - -]; diff --git a/Chapter18/onlineStore/config/cors.php b/Chapter18/onlineStore/config/cors.php deleted file mode 100644 index 8a39e6d..0000000 --- a/Chapter18/onlineStore/config/cors.php +++ /dev/null @@ -1,34 +0,0 @@ - ['api/*', 'sanctum/csrf-cookie'], - - 'allowed_methods' => ['*'], - - 'allowed_origins' => ['*'], - - 'allowed_origins_patterns' => [], - - 'allowed_headers' => ['*'], - - 'exposed_headers' => [], - - 'max_age' => 0, - - 'supports_credentials' => false, - -]; diff --git a/Chapter18/onlineStore/config/database.php b/Chapter18/onlineStore/config/database.php deleted file mode 100644 index 0faebae..0000000 --- a/Chapter18/onlineStore/config/database.php +++ /dev/null @@ -1,147 +0,0 @@ - env('DB_CONNECTION', 'mysql'), - - /* - |-------------------------------------------------------------------------- - | Database Connections - |-------------------------------------------------------------------------- - | - | Here are each of the database connections setup for your application. - | Of course, examples of configuring each database platform that is - | supported by Laravel is shown below to make development simple. - | - | - | All database work in Laravel is done through the PHP PDO facilities - | so make sure you have the driver for your particular database of - | choice installed on your machine before you begin development. - | - */ - - 'connections' => [ - - 'sqlite' => [ - 'driver' => 'sqlite', - 'url' => env('DATABASE_URL'), - 'database' => env('DB_DATABASE', database_path('database.sqlite')), - 'prefix' => '', - 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), - ], - - 'mysql' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '3306'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'unix_socket' => env('DB_SOCKET', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - 'pgsql' => [ - 'driver' => 'pgsql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '5432'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - 'search_path' => 'public', - 'sslmode' => 'prefer', - ], - - 'sqlsrv' => [ - 'driver' => 'sqlsrv', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', 'localhost'), - 'port' => env('DB_PORT', '1433'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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'), - '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'), - 'password' => env('REDIS_PASSWORD'), - 'port' => env('REDIS_PORT', '6379'), - 'database' => env('REDIS_CACHE_DB', '1'), - ], - - ], - -]; diff --git a/Chapter18/onlineStore/config/filesystems.php b/Chapter18/onlineStore/config/filesystems.php deleted file mode 100644 index cf5abce..0000000 --- a/Chapter18/onlineStore/config/filesystems.php +++ /dev/null @@ -1,73 +0,0 @@ - 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 setup for each driver as an example of the required options. - | - | Supported Drivers: "local", "ftp", "sftp", "s3" - | - */ - - 'disks' => [ - - 'local' => [ - 'driver' => 'local', - 'root' => storage_path('app'), - ], - - 'public' => [ - 'driver' => 'local', - 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', - 'visibility' => 'public', - ], - - '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), - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter18/onlineStore/config/hashing.php b/Chapter18/onlineStore/config/hashing.php deleted file mode 100644 index bcd3be4..0000000 --- a/Chapter18/onlineStore/config/hashing.php +++ /dev/null @@ -1,52 +0,0 @@ - '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/Chapter18/onlineStore/config/logging.php b/Chapter18/onlineStore/config/logging.php deleted file mode 100644 index fefe088..0000000 --- a/Chapter18/onlineStore/config/logging.php +++ /dev/null @@ -1,119 +0,0 @@ - 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' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), - - /* - |-------------------------------------------------------------------------- - | 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'), - ], - - 'daily' => [ - 'driver' => 'daily', - 'path' => storage_path('logs/laravel.log'), - 'level' => env('LOG_LEVEL', 'debug'), - 'days' => 14, - ], - - 'slack' => [ - 'driver' => 'slack', - 'url' => env('LOG_SLACK_WEBHOOK_URL'), - 'username' => 'Laravel Log', - 'emoji' => ':boom:', - 'level' => env('LOG_LEVEL', 'critical'), - ], - - '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'), - ], - ], - - 'stderr' => [ - 'driver' => 'monolog', - 'level' => env('LOG_LEVEL', 'debug'), - 'handler' => StreamHandler::class, - 'formatter' => env('LOG_STDERR_FORMATTER'), - 'with' => [ - 'stream' => 'php://stderr', - ], - ], - - 'syslog' => [ - 'driver' => 'syslog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'errorlog' => [ - 'driver' => 'errorlog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'null' => [ - 'driver' => 'monolog', - 'handler' => NullHandler::class, - ], - - 'emergency' => [ - 'path' => storage_path('logs/laravel.log'), - ], - ], - -]; diff --git a/Chapter18/onlineStore/config/mail.php b/Chapter18/onlineStore/config/mail.php deleted file mode 100644 index 87b6fe3..0000000 --- a/Chapter18/onlineStore/config/mail.php +++ /dev/null @@ -1,117 +0,0 @@ - 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", - | "postmark", "log", "array", "failover" - | - */ - - 'mailers' => [ - 'smtp' => [ - 'transport' => 'smtp', - '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, - ], - - 'ses' => [ - 'transport' => 'ses', - ], - - 'mailgun' => [ - 'transport' => 'mailgun', - ], - - 'postmark' => [ - 'transport' => 'postmark', - ], - - 'sendmail' => [ - 'transport' => 'sendmail', - 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -t -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/Chapter18/onlineStore/config/queue.php b/Chapter18/onlineStore/config/queue.php deleted file mode 100644 index 25ea5a8..0000000 --- a/Chapter18/onlineStore/config/queue.php +++ /dev/null @@ -1,93 +0,0 @@ - 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, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter18/onlineStore/config/sanctum.php b/Chapter18/onlineStore/config/sanctum.php deleted file mode 100644 index 9281c92..0000000 --- a/Chapter18/onlineStore/config/sanctum.php +++ /dev/null @@ -1,65 +0,0 @@ - explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( - '%s%s', - 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', - env('APP_URL') ? ','.parse_url(env('APP_URL'), PHP_URL_HOST) : '' - ))), - - /* - |-------------------------------------------------------------------------- - | 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/Chapter18/onlineStore/config/services.php b/Chapter18/onlineStore/config/services.php deleted file mode 100644 index 2a1d616..0000000 --- a/Chapter18/onlineStore/config/services.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - 'domain' => env('MAILGUN_DOMAIN'), - 'secret' => env('MAILGUN_SECRET'), - 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), - ], - - '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/Chapter18/onlineStore/config/session.php b/Chapter18/onlineStore/config/session.php deleted file mode 100644 index 8fed97c..0000000 --- a/Chapter18/onlineStore/config/session.php +++ /dev/null @@ -1,201 +0,0 @@ - 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/Chapter18/onlineStore/config/view.php b/Chapter18/onlineStore/config/view.php deleted file mode 100644 index 22b8a18..0000000 --- a/Chapter18/onlineStore/config/view.php +++ /dev/null @@ -1,36 +0,0 @@ - [ - 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/Chapter18/onlineStore/database/.gitignore b/Chapter18/onlineStore/database/.gitignore deleted file mode 100644 index 9b19b93..0000000 --- a/Chapter18/onlineStore/database/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.sqlite* diff --git a/Chapter18/onlineStore/database/factories/UserFactory.php b/Chapter18/onlineStore/database/factories/UserFactory.php deleted file mode 100644 index d6ca926..0000000 --- a/Chapter18/onlineStore/database/factories/UserFactory.php +++ /dev/null @@ -1,42 +0,0 @@ - - */ -class UserFactory extends Factory -{ - /** - * Define the model's default state. - * - * @return array - */ - public function definition() - { - return [ - 'name' => $this->faker->name(), - 'email' => $this->faker->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. - * - * @return \Illuminate\Database\Eloquent\Factories\Factory - */ - public function unverified() - { - return $this->state(function (array $attributes) { - return [ - 'email_verified_at' => null, - ]; - }); - } -} diff --git a/Chapter18/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php b/Chapter18/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php deleted file mode 100644 index cf6b776..0000000 --- a/Chapter18/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->string('name'); - $table->string('email')->unique(); - $table->timestamp('email_verified_at')->nullable(); - $table->string('password'); - $table->rememberToken(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('users'); - } -}; diff --git a/Chapter18/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php b/Chapter18/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php deleted file mode 100644 index fcacb80..0000000 --- a/Chapter18/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php +++ /dev/null @@ -1,32 +0,0 @@ -string('email')->index(); - $table->string('token'); - $table->timestamp('created_at')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('password_resets'); - } -}; diff --git a/Chapter18/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/Chapter18/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php deleted file mode 100644 index 1719198..0000000 --- a/Chapter18/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php +++ /dev/null @@ -1,36 +0,0 @@ -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. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('failed_jobs'); - } -}; diff --git a/Chapter18/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/Chapter18/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php deleted file mode 100644 index fd235f8..0000000 --- a/Chapter18/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->morphs('tokenable'); - $table->string('name'); - $table->string('token', 64)->unique(); - $table->text('abilities')->nullable(); - $table->timestamp('last_used_at')->nullable(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('personal_access_tokens'); - } -}; diff --git a/Chapter18/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php b/Chapter18/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php deleted file mode 100644 index 2eecdc2..0000000 --- a/Chapter18/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php +++ /dev/null @@ -1,35 +0,0 @@ -id(); - $table->string('name'); - $table->text('description'); - $table->string('image'); - $table->integer('price'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('products'); - } -}; diff --git a/Chapter18/onlineStore/database/seeders/DatabaseSeeder.php b/Chapter18/onlineStore/database/seeders/DatabaseSeeder.php deleted file mode 100644 index 71f673f..0000000 --- a/Chapter18/onlineStore/database/seeders/DatabaseSeeder.php +++ /dev/null @@ -1,19 +0,0 @@ -create(); - } -} diff --git a/Chapter18/onlineStore/lang/en.json b/Chapter18/onlineStore/lang/en.json deleted file mode 100644 index 577680d..0000000 --- a/Chapter18/onlineStore/lang/en.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "The :attribute must contain at least one letter.": "The :attribute must contain at least one letter.", - "The :attribute must contain at least one number.": "The :attribute must contain at least one number.", - "The :attribute must contain at least one symbol.": "The :attribute must contain at least one symbol.", - "The :attribute must contain at least one uppercase and one lowercase letter.": "The :attribute must contain at least one uppercase and one lowercase letter.", - "The given :attribute has appeared in a data leak. Please choose a different :attribute.": "The given :attribute has appeared in a data leak. Please choose a different :attribute." -} diff --git a/Chapter18/onlineStore/lang/en/auth.php b/Chapter18/onlineStore/lang/en/auth.php deleted file mode 100644 index 6598e2c..0000000 --- a/Chapter18/onlineStore/lang/en/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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/Chapter18/onlineStore/lang/en/pagination.php b/Chapter18/onlineStore/lang/en/pagination.php deleted file mode 100644 index d481411..0000000 --- a/Chapter18/onlineStore/lang/en/pagination.php +++ /dev/null @@ -1,19 +0,0 @@ - '« Previous', - 'next' => 'Next »', - -]; diff --git a/Chapter18/onlineStore/lang/en/passwords.php b/Chapter18/onlineStore/lang/en/passwords.php deleted file mode 100644 index 2345a56..0000000 --- a/Chapter18/onlineStore/lang/en/passwords.php +++ /dev/null @@ -1,22 +0,0 @@ - '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/Chapter18/onlineStore/lang/en/validation.php b/Chapter18/onlineStore/lang/en/validation.php deleted file mode 100644 index 783003c..0000000 --- a/Chapter18/onlineStore/lang/en/validation.php +++ /dev/null @@ -1,163 +0,0 @@ - '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' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - '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' => [ - 'numeric' => 'The :attribute must be greater than :value.', - 'file' => 'The :attribute must be greater than :value kilobytes.', - 'string' => 'The :attribute must be greater than :value characters.', - 'array' => 'The :attribute must have more than :value items.', - ], - 'gte' => [ - 'numeric' => 'The :attribute must be greater than or equal to :value.', - 'file' => 'The :attribute must be greater than or equal to :value kilobytes.', - 'string' => 'The :attribute must be greater than or equal to :value characters.', - 'array' => 'The :attribute must have :value items or more.', - ], - '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' => [ - 'numeric' => 'The :attribute must be less than :value.', - 'file' => 'The :attribute must be less than :value kilobytes.', - 'string' => 'The :attribute must be less than :value characters.', - 'array' => 'The :attribute must have less than :value items.', - ], - 'lte' => [ - 'numeric' => 'The :attribute must be less than or equal to :value.', - 'file' => 'The :attribute must be less than or equal to :value kilobytes.', - 'string' => 'The :attribute must be less than or equal to :value characters.', - 'array' => 'The :attribute must not have more than :value items.', - ], - 'mac_address' => 'The :attribute must be a valid MAC address.', - 'max' => [ - 'numeric' => 'The :attribute must not be greater than :max.', - 'file' => 'The :attribute must not be greater than :max kilobytes.', - 'string' => 'The :attribute must not be greater than :max characters.', - 'array' => 'The :attribute must not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - '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.', - 'password' => 'The password is incorrect.', - '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' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - '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/Chapter18/onlineStore/package.json b/Chapter18/onlineStore/package.json deleted file mode 100644 index 7a9aecd..0000000 --- a/Chapter18/onlineStore/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "private": true, - "scripts": { - "dev": "npm run development", - "development": "mix", - "watch": "mix watch", - "watch-poll": "mix watch -- --watch-options-poll=1000", - "hot": "mix watch --hot", - "prod": "npm run production", - "production": "mix --production" - }, - "devDependencies": { - "axios": "^0.25", - "laravel-mix": "^6.0.6", - "lodash": "^4.17.19", - "postcss": "^8.1.14" - } -} diff --git a/Chapter18/onlineStore/phpcs.xml b/Chapter18/onlineStore/phpcs.xml deleted file mode 100644 index a1cf2b6..0000000 --- a/Chapter18/onlineStore/phpcs.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - The coding standard for the Online Store project - - app/ - config/ - database/ - routes/ - */migrations/* - diff --git a/Chapter18/onlineStore/phpunit.xml b/Chapter18/onlineStore/phpunit.xml deleted file mode 100644 index 2ac86a1..0000000 --- a/Chapter18/onlineStore/phpunit.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - ./tests/Unit - - - ./tests/Feature - - - - - ./app - - - - - - - - - - - - - - diff --git a/Chapter18/onlineStore/public/.htaccess b/Chapter18/onlineStore/public/.htaccess deleted file mode 100644 index 3aec5e2..0000000 --- a/Chapter18/onlineStore/public/.htaccess +++ /dev/null @@ -1,21 +0,0 @@ - - - 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/Chapter18/onlineStore/public/css/admin.css b/Chapter18/onlineStore/public/css/admin.css deleted file mode 100644 index d9495a1..0000000 --- a/Chapter18/onlineStore/public/css/admin.css +++ /dev/null @@ -1,33 +0,0 @@ -.copyright { - background-color: #1a252f; -} - -.fixed { - -ms-flex: 0 0 250px; - flex: 0 0 250px; -} - -.content-grey { - background-color: #f8f9fc; -} - -hr { - margin-top: 0.8em; - margin-bottom: 0.8em; -} - -.img-profile { - height: 2rem; - width: 2rem; -} - -.profile-font { - color: #858796 !important; - font-size: 80%; - font-weight: 400; -} - -.card-header { - background-color: #f8f9fc; - border-bottom: 1px solid #e3e6f0; -} diff --git a/Chapter18/onlineStore/public/css/app.css b/Chapter18/onlineStore/public/css/app.css deleted file mode 100644 index cabac36..0000000 --- a/Chapter18/onlineStore/public/css/app.css +++ /dev/null @@ -1,20 +0,0 @@ -.bg-secondary { - background-color: #2c3e50 !important; -} - -.copyright { - background-color: #1a252f; -} - -.bg-primary { - background-color: #1abc9c !important; -} - -nav{ - font-weight: 700; -} - -.img-card{ - height: 18vw; - object-fit: cover; -} diff --git a/Chapter18/onlineStore/public/favicon.ico b/Chapter18/onlineStore/public/favicon.ico deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter18/onlineStore/public/img/game.png b/Chapter18/onlineStore/public/img/game.png deleted file mode 100644 index 85420e8bbc16098bf26b4ee63bde0e91a19d1f2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25896 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 cz>% diff --git a/Chapter18/onlineStore/public/img/safe.png b/Chapter18/onlineStore/public/img/safe.png deleted file mode 100644 index 445942c707af53210931f9f4f99f6d3cb69e5d89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19240 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
    w==XB0?3|p=#`o%NsudE(E-U#KS3Snw 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 o>ir+C;RN10sIS0&a;p - - - - - - - - - - - - - - - - - - diff --git a/Chapter18/onlineStore/public/index.php b/Chapter18/onlineStore/public/index.php deleted file mode 100644 index 1d69f3a..0000000 --- a/Chapter18/onlineStore/public/index.php +++ /dev/null @@ -1,55 +0,0 @@ -make(Kernel::class); - -$response = $kernel->handle( - $request = Request::capture() -)->send(); - -$kernel->terminate($request, $response); diff --git a/Chapter18/onlineStore/public/robots.txt b/Chapter18/onlineStore/public/robots.txt deleted file mode 100644 index eb05362..0000000 --- a/Chapter18/onlineStore/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: diff --git a/Chapter18/onlineStore/resources/css/app.css b/Chapter18/onlineStore/resources/css/app.css deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter18/onlineStore/resources/js/app.js b/Chapter18/onlineStore/resources/js/app.js deleted file mode 100644 index 40c55f6..0000000 --- a/Chapter18/onlineStore/resources/js/app.js +++ /dev/null @@ -1 +0,0 @@ -require('./bootstrap'); diff --git a/Chapter18/onlineStore/resources/js/bootstrap.js b/Chapter18/onlineStore/resources/js/bootstrap.js deleted file mode 100644 index 6922577..0000000 --- a/Chapter18/onlineStore/resources/js/bootstrap.js +++ /dev/null @@ -1,28 +0,0 @@ -window._ = require('lodash'); - -/** - * 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 = require('axios'); - -window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; - -/** - * 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'; - -// window.Pusher = require('pusher-js'); - -// window.Echo = new Echo({ -// broadcaster: 'pusher', -// key: process.env.MIX_PUSHER_APP_KEY, -// cluster: process.env.MIX_PUSHER_APP_CLUSTER, -// forceTLS: true -// }); diff --git a/Chapter18/onlineStore/resources/views/admin/home/index.blade.php b/Chapter18/onlineStore/resources/views/admin/home/index.blade.php deleted file mode 100644 index a2b4868..0000000 --- a/Chapter18/onlineStore/resources/views/admin/home/index.blade.php +++ /dev/null @@ -1,12 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
    -
    - Admin Panel - Home Page -
    -
    - Welcome to the Admin Panel, use the sidebar to navigate between the different options. -
    -
    -@endsection diff --git a/Chapter18/onlineStore/resources/views/admin/product/index.blade.php b/Chapter18/onlineStore/resources/views/admin/product/index.blade.php deleted file mode 100644 index 288590e..0000000 --- a/Chapter18/onlineStore/resources/views/admin/product/index.blade.php +++ /dev/null @@ -1,86 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
    -
    - Create Products -
    -
    - @if($errors->any()) -
      - @foreach($errors->all() as $error) -
    • - {{ $error }}
    • - @endforeach -
    - @endif - -
    - @csrf -
    -
    -
    - -
    - -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -   -
    -
    -
    - - -
    - -
    -
    -
    - -
    -
    - Manage Products -
    -
    - - - - - - - - - - - @foreach ($viewData["products"] as $product) - - - - - - - @endforeach - -
    IDNameEditDelete
    {{ $product->getId() }}{{ $product->getName() }}EditDelete
    -
    -
    -@endsection diff --git a/Chapter18/onlineStore/resources/views/home/about.blade.php b/Chapter18/onlineStore/resources/views/home/about.blade.php deleted file mode 100644 index f79abf3..0000000 --- a/Chapter18/onlineStore/resources/views/home/about.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    -
    -
    -

    {{ $viewData["description"] }}

    -
    -
    -

    {{ $viewData["author"] }}

    -
    -
    -
    -@endsection diff --git a/Chapter18/onlineStore/resources/views/home/index.blade.php b/Chapter18/onlineStore/resources/views/home/index.blade.php deleted file mode 100644 index 1affb20..0000000 --- a/Chapter18/onlineStore/resources/views/home/index.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('content') -
    -
    - -
    -
    - -
    -
    - -
    -
    -@endsection diff --git a/Chapter18/onlineStore/resources/views/layouts/admin.blade.php b/Chapter18/onlineStore/resources/views/layouts/admin.blade.php deleted file mode 100644 index a1a1d57..0000000 --- a/Chapter18/onlineStore/resources/views/layouts/admin.blade.php +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - @yield('title', 'Admin - Online Store') - - - -
    - - - -
    - - -
    - @yield('content') -
    -
    -
    - - - - - - - - - diff --git a/Chapter18/onlineStore/resources/views/layouts/app.blade.php b/Chapter18/onlineStore/resources/views/layouts/app.blade.php deleted file mode 100644 index eee7fcb..0000000 --- a/Chapter18/onlineStore/resources/views/layouts/app.blade.php +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - @yield('title', 'Online Store') - - - - - -
    -
    -

    @yield('subtitle', 'A Laravel Online Store')

    -
    -
    - - -
    - @yield('content') -
    - - - - - - - diff --git a/Chapter18/onlineStore/resources/views/product/index.blade.php b/Chapter18/onlineStore/resources/views/product/index.blade.php deleted file mode 100644 index 64c3e18..0000000 --- a/Chapter18/onlineStore/resources/views/product/index.blade.php +++ /dev/null @@ -1,18 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    - @foreach ($viewData["products"] as $product) - - @endforeach -
    -@endsection diff --git a/Chapter18/onlineStore/resources/views/product/show.blade.php b/Chapter18/onlineStore/resources/views/product/show.blade.php deleted file mode 100644 index be37a01..0000000 --- a/Chapter18/onlineStore/resources/views/product/show.blade.php +++ /dev/null @@ -1,21 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    -
    -
    - getImage()) }}" class="img-fluid rounded-start"> -
    -
    -
    -
    - {{ $viewData["product"]->getName() }} (${{ $viewData["product"]->getPrice() }}) -
    -

    {{ $viewData["product"]->getDescription() }}

    -

    Add to Cart

    -
    -
    -
    -
    -@endsection diff --git a/Chapter18/onlineStore/resources/views/welcome.blade.php b/Chapter18/onlineStore/resources/views/welcome.blade.php deleted file mode 100644 index c587c72..0000000 --- a/Chapter18/onlineStore/resources/views/welcome.blade.php +++ /dev/null @@ -1,7 +0,0 @@ -@extends('layouts.app') -@section('title', 'Home Page - Online Store') -@section('content') -
    - Welcome to the application -
    -@endsection \ No newline at end of file diff --git a/Chapter18/onlineStore/routes/api.php b/Chapter18/onlineStore/routes/api.php deleted file mode 100644 index eb6fa48..0000000 --- a/Chapter18/onlineStore/routes/api.php +++ /dev/null @@ -1,19 +0,0 @@ -get('/user', function (Request $request) { - return $request->user(); -}); diff --git a/Chapter18/onlineStore/routes/channels.php b/Chapter18/onlineStore/routes/channels.php deleted file mode 100644 index 5d451e1..0000000 --- a/Chapter18/onlineStore/routes/channels.php +++ /dev/null @@ -1,18 +0,0 @@ -id === (int) $id; -}); diff --git a/Chapter18/onlineStore/routes/console.php b/Chapter18/onlineStore/routes/console.php deleted file mode 100644 index e05f4c9..0000000 --- a/Chapter18/onlineStore/routes/console.php +++ /dev/null @@ -1,19 +0,0 @@ -comment(Inspiring::quote()); -})->purpose('Display an inspiring quote'); diff --git a/Chapter18/onlineStore/routes/web.php b/Chapter18/onlineStore/routes/web.php deleted file mode 100644 index e1829ed..0000000 --- a/Chapter18/onlineStore/routes/web.php +++ /dev/null @@ -1,22 +0,0 @@ -name("home.index"); -Route::get('/about', 'App\Http\Controllers\HomeController@about')->name("home.about"); -Route::get('/products', 'App\Http\Controllers\ProductController@index')->name("product.index"); -Route::get('/products/{id}', 'App\Http\Controllers\ProductController@show')->name("product.show"); -Route::get('/admin', 'App\Http\Controllers\Admin\AdminHomeController@index')->name("admin.home.index"); -Route::get('/admin/products', 'App\Http\Controllers\Admin\AdminProductController@index')->name("admin.product.index"); -Route::post('/admin/products/store', 'App\Http\Controllers\Admin\AdminProductController@store')->name("admin.product.store"); diff --git a/Chapter18/onlineStore/storage/app/.gitignore b/Chapter18/onlineStore/storage/app/.gitignore deleted file mode 100644 index 8f4803c..0000000 --- a/Chapter18/onlineStore/storage/app/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!public/ -!.gitignore diff --git a/Chapter18/onlineStore/storage/app/public/.gitignore b/Chapter18/onlineStore/storage/app/public/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter18/onlineStore/storage/app/public/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter18/onlineStore/storage/framework/.gitignore b/Chapter18/onlineStore/storage/framework/.gitignore deleted file mode 100644 index 05c4471..0000000 --- a/Chapter18/onlineStore/storage/framework/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -compiled.php -config.php -down -events.scanned.php -maintenance.php -routes.php -routes.scanned.php -schedule-* -services.json diff --git a/Chapter18/onlineStore/storage/framework/cache/.gitignore b/Chapter18/onlineStore/storage/framework/cache/.gitignore deleted file mode 100644 index 01e4a6c..0000000 --- a/Chapter18/onlineStore/storage/framework/cache/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!data/ -!.gitignore diff --git a/Chapter18/onlineStore/storage/framework/cache/data/.gitignore b/Chapter18/onlineStore/storage/framework/cache/data/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter18/onlineStore/storage/framework/cache/data/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter18/onlineStore/storage/framework/sessions/.gitignore b/Chapter18/onlineStore/storage/framework/sessions/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter18/onlineStore/storage/framework/sessions/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter18/onlineStore/storage/framework/testing/.gitignore b/Chapter18/onlineStore/storage/framework/testing/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter18/onlineStore/storage/framework/testing/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter18/onlineStore/storage/framework/views/.gitignore b/Chapter18/onlineStore/storage/framework/views/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter18/onlineStore/storage/framework/views/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter18/onlineStore/storage/logs/.gitignore b/Chapter18/onlineStore/storage/logs/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter18/onlineStore/storage/logs/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter18/onlineStore/tests/CreatesApplication.php b/Chapter18/onlineStore/tests/CreatesApplication.php deleted file mode 100644 index 547152f..0000000 --- a/Chapter18/onlineStore/tests/CreatesApplication.php +++ /dev/null @@ -1,22 +0,0 @@ -make(Kernel::class)->bootstrap(); - - return $app; - } -} diff --git a/Chapter18/onlineStore/tests/Feature/ExampleTest.php b/Chapter18/onlineStore/tests/Feature/ExampleTest.php deleted file mode 100644 index 78ccc21..0000000 --- a/Chapter18/onlineStore/tests/Feature/ExampleTest.php +++ /dev/null @@ -1,21 +0,0 @@ -get('/'); - - $response->assertStatus(200); - } -} diff --git a/Chapter18/onlineStore/tests/TestCase.php b/Chapter18/onlineStore/tests/TestCase.php deleted file mode 100644 index 2932d4a..0000000 --- a/Chapter18/onlineStore/tests/TestCase.php +++ /dev/null @@ -1,10 +0,0 @@ -assertTrue(true); - } -} diff --git a/Chapter18/onlineStore/webpack.mix.js b/Chapter18/onlineStore/webpack.mix.js deleted file mode 100644 index 2a22dc1..0000000 --- a/Chapter18/onlineStore/webpack.mix.js +++ /dev/null @@ -1,17 +0,0 @@ -const mix = require('laravel-mix'); - -/* - |-------------------------------------------------------------------------- - | Mix Asset Management - |-------------------------------------------------------------------------- - | - | Mix provides a clean, fluent API for defining some Webpack build steps - | for your Laravel applications. By default, we are compiling the CSS - | file for the application as well as bundling up all the JS files. - | - */ - -mix.js('resources/js/app.js', 'public/js') - .postCss('resources/css/app.css', 'public/css', [ - // - ]); diff --git a/Chapter19/onlineStore/.editorconfig b/Chapter19/onlineStore/.editorconfig deleted file mode 100644 index 1671c9b..0000000 --- a/Chapter19/onlineStore/.editorconfig +++ /dev/null @@ -1,18 +0,0 @@ -root = true - -[*] -charset = utf-8 -end_of_line = lf -insert_final_newline = true -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true - -[*.md] -trim_trailing_whitespace = false - -[*.{yml,yaml}] -indent_size = 2 - -[docker-compose.yml] -indent_size = 4 diff --git a/Chapter19/onlineStore/.env.example b/Chapter19/onlineStore/.env.example deleted file mode 100644 index 8510237..0000000 --- a/Chapter19/onlineStore/.env.example +++ /dev/null @@ -1,52 +0,0 @@ -APP_NAME=Laravel -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=laravel -DB_USERNAME=root -DB_PASSWORD= - -BROADCAST_DRIVER=log -CACHE_DRIVER=file -FILESYSTEM_DISK=local -QUEUE_CONNECTION=sync -SESSION_DRIVER=file -SESSION_LIFETIME=120 - -MEMCACHED_HOST=127.0.0.1 - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -MAIL_MAILER=smtp -MAIL_HOST=mailhog -MAIL_PORT=1025 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS=null -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_APP_CLUSTER=mt1 - -MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/Chapter19/onlineStore/.gitattributes b/Chapter19/onlineStore/.gitattributes deleted file mode 100644 index 510d996..0000000 --- a/Chapter19/onlineStore/.gitattributes +++ /dev/null @@ -1,10 +0,0 @@ -* text=auto - -*.blade.php diff=html -*.css diff=css -*.html diff=html -*.md diff=markdown -*.php diff=php - -/.github export-ignore -CHANGELOG.md export-ignore diff --git a/Chapter19/onlineStore/.gitignore b/Chapter19/onlineStore/.gitignore deleted file mode 100644 index eb003b0..0000000 --- a/Chapter19/onlineStore/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -/node_modules -/public/hot -/public/storage -/storage/*.key -/vendor -.env -.env.backup -.phpunit.result.cache -docker-compose.override.yml -Homestead.json -Homestead.yaml -npm-debug.log -yarn-error.log -/.idea -/.vscode diff --git a/Chapter19/onlineStore/.styleci.yml b/Chapter19/onlineStore/.styleci.yml deleted file mode 100644 index 679a631..0000000 --- a/Chapter19/onlineStore/.styleci.yml +++ /dev/null @@ -1,13 +0,0 @@ -php: - preset: laravel - version: 8 - disabled: - - no_unused_imports - finder: - not-name: - - index.php -js: - finder: - not-name: - - webpack.mix.js -css: true diff --git a/Chapter19/onlineStore/README.md b/Chapter19/onlineStore/README.md deleted file mode 100644 index f171eca..0000000 --- a/Chapter19/onlineStore/README.md +++ /dev/null @@ -1,64 +0,0 @@ -

    - -

    -Build Status -Total Downloads -Latest Stable Version -License -

    - -## About Laravel - -Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as: - -- [Simple, fast routing engine](https://laravel.com/docs/routing). -- [Powerful dependency injection container](https://laravel.com/docs/container). -- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage. -- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent). -- Database agnostic [schema migrations](https://laravel.com/docs/migrations). -- [Robust background job processing](https://laravel.com/docs/queues). -- [Real-time event broadcasting](https://laravel.com/docs/broadcasting). - -Laravel is accessible, powerful, and provides tools required for large, robust applications. - -## Learning Laravel - -Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework. - -If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 2000 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library. - -## Laravel Sponsors - -We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell). - -### Premium Partners - -- **[Vehikl](https://vehikl.com/)** -- **[Tighten Co.](https://tighten.co)** -- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** -- **[64 Robots](https://64robots.com)** -- **[Cubet Techno Labs](https://cubettech.com)** -- **[Cyber-Duck](https://cyber-duck.co.uk)** -- **[Many](https://www.many.co.uk)** -- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)** -- **[DevSquad](https://devsquad.com)** -- **[Curotec](https://www.curotec.com/services/technologies/laravel/)** -- **[OP.GG](https://op.gg)** -- **[WebReinvent](https://webreinvent.com/?utm_source=laravel&utm_medium=github&utm_campaign=patreon-sponsors)** -- **[Lendio](https://lendio.com)** - -## Contributing - -Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions). - -## Code of Conduct - -In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). - -## Security Vulnerabilities - -If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed. - -## License - -The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). diff --git a/Chapter19/onlineStore/app/Console/Kernel.php b/Chapter19/onlineStore/app/Console/Kernel.php deleted file mode 100644 index d8bc1d2..0000000 --- a/Chapter19/onlineStore/app/Console/Kernel.php +++ /dev/null @@ -1,32 +0,0 @@ -command('inspire')->hourly(); - } - - /** - * Register the commands for the application. - * - * @return void - */ - protected function commands() - { - $this->load(__DIR__.'/Commands'); - - require base_path('routes/console.php'); - } -} diff --git a/Chapter19/onlineStore/app/Exceptions/Handler.php b/Chapter19/onlineStore/app/Exceptions/Handler.php deleted file mode 100644 index 8e7fbd1..0000000 --- a/Chapter19/onlineStore/app/Exceptions/Handler.php +++ /dev/null @@ -1,41 +0,0 @@ -> - */ - protected $dontReport = [ - // - ]; - - /** - * A list of the inputs that are never flashed for validation exceptions. - * - * @var array - */ - protected $dontFlash = [ - 'current_password', - 'password', - 'password_confirmation', - ]; - - /** - * Register the exception handling callbacks for the application. - * - * @return void - */ - public function register() - { - $this->reportable(function (Throwable $e) { - // - }); - } -} diff --git a/Chapter19/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php b/Chapter19/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php deleted file mode 100644 index cd78cb3..0000000 --- a/Chapter19/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php +++ /dev/null @@ -1,16 +0,0 @@ -with("viewData", $viewData); - } -} diff --git a/Chapter19/onlineStore/app/Http/Controllers/Admin/AdminProductController.php b/Chapter19/onlineStore/app/Http/Controllers/Admin/AdminProductController.php deleted file mode 100644 index a167455..0000000 --- a/Chapter19/onlineStore/app/Http/Controllers/Admin/AdminProductController.php +++ /dev/null @@ -1,89 +0,0 @@ -with("viewData", $viewData); - } - - public function store(Request $request) - { - $request->validate([ - "name" => "required|max:255", - "description" => "required", - "price" => "required|numeric|gt:0", - 'image' => 'image', - ]); - - $newProduct = new Product(); - $newProduct->setName($request->input('name')); - $newProduct->setDescription($request->input('description')); - $newProduct->setPrice($request->input('price')); - $newProduct->setImage("game.png"); - $newProduct->save(); - - if ($request->hasFile('image')) { - $imageName = $newProduct->getId().".".$request->file('image')->extension(); - Storage::disk('public')->put( - $imageName, - file_get_contents($request->file('image')->getRealPath()) - ); - $newProduct->setImage($imageName); - $newProduct->save(); - } - - return back(); - } - - public function delete($id) - { - Product::destroy($id); - return back(); - } - - public function edit($id) - { - $viewData = []; - $viewData["title"] = "Admin Page - Edit Product - Online Store"; - $viewData["product"] = Product::findOrFail($id); - return view('admin.product.edit')->with("viewData", $viewData); - } - - public function update(Request $request, $id) - { - $request->validate([ - "name" => "required|max:255", - "description" => "required", - "price" => "required|numeric|gt:0", - 'image' => 'image', - ]); - - $product = Product::findOrFail($id); - $product->setName($request->input('name')); - $product->setDescription($request->input('description')); - $product->setPrice($request->input('price')); - - if ($request->hasFile('image')) { - $imageName = $product->getId().".".$request->file('image')->extension(); - Storage::disk('public')->put( - $imageName, - file_get_contents($request->file('image')->getRealPath()) - ); - $product->setImage($imageName); - } - - $product->save(); - return redirect()->route('admin.product.index'); - } -} diff --git a/Chapter19/onlineStore/app/Http/Controllers/Controller.php b/Chapter19/onlineStore/app/Http/Controllers/Controller.php deleted file mode 100644 index a0a2a8a..0000000 --- a/Chapter19/onlineStore/app/Http/Controllers/Controller.php +++ /dev/null @@ -1,13 +0,0 @@ -with("viewData", $viewData); - } - - public function about() - { - $viewData = []; - $viewData["title"] = "About us - Online Store"; - $viewData["subtitle"] = "About us"; - $viewData["description"] = "This is an about page ..."; - $viewData["author"] = "Developed by: Your Name"; - return view('home.about')->with("viewData", $viewData); - } -} diff --git a/Chapter19/onlineStore/app/Http/Controllers/ProductController.php b/Chapter19/onlineStore/app/Http/Controllers/ProductController.php deleted file mode 100644 index d27a3a3..0000000 --- a/Chapter19/onlineStore/app/Http/Controllers/ProductController.php +++ /dev/null @@ -1,29 +0,0 @@ -with("viewData", $viewData); - } - - public function show($id) - { - $viewData = []; - $product = Product::findOrFail($id); - $viewData["title"] = $product->getName()." - Online Store"; - $viewData["subtitle"] = $product->getName()." - Product information"; - $viewData["product"] = $product; - return view('product.show')->with("viewData", $viewData); - } -} diff --git a/Chapter19/onlineStore/app/Http/Kernel.php b/Chapter19/onlineStore/app/Http/Kernel.php deleted file mode 100644 index d3722c2..0000000 --- a/Chapter19/onlineStore/app/Http/Kernel.php +++ /dev/null @@ -1,67 +0,0 @@ - - */ - protected $middleware = [ - // \App\Http\Middleware\TrustHosts::class, - \App\Http\Middleware\TrustProxies::class, - \Fruitcake\Cors\HandleCors::class, - \App\Http\Middleware\PreventRequestsDuringMaintenance::class, - \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, - \App\Http\Middleware\TrimStrings::class, - \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, - ]; - - /** - * The application's route middleware groups. - * - * @var array> - */ - protected $middlewareGroups = [ - 'web' => [ - \App\Http\Middleware\EncryptCookies::class, - \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, - \Illuminate\Session\Middleware\StartSession::class, - // \Illuminate\Session\Middleware\AuthenticateSession::class, - \Illuminate\View\Middleware\ShareErrorsFromSession::class, - \App\Http\Middleware\VerifyCsrfToken::class, - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - - 'api' => [ - // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, - 'throttle:api', - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - ]; - - /** - * The application's route middleware. - * - * These middleware may be assigned to groups or used individually. - * - * @var array - */ - protected $routeMiddleware = [ - 'auth' => \App\Http\Middleware\Authenticate::class, - 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::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, - 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, - 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, - 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, - ]; -} diff --git a/Chapter19/onlineStore/app/Http/Middleware/Authenticate.php b/Chapter19/onlineStore/app/Http/Middleware/Authenticate.php deleted file mode 100644 index 704089a..0000000 --- a/Chapter19/onlineStore/app/Http/Middleware/Authenticate.php +++ /dev/null @@ -1,21 +0,0 @@ -expectsJson()) { - return route('login'); - } - } -} diff --git a/Chapter19/onlineStore/app/Http/Middleware/EncryptCookies.php b/Chapter19/onlineStore/app/Http/Middleware/EncryptCookies.php deleted file mode 100644 index 867695b..0000000 --- a/Chapter19/onlineStore/app/Http/Middleware/EncryptCookies.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter19/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/Chapter19/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php deleted file mode 100644 index 74cbd9a..0000000 --- a/Chapter19/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter19/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php b/Chapter19/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php deleted file mode 100644 index a2813a0..0000000 --- a/Chapter19/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php +++ /dev/null @@ -1,32 +0,0 @@ -check()) { - return redirect(RouteServiceProvider::HOME); - } - } - - return $next($request); - } -} diff --git a/Chapter19/onlineStore/app/Http/Middleware/TrimStrings.php b/Chapter19/onlineStore/app/Http/Middleware/TrimStrings.php deleted file mode 100644 index 88cadca..0000000 --- a/Chapter19/onlineStore/app/Http/Middleware/TrimStrings.php +++ /dev/null @@ -1,19 +0,0 @@ - - */ - protected $except = [ - 'current_password', - 'password', - 'password_confirmation', - ]; -} diff --git a/Chapter19/onlineStore/app/Http/Middleware/TrustHosts.php b/Chapter19/onlineStore/app/Http/Middleware/TrustHosts.php deleted file mode 100644 index 7186414..0000000 --- a/Chapter19/onlineStore/app/Http/Middleware/TrustHosts.php +++ /dev/null @@ -1,20 +0,0 @@ - - */ - public function hosts() - { - return [ - $this->allSubdomainsOfApplicationUrl(), - ]; - } -} diff --git a/Chapter19/onlineStore/app/Http/Middleware/TrustProxies.php b/Chapter19/onlineStore/app/Http/Middleware/TrustProxies.php deleted file mode 100644 index 3391630..0000000 --- a/Chapter19/onlineStore/app/Http/Middleware/TrustProxies.php +++ /dev/null @@ -1,28 +0,0 @@ -|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/Chapter19/onlineStore/app/Http/Middleware/VerifyCsrfToken.php b/Chapter19/onlineStore/app/Http/Middleware/VerifyCsrfToken.php deleted file mode 100644 index 9e86521..0000000 --- a/Chapter19/onlineStore/app/Http/Middleware/VerifyCsrfToken.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter19/onlineStore/app/Models/Product.php b/Chapter19/onlineStore/app/Models/Product.php deleted file mode 100644 index 84efbb6..0000000 --- a/Chapter19/onlineStore/app/Models/Product.php +++ /dev/null @@ -1,89 +0,0 @@ -attributes['id'] - int - contains the product primary key (id) - * $this->attributes['name'] - string - contains the product name - * $this->attributes['description'] - string - contains the product description - * $this->attributes['image'] - string - contains the product image - * $this->attributes['price'] - int - contains the product price - * $this->attributes['created_at'] - timestamp - contains the product creation date - * $this->attributes['updated_at'] - timestamp - contains the product update date - */ - - public function getId() - { - return $this->attributes['id']; - } - - public function setId($id) - { - $this->attributes['id'] = $id; - } - - public function getName() - { - return $this->attributes['name']; - } - - public function setName($name) - { - $this->attributes['name'] = $name; - } - - public function getDescription() - { - return $this->attributes['description']; - } - - public function setDescription($description) - { - $this->attributes['description'] = $description; - } - - public function getImage() - { - return $this->attributes['image']; - } - - public function setImage($image) - { - $this->attributes['image'] = $image; - } - - public function getPrice() - { - return $this->attributes['price']; - } - - public function setPrice($price) - { - $this->attributes['price'] = $price; - } - - public function getCreatedAt() - { - return $this->attributes['created_at']; - } - - public function setCreatedAt($createdAt) - { - $this->attributes['created_at'] = $createdAt; - } - - public function getUpdatedAt() - { - return $this->attributes['updated_at']; - } - - public function setUpdatedAt($updatedAt) - { - $this->attributes['updated_at'] = $updatedAt; - } -} diff --git a/Chapter19/onlineStore/app/Models/User.php b/Chapter19/onlineStore/app/Models/User.php deleted file mode 100644 index 8996368..0000000 --- a/Chapter19/onlineStore/app/Models/User.php +++ /dev/null @@ -1,44 +0,0 @@ - - */ - 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', - ]; -} diff --git a/Chapter19/onlineStore/app/Providers/AppServiceProvider.php b/Chapter19/onlineStore/app/Providers/AppServiceProvider.php deleted file mode 100644 index ee8ca5b..0000000 --- a/Chapter19/onlineStore/app/Providers/AppServiceProvider.php +++ /dev/null @@ -1,28 +0,0 @@ - - */ - protected $policies = [ - // 'App\Models\Model' => 'App\Policies\ModelPolicy', - ]; - - /** - * Register any authentication / authorization services. - * - * @return void - */ - public function boot() - { - $this->registerPolicies(); - - // - } -} diff --git a/Chapter19/onlineStore/app/Providers/BroadcastServiceProvider.php b/Chapter19/onlineStore/app/Providers/BroadcastServiceProvider.php deleted file mode 100644 index 395c518..0000000 --- a/Chapter19/onlineStore/app/Providers/BroadcastServiceProvider.php +++ /dev/null @@ -1,21 +0,0 @@ -> - */ - protected $listen = [ - Registered::class => [ - SendEmailVerificationNotification::class, - ], - ]; - - /** - * Register any events for your application. - * - * @return void - */ - public function boot() - { - // - } -} diff --git a/Chapter19/onlineStore/app/Providers/RouteServiceProvider.php b/Chapter19/onlineStore/app/Providers/RouteServiceProvider.php deleted file mode 100644 index 7c17d1f..0000000 --- a/Chapter19/onlineStore/app/Providers/RouteServiceProvider.php +++ /dev/null @@ -1,63 +0,0 @@ -configureRateLimiting(); - - $this->routes(function () { - Route::prefix('api') - ->middleware('api') - ->namespace($this->namespace) - ->group(base_path('routes/api.php')); - - Route::middleware('web') - ->namespace($this->namespace) - ->group(base_path('routes/web.php')); - }); - } - - /** - * Configure the rate limiters for the application. - * - * @return void - */ - protected function configureRateLimiting() - { - RateLimiter::for('api', function (Request $request) { - return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); - }); - } -} diff --git a/Chapter19/onlineStore/artisan b/Chapter19/onlineStore/artisan deleted file mode 100644 index 67a3329..0000000 --- a/Chapter19/onlineStore/artisan +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env php -make(Illuminate\Contracts\Console\Kernel::class); - -$status = $kernel->handle( - $input = new Symfony\Component\Console\Input\ArgvInput, - new Symfony\Component\Console\Output\ConsoleOutput -); - -/* -|-------------------------------------------------------------------------- -| Shutdown The Application -|-------------------------------------------------------------------------- -| -| Once Artisan has finished running, we will fire off the shutdown events -| so that any final work may be done by the application before we shut -| down the process. This is the last thing to happen to the request. -| -*/ - -$kernel->terminate($input, $status); - -exit($status); diff --git a/Chapter19/onlineStore/bootstrap/app.php b/Chapter19/onlineStore/bootstrap/app.php deleted file mode 100644 index 037e17d..0000000 --- a/Chapter19/onlineStore/bootstrap/app.php +++ /dev/null @@ -1,55 +0,0 @@ -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/Chapter19/onlineStore/bootstrap/cache/.gitignore b/Chapter19/onlineStore/bootstrap/cache/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter19/onlineStore/bootstrap/cache/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter19/onlineStore/composer.json b/Chapter19/onlineStore/composer.json deleted file mode 100644 index f0f2eda..0000000 --- a/Chapter19/onlineStore/composer.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "name": "laravel/laravel", - "type": "project", - "description": "The Laravel Framework.", - "keywords": ["framework", "laravel"], - "license": "MIT", - "require": { - "php": "^8.0", - "fruitcake/laravel-cors": "^2.0.5", - "guzzlehttp/guzzle": "^7.2", - "laravel/framework": "^9.0", - "laravel/sanctum": "^2.14", - "laravel/tinker": "^2.7" - }, - "require-dev": { - "fakerphp/faker": "^1.9.1", - "laravel/sail": "^1.0.1", - "mockery/mockery": "^1.4.4", - "nunomaduro/collision": "^6.1", - "phpunit/phpunit": "^9.5.10", - "spatie/laravel-ignition": "^1.0", - "squizlabs/php_codesniffer": "^3.6" - }, - "autoload": { - "psr-4": { - "App\\": "app/", - "Database\\Factories\\": "database/factories/", - "Database\\Seeders\\": "database/seeders/" - } - }, - "autoload-dev": { - "psr-4": { - "Tests\\": "tests/" - } - }, - "scripts": { - "post-autoload-dump": [ - "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", - "@php artisan package:discover --ansi" - ], - "post-update-cmd": [ - "@php artisan vendor:publish --tag=laravel-assets --ansi --force" - ], - "post-root-package-install": [ - "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" - ], - "post-create-project-cmd": [ - "@php artisan key:generate --ansi" - ] - }, - "extra": { - "laravel": { - "dont-discover": [] - } - }, - "config": { - "optimize-autoloader": true, - "preferred-install": "dist", - "sort-packages": true - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/Chapter19/onlineStore/composer.lock b/Chapter19/onlineStore/composer.lock deleted file mode 100644 index b55e897..0000000 --- a/Chapter19/onlineStore/composer.lock +++ /dev/null @@ -1,7860 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "8bdcc31974d0d5a00db79c82827c8815", - "packages": [ - { - "name": "asm89/stack-cors", - "version": "v2.1.1", - "source": { - "type": "git", - "url": "https://github.com/asm89/stack-cors.git", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4|^5|^6" - }, - "require-dev": { - "phpunit/phpunit": "^7|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "psr-4": { - "Asm89\\Stack\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alexander", - "email": "iam.asm89@gmail.com" - } - ], - "description": "Cross-origin resource sharing library and stack middleware", - "homepage": "https://github.com/asm89/stack-cors", - "keywords": [ - "cors", - "stack" - ], - "support": { - "issues": "https://github.com/asm89/stack-cors/issues", - "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" - }, - "time": "2022-01-18T09:12:03+00:00" - }, - { - "name": "brick/math", - "version": "0.9.3", - "source": { - "type": "git", - "url": "https://github.com/brick/math.git", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", - "vimeo/psalm": "4.9.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Brick\\Math\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Arbitrary-precision arithmetic library", - "keywords": [ - "Arbitrary-precision", - "BigInteger", - "BigRational", - "arithmetic", - "bigdecimal", - "bignum", - "brick", - "math" - ], - "support": { - "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.9.3" - }, - "funding": [ - { - "url": "https://github.com/BenMorel", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/brick/math", - "type": "tidelift" - } - ], - "time": "2021-08-15T20:50:18+00:00" - }, - { - "name": "dflydev/dot-access-data", - "version": "v3.0.1", - "source": { - "type": "git", - "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c", - "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": "^3.14" - }, - "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.1" - }, - "time": "2021-08-13T13:06:58+00:00" - }, - { - "name": "doctrine/inflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "vimeo/psalm": "^4.10" - }, - "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.4" - }, - "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": "2021-10-22T20:16:43+00:00" - }, - { - "name": "doctrine/lexer", - "version": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" - } - }, - "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/1.2.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%2Flexer", - "type": "tidelift" - } - ], - "time": "2022-01-12T08:27:12+00:00" - }, - { - "name": "dragonmantank/cron-expression", - "version": "v3.3.1", - "source": { - "type": "git", - "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "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.1" - }, - "funding": [ - { - "url": "https://github.com/dragonmantank", - "type": "github" - } - ], - "time": "2022-01-18T15:43:28+00:00" - }, - { - "name": "egulias/email-validator", - "version": "3.1.2", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ee0db30118f661fb166bcffbf5d82032df484697", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^1.2", - "php": ">=7.2", - "symfony/polyfill-intl-idn": "^1.15" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^8.5.8|^9.3.3", - "vimeo/psalm": "^4" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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/3.1.2" - }, - "funding": [ - { - "url": "https://github.com/egulias", - "type": "github" - } - ], - "time": "2021-10-11T09:18:27+00:00" - }, - { - "name": "fruitcake/laravel-cors", - "version": "v2.0.5", - "source": { - "type": "git", - "url": "https://github.com/fruitcake/laravel-cors.git", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "shasum": "" - }, - "require": { - "asm89/stack-cors": "^2.0.1", - "illuminate/contracts": "^6|^7|^8|^9", - "illuminate/support": "^6|^7|^8|^9", - "php": ">=7.2", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4.3.4|^5|^6" - }, - "require-dev": { - "laravel/framework": "^6|^7.24|^8", - "orchestra/testbench-dusk": "^4|^5|^6|^7", - "phpunit/phpunit": "^6|^7|^8|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - }, - "laravel": { - "providers": [ - "Fruitcake\\Cors\\CorsServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Fruitcake\\Cors\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fruitcake", - "homepage": "https://fruitcake.nl" - }, - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", - "keywords": [ - "api", - "cors", - "crossdomain", - "laravel" - ], - "support": { - "issues": "https://github.com/fruitcake/laravel-cors/issues", - "source": "https://github.com/fruitcake/laravel-cors/tree/v2.0.5" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "time": "2022-01-03T14:53:04+00:00" - }, - { - "name": "graham-campbell/result-type", - "version": "v1.0.4", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "0690bde05318336c7221785f2a932467f98b64ca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/0690bde05318336c7221785f2a932467f98b64ca", - "reference": "0690bde05318336c7221785f2a932467f98b64ca", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "phpoption/phpoption": "^1.8" - }, - "require-dev": { - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", - "type": "tidelift" - } - ], - "time": "2021-11-21T21:41:47+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "7.4.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.8.3 || ^2.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.4.1", - "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.5 || ^9.3.5", - "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": { - "branch-alias": { - "dev-master": "7.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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.4.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": "2021-12-06T18:43:05+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "1.5.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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/1.5.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "time": "2021-10-22T20:56:57+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.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.4.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.8 || ^9.3.10" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "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.1.0" - }, - "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": "2021-10-06T17:43:30+00:00" - }, - { - "name": "laravel/framework", - "version": "v9.0.1", - "source": { - "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "shasum": "" - }, - "require": { - "doctrine/inflector": "^2.0", - "dragonmantank/cron-expression": "^3.1", - "egulias/email-validator": "^3.1", - "ext-mbstring": "*", - "ext-openssl": "*", - "laravel/serializable-closure": "^1.0", - "league/commonmark": "^2.2", - "league/flysystem": "^3.0", - "monolog/monolog": "^2.0", - "nesbot/carbon": "^2.53.1", - "php": "^8.0.2", - "psr/container": "^1.1.1|^2.0.1", - "psr/log": "^1.0|^2.0|^3.0", - "psr/simple-cache": "^1.0|^2.0|^3.0", - "ramsey/uuid": "^4.2.2", - "symfony/console": "^6.0", - "symfony/error-handler": "^6.0", - "symfony/finder": "^6.0", - "symfony/http-foundation": "^6.0", - "symfony/http-kernel": "^6.0", - "symfony/mailer": "^6.0", - "symfony/mime": "^6.0", - "symfony/process": "^6.0", - "symfony/routing": "^6.0", - "symfony/var-dumper": "^6.0", - "tijsverkoyen/css-to-inline-styles": "^2.2.2", - "vlucas/phpdotenv": "^5.4.1", - "voku/portable-ascii": "^2.0" - }, - "conflict": { - "tightenco/collect": "<5.5.33" - }, - "provide": { - "psr/container-implementation": "1.1|2.0", - "psr/simple-cache-implementation": "1.0|2.0|3.0" - }, - "replace": { - "illuminate/auth": "self.version", - "illuminate/broadcasting": "self.version", - "illuminate/bus": "self.version", - "illuminate/cache": "self.version", - "illuminate/collections": "self.version", - "illuminate/conditionable": "self.version", - "illuminate/config": "self.version", - "illuminate/console": "self.version", - "illuminate/container": "self.version", - "illuminate/contracts": "self.version", - "illuminate/cookie": "self.version", - "illuminate/database": "self.version", - "illuminate/encryption": "self.version", - "illuminate/events": "self.version", - "illuminate/filesystem": "self.version", - "illuminate/hashing": "self.version", - "illuminate/http": "self.version", - "illuminate/log": "self.version", - "illuminate/macroable": "self.version", - "illuminate/mail": "self.version", - "illuminate/notifications": "self.version", - "illuminate/pagination": "self.version", - "illuminate/pipeline": "self.version", - "illuminate/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": { - "aws/aws-sdk-php": "^3.198.1", - "doctrine/dbal": "^2.13.3|^3.1.4", - "fakerphp/faker": "^1.9.2", - "guzzlehttp/guzzle": "^7.2", - "league/flysystem-aws-s3-v3": "^3.0", - "league/flysystem-ftp": "^3.0", - "league/flysystem-sftp-v3": "^3.0", - "mockery/mockery": "^1.4.4", - "orchestra/testbench-core": "^7.0", - "pda/pheanstalk": "^4.0", - "phpstan/phpstan": "^1.0", - "phpunit/phpunit": "^9.5.8", - "predis/predis": "^1.1.9", - "symfony/amazon-mailer": "^6.0", - "symfony/cache": "^6.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.198.1).", - "brianium/paratest": "Required to run tests in parallel (^6.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", - "ext-bcmath": "Required to use the multiple_of validation rule.", - "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.", - "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.2).", - "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-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", - "mockery/mockery": "Required to use mocking (^1.4.4).", - "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).", - "predis/predis": "Required to use the predis connector (^1.1.9).", - "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.0).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^6.0).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.0).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.0).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.0).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.x-dev" - } - }, - "autoload": { - "files": [ - "src/Illuminate/Collections/helpers.php", - "src/Illuminate/Events/functions.php", - "src/Illuminate/Foundation/helpers.php", - "src/Illuminate/Support/helpers.php" - ], - "psr-4": { - "Illuminate\\": "src/Illuminate/", - "Illuminate\\Support\\": [ - "src/Illuminate/Macroable/", - "src/Illuminate/Collections/", - "src/Illuminate/Conditionable/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Laravel Framework.", - "homepage": "https://laravel.com", - "keywords": [ - "framework", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2022-02-09T15:00:05+00:00" - }, - { - "name": "laravel/sanctum", - "version": "v2.14.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/sanctum.git", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/0647a87140c7522e75826cffcadb3ad6e01f71e9", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/contracts": "^6.9|^7.0|^8.0|^9.0", - "illuminate/database": "^6.9|^7.0|^8.0|^9.0", - "illuminate/support": "^6.9|^7.0|^8.0|^9.0", - "php": "^7.2|^8.0" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0", - "phpunit/phpunit": "^8.0|^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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": "2022-01-12T15:07:43+00:00" - }, - { - "name": "laravel/serializable-closure", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/serializable-closure.git", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/65c9faf50d567b65d81764a44526545689e3fe63", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "pestphp/pest": "^1.18", - "phpstan/phpstan": "^0.12.98", - "symfony/var-dumper": "^5.3" - }, - "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": "2022-02-01T16:29:39+00:00" - }, - { - "name": "laravel/tinker", - "version": "v2.7.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/tinker.git", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/5f2f9815b7631b9f586a3de7933c25f9327d4073", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073", - "shasum": "" - }, - "require": { - "illuminate/console": "^6.0|^7.0|^8.0|^9.0", - "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.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", - "phpunit/phpunit": "^8.5.8|^9.3.3" - }, - "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.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.7.0" - }, - "time": "2022-01-10T08:52:49+00:00" - }, - { - "name": "league/commonmark", - "version": "2.2.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/commonmark.git", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "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.15" - }, - "require-dev": { - "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.0", - "commonmark/commonmark.js": "0.30.0", - "composer/package-versions-deprecated": "^1.8", - "erusev/parsedown": "^1.0", - "ext-json": "*", - "github/gfm": "0.29.0", - "michelf/php-markdown": "^1.4", - "phpstan/phpstan": "^0.12.88 || ^1.0.0", - "phpunit/phpunit": "^9.5.5", - "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", - "unleashedtech/php-coding-standard": "^3.1", - "vimeo/psalm": "^4.7.3" - }, - "suggest": { - "symfony/yaml": "v2.3+ required if using the Front Matter extension" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.3-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": "2022-01-25T14:37:33+00:00" - }, - { - "name": "league/config", - "version": "v1.1.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/config.git", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/config/zipball/a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^3.0.1", - "nette/schema": "^1.2", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.90", - "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": "2021-08-14T12:15:32+00:00" - }, - { - "name": "league/flysystem", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9f8b4260031bfef5497477da53dd57b2aaff0e06", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06", - "shasum": "" - }, - "require": { - "ext-json": "*", - "league/mime-type-detection": "^1.0.0", - "php": "^8.0.2" - }, - "conflict": { - "guzzlehttp/guzzle": "<7.0", - "guzzlehttp/ringphp": "<1.1.1", - "symfony/http-client": "<5.2" - }, - "require-dev": { - "async-aws/s3": "^1.5", - "async-aws/simple-s3": "^1.0", - "aws/aws-sdk-php": "^3.198.1", - "composer/semver": "^3.0", - "ext-fileinfo": "*", - "ext-ftp": "*", - "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.5", - "google/cloud-storage": "^1.23", - "phpseclib/phpseclib": "^2.0", - "phpstan/phpstan": "^0.12.26", - "phpunit/phpunit": "^9.5.11", - "sabre/dav": "^4.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.0.3" - }, - "funding": [ - { - "url": "https://offset.earth/frankdejonge", - "type": "custom" - }, - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2022-01-31T19:41:04+00:00" - }, - { - "name": "league/mime-type-detection", - "version": "1.9.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/aa70e813a6ad3d1558fc927863d47309b4c23e69", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.2", - "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" - }, - "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.9.0" - }, - "funding": [ - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2021-11-21T11:48:40+00:00" - }, - { - "name": "monolog/monolog", - "version": "2.3.5", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd4380d6fc37626e2f799f29d91195040137eba9", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "provide": { - "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7", - "graylog2/gelf-php": "^1.4.2", - "mongodb/mongodb": "^1.8", - "php-amqplib/php-amqplib": "~2.4 || ^3", - "php-console/php-console": "^3.1.3", - "phpspec/prophecy": "^1.6.1", - "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5", - "predis/predis": "^1.1", - "rollbar/rollbar": "^1.3", - "ruflin/elastica": ">=0.90@dev", - "swiftmailer/swiftmailer": "^5.3|^6.0" - }, - "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", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "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": "2.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/2.3.5" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" - } - ], - "time": "2021-10-01T21:08:31+00:00" - }, - { - "name": "nesbot/carbon", - "version": "2.56.0", - "source": { - "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1.8 || ^8.0", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "doctrine/dbal": "^2.0 || ^3.0", - "doctrine/orm": "^2.7", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "phpmd/phpmd": "^2.9", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.54 || ^1.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.14", - "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://opencollective.com/Carbon", - "type": "open_collective" - }, - { - "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", - "type": "tidelift" - } - ], - "time": "2022-01-21T17:08:38+00:00" - }, - { - "name": "nette/schema", - "version": "v1.2.2", - "source": { - "type": "git", - "url": "https://github.com/nette/schema.git", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/9a39cef03a5b34c7de64f551538cbba05c2be5df", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df", - "shasum": "" - }, - "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": ">=7.1 <8.2" - }, - "require-dev": { - "nette/tester": "^2.3 || ^2.4", - "phpstan/phpstan-nette": "^0.12", - "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.2" - }, - "time": "2021-10-15T11:40:02+00:00" - }, - { - "name": "nette/utils", - "version": "v3.2.7", - "source": { - "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/0af4e3de4df9f1543534beab255ccf459e7a2c99", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99", - "shasum": "" - }, - "require": { - "php": ">=7.2 <8.2" - }, - "conflict": { - "nette/di": "<3.0.6" - }, - "require-dev": { - "nette/tester": "~2.0", - "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.3" - }, - "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()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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 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/v3.2.7" - }, - "time": "2022-01-24T11:29:14+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.13.2", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", - "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.13.2" - }, - "time": "2021-11-30T19:35:32+00:00" - }, - { - "name": "phpoption/phpoption", - "version": "1.8.1", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-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.8.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", - "type": "tidelift" - } - ], - "time": "2021-12-04T23:24:31+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.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.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": "http://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/tree/master" - }, - "time": "2020-06-29T06:28:15+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.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": "http://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/master" - }, - "time": "2019-04-30T12:38:16+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.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": "http://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/master" - }, - "time": "2016-08-06T14:39: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.1", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "570292577277f06f590635381a7f761a6cf4f026" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/570292577277f06f590635381a7f761a6cf4f026", - "reference": "570292577277f06f590635381a7f761a6cf4f026", - "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" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "3.17.05.02" - }, - "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.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." - }, - "bin": [ - "bin/psysh" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "0.11.x-dev" - } - }, - "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.1" - }, - "time": "2022-01-03T13:58:38+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": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/ramsey/collection.git", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "shasum": "" - }, - "require": { - "php": "^7.3 || ^8", - "symfony/polyfill-php81": "^1.23" - }, - "require-dev": { - "captainhook/captainhook": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "ergebnis/composer-normalize": "^2.6", - "fakerphp/faker": "^1.5", - "hamcrest/hamcrest-php": "^2", - "jangregor/phpstan-prophecy": "^0.8", - "mockery/mockery": "^1.3", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1", - "phpstan/phpstan": "^0.12.32", - "phpstan/phpstan-mockery": "^0.12.5", - "phpstan/phpstan-phpunit": "^0.12.11", - "phpunit/phpunit": "^8.5 || ^9", - "psy/psysh": "^0.10.4", - "slevomat/coding-standard": "^6.3", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.4" - }, - "type": "library", - "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/1.2.2" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "time": "2021-10-10T03:01:02+00:00" - }, - { - "name": "ramsey/uuid", - "version": "4.2.3", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "shasum": "" - }, - "require": { - "brick/math": "^0.8 || ^0.9", - "ext-json": "*", - "php": "^7.2 || ^8.0", - "ramsey/collection": "^1.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php80": "^1.14" - }, - "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", - "moontoast/math": "^1.1", - "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.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-mockery": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^8.5 || ^9", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" - }, - "suggest": { - "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-ctype": "Enables faster processing of character classification using ctype functions.", - "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": { - "branch-alias": { - "dev-main": "4.x-dev" - }, - "captainhook": { - "force-install": true - } - }, - "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "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.2.3" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2021-09-25T23:10:38+00:00" - }, - { - "name": "symfony/console", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/22e8efd019c3270c4f79376234a3f8752cd25490", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.4|^6.0" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/css-selector", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/1955d595c12c111629cc814d3f2a2ff13580508a", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a", - "shasum": "" - }, - "require": { - "php": ">=8.0.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/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-11-01T23:48:49+00:00" - }, - { - "name": "symfony/error-handler", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/20343b3bad7ebafa38138ddcb97290a24722b57b", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" - }, - "bin": [ - "Resources/bin/patch-type-declarations" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to manage errors and ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6472ea2dd415e925b90ca82be64b8bc6157f3934", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/event-dispatcher-contracts": "^2|^3" - }, - "conflict": { - "symfony/dependency-injection": "<5.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^5.4|^6.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/aa5422287b75594b90ee9cd807caf8f0df491385", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/event-dispatcher": "^1" - }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-07-15T12:33:35+00:00" - }, - { - "name": "symfony/finder", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/8661b74dbabc23223f38c9b99d3f8ade71170430", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ad157299ced81a637fade1efcadd688d6deba5c1", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1" - }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/cache": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0" - }, - "suggest": { - "symfony/mime": "To use the file extension guesser" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v6.0.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/error-handler": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", - "symfony/twig-bridge": "<5.4", - "symfony/validator": "<5.4", - "twig/twig": "<2.13" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/process": "^5.4|^6.0", - "symfony/routing": "^5.4|^6.0", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-29T18:12:46+00:00" - }, - { - "name": "symfony/mailer", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mailer.git", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "shasum": "" - }, - "require": { - "egulias/email-validator": "^2.1.10|^3", - "php": ">=8.0.2", - "psr/event-dispatcher": "^1", - "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3" - }, - "conflict": { - "symfony/http-kernel": "<5.4" - }, - "require-dev": { - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/messenger": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/mime", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/2cd9601efd040e56f43360daa68f3c6b0534923a", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "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" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "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.24.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": "2021-10-20T20:35:02+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-11-23T21:10:46+00:00" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44", - "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.23-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.24.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": "2021-09-14T14:02:44+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.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": "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.24.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": "2021-11-30T18:21:41+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-05-27T09:17:38+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:33+00:00" - }, - { - "name": "symfony/polyfill-php81", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:11+00:00" - }, - { - "name": "symfony/process", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/298ed357274c1868c20a0061df256a1250a6c4af", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/routing", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/yaml": "<5.4" - }, - "require-dev": { - "doctrine/annotations": "^1.12", - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/36715ebf9fb9db73db0cb24263c79077c6fe8603", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/container": "^2.0" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "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.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": "2021-11-04T17:53:12+00:00" - }, - { - "name": "symfony/string", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/522144f0c4c004c80d56fa47e40e17028e2eefc2", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.0" - }, - "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/translation-contracts": "^2.0|^3.0", - "symfony/var-exporter": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "files": [ - "Resources/functions.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 an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/translation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/71bb15335798f8c4da110911bcf2d2fead7a430d", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.3|^3.0" - }, - "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" - }, - "provide": { - "symfony/translation-implementation": "2.3|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-07T00:29:03+00:00" - }, - { - "name": "symfony/translation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "suggest": { - "symfony/translation-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - } - }, - "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.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": "2021-09-07T12:43:40+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7b701676fc64f9ef11f9b4870f16b48f66be4834", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<5.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-17T16:30:44+00:00" - }, - { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.4", - "source": { - "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" - } - ], - "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", - "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "support": { - "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" - }, - "time": "2021-12-08T09:12:39+00:00" - }, - { - "name": "vlucas/phpdotenv", - "version": "v5.4.1", - "source": { - "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", - "shasum": "" - }, - "require": { - "ext-pcre": "*", - "graham-campbell/result-type": "^1.0.2", - "php": "^7.1.3 || ^8.0", - "phpoption/phpoption": "^1.8", - "symfony/polyfill-ctype": "^1.23", - "symfony/polyfill-mbstring": "^1.23.1", - "symfony/polyfill-php80": "^1.23.1" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" - }, - "suggest": { - "ext-filter": "Required to use the boolean validator." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.4-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.4.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", - "type": "tidelift" - } - ], - "time": "2021-12-12T23:22:04+00:00" - }, - { - "name": "voku/portable-ascii", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/voku/portable-ascii.git", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/9bd89e83cecdf8c37b64909454249eaed98b2c89", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89", - "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.0" - }, - "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-01-24T18:59:03+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "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.10.0" - }, - "time": "2021-03-09T10:59:23+00:00" - } - ], - "packages-dev": [ - { - "name": "doctrine/instantiator", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.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%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2020-11-10T18:47:58+00:00" - }, - { - "name": "facade/ignition-contracts", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/facade/ignition-contracts.git", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^v2.15.8", - "phpunit/phpunit": "^9.3.11", - "vimeo/psalm": "^3.17.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Facade\\IgnitionContracts\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://flareapp.io", - "role": "Developer" - } - ], - "description": "Solution contracts for Ignition", - "homepage": "https://github.com/facade/ignition-contracts", - "keywords": [ - "contracts", - "flare", - "ignition" - ], - "support": { - "issues": "https://github.com/facade/ignition-contracts/issues", - "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" - }, - "time": "2020-10-16T08:27:54+00:00" - }, - { - "name": "fakerphp/faker", - "version": "v1.19.0", - "source": { - "type": "git", - "url": "https://github.com/FakerPHP/Faker.git", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^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": "*", - "symfony/phpunit-bridge": "^4.4 || ^5.2" - }, - "suggest": { - "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", - "ext-curl": "Required by Faker\\Provider\\Image to download images.", - "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", - "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.19-dev" - } - }, - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "François Zaninotto" - } - ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], - "support": { - "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0" - }, - "time": "2022-02-02T17:38:57+00:00" - }, - { - "name": "filp/whoops", - "version": "2.14.5", - "source": { - "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "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.14.5" - }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "time": "2022-01-07T12:00:00+00:00" - }, - { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "shasum": "" - }, - "require": { - "php": "^5.3|^7.0|^8.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" - }, - "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "classmap": [ - "hamcrest" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "This is the PHP port of Hamcrest Matchers", - "keywords": [ - "test" - ], - "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" - }, - "time": "2020-07-09T08:09:16+00:00" - }, - { - "name": "laravel/sail", - "version": "v1.13.2", - "source": { - "type": "git", - "url": "https://github.com/laravel/sail.git", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.0|^9.0", - "illuminate/contracts": "^8.0|^9.0", - "illuminate/support": "^8.0|^9.0", - "php": "^7.3|^8.0" - }, - "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": "2022-02-08T14:14:12+00:00" - }, - { - "name": "mockery/mockery", - "version": "1.5.0", - "source": { - "type": "git", - "url": "https://github.com/mockery/mockery.git", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "shasum": "" - }, - "require": { - "hamcrest/hamcrest-php": "^2.0.1", - "lib-pcre": ">=7.0", - "php": "^7.3 || ^8.0" - }, - "conflict": { - "phpunit/phpunit": "<8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-0": { - "Mockery": "library/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" - } - ], - "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": { - "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.5.0" - }, - "time": "2022-01-20T13:18:17+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.10.2", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "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.10.2" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2020-11-13T09:40:50+00:00" - }, - { - "name": "nunomaduro/collision", - "version": "v6.1.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/collision.git", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "shasum": "" - }, - "require": { - "facade/ignition-contracts": "^1.0.2", - "filp/whoops": "^2.14.5", - "php": "^8.0.0", - "symfony/console": "^6.0.2" - }, - "require-dev": { - "brianium/paratest": "^6.4.1", - "laravel/framework": "^9.0", - "nunomaduro/larastan": "^1.0.2", - "nunomaduro/mock-final-classes": "^1.1.0", - "orchestra/testbench": "^7.0.0", - "phpunit/phpunit": "^9.5.11" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "6.x-dev" - }, - "laravel": { - "providers": [ - "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" - ] - } - }, - "autoload": { - "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": "2022-01-18T17:49:08+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.1.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/15a90844ad40f127afd244c0cad228de2a80052a", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a", - "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.1.1" - }, - "time": "2022-02-07T21:56:48+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.6.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "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.6.0" - }, - "time": "2022-01-04T19:58:01+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" - }, - "time": "2021-12-08T12:19:24+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "9.2.10", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d5850aaf931743067f4bfc1ae4cbd06468400687", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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 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", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.10" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-05T09:12:13+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "3.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-02T12:48:52+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "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/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:58:55+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T05:33:50+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.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/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:16:10+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "9.5.13", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/597cb647654ede35e43b137926dfdfef0fb11743", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.3.1", - "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": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.7", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", - "sebastian/version": "^3.0.2" - }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.13" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-01-24T07:33:35+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:08:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "1.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:08:54+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:30:19+00:00" - }, - { - "name": "sebastian/comparator", - "version": "4.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:49:45+00:00" - }, - { - "name": "sebastian/complexity", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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 calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:52:27+00:00" - }, - { - "name": "sebastian/diff", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:10:38+00:00" - }, - { - "name": "sebastian/environment", - "version": "5.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-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": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:52:38+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "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", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-11-11T14:18:36+00:00" - }, - { - "name": "sebastian/global-state", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-11T13:31:12+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-28T06:42:11+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "http://www.github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:17:30+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:45:17+00:00" - }, - { - "name": "sebastian/type", - "version": "2.3.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-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/2.3.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-15T12:49:02+00:00" - }, - { - "name": "sebastian/version", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:39:44+00:00" - }, - { - "name": "spatie/backtrace", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/backtrace.git", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "ext-json": "*", - "phpunit/phpunit": "^9.3", - "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": { - "issues": "https://github.com/spatie/backtrace/issues", - "source": "https://github.com/spatie/backtrace/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/sponsors/spatie", - "type": "github" - }, - { - "url": "https://spatie.be/open-source/support-us", - "type": "other" - } - ], - "time": "2021-11-09T10:57:15+00:00" - }, - { - "name": "spatie/flare-client-php", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/flare-client-php.git", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "shasum": "" - }, - "require": { - "illuminate/pipeline": "^8.0|^9.0", - "php": "^8.0", - "spatie/backtrace": "^1.2", - "symfony/http-foundation": "^5.0|^6.0", - "symfony/mime": "^5.2|^6.0", - "symfony/process": "^5.2|^6.0", - "symfony/var-dumper": "^5.2|^6.0" - }, - "require-dev": { - "dms/phpunit-arraysubset-asserts": "^0.3.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/phpunit-snapshot-assertions": "^4.0" - }, - "type": "library", - "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.0.1" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2022-02-04T15:21:00+00:00" - }, - { - "name": "spatie/ignition", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/spatie/ignition.git", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/d2d5ba823af3004268556e87dfc94449e4159f5a", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "monolog/monolog": "^2.0", - "php": "^8.0", - "spatie/flare-client-php": "^1.0", - "symfony/console": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "mockery/mockery": "^1.4", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/ray": "^1.32", - "symfony/process": "^5.4|^6.0" - }, - "type": "library", - "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": "2022-01-19T12:57:41+00:00" - }, - { - "name": "spatie/laravel-ignition", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/68250225a9f83b086462c2af1b1139dfde48fbd2", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*", - "illuminate/support": "^8.77|^9.0", - "monolog/monolog": "^2.3", - "php": "^8.0", - "spatie/flare-client-php": "^1.0.1", - "spatie/ignition": "^1.0", - "symfony/console": "^5.0|^6.0", - "symfony/var-dumper": "^5.0|^6.0" - }, - "require-dev": { - "filp/whoops": "^2.14", - "livewire/livewire": "^2.8|dev-develop", - "mockery/mockery": "^1.4", - "nunomaduro/larastan": "^1.0", - "orchestra/testbench": "^6.23|^7.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/laravel-ray": "^1.27" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Spatie\\LaravelIgnition\\IgnitionServiceProvider" - ], - "aliases": { - "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" - } - } - }, - "autoload": { - "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": "2022-02-04T15:25:56+00:00" - }, - { - "name": "squizlabs/php_codesniffer", - "version": "3.6.2", - "source": { - "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", - "shasum": "" - }, - "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.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": "lead" - } - ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", - "keywords": [ - "phpcs", - "standards" - ], - "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" - }, - "time": "2021-12-12T21:44:58+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2021-07-28T10:34:58+00:00" - } - ], - "aliases": [], - "minimum-stability": "dev", - "stability-flags": [], - "prefer-stable": true, - "prefer-lowest": false, - "platform": { - "php": "^8.0" - }, - "platform-dev": [], - "plugin-api-version": "2.1.0" -} diff --git a/Chapter19/onlineStore/config/app.php b/Chapter19/onlineStore/config/app.php deleted file mode 100644 index 1941d7c..0000000 --- a/Chapter19/onlineStore/config/app.php +++ /dev/null @@ -1,197 +0,0 @@ - env('APP_NAME', 'Laravel'), - - /* - |-------------------------------------------------------------------------- - | Application Environment - |-------------------------------------------------------------------------- - | - | This value determines the "environment" your application is currently - | running in. This may determine how you prefer to configure various - | services the application utilizes. Set this in your ".env" file. - | - */ - - 'env' => env('APP_ENV', 'production'), - - /* - |-------------------------------------------------------------------------- - | Application Debug Mode - |-------------------------------------------------------------------------- - | - | When your application is in debug mode, detailed error messages with - | stack traces will be shown on every error that occurs within your - | application. If disabled, a simple generic error page is shown. - | - */ - - 'debug' => (bool) env('APP_DEBUG', false), - - /* - |-------------------------------------------------------------------------- - | Application URL - |-------------------------------------------------------------------------- - | - | This URL is used by the console to properly generate URLs when using - | the Artisan command line tool. You should set this to the root of - | your application so that it is used when running Artisan tasks. - | - */ - - 'url' => env('APP_URL', 'http://localhost'), - - 'asset_url' => env('ASSET_URL', null), - - /* - |-------------------------------------------------------------------------- - | 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', - - /* - |-------------------------------------------------------------------------- - | 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' => [ - - /* - * Laravel Framework Service Providers... - */ - Illuminate\Auth\AuthServiceProvider::class, - Illuminate\Broadcasting\BroadcastServiceProvider::class, - Illuminate\Bus\BusServiceProvider::class, - Illuminate\Cache\CacheServiceProvider::class, - Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, - Illuminate\Cookie\CookieServiceProvider::class, - Illuminate\Database\DatabaseServiceProvider::class, - Illuminate\Encryption\EncryptionServiceProvider::class, - Illuminate\Filesystem\FilesystemServiceProvider::class, - Illuminate\Foundation\Providers\FoundationServiceProvider::class, - Illuminate\Hashing\HashServiceProvider::class, - Illuminate\Mail\MailServiceProvider::class, - Illuminate\Notifications\NotificationServiceProvider::class, - Illuminate\Pagination\PaginationServiceProvider::class, - Illuminate\Pipeline\PipelineServiceProvider::class, - Illuminate\Queue\QueueServiceProvider::class, - Illuminate\Redis\RedisServiceProvider::class, - Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, - Illuminate\Session\SessionServiceProvider::class, - Illuminate\Translation\TranslationServiceProvider::class, - Illuminate\Validation\ValidationServiceProvider::class, - Illuminate\View\ViewServiceProvider::class, - - /* - * 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, - - ], - - /* - |-------------------------------------------------------------------------- - | 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([ - // ... - ])->toArray(), - -]; diff --git a/Chapter19/onlineStore/config/auth.php b/Chapter19/onlineStore/config/auth.php deleted file mode 100644 index d8c6cee..0000000 --- a/Chapter19/onlineStore/config/auth.php +++ /dev/null @@ -1,111 +0,0 @@ - [ - '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 expire 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. - | - */ - - 'passwords' => [ - 'users' => [ - 'provider' => 'users', - 'table' => 'password_resets', - '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/Chapter19/onlineStore/config/broadcasting.php b/Chapter19/onlineStore/config/broadcasting.php deleted file mode 100644 index 67fcbbd..0000000 --- a/Chapter19/onlineStore/config/broadcasting.php +++ /dev/null @@ -1,67 +0,0 @@ - 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'), - 'useTLS' => true, - ], - '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/Chapter19/onlineStore/config/cache.php b/Chapter19/onlineStore/config/cache.php deleted file mode 100644 index 8736c7a..0000000 --- a/Chapter19/onlineStore/config/cache.php +++ /dev/null @@ -1,110 +0,0 @@ - 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'), - ], - - '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 a RAM based store such as APC or Memcached, there might - | be other applications utilizing the same cache. So, we'll specify a - | value to get prefixed to all our keys so we can avoid collisions. - | - */ - - 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'), - -]; diff --git a/Chapter19/onlineStore/config/cors.php b/Chapter19/onlineStore/config/cors.php deleted file mode 100644 index 8a39e6d..0000000 --- a/Chapter19/onlineStore/config/cors.php +++ /dev/null @@ -1,34 +0,0 @@ - ['api/*', 'sanctum/csrf-cookie'], - - 'allowed_methods' => ['*'], - - 'allowed_origins' => ['*'], - - 'allowed_origins_patterns' => [], - - 'allowed_headers' => ['*'], - - 'exposed_headers' => [], - - 'max_age' => 0, - - 'supports_credentials' => false, - -]; diff --git a/Chapter19/onlineStore/config/database.php b/Chapter19/onlineStore/config/database.php deleted file mode 100644 index 0faebae..0000000 --- a/Chapter19/onlineStore/config/database.php +++ /dev/null @@ -1,147 +0,0 @@ - env('DB_CONNECTION', 'mysql'), - - /* - |-------------------------------------------------------------------------- - | Database Connections - |-------------------------------------------------------------------------- - | - | Here are each of the database connections setup for your application. - | Of course, examples of configuring each database platform that is - | supported by Laravel is shown below to make development simple. - | - | - | All database work in Laravel is done through the PHP PDO facilities - | so make sure you have the driver for your particular database of - | choice installed on your machine before you begin development. - | - */ - - 'connections' => [ - - 'sqlite' => [ - 'driver' => 'sqlite', - 'url' => env('DATABASE_URL'), - 'database' => env('DB_DATABASE', database_path('database.sqlite')), - 'prefix' => '', - 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), - ], - - 'mysql' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '3306'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'unix_socket' => env('DB_SOCKET', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - 'pgsql' => [ - 'driver' => 'pgsql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '5432'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - 'search_path' => 'public', - 'sslmode' => 'prefer', - ], - - 'sqlsrv' => [ - 'driver' => 'sqlsrv', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', 'localhost'), - 'port' => env('DB_PORT', '1433'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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'), - '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'), - 'password' => env('REDIS_PASSWORD'), - 'port' => env('REDIS_PORT', '6379'), - 'database' => env('REDIS_CACHE_DB', '1'), - ], - - ], - -]; diff --git a/Chapter19/onlineStore/config/filesystems.php b/Chapter19/onlineStore/config/filesystems.php deleted file mode 100644 index cf5abce..0000000 --- a/Chapter19/onlineStore/config/filesystems.php +++ /dev/null @@ -1,73 +0,0 @@ - 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 setup for each driver as an example of the required options. - | - | Supported Drivers: "local", "ftp", "sftp", "s3" - | - */ - - 'disks' => [ - - 'local' => [ - 'driver' => 'local', - 'root' => storage_path('app'), - ], - - 'public' => [ - 'driver' => 'local', - 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', - 'visibility' => 'public', - ], - - '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), - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter19/onlineStore/config/hashing.php b/Chapter19/onlineStore/config/hashing.php deleted file mode 100644 index bcd3be4..0000000 --- a/Chapter19/onlineStore/config/hashing.php +++ /dev/null @@ -1,52 +0,0 @@ - '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/Chapter19/onlineStore/config/logging.php b/Chapter19/onlineStore/config/logging.php deleted file mode 100644 index fefe088..0000000 --- a/Chapter19/onlineStore/config/logging.php +++ /dev/null @@ -1,119 +0,0 @@ - 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' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), - - /* - |-------------------------------------------------------------------------- - | 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'), - ], - - 'daily' => [ - 'driver' => 'daily', - 'path' => storage_path('logs/laravel.log'), - 'level' => env('LOG_LEVEL', 'debug'), - 'days' => 14, - ], - - 'slack' => [ - 'driver' => 'slack', - 'url' => env('LOG_SLACK_WEBHOOK_URL'), - 'username' => 'Laravel Log', - 'emoji' => ':boom:', - 'level' => env('LOG_LEVEL', 'critical'), - ], - - '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'), - ], - ], - - 'stderr' => [ - 'driver' => 'monolog', - 'level' => env('LOG_LEVEL', 'debug'), - 'handler' => StreamHandler::class, - 'formatter' => env('LOG_STDERR_FORMATTER'), - 'with' => [ - 'stream' => 'php://stderr', - ], - ], - - 'syslog' => [ - 'driver' => 'syslog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'errorlog' => [ - 'driver' => 'errorlog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'null' => [ - 'driver' => 'monolog', - 'handler' => NullHandler::class, - ], - - 'emergency' => [ - 'path' => storage_path('logs/laravel.log'), - ], - ], - -]; diff --git a/Chapter19/onlineStore/config/mail.php b/Chapter19/onlineStore/config/mail.php deleted file mode 100644 index 87b6fe3..0000000 --- a/Chapter19/onlineStore/config/mail.php +++ /dev/null @@ -1,117 +0,0 @@ - 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", - | "postmark", "log", "array", "failover" - | - */ - - 'mailers' => [ - 'smtp' => [ - 'transport' => 'smtp', - '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, - ], - - 'ses' => [ - 'transport' => 'ses', - ], - - 'mailgun' => [ - 'transport' => 'mailgun', - ], - - 'postmark' => [ - 'transport' => 'postmark', - ], - - 'sendmail' => [ - 'transport' => 'sendmail', - 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -t -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/Chapter19/onlineStore/config/queue.php b/Chapter19/onlineStore/config/queue.php deleted file mode 100644 index 25ea5a8..0000000 --- a/Chapter19/onlineStore/config/queue.php +++ /dev/null @@ -1,93 +0,0 @@ - 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, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter19/onlineStore/config/sanctum.php b/Chapter19/onlineStore/config/sanctum.php deleted file mode 100644 index 9281c92..0000000 --- a/Chapter19/onlineStore/config/sanctum.php +++ /dev/null @@ -1,65 +0,0 @@ - explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( - '%s%s', - 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', - env('APP_URL') ? ','.parse_url(env('APP_URL'), PHP_URL_HOST) : '' - ))), - - /* - |-------------------------------------------------------------------------- - | 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/Chapter19/onlineStore/config/services.php b/Chapter19/onlineStore/config/services.php deleted file mode 100644 index 2a1d616..0000000 --- a/Chapter19/onlineStore/config/services.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - 'domain' => env('MAILGUN_DOMAIN'), - 'secret' => env('MAILGUN_SECRET'), - 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), - ], - - '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/Chapter19/onlineStore/config/session.php b/Chapter19/onlineStore/config/session.php deleted file mode 100644 index 8fed97c..0000000 --- a/Chapter19/onlineStore/config/session.php +++ /dev/null @@ -1,201 +0,0 @@ - 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/Chapter19/onlineStore/config/view.php b/Chapter19/onlineStore/config/view.php deleted file mode 100644 index 22b8a18..0000000 --- a/Chapter19/onlineStore/config/view.php +++ /dev/null @@ -1,36 +0,0 @@ - [ - 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/Chapter19/onlineStore/database/.gitignore b/Chapter19/onlineStore/database/.gitignore deleted file mode 100644 index 9b19b93..0000000 --- a/Chapter19/onlineStore/database/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.sqlite* diff --git a/Chapter19/onlineStore/database/factories/UserFactory.php b/Chapter19/onlineStore/database/factories/UserFactory.php deleted file mode 100644 index d6ca926..0000000 --- a/Chapter19/onlineStore/database/factories/UserFactory.php +++ /dev/null @@ -1,42 +0,0 @@ - - */ -class UserFactory extends Factory -{ - /** - * Define the model's default state. - * - * @return array - */ - public function definition() - { - return [ - 'name' => $this->faker->name(), - 'email' => $this->faker->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. - * - * @return \Illuminate\Database\Eloquent\Factories\Factory - */ - public function unverified() - { - return $this->state(function (array $attributes) { - return [ - 'email_verified_at' => null, - ]; - }); - } -} diff --git a/Chapter19/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php b/Chapter19/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php deleted file mode 100644 index cf6b776..0000000 --- a/Chapter19/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->string('name'); - $table->string('email')->unique(); - $table->timestamp('email_verified_at')->nullable(); - $table->string('password'); - $table->rememberToken(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('users'); - } -}; diff --git a/Chapter19/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php b/Chapter19/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php deleted file mode 100644 index fcacb80..0000000 --- a/Chapter19/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php +++ /dev/null @@ -1,32 +0,0 @@ -string('email')->index(); - $table->string('token'); - $table->timestamp('created_at')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('password_resets'); - } -}; diff --git a/Chapter19/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/Chapter19/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php deleted file mode 100644 index 1719198..0000000 --- a/Chapter19/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php +++ /dev/null @@ -1,36 +0,0 @@ -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. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('failed_jobs'); - } -}; diff --git a/Chapter19/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/Chapter19/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php deleted file mode 100644 index fd235f8..0000000 --- a/Chapter19/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->morphs('tokenable'); - $table->string('name'); - $table->string('token', 64)->unique(); - $table->text('abilities')->nullable(); - $table->timestamp('last_used_at')->nullable(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('personal_access_tokens'); - } -}; diff --git a/Chapter19/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php b/Chapter19/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php deleted file mode 100644 index 2eecdc2..0000000 --- a/Chapter19/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php +++ /dev/null @@ -1,35 +0,0 @@ -id(); - $table->string('name'); - $table->text('description'); - $table->string('image'); - $table->integer('price'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('products'); - } -}; diff --git a/Chapter19/onlineStore/database/seeders/DatabaseSeeder.php b/Chapter19/onlineStore/database/seeders/DatabaseSeeder.php deleted file mode 100644 index 71f673f..0000000 --- a/Chapter19/onlineStore/database/seeders/DatabaseSeeder.php +++ /dev/null @@ -1,19 +0,0 @@ -create(); - } -} diff --git a/Chapter19/onlineStore/lang/en.json b/Chapter19/onlineStore/lang/en.json deleted file mode 100644 index 577680d..0000000 --- a/Chapter19/onlineStore/lang/en.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "The :attribute must contain at least one letter.": "The :attribute must contain at least one letter.", - "The :attribute must contain at least one number.": "The :attribute must contain at least one number.", - "The :attribute must contain at least one symbol.": "The :attribute must contain at least one symbol.", - "The :attribute must contain at least one uppercase and one lowercase letter.": "The :attribute must contain at least one uppercase and one lowercase letter.", - "The given :attribute has appeared in a data leak. Please choose a different :attribute.": "The given :attribute has appeared in a data leak. Please choose a different :attribute." -} diff --git a/Chapter19/onlineStore/lang/en/auth.php b/Chapter19/onlineStore/lang/en/auth.php deleted file mode 100644 index 6598e2c..0000000 --- a/Chapter19/onlineStore/lang/en/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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/Chapter19/onlineStore/lang/en/pagination.php b/Chapter19/onlineStore/lang/en/pagination.php deleted file mode 100644 index d481411..0000000 --- a/Chapter19/onlineStore/lang/en/pagination.php +++ /dev/null @@ -1,19 +0,0 @@ - '« Previous', - 'next' => 'Next »', - -]; diff --git a/Chapter19/onlineStore/lang/en/passwords.php b/Chapter19/onlineStore/lang/en/passwords.php deleted file mode 100644 index 2345a56..0000000 --- a/Chapter19/onlineStore/lang/en/passwords.php +++ /dev/null @@ -1,22 +0,0 @@ - '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/Chapter19/onlineStore/lang/en/validation.php b/Chapter19/onlineStore/lang/en/validation.php deleted file mode 100644 index 783003c..0000000 --- a/Chapter19/onlineStore/lang/en/validation.php +++ /dev/null @@ -1,163 +0,0 @@ - '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' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - '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' => [ - 'numeric' => 'The :attribute must be greater than :value.', - 'file' => 'The :attribute must be greater than :value kilobytes.', - 'string' => 'The :attribute must be greater than :value characters.', - 'array' => 'The :attribute must have more than :value items.', - ], - 'gte' => [ - 'numeric' => 'The :attribute must be greater than or equal to :value.', - 'file' => 'The :attribute must be greater than or equal to :value kilobytes.', - 'string' => 'The :attribute must be greater than or equal to :value characters.', - 'array' => 'The :attribute must have :value items or more.', - ], - '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' => [ - 'numeric' => 'The :attribute must be less than :value.', - 'file' => 'The :attribute must be less than :value kilobytes.', - 'string' => 'The :attribute must be less than :value characters.', - 'array' => 'The :attribute must have less than :value items.', - ], - 'lte' => [ - 'numeric' => 'The :attribute must be less than or equal to :value.', - 'file' => 'The :attribute must be less than or equal to :value kilobytes.', - 'string' => 'The :attribute must be less than or equal to :value characters.', - 'array' => 'The :attribute must not have more than :value items.', - ], - 'mac_address' => 'The :attribute must be a valid MAC address.', - 'max' => [ - 'numeric' => 'The :attribute must not be greater than :max.', - 'file' => 'The :attribute must not be greater than :max kilobytes.', - 'string' => 'The :attribute must not be greater than :max characters.', - 'array' => 'The :attribute must not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - '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.', - 'password' => 'The password is incorrect.', - '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' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - '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/Chapter19/onlineStore/package.json b/Chapter19/onlineStore/package.json deleted file mode 100644 index 7a9aecd..0000000 --- a/Chapter19/onlineStore/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "private": true, - "scripts": { - "dev": "npm run development", - "development": "mix", - "watch": "mix watch", - "watch-poll": "mix watch -- --watch-options-poll=1000", - "hot": "mix watch --hot", - "prod": "npm run production", - "production": "mix --production" - }, - "devDependencies": { - "axios": "^0.25", - "laravel-mix": "^6.0.6", - "lodash": "^4.17.19", - "postcss": "^8.1.14" - } -} diff --git a/Chapter19/onlineStore/phpcs.xml b/Chapter19/onlineStore/phpcs.xml deleted file mode 100644 index a1cf2b6..0000000 --- a/Chapter19/onlineStore/phpcs.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - The coding standard for the Online Store project - - app/ - config/ - database/ - routes/ - */migrations/* - diff --git a/Chapter19/onlineStore/phpunit.xml b/Chapter19/onlineStore/phpunit.xml deleted file mode 100644 index 2ac86a1..0000000 --- a/Chapter19/onlineStore/phpunit.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - ./tests/Unit - - - ./tests/Feature - - - - - ./app - - - - - - - - - - - - - - diff --git a/Chapter19/onlineStore/public/.htaccess b/Chapter19/onlineStore/public/.htaccess deleted file mode 100644 index 3aec5e2..0000000 --- a/Chapter19/onlineStore/public/.htaccess +++ /dev/null @@ -1,21 +0,0 @@ - - - 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/Chapter19/onlineStore/public/css/admin.css b/Chapter19/onlineStore/public/css/admin.css deleted file mode 100644 index d9495a1..0000000 --- a/Chapter19/onlineStore/public/css/admin.css +++ /dev/null @@ -1,33 +0,0 @@ -.copyright { - background-color: #1a252f; -} - -.fixed { - -ms-flex: 0 0 250px; - flex: 0 0 250px; -} - -.content-grey { - background-color: #f8f9fc; -} - -hr { - margin-top: 0.8em; - margin-bottom: 0.8em; -} - -.img-profile { - height: 2rem; - width: 2rem; -} - -.profile-font { - color: #858796 !important; - font-size: 80%; - font-weight: 400; -} - -.card-header { - background-color: #f8f9fc; - border-bottom: 1px solid #e3e6f0; -} diff --git a/Chapter19/onlineStore/public/css/app.css b/Chapter19/onlineStore/public/css/app.css deleted file mode 100644 index cabac36..0000000 --- a/Chapter19/onlineStore/public/css/app.css +++ /dev/null @@ -1,20 +0,0 @@ -.bg-secondary { - background-color: #2c3e50 !important; -} - -.copyright { - background-color: #1a252f; -} - -.bg-primary { - background-color: #1abc9c !important; -} - -nav{ - font-weight: 700; -} - -.img-card{ - height: 18vw; - object-fit: cover; -} diff --git a/Chapter19/onlineStore/public/favicon.ico b/Chapter19/onlineStore/public/favicon.ico deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter19/onlineStore/public/img/game.png b/Chapter19/onlineStore/public/img/game.png deleted file mode 100644 index 85420e8bbc16098bf26b4ee63bde0e91a19d1f2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25896 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 cz>% diff --git a/Chapter19/onlineStore/public/img/safe.png b/Chapter19/onlineStore/public/img/safe.png deleted file mode 100644 index 445942c707af53210931f9f4f99f6d3cb69e5d89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19240 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
    w==XB0?3|p=#`o%NsudE(E-U#KS3Snw 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 o>ir+C;RN10sIS0&a;p - - - - - - - - - - - - - - - - - - diff --git a/Chapter19/onlineStore/public/index.php b/Chapter19/onlineStore/public/index.php deleted file mode 100644 index 1d69f3a..0000000 --- a/Chapter19/onlineStore/public/index.php +++ /dev/null @@ -1,55 +0,0 @@ -make(Kernel::class); - -$response = $kernel->handle( - $request = Request::capture() -)->send(); - -$kernel->terminate($request, $response); diff --git a/Chapter19/onlineStore/public/robots.txt b/Chapter19/onlineStore/public/robots.txt deleted file mode 100644 index eb05362..0000000 --- a/Chapter19/onlineStore/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: diff --git a/Chapter19/onlineStore/resources/css/app.css b/Chapter19/onlineStore/resources/css/app.css deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter19/onlineStore/resources/js/app.js b/Chapter19/onlineStore/resources/js/app.js deleted file mode 100644 index 40c55f6..0000000 --- a/Chapter19/onlineStore/resources/js/app.js +++ /dev/null @@ -1 +0,0 @@ -require('./bootstrap'); diff --git a/Chapter19/onlineStore/resources/js/bootstrap.js b/Chapter19/onlineStore/resources/js/bootstrap.js deleted file mode 100644 index 6922577..0000000 --- a/Chapter19/onlineStore/resources/js/bootstrap.js +++ /dev/null @@ -1,28 +0,0 @@ -window._ = require('lodash'); - -/** - * 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 = require('axios'); - -window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; - -/** - * 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'; - -// window.Pusher = require('pusher-js'); - -// window.Echo = new Echo({ -// broadcaster: 'pusher', -// key: process.env.MIX_PUSHER_APP_KEY, -// cluster: process.env.MIX_PUSHER_APP_CLUSTER, -// forceTLS: true -// }); diff --git a/Chapter19/onlineStore/resources/views/admin/home/index.blade.php b/Chapter19/onlineStore/resources/views/admin/home/index.blade.php deleted file mode 100644 index a2b4868..0000000 --- a/Chapter19/onlineStore/resources/views/admin/home/index.blade.php +++ /dev/null @@ -1,12 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
    -
    - Admin Panel - Home Page -
    -
    - Welcome to the Admin Panel, use the sidebar to navigate between the different options. -
    -
    -@endsection diff --git a/Chapter19/onlineStore/resources/views/admin/product/edit.blade.php b/Chapter19/onlineStore/resources/views/admin/product/edit.blade.php deleted file mode 100644 index b8e03d8..0000000 --- a/Chapter19/onlineStore/resources/views/admin/product/edit.blade.php +++ /dev/null @@ -1,61 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
    -
    - Edit Product -
    -
    - @if($errors->any()) -
      - @foreach($errors->all() as $error) -
    • - {{ $error }}
    • - @endforeach -
    - @endif - -
    - @csrf - @method('PUT') -
    -
    -
    - -
    - -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -   -
    -
    -
    - - -
    - -
    -
    -
    -@endsection diff --git a/Chapter19/onlineStore/resources/views/admin/product/index.blade.php b/Chapter19/onlineStore/resources/views/admin/product/index.blade.php deleted file mode 100644 index 19fbe4b..0000000 --- a/Chapter19/onlineStore/resources/views/admin/product/index.blade.php +++ /dev/null @@ -1,98 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
    -
    - Create Products -
    -
    - @if($errors->any()) -
      - @foreach($errors->all() as $error) -
    • - {{ $error }}
    • - @endforeach -
    - @endif - -
    - @csrf -
    -
    -
    - -
    - -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -   -
    -
    -
    - - -
    - -
    -
    -
    - -
    -
    - Manage Products -
    -
    - - - - - - - - - - - @foreach ($viewData["products"] as $product) - - - - - - - @endforeach - -
    IDNameEditDelete
    {{ $product->getId() }}{{ $product->getName() }} - - - - -
    - @csrf - @method('DELETE') - -
    -
    -
    -
    -@endsection diff --git a/Chapter19/onlineStore/resources/views/home/about.blade.php b/Chapter19/onlineStore/resources/views/home/about.blade.php deleted file mode 100644 index f79abf3..0000000 --- a/Chapter19/onlineStore/resources/views/home/about.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    -
    -
    -

    {{ $viewData["description"] }}

    -
    -
    -

    {{ $viewData["author"] }}

    -
    -
    -
    -@endsection diff --git a/Chapter19/onlineStore/resources/views/home/index.blade.php b/Chapter19/onlineStore/resources/views/home/index.blade.php deleted file mode 100644 index 1affb20..0000000 --- a/Chapter19/onlineStore/resources/views/home/index.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('content') -
    -
    - -
    -
    - -
    -
    - -
    -
    -@endsection diff --git a/Chapter19/onlineStore/resources/views/layouts/admin.blade.php b/Chapter19/onlineStore/resources/views/layouts/admin.blade.php deleted file mode 100644 index 4aff3f8..0000000 --- a/Chapter19/onlineStore/resources/views/layouts/admin.blade.php +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - @yield('title', 'Admin - Online Store') - - - -
    - - - -
    - - -
    - @yield('content') -
    -
    -
    - - - - - - - - - diff --git a/Chapter19/onlineStore/resources/views/layouts/app.blade.php b/Chapter19/onlineStore/resources/views/layouts/app.blade.php deleted file mode 100644 index eee7fcb..0000000 --- a/Chapter19/onlineStore/resources/views/layouts/app.blade.php +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - @yield('title', 'Online Store') - - - - - -
    -
    -

    @yield('subtitle', 'A Laravel Online Store')

    -
    -
    - - -
    - @yield('content') -
    - - - - - - - diff --git a/Chapter19/onlineStore/resources/views/product/index.blade.php b/Chapter19/onlineStore/resources/views/product/index.blade.php deleted file mode 100644 index 64c3e18..0000000 --- a/Chapter19/onlineStore/resources/views/product/index.blade.php +++ /dev/null @@ -1,18 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    - @foreach ($viewData["products"] as $product) - - @endforeach -
    -@endsection diff --git a/Chapter19/onlineStore/resources/views/product/show.blade.php b/Chapter19/onlineStore/resources/views/product/show.blade.php deleted file mode 100644 index be37a01..0000000 --- a/Chapter19/onlineStore/resources/views/product/show.blade.php +++ /dev/null @@ -1,21 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    -
    -
    - getImage()) }}" class="img-fluid rounded-start"> -
    -
    -
    -
    - {{ $viewData["product"]->getName() }} (${{ $viewData["product"]->getPrice() }}) -
    -

    {{ $viewData["product"]->getDescription() }}

    -

    Add to Cart

    -
    -
    -
    -
    -@endsection diff --git a/Chapter19/onlineStore/resources/views/welcome.blade.php b/Chapter19/onlineStore/resources/views/welcome.blade.php deleted file mode 100644 index c587c72..0000000 --- a/Chapter19/onlineStore/resources/views/welcome.blade.php +++ /dev/null @@ -1,7 +0,0 @@ -@extends('layouts.app') -@section('title', 'Home Page - Online Store') -@section('content') -
    - Welcome to the application -
    -@endsection \ No newline at end of file diff --git a/Chapter19/onlineStore/routes/api.php b/Chapter19/onlineStore/routes/api.php deleted file mode 100644 index eb6fa48..0000000 --- a/Chapter19/onlineStore/routes/api.php +++ /dev/null @@ -1,19 +0,0 @@ -get('/user', function (Request $request) { - return $request->user(); -}); diff --git a/Chapter19/onlineStore/routes/channels.php b/Chapter19/onlineStore/routes/channels.php deleted file mode 100644 index 5d451e1..0000000 --- a/Chapter19/onlineStore/routes/channels.php +++ /dev/null @@ -1,18 +0,0 @@ -id === (int) $id; -}); diff --git a/Chapter19/onlineStore/routes/console.php b/Chapter19/onlineStore/routes/console.php deleted file mode 100644 index e05f4c9..0000000 --- a/Chapter19/onlineStore/routes/console.php +++ /dev/null @@ -1,19 +0,0 @@ -comment(Inspiring::quote()); -})->purpose('Display an inspiring quote'); diff --git a/Chapter19/onlineStore/routes/web.php b/Chapter19/onlineStore/routes/web.php deleted file mode 100644 index ee369d0..0000000 --- a/Chapter19/onlineStore/routes/web.php +++ /dev/null @@ -1,25 +0,0 @@ -name("home.index"); -Route::get('/about', 'App\Http\Controllers\HomeController@about')->name("home.about"); -Route::get('/products', 'App\Http\Controllers\ProductController@index')->name("product.index"); -Route::get('/products/{id}', 'App\Http\Controllers\ProductController@show')->name("product.show"); -Route::get('/admin', 'App\Http\Controllers\Admin\AdminHomeController@index')->name("admin.home.index"); -Route::get('/admin/products', 'App\Http\Controllers\Admin\AdminProductController@index')->name("admin.product.index"); -Route::post('/admin/products/store', 'App\Http\Controllers\Admin\AdminProductController@store')->name("admin.product.store"); -Route::delete('/admin/products/{id}/delete', 'App\Http\Controllers\Admin\AdminProductController@delete')->name("admin.product.delete"); -Route::get('/admin/products/{id}/edit', 'App\Http\Controllers\Admin\AdminProductController@edit')->name("admin.product.edit"); -Route::put('/admin/products/{id}/update', 'App\Http\Controllers\Admin\AdminProductController@update')->name("admin.product.update"); diff --git a/Chapter19/onlineStore/storage/app/.gitignore b/Chapter19/onlineStore/storage/app/.gitignore deleted file mode 100644 index 8f4803c..0000000 --- a/Chapter19/onlineStore/storage/app/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!public/ -!.gitignore diff --git a/Chapter19/onlineStore/storage/app/public/.gitignore b/Chapter19/onlineStore/storage/app/public/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter19/onlineStore/storage/app/public/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter19/onlineStore/storage/framework/.gitignore b/Chapter19/onlineStore/storage/framework/.gitignore deleted file mode 100644 index 05c4471..0000000 --- a/Chapter19/onlineStore/storage/framework/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -compiled.php -config.php -down -events.scanned.php -maintenance.php -routes.php -routes.scanned.php -schedule-* -services.json diff --git a/Chapter19/onlineStore/storage/framework/cache/.gitignore b/Chapter19/onlineStore/storage/framework/cache/.gitignore deleted file mode 100644 index 01e4a6c..0000000 --- a/Chapter19/onlineStore/storage/framework/cache/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!data/ -!.gitignore diff --git a/Chapter19/onlineStore/storage/framework/cache/data/.gitignore b/Chapter19/onlineStore/storage/framework/cache/data/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter19/onlineStore/storage/framework/cache/data/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter19/onlineStore/storage/framework/sessions/.gitignore b/Chapter19/onlineStore/storage/framework/sessions/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter19/onlineStore/storage/framework/sessions/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter19/onlineStore/storage/framework/testing/.gitignore b/Chapter19/onlineStore/storage/framework/testing/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter19/onlineStore/storage/framework/testing/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter19/onlineStore/storage/framework/views/.gitignore b/Chapter19/onlineStore/storage/framework/views/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter19/onlineStore/storage/framework/views/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter19/onlineStore/storage/logs/.gitignore b/Chapter19/onlineStore/storage/logs/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter19/onlineStore/storage/logs/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter19/onlineStore/tests/CreatesApplication.php b/Chapter19/onlineStore/tests/CreatesApplication.php deleted file mode 100644 index 547152f..0000000 --- a/Chapter19/onlineStore/tests/CreatesApplication.php +++ /dev/null @@ -1,22 +0,0 @@ -make(Kernel::class)->bootstrap(); - - return $app; - } -} diff --git a/Chapter19/onlineStore/tests/Feature/ExampleTest.php b/Chapter19/onlineStore/tests/Feature/ExampleTest.php deleted file mode 100644 index 78ccc21..0000000 --- a/Chapter19/onlineStore/tests/Feature/ExampleTest.php +++ /dev/null @@ -1,21 +0,0 @@ -get('/'); - - $response->assertStatus(200); - } -} diff --git a/Chapter19/onlineStore/tests/TestCase.php b/Chapter19/onlineStore/tests/TestCase.php deleted file mode 100644 index 2932d4a..0000000 --- a/Chapter19/onlineStore/tests/TestCase.php +++ /dev/null @@ -1,10 +0,0 @@ -assertTrue(true); - } -} diff --git a/Chapter19/onlineStore/webpack.mix.js b/Chapter19/onlineStore/webpack.mix.js deleted file mode 100644 index 2a22dc1..0000000 --- a/Chapter19/onlineStore/webpack.mix.js +++ /dev/null @@ -1,17 +0,0 @@ -const mix = require('laravel-mix'); - -/* - |-------------------------------------------------------------------------- - | Mix Asset Management - |-------------------------------------------------------------------------- - | - | Mix provides a clean, fluent API for defining some Webpack build steps - | for your Laravel applications. By default, we are compiling the CSS - | file for the application as well as bundling up all the JS files. - | - */ - -mix.js('resources/js/app.js', 'public/js') - .postCss('resources/css/app.css', 'public/css', [ - // - ]); diff --git a/Chapter20/onlineStore/.editorconfig b/Chapter20/onlineStore/.editorconfig deleted file mode 100644 index 1671c9b..0000000 --- a/Chapter20/onlineStore/.editorconfig +++ /dev/null @@ -1,18 +0,0 @@ -root = true - -[*] -charset = utf-8 -end_of_line = lf -insert_final_newline = true -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true - -[*.md] -trim_trailing_whitespace = false - -[*.{yml,yaml}] -indent_size = 2 - -[docker-compose.yml] -indent_size = 4 diff --git a/Chapter20/onlineStore/.env.example b/Chapter20/onlineStore/.env.example deleted file mode 100644 index 8510237..0000000 --- a/Chapter20/onlineStore/.env.example +++ /dev/null @@ -1,52 +0,0 @@ -APP_NAME=Laravel -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=laravel -DB_USERNAME=root -DB_PASSWORD= - -BROADCAST_DRIVER=log -CACHE_DRIVER=file -FILESYSTEM_DISK=local -QUEUE_CONNECTION=sync -SESSION_DRIVER=file -SESSION_LIFETIME=120 - -MEMCACHED_HOST=127.0.0.1 - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -MAIL_MAILER=smtp -MAIL_HOST=mailhog -MAIL_PORT=1025 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS=null -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_APP_CLUSTER=mt1 - -MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/Chapter20/onlineStore/.gitattributes b/Chapter20/onlineStore/.gitattributes deleted file mode 100644 index 510d996..0000000 --- a/Chapter20/onlineStore/.gitattributes +++ /dev/null @@ -1,10 +0,0 @@ -* text=auto - -*.blade.php diff=html -*.css diff=css -*.html diff=html -*.md diff=markdown -*.php diff=php - -/.github export-ignore -CHANGELOG.md export-ignore diff --git a/Chapter20/onlineStore/.gitignore b/Chapter20/onlineStore/.gitignore deleted file mode 100644 index eb003b0..0000000 --- a/Chapter20/onlineStore/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -/node_modules -/public/hot -/public/storage -/storage/*.key -/vendor -.env -.env.backup -.phpunit.result.cache -docker-compose.override.yml -Homestead.json -Homestead.yaml -npm-debug.log -yarn-error.log -/.idea -/.vscode diff --git a/Chapter20/onlineStore/.styleci.yml b/Chapter20/onlineStore/.styleci.yml deleted file mode 100644 index 679a631..0000000 --- a/Chapter20/onlineStore/.styleci.yml +++ /dev/null @@ -1,13 +0,0 @@ -php: - preset: laravel - version: 8 - disabled: - - no_unused_imports - finder: - not-name: - - index.php -js: - finder: - not-name: - - webpack.mix.js -css: true diff --git a/Chapter20/onlineStore/README.md b/Chapter20/onlineStore/README.md deleted file mode 100644 index f171eca..0000000 --- a/Chapter20/onlineStore/README.md +++ /dev/null @@ -1,64 +0,0 @@ -

    - -

    -Build Status -Total Downloads -Latest Stable Version -License -

    - -## About Laravel - -Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as: - -- [Simple, fast routing engine](https://laravel.com/docs/routing). -- [Powerful dependency injection container](https://laravel.com/docs/container). -- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage. -- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent). -- Database agnostic [schema migrations](https://laravel.com/docs/migrations). -- [Robust background job processing](https://laravel.com/docs/queues). -- [Real-time event broadcasting](https://laravel.com/docs/broadcasting). - -Laravel is accessible, powerful, and provides tools required for large, robust applications. - -## Learning Laravel - -Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework. - -If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 2000 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library. - -## Laravel Sponsors - -We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell). - -### Premium Partners - -- **[Vehikl](https://vehikl.com/)** -- **[Tighten Co.](https://tighten.co)** -- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** -- **[64 Robots](https://64robots.com)** -- **[Cubet Techno Labs](https://cubettech.com)** -- **[Cyber-Duck](https://cyber-duck.co.uk)** -- **[Many](https://www.many.co.uk)** -- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)** -- **[DevSquad](https://devsquad.com)** -- **[Curotec](https://www.curotec.com/services/technologies/laravel/)** -- **[OP.GG](https://op.gg)** -- **[WebReinvent](https://webreinvent.com/?utm_source=laravel&utm_medium=github&utm_campaign=patreon-sponsors)** -- **[Lendio](https://lendio.com)** - -## Contributing - -Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions). - -## Code of Conduct - -In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). - -## Security Vulnerabilities - -If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed. - -## License - -The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). diff --git a/Chapter20/onlineStore/app/Console/Kernel.php b/Chapter20/onlineStore/app/Console/Kernel.php deleted file mode 100644 index d8bc1d2..0000000 --- a/Chapter20/onlineStore/app/Console/Kernel.php +++ /dev/null @@ -1,32 +0,0 @@ -command('inspire')->hourly(); - } - - /** - * Register the commands for the application. - * - * @return void - */ - protected function commands() - { - $this->load(__DIR__.'/Commands'); - - require base_path('routes/console.php'); - } -} diff --git a/Chapter20/onlineStore/app/Exceptions/Handler.php b/Chapter20/onlineStore/app/Exceptions/Handler.php deleted file mode 100644 index 8e7fbd1..0000000 --- a/Chapter20/onlineStore/app/Exceptions/Handler.php +++ /dev/null @@ -1,41 +0,0 @@ -> - */ - protected $dontReport = [ - // - ]; - - /** - * A list of the inputs that are never flashed for validation exceptions. - * - * @var array - */ - protected $dontFlash = [ - 'current_password', - 'password', - 'password_confirmation', - ]; - - /** - * Register the exception handling callbacks for the application. - * - * @return void - */ - public function register() - { - $this->reportable(function (Throwable $e) { - // - }); - } -} diff --git a/Chapter20/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php b/Chapter20/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php deleted file mode 100644 index cd78cb3..0000000 --- a/Chapter20/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php +++ /dev/null @@ -1,16 +0,0 @@ -with("viewData", $viewData); - } -} diff --git a/Chapter20/onlineStore/app/Http/Controllers/Admin/AdminProductController.php b/Chapter20/onlineStore/app/Http/Controllers/Admin/AdminProductController.php deleted file mode 100644 index d1c6c52..0000000 --- a/Chapter20/onlineStore/app/Http/Controllers/Admin/AdminProductController.php +++ /dev/null @@ -1,79 +0,0 @@ -with("viewData", $viewData); - } - - public function store(Request $request) - { - Product::validate($request); - - $newProduct = new Product(); - $newProduct->setName($request->input('name')); - $newProduct->setDescription($request->input('description')); - $newProduct->setPrice($request->input('price')); - $newProduct->setImage("game.png"); - $newProduct->save(); - - if ($request->hasFile('image')) { - $imageName = $newProduct->getId().".".$request->file('image')->extension(); - Storage::disk('public')->put( - $imageName, - file_get_contents($request->file('image')->getRealPath()) - ); - $newProduct->setImage($imageName); - $newProduct->save(); - } - - return back(); - } - - public function delete($id) - { - Product::destroy($id); - return back(); - } - - public function edit($id) - { - $viewData = []; - $viewData["title"] = "Admin Page - Edit Product - Online Store"; - $viewData["product"] = Product::findOrFail($id); - return view('admin.product.edit')->with("viewData", $viewData); - } - - public function update(Request $request, $id) - { - Product::validate($request); - - $product = Product::findOrFail($id); - $product->setName($request->input('name')); - $product->setDescription($request->input('description')); - $product->setPrice($request->input('price')); - - if ($request->hasFile('image')) { - $imageName = $product->getId().".".$request->file('image')->extension(); - Storage::disk('public')->put( - $imageName, - file_get_contents($request->file('image')->getRealPath()) - ); - $product->setImage($imageName); - } - - $product->save(); - return redirect()->route('admin.product.index'); - } -} diff --git a/Chapter20/onlineStore/app/Http/Controllers/Controller.php b/Chapter20/onlineStore/app/Http/Controllers/Controller.php deleted file mode 100644 index a0a2a8a..0000000 --- a/Chapter20/onlineStore/app/Http/Controllers/Controller.php +++ /dev/null @@ -1,13 +0,0 @@ -with("viewData", $viewData); - } - - public function about() - { - $viewData = []; - $viewData["title"] = "About us - Online Store"; - $viewData["subtitle"] = "About us"; - $viewData["description"] = "This is an about page ..."; - $viewData["author"] = "Developed by: Your Name"; - return view('home.about')->with("viewData", $viewData); - } -} diff --git a/Chapter20/onlineStore/app/Http/Controllers/ProductController.php b/Chapter20/onlineStore/app/Http/Controllers/ProductController.php deleted file mode 100644 index d27a3a3..0000000 --- a/Chapter20/onlineStore/app/Http/Controllers/ProductController.php +++ /dev/null @@ -1,29 +0,0 @@ -with("viewData", $viewData); - } - - public function show($id) - { - $viewData = []; - $product = Product::findOrFail($id); - $viewData["title"] = $product->getName()." - Online Store"; - $viewData["subtitle"] = $product->getName()." - Product information"; - $viewData["product"] = $product; - return view('product.show')->with("viewData", $viewData); - } -} diff --git a/Chapter20/onlineStore/app/Http/Kernel.php b/Chapter20/onlineStore/app/Http/Kernel.php deleted file mode 100644 index d3722c2..0000000 --- a/Chapter20/onlineStore/app/Http/Kernel.php +++ /dev/null @@ -1,67 +0,0 @@ - - */ - protected $middleware = [ - // \App\Http\Middleware\TrustHosts::class, - \App\Http\Middleware\TrustProxies::class, - \Fruitcake\Cors\HandleCors::class, - \App\Http\Middleware\PreventRequestsDuringMaintenance::class, - \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, - \App\Http\Middleware\TrimStrings::class, - \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, - ]; - - /** - * The application's route middleware groups. - * - * @var array> - */ - protected $middlewareGroups = [ - 'web' => [ - \App\Http\Middleware\EncryptCookies::class, - \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, - \Illuminate\Session\Middleware\StartSession::class, - // \Illuminate\Session\Middleware\AuthenticateSession::class, - \Illuminate\View\Middleware\ShareErrorsFromSession::class, - \App\Http\Middleware\VerifyCsrfToken::class, - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - - 'api' => [ - // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, - 'throttle:api', - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - ]; - - /** - * The application's route middleware. - * - * These middleware may be assigned to groups or used individually. - * - * @var array - */ - protected $routeMiddleware = [ - 'auth' => \App\Http\Middleware\Authenticate::class, - 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::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, - 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, - 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, - 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, - ]; -} diff --git a/Chapter20/onlineStore/app/Http/Middleware/Authenticate.php b/Chapter20/onlineStore/app/Http/Middleware/Authenticate.php deleted file mode 100644 index 704089a..0000000 --- a/Chapter20/onlineStore/app/Http/Middleware/Authenticate.php +++ /dev/null @@ -1,21 +0,0 @@ -expectsJson()) { - return route('login'); - } - } -} diff --git a/Chapter20/onlineStore/app/Http/Middleware/EncryptCookies.php b/Chapter20/onlineStore/app/Http/Middleware/EncryptCookies.php deleted file mode 100644 index 867695b..0000000 --- a/Chapter20/onlineStore/app/Http/Middleware/EncryptCookies.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter20/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/Chapter20/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php deleted file mode 100644 index 74cbd9a..0000000 --- a/Chapter20/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter20/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php b/Chapter20/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php deleted file mode 100644 index a2813a0..0000000 --- a/Chapter20/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php +++ /dev/null @@ -1,32 +0,0 @@ -check()) { - return redirect(RouteServiceProvider::HOME); - } - } - - return $next($request); - } -} diff --git a/Chapter20/onlineStore/app/Http/Middleware/TrimStrings.php b/Chapter20/onlineStore/app/Http/Middleware/TrimStrings.php deleted file mode 100644 index 88cadca..0000000 --- a/Chapter20/onlineStore/app/Http/Middleware/TrimStrings.php +++ /dev/null @@ -1,19 +0,0 @@ - - */ - protected $except = [ - 'current_password', - 'password', - 'password_confirmation', - ]; -} diff --git a/Chapter20/onlineStore/app/Http/Middleware/TrustHosts.php b/Chapter20/onlineStore/app/Http/Middleware/TrustHosts.php deleted file mode 100644 index 7186414..0000000 --- a/Chapter20/onlineStore/app/Http/Middleware/TrustHosts.php +++ /dev/null @@ -1,20 +0,0 @@ - - */ - public function hosts() - { - return [ - $this->allSubdomainsOfApplicationUrl(), - ]; - } -} diff --git a/Chapter20/onlineStore/app/Http/Middleware/TrustProxies.php b/Chapter20/onlineStore/app/Http/Middleware/TrustProxies.php deleted file mode 100644 index 3391630..0000000 --- a/Chapter20/onlineStore/app/Http/Middleware/TrustProxies.php +++ /dev/null @@ -1,28 +0,0 @@ -|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/Chapter20/onlineStore/app/Http/Middleware/VerifyCsrfToken.php b/Chapter20/onlineStore/app/Http/Middleware/VerifyCsrfToken.php deleted file mode 100644 index 9e86521..0000000 --- a/Chapter20/onlineStore/app/Http/Middleware/VerifyCsrfToken.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter20/onlineStore/app/Models/Product.php b/Chapter20/onlineStore/app/Models/Product.php deleted file mode 100644 index b8f58f6..0000000 --- a/Chapter20/onlineStore/app/Models/Product.php +++ /dev/null @@ -1,99 +0,0 @@ -attributes['id'] - int - contains the product primary key (id) - * $this->attributes['name'] - string - contains the product name - * $this->attributes['description'] - string - contains the product description - * $this->attributes['image'] - string - contains the product image - * $this->attributes['price'] - int - contains the product price - * $this->attributes['created_at'] - timestamp - contains the product creation date - * $this->attributes['updated_at'] - timestamp - contains the product update date - */ - - public static function validate($request) - { - $request->validate([ - "name" => "required|max:255", - "description" => "required", - "price" => "required|numeric|gt:0", - 'image' => 'image', - ]); - } - - public function getId() - { - return $this->attributes['id']; - } - - public function setId($id) - { - $this->attributes['id'] = $id; - } - - public function getName() - { - return $this->attributes['name']; - } - - public function setName($name) - { - $this->attributes['name'] = $name; - } - - public function getDescription() - { - return $this->attributes['description']; - } - - public function setDescription($description) - { - $this->attributes['description'] = $description; - } - - public function getImage() - { - return $this->attributes['image']; - } - - public function setImage($image) - { - $this->attributes['image'] = $image; - } - - public function getPrice() - { - return $this->attributes['price']; - } - - public function setPrice($price) - { - $this->attributes['price'] = $price; - } - - public function getCreatedAt() - { - return $this->attributes['created_at']; - } - - public function setCreatedAt($createdAt) - { - $this->attributes['created_at'] = $createdAt; - } - - public function getUpdatedAt() - { - return $this->attributes['updated_at']; - } - - public function setUpdatedAt($updatedAt) - { - $this->attributes['updated_at'] = $updatedAt; - } -} diff --git a/Chapter20/onlineStore/app/Models/User.php b/Chapter20/onlineStore/app/Models/User.php deleted file mode 100644 index 8996368..0000000 --- a/Chapter20/onlineStore/app/Models/User.php +++ /dev/null @@ -1,44 +0,0 @@ - - */ - 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', - ]; -} diff --git a/Chapter20/onlineStore/app/Providers/AppServiceProvider.php b/Chapter20/onlineStore/app/Providers/AppServiceProvider.php deleted file mode 100644 index ee8ca5b..0000000 --- a/Chapter20/onlineStore/app/Providers/AppServiceProvider.php +++ /dev/null @@ -1,28 +0,0 @@ - - */ - protected $policies = [ - // 'App\Models\Model' => 'App\Policies\ModelPolicy', - ]; - - /** - * Register any authentication / authorization services. - * - * @return void - */ - public function boot() - { - $this->registerPolicies(); - - // - } -} diff --git a/Chapter20/onlineStore/app/Providers/BroadcastServiceProvider.php b/Chapter20/onlineStore/app/Providers/BroadcastServiceProvider.php deleted file mode 100644 index 395c518..0000000 --- a/Chapter20/onlineStore/app/Providers/BroadcastServiceProvider.php +++ /dev/null @@ -1,21 +0,0 @@ -> - */ - protected $listen = [ - Registered::class => [ - SendEmailVerificationNotification::class, - ], - ]; - - /** - * Register any events for your application. - * - * @return void - */ - public function boot() - { - // - } -} diff --git a/Chapter20/onlineStore/app/Providers/RouteServiceProvider.php b/Chapter20/onlineStore/app/Providers/RouteServiceProvider.php deleted file mode 100644 index 7c17d1f..0000000 --- a/Chapter20/onlineStore/app/Providers/RouteServiceProvider.php +++ /dev/null @@ -1,63 +0,0 @@ -configureRateLimiting(); - - $this->routes(function () { - Route::prefix('api') - ->middleware('api') - ->namespace($this->namespace) - ->group(base_path('routes/api.php')); - - Route::middleware('web') - ->namespace($this->namespace) - ->group(base_path('routes/web.php')); - }); - } - - /** - * Configure the rate limiters for the application. - * - * @return void - */ - protected function configureRateLimiting() - { - RateLimiter::for('api', function (Request $request) { - return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); - }); - } -} diff --git a/Chapter20/onlineStore/artisan b/Chapter20/onlineStore/artisan deleted file mode 100644 index 67a3329..0000000 --- a/Chapter20/onlineStore/artisan +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env php -make(Illuminate\Contracts\Console\Kernel::class); - -$status = $kernel->handle( - $input = new Symfony\Component\Console\Input\ArgvInput, - new Symfony\Component\Console\Output\ConsoleOutput -); - -/* -|-------------------------------------------------------------------------- -| Shutdown The Application -|-------------------------------------------------------------------------- -| -| Once Artisan has finished running, we will fire off the shutdown events -| so that any final work may be done by the application before we shut -| down the process. This is the last thing to happen to the request. -| -*/ - -$kernel->terminate($input, $status); - -exit($status); diff --git a/Chapter20/onlineStore/bootstrap/app.php b/Chapter20/onlineStore/bootstrap/app.php deleted file mode 100644 index 037e17d..0000000 --- a/Chapter20/onlineStore/bootstrap/app.php +++ /dev/null @@ -1,55 +0,0 @@ -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/Chapter20/onlineStore/bootstrap/cache/.gitignore b/Chapter20/onlineStore/bootstrap/cache/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter20/onlineStore/bootstrap/cache/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter20/onlineStore/composer.json b/Chapter20/onlineStore/composer.json deleted file mode 100644 index f0f2eda..0000000 --- a/Chapter20/onlineStore/composer.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "name": "laravel/laravel", - "type": "project", - "description": "The Laravel Framework.", - "keywords": ["framework", "laravel"], - "license": "MIT", - "require": { - "php": "^8.0", - "fruitcake/laravel-cors": "^2.0.5", - "guzzlehttp/guzzle": "^7.2", - "laravel/framework": "^9.0", - "laravel/sanctum": "^2.14", - "laravel/tinker": "^2.7" - }, - "require-dev": { - "fakerphp/faker": "^1.9.1", - "laravel/sail": "^1.0.1", - "mockery/mockery": "^1.4.4", - "nunomaduro/collision": "^6.1", - "phpunit/phpunit": "^9.5.10", - "spatie/laravel-ignition": "^1.0", - "squizlabs/php_codesniffer": "^3.6" - }, - "autoload": { - "psr-4": { - "App\\": "app/", - "Database\\Factories\\": "database/factories/", - "Database\\Seeders\\": "database/seeders/" - } - }, - "autoload-dev": { - "psr-4": { - "Tests\\": "tests/" - } - }, - "scripts": { - "post-autoload-dump": [ - "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", - "@php artisan package:discover --ansi" - ], - "post-update-cmd": [ - "@php artisan vendor:publish --tag=laravel-assets --ansi --force" - ], - "post-root-package-install": [ - "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" - ], - "post-create-project-cmd": [ - "@php artisan key:generate --ansi" - ] - }, - "extra": { - "laravel": { - "dont-discover": [] - } - }, - "config": { - "optimize-autoloader": true, - "preferred-install": "dist", - "sort-packages": true - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/Chapter20/onlineStore/composer.lock b/Chapter20/onlineStore/composer.lock deleted file mode 100644 index b55e897..0000000 --- a/Chapter20/onlineStore/composer.lock +++ /dev/null @@ -1,7860 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "8bdcc31974d0d5a00db79c82827c8815", - "packages": [ - { - "name": "asm89/stack-cors", - "version": "v2.1.1", - "source": { - "type": "git", - "url": "https://github.com/asm89/stack-cors.git", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4|^5|^6" - }, - "require-dev": { - "phpunit/phpunit": "^7|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "psr-4": { - "Asm89\\Stack\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alexander", - "email": "iam.asm89@gmail.com" - } - ], - "description": "Cross-origin resource sharing library and stack middleware", - "homepage": "https://github.com/asm89/stack-cors", - "keywords": [ - "cors", - "stack" - ], - "support": { - "issues": "https://github.com/asm89/stack-cors/issues", - "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" - }, - "time": "2022-01-18T09:12:03+00:00" - }, - { - "name": "brick/math", - "version": "0.9.3", - "source": { - "type": "git", - "url": "https://github.com/brick/math.git", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", - "vimeo/psalm": "4.9.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Brick\\Math\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Arbitrary-precision arithmetic library", - "keywords": [ - "Arbitrary-precision", - "BigInteger", - "BigRational", - "arithmetic", - "bigdecimal", - "bignum", - "brick", - "math" - ], - "support": { - "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.9.3" - }, - "funding": [ - { - "url": "https://github.com/BenMorel", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/brick/math", - "type": "tidelift" - } - ], - "time": "2021-08-15T20:50:18+00:00" - }, - { - "name": "dflydev/dot-access-data", - "version": "v3.0.1", - "source": { - "type": "git", - "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c", - "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": "^3.14" - }, - "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.1" - }, - "time": "2021-08-13T13:06:58+00:00" - }, - { - "name": "doctrine/inflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "vimeo/psalm": "^4.10" - }, - "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.4" - }, - "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": "2021-10-22T20:16:43+00:00" - }, - { - "name": "doctrine/lexer", - "version": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" - } - }, - "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/1.2.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%2Flexer", - "type": "tidelift" - } - ], - "time": "2022-01-12T08:27:12+00:00" - }, - { - "name": "dragonmantank/cron-expression", - "version": "v3.3.1", - "source": { - "type": "git", - "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "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.1" - }, - "funding": [ - { - "url": "https://github.com/dragonmantank", - "type": "github" - } - ], - "time": "2022-01-18T15:43:28+00:00" - }, - { - "name": "egulias/email-validator", - "version": "3.1.2", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ee0db30118f661fb166bcffbf5d82032df484697", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^1.2", - "php": ">=7.2", - "symfony/polyfill-intl-idn": "^1.15" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^8.5.8|^9.3.3", - "vimeo/psalm": "^4" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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/3.1.2" - }, - "funding": [ - { - "url": "https://github.com/egulias", - "type": "github" - } - ], - "time": "2021-10-11T09:18:27+00:00" - }, - { - "name": "fruitcake/laravel-cors", - "version": "v2.0.5", - "source": { - "type": "git", - "url": "https://github.com/fruitcake/laravel-cors.git", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "shasum": "" - }, - "require": { - "asm89/stack-cors": "^2.0.1", - "illuminate/contracts": "^6|^7|^8|^9", - "illuminate/support": "^6|^7|^8|^9", - "php": ">=7.2", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4.3.4|^5|^6" - }, - "require-dev": { - "laravel/framework": "^6|^7.24|^8", - "orchestra/testbench-dusk": "^4|^5|^6|^7", - "phpunit/phpunit": "^6|^7|^8|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - }, - "laravel": { - "providers": [ - "Fruitcake\\Cors\\CorsServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Fruitcake\\Cors\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fruitcake", - "homepage": "https://fruitcake.nl" - }, - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", - "keywords": [ - "api", - "cors", - "crossdomain", - "laravel" - ], - "support": { - "issues": "https://github.com/fruitcake/laravel-cors/issues", - "source": "https://github.com/fruitcake/laravel-cors/tree/v2.0.5" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "time": "2022-01-03T14:53:04+00:00" - }, - { - "name": "graham-campbell/result-type", - "version": "v1.0.4", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "0690bde05318336c7221785f2a932467f98b64ca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/0690bde05318336c7221785f2a932467f98b64ca", - "reference": "0690bde05318336c7221785f2a932467f98b64ca", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "phpoption/phpoption": "^1.8" - }, - "require-dev": { - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", - "type": "tidelift" - } - ], - "time": "2021-11-21T21:41:47+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "7.4.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.8.3 || ^2.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.4.1", - "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.5 || ^9.3.5", - "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": { - "branch-alias": { - "dev-master": "7.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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.4.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": "2021-12-06T18:43:05+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "1.5.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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/1.5.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "time": "2021-10-22T20:56:57+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.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.4.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.8 || ^9.3.10" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "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.1.0" - }, - "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": "2021-10-06T17:43:30+00:00" - }, - { - "name": "laravel/framework", - "version": "v9.0.1", - "source": { - "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "shasum": "" - }, - "require": { - "doctrine/inflector": "^2.0", - "dragonmantank/cron-expression": "^3.1", - "egulias/email-validator": "^3.1", - "ext-mbstring": "*", - "ext-openssl": "*", - "laravel/serializable-closure": "^1.0", - "league/commonmark": "^2.2", - "league/flysystem": "^3.0", - "monolog/monolog": "^2.0", - "nesbot/carbon": "^2.53.1", - "php": "^8.0.2", - "psr/container": "^1.1.1|^2.0.1", - "psr/log": "^1.0|^2.0|^3.0", - "psr/simple-cache": "^1.0|^2.0|^3.0", - "ramsey/uuid": "^4.2.2", - "symfony/console": "^6.0", - "symfony/error-handler": "^6.0", - "symfony/finder": "^6.0", - "symfony/http-foundation": "^6.0", - "symfony/http-kernel": "^6.0", - "symfony/mailer": "^6.0", - "symfony/mime": "^6.0", - "symfony/process": "^6.0", - "symfony/routing": "^6.0", - "symfony/var-dumper": "^6.0", - "tijsverkoyen/css-to-inline-styles": "^2.2.2", - "vlucas/phpdotenv": "^5.4.1", - "voku/portable-ascii": "^2.0" - }, - "conflict": { - "tightenco/collect": "<5.5.33" - }, - "provide": { - "psr/container-implementation": "1.1|2.0", - "psr/simple-cache-implementation": "1.0|2.0|3.0" - }, - "replace": { - "illuminate/auth": "self.version", - "illuminate/broadcasting": "self.version", - "illuminate/bus": "self.version", - "illuminate/cache": "self.version", - "illuminate/collections": "self.version", - "illuminate/conditionable": "self.version", - "illuminate/config": "self.version", - "illuminate/console": "self.version", - "illuminate/container": "self.version", - "illuminate/contracts": "self.version", - "illuminate/cookie": "self.version", - "illuminate/database": "self.version", - "illuminate/encryption": "self.version", - "illuminate/events": "self.version", - "illuminate/filesystem": "self.version", - "illuminate/hashing": "self.version", - "illuminate/http": "self.version", - "illuminate/log": "self.version", - "illuminate/macroable": "self.version", - "illuminate/mail": "self.version", - "illuminate/notifications": "self.version", - "illuminate/pagination": "self.version", - "illuminate/pipeline": "self.version", - "illuminate/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": { - "aws/aws-sdk-php": "^3.198.1", - "doctrine/dbal": "^2.13.3|^3.1.4", - "fakerphp/faker": "^1.9.2", - "guzzlehttp/guzzle": "^7.2", - "league/flysystem-aws-s3-v3": "^3.0", - "league/flysystem-ftp": "^3.0", - "league/flysystem-sftp-v3": "^3.0", - "mockery/mockery": "^1.4.4", - "orchestra/testbench-core": "^7.0", - "pda/pheanstalk": "^4.0", - "phpstan/phpstan": "^1.0", - "phpunit/phpunit": "^9.5.8", - "predis/predis": "^1.1.9", - "symfony/amazon-mailer": "^6.0", - "symfony/cache": "^6.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.198.1).", - "brianium/paratest": "Required to run tests in parallel (^6.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", - "ext-bcmath": "Required to use the multiple_of validation rule.", - "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.", - "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.2).", - "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-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", - "mockery/mockery": "Required to use mocking (^1.4.4).", - "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).", - "predis/predis": "Required to use the predis connector (^1.1.9).", - "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.0).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^6.0).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.0).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.0).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.0).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.x-dev" - } - }, - "autoload": { - "files": [ - "src/Illuminate/Collections/helpers.php", - "src/Illuminate/Events/functions.php", - "src/Illuminate/Foundation/helpers.php", - "src/Illuminate/Support/helpers.php" - ], - "psr-4": { - "Illuminate\\": "src/Illuminate/", - "Illuminate\\Support\\": [ - "src/Illuminate/Macroable/", - "src/Illuminate/Collections/", - "src/Illuminate/Conditionable/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Laravel Framework.", - "homepage": "https://laravel.com", - "keywords": [ - "framework", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2022-02-09T15:00:05+00:00" - }, - { - "name": "laravel/sanctum", - "version": "v2.14.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/sanctum.git", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/0647a87140c7522e75826cffcadb3ad6e01f71e9", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/contracts": "^6.9|^7.0|^8.0|^9.0", - "illuminate/database": "^6.9|^7.0|^8.0|^9.0", - "illuminate/support": "^6.9|^7.0|^8.0|^9.0", - "php": "^7.2|^8.0" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0", - "phpunit/phpunit": "^8.0|^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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": "2022-01-12T15:07:43+00:00" - }, - { - "name": "laravel/serializable-closure", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/serializable-closure.git", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/65c9faf50d567b65d81764a44526545689e3fe63", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "pestphp/pest": "^1.18", - "phpstan/phpstan": "^0.12.98", - "symfony/var-dumper": "^5.3" - }, - "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": "2022-02-01T16:29:39+00:00" - }, - { - "name": "laravel/tinker", - "version": "v2.7.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/tinker.git", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/5f2f9815b7631b9f586a3de7933c25f9327d4073", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073", - "shasum": "" - }, - "require": { - "illuminate/console": "^6.0|^7.0|^8.0|^9.0", - "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.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", - "phpunit/phpunit": "^8.5.8|^9.3.3" - }, - "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.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.7.0" - }, - "time": "2022-01-10T08:52:49+00:00" - }, - { - "name": "league/commonmark", - "version": "2.2.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/commonmark.git", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "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.15" - }, - "require-dev": { - "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.0", - "commonmark/commonmark.js": "0.30.0", - "composer/package-versions-deprecated": "^1.8", - "erusev/parsedown": "^1.0", - "ext-json": "*", - "github/gfm": "0.29.0", - "michelf/php-markdown": "^1.4", - "phpstan/phpstan": "^0.12.88 || ^1.0.0", - "phpunit/phpunit": "^9.5.5", - "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", - "unleashedtech/php-coding-standard": "^3.1", - "vimeo/psalm": "^4.7.3" - }, - "suggest": { - "symfony/yaml": "v2.3+ required if using the Front Matter extension" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.3-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": "2022-01-25T14:37:33+00:00" - }, - { - "name": "league/config", - "version": "v1.1.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/config.git", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/config/zipball/a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^3.0.1", - "nette/schema": "^1.2", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.90", - "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": "2021-08-14T12:15:32+00:00" - }, - { - "name": "league/flysystem", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9f8b4260031bfef5497477da53dd57b2aaff0e06", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06", - "shasum": "" - }, - "require": { - "ext-json": "*", - "league/mime-type-detection": "^1.0.0", - "php": "^8.0.2" - }, - "conflict": { - "guzzlehttp/guzzle": "<7.0", - "guzzlehttp/ringphp": "<1.1.1", - "symfony/http-client": "<5.2" - }, - "require-dev": { - "async-aws/s3": "^1.5", - "async-aws/simple-s3": "^1.0", - "aws/aws-sdk-php": "^3.198.1", - "composer/semver": "^3.0", - "ext-fileinfo": "*", - "ext-ftp": "*", - "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.5", - "google/cloud-storage": "^1.23", - "phpseclib/phpseclib": "^2.0", - "phpstan/phpstan": "^0.12.26", - "phpunit/phpunit": "^9.5.11", - "sabre/dav": "^4.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.0.3" - }, - "funding": [ - { - "url": "https://offset.earth/frankdejonge", - "type": "custom" - }, - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2022-01-31T19:41:04+00:00" - }, - { - "name": "league/mime-type-detection", - "version": "1.9.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/aa70e813a6ad3d1558fc927863d47309b4c23e69", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.2", - "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" - }, - "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.9.0" - }, - "funding": [ - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2021-11-21T11:48:40+00:00" - }, - { - "name": "monolog/monolog", - "version": "2.3.5", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd4380d6fc37626e2f799f29d91195040137eba9", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "provide": { - "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7", - "graylog2/gelf-php": "^1.4.2", - "mongodb/mongodb": "^1.8", - "php-amqplib/php-amqplib": "~2.4 || ^3", - "php-console/php-console": "^3.1.3", - "phpspec/prophecy": "^1.6.1", - "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5", - "predis/predis": "^1.1", - "rollbar/rollbar": "^1.3", - "ruflin/elastica": ">=0.90@dev", - "swiftmailer/swiftmailer": "^5.3|^6.0" - }, - "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", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "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": "2.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/2.3.5" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" - } - ], - "time": "2021-10-01T21:08:31+00:00" - }, - { - "name": "nesbot/carbon", - "version": "2.56.0", - "source": { - "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1.8 || ^8.0", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "doctrine/dbal": "^2.0 || ^3.0", - "doctrine/orm": "^2.7", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "phpmd/phpmd": "^2.9", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.54 || ^1.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.14", - "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://opencollective.com/Carbon", - "type": "open_collective" - }, - { - "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", - "type": "tidelift" - } - ], - "time": "2022-01-21T17:08:38+00:00" - }, - { - "name": "nette/schema", - "version": "v1.2.2", - "source": { - "type": "git", - "url": "https://github.com/nette/schema.git", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/9a39cef03a5b34c7de64f551538cbba05c2be5df", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df", - "shasum": "" - }, - "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": ">=7.1 <8.2" - }, - "require-dev": { - "nette/tester": "^2.3 || ^2.4", - "phpstan/phpstan-nette": "^0.12", - "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.2" - }, - "time": "2021-10-15T11:40:02+00:00" - }, - { - "name": "nette/utils", - "version": "v3.2.7", - "source": { - "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/0af4e3de4df9f1543534beab255ccf459e7a2c99", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99", - "shasum": "" - }, - "require": { - "php": ">=7.2 <8.2" - }, - "conflict": { - "nette/di": "<3.0.6" - }, - "require-dev": { - "nette/tester": "~2.0", - "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.3" - }, - "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()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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 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/v3.2.7" - }, - "time": "2022-01-24T11:29:14+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.13.2", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", - "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.13.2" - }, - "time": "2021-11-30T19:35:32+00:00" - }, - { - "name": "phpoption/phpoption", - "version": "1.8.1", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-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.8.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", - "type": "tidelift" - } - ], - "time": "2021-12-04T23:24:31+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.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.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": "http://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/tree/master" - }, - "time": "2020-06-29T06:28:15+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.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": "http://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/master" - }, - "time": "2019-04-30T12:38:16+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.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": "http://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/master" - }, - "time": "2016-08-06T14:39: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.1", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "570292577277f06f590635381a7f761a6cf4f026" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/570292577277f06f590635381a7f761a6cf4f026", - "reference": "570292577277f06f590635381a7f761a6cf4f026", - "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" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "3.17.05.02" - }, - "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.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." - }, - "bin": [ - "bin/psysh" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "0.11.x-dev" - } - }, - "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.1" - }, - "time": "2022-01-03T13:58:38+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": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/ramsey/collection.git", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "shasum": "" - }, - "require": { - "php": "^7.3 || ^8", - "symfony/polyfill-php81": "^1.23" - }, - "require-dev": { - "captainhook/captainhook": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "ergebnis/composer-normalize": "^2.6", - "fakerphp/faker": "^1.5", - "hamcrest/hamcrest-php": "^2", - "jangregor/phpstan-prophecy": "^0.8", - "mockery/mockery": "^1.3", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1", - "phpstan/phpstan": "^0.12.32", - "phpstan/phpstan-mockery": "^0.12.5", - "phpstan/phpstan-phpunit": "^0.12.11", - "phpunit/phpunit": "^8.5 || ^9", - "psy/psysh": "^0.10.4", - "slevomat/coding-standard": "^6.3", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.4" - }, - "type": "library", - "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/1.2.2" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "time": "2021-10-10T03:01:02+00:00" - }, - { - "name": "ramsey/uuid", - "version": "4.2.3", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "shasum": "" - }, - "require": { - "brick/math": "^0.8 || ^0.9", - "ext-json": "*", - "php": "^7.2 || ^8.0", - "ramsey/collection": "^1.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php80": "^1.14" - }, - "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", - "moontoast/math": "^1.1", - "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.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-mockery": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^8.5 || ^9", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" - }, - "suggest": { - "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-ctype": "Enables faster processing of character classification using ctype functions.", - "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": { - "branch-alias": { - "dev-main": "4.x-dev" - }, - "captainhook": { - "force-install": true - } - }, - "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "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.2.3" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2021-09-25T23:10:38+00:00" - }, - { - "name": "symfony/console", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/22e8efd019c3270c4f79376234a3f8752cd25490", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.4|^6.0" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/css-selector", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/1955d595c12c111629cc814d3f2a2ff13580508a", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a", - "shasum": "" - }, - "require": { - "php": ">=8.0.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/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-11-01T23:48:49+00:00" - }, - { - "name": "symfony/error-handler", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/20343b3bad7ebafa38138ddcb97290a24722b57b", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" - }, - "bin": [ - "Resources/bin/patch-type-declarations" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to manage errors and ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6472ea2dd415e925b90ca82be64b8bc6157f3934", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/event-dispatcher-contracts": "^2|^3" - }, - "conflict": { - "symfony/dependency-injection": "<5.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^5.4|^6.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/aa5422287b75594b90ee9cd807caf8f0df491385", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/event-dispatcher": "^1" - }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-07-15T12:33:35+00:00" - }, - { - "name": "symfony/finder", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/8661b74dbabc23223f38c9b99d3f8ade71170430", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ad157299ced81a637fade1efcadd688d6deba5c1", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1" - }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/cache": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0" - }, - "suggest": { - "symfony/mime": "To use the file extension guesser" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v6.0.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/error-handler": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", - "symfony/twig-bridge": "<5.4", - "symfony/validator": "<5.4", - "twig/twig": "<2.13" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/process": "^5.4|^6.0", - "symfony/routing": "^5.4|^6.0", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-29T18:12:46+00:00" - }, - { - "name": "symfony/mailer", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mailer.git", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "shasum": "" - }, - "require": { - "egulias/email-validator": "^2.1.10|^3", - "php": ">=8.0.2", - "psr/event-dispatcher": "^1", - "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3" - }, - "conflict": { - "symfony/http-kernel": "<5.4" - }, - "require-dev": { - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/messenger": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/mime", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/2cd9601efd040e56f43360daa68f3c6b0534923a", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "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" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "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.24.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": "2021-10-20T20:35:02+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-11-23T21:10:46+00:00" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44", - "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.23-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.24.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": "2021-09-14T14:02:44+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.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": "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.24.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": "2021-11-30T18:21:41+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-05-27T09:17:38+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:33+00:00" - }, - { - "name": "symfony/polyfill-php81", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:11+00:00" - }, - { - "name": "symfony/process", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/298ed357274c1868c20a0061df256a1250a6c4af", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/routing", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/yaml": "<5.4" - }, - "require-dev": { - "doctrine/annotations": "^1.12", - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/36715ebf9fb9db73db0cb24263c79077c6fe8603", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/container": "^2.0" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "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.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": "2021-11-04T17:53:12+00:00" - }, - { - "name": "symfony/string", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/522144f0c4c004c80d56fa47e40e17028e2eefc2", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.0" - }, - "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/translation-contracts": "^2.0|^3.0", - "symfony/var-exporter": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "files": [ - "Resources/functions.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 an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/translation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/71bb15335798f8c4da110911bcf2d2fead7a430d", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.3|^3.0" - }, - "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" - }, - "provide": { - "symfony/translation-implementation": "2.3|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-07T00:29:03+00:00" - }, - { - "name": "symfony/translation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "suggest": { - "symfony/translation-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - } - }, - "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.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": "2021-09-07T12:43:40+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7b701676fc64f9ef11f9b4870f16b48f66be4834", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<5.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-17T16:30:44+00:00" - }, - { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.4", - "source": { - "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" - } - ], - "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", - "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "support": { - "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" - }, - "time": "2021-12-08T09:12:39+00:00" - }, - { - "name": "vlucas/phpdotenv", - "version": "v5.4.1", - "source": { - "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", - "shasum": "" - }, - "require": { - "ext-pcre": "*", - "graham-campbell/result-type": "^1.0.2", - "php": "^7.1.3 || ^8.0", - "phpoption/phpoption": "^1.8", - "symfony/polyfill-ctype": "^1.23", - "symfony/polyfill-mbstring": "^1.23.1", - "symfony/polyfill-php80": "^1.23.1" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" - }, - "suggest": { - "ext-filter": "Required to use the boolean validator." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.4-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.4.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", - "type": "tidelift" - } - ], - "time": "2021-12-12T23:22:04+00:00" - }, - { - "name": "voku/portable-ascii", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/voku/portable-ascii.git", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/9bd89e83cecdf8c37b64909454249eaed98b2c89", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89", - "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.0" - }, - "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-01-24T18:59:03+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "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.10.0" - }, - "time": "2021-03-09T10:59:23+00:00" - } - ], - "packages-dev": [ - { - "name": "doctrine/instantiator", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.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%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2020-11-10T18:47:58+00:00" - }, - { - "name": "facade/ignition-contracts", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/facade/ignition-contracts.git", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^v2.15.8", - "phpunit/phpunit": "^9.3.11", - "vimeo/psalm": "^3.17.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Facade\\IgnitionContracts\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://flareapp.io", - "role": "Developer" - } - ], - "description": "Solution contracts for Ignition", - "homepage": "https://github.com/facade/ignition-contracts", - "keywords": [ - "contracts", - "flare", - "ignition" - ], - "support": { - "issues": "https://github.com/facade/ignition-contracts/issues", - "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" - }, - "time": "2020-10-16T08:27:54+00:00" - }, - { - "name": "fakerphp/faker", - "version": "v1.19.0", - "source": { - "type": "git", - "url": "https://github.com/FakerPHP/Faker.git", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^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": "*", - "symfony/phpunit-bridge": "^4.4 || ^5.2" - }, - "suggest": { - "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", - "ext-curl": "Required by Faker\\Provider\\Image to download images.", - "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", - "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.19-dev" - } - }, - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "François Zaninotto" - } - ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], - "support": { - "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0" - }, - "time": "2022-02-02T17:38:57+00:00" - }, - { - "name": "filp/whoops", - "version": "2.14.5", - "source": { - "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "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.14.5" - }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "time": "2022-01-07T12:00:00+00:00" - }, - { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "shasum": "" - }, - "require": { - "php": "^5.3|^7.0|^8.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" - }, - "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "classmap": [ - "hamcrest" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "This is the PHP port of Hamcrest Matchers", - "keywords": [ - "test" - ], - "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" - }, - "time": "2020-07-09T08:09:16+00:00" - }, - { - "name": "laravel/sail", - "version": "v1.13.2", - "source": { - "type": "git", - "url": "https://github.com/laravel/sail.git", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.0|^9.0", - "illuminate/contracts": "^8.0|^9.0", - "illuminate/support": "^8.0|^9.0", - "php": "^7.3|^8.0" - }, - "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": "2022-02-08T14:14:12+00:00" - }, - { - "name": "mockery/mockery", - "version": "1.5.0", - "source": { - "type": "git", - "url": "https://github.com/mockery/mockery.git", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "shasum": "" - }, - "require": { - "hamcrest/hamcrest-php": "^2.0.1", - "lib-pcre": ">=7.0", - "php": "^7.3 || ^8.0" - }, - "conflict": { - "phpunit/phpunit": "<8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-0": { - "Mockery": "library/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" - } - ], - "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": { - "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.5.0" - }, - "time": "2022-01-20T13:18:17+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.10.2", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "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.10.2" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2020-11-13T09:40:50+00:00" - }, - { - "name": "nunomaduro/collision", - "version": "v6.1.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/collision.git", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "shasum": "" - }, - "require": { - "facade/ignition-contracts": "^1.0.2", - "filp/whoops": "^2.14.5", - "php": "^8.0.0", - "symfony/console": "^6.0.2" - }, - "require-dev": { - "brianium/paratest": "^6.4.1", - "laravel/framework": "^9.0", - "nunomaduro/larastan": "^1.0.2", - "nunomaduro/mock-final-classes": "^1.1.0", - "orchestra/testbench": "^7.0.0", - "phpunit/phpunit": "^9.5.11" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "6.x-dev" - }, - "laravel": { - "providers": [ - "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" - ] - } - }, - "autoload": { - "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": "2022-01-18T17:49:08+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.1.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/15a90844ad40f127afd244c0cad228de2a80052a", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a", - "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.1.1" - }, - "time": "2022-02-07T21:56:48+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.6.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "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.6.0" - }, - "time": "2022-01-04T19:58:01+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" - }, - "time": "2021-12-08T12:19:24+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "9.2.10", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d5850aaf931743067f4bfc1ae4cbd06468400687", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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 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", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.10" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-05T09:12:13+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "3.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-02T12:48:52+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "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/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:58:55+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T05:33:50+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.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/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:16:10+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "9.5.13", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/597cb647654ede35e43b137926dfdfef0fb11743", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.3.1", - "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": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.7", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", - "sebastian/version": "^3.0.2" - }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.13" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-01-24T07:33:35+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:08:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "1.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:08:54+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:30:19+00:00" - }, - { - "name": "sebastian/comparator", - "version": "4.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:49:45+00:00" - }, - { - "name": "sebastian/complexity", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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 calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:52:27+00:00" - }, - { - "name": "sebastian/diff", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:10:38+00:00" - }, - { - "name": "sebastian/environment", - "version": "5.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-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": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:52:38+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "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", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-11-11T14:18:36+00:00" - }, - { - "name": "sebastian/global-state", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-11T13:31:12+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-28T06:42:11+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "http://www.github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:17:30+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:45:17+00:00" - }, - { - "name": "sebastian/type", - "version": "2.3.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-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/2.3.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-15T12:49:02+00:00" - }, - { - "name": "sebastian/version", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:39:44+00:00" - }, - { - "name": "spatie/backtrace", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/backtrace.git", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "ext-json": "*", - "phpunit/phpunit": "^9.3", - "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": { - "issues": "https://github.com/spatie/backtrace/issues", - "source": "https://github.com/spatie/backtrace/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/sponsors/spatie", - "type": "github" - }, - { - "url": "https://spatie.be/open-source/support-us", - "type": "other" - } - ], - "time": "2021-11-09T10:57:15+00:00" - }, - { - "name": "spatie/flare-client-php", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/flare-client-php.git", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "shasum": "" - }, - "require": { - "illuminate/pipeline": "^8.0|^9.0", - "php": "^8.0", - "spatie/backtrace": "^1.2", - "symfony/http-foundation": "^5.0|^6.0", - "symfony/mime": "^5.2|^6.0", - "symfony/process": "^5.2|^6.0", - "symfony/var-dumper": "^5.2|^6.0" - }, - "require-dev": { - "dms/phpunit-arraysubset-asserts": "^0.3.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/phpunit-snapshot-assertions": "^4.0" - }, - "type": "library", - "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.0.1" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2022-02-04T15:21:00+00:00" - }, - { - "name": "spatie/ignition", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/spatie/ignition.git", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/d2d5ba823af3004268556e87dfc94449e4159f5a", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "monolog/monolog": "^2.0", - "php": "^8.0", - "spatie/flare-client-php": "^1.0", - "symfony/console": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "mockery/mockery": "^1.4", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/ray": "^1.32", - "symfony/process": "^5.4|^6.0" - }, - "type": "library", - "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": "2022-01-19T12:57:41+00:00" - }, - { - "name": "spatie/laravel-ignition", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/68250225a9f83b086462c2af1b1139dfde48fbd2", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*", - "illuminate/support": "^8.77|^9.0", - "monolog/monolog": "^2.3", - "php": "^8.0", - "spatie/flare-client-php": "^1.0.1", - "spatie/ignition": "^1.0", - "symfony/console": "^5.0|^6.0", - "symfony/var-dumper": "^5.0|^6.0" - }, - "require-dev": { - "filp/whoops": "^2.14", - "livewire/livewire": "^2.8|dev-develop", - "mockery/mockery": "^1.4", - "nunomaduro/larastan": "^1.0", - "orchestra/testbench": "^6.23|^7.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/laravel-ray": "^1.27" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Spatie\\LaravelIgnition\\IgnitionServiceProvider" - ], - "aliases": { - "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" - } - } - }, - "autoload": { - "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": "2022-02-04T15:25:56+00:00" - }, - { - "name": "squizlabs/php_codesniffer", - "version": "3.6.2", - "source": { - "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", - "shasum": "" - }, - "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.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": "lead" - } - ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", - "keywords": [ - "phpcs", - "standards" - ], - "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" - }, - "time": "2021-12-12T21:44:58+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2021-07-28T10:34:58+00:00" - } - ], - "aliases": [], - "minimum-stability": "dev", - "stability-flags": [], - "prefer-stable": true, - "prefer-lowest": false, - "platform": { - "php": "^8.0" - }, - "platform-dev": [], - "plugin-api-version": "2.1.0" -} diff --git a/Chapter20/onlineStore/config/app.php b/Chapter20/onlineStore/config/app.php deleted file mode 100644 index 1941d7c..0000000 --- a/Chapter20/onlineStore/config/app.php +++ /dev/null @@ -1,197 +0,0 @@ - env('APP_NAME', 'Laravel'), - - /* - |-------------------------------------------------------------------------- - | Application Environment - |-------------------------------------------------------------------------- - | - | This value determines the "environment" your application is currently - | running in. This may determine how you prefer to configure various - | services the application utilizes. Set this in your ".env" file. - | - */ - - 'env' => env('APP_ENV', 'production'), - - /* - |-------------------------------------------------------------------------- - | Application Debug Mode - |-------------------------------------------------------------------------- - | - | When your application is in debug mode, detailed error messages with - | stack traces will be shown on every error that occurs within your - | application. If disabled, a simple generic error page is shown. - | - */ - - 'debug' => (bool) env('APP_DEBUG', false), - - /* - |-------------------------------------------------------------------------- - | Application URL - |-------------------------------------------------------------------------- - | - | This URL is used by the console to properly generate URLs when using - | the Artisan command line tool. You should set this to the root of - | your application so that it is used when running Artisan tasks. - | - */ - - 'url' => env('APP_URL', 'http://localhost'), - - 'asset_url' => env('ASSET_URL', null), - - /* - |-------------------------------------------------------------------------- - | 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', - - /* - |-------------------------------------------------------------------------- - | 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' => [ - - /* - * Laravel Framework Service Providers... - */ - Illuminate\Auth\AuthServiceProvider::class, - Illuminate\Broadcasting\BroadcastServiceProvider::class, - Illuminate\Bus\BusServiceProvider::class, - Illuminate\Cache\CacheServiceProvider::class, - Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, - Illuminate\Cookie\CookieServiceProvider::class, - Illuminate\Database\DatabaseServiceProvider::class, - Illuminate\Encryption\EncryptionServiceProvider::class, - Illuminate\Filesystem\FilesystemServiceProvider::class, - Illuminate\Foundation\Providers\FoundationServiceProvider::class, - Illuminate\Hashing\HashServiceProvider::class, - Illuminate\Mail\MailServiceProvider::class, - Illuminate\Notifications\NotificationServiceProvider::class, - Illuminate\Pagination\PaginationServiceProvider::class, - Illuminate\Pipeline\PipelineServiceProvider::class, - Illuminate\Queue\QueueServiceProvider::class, - Illuminate\Redis\RedisServiceProvider::class, - Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, - Illuminate\Session\SessionServiceProvider::class, - Illuminate\Translation\TranslationServiceProvider::class, - Illuminate\Validation\ValidationServiceProvider::class, - Illuminate\View\ViewServiceProvider::class, - - /* - * 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, - - ], - - /* - |-------------------------------------------------------------------------- - | 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([ - // ... - ])->toArray(), - -]; diff --git a/Chapter20/onlineStore/config/auth.php b/Chapter20/onlineStore/config/auth.php deleted file mode 100644 index d8c6cee..0000000 --- a/Chapter20/onlineStore/config/auth.php +++ /dev/null @@ -1,111 +0,0 @@ - [ - '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 expire 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. - | - */ - - 'passwords' => [ - 'users' => [ - 'provider' => 'users', - 'table' => 'password_resets', - '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/Chapter20/onlineStore/config/broadcasting.php b/Chapter20/onlineStore/config/broadcasting.php deleted file mode 100644 index 67fcbbd..0000000 --- a/Chapter20/onlineStore/config/broadcasting.php +++ /dev/null @@ -1,67 +0,0 @@ - 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'), - 'useTLS' => true, - ], - '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/Chapter20/onlineStore/config/cache.php b/Chapter20/onlineStore/config/cache.php deleted file mode 100644 index 8736c7a..0000000 --- a/Chapter20/onlineStore/config/cache.php +++ /dev/null @@ -1,110 +0,0 @@ - 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'), - ], - - '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 a RAM based store such as APC or Memcached, there might - | be other applications utilizing the same cache. So, we'll specify a - | value to get prefixed to all our keys so we can avoid collisions. - | - */ - - 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'), - -]; diff --git a/Chapter20/onlineStore/config/cors.php b/Chapter20/onlineStore/config/cors.php deleted file mode 100644 index 8a39e6d..0000000 --- a/Chapter20/onlineStore/config/cors.php +++ /dev/null @@ -1,34 +0,0 @@ - ['api/*', 'sanctum/csrf-cookie'], - - 'allowed_methods' => ['*'], - - 'allowed_origins' => ['*'], - - 'allowed_origins_patterns' => [], - - 'allowed_headers' => ['*'], - - 'exposed_headers' => [], - - 'max_age' => 0, - - 'supports_credentials' => false, - -]; diff --git a/Chapter20/onlineStore/config/database.php b/Chapter20/onlineStore/config/database.php deleted file mode 100644 index 0faebae..0000000 --- a/Chapter20/onlineStore/config/database.php +++ /dev/null @@ -1,147 +0,0 @@ - env('DB_CONNECTION', 'mysql'), - - /* - |-------------------------------------------------------------------------- - | Database Connections - |-------------------------------------------------------------------------- - | - | Here are each of the database connections setup for your application. - | Of course, examples of configuring each database platform that is - | supported by Laravel is shown below to make development simple. - | - | - | All database work in Laravel is done through the PHP PDO facilities - | so make sure you have the driver for your particular database of - | choice installed on your machine before you begin development. - | - */ - - 'connections' => [ - - 'sqlite' => [ - 'driver' => 'sqlite', - 'url' => env('DATABASE_URL'), - 'database' => env('DB_DATABASE', database_path('database.sqlite')), - 'prefix' => '', - 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), - ], - - 'mysql' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '3306'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'unix_socket' => env('DB_SOCKET', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - 'pgsql' => [ - 'driver' => 'pgsql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '5432'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - 'search_path' => 'public', - 'sslmode' => 'prefer', - ], - - 'sqlsrv' => [ - 'driver' => 'sqlsrv', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', 'localhost'), - 'port' => env('DB_PORT', '1433'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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'), - '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'), - 'password' => env('REDIS_PASSWORD'), - 'port' => env('REDIS_PORT', '6379'), - 'database' => env('REDIS_CACHE_DB', '1'), - ], - - ], - -]; diff --git a/Chapter20/onlineStore/config/filesystems.php b/Chapter20/onlineStore/config/filesystems.php deleted file mode 100644 index cf5abce..0000000 --- a/Chapter20/onlineStore/config/filesystems.php +++ /dev/null @@ -1,73 +0,0 @@ - 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 setup for each driver as an example of the required options. - | - | Supported Drivers: "local", "ftp", "sftp", "s3" - | - */ - - 'disks' => [ - - 'local' => [ - 'driver' => 'local', - 'root' => storage_path('app'), - ], - - 'public' => [ - 'driver' => 'local', - 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', - 'visibility' => 'public', - ], - - '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), - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter20/onlineStore/config/hashing.php b/Chapter20/onlineStore/config/hashing.php deleted file mode 100644 index bcd3be4..0000000 --- a/Chapter20/onlineStore/config/hashing.php +++ /dev/null @@ -1,52 +0,0 @@ - '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/Chapter20/onlineStore/config/logging.php b/Chapter20/onlineStore/config/logging.php deleted file mode 100644 index fefe088..0000000 --- a/Chapter20/onlineStore/config/logging.php +++ /dev/null @@ -1,119 +0,0 @@ - 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' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), - - /* - |-------------------------------------------------------------------------- - | 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'), - ], - - 'daily' => [ - 'driver' => 'daily', - 'path' => storage_path('logs/laravel.log'), - 'level' => env('LOG_LEVEL', 'debug'), - 'days' => 14, - ], - - 'slack' => [ - 'driver' => 'slack', - 'url' => env('LOG_SLACK_WEBHOOK_URL'), - 'username' => 'Laravel Log', - 'emoji' => ':boom:', - 'level' => env('LOG_LEVEL', 'critical'), - ], - - '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'), - ], - ], - - 'stderr' => [ - 'driver' => 'monolog', - 'level' => env('LOG_LEVEL', 'debug'), - 'handler' => StreamHandler::class, - 'formatter' => env('LOG_STDERR_FORMATTER'), - 'with' => [ - 'stream' => 'php://stderr', - ], - ], - - 'syslog' => [ - 'driver' => 'syslog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'errorlog' => [ - 'driver' => 'errorlog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'null' => [ - 'driver' => 'monolog', - 'handler' => NullHandler::class, - ], - - 'emergency' => [ - 'path' => storage_path('logs/laravel.log'), - ], - ], - -]; diff --git a/Chapter20/onlineStore/config/mail.php b/Chapter20/onlineStore/config/mail.php deleted file mode 100644 index 87b6fe3..0000000 --- a/Chapter20/onlineStore/config/mail.php +++ /dev/null @@ -1,117 +0,0 @@ - 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", - | "postmark", "log", "array", "failover" - | - */ - - 'mailers' => [ - 'smtp' => [ - 'transport' => 'smtp', - '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, - ], - - 'ses' => [ - 'transport' => 'ses', - ], - - 'mailgun' => [ - 'transport' => 'mailgun', - ], - - 'postmark' => [ - 'transport' => 'postmark', - ], - - 'sendmail' => [ - 'transport' => 'sendmail', - 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -t -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/Chapter20/onlineStore/config/queue.php b/Chapter20/onlineStore/config/queue.php deleted file mode 100644 index 25ea5a8..0000000 --- a/Chapter20/onlineStore/config/queue.php +++ /dev/null @@ -1,93 +0,0 @@ - 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, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter20/onlineStore/config/sanctum.php b/Chapter20/onlineStore/config/sanctum.php deleted file mode 100644 index 9281c92..0000000 --- a/Chapter20/onlineStore/config/sanctum.php +++ /dev/null @@ -1,65 +0,0 @@ - explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( - '%s%s', - 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', - env('APP_URL') ? ','.parse_url(env('APP_URL'), PHP_URL_HOST) : '' - ))), - - /* - |-------------------------------------------------------------------------- - | 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/Chapter20/onlineStore/config/services.php b/Chapter20/onlineStore/config/services.php deleted file mode 100644 index 2a1d616..0000000 --- a/Chapter20/onlineStore/config/services.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - 'domain' => env('MAILGUN_DOMAIN'), - 'secret' => env('MAILGUN_SECRET'), - 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), - ], - - '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/Chapter20/onlineStore/config/session.php b/Chapter20/onlineStore/config/session.php deleted file mode 100644 index 8fed97c..0000000 --- a/Chapter20/onlineStore/config/session.php +++ /dev/null @@ -1,201 +0,0 @@ - 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/Chapter20/onlineStore/config/view.php b/Chapter20/onlineStore/config/view.php deleted file mode 100644 index 22b8a18..0000000 --- a/Chapter20/onlineStore/config/view.php +++ /dev/null @@ -1,36 +0,0 @@ - [ - 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/Chapter20/onlineStore/database/.gitignore b/Chapter20/onlineStore/database/.gitignore deleted file mode 100644 index 9b19b93..0000000 --- a/Chapter20/onlineStore/database/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.sqlite* diff --git a/Chapter20/onlineStore/database/factories/UserFactory.php b/Chapter20/onlineStore/database/factories/UserFactory.php deleted file mode 100644 index d6ca926..0000000 --- a/Chapter20/onlineStore/database/factories/UserFactory.php +++ /dev/null @@ -1,42 +0,0 @@ - - */ -class UserFactory extends Factory -{ - /** - * Define the model's default state. - * - * @return array - */ - public function definition() - { - return [ - 'name' => $this->faker->name(), - 'email' => $this->faker->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. - * - * @return \Illuminate\Database\Eloquent\Factories\Factory - */ - public function unverified() - { - return $this->state(function (array $attributes) { - return [ - 'email_verified_at' => null, - ]; - }); - } -} diff --git a/Chapter20/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php b/Chapter20/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php deleted file mode 100644 index cf6b776..0000000 --- a/Chapter20/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->string('name'); - $table->string('email')->unique(); - $table->timestamp('email_verified_at')->nullable(); - $table->string('password'); - $table->rememberToken(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('users'); - } -}; diff --git a/Chapter20/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php b/Chapter20/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php deleted file mode 100644 index fcacb80..0000000 --- a/Chapter20/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php +++ /dev/null @@ -1,32 +0,0 @@ -string('email')->index(); - $table->string('token'); - $table->timestamp('created_at')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('password_resets'); - } -}; diff --git a/Chapter20/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/Chapter20/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php deleted file mode 100644 index 1719198..0000000 --- a/Chapter20/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php +++ /dev/null @@ -1,36 +0,0 @@ -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. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('failed_jobs'); - } -}; diff --git a/Chapter20/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/Chapter20/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php deleted file mode 100644 index fd235f8..0000000 --- a/Chapter20/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->morphs('tokenable'); - $table->string('name'); - $table->string('token', 64)->unique(); - $table->text('abilities')->nullable(); - $table->timestamp('last_used_at')->nullable(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('personal_access_tokens'); - } -}; diff --git a/Chapter20/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php b/Chapter20/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php deleted file mode 100644 index 2eecdc2..0000000 --- a/Chapter20/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php +++ /dev/null @@ -1,35 +0,0 @@ -id(); - $table->string('name'); - $table->text('description'); - $table->string('image'); - $table->integer('price'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('products'); - } -}; diff --git a/Chapter20/onlineStore/database/seeders/DatabaseSeeder.php b/Chapter20/onlineStore/database/seeders/DatabaseSeeder.php deleted file mode 100644 index 71f673f..0000000 --- a/Chapter20/onlineStore/database/seeders/DatabaseSeeder.php +++ /dev/null @@ -1,19 +0,0 @@ -create(); - } -} diff --git a/Chapter20/onlineStore/lang/en.json b/Chapter20/onlineStore/lang/en.json deleted file mode 100644 index 577680d..0000000 --- a/Chapter20/onlineStore/lang/en.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "The :attribute must contain at least one letter.": "The :attribute must contain at least one letter.", - "The :attribute must contain at least one number.": "The :attribute must contain at least one number.", - "The :attribute must contain at least one symbol.": "The :attribute must contain at least one symbol.", - "The :attribute must contain at least one uppercase and one lowercase letter.": "The :attribute must contain at least one uppercase and one lowercase letter.", - "The given :attribute has appeared in a data leak. Please choose a different :attribute.": "The given :attribute has appeared in a data leak. Please choose a different :attribute." -} diff --git a/Chapter20/onlineStore/lang/en/auth.php b/Chapter20/onlineStore/lang/en/auth.php deleted file mode 100644 index 6598e2c..0000000 --- a/Chapter20/onlineStore/lang/en/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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/Chapter20/onlineStore/lang/en/pagination.php b/Chapter20/onlineStore/lang/en/pagination.php deleted file mode 100644 index d481411..0000000 --- a/Chapter20/onlineStore/lang/en/pagination.php +++ /dev/null @@ -1,19 +0,0 @@ - '« Previous', - 'next' => 'Next »', - -]; diff --git a/Chapter20/onlineStore/lang/en/passwords.php b/Chapter20/onlineStore/lang/en/passwords.php deleted file mode 100644 index 2345a56..0000000 --- a/Chapter20/onlineStore/lang/en/passwords.php +++ /dev/null @@ -1,22 +0,0 @@ - '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/Chapter20/onlineStore/lang/en/validation.php b/Chapter20/onlineStore/lang/en/validation.php deleted file mode 100644 index 783003c..0000000 --- a/Chapter20/onlineStore/lang/en/validation.php +++ /dev/null @@ -1,163 +0,0 @@ - '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' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - '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' => [ - 'numeric' => 'The :attribute must be greater than :value.', - 'file' => 'The :attribute must be greater than :value kilobytes.', - 'string' => 'The :attribute must be greater than :value characters.', - 'array' => 'The :attribute must have more than :value items.', - ], - 'gte' => [ - 'numeric' => 'The :attribute must be greater than or equal to :value.', - 'file' => 'The :attribute must be greater than or equal to :value kilobytes.', - 'string' => 'The :attribute must be greater than or equal to :value characters.', - 'array' => 'The :attribute must have :value items or more.', - ], - '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' => [ - 'numeric' => 'The :attribute must be less than :value.', - 'file' => 'The :attribute must be less than :value kilobytes.', - 'string' => 'The :attribute must be less than :value characters.', - 'array' => 'The :attribute must have less than :value items.', - ], - 'lte' => [ - 'numeric' => 'The :attribute must be less than or equal to :value.', - 'file' => 'The :attribute must be less than or equal to :value kilobytes.', - 'string' => 'The :attribute must be less than or equal to :value characters.', - 'array' => 'The :attribute must not have more than :value items.', - ], - 'mac_address' => 'The :attribute must be a valid MAC address.', - 'max' => [ - 'numeric' => 'The :attribute must not be greater than :max.', - 'file' => 'The :attribute must not be greater than :max kilobytes.', - 'string' => 'The :attribute must not be greater than :max characters.', - 'array' => 'The :attribute must not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - '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.', - 'password' => 'The password is incorrect.', - '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' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - '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/Chapter20/onlineStore/package.json b/Chapter20/onlineStore/package.json deleted file mode 100644 index 7a9aecd..0000000 --- a/Chapter20/onlineStore/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "private": true, - "scripts": { - "dev": "npm run development", - "development": "mix", - "watch": "mix watch", - "watch-poll": "mix watch -- --watch-options-poll=1000", - "hot": "mix watch --hot", - "prod": "npm run production", - "production": "mix --production" - }, - "devDependencies": { - "axios": "^0.25", - "laravel-mix": "^6.0.6", - "lodash": "^4.17.19", - "postcss": "^8.1.14" - } -} diff --git a/Chapter20/onlineStore/phpcs.xml b/Chapter20/onlineStore/phpcs.xml deleted file mode 100644 index a1cf2b6..0000000 --- a/Chapter20/onlineStore/phpcs.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - The coding standard for the Online Store project - - app/ - config/ - database/ - routes/ - */migrations/* - diff --git a/Chapter20/onlineStore/phpunit.xml b/Chapter20/onlineStore/phpunit.xml deleted file mode 100644 index 2ac86a1..0000000 --- a/Chapter20/onlineStore/phpunit.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - ./tests/Unit - - - ./tests/Feature - - - - - ./app - - - - - - - - - - - - - - diff --git a/Chapter20/onlineStore/public/.htaccess b/Chapter20/onlineStore/public/.htaccess deleted file mode 100644 index 3aec5e2..0000000 --- a/Chapter20/onlineStore/public/.htaccess +++ /dev/null @@ -1,21 +0,0 @@ - - - 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/Chapter20/onlineStore/public/css/admin.css b/Chapter20/onlineStore/public/css/admin.css deleted file mode 100644 index d9495a1..0000000 --- a/Chapter20/onlineStore/public/css/admin.css +++ /dev/null @@ -1,33 +0,0 @@ -.copyright { - background-color: #1a252f; -} - -.fixed { - -ms-flex: 0 0 250px; - flex: 0 0 250px; -} - -.content-grey { - background-color: #f8f9fc; -} - -hr { - margin-top: 0.8em; - margin-bottom: 0.8em; -} - -.img-profile { - height: 2rem; - width: 2rem; -} - -.profile-font { - color: #858796 !important; - font-size: 80%; - font-weight: 400; -} - -.card-header { - background-color: #f8f9fc; - border-bottom: 1px solid #e3e6f0; -} diff --git a/Chapter20/onlineStore/public/css/app.css b/Chapter20/onlineStore/public/css/app.css deleted file mode 100644 index cabac36..0000000 --- a/Chapter20/onlineStore/public/css/app.css +++ /dev/null @@ -1,20 +0,0 @@ -.bg-secondary { - background-color: #2c3e50 !important; -} - -.copyright { - background-color: #1a252f; -} - -.bg-primary { - background-color: #1abc9c !important; -} - -nav{ - font-weight: 700; -} - -.img-card{ - height: 18vw; - object-fit: cover; -} diff --git a/Chapter20/onlineStore/public/favicon.ico b/Chapter20/onlineStore/public/favicon.ico deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter20/onlineStore/public/img/game.png b/Chapter20/onlineStore/public/img/game.png deleted file mode 100644 index 85420e8bbc16098bf26b4ee63bde0e91a19d1f2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25896 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 cz>% diff --git a/Chapter20/onlineStore/public/img/safe.png b/Chapter20/onlineStore/public/img/safe.png deleted file mode 100644 index 445942c707af53210931f9f4f99f6d3cb69e5d89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19240 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
    w==XB0?3|p=#`o%NsudE(E-U#KS3Snw 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 o>ir+C;RN10sIS0&a;p - - - - - - - - - - - - - - - - - - diff --git a/Chapter20/onlineStore/public/index.php b/Chapter20/onlineStore/public/index.php deleted file mode 100644 index 1d69f3a..0000000 --- a/Chapter20/onlineStore/public/index.php +++ /dev/null @@ -1,55 +0,0 @@ -make(Kernel::class); - -$response = $kernel->handle( - $request = Request::capture() -)->send(); - -$kernel->terminate($request, $response); diff --git a/Chapter20/onlineStore/public/robots.txt b/Chapter20/onlineStore/public/robots.txt deleted file mode 100644 index eb05362..0000000 --- a/Chapter20/onlineStore/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: diff --git a/Chapter20/onlineStore/resources/css/app.css b/Chapter20/onlineStore/resources/css/app.css deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter20/onlineStore/resources/js/app.js b/Chapter20/onlineStore/resources/js/app.js deleted file mode 100644 index 40c55f6..0000000 --- a/Chapter20/onlineStore/resources/js/app.js +++ /dev/null @@ -1 +0,0 @@ -require('./bootstrap'); diff --git a/Chapter20/onlineStore/resources/js/bootstrap.js b/Chapter20/onlineStore/resources/js/bootstrap.js deleted file mode 100644 index 6922577..0000000 --- a/Chapter20/onlineStore/resources/js/bootstrap.js +++ /dev/null @@ -1,28 +0,0 @@ -window._ = require('lodash'); - -/** - * 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 = require('axios'); - -window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; - -/** - * 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'; - -// window.Pusher = require('pusher-js'); - -// window.Echo = new Echo({ -// broadcaster: 'pusher', -// key: process.env.MIX_PUSHER_APP_KEY, -// cluster: process.env.MIX_PUSHER_APP_CLUSTER, -// forceTLS: true -// }); diff --git a/Chapter20/onlineStore/resources/views/admin/home/index.blade.php b/Chapter20/onlineStore/resources/views/admin/home/index.blade.php deleted file mode 100644 index a2b4868..0000000 --- a/Chapter20/onlineStore/resources/views/admin/home/index.blade.php +++ /dev/null @@ -1,12 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
    -
    - Admin Panel - Home Page -
    -
    - Welcome to the Admin Panel, use the sidebar to navigate between the different options. -
    -
    -@endsection diff --git a/Chapter20/onlineStore/resources/views/admin/product/edit.blade.php b/Chapter20/onlineStore/resources/views/admin/product/edit.blade.php deleted file mode 100644 index b8e03d8..0000000 --- a/Chapter20/onlineStore/resources/views/admin/product/edit.blade.php +++ /dev/null @@ -1,61 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
    -
    - Edit Product -
    -
    - @if($errors->any()) -
      - @foreach($errors->all() as $error) -
    • - {{ $error }}
    • - @endforeach -
    - @endif - -
    - @csrf - @method('PUT') -
    -
    -
    - -
    - -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -   -
    -
    -
    - - -
    - -
    -
    -
    -@endsection diff --git a/Chapter20/onlineStore/resources/views/admin/product/index.blade.php b/Chapter20/onlineStore/resources/views/admin/product/index.blade.php deleted file mode 100644 index 19fbe4b..0000000 --- a/Chapter20/onlineStore/resources/views/admin/product/index.blade.php +++ /dev/null @@ -1,98 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
    -
    - Create Products -
    -
    - @if($errors->any()) -
      - @foreach($errors->all() as $error) -
    • - {{ $error }}
    • - @endforeach -
    - @endif - -
    - @csrf -
    -
    -
    - -
    - -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -   -
    -
    -
    - - -
    - -
    -
    -
    - -
    -
    - Manage Products -
    -
    - - - - - - - - - - - @foreach ($viewData["products"] as $product) - - - - - - - @endforeach - -
    IDNameEditDelete
    {{ $product->getId() }}{{ $product->getName() }} - - - - -
    - @csrf - @method('DELETE') - -
    -
    -
    -
    -@endsection diff --git a/Chapter20/onlineStore/resources/views/home/about.blade.php b/Chapter20/onlineStore/resources/views/home/about.blade.php deleted file mode 100644 index f79abf3..0000000 --- a/Chapter20/onlineStore/resources/views/home/about.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    -
    -
    -

    {{ $viewData["description"] }}

    -
    -
    -

    {{ $viewData["author"] }}

    -
    -
    -
    -@endsection diff --git a/Chapter20/onlineStore/resources/views/home/index.blade.php b/Chapter20/onlineStore/resources/views/home/index.blade.php deleted file mode 100644 index 1affb20..0000000 --- a/Chapter20/onlineStore/resources/views/home/index.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('content') -
    -
    - -
    -
    - -
    -
    - -
    -
    -@endsection diff --git a/Chapter20/onlineStore/resources/views/layouts/admin.blade.php b/Chapter20/onlineStore/resources/views/layouts/admin.blade.php deleted file mode 100644 index 4aff3f8..0000000 --- a/Chapter20/onlineStore/resources/views/layouts/admin.blade.php +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - @yield('title', 'Admin - Online Store') - - - -
    - - - -
    - - -
    - @yield('content') -
    -
    -
    - - - - - - - - - diff --git a/Chapter20/onlineStore/resources/views/layouts/app.blade.php b/Chapter20/onlineStore/resources/views/layouts/app.blade.php deleted file mode 100644 index eee7fcb..0000000 --- a/Chapter20/onlineStore/resources/views/layouts/app.blade.php +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - @yield('title', 'Online Store') - - - - - -
    -
    -

    @yield('subtitle', 'A Laravel Online Store')

    -
    -
    - - -
    - @yield('content') -
    - - - - - - - diff --git a/Chapter20/onlineStore/resources/views/product/index.blade.php b/Chapter20/onlineStore/resources/views/product/index.blade.php deleted file mode 100644 index 64c3e18..0000000 --- a/Chapter20/onlineStore/resources/views/product/index.blade.php +++ /dev/null @@ -1,18 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    - @foreach ($viewData["products"] as $product) - - @endforeach -
    -@endsection diff --git a/Chapter20/onlineStore/resources/views/product/show.blade.php b/Chapter20/onlineStore/resources/views/product/show.blade.php deleted file mode 100644 index be37a01..0000000 --- a/Chapter20/onlineStore/resources/views/product/show.blade.php +++ /dev/null @@ -1,21 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    -
    -
    - getImage()) }}" class="img-fluid rounded-start"> -
    -
    -
    -
    - {{ $viewData["product"]->getName() }} (${{ $viewData["product"]->getPrice() }}) -
    -

    {{ $viewData["product"]->getDescription() }}

    -

    Add to Cart

    -
    -
    -
    -
    -@endsection diff --git a/Chapter20/onlineStore/resources/views/welcome.blade.php b/Chapter20/onlineStore/resources/views/welcome.blade.php deleted file mode 100644 index c587c72..0000000 --- a/Chapter20/onlineStore/resources/views/welcome.blade.php +++ /dev/null @@ -1,7 +0,0 @@ -@extends('layouts.app') -@section('title', 'Home Page - Online Store') -@section('content') -
    - Welcome to the application -
    -@endsection \ No newline at end of file diff --git a/Chapter20/onlineStore/routes/api.php b/Chapter20/onlineStore/routes/api.php deleted file mode 100644 index eb6fa48..0000000 --- a/Chapter20/onlineStore/routes/api.php +++ /dev/null @@ -1,19 +0,0 @@ -get('/user', function (Request $request) { - return $request->user(); -}); diff --git a/Chapter20/onlineStore/routes/channels.php b/Chapter20/onlineStore/routes/channels.php deleted file mode 100644 index 5d451e1..0000000 --- a/Chapter20/onlineStore/routes/channels.php +++ /dev/null @@ -1,18 +0,0 @@ -id === (int) $id; -}); diff --git a/Chapter20/onlineStore/routes/console.php b/Chapter20/onlineStore/routes/console.php deleted file mode 100644 index e05f4c9..0000000 --- a/Chapter20/onlineStore/routes/console.php +++ /dev/null @@ -1,19 +0,0 @@ -comment(Inspiring::quote()); -})->purpose('Display an inspiring quote'); diff --git a/Chapter20/onlineStore/routes/web.php b/Chapter20/onlineStore/routes/web.php deleted file mode 100644 index ee369d0..0000000 --- a/Chapter20/onlineStore/routes/web.php +++ /dev/null @@ -1,25 +0,0 @@ -name("home.index"); -Route::get('/about', 'App\Http\Controllers\HomeController@about')->name("home.about"); -Route::get('/products', 'App\Http\Controllers\ProductController@index')->name("product.index"); -Route::get('/products/{id}', 'App\Http\Controllers\ProductController@show')->name("product.show"); -Route::get('/admin', 'App\Http\Controllers\Admin\AdminHomeController@index')->name("admin.home.index"); -Route::get('/admin/products', 'App\Http\Controllers\Admin\AdminProductController@index')->name("admin.product.index"); -Route::post('/admin/products/store', 'App\Http\Controllers\Admin\AdminProductController@store')->name("admin.product.store"); -Route::delete('/admin/products/{id}/delete', 'App\Http\Controllers\Admin\AdminProductController@delete')->name("admin.product.delete"); -Route::get('/admin/products/{id}/edit', 'App\Http\Controllers\Admin\AdminProductController@edit')->name("admin.product.edit"); -Route::put('/admin/products/{id}/update', 'App\Http\Controllers\Admin\AdminProductController@update')->name("admin.product.update"); diff --git a/Chapter20/onlineStore/storage/app/.gitignore b/Chapter20/onlineStore/storage/app/.gitignore deleted file mode 100644 index 8f4803c..0000000 --- a/Chapter20/onlineStore/storage/app/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!public/ -!.gitignore diff --git a/Chapter20/onlineStore/storage/app/public/.gitignore b/Chapter20/onlineStore/storage/app/public/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter20/onlineStore/storage/app/public/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter20/onlineStore/storage/framework/.gitignore b/Chapter20/onlineStore/storage/framework/.gitignore deleted file mode 100644 index 05c4471..0000000 --- a/Chapter20/onlineStore/storage/framework/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -compiled.php -config.php -down -events.scanned.php -maintenance.php -routes.php -routes.scanned.php -schedule-* -services.json diff --git a/Chapter20/onlineStore/storage/framework/cache/.gitignore b/Chapter20/onlineStore/storage/framework/cache/.gitignore deleted file mode 100644 index 01e4a6c..0000000 --- a/Chapter20/onlineStore/storage/framework/cache/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!data/ -!.gitignore diff --git a/Chapter20/onlineStore/storage/framework/cache/data/.gitignore b/Chapter20/onlineStore/storage/framework/cache/data/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter20/onlineStore/storage/framework/cache/data/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter20/onlineStore/storage/framework/sessions/.gitignore b/Chapter20/onlineStore/storage/framework/sessions/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter20/onlineStore/storage/framework/sessions/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter20/onlineStore/storage/framework/testing/.gitignore b/Chapter20/onlineStore/storage/framework/testing/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter20/onlineStore/storage/framework/testing/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter20/onlineStore/storage/framework/views/.gitignore b/Chapter20/onlineStore/storage/framework/views/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter20/onlineStore/storage/framework/views/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter20/onlineStore/storage/logs/.gitignore b/Chapter20/onlineStore/storage/logs/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter20/onlineStore/storage/logs/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter20/onlineStore/tests/CreatesApplication.php b/Chapter20/onlineStore/tests/CreatesApplication.php deleted file mode 100644 index 547152f..0000000 --- a/Chapter20/onlineStore/tests/CreatesApplication.php +++ /dev/null @@ -1,22 +0,0 @@ -make(Kernel::class)->bootstrap(); - - return $app; - } -} diff --git a/Chapter20/onlineStore/tests/Feature/ExampleTest.php b/Chapter20/onlineStore/tests/Feature/ExampleTest.php deleted file mode 100644 index 78ccc21..0000000 --- a/Chapter20/onlineStore/tests/Feature/ExampleTest.php +++ /dev/null @@ -1,21 +0,0 @@ -get('/'); - - $response->assertStatus(200); - } -} diff --git a/Chapter20/onlineStore/tests/TestCase.php b/Chapter20/onlineStore/tests/TestCase.php deleted file mode 100644 index 2932d4a..0000000 --- a/Chapter20/onlineStore/tests/TestCase.php +++ /dev/null @@ -1,10 +0,0 @@ -assertTrue(true); - } -} diff --git a/Chapter20/onlineStore/webpack.mix.js b/Chapter20/onlineStore/webpack.mix.js deleted file mode 100644 index 2a22dc1..0000000 --- a/Chapter20/onlineStore/webpack.mix.js +++ /dev/null @@ -1,17 +0,0 @@ -const mix = require('laravel-mix'); - -/* - |-------------------------------------------------------------------------- - | Mix Asset Management - |-------------------------------------------------------------------------- - | - | Mix provides a clean, fluent API for defining some Webpack build steps - | for your Laravel applications. By default, we are compiling the CSS - | file for the application as well as bundling up all the JS files. - | - */ - -mix.js('resources/js/app.js', 'public/js') - .postCss('resources/css/app.css', 'public/css', [ - // - ]); diff --git a/Chapter21/onlineStore/.editorconfig b/Chapter21/onlineStore/.editorconfig deleted file mode 100644 index 1671c9b..0000000 --- a/Chapter21/onlineStore/.editorconfig +++ /dev/null @@ -1,18 +0,0 @@ -root = true - -[*] -charset = utf-8 -end_of_line = lf -insert_final_newline = true -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true - -[*.md] -trim_trailing_whitespace = false - -[*.{yml,yaml}] -indent_size = 2 - -[docker-compose.yml] -indent_size = 4 diff --git a/Chapter21/onlineStore/.env.example b/Chapter21/onlineStore/.env.example deleted file mode 100644 index 8510237..0000000 --- a/Chapter21/onlineStore/.env.example +++ /dev/null @@ -1,52 +0,0 @@ -APP_NAME=Laravel -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=laravel -DB_USERNAME=root -DB_PASSWORD= - -BROADCAST_DRIVER=log -CACHE_DRIVER=file -FILESYSTEM_DISK=local -QUEUE_CONNECTION=sync -SESSION_DRIVER=file -SESSION_LIFETIME=120 - -MEMCACHED_HOST=127.0.0.1 - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -MAIL_MAILER=smtp -MAIL_HOST=mailhog -MAIL_PORT=1025 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS=null -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_APP_CLUSTER=mt1 - -MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/Chapter21/onlineStore/.gitattributes b/Chapter21/onlineStore/.gitattributes deleted file mode 100644 index 510d996..0000000 --- a/Chapter21/onlineStore/.gitattributes +++ /dev/null @@ -1,10 +0,0 @@ -* text=auto - -*.blade.php diff=html -*.css diff=css -*.html diff=html -*.md diff=markdown -*.php diff=php - -/.github export-ignore -CHANGELOG.md export-ignore diff --git a/Chapter21/onlineStore/.gitignore b/Chapter21/onlineStore/.gitignore deleted file mode 100644 index eb003b0..0000000 --- a/Chapter21/onlineStore/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -/node_modules -/public/hot -/public/storage -/storage/*.key -/vendor -.env -.env.backup -.phpunit.result.cache -docker-compose.override.yml -Homestead.json -Homestead.yaml -npm-debug.log -yarn-error.log -/.idea -/.vscode diff --git a/Chapter21/onlineStore/.styleci.yml b/Chapter21/onlineStore/.styleci.yml deleted file mode 100644 index 679a631..0000000 --- a/Chapter21/onlineStore/.styleci.yml +++ /dev/null @@ -1,13 +0,0 @@ -php: - preset: laravel - version: 8 - disabled: - - no_unused_imports - finder: - not-name: - - index.php -js: - finder: - not-name: - - webpack.mix.js -css: true diff --git a/Chapter21/onlineStore/README.md b/Chapter21/onlineStore/README.md deleted file mode 100644 index f171eca..0000000 --- a/Chapter21/onlineStore/README.md +++ /dev/null @@ -1,64 +0,0 @@ -

    - -

    -Build Status -Total Downloads -Latest Stable Version -License -

    - -## About Laravel - -Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as: - -- [Simple, fast routing engine](https://laravel.com/docs/routing). -- [Powerful dependency injection container](https://laravel.com/docs/container). -- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage. -- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent). -- Database agnostic [schema migrations](https://laravel.com/docs/migrations). -- [Robust background job processing](https://laravel.com/docs/queues). -- [Real-time event broadcasting](https://laravel.com/docs/broadcasting). - -Laravel is accessible, powerful, and provides tools required for large, robust applications. - -## Learning Laravel - -Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework. - -If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 2000 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library. - -## Laravel Sponsors - -We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell). - -### Premium Partners - -- **[Vehikl](https://vehikl.com/)** -- **[Tighten Co.](https://tighten.co)** -- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** -- **[64 Robots](https://64robots.com)** -- **[Cubet Techno Labs](https://cubettech.com)** -- **[Cyber-Duck](https://cyber-duck.co.uk)** -- **[Many](https://www.many.co.uk)** -- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)** -- **[DevSquad](https://devsquad.com)** -- **[Curotec](https://www.curotec.com/services/technologies/laravel/)** -- **[OP.GG](https://op.gg)** -- **[WebReinvent](https://webreinvent.com/?utm_source=laravel&utm_medium=github&utm_campaign=patreon-sponsors)** -- **[Lendio](https://lendio.com)** - -## Contributing - -Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions). - -## Code of Conduct - -In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). - -## Security Vulnerabilities - -If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed. - -## License - -The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). diff --git a/Chapter21/onlineStore/app/Console/Kernel.php b/Chapter21/onlineStore/app/Console/Kernel.php deleted file mode 100644 index d8bc1d2..0000000 --- a/Chapter21/onlineStore/app/Console/Kernel.php +++ /dev/null @@ -1,32 +0,0 @@ -command('inspire')->hourly(); - } - - /** - * Register the commands for the application. - * - * @return void - */ - protected function commands() - { - $this->load(__DIR__.'/Commands'); - - require base_path('routes/console.php'); - } -} diff --git a/Chapter21/onlineStore/app/Exceptions/Handler.php b/Chapter21/onlineStore/app/Exceptions/Handler.php deleted file mode 100644 index 8e7fbd1..0000000 --- a/Chapter21/onlineStore/app/Exceptions/Handler.php +++ /dev/null @@ -1,41 +0,0 @@ -> - */ - protected $dontReport = [ - // - ]; - - /** - * A list of the inputs that are never flashed for validation exceptions. - * - * @var array - */ - protected $dontFlash = [ - 'current_password', - 'password', - 'password_confirmation', - ]; - - /** - * Register the exception handling callbacks for the application. - * - * @return void - */ - public function register() - { - $this->reportable(function (Throwable $e) { - // - }); - } -} diff --git a/Chapter21/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php b/Chapter21/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php deleted file mode 100644 index cd78cb3..0000000 --- a/Chapter21/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php +++ /dev/null @@ -1,16 +0,0 @@ -with("viewData", $viewData); - } -} diff --git a/Chapter21/onlineStore/app/Http/Controllers/Admin/AdminProductController.php b/Chapter21/onlineStore/app/Http/Controllers/Admin/AdminProductController.php deleted file mode 100644 index d1c6c52..0000000 --- a/Chapter21/onlineStore/app/Http/Controllers/Admin/AdminProductController.php +++ /dev/null @@ -1,79 +0,0 @@ -with("viewData", $viewData); - } - - public function store(Request $request) - { - Product::validate($request); - - $newProduct = new Product(); - $newProduct->setName($request->input('name')); - $newProduct->setDescription($request->input('description')); - $newProduct->setPrice($request->input('price')); - $newProduct->setImage("game.png"); - $newProduct->save(); - - if ($request->hasFile('image')) { - $imageName = $newProduct->getId().".".$request->file('image')->extension(); - Storage::disk('public')->put( - $imageName, - file_get_contents($request->file('image')->getRealPath()) - ); - $newProduct->setImage($imageName); - $newProduct->save(); - } - - return back(); - } - - public function delete($id) - { - Product::destroy($id); - return back(); - } - - public function edit($id) - { - $viewData = []; - $viewData["title"] = "Admin Page - Edit Product - Online Store"; - $viewData["product"] = Product::findOrFail($id); - return view('admin.product.edit')->with("viewData", $viewData); - } - - public function update(Request $request, $id) - { - Product::validate($request); - - $product = Product::findOrFail($id); - $product->setName($request->input('name')); - $product->setDescription($request->input('description')); - $product->setPrice($request->input('price')); - - if ($request->hasFile('image')) { - $imageName = $product->getId().".".$request->file('image')->extension(); - Storage::disk('public')->put( - $imageName, - file_get_contents($request->file('image')->getRealPath()) - ); - $product->setImage($imageName); - } - - $product->save(); - return redirect()->route('admin.product.index'); - } -} diff --git a/Chapter21/onlineStore/app/Http/Controllers/Auth/ConfirmPasswordController.php b/Chapter21/onlineStore/app/Http/Controllers/Auth/ConfirmPasswordController.php deleted file mode 100644 index 138c1f0..0000000 --- a/Chapter21/onlineStore/app/Http/Controllers/Auth/ConfirmPasswordController.php +++ /dev/null @@ -1,40 +0,0 @@ -middleware('auth'); - } -} diff --git a/Chapter21/onlineStore/app/Http/Controllers/Auth/ForgotPasswordController.php b/Chapter21/onlineStore/app/Http/Controllers/Auth/ForgotPasswordController.php deleted file mode 100644 index 465c39c..0000000 --- a/Chapter21/onlineStore/app/Http/Controllers/Auth/ForgotPasswordController.php +++ /dev/null @@ -1,22 +0,0 @@ -middleware('guest')->except('logout'); - } -} diff --git a/Chapter21/onlineStore/app/Http/Controllers/Auth/RegisterController.php b/Chapter21/onlineStore/app/Http/Controllers/Auth/RegisterController.php deleted file mode 100644 index ed1a5e0..0000000 --- a/Chapter21/onlineStore/app/Http/Controllers/Auth/RegisterController.php +++ /dev/null @@ -1,73 +0,0 @@ -middleware('guest'); - } - - /** - * Get a validator for an incoming registration request. - * - * @param array $data - * @return \Illuminate\Contracts\Validation\Validator - */ - protected function validator(array $data) - { - return Validator::make($data, [ - 'name' => ['required', 'string', 'max:255'], - 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], - 'password' => ['required', 'string', 'min:8', 'confirmed'], - ]); - } - - /** - * Create a new user instance after a valid registration. - * - * @param array $data - * @return \App\Models\User - */ - protected function create(array $data) - { - return User::create([ - 'name' => $data['name'], - 'email' => $data['email'], - 'password' => Hash::make($data['password']), - ]); - } -} diff --git a/Chapter21/onlineStore/app/Http/Controllers/Auth/ResetPasswordController.php b/Chapter21/onlineStore/app/Http/Controllers/Auth/ResetPasswordController.php deleted file mode 100644 index b1726a3..0000000 --- a/Chapter21/onlineStore/app/Http/Controllers/Auth/ResetPasswordController.php +++ /dev/null @@ -1,30 +0,0 @@ -middleware('auth'); - $this->middleware('signed')->only('verify'); - $this->middleware('throttle:6,1')->only('verify', 'resend'); - } -} diff --git a/Chapter21/onlineStore/app/Http/Controllers/Controller.php b/Chapter21/onlineStore/app/Http/Controllers/Controller.php deleted file mode 100644 index a0a2a8a..0000000 --- a/Chapter21/onlineStore/app/Http/Controllers/Controller.php +++ /dev/null @@ -1,13 +0,0 @@ -with("viewData", $viewData); - } - - public function about() - { - $viewData = []; - $viewData["title"] = "About us - Online Store"; - $viewData["subtitle"] = "About us"; - $viewData["description"] = "This is an about page ..."; - $viewData["author"] = "Developed by: Your Name"; - return view('home.about')->with("viewData", $viewData); - } -} diff --git a/Chapter21/onlineStore/app/Http/Controllers/ProductController.php b/Chapter21/onlineStore/app/Http/Controllers/ProductController.php deleted file mode 100644 index d27a3a3..0000000 --- a/Chapter21/onlineStore/app/Http/Controllers/ProductController.php +++ /dev/null @@ -1,29 +0,0 @@ -with("viewData", $viewData); - } - - public function show($id) - { - $viewData = []; - $product = Product::findOrFail($id); - $viewData["title"] = $product->getName()." - Online Store"; - $viewData["subtitle"] = $product->getName()." - Product information"; - $viewData["product"] = $product; - return view('product.show')->with("viewData", $viewData); - } -} diff --git a/Chapter21/onlineStore/app/Http/Kernel.php b/Chapter21/onlineStore/app/Http/Kernel.php deleted file mode 100644 index d3722c2..0000000 --- a/Chapter21/onlineStore/app/Http/Kernel.php +++ /dev/null @@ -1,67 +0,0 @@ - - */ - protected $middleware = [ - // \App\Http\Middleware\TrustHosts::class, - \App\Http\Middleware\TrustProxies::class, - \Fruitcake\Cors\HandleCors::class, - \App\Http\Middleware\PreventRequestsDuringMaintenance::class, - \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, - \App\Http\Middleware\TrimStrings::class, - \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, - ]; - - /** - * The application's route middleware groups. - * - * @var array> - */ - protected $middlewareGroups = [ - 'web' => [ - \App\Http\Middleware\EncryptCookies::class, - \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, - \Illuminate\Session\Middleware\StartSession::class, - // \Illuminate\Session\Middleware\AuthenticateSession::class, - \Illuminate\View\Middleware\ShareErrorsFromSession::class, - \App\Http\Middleware\VerifyCsrfToken::class, - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - - 'api' => [ - // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, - 'throttle:api', - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - ]; - - /** - * The application's route middleware. - * - * These middleware may be assigned to groups or used individually. - * - * @var array - */ - protected $routeMiddleware = [ - 'auth' => \App\Http\Middleware\Authenticate::class, - 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::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, - 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, - 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, - 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, - ]; -} diff --git a/Chapter21/onlineStore/app/Http/Middleware/Authenticate.php b/Chapter21/onlineStore/app/Http/Middleware/Authenticate.php deleted file mode 100644 index 704089a..0000000 --- a/Chapter21/onlineStore/app/Http/Middleware/Authenticate.php +++ /dev/null @@ -1,21 +0,0 @@ -expectsJson()) { - return route('login'); - } - } -} diff --git a/Chapter21/onlineStore/app/Http/Middleware/EncryptCookies.php b/Chapter21/onlineStore/app/Http/Middleware/EncryptCookies.php deleted file mode 100644 index 867695b..0000000 --- a/Chapter21/onlineStore/app/Http/Middleware/EncryptCookies.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter21/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/Chapter21/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php deleted file mode 100644 index 74cbd9a..0000000 --- a/Chapter21/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter21/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php b/Chapter21/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php deleted file mode 100644 index a2813a0..0000000 --- a/Chapter21/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php +++ /dev/null @@ -1,32 +0,0 @@ -check()) { - return redirect(RouteServiceProvider::HOME); - } - } - - return $next($request); - } -} diff --git a/Chapter21/onlineStore/app/Http/Middleware/TrimStrings.php b/Chapter21/onlineStore/app/Http/Middleware/TrimStrings.php deleted file mode 100644 index 88cadca..0000000 --- a/Chapter21/onlineStore/app/Http/Middleware/TrimStrings.php +++ /dev/null @@ -1,19 +0,0 @@ - - */ - protected $except = [ - 'current_password', - 'password', - 'password_confirmation', - ]; -} diff --git a/Chapter21/onlineStore/app/Http/Middleware/TrustHosts.php b/Chapter21/onlineStore/app/Http/Middleware/TrustHosts.php deleted file mode 100644 index 7186414..0000000 --- a/Chapter21/onlineStore/app/Http/Middleware/TrustHosts.php +++ /dev/null @@ -1,20 +0,0 @@ - - */ - public function hosts() - { - return [ - $this->allSubdomainsOfApplicationUrl(), - ]; - } -} diff --git a/Chapter21/onlineStore/app/Http/Middleware/TrustProxies.php b/Chapter21/onlineStore/app/Http/Middleware/TrustProxies.php deleted file mode 100644 index 3391630..0000000 --- a/Chapter21/onlineStore/app/Http/Middleware/TrustProxies.php +++ /dev/null @@ -1,28 +0,0 @@ -|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/Chapter21/onlineStore/app/Http/Middleware/VerifyCsrfToken.php b/Chapter21/onlineStore/app/Http/Middleware/VerifyCsrfToken.php deleted file mode 100644 index 9e86521..0000000 --- a/Chapter21/onlineStore/app/Http/Middleware/VerifyCsrfToken.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter21/onlineStore/app/Models/Product.php b/Chapter21/onlineStore/app/Models/Product.php deleted file mode 100644 index b8f58f6..0000000 --- a/Chapter21/onlineStore/app/Models/Product.php +++ /dev/null @@ -1,99 +0,0 @@ -attributes['id'] - int - contains the product primary key (id) - * $this->attributes['name'] - string - contains the product name - * $this->attributes['description'] - string - contains the product description - * $this->attributes['image'] - string - contains the product image - * $this->attributes['price'] - int - contains the product price - * $this->attributes['created_at'] - timestamp - contains the product creation date - * $this->attributes['updated_at'] - timestamp - contains the product update date - */ - - public static function validate($request) - { - $request->validate([ - "name" => "required|max:255", - "description" => "required", - "price" => "required|numeric|gt:0", - 'image' => 'image', - ]); - } - - public function getId() - { - return $this->attributes['id']; - } - - public function setId($id) - { - $this->attributes['id'] = $id; - } - - public function getName() - { - return $this->attributes['name']; - } - - public function setName($name) - { - $this->attributes['name'] = $name; - } - - public function getDescription() - { - return $this->attributes['description']; - } - - public function setDescription($description) - { - $this->attributes['description'] = $description; - } - - public function getImage() - { - return $this->attributes['image']; - } - - public function setImage($image) - { - $this->attributes['image'] = $image; - } - - public function getPrice() - { - return $this->attributes['price']; - } - - public function setPrice($price) - { - $this->attributes['price'] = $price; - } - - public function getCreatedAt() - { - return $this->attributes['created_at']; - } - - public function setCreatedAt($createdAt) - { - $this->attributes['created_at'] = $createdAt; - } - - public function getUpdatedAt() - { - return $this->attributes['updated_at']; - } - - public function setUpdatedAt($updatedAt) - { - $this->attributes['updated_at'] = $updatedAt; - } -} diff --git a/Chapter21/onlineStore/app/Models/User.php b/Chapter21/onlineStore/app/Models/User.php deleted file mode 100644 index 8996368..0000000 --- a/Chapter21/onlineStore/app/Models/User.php +++ /dev/null @@ -1,44 +0,0 @@ - - */ - 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', - ]; -} diff --git a/Chapter21/onlineStore/app/Providers/AppServiceProvider.php b/Chapter21/onlineStore/app/Providers/AppServiceProvider.php deleted file mode 100644 index ee8ca5b..0000000 --- a/Chapter21/onlineStore/app/Providers/AppServiceProvider.php +++ /dev/null @@ -1,28 +0,0 @@ - - */ - protected $policies = [ - // 'App\Models\Model' => 'App\Policies\ModelPolicy', - ]; - - /** - * Register any authentication / authorization services. - * - * @return void - */ - public function boot() - { - $this->registerPolicies(); - - // - } -} diff --git a/Chapter21/onlineStore/app/Providers/BroadcastServiceProvider.php b/Chapter21/onlineStore/app/Providers/BroadcastServiceProvider.php deleted file mode 100644 index 395c518..0000000 --- a/Chapter21/onlineStore/app/Providers/BroadcastServiceProvider.php +++ /dev/null @@ -1,21 +0,0 @@ -> - */ - protected $listen = [ - Registered::class => [ - SendEmailVerificationNotification::class, - ], - ]; - - /** - * Register any events for your application. - * - * @return void - */ - public function boot() - { - // - } -} diff --git a/Chapter21/onlineStore/app/Providers/RouteServiceProvider.php b/Chapter21/onlineStore/app/Providers/RouteServiceProvider.php deleted file mode 100644 index fb766eb..0000000 --- a/Chapter21/onlineStore/app/Providers/RouteServiceProvider.php +++ /dev/null @@ -1,63 +0,0 @@ -configureRateLimiting(); - - $this->routes(function () { - Route::prefix('api') - ->middleware('api') - ->namespace($this->namespace) - ->group(base_path('routes/api.php')); - - Route::middleware('web') - ->namespace($this->namespace) - ->group(base_path('routes/web.php')); - }); - } - - /** - * Configure the rate limiters for the application. - * - * @return void - */ - protected function configureRateLimiting() - { - RateLimiter::for('api', function (Request $request) { - return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); - }); - } -} diff --git a/Chapter21/onlineStore/artisan b/Chapter21/onlineStore/artisan deleted file mode 100644 index 67a3329..0000000 --- a/Chapter21/onlineStore/artisan +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env php -make(Illuminate\Contracts\Console\Kernel::class); - -$status = $kernel->handle( - $input = new Symfony\Component\Console\Input\ArgvInput, - new Symfony\Component\Console\Output\ConsoleOutput -); - -/* -|-------------------------------------------------------------------------- -| Shutdown The Application -|-------------------------------------------------------------------------- -| -| Once Artisan has finished running, we will fire off the shutdown events -| so that any final work may be done by the application before we shut -| down the process. This is the last thing to happen to the request. -| -*/ - -$kernel->terminate($input, $status); - -exit($status); diff --git a/Chapter21/onlineStore/bootstrap/app.php b/Chapter21/onlineStore/bootstrap/app.php deleted file mode 100644 index 037e17d..0000000 --- a/Chapter21/onlineStore/bootstrap/app.php +++ /dev/null @@ -1,55 +0,0 @@ -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/Chapter21/onlineStore/bootstrap/cache/.gitignore b/Chapter21/onlineStore/bootstrap/cache/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter21/onlineStore/bootstrap/cache/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter21/onlineStore/composer.json b/Chapter21/onlineStore/composer.json deleted file mode 100644 index a9459b5..0000000 --- a/Chapter21/onlineStore/composer.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "name": "laravel/laravel", - "type": "project", - "description": "The Laravel Framework.", - "keywords": ["framework", "laravel"], - "license": "MIT", - "require": { - "php": "^8.0", - "fruitcake/laravel-cors": "^2.0.5", - "guzzlehttp/guzzle": "^7.2", - "laravel/framework": "^9.0", - "laravel/sanctum": "^2.14", - "laravel/tinker": "^2.7", - "laravel/ui": "^3.4" - }, - "require-dev": { - "fakerphp/faker": "^1.9.1", - "laravel/sail": "^1.0.1", - "mockery/mockery": "^1.4.4", - "nunomaduro/collision": "^6.1", - "phpunit/phpunit": "^9.5.10", - "spatie/laravel-ignition": "^1.0", - "squizlabs/php_codesniffer": "^3.6" - }, - "autoload": { - "psr-4": { - "App\\": "app/", - "Database\\Factories\\": "database/factories/", - "Database\\Seeders\\": "database/seeders/" - } - }, - "autoload-dev": { - "psr-4": { - "Tests\\": "tests/" - } - }, - "scripts": { - "post-autoload-dump": [ - "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", - "@php artisan package:discover --ansi" - ], - "post-update-cmd": [ - "@php artisan vendor:publish --tag=laravel-assets --ansi --force" - ], - "post-root-package-install": [ - "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" - ], - "post-create-project-cmd": [ - "@php artisan key:generate --ansi" - ] - }, - "extra": { - "laravel": { - "dont-discover": [] - } - }, - "config": { - "optimize-autoloader": true, - "preferred-install": "dist", - "sort-packages": true - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/Chapter21/onlineStore/composer.lock b/Chapter21/onlineStore/composer.lock deleted file mode 100644 index 78c86f1..0000000 --- a/Chapter21/onlineStore/composer.lock +++ /dev/null @@ -1,7921 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "d299b51f0f07ec600b4949240f4664af", - "packages": [ - { - "name": "asm89/stack-cors", - "version": "v2.1.1", - "source": { - "type": "git", - "url": "https://github.com/asm89/stack-cors.git", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4|^5|^6" - }, - "require-dev": { - "phpunit/phpunit": "^7|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "psr-4": { - "Asm89\\Stack\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alexander", - "email": "iam.asm89@gmail.com" - } - ], - "description": "Cross-origin resource sharing library and stack middleware", - "homepage": "https://github.com/asm89/stack-cors", - "keywords": [ - "cors", - "stack" - ], - "support": { - "issues": "https://github.com/asm89/stack-cors/issues", - "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" - }, - "time": "2022-01-18T09:12:03+00:00" - }, - { - "name": "brick/math", - "version": "0.9.3", - "source": { - "type": "git", - "url": "https://github.com/brick/math.git", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", - "vimeo/psalm": "4.9.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Brick\\Math\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Arbitrary-precision arithmetic library", - "keywords": [ - "Arbitrary-precision", - "BigInteger", - "BigRational", - "arithmetic", - "bigdecimal", - "bignum", - "brick", - "math" - ], - "support": { - "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.9.3" - }, - "funding": [ - { - "url": "https://github.com/BenMorel", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/brick/math", - "type": "tidelift" - } - ], - "time": "2021-08-15T20:50:18+00:00" - }, - { - "name": "dflydev/dot-access-data", - "version": "v3.0.1", - "source": { - "type": "git", - "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c", - "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": "^3.14" - }, - "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.1" - }, - "time": "2021-08-13T13:06:58+00:00" - }, - { - "name": "doctrine/inflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "vimeo/psalm": "^4.10" - }, - "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.4" - }, - "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": "2021-10-22T20:16:43+00:00" - }, - { - "name": "doctrine/lexer", - "version": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" - } - }, - "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/1.2.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%2Flexer", - "type": "tidelift" - } - ], - "time": "2022-01-12T08:27:12+00:00" - }, - { - "name": "dragonmantank/cron-expression", - "version": "v3.3.1", - "source": { - "type": "git", - "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "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.1" - }, - "funding": [ - { - "url": "https://github.com/dragonmantank", - "type": "github" - } - ], - "time": "2022-01-18T15:43:28+00:00" - }, - { - "name": "egulias/email-validator", - "version": "3.1.2", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ee0db30118f661fb166bcffbf5d82032df484697", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^1.2", - "php": ">=7.2", - "symfony/polyfill-intl-idn": "^1.15" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^8.5.8|^9.3.3", - "vimeo/psalm": "^4" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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/3.1.2" - }, - "funding": [ - { - "url": "https://github.com/egulias", - "type": "github" - } - ], - "time": "2021-10-11T09:18:27+00:00" - }, - { - "name": "fruitcake/laravel-cors", - "version": "v2.0.5", - "source": { - "type": "git", - "url": "https://github.com/fruitcake/laravel-cors.git", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "shasum": "" - }, - "require": { - "asm89/stack-cors": "^2.0.1", - "illuminate/contracts": "^6|^7|^8|^9", - "illuminate/support": "^6|^7|^8|^9", - "php": ">=7.2", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4.3.4|^5|^6" - }, - "require-dev": { - "laravel/framework": "^6|^7.24|^8", - "orchestra/testbench-dusk": "^4|^5|^6|^7", - "phpunit/phpunit": "^6|^7|^8|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - }, - "laravel": { - "providers": [ - "Fruitcake\\Cors\\CorsServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Fruitcake\\Cors\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fruitcake", - "homepage": "https://fruitcake.nl" - }, - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", - "keywords": [ - "api", - "cors", - "crossdomain", - "laravel" - ], - "support": { - "issues": "https://github.com/fruitcake/laravel-cors/issues", - "source": "https://github.com/fruitcake/laravel-cors/tree/v2.0.5" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "time": "2022-01-03T14:53:04+00:00" - }, - { - "name": "graham-campbell/result-type", - "version": "v1.0.4", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "0690bde05318336c7221785f2a932467f98b64ca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/0690bde05318336c7221785f2a932467f98b64ca", - "reference": "0690bde05318336c7221785f2a932467f98b64ca", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "phpoption/phpoption": "^1.8" - }, - "require-dev": { - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", - "type": "tidelift" - } - ], - "time": "2021-11-21T21:41:47+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "7.4.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.8.3 || ^2.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.4.1", - "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.5 || ^9.3.5", - "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": { - "branch-alias": { - "dev-master": "7.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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.4.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": "2021-12-06T18:43:05+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "1.5.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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/1.5.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "time": "2021-10-22T20:56:57+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.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.4.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.8 || ^9.3.10" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "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.1.0" - }, - "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": "2021-10-06T17:43:30+00:00" - }, - { - "name": "laravel/framework", - "version": "v9.0.1", - "source": { - "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "shasum": "" - }, - "require": { - "doctrine/inflector": "^2.0", - "dragonmantank/cron-expression": "^3.1", - "egulias/email-validator": "^3.1", - "ext-mbstring": "*", - "ext-openssl": "*", - "laravel/serializable-closure": "^1.0", - "league/commonmark": "^2.2", - "league/flysystem": "^3.0", - "monolog/monolog": "^2.0", - "nesbot/carbon": "^2.53.1", - "php": "^8.0.2", - "psr/container": "^1.1.1|^2.0.1", - "psr/log": "^1.0|^2.0|^3.0", - "psr/simple-cache": "^1.0|^2.0|^3.0", - "ramsey/uuid": "^4.2.2", - "symfony/console": "^6.0", - "symfony/error-handler": "^6.0", - "symfony/finder": "^6.0", - "symfony/http-foundation": "^6.0", - "symfony/http-kernel": "^6.0", - "symfony/mailer": "^6.0", - "symfony/mime": "^6.0", - "symfony/process": "^6.0", - "symfony/routing": "^6.0", - "symfony/var-dumper": "^6.0", - "tijsverkoyen/css-to-inline-styles": "^2.2.2", - "vlucas/phpdotenv": "^5.4.1", - "voku/portable-ascii": "^2.0" - }, - "conflict": { - "tightenco/collect": "<5.5.33" - }, - "provide": { - "psr/container-implementation": "1.1|2.0", - "psr/simple-cache-implementation": "1.0|2.0|3.0" - }, - "replace": { - "illuminate/auth": "self.version", - "illuminate/broadcasting": "self.version", - "illuminate/bus": "self.version", - "illuminate/cache": "self.version", - "illuminate/collections": "self.version", - "illuminate/conditionable": "self.version", - "illuminate/config": "self.version", - "illuminate/console": "self.version", - "illuminate/container": "self.version", - "illuminate/contracts": "self.version", - "illuminate/cookie": "self.version", - "illuminate/database": "self.version", - "illuminate/encryption": "self.version", - "illuminate/events": "self.version", - "illuminate/filesystem": "self.version", - "illuminate/hashing": "self.version", - "illuminate/http": "self.version", - "illuminate/log": "self.version", - "illuminate/macroable": "self.version", - "illuminate/mail": "self.version", - "illuminate/notifications": "self.version", - "illuminate/pagination": "self.version", - "illuminate/pipeline": "self.version", - "illuminate/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": { - "aws/aws-sdk-php": "^3.198.1", - "doctrine/dbal": "^2.13.3|^3.1.4", - "fakerphp/faker": "^1.9.2", - "guzzlehttp/guzzle": "^7.2", - "league/flysystem-aws-s3-v3": "^3.0", - "league/flysystem-ftp": "^3.0", - "league/flysystem-sftp-v3": "^3.0", - "mockery/mockery": "^1.4.4", - "orchestra/testbench-core": "^7.0", - "pda/pheanstalk": "^4.0", - "phpstan/phpstan": "^1.0", - "phpunit/phpunit": "^9.5.8", - "predis/predis": "^1.1.9", - "symfony/amazon-mailer": "^6.0", - "symfony/cache": "^6.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.198.1).", - "brianium/paratest": "Required to run tests in parallel (^6.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", - "ext-bcmath": "Required to use the multiple_of validation rule.", - "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.", - "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.2).", - "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-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", - "mockery/mockery": "Required to use mocking (^1.4.4).", - "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).", - "predis/predis": "Required to use the predis connector (^1.1.9).", - "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.0).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^6.0).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.0).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.0).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.0).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.x-dev" - } - }, - "autoload": { - "files": [ - "src/Illuminate/Collections/helpers.php", - "src/Illuminate/Events/functions.php", - "src/Illuminate/Foundation/helpers.php", - "src/Illuminate/Support/helpers.php" - ], - "psr-4": { - "Illuminate\\": "src/Illuminate/", - "Illuminate\\Support\\": [ - "src/Illuminate/Macroable/", - "src/Illuminate/Collections/", - "src/Illuminate/Conditionable/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Laravel Framework.", - "homepage": "https://laravel.com", - "keywords": [ - "framework", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2022-02-09T15:00:05+00:00" - }, - { - "name": "laravel/sanctum", - "version": "v2.14.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/sanctum.git", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/0647a87140c7522e75826cffcadb3ad6e01f71e9", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/contracts": "^6.9|^7.0|^8.0|^9.0", - "illuminate/database": "^6.9|^7.0|^8.0|^9.0", - "illuminate/support": "^6.9|^7.0|^8.0|^9.0", - "php": "^7.2|^8.0" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0", - "phpunit/phpunit": "^8.0|^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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": "2022-01-12T15:07:43+00:00" - }, - { - "name": "laravel/serializable-closure", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/serializable-closure.git", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/65c9faf50d567b65d81764a44526545689e3fe63", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "pestphp/pest": "^1.18", - "phpstan/phpstan": "^0.12.98", - "symfony/var-dumper": "^5.3" - }, - "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": "2022-02-01T16:29:39+00:00" - }, - { - "name": "laravel/tinker", - "version": "v2.7.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/tinker.git", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/5f2f9815b7631b9f586a3de7933c25f9327d4073", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073", - "shasum": "" - }, - "require": { - "illuminate/console": "^6.0|^7.0|^8.0|^9.0", - "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.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", - "phpunit/phpunit": "^8.5.8|^9.3.3" - }, - "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.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.7.0" - }, - "time": "2022-01-10T08:52:49+00:00" - }, - { - "name": "laravel/ui", - "version": "v3.4.3", - "source": { - "type": "git", - "url": "https://github.com/laravel/ui.git", - "reference": "64a0f43492c00780b2261c56cd7007a4f370d95b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/ui/zipball/64a0f43492c00780b2261c56cd7007a4f370d95b", - "reference": "64a0f43492c00780b2261c56cd7007a4f370d95b", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.42|^9.0", - "illuminate/filesystem": "^8.42|^9.0", - "illuminate/support": "^8.82|^9.0", - "illuminate/validation": "^8.42|^9.0", - "php": "^7.3|^8.0" - }, - "require-dev": { - "orchestra/testbench": "^6.23|^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - }, - "laravel": { - "providers": [ - "Laravel\\Ui\\UiServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Laravel\\Ui\\": "src/", - "Illuminate\\Foundation\\Auth\\": "auth-backend/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "Laravel UI utilities and presets.", - "keywords": [ - "laravel", - "ui" - ], - "support": { - "source": "https://github.com/laravel/ui/tree/v3.4.3" - }, - "time": "2022-02-08T14:19:32+00:00" - }, - { - "name": "league/commonmark", - "version": "2.2.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/commonmark.git", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "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.15" - }, - "require-dev": { - "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.0", - "commonmark/commonmark.js": "0.30.0", - "composer/package-versions-deprecated": "^1.8", - "erusev/parsedown": "^1.0", - "ext-json": "*", - "github/gfm": "0.29.0", - "michelf/php-markdown": "^1.4", - "phpstan/phpstan": "^0.12.88 || ^1.0.0", - "phpunit/phpunit": "^9.5.5", - "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", - "unleashedtech/php-coding-standard": "^3.1", - "vimeo/psalm": "^4.7.3" - }, - "suggest": { - "symfony/yaml": "v2.3+ required if using the Front Matter extension" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.3-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": "2022-01-25T14:37:33+00:00" - }, - { - "name": "league/config", - "version": "v1.1.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/config.git", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/config/zipball/a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^3.0.1", - "nette/schema": "^1.2", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.90", - "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": "2021-08-14T12:15:32+00:00" - }, - { - "name": "league/flysystem", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9f8b4260031bfef5497477da53dd57b2aaff0e06", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06", - "shasum": "" - }, - "require": { - "ext-json": "*", - "league/mime-type-detection": "^1.0.0", - "php": "^8.0.2" - }, - "conflict": { - "guzzlehttp/guzzle": "<7.0", - "guzzlehttp/ringphp": "<1.1.1", - "symfony/http-client": "<5.2" - }, - "require-dev": { - "async-aws/s3": "^1.5", - "async-aws/simple-s3": "^1.0", - "aws/aws-sdk-php": "^3.198.1", - "composer/semver": "^3.0", - "ext-fileinfo": "*", - "ext-ftp": "*", - "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.5", - "google/cloud-storage": "^1.23", - "phpseclib/phpseclib": "^2.0", - "phpstan/phpstan": "^0.12.26", - "phpunit/phpunit": "^9.5.11", - "sabre/dav": "^4.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.0.3" - }, - "funding": [ - { - "url": "https://offset.earth/frankdejonge", - "type": "custom" - }, - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2022-01-31T19:41:04+00:00" - }, - { - "name": "league/mime-type-detection", - "version": "1.9.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/aa70e813a6ad3d1558fc927863d47309b4c23e69", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.2", - "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" - }, - "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.9.0" - }, - "funding": [ - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2021-11-21T11:48:40+00:00" - }, - { - "name": "monolog/monolog", - "version": "2.3.5", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd4380d6fc37626e2f799f29d91195040137eba9", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "provide": { - "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7", - "graylog2/gelf-php": "^1.4.2", - "mongodb/mongodb": "^1.8", - "php-amqplib/php-amqplib": "~2.4 || ^3", - "php-console/php-console": "^3.1.3", - "phpspec/prophecy": "^1.6.1", - "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5", - "predis/predis": "^1.1", - "rollbar/rollbar": "^1.3", - "ruflin/elastica": ">=0.90@dev", - "swiftmailer/swiftmailer": "^5.3|^6.0" - }, - "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", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "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": "2.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/2.3.5" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" - } - ], - "time": "2021-10-01T21:08:31+00:00" - }, - { - "name": "nesbot/carbon", - "version": "2.56.0", - "source": { - "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1.8 || ^8.0", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "doctrine/dbal": "^2.0 || ^3.0", - "doctrine/orm": "^2.7", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "phpmd/phpmd": "^2.9", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.54 || ^1.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.14", - "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://opencollective.com/Carbon", - "type": "open_collective" - }, - { - "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", - "type": "tidelift" - } - ], - "time": "2022-01-21T17:08:38+00:00" - }, - { - "name": "nette/schema", - "version": "v1.2.2", - "source": { - "type": "git", - "url": "https://github.com/nette/schema.git", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/9a39cef03a5b34c7de64f551538cbba05c2be5df", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df", - "shasum": "" - }, - "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": ">=7.1 <8.2" - }, - "require-dev": { - "nette/tester": "^2.3 || ^2.4", - "phpstan/phpstan-nette": "^0.12", - "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.2" - }, - "time": "2021-10-15T11:40:02+00:00" - }, - { - "name": "nette/utils", - "version": "v3.2.7", - "source": { - "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/0af4e3de4df9f1543534beab255ccf459e7a2c99", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99", - "shasum": "" - }, - "require": { - "php": ">=7.2 <8.2" - }, - "conflict": { - "nette/di": "<3.0.6" - }, - "require-dev": { - "nette/tester": "~2.0", - "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.3" - }, - "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()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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 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/v3.2.7" - }, - "time": "2022-01-24T11:29:14+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.13.2", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", - "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.13.2" - }, - "time": "2021-11-30T19:35:32+00:00" - }, - { - "name": "phpoption/phpoption", - "version": "1.8.1", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-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.8.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", - "type": "tidelift" - } - ], - "time": "2021-12-04T23:24:31+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.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.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": "http://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/tree/master" - }, - "time": "2020-06-29T06:28:15+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.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": "http://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/master" - }, - "time": "2019-04-30T12:38:16+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.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": "http://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/master" - }, - "time": "2016-08-06T14:39: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.1", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "570292577277f06f590635381a7f761a6cf4f026" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/570292577277f06f590635381a7f761a6cf4f026", - "reference": "570292577277f06f590635381a7f761a6cf4f026", - "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" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "3.17.05.02" - }, - "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.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." - }, - "bin": [ - "bin/psysh" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "0.11.x-dev" - } - }, - "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.1" - }, - "time": "2022-01-03T13:58:38+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": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/ramsey/collection.git", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "shasum": "" - }, - "require": { - "php": "^7.3 || ^8", - "symfony/polyfill-php81": "^1.23" - }, - "require-dev": { - "captainhook/captainhook": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "ergebnis/composer-normalize": "^2.6", - "fakerphp/faker": "^1.5", - "hamcrest/hamcrest-php": "^2", - "jangregor/phpstan-prophecy": "^0.8", - "mockery/mockery": "^1.3", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1", - "phpstan/phpstan": "^0.12.32", - "phpstan/phpstan-mockery": "^0.12.5", - "phpstan/phpstan-phpunit": "^0.12.11", - "phpunit/phpunit": "^8.5 || ^9", - "psy/psysh": "^0.10.4", - "slevomat/coding-standard": "^6.3", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.4" - }, - "type": "library", - "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/1.2.2" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "time": "2021-10-10T03:01:02+00:00" - }, - { - "name": "ramsey/uuid", - "version": "4.2.3", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "shasum": "" - }, - "require": { - "brick/math": "^0.8 || ^0.9", - "ext-json": "*", - "php": "^7.2 || ^8.0", - "ramsey/collection": "^1.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php80": "^1.14" - }, - "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", - "moontoast/math": "^1.1", - "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.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-mockery": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^8.5 || ^9", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" - }, - "suggest": { - "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-ctype": "Enables faster processing of character classification using ctype functions.", - "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": { - "branch-alias": { - "dev-main": "4.x-dev" - }, - "captainhook": { - "force-install": true - } - }, - "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "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.2.3" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2021-09-25T23:10:38+00:00" - }, - { - "name": "symfony/console", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/22e8efd019c3270c4f79376234a3f8752cd25490", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.4|^6.0" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/css-selector", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/1955d595c12c111629cc814d3f2a2ff13580508a", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a", - "shasum": "" - }, - "require": { - "php": ">=8.0.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/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-11-01T23:48:49+00:00" - }, - { - "name": "symfony/error-handler", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/20343b3bad7ebafa38138ddcb97290a24722b57b", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" - }, - "bin": [ - "Resources/bin/patch-type-declarations" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to manage errors and ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6472ea2dd415e925b90ca82be64b8bc6157f3934", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/event-dispatcher-contracts": "^2|^3" - }, - "conflict": { - "symfony/dependency-injection": "<5.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^5.4|^6.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/aa5422287b75594b90ee9cd807caf8f0df491385", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/event-dispatcher": "^1" - }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-07-15T12:33:35+00:00" - }, - { - "name": "symfony/finder", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/8661b74dbabc23223f38c9b99d3f8ade71170430", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ad157299ced81a637fade1efcadd688d6deba5c1", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1" - }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/cache": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0" - }, - "suggest": { - "symfony/mime": "To use the file extension guesser" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v6.0.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/error-handler": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", - "symfony/twig-bridge": "<5.4", - "symfony/validator": "<5.4", - "twig/twig": "<2.13" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/process": "^5.4|^6.0", - "symfony/routing": "^5.4|^6.0", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-29T18:12:46+00:00" - }, - { - "name": "symfony/mailer", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mailer.git", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "shasum": "" - }, - "require": { - "egulias/email-validator": "^2.1.10|^3", - "php": ">=8.0.2", - "psr/event-dispatcher": "^1", - "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3" - }, - "conflict": { - "symfony/http-kernel": "<5.4" - }, - "require-dev": { - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/messenger": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/mime", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/2cd9601efd040e56f43360daa68f3c6b0534923a", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "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" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "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.24.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": "2021-10-20T20:35:02+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-11-23T21:10:46+00:00" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44", - "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.23-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.24.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": "2021-09-14T14:02:44+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.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": "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.24.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": "2021-11-30T18:21:41+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-05-27T09:17:38+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:33+00:00" - }, - { - "name": "symfony/polyfill-php81", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:11+00:00" - }, - { - "name": "symfony/process", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/298ed357274c1868c20a0061df256a1250a6c4af", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/routing", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/yaml": "<5.4" - }, - "require-dev": { - "doctrine/annotations": "^1.12", - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/36715ebf9fb9db73db0cb24263c79077c6fe8603", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/container": "^2.0" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "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.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": "2021-11-04T17:53:12+00:00" - }, - { - "name": "symfony/string", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/522144f0c4c004c80d56fa47e40e17028e2eefc2", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.0" - }, - "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/translation-contracts": "^2.0|^3.0", - "symfony/var-exporter": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "files": [ - "Resources/functions.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 an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/translation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/71bb15335798f8c4da110911bcf2d2fead7a430d", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.3|^3.0" - }, - "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" - }, - "provide": { - "symfony/translation-implementation": "2.3|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-07T00:29:03+00:00" - }, - { - "name": "symfony/translation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "suggest": { - "symfony/translation-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - } - }, - "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.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": "2021-09-07T12:43:40+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7b701676fc64f9ef11f9b4870f16b48f66be4834", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<5.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-17T16:30:44+00:00" - }, - { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.4", - "source": { - "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" - } - ], - "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", - "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "support": { - "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" - }, - "time": "2021-12-08T09:12:39+00:00" - }, - { - "name": "vlucas/phpdotenv", - "version": "v5.4.1", - "source": { - "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", - "shasum": "" - }, - "require": { - "ext-pcre": "*", - "graham-campbell/result-type": "^1.0.2", - "php": "^7.1.3 || ^8.0", - "phpoption/phpoption": "^1.8", - "symfony/polyfill-ctype": "^1.23", - "symfony/polyfill-mbstring": "^1.23.1", - "symfony/polyfill-php80": "^1.23.1" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" - }, - "suggest": { - "ext-filter": "Required to use the boolean validator." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.4-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.4.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", - "type": "tidelift" - } - ], - "time": "2021-12-12T23:22:04+00:00" - }, - { - "name": "voku/portable-ascii", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/voku/portable-ascii.git", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/9bd89e83cecdf8c37b64909454249eaed98b2c89", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89", - "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.0" - }, - "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-01-24T18:59:03+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "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.10.0" - }, - "time": "2021-03-09T10:59:23+00:00" - } - ], - "packages-dev": [ - { - "name": "doctrine/instantiator", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.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%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2020-11-10T18:47:58+00:00" - }, - { - "name": "facade/ignition-contracts", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/facade/ignition-contracts.git", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^v2.15.8", - "phpunit/phpunit": "^9.3.11", - "vimeo/psalm": "^3.17.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Facade\\IgnitionContracts\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://flareapp.io", - "role": "Developer" - } - ], - "description": "Solution contracts for Ignition", - "homepage": "https://github.com/facade/ignition-contracts", - "keywords": [ - "contracts", - "flare", - "ignition" - ], - "support": { - "issues": "https://github.com/facade/ignition-contracts/issues", - "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" - }, - "time": "2020-10-16T08:27:54+00:00" - }, - { - "name": "fakerphp/faker", - "version": "v1.19.0", - "source": { - "type": "git", - "url": "https://github.com/FakerPHP/Faker.git", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^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": "*", - "symfony/phpunit-bridge": "^4.4 || ^5.2" - }, - "suggest": { - "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", - "ext-curl": "Required by Faker\\Provider\\Image to download images.", - "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", - "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.19-dev" - } - }, - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "François Zaninotto" - } - ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], - "support": { - "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0" - }, - "time": "2022-02-02T17:38:57+00:00" - }, - { - "name": "filp/whoops", - "version": "2.14.5", - "source": { - "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "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.14.5" - }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "time": "2022-01-07T12:00:00+00:00" - }, - { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "shasum": "" - }, - "require": { - "php": "^5.3|^7.0|^8.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" - }, - "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "classmap": [ - "hamcrest" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "This is the PHP port of Hamcrest Matchers", - "keywords": [ - "test" - ], - "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" - }, - "time": "2020-07-09T08:09:16+00:00" - }, - { - "name": "laravel/sail", - "version": "v1.13.2", - "source": { - "type": "git", - "url": "https://github.com/laravel/sail.git", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.0|^9.0", - "illuminate/contracts": "^8.0|^9.0", - "illuminate/support": "^8.0|^9.0", - "php": "^7.3|^8.0" - }, - "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": "2022-02-08T14:14:12+00:00" - }, - { - "name": "mockery/mockery", - "version": "1.5.0", - "source": { - "type": "git", - "url": "https://github.com/mockery/mockery.git", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "shasum": "" - }, - "require": { - "hamcrest/hamcrest-php": "^2.0.1", - "lib-pcre": ">=7.0", - "php": "^7.3 || ^8.0" - }, - "conflict": { - "phpunit/phpunit": "<8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-0": { - "Mockery": "library/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" - } - ], - "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": { - "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.5.0" - }, - "time": "2022-01-20T13:18:17+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.10.2", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "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.10.2" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2020-11-13T09:40:50+00:00" - }, - { - "name": "nunomaduro/collision", - "version": "v6.1.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/collision.git", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "shasum": "" - }, - "require": { - "facade/ignition-contracts": "^1.0.2", - "filp/whoops": "^2.14.5", - "php": "^8.0.0", - "symfony/console": "^6.0.2" - }, - "require-dev": { - "brianium/paratest": "^6.4.1", - "laravel/framework": "^9.0", - "nunomaduro/larastan": "^1.0.2", - "nunomaduro/mock-final-classes": "^1.1.0", - "orchestra/testbench": "^7.0.0", - "phpunit/phpunit": "^9.5.11" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "6.x-dev" - }, - "laravel": { - "providers": [ - "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" - ] - } - }, - "autoload": { - "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": "2022-01-18T17:49:08+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.1.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/15a90844ad40f127afd244c0cad228de2a80052a", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a", - "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.1.1" - }, - "time": "2022-02-07T21:56:48+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.6.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "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.6.0" - }, - "time": "2022-01-04T19:58:01+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" - }, - "time": "2021-12-08T12:19:24+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "9.2.10", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d5850aaf931743067f4bfc1ae4cbd06468400687", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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 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", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.10" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-05T09:12:13+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "3.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-02T12:48:52+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "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/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:58:55+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T05:33:50+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.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/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:16:10+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "9.5.13", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/597cb647654ede35e43b137926dfdfef0fb11743", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.3.1", - "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": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.7", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", - "sebastian/version": "^3.0.2" - }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.13" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-01-24T07:33:35+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:08:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "1.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:08:54+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:30:19+00:00" - }, - { - "name": "sebastian/comparator", - "version": "4.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:49:45+00:00" - }, - { - "name": "sebastian/complexity", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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 calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:52:27+00:00" - }, - { - "name": "sebastian/diff", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:10:38+00:00" - }, - { - "name": "sebastian/environment", - "version": "5.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-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": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:52:38+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "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", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-11-11T14:18:36+00:00" - }, - { - "name": "sebastian/global-state", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-11T13:31:12+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-28T06:42:11+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "http://www.github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:17:30+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:45:17+00:00" - }, - { - "name": "sebastian/type", - "version": "2.3.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-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/2.3.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-15T12:49:02+00:00" - }, - { - "name": "sebastian/version", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:39:44+00:00" - }, - { - "name": "spatie/backtrace", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/backtrace.git", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "ext-json": "*", - "phpunit/phpunit": "^9.3", - "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": { - "issues": "https://github.com/spatie/backtrace/issues", - "source": "https://github.com/spatie/backtrace/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/sponsors/spatie", - "type": "github" - }, - { - "url": "https://spatie.be/open-source/support-us", - "type": "other" - } - ], - "time": "2021-11-09T10:57:15+00:00" - }, - { - "name": "spatie/flare-client-php", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/flare-client-php.git", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "shasum": "" - }, - "require": { - "illuminate/pipeline": "^8.0|^9.0", - "php": "^8.0", - "spatie/backtrace": "^1.2", - "symfony/http-foundation": "^5.0|^6.0", - "symfony/mime": "^5.2|^6.0", - "symfony/process": "^5.2|^6.0", - "symfony/var-dumper": "^5.2|^6.0" - }, - "require-dev": { - "dms/phpunit-arraysubset-asserts": "^0.3.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/phpunit-snapshot-assertions": "^4.0" - }, - "type": "library", - "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.0.1" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2022-02-04T15:21:00+00:00" - }, - { - "name": "spatie/ignition", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/spatie/ignition.git", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/d2d5ba823af3004268556e87dfc94449e4159f5a", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "monolog/monolog": "^2.0", - "php": "^8.0", - "spatie/flare-client-php": "^1.0", - "symfony/console": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "mockery/mockery": "^1.4", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/ray": "^1.32", - "symfony/process": "^5.4|^6.0" - }, - "type": "library", - "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": "2022-01-19T12:57:41+00:00" - }, - { - "name": "spatie/laravel-ignition", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/68250225a9f83b086462c2af1b1139dfde48fbd2", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*", - "illuminate/support": "^8.77|^9.0", - "monolog/monolog": "^2.3", - "php": "^8.0", - "spatie/flare-client-php": "^1.0.1", - "spatie/ignition": "^1.0", - "symfony/console": "^5.0|^6.0", - "symfony/var-dumper": "^5.0|^6.0" - }, - "require-dev": { - "filp/whoops": "^2.14", - "livewire/livewire": "^2.8|dev-develop", - "mockery/mockery": "^1.4", - "nunomaduro/larastan": "^1.0", - "orchestra/testbench": "^6.23|^7.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/laravel-ray": "^1.27" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Spatie\\LaravelIgnition\\IgnitionServiceProvider" - ], - "aliases": { - "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" - } - } - }, - "autoload": { - "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": "2022-02-04T15:25:56+00:00" - }, - { - "name": "squizlabs/php_codesniffer", - "version": "3.6.2", - "source": { - "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", - "shasum": "" - }, - "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.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": "lead" - } - ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", - "keywords": [ - "phpcs", - "standards" - ], - "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" - }, - "time": "2021-12-12T21:44:58+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2021-07-28T10:34:58+00:00" - } - ], - "aliases": [], - "minimum-stability": "dev", - "stability-flags": [], - "prefer-stable": true, - "prefer-lowest": false, - "platform": { - "php": "^8.0" - }, - "platform-dev": [], - "plugin-api-version": "2.1.0" -} diff --git a/Chapter21/onlineStore/config/app.php b/Chapter21/onlineStore/config/app.php deleted file mode 100644 index 1941d7c..0000000 --- a/Chapter21/onlineStore/config/app.php +++ /dev/null @@ -1,197 +0,0 @@ - env('APP_NAME', 'Laravel'), - - /* - |-------------------------------------------------------------------------- - | Application Environment - |-------------------------------------------------------------------------- - | - | This value determines the "environment" your application is currently - | running in. This may determine how you prefer to configure various - | services the application utilizes. Set this in your ".env" file. - | - */ - - 'env' => env('APP_ENV', 'production'), - - /* - |-------------------------------------------------------------------------- - | Application Debug Mode - |-------------------------------------------------------------------------- - | - | When your application is in debug mode, detailed error messages with - | stack traces will be shown on every error that occurs within your - | application. If disabled, a simple generic error page is shown. - | - */ - - 'debug' => (bool) env('APP_DEBUG', false), - - /* - |-------------------------------------------------------------------------- - | Application URL - |-------------------------------------------------------------------------- - | - | This URL is used by the console to properly generate URLs when using - | the Artisan command line tool. You should set this to the root of - | your application so that it is used when running Artisan tasks. - | - */ - - 'url' => env('APP_URL', 'http://localhost'), - - 'asset_url' => env('ASSET_URL', null), - - /* - |-------------------------------------------------------------------------- - | 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', - - /* - |-------------------------------------------------------------------------- - | 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' => [ - - /* - * Laravel Framework Service Providers... - */ - Illuminate\Auth\AuthServiceProvider::class, - Illuminate\Broadcasting\BroadcastServiceProvider::class, - Illuminate\Bus\BusServiceProvider::class, - Illuminate\Cache\CacheServiceProvider::class, - Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, - Illuminate\Cookie\CookieServiceProvider::class, - Illuminate\Database\DatabaseServiceProvider::class, - Illuminate\Encryption\EncryptionServiceProvider::class, - Illuminate\Filesystem\FilesystemServiceProvider::class, - Illuminate\Foundation\Providers\FoundationServiceProvider::class, - Illuminate\Hashing\HashServiceProvider::class, - Illuminate\Mail\MailServiceProvider::class, - Illuminate\Notifications\NotificationServiceProvider::class, - Illuminate\Pagination\PaginationServiceProvider::class, - Illuminate\Pipeline\PipelineServiceProvider::class, - Illuminate\Queue\QueueServiceProvider::class, - Illuminate\Redis\RedisServiceProvider::class, - Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, - Illuminate\Session\SessionServiceProvider::class, - Illuminate\Translation\TranslationServiceProvider::class, - Illuminate\Validation\ValidationServiceProvider::class, - Illuminate\View\ViewServiceProvider::class, - - /* - * 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, - - ], - - /* - |-------------------------------------------------------------------------- - | 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([ - // ... - ])->toArray(), - -]; diff --git a/Chapter21/onlineStore/config/auth.php b/Chapter21/onlineStore/config/auth.php deleted file mode 100644 index d8c6cee..0000000 --- a/Chapter21/onlineStore/config/auth.php +++ /dev/null @@ -1,111 +0,0 @@ - [ - '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 expire 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. - | - */ - - 'passwords' => [ - 'users' => [ - 'provider' => 'users', - 'table' => 'password_resets', - '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/Chapter21/onlineStore/config/broadcasting.php b/Chapter21/onlineStore/config/broadcasting.php deleted file mode 100644 index 67fcbbd..0000000 --- a/Chapter21/onlineStore/config/broadcasting.php +++ /dev/null @@ -1,67 +0,0 @@ - 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'), - 'useTLS' => true, - ], - '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/Chapter21/onlineStore/config/cache.php b/Chapter21/onlineStore/config/cache.php deleted file mode 100644 index 8736c7a..0000000 --- a/Chapter21/onlineStore/config/cache.php +++ /dev/null @@ -1,110 +0,0 @@ - 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'), - ], - - '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 a RAM based store such as APC or Memcached, there might - | be other applications utilizing the same cache. So, we'll specify a - | value to get prefixed to all our keys so we can avoid collisions. - | - */ - - 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'), - -]; diff --git a/Chapter21/onlineStore/config/cors.php b/Chapter21/onlineStore/config/cors.php deleted file mode 100644 index 8a39e6d..0000000 --- a/Chapter21/onlineStore/config/cors.php +++ /dev/null @@ -1,34 +0,0 @@ - ['api/*', 'sanctum/csrf-cookie'], - - 'allowed_methods' => ['*'], - - 'allowed_origins' => ['*'], - - 'allowed_origins_patterns' => [], - - 'allowed_headers' => ['*'], - - 'exposed_headers' => [], - - 'max_age' => 0, - - 'supports_credentials' => false, - -]; diff --git a/Chapter21/onlineStore/config/database.php b/Chapter21/onlineStore/config/database.php deleted file mode 100644 index 0faebae..0000000 --- a/Chapter21/onlineStore/config/database.php +++ /dev/null @@ -1,147 +0,0 @@ - env('DB_CONNECTION', 'mysql'), - - /* - |-------------------------------------------------------------------------- - | Database Connections - |-------------------------------------------------------------------------- - | - | Here are each of the database connections setup for your application. - | Of course, examples of configuring each database platform that is - | supported by Laravel is shown below to make development simple. - | - | - | All database work in Laravel is done through the PHP PDO facilities - | so make sure you have the driver for your particular database of - | choice installed on your machine before you begin development. - | - */ - - 'connections' => [ - - 'sqlite' => [ - 'driver' => 'sqlite', - 'url' => env('DATABASE_URL'), - 'database' => env('DB_DATABASE', database_path('database.sqlite')), - 'prefix' => '', - 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), - ], - - 'mysql' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '3306'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'unix_socket' => env('DB_SOCKET', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - 'pgsql' => [ - 'driver' => 'pgsql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '5432'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - 'search_path' => 'public', - 'sslmode' => 'prefer', - ], - - 'sqlsrv' => [ - 'driver' => 'sqlsrv', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', 'localhost'), - 'port' => env('DB_PORT', '1433'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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'), - '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'), - 'password' => env('REDIS_PASSWORD'), - 'port' => env('REDIS_PORT', '6379'), - 'database' => env('REDIS_CACHE_DB', '1'), - ], - - ], - -]; diff --git a/Chapter21/onlineStore/config/filesystems.php b/Chapter21/onlineStore/config/filesystems.php deleted file mode 100644 index cf5abce..0000000 --- a/Chapter21/onlineStore/config/filesystems.php +++ /dev/null @@ -1,73 +0,0 @@ - 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 setup for each driver as an example of the required options. - | - | Supported Drivers: "local", "ftp", "sftp", "s3" - | - */ - - 'disks' => [ - - 'local' => [ - 'driver' => 'local', - 'root' => storage_path('app'), - ], - - 'public' => [ - 'driver' => 'local', - 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', - 'visibility' => 'public', - ], - - '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), - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter21/onlineStore/config/hashing.php b/Chapter21/onlineStore/config/hashing.php deleted file mode 100644 index bcd3be4..0000000 --- a/Chapter21/onlineStore/config/hashing.php +++ /dev/null @@ -1,52 +0,0 @@ - '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/Chapter21/onlineStore/config/logging.php b/Chapter21/onlineStore/config/logging.php deleted file mode 100644 index fefe088..0000000 --- a/Chapter21/onlineStore/config/logging.php +++ /dev/null @@ -1,119 +0,0 @@ - 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' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), - - /* - |-------------------------------------------------------------------------- - | 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'), - ], - - 'daily' => [ - 'driver' => 'daily', - 'path' => storage_path('logs/laravel.log'), - 'level' => env('LOG_LEVEL', 'debug'), - 'days' => 14, - ], - - 'slack' => [ - 'driver' => 'slack', - 'url' => env('LOG_SLACK_WEBHOOK_URL'), - 'username' => 'Laravel Log', - 'emoji' => ':boom:', - 'level' => env('LOG_LEVEL', 'critical'), - ], - - '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'), - ], - ], - - 'stderr' => [ - 'driver' => 'monolog', - 'level' => env('LOG_LEVEL', 'debug'), - 'handler' => StreamHandler::class, - 'formatter' => env('LOG_STDERR_FORMATTER'), - 'with' => [ - 'stream' => 'php://stderr', - ], - ], - - 'syslog' => [ - 'driver' => 'syslog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'errorlog' => [ - 'driver' => 'errorlog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'null' => [ - 'driver' => 'monolog', - 'handler' => NullHandler::class, - ], - - 'emergency' => [ - 'path' => storage_path('logs/laravel.log'), - ], - ], - -]; diff --git a/Chapter21/onlineStore/config/mail.php b/Chapter21/onlineStore/config/mail.php deleted file mode 100644 index 87b6fe3..0000000 --- a/Chapter21/onlineStore/config/mail.php +++ /dev/null @@ -1,117 +0,0 @@ - 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", - | "postmark", "log", "array", "failover" - | - */ - - 'mailers' => [ - 'smtp' => [ - 'transport' => 'smtp', - '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, - ], - - 'ses' => [ - 'transport' => 'ses', - ], - - 'mailgun' => [ - 'transport' => 'mailgun', - ], - - 'postmark' => [ - 'transport' => 'postmark', - ], - - 'sendmail' => [ - 'transport' => 'sendmail', - 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -t -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/Chapter21/onlineStore/config/queue.php b/Chapter21/onlineStore/config/queue.php deleted file mode 100644 index 25ea5a8..0000000 --- a/Chapter21/onlineStore/config/queue.php +++ /dev/null @@ -1,93 +0,0 @@ - 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, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter21/onlineStore/config/sanctum.php b/Chapter21/onlineStore/config/sanctum.php deleted file mode 100644 index 9281c92..0000000 --- a/Chapter21/onlineStore/config/sanctum.php +++ /dev/null @@ -1,65 +0,0 @@ - explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( - '%s%s', - 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', - env('APP_URL') ? ','.parse_url(env('APP_URL'), PHP_URL_HOST) : '' - ))), - - /* - |-------------------------------------------------------------------------- - | 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/Chapter21/onlineStore/config/services.php b/Chapter21/onlineStore/config/services.php deleted file mode 100644 index 2a1d616..0000000 --- a/Chapter21/onlineStore/config/services.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - 'domain' => env('MAILGUN_DOMAIN'), - 'secret' => env('MAILGUN_SECRET'), - 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), - ], - - '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/Chapter21/onlineStore/config/session.php b/Chapter21/onlineStore/config/session.php deleted file mode 100644 index 8fed97c..0000000 --- a/Chapter21/onlineStore/config/session.php +++ /dev/null @@ -1,201 +0,0 @@ - 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/Chapter21/onlineStore/config/view.php b/Chapter21/onlineStore/config/view.php deleted file mode 100644 index 22b8a18..0000000 --- a/Chapter21/onlineStore/config/view.php +++ /dev/null @@ -1,36 +0,0 @@ - [ - 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/Chapter21/onlineStore/database/.gitignore b/Chapter21/onlineStore/database/.gitignore deleted file mode 100644 index 9b19b93..0000000 --- a/Chapter21/onlineStore/database/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.sqlite* diff --git a/Chapter21/onlineStore/database/factories/UserFactory.php b/Chapter21/onlineStore/database/factories/UserFactory.php deleted file mode 100644 index d6ca926..0000000 --- a/Chapter21/onlineStore/database/factories/UserFactory.php +++ /dev/null @@ -1,42 +0,0 @@ - - */ -class UserFactory extends Factory -{ - /** - * Define the model's default state. - * - * @return array - */ - public function definition() - { - return [ - 'name' => $this->faker->name(), - 'email' => $this->faker->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. - * - * @return \Illuminate\Database\Eloquent\Factories\Factory - */ - public function unverified() - { - return $this->state(function (array $attributes) { - return [ - 'email_verified_at' => null, - ]; - }); - } -} diff --git a/Chapter21/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php b/Chapter21/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php deleted file mode 100644 index cf6b776..0000000 --- a/Chapter21/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->string('name'); - $table->string('email')->unique(); - $table->timestamp('email_verified_at')->nullable(); - $table->string('password'); - $table->rememberToken(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('users'); - } -}; diff --git a/Chapter21/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php b/Chapter21/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php deleted file mode 100644 index 0ee0a36..0000000 --- a/Chapter21/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php +++ /dev/null @@ -1,32 +0,0 @@ -string('email')->index(); - $table->string('token'); - $table->timestamp('created_at')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('password_resets'); - } -} diff --git a/Chapter21/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/Chapter21/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php deleted file mode 100644 index 1719198..0000000 --- a/Chapter21/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php +++ /dev/null @@ -1,36 +0,0 @@ -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. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('failed_jobs'); - } -}; diff --git a/Chapter21/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/Chapter21/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php deleted file mode 100644 index fd235f8..0000000 --- a/Chapter21/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->morphs('tokenable'); - $table->string('name'); - $table->string('token', 64)->unique(); - $table->text('abilities')->nullable(); - $table->timestamp('last_used_at')->nullable(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('personal_access_tokens'); - } -}; diff --git a/Chapter21/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php b/Chapter21/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php deleted file mode 100644 index 2eecdc2..0000000 --- a/Chapter21/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php +++ /dev/null @@ -1,35 +0,0 @@ -id(); - $table->string('name'); - $table->text('description'); - $table->string('image'); - $table->integer('price'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('products'); - } -}; diff --git a/Chapter21/onlineStore/database/seeders/DatabaseSeeder.php b/Chapter21/onlineStore/database/seeders/DatabaseSeeder.php deleted file mode 100644 index 71f673f..0000000 --- a/Chapter21/onlineStore/database/seeders/DatabaseSeeder.php +++ /dev/null @@ -1,19 +0,0 @@ -create(); - } -} diff --git a/Chapter21/onlineStore/lang/en.json b/Chapter21/onlineStore/lang/en.json deleted file mode 100644 index 577680d..0000000 --- a/Chapter21/onlineStore/lang/en.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "The :attribute must contain at least one letter.": "The :attribute must contain at least one letter.", - "The :attribute must contain at least one number.": "The :attribute must contain at least one number.", - "The :attribute must contain at least one symbol.": "The :attribute must contain at least one symbol.", - "The :attribute must contain at least one uppercase and one lowercase letter.": "The :attribute must contain at least one uppercase and one lowercase letter.", - "The given :attribute has appeared in a data leak. Please choose a different :attribute.": "The given :attribute has appeared in a data leak. Please choose a different :attribute." -} diff --git a/Chapter21/onlineStore/lang/en/auth.php b/Chapter21/onlineStore/lang/en/auth.php deleted file mode 100644 index 6598e2c..0000000 --- a/Chapter21/onlineStore/lang/en/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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/Chapter21/onlineStore/lang/en/pagination.php b/Chapter21/onlineStore/lang/en/pagination.php deleted file mode 100644 index d481411..0000000 --- a/Chapter21/onlineStore/lang/en/pagination.php +++ /dev/null @@ -1,19 +0,0 @@ - '« Previous', - 'next' => 'Next »', - -]; diff --git a/Chapter21/onlineStore/lang/en/passwords.php b/Chapter21/onlineStore/lang/en/passwords.php deleted file mode 100644 index 2345a56..0000000 --- a/Chapter21/onlineStore/lang/en/passwords.php +++ /dev/null @@ -1,22 +0,0 @@ - '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/Chapter21/onlineStore/lang/en/validation.php b/Chapter21/onlineStore/lang/en/validation.php deleted file mode 100644 index 783003c..0000000 --- a/Chapter21/onlineStore/lang/en/validation.php +++ /dev/null @@ -1,163 +0,0 @@ - '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' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - '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' => [ - 'numeric' => 'The :attribute must be greater than :value.', - 'file' => 'The :attribute must be greater than :value kilobytes.', - 'string' => 'The :attribute must be greater than :value characters.', - 'array' => 'The :attribute must have more than :value items.', - ], - 'gte' => [ - 'numeric' => 'The :attribute must be greater than or equal to :value.', - 'file' => 'The :attribute must be greater than or equal to :value kilobytes.', - 'string' => 'The :attribute must be greater than or equal to :value characters.', - 'array' => 'The :attribute must have :value items or more.', - ], - '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' => [ - 'numeric' => 'The :attribute must be less than :value.', - 'file' => 'The :attribute must be less than :value kilobytes.', - 'string' => 'The :attribute must be less than :value characters.', - 'array' => 'The :attribute must have less than :value items.', - ], - 'lte' => [ - 'numeric' => 'The :attribute must be less than or equal to :value.', - 'file' => 'The :attribute must be less than or equal to :value kilobytes.', - 'string' => 'The :attribute must be less than or equal to :value characters.', - 'array' => 'The :attribute must not have more than :value items.', - ], - 'mac_address' => 'The :attribute must be a valid MAC address.', - 'max' => [ - 'numeric' => 'The :attribute must not be greater than :max.', - 'file' => 'The :attribute must not be greater than :max kilobytes.', - 'string' => 'The :attribute must not be greater than :max characters.', - 'array' => 'The :attribute must not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - '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.', - 'password' => 'The password is incorrect.', - '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' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - '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/Chapter21/onlineStore/package.json b/Chapter21/onlineStore/package.json deleted file mode 100644 index 7b71681..0000000 --- a/Chapter21/onlineStore/package.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "private": true, - "scripts": { - "dev": "npm run development", - "development": "mix", - "watch": "mix watch", - "watch-poll": "mix watch -- --watch-options-poll=1000", - "hot": "mix watch --hot", - "prod": "npm run production", - "production": "mix --production" - }, - "devDependencies": { - "@popperjs/core": "^2.10.2", - "axios": "^0.25", - "bootstrap": "^5.1.3", - "laravel-mix": "^6.0.6", - "lodash": "^4.17.19", - "postcss": "^8.1.14", - "sass": "^1.32.11", - "sass-loader": "^11.0.1" - } -} diff --git a/Chapter21/onlineStore/phpcs.xml b/Chapter21/onlineStore/phpcs.xml deleted file mode 100644 index a1cf2b6..0000000 --- a/Chapter21/onlineStore/phpcs.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - The coding standard for the Online Store project - - app/ - config/ - database/ - routes/ - */migrations/* - diff --git a/Chapter21/onlineStore/phpunit.xml b/Chapter21/onlineStore/phpunit.xml deleted file mode 100644 index 2ac86a1..0000000 --- a/Chapter21/onlineStore/phpunit.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - ./tests/Unit - - - ./tests/Feature - - - - - ./app - - - - - - - - - - - - - - diff --git a/Chapter21/onlineStore/public/.htaccess b/Chapter21/onlineStore/public/.htaccess deleted file mode 100644 index 3aec5e2..0000000 --- a/Chapter21/onlineStore/public/.htaccess +++ /dev/null @@ -1,21 +0,0 @@ - - - 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/Chapter21/onlineStore/public/css/admin.css b/Chapter21/onlineStore/public/css/admin.css deleted file mode 100644 index d9495a1..0000000 --- a/Chapter21/onlineStore/public/css/admin.css +++ /dev/null @@ -1,33 +0,0 @@ -.copyright { - background-color: #1a252f; -} - -.fixed { - -ms-flex: 0 0 250px; - flex: 0 0 250px; -} - -.content-grey { - background-color: #f8f9fc; -} - -hr { - margin-top: 0.8em; - margin-bottom: 0.8em; -} - -.img-profile { - height: 2rem; - width: 2rem; -} - -.profile-font { - color: #858796 !important; - font-size: 80%; - font-weight: 400; -} - -.card-header { - background-color: #f8f9fc; - border-bottom: 1px solid #e3e6f0; -} diff --git a/Chapter21/onlineStore/public/css/app.css b/Chapter21/onlineStore/public/css/app.css deleted file mode 100644 index cabac36..0000000 --- a/Chapter21/onlineStore/public/css/app.css +++ /dev/null @@ -1,20 +0,0 @@ -.bg-secondary { - background-color: #2c3e50 !important; -} - -.copyright { - background-color: #1a252f; -} - -.bg-primary { - background-color: #1abc9c !important; -} - -nav{ - font-weight: 700; -} - -.img-card{ - height: 18vw; - object-fit: cover; -} diff --git a/Chapter21/onlineStore/public/favicon.ico b/Chapter21/onlineStore/public/favicon.ico deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter21/onlineStore/public/img/game.png b/Chapter21/onlineStore/public/img/game.png deleted file mode 100644 index 85420e8bbc16098bf26b4ee63bde0e91a19d1f2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25896 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 cz>% diff --git a/Chapter21/onlineStore/public/img/safe.png b/Chapter21/onlineStore/public/img/safe.png deleted file mode 100644 index 445942c707af53210931f9f4f99f6d3cb69e5d89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19240 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
    w==XB0?3|p=#`o%NsudE(E-U#KS3Snw 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 o>ir+C;RN10sIS0&a;p - - - - - - - - - - - - - - - - - - diff --git a/Chapter21/onlineStore/public/index.php b/Chapter21/onlineStore/public/index.php deleted file mode 100644 index 1d69f3a..0000000 --- a/Chapter21/onlineStore/public/index.php +++ /dev/null @@ -1,55 +0,0 @@ -make(Kernel::class); - -$response = $kernel->handle( - $request = Request::capture() -)->send(); - -$kernel->terminate($request, $response); diff --git a/Chapter21/onlineStore/public/robots.txt b/Chapter21/onlineStore/public/robots.txt deleted file mode 100644 index eb05362..0000000 --- a/Chapter21/onlineStore/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: diff --git a/Chapter21/onlineStore/resources/css/app.css b/Chapter21/onlineStore/resources/css/app.css deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter21/onlineStore/resources/js/app.js b/Chapter21/onlineStore/resources/js/app.js deleted file mode 100644 index 40c55f6..0000000 --- a/Chapter21/onlineStore/resources/js/app.js +++ /dev/null @@ -1 +0,0 @@ -require('./bootstrap'); diff --git a/Chapter21/onlineStore/resources/js/bootstrap.js b/Chapter21/onlineStore/resources/js/bootstrap.js deleted file mode 100644 index dcdc4df..0000000 --- a/Chapter21/onlineStore/resources/js/bootstrap.js +++ /dev/null @@ -1,32 +0,0 @@ -window._ = require('lodash'); - -try { - require('bootstrap'); -} catch (e) {} - -/** - * 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 = require('axios'); - -window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; - -/** - * 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'; - -// window.Pusher = require('pusher-js'); - -// window.Echo = new Echo({ -// broadcaster: 'pusher', -// key: process.env.MIX_PUSHER_APP_KEY, -// cluster: process.env.MIX_PUSHER_APP_CLUSTER, -// forceTLS: true -// }); diff --git a/Chapter21/onlineStore/resources/sass/_variables.scss b/Chapter21/onlineStore/resources/sass/_variables.scss deleted file mode 100644 index 172daaa..0000000 --- a/Chapter21/onlineStore/resources/sass/_variables.scss +++ /dev/null @@ -1,7 +0,0 @@ -// Body -$body-bg: #f8fafc; - -// Typography -$font-family-sans-serif: 'Nunito', sans-serif; -$font-size-base: 0.9rem; -$line-height-base: 1.6; diff --git a/Chapter21/onlineStore/resources/sass/app.scss b/Chapter21/onlineStore/resources/sass/app.scss deleted file mode 100644 index 3193ffa..0000000 --- a/Chapter21/onlineStore/resources/sass/app.scss +++ /dev/null @@ -1,8 +0,0 @@ -// Fonts -@import url('https://fonts.googleapis.com/css?family=Nunito'); - -// Variables -@import 'variables'; - -// Bootstrap -@import '~bootstrap/scss/bootstrap'; diff --git a/Chapter21/onlineStore/resources/views/admin/home/index.blade.php b/Chapter21/onlineStore/resources/views/admin/home/index.blade.php deleted file mode 100644 index a2b4868..0000000 --- a/Chapter21/onlineStore/resources/views/admin/home/index.blade.php +++ /dev/null @@ -1,12 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
    -
    - Admin Panel - Home Page -
    -
    - Welcome to the Admin Panel, use the sidebar to navigate between the different options. -
    -
    -@endsection diff --git a/Chapter21/onlineStore/resources/views/admin/product/edit.blade.php b/Chapter21/onlineStore/resources/views/admin/product/edit.blade.php deleted file mode 100644 index b8e03d8..0000000 --- a/Chapter21/onlineStore/resources/views/admin/product/edit.blade.php +++ /dev/null @@ -1,61 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
    -
    - Edit Product -
    -
    - @if($errors->any()) -
      - @foreach($errors->all() as $error) -
    • - {{ $error }}
    • - @endforeach -
    - @endif - -
    - @csrf - @method('PUT') -
    -
    -
    - -
    - -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -   -
    -
    -
    - - -
    - -
    -
    -
    -@endsection diff --git a/Chapter21/onlineStore/resources/views/admin/product/index.blade.php b/Chapter21/onlineStore/resources/views/admin/product/index.blade.php deleted file mode 100644 index 19fbe4b..0000000 --- a/Chapter21/onlineStore/resources/views/admin/product/index.blade.php +++ /dev/null @@ -1,98 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
    -
    - Create Products -
    -
    - @if($errors->any()) -
      - @foreach($errors->all() as $error) -
    • - {{ $error }}
    • - @endforeach -
    - @endif - -
    - @csrf -
    -
    -
    - -
    - -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -   -
    -
    -
    - - -
    - -
    -
    -
    - -
    -
    - Manage Products -
    -
    - - - - - - - - - - - @foreach ($viewData["products"] as $product) - - - - - - - @endforeach - -
    IDNameEditDelete
    {{ $product->getId() }}{{ $product->getName() }} - - - - -
    - @csrf - @method('DELETE') - -
    -
    -
    -
    -@endsection diff --git a/Chapter21/onlineStore/resources/views/auth/login.blade.php b/Chapter21/onlineStore/resources/views/auth/login.blade.php deleted file mode 100644 index c7e5ea0..0000000 --- a/Chapter21/onlineStore/resources/views/auth/login.blade.php +++ /dev/null @@ -1,73 +0,0 @@ -@extends('layouts.app') - -@section('content') -
    -@endsection diff --git a/Chapter21/onlineStore/resources/views/auth/passwords/confirm.blade.php b/Chapter21/onlineStore/resources/views/auth/passwords/confirm.blade.php deleted file mode 100644 index f8c8e61..0000000 --- a/Chapter21/onlineStore/resources/views/auth/passwords/confirm.blade.php +++ /dev/null @@ -1,49 +0,0 @@ -@extends('layouts.app') - -@section('content') - -@endsection diff --git a/Chapter21/onlineStore/resources/views/auth/passwords/email.blade.php b/Chapter21/onlineStore/resources/views/auth/passwords/email.blade.php deleted file mode 100644 index d1ac783..0000000 --- a/Chapter21/onlineStore/resources/views/auth/passwords/email.blade.php +++ /dev/null @@ -1,47 +0,0 @@ -@extends('layouts.app') - -@section('content') -
    -
    -
    -
    -
    {{ __('Reset Password') }}
    - -
    - @if (session('status')) - - @endif - -
    - @csrf - -
    - - -
    - - - @error('email') - - {{ $message }} - - @enderror -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -@endsection diff --git a/Chapter21/onlineStore/resources/views/auth/passwords/reset.blade.php b/Chapter21/onlineStore/resources/views/auth/passwords/reset.blade.php deleted file mode 100644 index dccf6c6..0000000 --- a/Chapter21/onlineStore/resources/views/auth/passwords/reset.blade.php +++ /dev/null @@ -1,65 +0,0 @@ -@extends('layouts.app') - -@section('content') -
    -
    -
    -
    -
    {{ __('Reset Password') }}
    - -
    -
    - @csrf - - - -
    - - -
    - - - @error('email') - - {{ $message }} - - @enderror -
    -
    - -
    - - -
    - - - @error('password') - - {{ $message }} - - @enderror -
    -
    - -
    - - -
    - -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -@endsection diff --git a/Chapter21/onlineStore/resources/views/auth/register.blade.php b/Chapter21/onlineStore/resources/views/auth/register.blade.php deleted file mode 100644 index e001a0b..0000000 --- a/Chapter21/onlineStore/resources/views/auth/register.blade.php +++ /dev/null @@ -1,77 +0,0 @@ -@extends('layouts.app') - -@section('content') -
    -
    -
    -
    -
    {{ __('Register') }}
    - -
    -
    - @csrf - -
    - - -
    - - - @error('name') - - {{ $message }} - - @enderror -
    -
    - -
    - - -
    - - - @error('email') - - {{ $message }} - - @enderror -
    -
    - -
    - - -
    - - - @error('password') - - {{ $message }} - - @enderror -
    -
    - -
    - - -
    - -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -@endsection diff --git a/Chapter21/onlineStore/resources/views/auth/verify.blade.php b/Chapter21/onlineStore/resources/views/auth/verify.blade.php deleted file mode 100644 index 9f8c1bc..0000000 --- a/Chapter21/onlineStore/resources/views/auth/verify.blade.php +++ /dev/null @@ -1,28 +0,0 @@ -@extends('layouts.app') - -@section('content') -
    -
    -
    -
    -
    {{ __('Verify Your Email Address') }}
    - -
    - @if (session('resent')) - - @endif - - {{ __('Before proceeding, please check your email for a verification link.') }} - {{ __('If you did not receive the email') }}, -
    - @csrf - . -
    -
    -
    -
    -
    -
    -@endsection diff --git a/Chapter21/onlineStore/resources/views/home.blade.php b/Chapter21/onlineStore/resources/views/home.blade.php deleted file mode 100644 index 1f34466..0000000 --- a/Chapter21/onlineStore/resources/views/home.blade.php +++ /dev/null @@ -1,23 +0,0 @@ -@extends('layouts.app') - -@section('content') -
    -
    -
    -
    -
    {{ __('Dashboard') }}
    - -
    - @if (session('status')) - - @endif - - {{ __('You are logged in!') }} -
    -
    -
    -
    -
    -@endsection diff --git a/Chapter21/onlineStore/resources/views/home/about.blade.php b/Chapter21/onlineStore/resources/views/home/about.blade.php deleted file mode 100644 index f79abf3..0000000 --- a/Chapter21/onlineStore/resources/views/home/about.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    -
    -
    -

    {{ $viewData["description"] }}

    -
    -
    -

    {{ $viewData["author"] }}

    -
    -
    -
    -@endsection diff --git a/Chapter21/onlineStore/resources/views/home/index.blade.php b/Chapter21/onlineStore/resources/views/home/index.blade.php deleted file mode 100644 index 1affb20..0000000 --- a/Chapter21/onlineStore/resources/views/home/index.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('content') -
    -
    - -
    -
    - -
    -
    - -
    -
    -@endsection diff --git a/Chapter21/onlineStore/resources/views/layouts/admin.blade.php b/Chapter21/onlineStore/resources/views/layouts/admin.blade.php deleted file mode 100644 index 4aff3f8..0000000 --- a/Chapter21/onlineStore/resources/views/layouts/admin.blade.php +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - @yield('title', 'Admin - Online Store') - - - -
    - - - -
    - - -
    - @yield('content') -
    -
    -
    - - - - - - - - - diff --git a/Chapter21/onlineStore/resources/views/layouts/app.blade.php b/Chapter21/onlineStore/resources/views/layouts/app.blade.php deleted file mode 100644 index 81308e6..0000000 --- a/Chapter21/onlineStore/resources/views/layouts/app.blade.php +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - @yield('title', 'Online Store') - - - - - -
    -
    -

    @yield('subtitle', 'A Laravel Online Store')

    -
    -
    - - -
    - @yield('content') -
    - - - - - - - diff --git a/Chapter21/onlineStore/resources/views/product/index.blade.php b/Chapter21/onlineStore/resources/views/product/index.blade.php deleted file mode 100644 index 64c3e18..0000000 --- a/Chapter21/onlineStore/resources/views/product/index.blade.php +++ /dev/null @@ -1,18 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    - @foreach ($viewData["products"] as $product) - - @endforeach -
    -@endsection diff --git a/Chapter21/onlineStore/resources/views/product/show.blade.php b/Chapter21/onlineStore/resources/views/product/show.blade.php deleted file mode 100644 index be37a01..0000000 --- a/Chapter21/onlineStore/resources/views/product/show.blade.php +++ /dev/null @@ -1,21 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    -
    -
    - getImage()) }}" class="img-fluid rounded-start"> -
    -
    -
    -
    - {{ $viewData["product"]->getName() }} (${{ $viewData["product"]->getPrice() }}) -
    -

    {{ $viewData["product"]->getDescription() }}

    -

    Add to Cart

    -
    -
    -
    -
    -@endsection diff --git a/Chapter21/onlineStore/resources/views/welcome.blade.php b/Chapter21/onlineStore/resources/views/welcome.blade.php deleted file mode 100644 index c587c72..0000000 --- a/Chapter21/onlineStore/resources/views/welcome.blade.php +++ /dev/null @@ -1,7 +0,0 @@ -@extends('layouts.app') -@section('title', 'Home Page - Online Store') -@section('content') -
    - Welcome to the application -
    -@endsection \ No newline at end of file diff --git a/Chapter21/onlineStore/routes/api.php b/Chapter21/onlineStore/routes/api.php deleted file mode 100644 index eb6fa48..0000000 --- a/Chapter21/onlineStore/routes/api.php +++ /dev/null @@ -1,19 +0,0 @@ -get('/user', function (Request $request) { - return $request->user(); -}); diff --git a/Chapter21/onlineStore/routes/channels.php b/Chapter21/onlineStore/routes/channels.php deleted file mode 100644 index 5d451e1..0000000 --- a/Chapter21/onlineStore/routes/channels.php +++ /dev/null @@ -1,18 +0,0 @@ -id === (int) $id; -}); diff --git a/Chapter21/onlineStore/routes/console.php b/Chapter21/onlineStore/routes/console.php deleted file mode 100644 index e05f4c9..0000000 --- a/Chapter21/onlineStore/routes/console.php +++ /dev/null @@ -1,19 +0,0 @@ -comment(Inspiring::quote()); -})->purpose('Display an inspiring quote'); diff --git a/Chapter21/onlineStore/routes/web.php b/Chapter21/onlineStore/routes/web.php deleted file mode 100644 index 0ee4969..0000000 --- a/Chapter21/onlineStore/routes/web.php +++ /dev/null @@ -1,27 +0,0 @@ -name("home.index"); -Route::get('/about', 'App\Http\Controllers\HomeController@about')->name("home.about"); -Route::get('/products', 'App\Http\Controllers\ProductController@index')->name("product.index"); -Route::get('/products/{id}', 'App\Http\Controllers\ProductController@show')->name("product.show"); -Route::get('/admin', 'App\Http\Controllers\Admin\AdminHomeController@index')->name("admin.home.index"); -Route::get('/admin/products', 'App\Http\Controllers\Admin\AdminProductController@index')->name("admin.product.index"); -Route::post('/admin/products/store', 'App\Http\Controllers\Admin\AdminProductController@store')->name("admin.product.store"); -Route::delete('/admin/products/{id}/delete', 'App\Http\Controllers\Admin\AdminProductController@delete')->name("admin.product.delete"); -Route::get('/admin/products/{id}/edit', 'App\Http\Controllers\Admin\AdminProductController@edit')->name("admin.product.edit"); -Route::put('/admin/products/{id}/update', 'App\Http\Controllers\Admin\AdminProductController@update')->name("admin.product.update"); - -Auth::routes(); diff --git a/Chapter21/onlineStore/storage/app/.gitignore b/Chapter21/onlineStore/storage/app/.gitignore deleted file mode 100644 index 8f4803c..0000000 --- a/Chapter21/onlineStore/storage/app/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!public/ -!.gitignore diff --git a/Chapter21/onlineStore/storage/app/public/.gitignore b/Chapter21/onlineStore/storage/app/public/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter21/onlineStore/storage/app/public/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter21/onlineStore/storage/framework/.gitignore b/Chapter21/onlineStore/storage/framework/.gitignore deleted file mode 100644 index 05c4471..0000000 --- a/Chapter21/onlineStore/storage/framework/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -compiled.php -config.php -down -events.scanned.php -maintenance.php -routes.php -routes.scanned.php -schedule-* -services.json diff --git a/Chapter21/onlineStore/storage/framework/cache/.gitignore b/Chapter21/onlineStore/storage/framework/cache/.gitignore deleted file mode 100644 index 01e4a6c..0000000 --- a/Chapter21/onlineStore/storage/framework/cache/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!data/ -!.gitignore diff --git a/Chapter21/onlineStore/storage/framework/cache/data/.gitignore b/Chapter21/onlineStore/storage/framework/cache/data/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter21/onlineStore/storage/framework/cache/data/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter21/onlineStore/storage/framework/sessions/.gitignore b/Chapter21/onlineStore/storage/framework/sessions/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter21/onlineStore/storage/framework/sessions/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter21/onlineStore/storage/framework/testing/.gitignore b/Chapter21/onlineStore/storage/framework/testing/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter21/onlineStore/storage/framework/testing/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter21/onlineStore/storage/framework/views/.gitignore b/Chapter21/onlineStore/storage/framework/views/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter21/onlineStore/storage/framework/views/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter21/onlineStore/storage/logs/.gitignore b/Chapter21/onlineStore/storage/logs/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter21/onlineStore/storage/logs/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter21/onlineStore/tests/CreatesApplication.php b/Chapter21/onlineStore/tests/CreatesApplication.php deleted file mode 100644 index 547152f..0000000 --- a/Chapter21/onlineStore/tests/CreatesApplication.php +++ /dev/null @@ -1,22 +0,0 @@ -make(Kernel::class)->bootstrap(); - - return $app; - } -} diff --git a/Chapter21/onlineStore/tests/Feature/ExampleTest.php b/Chapter21/onlineStore/tests/Feature/ExampleTest.php deleted file mode 100644 index 78ccc21..0000000 --- a/Chapter21/onlineStore/tests/Feature/ExampleTest.php +++ /dev/null @@ -1,21 +0,0 @@ -get('/'); - - $response->assertStatus(200); - } -} diff --git a/Chapter21/onlineStore/tests/TestCase.php b/Chapter21/onlineStore/tests/TestCase.php deleted file mode 100644 index 2932d4a..0000000 --- a/Chapter21/onlineStore/tests/TestCase.php +++ /dev/null @@ -1,10 +0,0 @@ -assertTrue(true); - } -} diff --git a/Chapter21/onlineStore/webpack.mix.js b/Chapter21/onlineStore/webpack.mix.js deleted file mode 100644 index 1a2a958..0000000 --- a/Chapter21/onlineStore/webpack.mix.js +++ /dev/null @@ -1,16 +0,0 @@ -const mix = require('laravel-mix'); - -/* - |-------------------------------------------------------------------------- - | Mix Asset Management - |-------------------------------------------------------------------------- - | - | Mix provides a clean, fluent API for defining some Webpack build steps - | for your Laravel application. By default, we are compiling the Sass - | file for the application as well as bundling up all the JS files. - | - */ - -mix.js('resources/js/app.js', 'public/js') - .sass('resources/sass/app.scss', 'public/css') - .sourceMaps(); diff --git a/Chapter22/onlineStore/.editorconfig b/Chapter22/onlineStore/.editorconfig deleted file mode 100644 index 1671c9b..0000000 --- a/Chapter22/onlineStore/.editorconfig +++ /dev/null @@ -1,18 +0,0 @@ -root = true - -[*] -charset = utf-8 -end_of_line = lf -insert_final_newline = true -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true - -[*.md] -trim_trailing_whitespace = false - -[*.{yml,yaml}] -indent_size = 2 - -[docker-compose.yml] -indent_size = 4 diff --git a/Chapter22/onlineStore/.env.example b/Chapter22/onlineStore/.env.example deleted file mode 100644 index 8510237..0000000 --- a/Chapter22/onlineStore/.env.example +++ /dev/null @@ -1,52 +0,0 @@ -APP_NAME=Laravel -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=laravel -DB_USERNAME=root -DB_PASSWORD= - -BROADCAST_DRIVER=log -CACHE_DRIVER=file -FILESYSTEM_DISK=local -QUEUE_CONNECTION=sync -SESSION_DRIVER=file -SESSION_LIFETIME=120 - -MEMCACHED_HOST=127.0.0.1 - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -MAIL_MAILER=smtp -MAIL_HOST=mailhog -MAIL_PORT=1025 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS=null -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_APP_CLUSTER=mt1 - -MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/Chapter22/onlineStore/.gitattributes b/Chapter22/onlineStore/.gitattributes deleted file mode 100644 index 510d996..0000000 --- a/Chapter22/onlineStore/.gitattributes +++ /dev/null @@ -1,10 +0,0 @@ -* text=auto - -*.blade.php diff=html -*.css diff=css -*.html diff=html -*.md diff=markdown -*.php diff=php - -/.github export-ignore -CHANGELOG.md export-ignore diff --git a/Chapter22/onlineStore/.gitignore b/Chapter22/onlineStore/.gitignore deleted file mode 100644 index eb003b0..0000000 --- a/Chapter22/onlineStore/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -/node_modules -/public/hot -/public/storage -/storage/*.key -/vendor -.env -.env.backup -.phpunit.result.cache -docker-compose.override.yml -Homestead.json -Homestead.yaml -npm-debug.log -yarn-error.log -/.idea -/.vscode diff --git a/Chapter22/onlineStore/.styleci.yml b/Chapter22/onlineStore/.styleci.yml deleted file mode 100644 index 679a631..0000000 --- a/Chapter22/onlineStore/.styleci.yml +++ /dev/null @@ -1,13 +0,0 @@ -php: - preset: laravel - version: 8 - disabled: - - no_unused_imports - finder: - not-name: - - index.php -js: - finder: - not-name: - - webpack.mix.js -css: true diff --git a/Chapter22/onlineStore/README.md b/Chapter22/onlineStore/README.md deleted file mode 100644 index f171eca..0000000 --- a/Chapter22/onlineStore/README.md +++ /dev/null @@ -1,64 +0,0 @@ -

    - -

    -Build Status -Total Downloads -Latest Stable Version -License -

    - -## About Laravel - -Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as: - -- [Simple, fast routing engine](https://laravel.com/docs/routing). -- [Powerful dependency injection container](https://laravel.com/docs/container). -- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage. -- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent). -- Database agnostic [schema migrations](https://laravel.com/docs/migrations). -- [Robust background job processing](https://laravel.com/docs/queues). -- [Real-time event broadcasting](https://laravel.com/docs/broadcasting). - -Laravel is accessible, powerful, and provides tools required for large, robust applications. - -## Learning Laravel - -Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework. - -If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 2000 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library. - -## Laravel Sponsors - -We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell). - -### Premium Partners - -- **[Vehikl](https://vehikl.com/)** -- **[Tighten Co.](https://tighten.co)** -- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** -- **[64 Robots](https://64robots.com)** -- **[Cubet Techno Labs](https://cubettech.com)** -- **[Cyber-Duck](https://cyber-duck.co.uk)** -- **[Many](https://www.many.co.uk)** -- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)** -- **[DevSquad](https://devsquad.com)** -- **[Curotec](https://www.curotec.com/services/technologies/laravel/)** -- **[OP.GG](https://op.gg)** -- **[WebReinvent](https://webreinvent.com/?utm_source=laravel&utm_medium=github&utm_campaign=patreon-sponsors)** -- **[Lendio](https://lendio.com)** - -## Contributing - -Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions). - -## Code of Conduct - -In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). - -## Security Vulnerabilities - -If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed. - -## License - -The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). diff --git a/Chapter22/onlineStore/app/Console/Kernel.php b/Chapter22/onlineStore/app/Console/Kernel.php deleted file mode 100644 index d8bc1d2..0000000 --- a/Chapter22/onlineStore/app/Console/Kernel.php +++ /dev/null @@ -1,32 +0,0 @@ -command('inspire')->hourly(); - } - - /** - * Register the commands for the application. - * - * @return void - */ - protected function commands() - { - $this->load(__DIR__.'/Commands'); - - require base_path('routes/console.php'); - } -} diff --git a/Chapter22/onlineStore/app/Exceptions/Handler.php b/Chapter22/onlineStore/app/Exceptions/Handler.php deleted file mode 100644 index 8e7fbd1..0000000 --- a/Chapter22/onlineStore/app/Exceptions/Handler.php +++ /dev/null @@ -1,41 +0,0 @@ -> - */ - protected $dontReport = [ - // - ]; - - /** - * A list of the inputs that are never flashed for validation exceptions. - * - * @var array - */ - protected $dontFlash = [ - 'current_password', - 'password', - 'password_confirmation', - ]; - - /** - * Register the exception handling callbacks for the application. - * - * @return void - */ - public function register() - { - $this->reportable(function (Throwable $e) { - // - }); - } -} diff --git a/Chapter22/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php b/Chapter22/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php deleted file mode 100644 index cd78cb3..0000000 --- a/Chapter22/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php +++ /dev/null @@ -1,16 +0,0 @@ -with("viewData", $viewData); - } -} diff --git a/Chapter22/onlineStore/app/Http/Controllers/Admin/AdminProductController.php b/Chapter22/onlineStore/app/Http/Controllers/Admin/AdminProductController.php deleted file mode 100644 index d1c6c52..0000000 --- a/Chapter22/onlineStore/app/Http/Controllers/Admin/AdminProductController.php +++ /dev/null @@ -1,79 +0,0 @@ -with("viewData", $viewData); - } - - public function store(Request $request) - { - Product::validate($request); - - $newProduct = new Product(); - $newProduct->setName($request->input('name')); - $newProduct->setDescription($request->input('description')); - $newProduct->setPrice($request->input('price')); - $newProduct->setImage("game.png"); - $newProduct->save(); - - if ($request->hasFile('image')) { - $imageName = $newProduct->getId().".".$request->file('image')->extension(); - Storage::disk('public')->put( - $imageName, - file_get_contents($request->file('image')->getRealPath()) - ); - $newProduct->setImage($imageName); - $newProduct->save(); - } - - return back(); - } - - public function delete($id) - { - Product::destroy($id); - return back(); - } - - public function edit($id) - { - $viewData = []; - $viewData["title"] = "Admin Page - Edit Product - Online Store"; - $viewData["product"] = Product::findOrFail($id); - return view('admin.product.edit')->with("viewData", $viewData); - } - - public function update(Request $request, $id) - { - Product::validate($request); - - $product = Product::findOrFail($id); - $product->setName($request->input('name')); - $product->setDescription($request->input('description')); - $product->setPrice($request->input('price')); - - if ($request->hasFile('image')) { - $imageName = $product->getId().".".$request->file('image')->extension(); - Storage::disk('public')->put( - $imageName, - file_get_contents($request->file('image')->getRealPath()) - ); - $product->setImage($imageName); - } - - $product->save(); - return redirect()->route('admin.product.index'); - } -} diff --git a/Chapter22/onlineStore/app/Http/Controllers/Auth/ConfirmPasswordController.php b/Chapter22/onlineStore/app/Http/Controllers/Auth/ConfirmPasswordController.php deleted file mode 100644 index 138c1f0..0000000 --- a/Chapter22/onlineStore/app/Http/Controllers/Auth/ConfirmPasswordController.php +++ /dev/null @@ -1,40 +0,0 @@ -middleware('auth'); - } -} diff --git a/Chapter22/onlineStore/app/Http/Controllers/Auth/ForgotPasswordController.php b/Chapter22/onlineStore/app/Http/Controllers/Auth/ForgotPasswordController.php deleted file mode 100644 index 465c39c..0000000 --- a/Chapter22/onlineStore/app/Http/Controllers/Auth/ForgotPasswordController.php +++ /dev/null @@ -1,22 +0,0 @@ -middleware('guest')->except('logout'); - } -} diff --git a/Chapter22/onlineStore/app/Http/Controllers/Auth/RegisterController.php b/Chapter22/onlineStore/app/Http/Controllers/Auth/RegisterController.php deleted file mode 100644 index 87e3a82..0000000 --- a/Chapter22/onlineStore/app/Http/Controllers/Auth/RegisterController.php +++ /dev/null @@ -1,74 +0,0 @@ -middleware('guest'); - } - - /** - * Get a validator for an incoming registration request. - * - * @param array $data - * @return \Illuminate\Contracts\Validation\Validator - */ - protected function validator(array $data) - { - return Validator::make($data, [ - 'name' => ['required', 'string', 'max:255'], - 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], - 'password' => ['required', 'string', 'min:8', 'confirmed'], - ]); - } - - /** - * Create a new user instance after a valid registration. - * - * @param array $data - * @return \App\Models\User - */ - protected function create(array $data) - { - return User::create([ - 'name' => $data['name'], - 'email' => $data['email'], - 'password' => Hash::make($data['password']), - 'balance' => 5000, - ]); - } -} diff --git a/Chapter22/onlineStore/app/Http/Controllers/Auth/ResetPasswordController.php b/Chapter22/onlineStore/app/Http/Controllers/Auth/ResetPasswordController.php deleted file mode 100644 index b1726a3..0000000 --- a/Chapter22/onlineStore/app/Http/Controllers/Auth/ResetPasswordController.php +++ /dev/null @@ -1,30 +0,0 @@ -middleware('auth'); - $this->middleware('signed')->only('verify'); - $this->middleware('throttle:6,1')->only('verify', 'resend'); - } -} diff --git a/Chapter22/onlineStore/app/Http/Controllers/Controller.php b/Chapter22/onlineStore/app/Http/Controllers/Controller.php deleted file mode 100644 index a0a2a8a..0000000 --- a/Chapter22/onlineStore/app/Http/Controllers/Controller.php +++ /dev/null @@ -1,13 +0,0 @@ -with("viewData", $viewData); - } - - public function about() - { - $viewData = []; - $viewData["title"] = "About us - Online Store"; - $viewData["subtitle"] = "About us"; - $viewData["description"] = "This is an about page ..."; - $viewData["author"] = "Developed by: Your Name"; - return view('home.about')->with("viewData", $viewData); - } -} diff --git a/Chapter22/onlineStore/app/Http/Controllers/ProductController.php b/Chapter22/onlineStore/app/Http/Controllers/ProductController.php deleted file mode 100644 index d27a3a3..0000000 --- a/Chapter22/onlineStore/app/Http/Controllers/ProductController.php +++ /dev/null @@ -1,29 +0,0 @@ -with("viewData", $viewData); - } - - public function show($id) - { - $viewData = []; - $product = Product::findOrFail($id); - $viewData["title"] = $product->getName()." - Online Store"; - $viewData["subtitle"] = $product->getName()." - Product information"; - $viewData["product"] = $product; - return view('product.show')->with("viewData", $viewData); - } -} diff --git a/Chapter22/onlineStore/app/Http/Kernel.php b/Chapter22/onlineStore/app/Http/Kernel.php deleted file mode 100644 index d3722c2..0000000 --- a/Chapter22/onlineStore/app/Http/Kernel.php +++ /dev/null @@ -1,67 +0,0 @@ - - */ - protected $middleware = [ - // \App\Http\Middleware\TrustHosts::class, - \App\Http\Middleware\TrustProxies::class, - \Fruitcake\Cors\HandleCors::class, - \App\Http\Middleware\PreventRequestsDuringMaintenance::class, - \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, - \App\Http\Middleware\TrimStrings::class, - \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, - ]; - - /** - * The application's route middleware groups. - * - * @var array> - */ - protected $middlewareGroups = [ - 'web' => [ - \App\Http\Middleware\EncryptCookies::class, - \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, - \Illuminate\Session\Middleware\StartSession::class, - // \Illuminate\Session\Middleware\AuthenticateSession::class, - \Illuminate\View\Middleware\ShareErrorsFromSession::class, - \App\Http\Middleware\VerifyCsrfToken::class, - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - - 'api' => [ - // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, - 'throttle:api', - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - ]; - - /** - * The application's route middleware. - * - * These middleware may be assigned to groups or used individually. - * - * @var array - */ - protected $routeMiddleware = [ - 'auth' => \App\Http\Middleware\Authenticate::class, - 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::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, - 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, - 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, - 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, - ]; -} diff --git a/Chapter22/onlineStore/app/Http/Middleware/Authenticate.php b/Chapter22/onlineStore/app/Http/Middleware/Authenticate.php deleted file mode 100644 index 704089a..0000000 --- a/Chapter22/onlineStore/app/Http/Middleware/Authenticate.php +++ /dev/null @@ -1,21 +0,0 @@ -expectsJson()) { - return route('login'); - } - } -} diff --git a/Chapter22/onlineStore/app/Http/Middleware/EncryptCookies.php b/Chapter22/onlineStore/app/Http/Middleware/EncryptCookies.php deleted file mode 100644 index 867695b..0000000 --- a/Chapter22/onlineStore/app/Http/Middleware/EncryptCookies.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter22/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/Chapter22/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php deleted file mode 100644 index 74cbd9a..0000000 --- a/Chapter22/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter22/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php b/Chapter22/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php deleted file mode 100644 index a2813a0..0000000 --- a/Chapter22/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php +++ /dev/null @@ -1,32 +0,0 @@ -check()) { - return redirect(RouteServiceProvider::HOME); - } - } - - return $next($request); - } -} diff --git a/Chapter22/onlineStore/app/Http/Middleware/TrimStrings.php b/Chapter22/onlineStore/app/Http/Middleware/TrimStrings.php deleted file mode 100644 index 88cadca..0000000 --- a/Chapter22/onlineStore/app/Http/Middleware/TrimStrings.php +++ /dev/null @@ -1,19 +0,0 @@ - - */ - protected $except = [ - 'current_password', - 'password', - 'password_confirmation', - ]; -} diff --git a/Chapter22/onlineStore/app/Http/Middleware/TrustHosts.php b/Chapter22/onlineStore/app/Http/Middleware/TrustHosts.php deleted file mode 100644 index 7186414..0000000 --- a/Chapter22/onlineStore/app/Http/Middleware/TrustHosts.php +++ /dev/null @@ -1,20 +0,0 @@ - - */ - public function hosts() - { - return [ - $this->allSubdomainsOfApplicationUrl(), - ]; - } -} diff --git a/Chapter22/onlineStore/app/Http/Middleware/TrustProxies.php b/Chapter22/onlineStore/app/Http/Middleware/TrustProxies.php deleted file mode 100644 index 3391630..0000000 --- a/Chapter22/onlineStore/app/Http/Middleware/TrustProxies.php +++ /dev/null @@ -1,28 +0,0 @@ -|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/Chapter22/onlineStore/app/Http/Middleware/VerifyCsrfToken.php b/Chapter22/onlineStore/app/Http/Middleware/VerifyCsrfToken.php deleted file mode 100644 index 9e86521..0000000 --- a/Chapter22/onlineStore/app/Http/Middleware/VerifyCsrfToken.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter22/onlineStore/app/Models/Product.php b/Chapter22/onlineStore/app/Models/Product.php deleted file mode 100644 index b8f58f6..0000000 --- a/Chapter22/onlineStore/app/Models/Product.php +++ /dev/null @@ -1,99 +0,0 @@ -attributes['id'] - int - contains the product primary key (id) - * $this->attributes['name'] - string - contains the product name - * $this->attributes['description'] - string - contains the product description - * $this->attributes['image'] - string - contains the product image - * $this->attributes['price'] - int - contains the product price - * $this->attributes['created_at'] - timestamp - contains the product creation date - * $this->attributes['updated_at'] - timestamp - contains the product update date - */ - - public static function validate($request) - { - $request->validate([ - "name" => "required|max:255", - "description" => "required", - "price" => "required|numeric|gt:0", - 'image' => 'image', - ]); - } - - public function getId() - { - return $this->attributes['id']; - } - - public function setId($id) - { - $this->attributes['id'] = $id; - } - - public function getName() - { - return $this->attributes['name']; - } - - public function setName($name) - { - $this->attributes['name'] = $name; - } - - public function getDescription() - { - return $this->attributes['description']; - } - - public function setDescription($description) - { - $this->attributes['description'] = $description; - } - - public function getImage() - { - return $this->attributes['image']; - } - - public function setImage($image) - { - $this->attributes['image'] = $image; - } - - public function getPrice() - { - return $this->attributes['price']; - } - - public function setPrice($price) - { - $this->attributes['price'] = $price; - } - - public function getCreatedAt() - { - return $this->attributes['created_at']; - } - - public function setCreatedAt($createdAt) - { - $this->attributes['created_at'] = $createdAt; - } - - public function getUpdatedAt() - { - return $this->attributes['updated_at']; - } - - public function setUpdatedAt($updatedAt) - { - $this->attributes['updated_at'] = $updatedAt; - } -} diff --git a/Chapter22/onlineStore/app/Models/User.php b/Chapter22/onlineStore/app/Models/User.php deleted file mode 100644 index 0749c5a..0000000 --- a/Chapter22/onlineStore/app/Models/User.php +++ /dev/null @@ -1,139 +0,0 @@ -attributes['id'] - int - contains the user primary key (id) - * $this->attributes['name'] - string - contains the user name - * $this->attributes['email'] - string - contains the user email - * $this->attributes['email_verified_at'] - timestamp - contains the user email verification date - * $this->attributes['password'] - string - contains the user password - * $this->attributes['remember_token'] - string - contains the user password - * $this->attributes['role'] - string - contains the user role (client or admin) - * $this->attributes['balance'] - int - contains the user balance - * $this->attributes['created_at'] - timestamp - contains the user creation date - * $this->attributes['updated_at'] - timestamp - contains the user update date - */ - - /** - * The attributes that are mass assignable. - * - * @var array - */ - protected $fillable = [ - 'name', - 'email', - 'password', - 'balance', - ]; - - /** - * 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', - ]; - - public function getId() - { - return $this->attributes['id']; - } - - public function setId($id) - { - $this->attributes['id'] = $id; - } - - public function getName() - { - return $this->attributes['name']; - } - - public function setName($name) - { - $this->attributes['name'] = $name; - } - - public function getEmail() - { - return $this->attributes['email']; - } - - public function setEmail($email) - { - $this->attributes['email'] = $email; - } - - public function getPassword() - { - return $this->attributes['password']; - } - - public function setPassword($password) - { - $this->attributes['password'] = $password; - } - - public function getRole() - { - return $this->attributes['role']; - } - - public function setRole($role) - { - $this->attributes['role'] = $role; - } - - public function getBalance() - { - return $this->attributes['balance']; - } - - public function setBalance($balance) - { - $this->attributes['balance'] = $balance; - } - - public function getCreatedAt() - { - return $this->attributes['created_at']; - } - - public function setCreatedAt($createdAt) - { - $this->attributes['created_at'] = $createdAt; - } - - public function getUpdatedAt() - { - return $this->attributes['updated_at']; - } - - public function setUpdatedAt($updatedAt) - { - $this->attributes['updated_at'] = $updatedAt; - } -} diff --git a/Chapter22/onlineStore/app/Providers/AppServiceProvider.php b/Chapter22/onlineStore/app/Providers/AppServiceProvider.php deleted file mode 100644 index ee8ca5b..0000000 --- a/Chapter22/onlineStore/app/Providers/AppServiceProvider.php +++ /dev/null @@ -1,28 +0,0 @@ - - */ - protected $policies = [ - // 'App\Models\Model' => 'App\Policies\ModelPolicy', - ]; - - /** - * Register any authentication / authorization services. - * - * @return void - */ - public function boot() - { - $this->registerPolicies(); - - // - } -} diff --git a/Chapter22/onlineStore/app/Providers/BroadcastServiceProvider.php b/Chapter22/onlineStore/app/Providers/BroadcastServiceProvider.php deleted file mode 100644 index 395c518..0000000 --- a/Chapter22/onlineStore/app/Providers/BroadcastServiceProvider.php +++ /dev/null @@ -1,21 +0,0 @@ -> - */ - protected $listen = [ - Registered::class => [ - SendEmailVerificationNotification::class, - ], - ]; - - /** - * Register any events for your application. - * - * @return void - */ - public function boot() - { - // - } -} diff --git a/Chapter22/onlineStore/app/Providers/RouteServiceProvider.php b/Chapter22/onlineStore/app/Providers/RouteServiceProvider.php deleted file mode 100644 index fb766eb..0000000 --- a/Chapter22/onlineStore/app/Providers/RouteServiceProvider.php +++ /dev/null @@ -1,63 +0,0 @@ -configureRateLimiting(); - - $this->routes(function () { - Route::prefix('api') - ->middleware('api') - ->namespace($this->namespace) - ->group(base_path('routes/api.php')); - - Route::middleware('web') - ->namespace($this->namespace) - ->group(base_path('routes/web.php')); - }); - } - - /** - * Configure the rate limiters for the application. - * - * @return void - */ - protected function configureRateLimiting() - { - RateLimiter::for('api', function (Request $request) { - return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); - }); - } -} diff --git a/Chapter22/onlineStore/artisan b/Chapter22/onlineStore/artisan deleted file mode 100644 index 67a3329..0000000 --- a/Chapter22/onlineStore/artisan +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env php -make(Illuminate\Contracts\Console\Kernel::class); - -$status = $kernel->handle( - $input = new Symfony\Component\Console\Input\ArgvInput, - new Symfony\Component\Console\Output\ConsoleOutput -); - -/* -|-------------------------------------------------------------------------- -| Shutdown The Application -|-------------------------------------------------------------------------- -| -| Once Artisan has finished running, we will fire off the shutdown events -| so that any final work may be done by the application before we shut -| down the process. This is the last thing to happen to the request. -| -*/ - -$kernel->terminate($input, $status); - -exit($status); diff --git a/Chapter22/onlineStore/bootstrap/app.php b/Chapter22/onlineStore/bootstrap/app.php deleted file mode 100644 index 037e17d..0000000 --- a/Chapter22/onlineStore/bootstrap/app.php +++ /dev/null @@ -1,55 +0,0 @@ -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/Chapter22/onlineStore/bootstrap/cache/.gitignore b/Chapter22/onlineStore/bootstrap/cache/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter22/onlineStore/bootstrap/cache/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter22/onlineStore/composer.json b/Chapter22/onlineStore/composer.json deleted file mode 100644 index a9459b5..0000000 --- a/Chapter22/onlineStore/composer.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "name": "laravel/laravel", - "type": "project", - "description": "The Laravel Framework.", - "keywords": ["framework", "laravel"], - "license": "MIT", - "require": { - "php": "^8.0", - "fruitcake/laravel-cors": "^2.0.5", - "guzzlehttp/guzzle": "^7.2", - "laravel/framework": "^9.0", - "laravel/sanctum": "^2.14", - "laravel/tinker": "^2.7", - "laravel/ui": "^3.4" - }, - "require-dev": { - "fakerphp/faker": "^1.9.1", - "laravel/sail": "^1.0.1", - "mockery/mockery": "^1.4.4", - "nunomaduro/collision": "^6.1", - "phpunit/phpunit": "^9.5.10", - "spatie/laravel-ignition": "^1.0", - "squizlabs/php_codesniffer": "^3.6" - }, - "autoload": { - "psr-4": { - "App\\": "app/", - "Database\\Factories\\": "database/factories/", - "Database\\Seeders\\": "database/seeders/" - } - }, - "autoload-dev": { - "psr-4": { - "Tests\\": "tests/" - } - }, - "scripts": { - "post-autoload-dump": [ - "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", - "@php artisan package:discover --ansi" - ], - "post-update-cmd": [ - "@php artisan vendor:publish --tag=laravel-assets --ansi --force" - ], - "post-root-package-install": [ - "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" - ], - "post-create-project-cmd": [ - "@php artisan key:generate --ansi" - ] - }, - "extra": { - "laravel": { - "dont-discover": [] - } - }, - "config": { - "optimize-autoloader": true, - "preferred-install": "dist", - "sort-packages": true - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/Chapter22/onlineStore/composer.lock b/Chapter22/onlineStore/composer.lock deleted file mode 100644 index 78c86f1..0000000 --- a/Chapter22/onlineStore/composer.lock +++ /dev/null @@ -1,7921 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "d299b51f0f07ec600b4949240f4664af", - "packages": [ - { - "name": "asm89/stack-cors", - "version": "v2.1.1", - "source": { - "type": "git", - "url": "https://github.com/asm89/stack-cors.git", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4|^5|^6" - }, - "require-dev": { - "phpunit/phpunit": "^7|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "psr-4": { - "Asm89\\Stack\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alexander", - "email": "iam.asm89@gmail.com" - } - ], - "description": "Cross-origin resource sharing library and stack middleware", - "homepage": "https://github.com/asm89/stack-cors", - "keywords": [ - "cors", - "stack" - ], - "support": { - "issues": "https://github.com/asm89/stack-cors/issues", - "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" - }, - "time": "2022-01-18T09:12:03+00:00" - }, - { - "name": "brick/math", - "version": "0.9.3", - "source": { - "type": "git", - "url": "https://github.com/brick/math.git", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", - "vimeo/psalm": "4.9.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Brick\\Math\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Arbitrary-precision arithmetic library", - "keywords": [ - "Arbitrary-precision", - "BigInteger", - "BigRational", - "arithmetic", - "bigdecimal", - "bignum", - "brick", - "math" - ], - "support": { - "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.9.3" - }, - "funding": [ - { - "url": "https://github.com/BenMorel", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/brick/math", - "type": "tidelift" - } - ], - "time": "2021-08-15T20:50:18+00:00" - }, - { - "name": "dflydev/dot-access-data", - "version": "v3.0.1", - "source": { - "type": "git", - "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c", - "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": "^3.14" - }, - "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.1" - }, - "time": "2021-08-13T13:06:58+00:00" - }, - { - "name": "doctrine/inflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "vimeo/psalm": "^4.10" - }, - "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.4" - }, - "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": "2021-10-22T20:16:43+00:00" - }, - { - "name": "doctrine/lexer", - "version": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" - } - }, - "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/1.2.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%2Flexer", - "type": "tidelift" - } - ], - "time": "2022-01-12T08:27:12+00:00" - }, - { - "name": "dragonmantank/cron-expression", - "version": "v3.3.1", - "source": { - "type": "git", - "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "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.1" - }, - "funding": [ - { - "url": "https://github.com/dragonmantank", - "type": "github" - } - ], - "time": "2022-01-18T15:43:28+00:00" - }, - { - "name": "egulias/email-validator", - "version": "3.1.2", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ee0db30118f661fb166bcffbf5d82032df484697", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^1.2", - "php": ">=7.2", - "symfony/polyfill-intl-idn": "^1.15" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^8.5.8|^9.3.3", - "vimeo/psalm": "^4" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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/3.1.2" - }, - "funding": [ - { - "url": "https://github.com/egulias", - "type": "github" - } - ], - "time": "2021-10-11T09:18:27+00:00" - }, - { - "name": "fruitcake/laravel-cors", - "version": "v2.0.5", - "source": { - "type": "git", - "url": "https://github.com/fruitcake/laravel-cors.git", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "shasum": "" - }, - "require": { - "asm89/stack-cors": "^2.0.1", - "illuminate/contracts": "^6|^7|^8|^9", - "illuminate/support": "^6|^7|^8|^9", - "php": ">=7.2", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4.3.4|^5|^6" - }, - "require-dev": { - "laravel/framework": "^6|^7.24|^8", - "orchestra/testbench-dusk": "^4|^5|^6|^7", - "phpunit/phpunit": "^6|^7|^8|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - }, - "laravel": { - "providers": [ - "Fruitcake\\Cors\\CorsServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Fruitcake\\Cors\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fruitcake", - "homepage": "https://fruitcake.nl" - }, - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", - "keywords": [ - "api", - "cors", - "crossdomain", - "laravel" - ], - "support": { - "issues": "https://github.com/fruitcake/laravel-cors/issues", - "source": "https://github.com/fruitcake/laravel-cors/tree/v2.0.5" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "time": "2022-01-03T14:53:04+00:00" - }, - { - "name": "graham-campbell/result-type", - "version": "v1.0.4", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "0690bde05318336c7221785f2a932467f98b64ca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/0690bde05318336c7221785f2a932467f98b64ca", - "reference": "0690bde05318336c7221785f2a932467f98b64ca", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "phpoption/phpoption": "^1.8" - }, - "require-dev": { - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", - "type": "tidelift" - } - ], - "time": "2021-11-21T21:41:47+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "7.4.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.8.3 || ^2.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.4.1", - "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.5 || ^9.3.5", - "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": { - "branch-alias": { - "dev-master": "7.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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.4.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": "2021-12-06T18:43:05+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "1.5.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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/1.5.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "time": "2021-10-22T20:56:57+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.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.4.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.8 || ^9.3.10" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "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.1.0" - }, - "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": "2021-10-06T17:43:30+00:00" - }, - { - "name": "laravel/framework", - "version": "v9.0.1", - "source": { - "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "shasum": "" - }, - "require": { - "doctrine/inflector": "^2.0", - "dragonmantank/cron-expression": "^3.1", - "egulias/email-validator": "^3.1", - "ext-mbstring": "*", - "ext-openssl": "*", - "laravel/serializable-closure": "^1.0", - "league/commonmark": "^2.2", - "league/flysystem": "^3.0", - "monolog/monolog": "^2.0", - "nesbot/carbon": "^2.53.1", - "php": "^8.0.2", - "psr/container": "^1.1.1|^2.0.1", - "psr/log": "^1.0|^2.0|^3.0", - "psr/simple-cache": "^1.0|^2.0|^3.0", - "ramsey/uuid": "^4.2.2", - "symfony/console": "^6.0", - "symfony/error-handler": "^6.0", - "symfony/finder": "^6.0", - "symfony/http-foundation": "^6.0", - "symfony/http-kernel": "^6.0", - "symfony/mailer": "^6.0", - "symfony/mime": "^6.0", - "symfony/process": "^6.0", - "symfony/routing": "^6.0", - "symfony/var-dumper": "^6.0", - "tijsverkoyen/css-to-inline-styles": "^2.2.2", - "vlucas/phpdotenv": "^5.4.1", - "voku/portable-ascii": "^2.0" - }, - "conflict": { - "tightenco/collect": "<5.5.33" - }, - "provide": { - "psr/container-implementation": "1.1|2.0", - "psr/simple-cache-implementation": "1.0|2.0|3.0" - }, - "replace": { - "illuminate/auth": "self.version", - "illuminate/broadcasting": "self.version", - "illuminate/bus": "self.version", - "illuminate/cache": "self.version", - "illuminate/collections": "self.version", - "illuminate/conditionable": "self.version", - "illuminate/config": "self.version", - "illuminate/console": "self.version", - "illuminate/container": "self.version", - "illuminate/contracts": "self.version", - "illuminate/cookie": "self.version", - "illuminate/database": "self.version", - "illuminate/encryption": "self.version", - "illuminate/events": "self.version", - "illuminate/filesystem": "self.version", - "illuminate/hashing": "self.version", - "illuminate/http": "self.version", - "illuminate/log": "self.version", - "illuminate/macroable": "self.version", - "illuminate/mail": "self.version", - "illuminate/notifications": "self.version", - "illuminate/pagination": "self.version", - "illuminate/pipeline": "self.version", - "illuminate/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": { - "aws/aws-sdk-php": "^3.198.1", - "doctrine/dbal": "^2.13.3|^3.1.4", - "fakerphp/faker": "^1.9.2", - "guzzlehttp/guzzle": "^7.2", - "league/flysystem-aws-s3-v3": "^3.0", - "league/flysystem-ftp": "^3.0", - "league/flysystem-sftp-v3": "^3.0", - "mockery/mockery": "^1.4.4", - "orchestra/testbench-core": "^7.0", - "pda/pheanstalk": "^4.0", - "phpstan/phpstan": "^1.0", - "phpunit/phpunit": "^9.5.8", - "predis/predis": "^1.1.9", - "symfony/amazon-mailer": "^6.0", - "symfony/cache": "^6.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.198.1).", - "brianium/paratest": "Required to run tests in parallel (^6.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", - "ext-bcmath": "Required to use the multiple_of validation rule.", - "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.", - "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.2).", - "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-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", - "mockery/mockery": "Required to use mocking (^1.4.4).", - "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).", - "predis/predis": "Required to use the predis connector (^1.1.9).", - "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.0).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^6.0).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.0).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.0).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.0).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.x-dev" - } - }, - "autoload": { - "files": [ - "src/Illuminate/Collections/helpers.php", - "src/Illuminate/Events/functions.php", - "src/Illuminate/Foundation/helpers.php", - "src/Illuminate/Support/helpers.php" - ], - "psr-4": { - "Illuminate\\": "src/Illuminate/", - "Illuminate\\Support\\": [ - "src/Illuminate/Macroable/", - "src/Illuminate/Collections/", - "src/Illuminate/Conditionable/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Laravel Framework.", - "homepage": "https://laravel.com", - "keywords": [ - "framework", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2022-02-09T15:00:05+00:00" - }, - { - "name": "laravel/sanctum", - "version": "v2.14.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/sanctum.git", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/0647a87140c7522e75826cffcadb3ad6e01f71e9", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/contracts": "^6.9|^7.0|^8.0|^9.0", - "illuminate/database": "^6.9|^7.0|^8.0|^9.0", - "illuminate/support": "^6.9|^7.0|^8.0|^9.0", - "php": "^7.2|^8.0" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0", - "phpunit/phpunit": "^8.0|^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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": "2022-01-12T15:07:43+00:00" - }, - { - "name": "laravel/serializable-closure", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/serializable-closure.git", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/65c9faf50d567b65d81764a44526545689e3fe63", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "pestphp/pest": "^1.18", - "phpstan/phpstan": "^0.12.98", - "symfony/var-dumper": "^5.3" - }, - "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": "2022-02-01T16:29:39+00:00" - }, - { - "name": "laravel/tinker", - "version": "v2.7.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/tinker.git", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/5f2f9815b7631b9f586a3de7933c25f9327d4073", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073", - "shasum": "" - }, - "require": { - "illuminate/console": "^6.0|^7.0|^8.0|^9.0", - "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.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", - "phpunit/phpunit": "^8.5.8|^9.3.3" - }, - "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.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.7.0" - }, - "time": "2022-01-10T08:52:49+00:00" - }, - { - "name": "laravel/ui", - "version": "v3.4.3", - "source": { - "type": "git", - "url": "https://github.com/laravel/ui.git", - "reference": "64a0f43492c00780b2261c56cd7007a4f370d95b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/ui/zipball/64a0f43492c00780b2261c56cd7007a4f370d95b", - "reference": "64a0f43492c00780b2261c56cd7007a4f370d95b", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.42|^9.0", - "illuminate/filesystem": "^8.42|^9.0", - "illuminate/support": "^8.82|^9.0", - "illuminate/validation": "^8.42|^9.0", - "php": "^7.3|^8.0" - }, - "require-dev": { - "orchestra/testbench": "^6.23|^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - }, - "laravel": { - "providers": [ - "Laravel\\Ui\\UiServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Laravel\\Ui\\": "src/", - "Illuminate\\Foundation\\Auth\\": "auth-backend/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "Laravel UI utilities and presets.", - "keywords": [ - "laravel", - "ui" - ], - "support": { - "source": "https://github.com/laravel/ui/tree/v3.4.3" - }, - "time": "2022-02-08T14:19:32+00:00" - }, - { - "name": "league/commonmark", - "version": "2.2.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/commonmark.git", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "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.15" - }, - "require-dev": { - "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.0", - "commonmark/commonmark.js": "0.30.0", - "composer/package-versions-deprecated": "^1.8", - "erusev/parsedown": "^1.0", - "ext-json": "*", - "github/gfm": "0.29.0", - "michelf/php-markdown": "^1.4", - "phpstan/phpstan": "^0.12.88 || ^1.0.0", - "phpunit/phpunit": "^9.5.5", - "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", - "unleashedtech/php-coding-standard": "^3.1", - "vimeo/psalm": "^4.7.3" - }, - "suggest": { - "symfony/yaml": "v2.3+ required if using the Front Matter extension" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.3-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": "2022-01-25T14:37:33+00:00" - }, - { - "name": "league/config", - "version": "v1.1.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/config.git", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/config/zipball/a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^3.0.1", - "nette/schema": "^1.2", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.90", - "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": "2021-08-14T12:15:32+00:00" - }, - { - "name": "league/flysystem", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9f8b4260031bfef5497477da53dd57b2aaff0e06", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06", - "shasum": "" - }, - "require": { - "ext-json": "*", - "league/mime-type-detection": "^1.0.0", - "php": "^8.0.2" - }, - "conflict": { - "guzzlehttp/guzzle": "<7.0", - "guzzlehttp/ringphp": "<1.1.1", - "symfony/http-client": "<5.2" - }, - "require-dev": { - "async-aws/s3": "^1.5", - "async-aws/simple-s3": "^1.0", - "aws/aws-sdk-php": "^3.198.1", - "composer/semver": "^3.0", - "ext-fileinfo": "*", - "ext-ftp": "*", - "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.5", - "google/cloud-storage": "^1.23", - "phpseclib/phpseclib": "^2.0", - "phpstan/phpstan": "^0.12.26", - "phpunit/phpunit": "^9.5.11", - "sabre/dav": "^4.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.0.3" - }, - "funding": [ - { - "url": "https://offset.earth/frankdejonge", - "type": "custom" - }, - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2022-01-31T19:41:04+00:00" - }, - { - "name": "league/mime-type-detection", - "version": "1.9.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/aa70e813a6ad3d1558fc927863d47309b4c23e69", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.2", - "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" - }, - "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.9.0" - }, - "funding": [ - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2021-11-21T11:48:40+00:00" - }, - { - "name": "monolog/monolog", - "version": "2.3.5", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd4380d6fc37626e2f799f29d91195040137eba9", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "provide": { - "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7", - "graylog2/gelf-php": "^1.4.2", - "mongodb/mongodb": "^1.8", - "php-amqplib/php-amqplib": "~2.4 || ^3", - "php-console/php-console": "^3.1.3", - "phpspec/prophecy": "^1.6.1", - "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5", - "predis/predis": "^1.1", - "rollbar/rollbar": "^1.3", - "ruflin/elastica": ">=0.90@dev", - "swiftmailer/swiftmailer": "^5.3|^6.0" - }, - "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", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "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": "2.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/2.3.5" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" - } - ], - "time": "2021-10-01T21:08:31+00:00" - }, - { - "name": "nesbot/carbon", - "version": "2.56.0", - "source": { - "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1.8 || ^8.0", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "doctrine/dbal": "^2.0 || ^3.0", - "doctrine/orm": "^2.7", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "phpmd/phpmd": "^2.9", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.54 || ^1.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.14", - "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://opencollective.com/Carbon", - "type": "open_collective" - }, - { - "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", - "type": "tidelift" - } - ], - "time": "2022-01-21T17:08:38+00:00" - }, - { - "name": "nette/schema", - "version": "v1.2.2", - "source": { - "type": "git", - "url": "https://github.com/nette/schema.git", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/9a39cef03a5b34c7de64f551538cbba05c2be5df", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df", - "shasum": "" - }, - "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": ">=7.1 <8.2" - }, - "require-dev": { - "nette/tester": "^2.3 || ^2.4", - "phpstan/phpstan-nette": "^0.12", - "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.2" - }, - "time": "2021-10-15T11:40:02+00:00" - }, - { - "name": "nette/utils", - "version": "v3.2.7", - "source": { - "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/0af4e3de4df9f1543534beab255ccf459e7a2c99", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99", - "shasum": "" - }, - "require": { - "php": ">=7.2 <8.2" - }, - "conflict": { - "nette/di": "<3.0.6" - }, - "require-dev": { - "nette/tester": "~2.0", - "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.3" - }, - "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()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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 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/v3.2.7" - }, - "time": "2022-01-24T11:29:14+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.13.2", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", - "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.13.2" - }, - "time": "2021-11-30T19:35:32+00:00" - }, - { - "name": "phpoption/phpoption", - "version": "1.8.1", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-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.8.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", - "type": "tidelift" - } - ], - "time": "2021-12-04T23:24:31+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.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.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": "http://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/tree/master" - }, - "time": "2020-06-29T06:28:15+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.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": "http://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/master" - }, - "time": "2019-04-30T12:38:16+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.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": "http://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/master" - }, - "time": "2016-08-06T14:39: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.1", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "570292577277f06f590635381a7f761a6cf4f026" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/570292577277f06f590635381a7f761a6cf4f026", - "reference": "570292577277f06f590635381a7f761a6cf4f026", - "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" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "3.17.05.02" - }, - "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.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." - }, - "bin": [ - "bin/psysh" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "0.11.x-dev" - } - }, - "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.1" - }, - "time": "2022-01-03T13:58:38+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": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/ramsey/collection.git", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "shasum": "" - }, - "require": { - "php": "^7.3 || ^8", - "symfony/polyfill-php81": "^1.23" - }, - "require-dev": { - "captainhook/captainhook": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "ergebnis/composer-normalize": "^2.6", - "fakerphp/faker": "^1.5", - "hamcrest/hamcrest-php": "^2", - "jangregor/phpstan-prophecy": "^0.8", - "mockery/mockery": "^1.3", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1", - "phpstan/phpstan": "^0.12.32", - "phpstan/phpstan-mockery": "^0.12.5", - "phpstan/phpstan-phpunit": "^0.12.11", - "phpunit/phpunit": "^8.5 || ^9", - "psy/psysh": "^0.10.4", - "slevomat/coding-standard": "^6.3", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.4" - }, - "type": "library", - "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/1.2.2" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "time": "2021-10-10T03:01:02+00:00" - }, - { - "name": "ramsey/uuid", - "version": "4.2.3", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "shasum": "" - }, - "require": { - "brick/math": "^0.8 || ^0.9", - "ext-json": "*", - "php": "^7.2 || ^8.0", - "ramsey/collection": "^1.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php80": "^1.14" - }, - "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", - "moontoast/math": "^1.1", - "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.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-mockery": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^8.5 || ^9", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" - }, - "suggest": { - "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-ctype": "Enables faster processing of character classification using ctype functions.", - "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": { - "branch-alias": { - "dev-main": "4.x-dev" - }, - "captainhook": { - "force-install": true - } - }, - "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "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.2.3" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2021-09-25T23:10:38+00:00" - }, - { - "name": "symfony/console", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/22e8efd019c3270c4f79376234a3f8752cd25490", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.4|^6.0" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/css-selector", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/1955d595c12c111629cc814d3f2a2ff13580508a", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a", - "shasum": "" - }, - "require": { - "php": ">=8.0.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/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-11-01T23:48:49+00:00" - }, - { - "name": "symfony/error-handler", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/20343b3bad7ebafa38138ddcb97290a24722b57b", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" - }, - "bin": [ - "Resources/bin/patch-type-declarations" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to manage errors and ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6472ea2dd415e925b90ca82be64b8bc6157f3934", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/event-dispatcher-contracts": "^2|^3" - }, - "conflict": { - "symfony/dependency-injection": "<5.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^5.4|^6.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/aa5422287b75594b90ee9cd807caf8f0df491385", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/event-dispatcher": "^1" - }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-07-15T12:33:35+00:00" - }, - { - "name": "symfony/finder", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/8661b74dbabc23223f38c9b99d3f8ade71170430", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ad157299ced81a637fade1efcadd688d6deba5c1", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1" - }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/cache": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0" - }, - "suggest": { - "symfony/mime": "To use the file extension guesser" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v6.0.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/error-handler": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", - "symfony/twig-bridge": "<5.4", - "symfony/validator": "<5.4", - "twig/twig": "<2.13" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/process": "^5.4|^6.0", - "symfony/routing": "^5.4|^6.0", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-29T18:12:46+00:00" - }, - { - "name": "symfony/mailer", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mailer.git", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "shasum": "" - }, - "require": { - "egulias/email-validator": "^2.1.10|^3", - "php": ">=8.0.2", - "psr/event-dispatcher": "^1", - "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3" - }, - "conflict": { - "symfony/http-kernel": "<5.4" - }, - "require-dev": { - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/messenger": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/mime", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/2cd9601efd040e56f43360daa68f3c6b0534923a", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "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" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "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.24.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": "2021-10-20T20:35:02+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-11-23T21:10:46+00:00" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44", - "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.23-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.24.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": "2021-09-14T14:02:44+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.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": "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.24.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": "2021-11-30T18:21:41+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-05-27T09:17:38+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:33+00:00" - }, - { - "name": "symfony/polyfill-php81", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:11+00:00" - }, - { - "name": "symfony/process", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/298ed357274c1868c20a0061df256a1250a6c4af", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/routing", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/yaml": "<5.4" - }, - "require-dev": { - "doctrine/annotations": "^1.12", - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/36715ebf9fb9db73db0cb24263c79077c6fe8603", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/container": "^2.0" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "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.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": "2021-11-04T17:53:12+00:00" - }, - { - "name": "symfony/string", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/522144f0c4c004c80d56fa47e40e17028e2eefc2", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.0" - }, - "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/translation-contracts": "^2.0|^3.0", - "symfony/var-exporter": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "files": [ - "Resources/functions.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 an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/translation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/71bb15335798f8c4da110911bcf2d2fead7a430d", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.3|^3.0" - }, - "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" - }, - "provide": { - "symfony/translation-implementation": "2.3|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-07T00:29:03+00:00" - }, - { - "name": "symfony/translation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "suggest": { - "symfony/translation-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - } - }, - "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.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": "2021-09-07T12:43:40+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7b701676fc64f9ef11f9b4870f16b48f66be4834", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<5.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-17T16:30:44+00:00" - }, - { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.4", - "source": { - "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" - } - ], - "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", - "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "support": { - "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" - }, - "time": "2021-12-08T09:12:39+00:00" - }, - { - "name": "vlucas/phpdotenv", - "version": "v5.4.1", - "source": { - "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", - "shasum": "" - }, - "require": { - "ext-pcre": "*", - "graham-campbell/result-type": "^1.0.2", - "php": "^7.1.3 || ^8.0", - "phpoption/phpoption": "^1.8", - "symfony/polyfill-ctype": "^1.23", - "symfony/polyfill-mbstring": "^1.23.1", - "symfony/polyfill-php80": "^1.23.1" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" - }, - "suggest": { - "ext-filter": "Required to use the boolean validator." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.4-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.4.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", - "type": "tidelift" - } - ], - "time": "2021-12-12T23:22:04+00:00" - }, - { - "name": "voku/portable-ascii", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/voku/portable-ascii.git", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/9bd89e83cecdf8c37b64909454249eaed98b2c89", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89", - "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.0" - }, - "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-01-24T18:59:03+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "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.10.0" - }, - "time": "2021-03-09T10:59:23+00:00" - } - ], - "packages-dev": [ - { - "name": "doctrine/instantiator", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.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%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2020-11-10T18:47:58+00:00" - }, - { - "name": "facade/ignition-contracts", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/facade/ignition-contracts.git", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^v2.15.8", - "phpunit/phpunit": "^9.3.11", - "vimeo/psalm": "^3.17.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Facade\\IgnitionContracts\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://flareapp.io", - "role": "Developer" - } - ], - "description": "Solution contracts for Ignition", - "homepage": "https://github.com/facade/ignition-contracts", - "keywords": [ - "contracts", - "flare", - "ignition" - ], - "support": { - "issues": "https://github.com/facade/ignition-contracts/issues", - "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" - }, - "time": "2020-10-16T08:27:54+00:00" - }, - { - "name": "fakerphp/faker", - "version": "v1.19.0", - "source": { - "type": "git", - "url": "https://github.com/FakerPHP/Faker.git", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^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": "*", - "symfony/phpunit-bridge": "^4.4 || ^5.2" - }, - "suggest": { - "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", - "ext-curl": "Required by Faker\\Provider\\Image to download images.", - "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", - "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.19-dev" - } - }, - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "François Zaninotto" - } - ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], - "support": { - "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0" - }, - "time": "2022-02-02T17:38:57+00:00" - }, - { - "name": "filp/whoops", - "version": "2.14.5", - "source": { - "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "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.14.5" - }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "time": "2022-01-07T12:00:00+00:00" - }, - { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "shasum": "" - }, - "require": { - "php": "^5.3|^7.0|^8.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" - }, - "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "classmap": [ - "hamcrest" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "This is the PHP port of Hamcrest Matchers", - "keywords": [ - "test" - ], - "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" - }, - "time": "2020-07-09T08:09:16+00:00" - }, - { - "name": "laravel/sail", - "version": "v1.13.2", - "source": { - "type": "git", - "url": "https://github.com/laravel/sail.git", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.0|^9.0", - "illuminate/contracts": "^8.0|^9.0", - "illuminate/support": "^8.0|^9.0", - "php": "^7.3|^8.0" - }, - "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": "2022-02-08T14:14:12+00:00" - }, - { - "name": "mockery/mockery", - "version": "1.5.0", - "source": { - "type": "git", - "url": "https://github.com/mockery/mockery.git", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "shasum": "" - }, - "require": { - "hamcrest/hamcrest-php": "^2.0.1", - "lib-pcre": ">=7.0", - "php": "^7.3 || ^8.0" - }, - "conflict": { - "phpunit/phpunit": "<8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-0": { - "Mockery": "library/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" - } - ], - "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": { - "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.5.0" - }, - "time": "2022-01-20T13:18:17+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.10.2", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "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.10.2" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2020-11-13T09:40:50+00:00" - }, - { - "name": "nunomaduro/collision", - "version": "v6.1.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/collision.git", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "shasum": "" - }, - "require": { - "facade/ignition-contracts": "^1.0.2", - "filp/whoops": "^2.14.5", - "php": "^8.0.0", - "symfony/console": "^6.0.2" - }, - "require-dev": { - "brianium/paratest": "^6.4.1", - "laravel/framework": "^9.0", - "nunomaduro/larastan": "^1.0.2", - "nunomaduro/mock-final-classes": "^1.1.0", - "orchestra/testbench": "^7.0.0", - "phpunit/phpunit": "^9.5.11" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "6.x-dev" - }, - "laravel": { - "providers": [ - "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" - ] - } - }, - "autoload": { - "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": "2022-01-18T17:49:08+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.1.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/15a90844ad40f127afd244c0cad228de2a80052a", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a", - "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.1.1" - }, - "time": "2022-02-07T21:56:48+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.6.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "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.6.0" - }, - "time": "2022-01-04T19:58:01+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" - }, - "time": "2021-12-08T12:19:24+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "9.2.10", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d5850aaf931743067f4bfc1ae4cbd06468400687", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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 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", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.10" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-05T09:12:13+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "3.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-02T12:48:52+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "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/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:58:55+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T05:33:50+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.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/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:16:10+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "9.5.13", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/597cb647654ede35e43b137926dfdfef0fb11743", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.3.1", - "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": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.7", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", - "sebastian/version": "^3.0.2" - }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.13" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-01-24T07:33:35+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:08:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "1.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:08:54+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:30:19+00:00" - }, - { - "name": "sebastian/comparator", - "version": "4.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:49:45+00:00" - }, - { - "name": "sebastian/complexity", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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 calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:52:27+00:00" - }, - { - "name": "sebastian/diff", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:10:38+00:00" - }, - { - "name": "sebastian/environment", - "version": "5.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-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": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:52:38+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "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", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-11-11T14:18:36+00:00" - }, - { - "name": "sebastian/global-state", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-11T13:31:12+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-28T06:42:11+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "http://www.github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:17:30+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:45:17+00:00" - }, - { - "name": "sebastian/type", - "version": "2.3.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-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/2.3.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-15T12:49:02+00:00" - }, - { - "name": "sebastian/version", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:39:44+00:00" - }, - { - "name": "spatie/backtrace", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/backtrace.git", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "ext-json": "*", - "phpunit/phpunit": "^9.3", - "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": { - "issues": "https://github.com/spatie/backtrace/issues", - "source": "https://github.com/spatie/backtrace/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/sponsors/spatie", - "type": "github" - }, - { - "url": "https://spatie.be/open-source/support-us", - "type": "other" - } - ], - "time": "2021-11-09T10:57:15+00:00" - }, - { - "name": "spatie/flare-client-php", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/flare-client-php.git", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "shasum": "" - }, - "require": { - "illuminate/pipeline": "^8.0|^9.0", - "php": "^8.0", - "spatie/backtrace": "^1.2", - "symfony/http-foundation": "^5.0|^6.0", - "symfony/mime": "^5.2|^6.0", - "symfony/process": "^5.2|^6.0", - "symfony/var-dumper": "^5.2|^6.0" - }, - "require-dev": { - "dms/phpunit-arraysubset-asserts": "^0.3.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/phpunit-snapshot-assertions": "^4.0" - }, - "type": "library", - "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.0.1" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2022-02-04T15:21:00+00:00" - }, - { - "name": "spatie/ignition", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/spatie/ignition.git", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/d2d5ba823af3004268556e87dfc94449e4159f5a", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "monolog/monolog": "^2.0", - "php": "^8.0", - "spatie/flare-client-php": "^1.0", - "symfony/console": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "mockery/mockery": "^1.4", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/ray": "^1.32", - "symfony/process": "^5.4|^6.0" - }, - "type": "library", - "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": "2022-01-19T12:57:41+00:00" - }, - { - "name": "spatie/laravel-ignition", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/68250225a9f83b086462c2af1b1139dfde48fbd2", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*", - "illuminate/support": "^8.77|^9.0", - "monolog/monolog": "^2.3", - "php": "^8.0", - "spatie/flare-client-php": "^1.0.1", - "spatie/ignition": "^1.0", - "symfony/console": "^5.0|^6.0", - "symfony/var-dumper": "^5.0|^6.0" - }, - "require-dev": { - "filp/whoops": "^2.14", - "livewire/livewire": "^2.8|dev-develop", - "mockery/mockery": "^1.4", - "nunomaduro/larastan": "^1.0", - "orchestra/testbench": "^6.23|^7.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/laravel-ray": "^1.27" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Spatie\\LaravelIgnition\\IgnitionServiceProvider" - ], - "aliases": { - "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" - } - } - }, - "autoload": { - "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": "2022-02-04T15:25:56+00:00" - }, - { - "name": "squizlabs/php_codesniffer", - "version": "3.6.2", - "source": { - "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", - "shasum": "" - }, - "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.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": "lead" - } - ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", - "keywords": [ - "phpcs", - "standards" - ], - "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" - }, - "time": "2021-12-12T21:44:58+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2021-07-28T10:34:58+00:00" - } - ], - "aliases": [], - "minimum-stability": "dev", - "stability-flags": [], - "prefer-stable": true, - "prefer-lowest": false, - "platform": { - "php": "^8.0" - }, - "platform-dev": [], - "plugin-api-version": "2.1.0" -} diff --git a/Chapter22/onlineStore/config/app.php b/Chapter22/onlineStore/config/app.php deleted file mode 100644 index 1941d7c..0000000 --- a/Chapter22/onlineStore/config/app.php +++ /dev/null @@ -1,197 +0,0 @@ - env('APP_NAME', 'Laravel'), - - /* - |-------------------------------------------------------------------------- - | Application Environment - |-------------------------------------------------------------------------- - | - | This value determines the "environment" your application is currently - | running in. This may determine how you prefer to configure various - | services the application utilizes. Set this in your ".env" file. - | - */ - - 'env' => env('APP_ENV', 'production'), - - /* - |-------------------------------------------------------------------------- - | Application Debug Mode - |-------------------------------------------------------------------------- - | - | When your application is in debug mode, detailed error messages with - | stack traces will be shown on every error that occurs within your - | application. If disabled, a simple generic error page is shown. - | - */ - - 'debug' => (bool) env('APP_DEBUG', false), - - /* - |-------------------------------------------------------------------------- - | Application URL - |-------------------------------------------------------------------------- - | - | This URL is used by the console to properly generate URLs when using - | the Artisan command line tool. You should set this to the root of - | your application so that it is used when running Artisan tasks. - | - */ - - 'url' => env('APP_URL', 'http://localhost'), - - 'asset_url' => env('ASSET_URL', null), - - /* - |-------------------------------------------------------------------------- - | 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', - - /* - |-------------------------------------------------------------------------- - | 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' => [ - - /* - * Laravel Framework Service Providers... - */ - Illuminate\Auth\AuthServiceProvider::class, - Illuminate\Broadcasting\BroadcastServiceProvider::class, - Illuminate\Bus\BusServiceProvider::class, - Illuminate\Cache\CacheServiceProvider::class, - Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, - Illuminate\Cookie\CookieServiceProvider::class, - Illuminate\Database\DatabaseServiceProvider::class, - Illuminate\Encryption\EncryptionServiceProvider::class, - Illuminate\Filesystem\FilesystemServiceProvider::class, - Illuminate\Foundation\Providers\FoundationServiceProvider::class, - Illuminate\Hashing\HashServiceProvider::class, - Illuminate\Mail\MailServiceProvider::class, - Illuminate\Notifications\NotificationServiceProvider::class, - Illuminate\Pagination\PaginationServiceProvider::class, - Illuminate\Pipeline\PipelineServiceProvider::class, - Illuminate\Queue\QueueServiceProvider::class, - Illuminate\Redis\RedisServiceProvider::class, - Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, - Illuminate\Session\SessionServiceProvider::class, - Illuminate\Translation\TranslationServiceProvider::class, - Illuminate\Validation\ValidationServiceProvider::class, - Illuminate\View\ViewServiceProvider::class, - - /* - * 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, - - ], - - /* - |-------------------------------------------------------------------------- - | 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([ - // ... - ])->toArray(), - -]; diff --git a/Chapter22/onlineStore/config/auth.php b/Chapter22/onlineStore/config/auth.php deleted file mode 100644 index d8c6cee..0000000 --- a/Chapter22/onlineStore/config/auth.php +++ /dev/null @@ -1,111 +0,0 @@ - [ - '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 expire 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. - | - */ - - 'passwords' => [ - 'users' => [ - 'provider' => 'users', - 'table' => 'password_resets', - '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/Chapter22/onlineStore/config/broadcasting.php b/Chapter22/onlineStore/config/broadcasting.php deleted file mode 100644 index 67fcbbd..0000000 --- a/Chapter22/onlineStore/config/broadcasting.php +++ /dev/null @@ -1,67 +0,0 @@ - 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'), - 'useTLS' => true, - ], - '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/Chapter22/onlineStore/config/cache.php b/Chapter22/onlineStore/config/cache.php deleted file mode 100644 index 8736c7a..0000000 --- a/Chapter22/onlineStore/config/cache.php +++ /dev/null @@ -1,110 +0,0 @@ - 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'), - ], - - '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 a RAM based store such as APC or Memcached, there might - | be other applications utilizing the same cache. So, we'll specify a - | value to get prefixed to all our keys so we can avoid collisions. - | - */ - - 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'), - -]; diff --git a/Chapter22/onlineStore/config/cors.php b/Chapter22/onlineStore/config/cors.php deleted file mode 100644 index 8a39e6d..0000000 --- a/Chapter22/onlineStore/config/cors.php +++ /dev/null @@ -1,34 +0,0 @@ - ['api/*', 'sanctum/csrf-cookie'], - - 'allowed_methods' => ['*'], - - 'allowed_origins' => ['*'], - - 'allowed_origins_patterns' => [], - - 'allowed_headers' => ['*'], - - 'exposed_headers' => [], - - 'max_age' => 0, - - 'supports_credentials' => false, - -]; diff --git a/Chapter22/onlineStore/config/database.php b/Chapter22/onlineStore/config/database.php deleted file mode 100644 index 0faebae..0000000 --- a/Chapter22/onlineStore/config/database.php +++ /dev/null @@ -1,147 +0,0 @@ - env('DB_CONNECTION', 'mysql'), - - /* - |-------------------------------------------------------------------------- - | Database Connections - |-------------------------------------------------------------------------- - | - | Here are each of the database connections setup for your application. - | Of course, examples of configuring each database platform that is - | supported by Laravel is shown below to make development simple. - | - | - | All database work in Laravel is done through the PHP PDO facilities - | so make sure you have the driver for your particular database of - | choice installed on your machine before you begin development. - | - */ - - 'connections' => [ - - 'sqlite' => [ - 'driver' => 'sqlite', - 'url' => env('DATABASE_URL'), - 'database' => env('DB_DATABASE', database_path('database.sqlite')), - 'prefix' => '', - 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), - ], - - 'mysql' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '3306'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'unix_socket' => env('DB_SOCKET', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - 'pgsql' => [ - 'driver' => 'pgsql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '5432'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - 'search_path' => 'public', - 'sslmode' => 'prefer', - ], - - 'sqlsrv' => [ - 'driver' => 'sqlsrv', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', 'localhost'), - 'port' => env('DB_PORT', '1433'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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'), - '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'), - 'password' => env('REDIS_PASSWORD'), - 'port' => env('REDIS_PORT', '6379'), - 'database' => env('REDIS_CACHE_DB', '1'), - ], - - ], - -]; diff --git a/Chapter22/onlineStore/config/filesystems.php b/Chapter22/onlineStore/config/filesystems.php deleted file mode 100644 index cf5abce..0000000 --- a/Chapter22/onlineStore/config/filesystems.php +++ /dev/null @@ -1,73 +0,0 @@ - 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 setup for each driver as an example of the required options. - | - | Supported Drivers: "local", "ftp", "sftp", "s3" - | - */ - - 'disks' => [ - - 'local' => [ - 'driver' => 'local', - 'root' => storage_path('app'), - ], - - 'public' => [ - 'driver' => 'local', - 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', - 'visibility' => 'public', - ], - - '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), - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter22/onlineStore/config/hashing.php b/Chapter22/onlineStore/config/hashing.php deleted file mode 100644 index bcd3be4..0000000 --- a/Chapter22/onlineStore/config/hashing.php +++ /dev/null @@ -1,52 +0,0 @@ - '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/Chapter22/onlineStore/config/logging.php b/Chapter22/onlineStore/config/logging.php deleted file mode 100644 index fefe088..0000000 --- a/Chapter22/onlineStore/config/logging.php +++ /dev/null @@ -1,119 +0,0 @@ - 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' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), - - /* - |-------------------------------------------------------------------------- - | 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'), - ], - - 'daily' => [ - 'driver' => 'daily', - 'path' => storage_path('logs/laravel.log'), - 'level' => env('LOG_LEVEL', 'debug'), - 'days' => 14, - ], - - 'slack' => [ - 'driver' => 'slack', - 'url' => env('LOG_SLACK_WEBHOOK_URL'), - 'username' => 'Laravel Log', - 'emoji' => ':boom:', - 'level' => env('LOG_LEVEL', 'critical'), - ], - - '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'), - ], - ], - - 'stderr' => [ - 'driver' => 'monolog', - 'level' => env('LOG_LEVEL', 'debug'), - 'handler' => StreamHandler::class, - 'formatter' => env('LOG_STDERR_FORMATTER'), - 'with' => [ - 'stream' => 'php://stderr', - ], - ], - - 'syslog' => [ - 'driver' => 'syslog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'errorlog' => [ - 'driver' => 'errorlog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'null' => [ - 'driver' => 'monolog', - 'handler' => NullHandler::class, - ], - - 'emergency' => [ - 'path' => storage_path('logs/laravel.log'), - ], - ], - -]; diff --git a/Chapter22/onlineStore/config/mail.php b/Chapter22/onlineStore/config/mail.php deleted file mode 100644 index 87b6fe3..0000000 --- a/Chapter22/onlineStore/config/mail.php +++ /dev/null @@ -1,117 +0,0 @@ - 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", - | "postmark", "log", "array", "failover" - | - */ - - 'mailers' => [ - 'smtp' => [ - 'transport' => 'smtp', - '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, - ], - - 'ses' => [ - 'transport' => 'ses', - ], - - 'mailgun' => [ - 'transport' => 'mailgun', - ], - - 'postmark' => [ - 'transport' => 'postmark', - ], - - 'sendmail' => [ - 'transport' => 'sendmail', - 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -t -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/Chapter22/onlineStore/config/queue.php b/Chapter22/onlineStore/config/queue.php deleted file mode 100644 index 25ea5a8..0000000 --- a/Chapter22/onlineStore/config/queue.php +++ /dev/null @@ -1,93 +0,0 @@ - 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, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter22/onlineStore/config/sanctum.php b/Chapter22/onlineStore/config/sanctum.php deleted file mode 100644 index 9281c92..0000000 --- a/Chapter22/onlineStore/config/sanctum.php +++ /dev/null @@ -1,65 +0,0 @@ - explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( - '%s%s', - 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', - env('APP_URL') ? ','.parse_url(env('APP_URL'), PHP_URL_HOST) : '' - ))), - - /* - |-------------------------------------------------------------------------- - | 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/Chapter22/onlineStore/config/services.php b/Chapter22/onlineStore/config/services.php deleted file mode 100644 index 2a1d616..0000000 --- a/Chapter22/onlineStore/config/services.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - 'domain' => env('MAILGUN_DOMAIN'), - 'secret' => env('MAILGUN_SECRET'), - 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), - ], - - '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/Chapter22/onlineStore/config/session.php b/Chapter22/onlineStore/config/session.php deleted file mode 100644 index 8fed97c..0000000 --- a/Chapter22/onlineStore/config/session.php +++ /dev/null @@ -1,201 +0,0 @@ - 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/Chapter22/onlineStore/config/view.php b/Chapter22/onlineStore/config/view.php deleted file mode 100644 index 22b8a18..0000000 --- a/Chapter22/onlineStore/config/view.php +++ /dev/null @@ -1,36 +0,0 @@ - [ - 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/Chapter22/onlineStore/database/.gitignore b/Chapter22/onlineStore/database/.gitignore deleted file mode 100644 index 9b19b93..0000000 --- a/Chapter22/onlineStore/database/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.sqlite* diff --git a/Chapter22/onlineStore/database/factories/UserFactory.php b/Chapter22/onlineStore/database/factories/UserFactory.php deleted file mode 100644 index d6ca926..0000000 --- a/Chapter22/onlineStore/database/factories/UserFactory.php +++ /dev/null @@ -1,42 +0,0 @@ - - */ -class UserFactory extends Factory -{ - /** - * Define the model's default state. - * - * @return array - */ - public function definition() - { - return [ - 'name' => $this->faker->name(), - 'email' => $this->faker->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. - * - * @return \Illuminate\Database\Eloquent\Factories\Factory - */ - public function unverified() - { - return $this->state(function (array $attributes) { - return [ - 'email_verified_at' => null, - ]; - }); - } -} diff --git a/Chapter22/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php b/Chapter22/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php deleted file mode 100644 index cf6b776..0000000 --- a/Chapter22/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->string('name'); - $table->string('email')->unique(); - $table->timestamp('email_verified_at')->nullable(); - $table->string('password'); - $table->rememberToken(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('users'); - } -}; diff --git a/Chapter22/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php b/Chapter22/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php deleted file mode 100644 index 0ee0a36..0000000 --- a/Chapter22/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php +++ /dev/null @@ -1,32 +0,0 @@ -string('email')->index(); - $table->string('token'); - $table->timestamp('created_at')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('password_resets'); - } -} diff --git a/Chapter22/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/Chapter22/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php deleted file mode 100644 index 1719198..0000000 --- a/Chapter22/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php +++ /dev/null @@ -1,36 +0,0 @@ -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. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('failed_jobs'); - } -}; diff --git a/Chapter22/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/Chapter22/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php deleted file mode 100644 index fd235f8..0000000 --- a/Chapter22/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->morphs('tokenable'); - $table->string('name'); - $table->string('token', 64)->unique(); - $table->text('abilities')->nullable(); - $table->timestamp('last_used_at')->nullable(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('personal_access_tokens'); - } -}; diff --git a/Chapter22/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php b/Chapter22/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php deleted file mode 100644 index 2eecdc2..0000000 --- a/Chapter22/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php +++ /dev/null @@ -1,35 +0,0 @@ -id(); - $table->string('name'); - $table->text('description'); - $table->string('image'); - $table->integer('price'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('products'); - } -}; diff --git a/Chapter22/onlineStore/database/migrations/2022_02_12_140820_alter_users_table.php b/Chapter22/onlineStore/database/migrations/2022_02_12_140820_alter_users_table.php deleted file mode 100644 index 5bfcf7e..0000000 --- a/Chapter22/onlineStore/database/migrations/2022_02_12_140820_alter_users_table.php +++ /dev/null @@ -1,34 +0,0 @@ -string('role')->default('client'); - $table->integer('balance'); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::table('users', function (Blueprint $table) { - $table->dropColumn(['role']); - $table->dropColumn(['balance']); - }); - } -}; diff --git a/Chapter22/onlineStore/database/seeders/DatabaseSeeder.php b/Chapter22/onlineStore/database/seeders/DatabaseSeeder.php deleted file mode 100644 index 71f673f..0000000 --- a/Chapter22/onlineStore/database/seeders/DatabaseSeeder.php +++ /dev/null @@ -1,19 +0,0 @@ -create(); - } -} diff --git a/Chapter22/onlineStore/lang/en.json b/Chapter22/onlineStore/lang/en.json deleted file mode 100644 index 577680d..0000000 --- a/Chapter22/onlineStore/lang/en.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "The :attribute must contain at least one letter.": "The :attribute must contain at least one letter.", - "The :attribute must contain at least one number.": "The :attribute must contain at least one number.", - "The :attribute must contain at least one symbol.": "The :attribute must contain at least one symbol.", - "The :attribute must contain at least one uppercase and one lowercase letter.": "The :attribute must contain at least one uppercase and one lowercase letter.", - "The given :attribute has appeared in a data leak. Please choose a different :attribute.": "The given :attribute has appeared in a data leak. Please choose a different :attribute." -} diff --git a/Chapter22/onlineStore/lang/en/auth.php b/Chapter22/onlineStore/lang/en/auth.php deleted file mode 100644 index 6598e2c..0000000 --- a/Chapter22/onlineStore/lang/en/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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/Chapter22/onlineStore/lang/en/pagination.php b/Chapter22/onlineStore/lang/en/pagination.php deleted file mode 100644 index d481411..0000000 --- a/Chapter22/onlineStore/lang/en/pagination.php +++ /dev/null @@ -1,19 +0,0 @@ - '« Previous', - 'next' => 'Next »', - -]; diff --git a/Chapter22/onlineStore/lang/en/passwords.php b/Chapter22/onlineStore/lang/en/passwords.php deleted file mode 100644 index 2345a56..0000000 --- a/Chapter22/onlineStore/lang/en/passwords.php +++ /dev/null @@ -1,22 +0,0 @@ - '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/Chapter22/onlineStore/lang/en/validation.php b/Chapter22/onlineStore/lang/en/validation.php deleted file mode 100644 index 783003c..0000000 --- a/Chapter22/onlineStore/lang/en/validation.php +++ /dev/null @@ -1,163 +0,0 @@ - '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' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - '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' => [ - 'numeric' => 'The :attribute must be greater than :value.', - 'file' => 'The :attribute must be greater than :value kilobytes.', - 'string' => 'The :attribute must be greater than :value characters.', - 'array' => 'The :attribute must have more than :value items.', - ], - 'gte' => [ - 'numeric' => 'The :attribute must be greater than or equal to :value.', - 'file' => 'The :attribute must be greater than or equal to :value kilobytes.', - 'string' => 'The :attribute must be greater than or equal to :value characters.', - 'array' => 'The :attribute must have :value items or more.', - ], - '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' => [ - 'numeric' => 'The :attribute must be less than :value.', - 'file' => 'The :attribute must be less than :value kilobytes.', - 'string' => 'The :attribute must be less than :value characters.', - 'array' => 'The :attribute must have less than :value items.', - ], - 'lte' => [ - 'numeric' => 'The :attribute must be less than or equal to :value.', - 'file' => 'The :attribute must be less than or equal to :value kilobytes.', - 'string' => 'The :attribute must be less than or equal to :value characters.', - 'array' => 'The :attribute must not have more than :value items.', - ], - 'mac_address' => 'The :attribute must be a valid MAC address.', - 'max' => [ - 'numeric' => 'The :attribute must not be greater than :max.', - 'file' => 'The :attribute must not be greater than :max kilobytes.', - 'string' => 'The :attribute must not be greater than :max characters.', - 'array' => 'The :attribute must not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - '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.', - 'password' => 'The password is incorrect.', - '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' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - '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/Chapter22/onlineStore/package.json b/Chapter22/onlineStore/package.json deleted file mode 100644 index 7b71681..0000000 --- a/Chapter22/onlineStore/package.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "private": true, - "scripts": { - "dev": "npm run development", - "development": "mix", - "watch": "mix watch", - "watch-poll": "mix watch -- --watch-options-poll=1000", - "hot": "mix watch --hot", - "prod": "npm run production", - "production": "mix --production" - }, - "devDependencies": { - "@popperjs/core": "^2.10.2", - "axios": "^0.25", - "bootstrap": "^5.1.3", - "laravel-mix": "^6.0.6", - "lodash": "^4.17.19", - "postcss": "^8.1.14", - "sass": "^1.32.11", - "sass-loader": "^11.0.1" - } -} diff --git a/Chapter22/onlineStore/phpcs.xml b/Chapter22/onlineStore/phpcs.xml deleted file mode 100644 index a1cf2b6..0000000 --- a/Chapter22/onlineStore/phpcs.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - The coding standard for the Online Store project - - app/ - config/ - database/ - routes/ - */migrations/* - diff --git a/Chapter22/onlineStore/phpunit.xml b/Chapter22/onlineStore/phpunit.xml deleted file mode 100644 index 2ac86a1..0000000 --- a/Chapter22/onlineStore/phpunit.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - ./tests/Unit - - - ./tests/Feature - - - - - ./app - - - - - - - - - - - - - - diff --git a/Chapter22/onlineStore/public/.htaccess b/Chapter22/onlineStore/public/.htaccess deleted file mode 100644 index 3aec5e2..0000000 --- a/Chapter22/onlineStore/public/.htaccess +++ /dev/null @@ -1,21 +0,0 @@ - - - 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/Chapter22/onlineStore/public/css/admin.css b/Chapter22/onlineStore/public/css/admin.css deleted file mode 100644 index d9495a1..0000000 --- a/Chapter22/onlineStore/public/css/admin.css +++ /dev/null @@ -1,33 +0,0 @@ -.copyright { - background-color: #1a252f; -} - -.fixed { - -ms-flex: 0 0 250px; - flex: 0 0 250px; -} - -.content-grey { - background-color: #f8f9fc; -} - -hr { - margin-top: 0.8em; - margin-bottom: 0.8em; -} - -.img-profile { - height: 2rem; - width: 2rem; -} - -.profile-font { - color: #858796 !important; - font-size: 80%; - font-weight: 400; -} - -.card-header { - background-color: #f8f9fc; - border-bottom: 1px solid #e3e6f0; -} diff --git a/Chapter22/onlineStore/public/css/app.css b/Chapter22/onlineStore/public/css/app.css deleted file mode 100644 index cabac36..0000000 --- a/Chapter22/onlineStore/public/css/app.css +++ /dev/null @@ -1,20 +0,0 @@ -.bg-secondary { - background-color: #2c3e50 !important; -} - -.copyright { - background-color: #1a252f; -} - -.bg-primary { - background-color: #1abc9c !important; -} - -nav{ - font-weight: 700; -} - -.img-card{ - height: 18vw; - object-fit: cover; -} diff --git a/Chapter22/onlineStore/public/favicon.ico b/Chapter22/onlineStore/public/favicon.ico deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter22/onlineStore/public/img/game.png b/Chapter22/onlineStore/public/img/game.png deleted file mode 100644 index 85420e8bbc16098bf26b4ee63bde0e91a19d1f2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25896 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 cz>% diff --git a/Chapter22/onlineStore/public/img/safe.png b/Chapter22/onlineStore/public/img/safe.png deleted file mode 100644 index 445942c707af53210931f9f4f99f6d3cb69e5d89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19240 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
    w==XB0?3|p=#`o%NsudE(E-U#KS3Snw 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 o>ir+C;RN10sIS0&a;p - - - - - - - - - - - - - - - - - - diff --git a/Chapter22/onlineStore/public/index.php b/Chapter22/onlineStore/public/index.php deleted file mode 100644 index 1d69f3a..0000000 --- a/Chapter22/onlineStore/public/index.php +++ /dev/null @@ -1,55 +0,0 @@ -make(Kernel::class); - -$response = $kernel->handle( - $request = Request::capture() -)->send(); - -$kernel->terminate($request, $response); diff --git a/Chapter22/onlineStore/public/robots.txt b/Chapter22/onlineStore/public/robots.txt deleted file mode 100644 index eb05362..0000000 --- a/Chapter22/onlineStore/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: diff --git a/Chapter22/onlineStore/resources/css/app.css b/Chapter22/onlineStore/resources/css/app.css deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter22/onlineStore/resources/js/app.js b/Chapter22/onlineStore/resources/js/app.js deleted file mode 100644 index 40c55f6..0000000 --- a/Chapter22/onlineStore/resources/js/app.js +++ /dev/null @@ -1 +0,0 @@ -require('./bootstrap'); diff --git a/Chapter22/onlineStore/resources/js/bootstrap.js b/Chapter22/onlineStore/resources/js/bootstrap.js deleted file mode 100644 index dcdc4df..0000000 --- a/Chapter22/onlineStore/resources/js/bootstrap.js +++ /dev/null @@ -1,32 +0,0 @@ -window._ = require('lodash'); - -try { - require('bootstrap'); -} catch (e) {} - -/** - * 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 = require('axios'); - -window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; - -/** - * 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'; - -// window.Pusher = require('pusher-js'); - -// window.Echo = new Echo({ -// broadcaster: 'pusher', -// key: process.env.MIX_PUSHER_APP_KEY, -// cluster: process.env.MIX_PUSHER_APP_CLUSTER, -// forceTLS: true -// }); diff --git a/Chapter22/onlineStore/resources/sass/_variables.scss b/Chapter22/onlineStore/resources/sass/_variables.scss deleted file mode 100644 index 172daaa..0000000 --- a/Chapter22/onlineStore/resources/sass/_variables.scss +++ /dev/null @@ -1,7 +0,0 @@ -// Body -$body-bg: #f8fafc; - -// Typography -$font-family-sans-serif: 'Nunito', sans-serif; -$font-size-base: 0.9rem; -$line-height-base: 1.6; diff --git a/Chapter22/onlineStore/resources/sass/app.scss b/Chapter22/onlineStore/resources/sass/app.scss deleted file mode 100644 index 3193ffa..0000000 --- a/Chapter22/onlineStore/resources/sass/app.scss +++ /dev/null @@ -1,8 +0,0 @@ -// Fonts -@import url('https://fonts.googleapis.com/css?family=Nunito'); - -// Variables -@import 'variables'; - -// Bootstrap -@import '~bootstrap/scss/bootstrap'; diff --git a/Chapter22/onlineStore/resources/views/admin/home/index.blade.php b/Chapter22/onlineStore/resources/views/admin/home/index.blade.php deleted file mode 100644 index a2b4868..0000000 --- a/Chapter22/onlineStore/resources/views/admin/home/index.blade.php +++ /dev/null @@ -1,12 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
    -
    - Admin Panel - Home Page -
    -
    - Welcome to the Admin Panel, use the sidebar to navigate between the different options. -
    -
    -@endsection diff --git a/Chapter22/onlineStore/resources/views/admin/product/edit.blade.php b/Chapter22/onlineStore/resources/views/admin/product/edit.blade.php deleted file mode 100644 index b8e03d8..0000000 --- a/Chapter22/onlineStore/resources/views/admin/product/edit.blade.php +++ /dev/null @@ -1,61 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
    -
    - Edit Product -
    -
    - @if($errors->any()) -
      - @foreach($errors->all() as $error) -
    • - {{ $error }}
    • - @endforeach -
    - @endif - -
    - @csrf - @method('PUT') -
    -
    -
    - -
    - -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -   -
    -
    -
    - - -
    - -
    -
    -
    -@endsection diff --git a/Chapter22/onlineStore/resources/views/admin/product/index.blade.php b/Chapter22/onlineStore/resources/views/admin/product/index.blade.php deleted file mode 100644 index 19fbe4b..0000000 --- a/Chapter22/onlineStore/resources/views/admin/product/index.blade.php +++ /dev/null @@ -1,98 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
    -
    - Create Products -
    -
    - @if($errors->any()) -
      - @foreach($errors->all() as $error) -
    • - {{ $error }}
    • - @endforeach -
    - @endif - -
    - @csrf -
    -
    -
    - -
    - -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -   -
    -
    -
    - - -
    - -
    -
    -
    - -
    -
    - Manage Products -
    -
    - - - - - - - - - - - @foreach ($viewData["products"] as $product) - - - - - - - @endforeach - -
    IDNameEditDelete
    {{ $product->getId() }}{{ $product->getName() }} - - - - -
    - @csrf - @method('DELETE') - -
    -
    -
    -
    -@endsection diff --git a/Chapter22/onlineStore/resources/views/auth/login.blade.php b/Chapter22/onlineStore/resources/views/auth/login.blade.php deleted file mode 100644 index c7e5ea0..0000000 --- a/Chapter22/onlineStore/resources/views/auth/login.blade.php +++ /dev/null @@ -1,73 +0,0 @@ -@extends('layouts.app') - -@section('content') -
    -@endsection diff --git a/Chapter22/onlineStore/resources/views/auth/passwords/confirm.blade.php b/Chapter22/onlineStore/resources/views/auth/passwords/confirm.blade.php deleted file mode 100644 index f8c8e61..0000000 --- a/Chapter22/onlineStore/resources/views/auth/passwords/confirm.blade.php +++ /dev/null @@ -1,49 +0,0 @@ -@extends('layouts.app') - -@section('content') - -@endsection diff --git a/Chapter22/onlineStore/resources/views/auth/passwords/email.blade.php b/Chapter22/onlineStore/resources/views/auth/passwords/email.blade.php deleted file mode 100644 index d1ac783..0000000 --- a/Chapter22/onlineStore/resources/views/auth/passwords/email.blade.php +++ /dev/null @@ -1,47 +0,0 @@ -@extends('layouts.app') - -@section('content') -
    -
    -
    -
    -
    {{ __('Reset Password') }}
    - -
    - @if (session('status')) - - @endif - -
    - @csrf - -
    - - -
    - - - @error('email') - - {{ $message }} - - @enderror -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -@endsection diff --git a/Chapter22/onlineStore/resources/views/auth/passwords/reset.blade.php b/Chapter22/onlineStore/resources/views/auth/passwords/reset.blade.php deleted file mode 100644 index dccf6c6..0000000 --- a/Chapter22/onlineStore/resources/views/auth/passwords/reset.blade.php +++ /dev/null @@ -1,65 +0,0 @@ -@extends('layouts.app') - -@section('content') -
    -
    -
    -
    -
    {{ __('Reset Password') }}
    - -
    -
    - @csrf - - - -
    - - -
    - - - @error('email') - - {{ $message }} - - @enderror -
    -
    - -
    - - -
    - - - @error('password') - - {{ $message }} - - @enderror -
    -
    - -
    - - -
    - -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -@endsection diff --git a/Chapter22/onlineStore/resources/views/auth/register.blade.php b/Chapter22/onlineStore/resources/views/auth/register.blade.php deleted file mode 100644 index e001a0b..0000000 --- a/Chapter22/onlineStore/resources/views/auth/register.blade.php +++ /dev/null @@ -1,77 +0,0 @@ -@extends('layouts.app') - -@section('content') -
    -
    -
    -
    -
    {{ __('Register') }}
    - -
    -
    - @csrf - -
    - - -
    - - - @error('name') - - {{ $message }} - - @enderror -
    -
    - -
    - - -
    - - - @error('email') - - {{ $message }} - - @enderror -
    -
    - -
    - - -
    - - - @error('password') - - {{ $message }} - - @enderror -
    -
    - -
    - - -
    - -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -@endsection diff --git a/Chapter22/onlineStore/resources/views/auth/verify.blade.php b/Chapter22/onlineStore/resources/views/auth/verify.blade.php deleted file mode 100644 index 9f8c1bc..0000000 --- a/Chapter22/onlineStore/resources/views/auth/verify.blade.php +++ /dev/null @@ -1,28 +0,0 @@ -@extends('layouts.app') - -@section('content') -
    -
    -
    -
    -
    {{ __('Verify Your Email Address') }}
    - -
    - @if (session('resent')) - - @endif - - {{ __('Before proceeding, please check your email for a verification link.') }} - {{ __('If you did not receive the email') }}, -
    - @csrf - . -
    -
    -
    -
    -
    -
    -@endsection diff --git a/Chapter22/onlineStore/resources/views/home.blade.php b/Chapter22/onlineStore/resources/views/home.blade.php deleted file mode 100644 index 1f34466..0000000 --- a/Chapter22/onlineStore/resources/views/home.blade.php +++ /dev/null @@ -1,23 +0,0 @@ -@extends('layouts.app') - -@section('content') -
    -
    -
    -
    -
    {{ __('Dashboard') }}
    - -
    - @if (session('status')) - - @endif - - {{ __('You are logged in!') }} -
    -
    -
    -
    -
    -@endsection diff --git a/Chapter22/onlineStore/resources/views/home/about.blade.php b/Chapter22/onlineStore/resources/views/home/about.blade.php deleted file mode 100644 index f79abf3..0000000 --- a/Chapter22/onlineStore/resources/views/home/about.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    -
    -
    -

    {{ $viewData["description"] }}

    -
    -
    -

    {{ $viewData["author"] }}

    -
    -
    -
    -@endsection diff --git a/Chapter22/onlineStore/resources/views/home/index.blade.php b/Chapter22/onlineStore/resources/views/home/index.blade.php deleted file mode 100644 index 1affb20..0000000 --- a/Chapter22/onlineStore/resources/views/home/index.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('content') -
    -
    - -
    -
    - -
    -
    - -
    -
    -@endsection diff --git a/Chapter22/onlineStore/resources/views/layouts/admin.blade.php b/Chapter22/onlineStore/resources/views/layouts/admin.blade.php deleted file mode 100644 index 4aff3f8..0000000 --- a/Chapter22/onlineStore/resources/views/layouts/admin.blade.php +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - @yield('title', 'Admin - Online Store') - - - -
    - - - -
    - - -
    - @yield('content') -
    -
    -
    - - - - - - - - - diff --git a/Chapter22/onlineStore/resources/views/layouts/app.blade.php b/Chapter22/onlineStore/resources/views/layouts/app.blade.php deleted file mode 100644 index 81308e6..0000000 --- a/Chapter22/onlineStore/resources/views/layouts/app.blade.php +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - @yield('title', 'Online Store') - - - - - -
    -
    -

    @yield('subtitle', 'A Laravel Online Store')

    -
    -
    - - -
    - @yield('content') -
    - - - - - - - diff --git a/Chapter22/onlineStore/resources/views/product/index.blade.php b/Chapter22/onlineStore/resources/views/product/index.blade.php deleted file mode 100644 index 64c3e18..0000000 --- a/Chapter22/onlineStore/resources/views/product/index.blade.php +++ /dev/null @@ -1,18 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    - @foreach ($viewData["products"] as $product) - - @endforeach -
    -@endsection diff --git a/Chapter22/onlineStore/resources/views/product/show.blade.php b/Chapter22/onlineStore/resources/views/product/show.blade.php deleted file mode 100644 index be37a01..0000000 --- a/Chapter22/onlineStore/resources/views/product/show.blade.php +++ /dev/null @@ -1,21 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    -
    -
    - getImage()) }}" class="img-fluid rounded-start"> -
    -
    -
    -
    - {{ $viewData["product"]->getName() }} (${{ $viewData["product"]->getPrice() }}) -
    -

    {{ $viewData["product"]->getDescription() }}

    -

    Add to Cart

    -
    -
    -
    -
    -@endsection diff --git a/Chapter22/onlineStore/resources/views/welcome.blade.php b/Chapter22/onlineStore/resources/views/welcome.blade.php deleted file mode 100644 index c587c72..0000000 --- a/Chapter22/onlineStore/resources/views/welcome.blade.php +++ /dev/null @@ -1,7 +0,0 @@ -@extends('layouts.app') -@section('title', 'Home Page - Online Store') -@section('content') -
    - Welcome to the application -
    -@endsection \ No newline at end of file diff --git a/Chapter22/onlineStore/routes/api.php b/Chapter22/onlineStore/routes/api.php deleted file mode 100644 index eb6fa48..0000000 --- a/Chapter22/onlineStore/routes/api.php +++ /dev/null @@ -1,19 +0,0 @@ -get('/user', function (Request $request) { - return $request->user(); -}); diff --git a/Chapter22/onlineStore/routes/channels.php b/Chapter22/onlineStore/routes/channels.php deleted file mode 100644 index 5d451e1..0000000 --- a/Chapter22/onlineStore/routes/channels.php +++ /dev/null @@ -1,18 +0,0 @@ -id === (int) $id; -}); diff --git a/Chapter22/onlineStore/routes/console.php b/Chapter22/onlineStore/routes/console.php deleted file mode 100644 index e05f4c9..0000000 --- a/Chapter22/onlineStore/routes/console.php +++ /dev/null @@ -1,19 +0,0 @@ -comment(Inspiring::quote()); -})->purpose('Display an inspiring quote'); diff --git a/Chapter22/onlineStore/routes/web.php b/Chapter22/onlineStore/routes/web.php deleted file mode 100644 index 0ee4969..0000000 --- a/Chapter22/onlineStore/routes/web.php +++ /dev/null @@ -1,27 +0,0 @@ -name("home.index"); -Route::get('/about', 'App\Http\Controllers\HomeController@about')->name("home.about"); -Route::get('/products', 'App\Http\Controllers\ProductController@index')->name("product.index"); -Route::get('/products/{id}', 'App\Http\Controllers\ProductController@show')->name("product.show"); -Route::get('/admin', 'App\Http\Controllers\Admin\AdminHomeController@index')->name("admin.home.index"); -Route::get('/admin/products', 'App\Http\Controllers\Admin\AdminProductController@index')->name("admin.product.index"); -Route::post('/admin/products/store', 'App\Http\Controllers\Admin\AdminProductController@store')->name("admin.product.store"); -Route::delete('/admin/products/{id}/delete', 'App\Http\Controllers\Admin\AdminProductController@delete')->name("admin.product.delete"); -Route::get('/admin/products/{id}/edit', 'App\Http\Controllers\Admin\AdminProductController@edit')->name("admin.product.edit"); -Route::put('/admin/products/{id}/update', 'App\Http\Controllers\Admin\AdminProductController@update')->name("admin.product.update"); - -Auth::routes(); diff --git a/Chapter22/onlineStore/storage/app/.gitignore b/Chapter22/onlineStore/storage/app/.gitignore deleted file mode 100644 index 8f4803c..0000000 --- a/Chapter22/onlineStore/storage/app/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!public/ -!.gitignore diff --git a/Chapter22/onlineStore/storage/app/public/.gitignore b/Chapter22/onlineStore/storage/app/public/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter22/onlineStore/storage/app/public/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter22/onlineStore/storage/framework/.gitignore b/Chapter22/onlineStore/storage/framework/.gitignore deleted file mode 100644 index 05c4471..0000000 --- a/Chapter22/onlineStore/storage/framework/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -compiled.php -config.php -down -events.scanned.php -maintenance.php -routes.php -routes.scanned.php -schedule-* -services.json diff --git a/Chapter22/onlineStore/storage/framework/cache/.gitignore b/Chapter22/onlineStore/storage/framework/cache/.gitignore deleted file mode 100644 index 01e4a6c..0000000 --- a/Chapter22/onlineStore/storage/framework/cache/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!data/ -!.gitignore diff --git a/Chapter22/onlineStore/storage/framework/cache/data/.gitignore b/Chapter22/onlineStore/storage/framework/cache/data/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter22/onlineStore/storage/framework/cache/data/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter22/onlineStore/storage/framework/sessions/.gitignore b/Chapter22/onlineStore/storage/framework/sessions/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter22/onlineStore/storage/framework/sessions/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter22/onlineStore/storage/framework/testing/.gitignore b/Chapter22/onlineStore/storage/framework/testing/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter22/onlineStore/storage/framework/testing/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter22/onlineStore/storage/framework/views/.gitignore b/Chapter22/onlineStore/storage/framework/views/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter22/onlineStore/storage/framework/views/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter22/onlineStore/storage/logs/.gitignore b/Chapter22/onlineStore/storage/logs/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter22/onlineStore/storage/logs/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter22/onlineStore/tests/CreatesApplication.php b/Chapter22/onlineStore/tests/CreatesApplication.php deleted file mode 100644 index 547152f..0000000 --- a/Chapter22/onlineStore/tests/CreatesApplication.php +++ /dev/null @@ -1,22 +0,0 @@ -make(Kernel::class)->bootstrap(); - - return $app; - } -} diff --git a/Chapter22/onlineStore/tests/Feature/ExampleTest.php b/Chapter22/onlineStore/tests/Feature/ExampleTest.php deleted file mode 100644 index 78ccc21..0000000 --- a/Chapter22/onlineStore/tests/Feature/ExampleTest.php +++ /dev/null @@ -1,21 +0,0 @@ -get('/'); - - $response->assertStatus(200); - } -} diff --git a/Chapter22/onlineStore/tests/TestCase.php b/Chapter22/onlineStore/tests/TestCase.php deleted file mode 100644 index 2932d4a..0000000 --- a/Chapter22/onlineStore/tests/TestCase.php +++ /dev/null @@ -1,10 +0,0 @@ -assertTrue(true); - } -} diff --git a/Chapter22/onlineStore/webpack.mix.js b/Chapter22/onlineStore/webpack.mix.js deleted file mode 100644 index 1a2a958..0000000 --- a/Chapter22/onlineStore/webpack.mix.js +++ /dev/null @@ -1,16 +0,0 @@ -const mix = require('laravel-mix'); - -/* - |-------------------------------------------------------------------------- - | Mix Asset Management - |-------------------------------------------------------------------------- - | - | Mix provides a clean, fluent API for defining some Webpack build steps - | for your Laravel application. By default, we are compiling the Sass - | file for the application as well as bundling up all the JS files. - | - */ - -mix.js('resources/js/app.js', 'public/js') - .sass('resources/sass/app.scss', 'public/css') - .sourceMaps(); diff --git a/Chapter23/onlineStore/.editorconfig b/Chapter23/onlineStore/.editorconfig deleted file mode 100644 index 1671c9b..0000000 --- a/Chapter23/onlineStore/.editorconfig +++ /dev/null @@ -1,18 +0,0 @@ -root = true - -[*] -charset = utf-8 -end_of_line = lf -insert_final_newline = true -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true - -[*.md] -trim_trailing_whitespace = false - -[*.{yml,yaml}] -indent_size = 2 - -[docker-compose.yml] -indent_size = 4 diff --git a/Chapter23/onlineStore/.env.example b/Chapter23/onlineStore/.env.example deleted file mode 100644 index 8510237..0000000 --- a/Chapter23/onlineStore/.env.example +++ /dev/null @@ -1,52 +0,0 @@ -APP_NAME=Laravel -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=laravel -DB_USERNAME=root -DB_PASSWORD= - -BROADCAST_DRIVER=log -CACHE_DRIVER=file -FILESYSTEM_DISK=local -QUEUE_CONNECTION=sync -SESSION_DRIVER=file -SESSION_LIFETIME=120 - -MEMCACHED_HOST=127.0.0.1 - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -MAIL_MAILER=smtp -MAIL_HOST=mailhog -MAIL_PORT=1025 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS=null -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_APP_CLUSTER=mt1 - -MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/Chapter23/onlineStore/.gitattributes b/Chapter23/onlineStore/.gitattributes deleted file mode 100644 index 510d996..0000000 --- a/Chapter23/onlineStore/.gitattributes +++ /dev/null @@ -1,10 +0,0 @@ -* text=auto - -*.blade.php diff=html -*.css diff=css -*.html diff=html -*.md diff=markdown -*.php diff=php - -/.github export-ignore -CHANGELOG.md export-ignore diff --git a/Chapter23/onlineStore/.gitignore b/Chapter23/onlineStore/.gitignore deleted file mode 100644 index eb003b0..0000000 --- a/Chapter23/onlineStore/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -/node_modules -/public/hot -/public/storage -/storage/*.key -/vendor -.env -.env.backup -.phpunit.result.cache -docker-compose.override.yml -Homestead.json -Homestead.yaml -npm-debug.log -yarn-error.log -/.idea -/.vscode diff --git a/Chapter23/onlineStore/.styleci.yml b/Chapter23/onlineStore/.styleci.yml deleted file mode 100644 index 679a631..0000000 --- a/Chapter23/onlineStore/.styleci.yml +++ /dev/null @@ -1,13 +0,0 @@ -php: - preset: laravel - version: 8 - disabled: - - no_unused_imports - finder: - not-name: - - index.php -js: - finder: - not-name: - - webpack.mix.js -css: true diff --git a/Chapter23/onlineStore/README.md b/Chapter23/onlineStore/README.md deleted file mode 100644 index f171eca..0000000 --- a/Chapter23/onlineStore/README.md +++ /dev/null @@ -1,64 +0,0 @@ -

    - -

    -Build Status -Total Downloads -Latest Stable Version -License -

    - -## About Laravel - -Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as: - -- [Simple, fast routing engine](https://laravel.com/docs/routing). -- [Powerful dependency injection container](https://laravel.com/docs/container). -- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage. -- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent). -- Database agnostic [schema migrations](https://laravel.com/docs/migrations). -- [Robust background job processing](https://laravel.com/docs/queues). -- [Real-time event broadcasting](https://laravel.com/docs/broadcasting). - -Laravel is accessible, powerful, and provides tools required for large, robust applications. - -## Learning Laravel - -Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework. - -If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 2000 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library. - -## Laravel Sponsors - -We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell). - -### Premium Partners - -- **[Vehikl](https://vehikl.com/)** -- **[Tighten Co.](https://tighten.co)** -- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** -- **[64 Robots](https://64robots.com)** -- **[Cubet Techno Labs](https://cubettech.com)** -- **[Cyber-Duck](https://cyber-duck.co.uk)** -- **[Many](https://www.many.co.uk)** -- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)** -- **[DevSquad](https://devsquad.com)** -- **[Curotec](https://www.curotec.com/services/technologies/laravel/)** -- **[OP.GG](https://op.gg)** -- **[WebReinvent](https://webreinvent.com/?utm_source=laravel&utm_medium=github&utm_campaign=patreon-sponsors)** -- **[Lendio](https://lendio.com)** - -## Contributing - -Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions). - -## Code of Conduct - -In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). - -## Security Vulnerabilities - -If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed. - -## License - -The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). diff --git a/Chapter23/onlineStore/app/Console/Kernel.php b/Chapter23/onlineStore/app/Console/Kernel.php deleted file mode 100644 index d8bc1d2..0000000 --- a/Chapter23/onlineStore/app/Console/Kernel.php +++ /dev/null @@ -1,32 +0,0 @@ -command('inspire')->hourly(); - } - - /** - * Register the commands for the application. - * - * @return void - */ - protected function commands() - { - $this->load(__DIR__.'/Commands'); - - require base_path('routes/console.php'); - } -} diff --git a/Chapter23/onlineStore/app/Exceptions/Handler.php b/Chapter23/onlineStore/app/Exceptions/Handler.php deleted file mode 100644 index 8e7fbd1..0000000 --- a/Chapter23/onlineStore/app/Exceptions/Handler.php +++ /dev/null @@ -1,41 +0,0 @@ -> - */ - protected $dontReport = [ - // - ]; - - /** - * A list of the inputs that are never flashed for validation exceptions. - * - * @var array - */ - protected $dontFlash = [ - 'current_password', - 'password', - 'password_confirmation', - ]; - - /** - * Register the exception handling callbacks for the application. - * - * @return void - */ - public function register() - { - $this->reportable(function (Throwable $e) { - // - }); - } -} diff --git a/Chapter23/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php b/Chapter23/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php deleted file mode 100644 index cd78cb3..0000000 --- a/Chapter23/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php +++ /dev/null @@ -1,16 +0,0 @@ -with("viewData", $viewData); - } -} diff --git a/Chapter23/onlineStore/app/Http/Controllers/Admin/AdminProductController.php b/Chapter23/onlineStore/app/Http/Controllers/Admin/AdminProductController.php deleted file mode 100644 index d1c6c52..0000000 --- a/Chapter23/onlineStore/app/Http/Controllers/Admin/AdminProductController.php +++ /dev/null @@ -1,79 +0,0 @@ -with("viewData", $viewData); - } - - public function store(Request $request) - { - Product::validate($request); - - $newProduct = new Product(); - $newProduct->setName($request->input('name')); - $newProduct->setDescription($request->input('description')); - $newProduct->setPrice($request->input('price')); - $newProduct->setImage("game.png"); - $newProduct->save(); - - if ($request->hasFile('image')) { - $imageName = $newProduct->getId().".".$request->file('image')->extension(); - Storage::disk('public')->put( - $imageName, - file_get_contents($request->file('image')->getRealPath()) - ); - $newProduct->setImage($imageName); - $newProduct->save(); - } - - return back(); - } - - public function delete($id) - { - Product::destroy($id); - return back(); - } - - public function edit($id) - { - $viewData = []; - $viewData["title"] = "Admin Page - Edit Product - Online Store"; - $viewData["product"] = Product::findOrFail($id); - return view('admin.product.edit')->with("viewData", $viewData); - } - - public function update(Request $request, $id) - { - Product::validate($request); - - $product = Product::findOrFail($id); - $product->setName($request->input('name')); - $product->setDescription($request->input('description')); - $product->setPrice($request->input('price')); - - if ($request->hasFile('image')) { - $imageName = $product->getId().".".$request->file('image')->extension(); - Storage::disk('public')->put( - $imageName, - file_get_contents($request->file('image')->getRealPath()) - ); - $product->setImage($imageName); - } - - $product->save(); - return redirect()->route('admin.product.index'); - } -} diff --git a/Chapter23/onlineStore/app/Http/Controllers/Auth/ConfirmPasswordController.php b/Chapter23/onlineStore/app/Http/Controllers/Auth/ConfirmPasswordController.php deleted file mode 100644 index 138c1f0..0000000 --- a/Chapter23/onlineStore/app/Http/Controllers/Auth/ConfirmPasswordController.php +++ /dev/null @@ -1,40 +0,0 @@ -middleware('auth'); - } -} diff --git a/Chapter23/onlineStore/app/Http/Controllers/Auth/ForgotPasswordController.php b/Chapter23/onlineStore/app/Http/Controllers/Auth/ForgotPasswordController.php deleted file mode 100644 index 465c39c..0000000 --- a/Chapter23/onlineStore/app/Http/Controllers/Auth/ForgotPasswordController.php +++ /dev/null @@ -1,22 +0,0 @@ -middleware('guest')->except('logout'); - } -} diff --git a/Chapter23/onlineStore/app/Http/Controllers/Auth/RegisterController.php b/Chapter23/onlineStore/app/Http/Controllers/Auth/RegisterController.php deleted file mode 100644 index 87e3a82..0000000 --- a/Chapter23/onlineStore/app/Http/Controllers/Auth/RegisterController.php +++ /dev/null @@ -1,74 +0,0 @@ -middleware('guest'); - } - - /** - * Get a validator for an incoming registration request. - * - * @param array $data - * @return \Illuminate\Contracts\Validation\Validator - */ - protected function validator(array $data) - { - return Validator::make($data, [ - 'name' => ['required', 'string', 'max:255'], - 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], - 'password' => ['required', 'string', 'min:8', 'confirmed'], - ]); - } - - /** - * Create a new user instance after a valid registration. - * - * @param array $data - * @return \App\Models\User - */ - protected function create(array $data) - { - return User::create([ - 'name' => $data['name'], - 'email' => $data['email'], - 'password' => Hash::make($data['password']), - 'balance' => 5000, - ]); - } -} diff --git a/Chapter23/onlineStore/app/Http/Controllers/Auth/ResetPasswordController.php b/Chapter23/onlineStore/app/Http/Controllers/Auth/ResetPasswordController.php deleted file mode 100644 index b1726a3..0000000 --- a/Chapter23/onlineStore/app/Http/Controllers/Auth/ResetPasswordController.php +++ /dev/null @@ -1,30 +0,0 @@ -middleware('auth'); - $this->middleware('signed')->only('verify'); - $this->middleware('throttle:6,1')->only('verify', 'resend'); - } -} diff --git a/Chapter23/onlineStore/app/Http/Controllers/Controller.php b/Chapter23/onlineStore/app/Http/Controllers/Controller.php deleted file mode 100644 index a0a2a8a..0000000 --- a/Chapter23/onlineStore/app/Http/Controllers/Controller.php +++ /dev/null @@ -1,13 +0,0 @@ -with("viewData", $viewData); - } - - public function about() - { - $viewData = []; - $viewData["title"] = "About us - Online Store"; - $viewData["subtitle"] = "About us"; - $viewData["description"] = "This is an about page ..."; - $viewData["author"] = "Developed by: Your Name"; - return view('home.about')->with("viewData", $viewData); - } -} diff --git a/Chapter23/onlineStore/app/Http/Controllers/ProductController.php b/Chapter23/onlineStore/app/Http/Controllers/ProductController.php deleted file mode 100644 index d27a3a3..0000000 --- a/Chapter23/onlineStore/app/Http/Controllers/ProductController.php +++ /dev/null @@ -1,29 +0,0 @@ -with("viewData", $viewData); - } - - public function show($id) - { - $viewData = []; - $product = Product::findOrFail($id); - $viewData["title"] = $product->getName()." - Online Store"; - $viewData["subtitle"] = $product->getName()." - Product information"; - $viewData["product"] = $product; - return view('product.show')->with("viewData", $viewData); - } -} diff --git a/Chapter23/onlineStore/app/Http/Kernel.php b/Chapter23/onlineStore/app/Http/Kernel.php deleted file mode 100644 index c10d1c5..0000000 --- a/Chapter23/onlineStore/app/Http/Kernel.php +++ /dev/null @@ -1,68 +0,0 @@ - - */ - protected $middleware = [ - // \App\Http\Middleware\TrustHosts::class, - \App\Http\Middleware\TrustProxies::class, - \Fruitcake\Cors\HandleCors::class, - \App\Http\Middleware\PreventRequestsDuringMaintenance::class, - \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, - \App\Http\Middleware\TrimStrings::class, - \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, - ]; - - /** - * The application's route middleware groups. - * - * @var array> - */ - protected $middlewareGroups = [ - 'web' => [ - \App\Http\Middleware\EncryptCookies::class, - \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, - \Illuminate\Session\Middleware\StartSession::class, - // \Illuminate\Session\Middleware\AuthenticateSession::class, - \Illuminate\View\Middleware\ShareErrorsFromSession::class, - \App\Http\Middleware\VerifyCsrfToken::class, - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - - 'api' => [ - // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, - 'throttle:api', - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - ]; - - /** - * The application's route middleware. - * - * These middleware may be assigned to groups or used individually. - * - * @var array - */ - protected $routeMiddleware = [ - 'auth' => \App\Http\Middleware\Authenticate::class, - 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::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, - 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, - 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, - 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, - 'admin' => \App\Http\Middleware\AdminAuthMiddleware::class, - ]; -} diff --git a/Chapter23/onlineStore/app/Http/Middleware/AdminAuthMiddleware.php b/Chapter23/onlineStore/app/Http/Middleware/AdminAuthMiddleware.php deleted file mode 100644 index 6e5306b..0000000 --- a/Chapter23/onlineStore/app/Http/Middleware/AdminAuthMiddleware.php +++ /dev/null @@ -1,26 +0,0 @@ -getRole() == 'admin') { - return $next($request); - } else { - return redirect()->route('home.index'); - } - } -} diff --git a/Chapter23/onlineStore/app/Http/Middleware/Authenticate.php b/Chapter23/onlineStore/app/Http/Middleware/Authenticate.php deleted file mode 100644 index 704089a..0000000 --- a/Chapter23/onlineStore/app/Http/Middleware/Authenticate.php +++ /dev/null @@ -1,21 +0,0 @@ -expectsJson()) { - return route('login'); - } - } -} diff --git a/Chapter23/onlineStore/app/Http/Middleware/EncryptCookies.php b/Chapter23/onlineStore/app/Http/Middleware/EncryptCookies.php deleted file mode 100644 index 867695b..0000000 --- a/Chapter23/onlineStore/app/Http/Middleware/EncryptCookies.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter23/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/Chapter23/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php deleted file mode 100644 index 74cbd9a..0000000 --- a/Chapter23/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter23/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php b/Chapter23/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php deleted file mode 100644 index a2813a0..0000000 --- a/Chapter23/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php +++ /dev/null @@ -1,32 +0,0 @@ -check()) { - return redirect(RouteServiceProvider::HOME); - } - } - - return $next($request); - } -} diff --git a/Chapter23/onlineStore/app/Http/Middleware/TrimStrings.php b/Chapter23/onlineStore/app/Http/Middleware/TrimStrings.php deleted file mode 100644 index 88cadca..0000000 --- a/Chapter23/onlineStore/app/Http/Middleware/TrimStrings.php +++ /dev/null @@ -1,19 +0,0 @@ - - */ - protected $except = [ - 'current_password', - 'password', - 'password_confirmation', - ]; -} diff --git a/Chapter23/onlineStore/app/Http/Middleware/TrustHosts.php b/Chapter23/onlineStore/app/Http/Middleware/TrustHosts.php deleted file mode 100644 index 7186414..0000000 --- a/Chapter23/onlineStore/app/Http/Middleware/TrustHosts.php +++ /dev/null @@ -1,20 +0,0 @@ - - */ - public function hosts() - { - return [ - $this->allSubdomainsOfApplicationUrl(), - ]; - } -} diff --git a/Chapter23/onlineStore/app/Http/Middleware/TrustProxies.php b/Chapter23/onlineStore/app/Http/Middleware/TrustProxies.php deleted file mode 100644 index 3391630..0000000 --- a/Chapter23/onlineStore/app/Http/Middleware/TrustProxies.php +++ /dev/null @@ -1,28 +0,0 @@ -|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/Chapter23/onlineStore/app/Http/Middleware/VerifyCsrfToken.php b/Chapter23/onlineStore/app/Http/Middleware/VerifyCsrfToken.php deleted file mode 100644 index 9e86521..0000000 --- a/Chapter23/onlineStore/app/Http/Middleware/VerifyCsrfToken.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter23/onlineStore/app/Models/Product.php b/Chapter23/onlineStore/app/Models/Product.php deleted file mode 100644 index b8f58f6..0000000 --- a/Chapter23/onlineStore/app/Models/Product.php +++ /dev/null @@ -1,99 +0,0 @@ -attributes['id'] - int - contains the product primary key (id) - * $this->attributes['name'] - string - contains the product name - * $this->attributes['description'] - string - contains the product description - * $this->attributes['image'] - string - contains the product image - * $this->attributes['price'] - int - contains the product price - * $this->attributes['created_at'] - timestamp - contains the product creation date - * $this->attributes['updated_at'] - timestamp - contains the product update date - */ - - public static function validate($request) - { - $request->validate([ - "name" => "required|max:255", - "description" => "required", - "price" => "required|numeric|gt:0", - 'image' => 'image', - ]); - } - - public function getId() - { - return $this->attributes['id']; - } - - public function setId($id) - { - $this->attributes['id'] = $id; - } - - public function getName() - { - return $this->attributes['name']; - } - - public function setName($name) - { - $this->attributes['name'] = $name; - } - - public function getDescription() - { - return $this->attributes['description']; - } - - public function setDescription($description) - { - $this->attributes['description'] = $description; - } - - public function getImage() - { - return $this->attributes['image']; - } - - public function setImage($image) - { - $this->attributes['image'] = $image; - } - - public function getPrice() - { - return $this->attributes['price']; - } - - public function setPrice($price) - { - $this->attributes['price'] = $price; - } - - public function getCreatedAt() - { - return $this->attributes['created_at']; - } - - public function setCreatedAt($createdAt) - { - $this->attributes['created_at'] = $createdAt; - } - - public function getUpdatedAt() - { - return $this->attributes['updated_at']; - } - - public function setUpdatedAt($updatedAt) - { - $this->attributes['updated_at'] = $updatedAt; - } -} diff --git a/Chapter23/onlineStore/app/Models/User.php b/Chapter23/onlineStore/app/Models/User.php deleted file mode 100644 index 0749c5a..0000000 --- a/Chapter23/onlineStore/app/Models/User.php +++ /dev/null @@ -1,139 +0,0 @@ -attributes['id'] - int - contains the user primary key (id) - * $this->attributes['name'] - string - contains the user name - * $this->attributes['email'] - string - contains the user email - * $this->attributes['email_verified_at'] - timestamp - contains the user email verification date - * $this->attributes['password'] - string - contains the user password - * $this->attributes['remember_token'] - string - contains the user password - * $this->attributes['role'] - string - contains the user role (client or admin) - * $this->attributes['balance'] - int - contains the user balance - * $this->attributes['created_at'] - timestamp - contains the user creation date - * $this->attributes['updated_at'] - timestamp - contains the user update date - */ - - /** - * The attributes that are mass assignable. - * - * @var array - */ - protected $fillable = [ - 'name', - 'email', - 'password', - 'balance', - ]; - - /** - * 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', - ]; - - public function getId() - { - return $this->attributes['id']; - } - - public function setId($id) - { - $this->attributes['id'] = $id; - } - - public function getName() - { - return $this->attributes['name']; - } - - public function setName($name) - { - $this->attributes['name'] = $name; - } - - public function getEmail() - { - return $this->attributes['email']; - } - - public function setEmail($email) - { - $this->attributes['email'] = $email; - } - - public function getPassword() - { - return $this->attributes['password']; - } - - public function setPassword($password) - { - $this->attributes['password'] = $password; - } - - public function getRole() - { - return $this->attributes['role']; - } - - public function setRole($role) - { - $this->attributes['role'] = $role; - } - - public function getBalance() - { - return $this->attributes['balance']; - } - - public function setBalance($balance) - { - $this->attributes['balance'] = $balance; - } - - public function getCreatedAt() - { - return $this->attributes['created_at']; - } - - public function setCreatedAt($createdAt) - { - $this->attributes['created_at'] = $createdAt; - } - - public function getUpdatedAt() - { - return $this->attributes['updated_at']; - } - - public function setUpdatedAt($updatedAt) - { - $this->attributes['updated_at'] = $updatedAt; - } -} diff --git a/Chapter23/onlineStore/app/Providers/AppServiceProvider.php b/Chapter23/onlineStore/app/Providers/AppServiceProvider.php deleted file mode 100644 index ee8ca5b..0000000 --- a/Chapter23/onlineStore/app/Providers/AppServiceProvider.php +++ /dev/null @@ -1,28 +0,0 @@ - - */ - protected $policies = [ - // 'App\Models\Model' => 'App\Policies\ModelPolicy', - ]; - - /** - * Register any authentication / authorization services. - * - * @return void - */ - public function boot() - { - $this->registerPolicies(); - - // - } -} diff --git a/Chapter23/onlineStore/app/Providers/BroadcastServiceProvider.php b/Chapter23/onlineStore/app/Providers/BroadcastServiceProvider.php deleted file mode 100644 index 395c518..0000000 --- a/Chapter23/onlineStore/app/Providers/BroadcastServiceProvider.php +++ /dev/null @@ -1,21 +0,0 @@ -> - */ - protected $listen = [ - Registered::class => [ - SendEmailVerificationNotification::class, - ], - ]; - - /** - * Register any events for your application. - * - * @return void - */ - public function boot() - { - // - } -} diff --git a/Chapter23/onlineStore/app/Providers/RouteServiceProvider.php b/Chapter23/onlineStore/app/Providers/RouteServiceProvider.php deleted file mode 100644 index fb766eb..0000000 --- a/Chapter23/onlineStore/app/Providers/RouteServiceProvider.php +++ /dev/null @@ -1,63 +0,0 @@ -configureRateLimiting(); - - $this->routes(function () { - Route::prefix('api') - ->middleware('api') - ->namespace($this->namespace) - ->group(base_path('routes/api.php')); - - Route::middleware('web') - ->namespace($this->namespace) - ->group(base_path('routes/web.php')); - }); - } - - /** - * Configure the rate limiters for the application. - * - * @return void - */ - protected function configureRateLimiting() - { - RateLimiter::for('api', function (Request $request) { - return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); - }); - } -} diff --git a/Chapter23/onlineStore/artisan b/Chapter23/onlineStore/artisan deleted file mode 100644 index 67a3329..0000000 --- a/Chapter23/onlineStore/artisan +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env php -make(Illuminate\Contracts\Console\Kernel::class); - -$status = $kernel->handle( - $input = new Symfony\Component\Console\Input\ArgvInput, - new Symfony\Component\Console\Output\ConsoleOutput -); - -/* -|-------------------------------------------------------------------------- -| Shutdown The Application -|-------------------------------------------------------------------------- -| -| Once Artisan has finished running, we will fire off the shutdown events -| so that any final work may be done by the application before we shut -| down the process. This is the last thing to happen to the request. -| -*/ - -$kernel->terminate($input, $status); - -exit($status); diff --git a/Chapter23/onlineStore/bootstrap/app.php b/Chapter23/onlineStore/bootstrap/app.php deleted file mode 100644 index 037e17d..0000000 --- a/Chapter23/onlineStore/bootstrap/app.php +++ /dev/null @@ -1,55 +0,0 @@ -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/Chapter23/onlineStore/bootstrap/cache/.gitignore b/Chapter23/onlineStore/bootstrap/cache/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter23/onlineStore/bootstrap/cache/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter23/onlineStore/composer.json b/Chapter23/onlineStore/composer.json deleted file mode 100644 index a9459b5..0000000 --- a/Chapter23/onlineStore/composer.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "name": "laravel/laravel", - "type": "project", - "description": "The Laravel Framework.", - "keywords": ["framework", "laravel"], - "license": "MIT", - "require": { - "php": "^8.0", - "fruitcake/laravel-cors": "^2.0.5", - "guzzlehttp/guzzle": "^7.2", - "laravel/framework": "^9.0", - "laravel/sanctum": "^2.14", - "laravel/tinker": "^2.7", - "laravel/ui": "^3.4" - }, - "require-dev": { - "fakerphp/faker": "^1.9.1", - "laravel/sail": "^1.0.1", - "mockery/mockery": "^1.4.4", - "nunomaduro/collision": "^6.1", - "phpunit/phpunit": "^9.5.10", - "spatie/laravel-ignition": "^1.0", - "squizlabs/php_codesniffer": "^3.6" - }, - "autoload": { - "psr-4": { - "App\\": "app/", - "Database\\Factories\\": "database/factories/", - "Database\\Seeders\\": "database/seeders/" - } - }, - "autoload-dev": { - "psr-4": { - "Tests\\": "tests/" - } - }, - "scripts": { - "post-autoload-dump": [ - "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", - "@php artisan package:discover --ansi" - ], - "post-update-cmd": [ - "@php artisan vendor:publish --tag=laravel-assets --ansi --force" - ], - "post-root-package-install": [ - "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" - ], - "post-create-project-cmd": [ - "@php artisan key:generate --ansi" - ] - }, - "extra": { - "laravel": { - "dont-discover": [] - } - }, - "config": { - "optimize-autoloader": true, - "preferred-install": "dist", - "sort-packages": true - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/Chapter23/onlineStore/composer.lock b/Chapter23/onlineStore/composer.lock deleted file mode 100644 index 78c86f1..0000000 --- a/Chapter23/onlineStore/composer.lock +++ /dev/null @@ -1,7921 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "d299b51f0f07ec600b4949240f4664af", - "packages": [ - { - "name": "asm89/stack-cors", - "version": "v2.1.1", - "source": { - "type": "git", - "url": "https://github.com/asm89/stack-cors.git", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4|^5|^6" - }, - "require-dev": { - "phpunit/phpunit": "^7|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "psr-4": { - "Asm89\\Stack\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alexander", - "email": "iam.asm89@gmail.com" - } - ], - "description": "Cross-origin resource sharing library and stack middleware", - "homepage": "https://github.com/asm89/stack-cors", - "keywords": [ - "cors", - "stack" - ], - "support": { - "issues": "https://github.com/asm89/stack-cors/issues", - "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" - }, - "time": "2022-01-18T09:12:03+00:00" - }, - { - "name": "brick/math", - "version": "0.9.3", - "source": { - "type": "git", - "url": "https://github.com/brick/math.git", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", - "vimeo/psalm": "4.9.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Brick\\Math\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Arbitrary-precision arithmetic library", - "keywords": [ - "Arbitrary-precision", - "BigInteger", - "BigRational", - "arithmetic", - "bigdecimal", - "bignum", - "brick", - "math" - ], - "support": { - "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.9.3" - }, - "funding": [ - { - "url": "https://github.com/BenMorel", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/brick/math", - "type": "tidelift" - } - ], - "time": "2021-08-15T20:50:18+00:00" - }, - { - "name": "dflydev/dot-access-data", - "version": "v3.0.1", - "source": { - "type": "git", - "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c", - "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": "^3.14" - }, - "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.1" - }, - "time": "2021-08-13T13:06:58+00:00" - }, - { - "name": "doctrine/inflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "vimeo/psalm": "^4.10" - }, - "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.4" - }, - "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": "2021-10-22T20:16:43+00:00" - }, - { - "name": "doctrine/lexer", - "version": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" - } - }, - "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/1.2.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%2Flexer", - "type": "tidelift" - } - ], - "time": "2022-01-12T08:27:12+00:00" - }, - { - "name": "dragonmantank/cron-expression", - "version": "v3.3.1", - "source": { - "type": "git", - "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "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.1" - }, - "funding": [ - { - "url": "https://github.com/dragonmantank", - "type": "github" - } - ], - "time": "2022-01-18T15:43:28+00:00" - }, - { - "name": "egulias/email-validator", - "version": "3.1.2", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ee0db30118f661fb166bcffbf5d82032df484697", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^1.2", - "php": ">=7.2", - "symfony/polyfill-intl-idn": "^1.15" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^8.5.8|^9.3.3", - "vimeo/psalm": "^4" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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/3.1.2" - }, - "funding": [ - { - "url": "https://github.com/egulias", - "type": "github" - } - ], - "time": "2021-10-11T09:18:27+00:00" - }, - { - "name": "fruitcake/laravel-cors", - "version": "v2.0.5", - "source": { - "type": "git", - "url": "https://github.com/fruitcake/laravel-cors.git", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "shasum": "" - }, - "require": { - "asm89/stack-cors": "^2.0.1", - "illuminate/contracts": "^6|^7|^8|^9", - "illuminate/support": "^6|^7|^8|^9", - "php": ">=7.2", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4.3.4|^5|^6" - }, - "require-dev": { - "laravel/framework": "^6|^7.24|^8", - "orchestra/testbench-dusk": "^4|^5|^6|^7", - "phpunit/phpunit": "^6|^7|^8|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - }, - "laravel": { - "providers": [ - "Fruitcake\\Cors\\CorsServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Fruitcake\\Cors\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fruitcake", - "homepage": "https://fruitcake.nl" - }, - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", - "keywords": [ - "api", - "cors", - "crossdomain", - "laravel" - ], - "support": { - "issues": "https://github.com/fruitcake/laravel-cors/issues", - "source": "https://github.com/fruitcake/laravel-cors/tree/v2.0.5" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "time": "2022-01-03T14:53:04+00:00" - }, - { - "name": "graham-campbell/result-type", - "version": "v1.0.4", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "0690bde05318336c7221785f2a932467f98b64ca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/0690bde05318336c7221785f2a932467f98b64ca", - "reference": "0690bde05318336c7221785f2a932467f98b64ca", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "phpoption/phpoption": "^1.8" - }, - "require-dev": { - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", - "type": "tidelift" - } - ], - "time": "2021-11-21T21:41:47+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "7.4.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.8.3 || ^2.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.4.1", - "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.5 || ^9.3.5", - "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": { - "branch-alias": { - "dev-master": "7.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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.4.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": "2021-12-06T18:43:05+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "1.5.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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/1.5.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "time": "2021-10-22T20:56:57+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.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.4.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.8 || ^9.3.10" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "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.1.0" - }, - "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": "2021-10-06T17:43:30+00:00" - }, - { - "name": "laravel/framework", - "version": "v9.0.1", - "source": { - "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "shasum": "" - }, - "require": { - "doctrine/inflector": "^2.0", - "dragonmantank/cron-expression": "^3.1", - "egulias/email-validator": "^3.1", - "ext-mbstring": "*", - "ext-openssl": "*", - "laravel/serializable-closure": "^1.0", - "league/commonmark": "^2.2", - "league/flysystem": "^3.0", - "monolog/monolog": "^2.0", - "nesbot/carbon": "^2.53.1", - "php": "^8.0.2", - "psr/container": "^1.1.1|^2.0.1", - "psr/log": "^1.0|^2.0|^3.0", - "psr/simple-cache": "^1.0|^2.0|^3.0", - "ramsey/uuid": "^4.2.2", - "symfony/console": "^6.0", - "symfony/error-handler": "^6.0", - "symfony/finder": "^6.0", - "symfony/http-foundation": "^6.0", - "symfony/http-kernel": "^6.0", - "symfony/mailer": "^6.0", - "symfony/mime": "^6.0", - "symfony/process": "^6.0", - "symfony/routing": "^6.0", - "symfony/var-dumper": "^6.0", - "tijsverkoyen/css-to-inline-styles": "^2.2.2", - "vlucas/phpdotenv": "^5.4.1", - "voku/portable-ascii": "^2.0" - }, - "conflict": { - "tightenco/collect": "<5.5.33" - }, - "provide": { - "psr/container-implementation": "1.1|2.0", - "psr/simple-cache-implementation": "1.0|2.0|3.0" - }, - "replace": { - "illuminate/auth": "self.version", - "illuminate/broadcasting": "self.version", - "illuminate/bus": "self.version", - "illuminate/cache": "self.version", - "illuminate/collections": "self.version", - "illuminate/conditionable": "self.version", - "illuminate/config": "self.version", - "illuminate/console": "self.version", - "illuminate/container": "self.version", - "illuminate/contracts": "self.version", - "illuminate/cookie": "self.version", - "illuminate/database": "self.version", - "illuminate/encryption": "self.version", - "illuminate/events": "self.version", - "illuminate/filesystem": "self.version", - "illuminate/hashing": "self.version", - "illuminate/http": "self.version", - "illuminate/log": "self.version", - "illuminate/macroable": "self.version", - "illuminate/mail": "self.version", - "illuminate/notifications": "self.version", - "illuminate/pagination": "self.version", - "illuminate/pipeline": "self.version", - "illuminate/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": { - "aws/aws-sdk-php": "^3.198.1", - "doctrine/dbal": "^2.13.3|^3.1.4", - "fakerphp/faker": "^1.9.2", - "guzzlehttp/guzzle": "^7.2", - "league/flysystem-aws-s3-v3": "^3.0", - "league/flysystem-ftp": "^3.0", - "league/flysystem-sftp-v3": "^3.0", - "mockery/mockery": "^1.4.4", - "orchestra/testbench-core": "^7.0", - "pda/pheanstalk": "^4.0", - "phpstan/phpstan": "^1.0", - "phpunit/phpunit": "^9.5.8", - "predis/predis": "^1.1.9", - "symfony/amazon-mailer": "^6.0", - "symfony/cache": "^6.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.198.1).", - "brianium/paratest": "Required to run tests in parallel (^6.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", - "ext-bcmath": "Required to use the multiple_of validation rule.", - "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.", - "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.2).", - "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-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", - "mockery/mockery": "Required to use mocking (^1.4.4).", - "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).", - "predis/predis": "Required to use the predis connector (^1.1.9).", - "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.0).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^6.0).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.0).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.0).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.0).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.x-dev" - } - }, - "autoload": { - "files": [ - "src/Illuminate/Collections/helpers.php", - "src/Illuminate/Events/functions.php", - "src/Illuminate/Foundation/helpers.php", - "src/Illuminate/Support/helpers.php" - ], - "psr-4": { - "Illuminate\\": "src/Illuminate/", - "Illuminate\\Support\\": [ - "src/Illuminate/Macroable/", - "src/Illuminate/Collections/", - "src/Illuminate/Conditionable/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Laravel Framework.", - "homepage": "https://laravel.com", - "keywords": [ - "framework", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2022-02-09T15:00:05+00:00" - }, - { - "name": "laravel/sanctum", - "version": "v2.14.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/sanctum.git", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/0647a87140c7522e75826cffcadb3ad6e01f71e9", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/contracts": "^6.9|^7.0|^8.0|^9.0", - "illuminate/database": "^6.9|^7.0|^8.0|^9.0", - "illuminate/support": "^6.9|^7.0|^8.0|^9.0", - "php": "^7.2|^8.0" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0", - "phpunit/phpunit": "^8.0|^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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": "2022-01-12T15:07:43+00:00" - }, - { - "name": "laravel/serializable-closure", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/serializable-closure.git", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/65c9faf50d567b65d81764a44526545689e3fe63", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "pestphp/pest": "^1.18", - "phpstan/phpstan": "^0.12.98", - "symfony/var-dumper": "^5.3" - }, - "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": "2022-02-01T16:29:39+00:00" - }, - { - "name": "laravel/tinker", - "version": "v2.7.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/tinker.git", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/5f2f9815b7631b9f586a3de7933c25f9327d4073", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073", - "shasum": "" - }, - "require": { - "illuminate/console": "^6.0|^7.0|^8.0|^9.0", - "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.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", - "phpunit/phpunit": "^8.5.8|^9.3.3" - }, - "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.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.7.0" - }, - "time": "2022-01-10T08:52:49+00:00" - }, - { - "name": "laravel/ui", - "version": "v3.4.3", - "source": { - "type": "git", - "url": "https://github.com/laravel/ui.git", - "reference": "64a0f43492c00780b2261c56cd7007a4f370d95b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/ui/zipball/64a0f43492c00780b2261c56cd7007a4f370d95b", - "reference": "64a0f43492c00780b2261c56cd7007a4f370d95b", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.42|^9.0", - "illuminate/filesystem": "^8.42|^9.0", - "illuminate/support": "^8.82|^9.0", - "illuminate/validation": "^8.42|^9.0", - "php": "^7.3|^8.0" - }, - "require-dev": { - "orchestra/testbench": "^6.23|^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - }, - "laravel": { - "providers": [ - "Laravel\\Ui\\UiServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Laravel\\Ui\\": "src/", - "Illuminate\\Foundation\\Auth\\": "auth-backend/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "Laravel UI utilities and presets.", - "keywords": [ - "laravel", - "ui" - ], - "support": { - "source": "https://github.com/laravel/ui/tree/v3.4.3" - }, - "time": "2022-02-08T14:19:32+00:00" - }, - { - "name": "league/commonmark", - "version": "2.2.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/commonmark.git", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "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.15" - }, - "require-dev": { - "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.0", - "commonmark/commonmark.js": "0.30.0", - "composer/package-versions-deprecated": "^1.8", - "erusev/parsedown": "^1.0", - "ext-json": "*", - "github/gfm": "0.29.0", - "michelf/php-markdown": "^1.4", - "phpstan/phpstan": "^0.12.88 || ^1.0.0", - "phpunit/phpunit": "^9.5.5", - "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", - "unleashedtech/php-coding-standard": "^3.1", - "vimeo/psalm": "^4.7.3" - }, - "suggest": { - "symfony/yaml": "v2.3+ required if using the Front Matter extension" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.3-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": "2022-01-25T14:37:33+00:00" - }, - { - "name": "league/config", - "version": "v1.1.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/config.git", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/config/zipball/a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^3.0.1", - "nette/schema": "^1.2", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.90", - "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": "2021-08-14T12:15:32+00:00" - }, - { - "name": "league/flysystem", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9f8b4260031bfef5497477da53dd57b2aaff0e06", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06", - "shasum": "" - }, - "require": { - "ext-json": "*", - "league/mime-type-detection": "^1.0.0", - "php": "^8.0.2" - }, - "conflict": { - "guzzlehttp/guzzle": "<7.0", - "guzzlehttp/ringphp": "<1.1.1", - "symfony/http-client": "<5.2" - }, - "require-dev": { - "async-aws/s3": "^1.5", - "async-aws/simple-s3": "^1.0", - "aws/aws-sdk-php": "^3.198.1", - "composer/semver": "^3.0", - "ext-fileinfo": "*", - "ext-ftp": "*", - "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.5", - "google/cloud-storage": "^1.23", - "phpseclib/phpseclib": "^2.0", - "phpstan/phpstan": "^0.12.26", - "phpunit/phpunit": "^9.5.11", - "sabre/dav": "^4.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.0.3" - }, - "funding": [ - { - "url": "https://offset.earth/frankdejonge", - "type": "custom" - }, - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2022-01-31T19:41:04+00:00" - }, - { - "name": "league/mime-type-detection", - "version": "1.9.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/aa70e813a6ad3d1558fc927863d47309b4c23e69", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.2", - "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" - }, - "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.9.0" - }, - "funding": [ - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2021-11-21T11:48:40+00:00" - }, - { - "name": "monolog/monolog", - "version": "2.3.5", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd4380d6fc37626e2f799f29d91195040137eba9", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "provide": { - "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7", - "graylog2/gelf-php": "^1.4.2", - "mongodb/mongodb": "^1.8", - "php-amqplib/php-amqplib": "~2.4 || ^3", - "php-console/php-console": "^3.1.3", - "phpspec/prophecy": "^1.6.1", - "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5", - "predis/predis": "^1.1", - "rollbar/rollbar": "^1.3", - "ruflin/elastica": ">=0.90@dev", - "swiftmailer/swiftmailer": "^5.3|^6.0" - }, - "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", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "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": "2.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/2.3.5" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" - } - ], - "time": "2021-10-01T21:08:31+00:00" - }, - { - "name": "nesbot/carbon", - "version": "2.56.0", - "source": { - "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1.8 || ^8.0", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "doctrine/dbal": "^2.0 || ^3.0", - "doctrine/orm": "^2.7", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "phpmd/phpmd": "^2.9", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.54 || ^1.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.14", - "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://opencollective.com/Carbon", - "type": "open_collective" - }, - { - "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", - "type": "tidelift" - } - ], - "time": "2022-01-21T17:08:38+00:00" - }, - { - "name": "nette/schema", - "version": "v1.2.2", - "source": { - "type": "git", - "url": "https://github.com/nette/schema.git", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/9a39cef03a5b34c7de64f551538cbba05c2be5df", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df", - "shasum": "" - }, - "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": ">=7.1 <8.2" - }, - "require-dev": { - "nette/tester": "^2.3 || ^2.4", - "phpstan/phpstan-nette": "^0.12", - "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.2" - }, - "time": "2021-10-15T11:40:02+00:00" - }, - { - "name": "nette/utils", - "version": "v3.2.7", - "source": { - "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/0af4e3de4df9f1543534beab255ccf459e7a2c99", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99", - "shasum": "" - }, - "require": { - "php": ">=7.2 <8.2" - }, - "conflict": { - "nette/di": "<3.0.6" - }, - "require-dev": { - "nette/tester": "~2.0", - "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.3" - }, - "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()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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 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/v3.2.7" - }, - "time": "2022-01-24T11:29:14+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.13.2", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", - "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.13.2" - }, - "time": "2021-11-30T19:35:32+00:00" - }, - { - "name": "phpoption/phpoption", - "version": "1.8.1", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-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.8.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", - "type": "tidelift" - } - ], - "time": "2021-12-04T23:24:31+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.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.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": "http://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/tree/master" - }, - "time": "2020-06-29T06:28:15+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.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": "http://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/master" - }, - "time": "2019-04-30T12:38:16+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.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": "http://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/master" - }, - "time": "2016-08-06T14:39: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.1", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "570292577277f06f590635381a7f761a6cf4f026" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/570292577277f06f590635381a7f761a6cf4f026", - "reference": "570292577277f06f590635381a7f761a6cf4f026", - "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" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "3.17.05.02" - }, - "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.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." - }, - "bin": [ - "bin/psysh" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "0.11.x-dev" - } - }, - "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.1" - }, - "time": "2022-01-03T13:58:38+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": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/ramsey/collection.git", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "shasum": "" - }, - "require": { - "php": "^7.3 || ^8", - "symfony/polyfill-php81": "^1.23" - }, - "require-dev": { - "captainhook/captainhook": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "ergebnis/composer-normalize": "^2.6", - "fakerphp/faker": "^1.5", - "hamcrest/hamcrest-php": "^2", - "jangregor/phpstan-prophecy": "^0.8", - "mockery/mockery": "^1.3", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1", - "phpstan/phpstan": "^0.12.32", - "phpstan/phpstan-mockery": "^0.12.5", - "phpstan/phpstan-phpunit": "^0.12.11", - "phpunit/phpunit": "^8.5 || ^9", - "psy/psysh": "^0.10.4", - "slevomat/coding-standard": "^6.3", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.4" - }, - "type": "library", - "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/1.2.2" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "time": "2021-10-10T03:01:02+00:00" - }, - { - "name": "ramsey/uuid", - "version": "4.2.3", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "shasum": "" - }, - "require": { - "brick/math": "^0.8 || ^0.9", - "ext-json": "*", - "php": "^7.2 || ^8.0", - "ramsey/collection": "^1.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php80": "^1.14" - }, - "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", - "moontoast/math": "^1.1", - "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.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-mockery": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^8.5 || ^9", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" - }, - "suggest": { - "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-ctype": "Enables faster processing of character classification using ctype functions.", - "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": { - "branch-alias": { - "dev-main": "4.x-dev" - }, - "captainhook": { - "force-install": true - } - }, - "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "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.2.3" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2021-09-25T23:10:38+00:00" - }, - { - "name": "symfony/console", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/22e8efd019c3270c4f79376234a3f8752cd25490", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.4|^6.0" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/css-selector", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/1955d595c12c111629cc814d3f2a2ff13580508a", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a", - "shasum": "" - }, - "require": { - "php": ">=8.0.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/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-11-01T23:48:49+00:00" - }, - { - "name": "symfony/error-handler", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/20343b3bad7ebafa38138ddcb97290a24722b57b", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" - }, - "bin": [ - "Resources/bin/patch-type-declarations" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to manage errors and ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6472ea2dd415e925b90ca82be64b8bc6157f3934", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/event-dispatcher-contracts": "^2|^3" - }, - "conflict": { - "symfony/dependency-injection": "<5.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^5.4|^6.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/aa5422287b75594b90ee9cd807caf8f0df491385", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/event-dispatcher": "^1" - }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-07-15T12:33:35+00:00" - }, - { - "name": "symfony/finder", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/8661b74dbabc23223f38c9b99d3f8ade71170430", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ad157299ced81a637fade1efcadd688d6deba5c1", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1" - }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/cache": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0" - }, - "suggest": { - "symfony/mime": "To use the file extension guesser" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v6.0.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/error-handler": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", - "symfony/twig-bridge": "<5.4", - "symfony/validator": "<5.4", - "twig/twig": "<2.13" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/process": "^5.4|^6.0", - "symfony/routing": "^5.4|^6.0", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-29T18:12:46+00:00" - }, - { - "name": "symfony/mailer", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mailer.git", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "shasum": "" - }, - "require": { - "egulias/email-validator": "^2.1.10|^3", - "php": ">=8.0.2", - "psr/event-dispatcher": "^1", - "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3" - }, - "conflict": { - "symfony/http-kernel": "<5.4" - }, - "require-dev": { - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/messenger": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/mime", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/2cd9601efd040e56f43360daa68f3c6b0534923a", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "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" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "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.24.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": "2021-10-20T20:35:02+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-11-23T21:10:46+00:00" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44", - "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.23-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.24.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": "2021-09-14T14:02:44+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.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": "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.24.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": "2021-11-30T18:21:41+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-05-27T09:17:38+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:33+00:00" - }, - { - "name": "symfony/polyfill-php81", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:11+00:00" - }, - { - "name": "symfony/process", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/298ed357274c1868c20a0061df256a1250a6c4af", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/routing", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/yaml": "<5.4" - }, - "require-dev": { - "doctrine/annotations": "^1.12", - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/36715ebf9fb9db73db0cb24263c79077c6fe8603", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/container": "^2.0" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "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.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": "2021-11-04T17:53:12+00:00" - }, - { - "name": "symfony/string", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/522144f0c4c004c80d56fa47e40e17028e2eefc2", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.0" - }, - "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/translation-contracts": "^2.0|^3.0", - "symfony/var-exporter": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "files": [ - "Resources/functions.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 an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/translation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/71bb15335798f8c4da110911bcf2d2fead7a430d", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.3|^3.0" - }, - "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" - }, - "provide": { - "symfony/translation-implementation": "2.3|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-07T00:29:03+00:00" - }, - { - "name": "symfony/translation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "suggest": { - "symfony/translation-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - } - }, - "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.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": "2021-09-07T12:43:40+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7b701676fc64f9ef11f9b4870f16b48f66be4834", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<5.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-17T16:30:44+00:00" - }, - { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.4", - "source": { - "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" - } - ], - "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", - "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "support": { - "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" - }, - "time": "2021-12-08T09:12:39+00:00" - }, - { - "name": "vlucas/phpdotenv", - "version": "v5.4.1", - "source": { - "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", - "shasum": "" - }, - "require": { - "ext-pcre": "*", - "graham-campbell/result-type": "^1.0.2", - "php": "^7.1.3 || ^8.0", - "phpoption/phpoption": "^1.8", - "symfony/polyfill-ctype": "^1.23", - "symfony/polyfill-mbstring": "^1.23.1", - "symfony/polyfill-php80": "^1.23.1" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" - }, - "suggest": { - "ext-filter": "Required to use the boolean validator." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.4-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.4.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", - "type": "tidelift" - } - ], - "time": "2021-12-12T23:22:04+00:00" - }, - { - "name": "voku/portable-ascii", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/voku/portable-ascii.git", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/9bd89e83cecdf8c37b64909454249eaed98b2c89", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89", - "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.0" - }, - "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-01-24T18:59:03+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "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.10.0" - }, - "time": "2021-03-09T10:59:23+00:00" - } - ], - "packages-dev": [ - { - "name": "doctrine/instantiator", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.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%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2020-11-10T18:47:58+00:00" - }, - { - "name": "facade/ignition-contracts", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/facade/ignition-contracts.git", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^v2.15.8", - "phpunit/phpunit": "^9.3.11", - "vimeo/psalm": "^3.17.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Facade\\IgnitionContracts\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://flareapp.io", - "role": "Developer" - } - ], - "description": "Solution contracts for Ignition", - "homepage": "https://github.com/facade/ignition-contracts", - "keywords": [ - "contracts", - "flare", - "ignition" - ], - "support": { - "issues": "https://github.com/facade/ignition-contracts/issues", - "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" - }, - "time": "2020-10-16T08:27:54+00:00" - }, - { - "name": "fakerphp/faker", - "version": "v1.19.0", - "source": { - "type": "git", - "url": "https://github.com/FakerPHP/Faker.git", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^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": "*", - "symfony/phpunit-bridge": "^4.4 || ^5.2" - }, - "suggest": { - "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", - "ext-curl": "Required by Faker\\Provider\\Image to download images.", - "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", - "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.19-dev" - } - }, - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "François Zaninotto" - } - ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], - "support": { - "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0" - }, - "time": "2022-02-02T17:38:57+00:00" - }, - { - "name": "filp/whoops", - "version": "2.14.5", - "source": { - "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "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.14.5" - }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "time": "2022-01-07T12:00:00+00:00" - }, - { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "shasum": "" - }, - "require": { - "php": "^5.3|^7.0|^8.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" - }, - "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "classmap": [ - "hamcrest" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "This is the PHP port of Hamcrest Matchers", - "keywords": [ - "test" - ], - "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" - }, - "time": "2020-07-09T08:09:16+00:00" - }, - { - "name": "laravel/sail", - "version": "v1.13.2", - "source": { - "type": "git", - "url": "https://github.com/laravel/sail.git", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.0|^9.0", - "illuminate/contracts": "^8.0|^9.0", - "illuminate/support": "^8.0|^9.0", - "php": "^7.3|^8.0" - }, - "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": "2022-02-08T14:14:12+00:00" - }, - { - "name": "mockery/mockery", - "version": "1.5.0", - "source": { - "type": "git", - "url": "https://github.com/mockery/mockery.git", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "shasum": "" - }, - "require": { - "hamcrest/hamcrest-php": "^2.0.1", - "lib-pcre": ">=7.0", - "php": "^7.3 || ^8.0" - }, - "conflict": { - "phpunit/phpunit": "<8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-0": { - "Mockery": "library/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" - } - ], - "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": { - "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.5.0" - }, - "time": "2022-01-20T13:18:17+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.10.2", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "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.10.2" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2020-11-13T09:40:50+00:00" - }, - { - "name": "nunomaduro/collision", - "version": "v6.1.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/collision.git", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "shasum": "" - }, - "require": { - "facade/ignition-contracts": "^1.0.2", - "filp/whoops": "^2.14.5", - "php": "^8.0.0", - "symfony/console": "^6.0.2" - }, - "require-dev": { - "brianium/paratest": "^6.4.1", - "laravel/framework": "^9.0", - "nunomaduro/larastan": "^1.0.2", - "nunomaduro/mock-final-classes": "^1.1.0", - "orchestra/testbench": "^7.0.0", - "phpunit/phpunit": "^9.5.11" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "6.x-dev" - }, - "laravel": { - "providers": [ - "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" - ] - } - }, - "autoload": { - "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": "2022-01-18T17:49:08+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.1.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/15a90844ad40f127afd244c0cad228de2a80052a", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a", - "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.1.1" - }, - "time": "2022-02-07T21:56:48+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.6.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "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.6.0" - }, - "time": "2022-01-04T19:58:01+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" - }, - "time": "2021-12-08T12:19:24+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "9.2.10", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d5850aaf931743067f4bfc1ae4cbd06468400687", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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 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", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.10" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-05T09:12:13+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "3.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-02T12:48:52+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "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/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:58:55+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T05:33:50+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.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/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:16:10+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "9.5.13", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/597cb647654ede35e43b137926dfdfef0fb11743", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.3.1", - "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": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.7", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", - "sebastian/version": "^3.0.2" - }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.13" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-01-24T07:33:35+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:08:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "1.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:08:54+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:30:19+00:00" - }, - { - "name": "sebastian/comparator", - "version": "4.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:49:45+00:00" - }, - { - "name": "sebastian/complexity", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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 calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:52:27+00:00" - }, - { - "name": "sebastian/diff", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:10:38+00:00" - }, - { - "name": "sebastian/environment", - "version": "5.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-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": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:52:38+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "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", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-11-11T14:18:36+00:00" - }, - { - "name": "sebastian/global-state", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-11T13:31:12+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-28T06:42:11+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "http://www.github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:17:30+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:45:17+00:00" - }, - { - "name": "sebastian/type", - "version": "2.3.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-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/2.3.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-15T12:49:02+00:00" - }, - { - "name": "sebastian/version", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:39:44+00:00" - }, - { - "name": "spatie/backtrace", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/backtrace.git", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "ext-json": "*", - "phpunit/phpunit": "^9.3", - "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": { - "issues": "https://github.com/spatie/backtrace/issues", - "source": "https://github.com/spatie/backtrace/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/sponsors/spatie", - "type": "github" - }, - { - "url": "https://spatie.be/open-source/support-us", - "type": "other" - } - ], - "time": "2021-11-09T10:57:15+00:00" - }, - { - "name": "spatie/flare-client-php", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/flare-client-php.git", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "shasum": "" - }, - "require": { - "illuminate/pipeline": "^8.0|^9.0", - "php": "^8.0", - "spatie/backtrace": "^1.2", - "symfony/http-foundation": "^5.0|^6.0", - "symfony/mime": "^5.2|^6.0", - "symfony/process": "^5.2|^6.0", - "symfony/var-dumper": "^5.2|^6.0" - }, - "require-dev": { - "dms/phpunit-arraysubset-asserts": "^0.3.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/phpunit-snapshot-assertions": "^4.0" - }, - "type": "library", - "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.0.1" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2022-02-04T15:21:00+00:00" - }, - { - "name": "spatie/ignition", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/spatie/ignition.git", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/d2d5ba823af3004268556e87dfc94449e4159f5a", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "monolog/monolog": "^2.0", - "php": "^8.0", - "spatie/flare-client-php": "^1.0", - "symfony/console": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "mockery/mockery": "^1.4", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/ray": "^1.32", - "symfony/process": "^5.4|^6.0" - }, - "type": "library", - "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": "2022-01-19T12:57:41+00:00" - }, - { - "name": "spatie/laravel-ignition", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/68250225a9f83b086462c2af1b1139dfde48fbd2", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*", - "illuminate/support": "^8.77|^9.0", - "monolog/monolog": "^2.3", - "php": "^8.0", - "spatie/flare-client-php": "^1.0.1", - "spatie/ignition": "^1.0", - "symfony/console": "^5.0|^6.0", - "symfony/var-dumper": "^5.0|^6.0" - }, - "require-dev": { - "filp/whoops": "^2.14", - "livewire/livewire": "^2.8|dev-develop", - "mockery/mockery": "^1.4", - "nunomaduro/larastan": "^1.0", - "orchestra/testbench": "^6.23|^7.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/laravel-ray": "^1.27" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Spatie\\LaravelIgnition\\IgnitionServiceProvider" - ], - "aliases": { - "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" - } - } - }, - "autoload": { - "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": "2022-02-04T15:25:56+00:00" - }, - { - "name": "squizlabs/php_codesniffer", - "version": "3.6.2", - "source": { - "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", - "shasum": "" - }, - "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.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": "lead" - } - ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", - "keywords": [ - "phpcs", - "standards" - ], - "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" - }, - "time": "2021-12-12T21:44:58+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2021-07-28T10:34:58+00:00" - } - ], - "aliases": [], - "minimum-stability": "dev", - "stability-flags": [], - "prefer-stable": true, - "prefer-lowest": false, - "platform": { - "php": "^8.0" - }, - "platform-dev": [], - "plugin-api-version": "2.1.0" -} diff --git a/Chapter23/onlineStore/config/app.php b/Chapter23/onlineStore/config/app.php deleted file mode 100644 index 1941d7c..0000000 --- a/Chapter23/onlineStore/config/app.php +++ /dev/null @@ -1,197 +0,0 @@ - env('APP_NAME', 'Laravel'), - - /* - |-------------------------------------------------------------------------- - | Application Environment - |-------------------------------------------------------------------------- - | - | This value determines the "environment" your application is currently - | running in. This may determine how you prefer to configure various - | services the application utilizes. Set this in your ".env" file. - | - */ - - 'env' => env('APP_ENV', 'production'), - - /* - |-------------------------------------------------------------------------- - | Application Debug Mode - |-------------------------------------------------------------------------- - | - | When your application is in debug mode, detailed error messages with - | stack traces will be shown on every error that occurs within your - | application. If disabled, a simple generic error page is shown. - | - */ - - 'debug' => (bool) env('APP_DEBUG', false), - - /* - |-------------------------------------------------------------------------- - | Application URL - |-------------------------------------------------------------------------- - | - | This URL is used by the console to properly generate URLs when using - | the Artisan command line tool. You should set this to the root of - | your application so that it is used when running Artisan tasks. - | - */ - - 'url' => env('APP_URL', 'http://localhost'), - - 'asset_url' => env('ASSET_URL', null), - - /* - |-------------------------------------------------------------------------- - | 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', - - /* - |-------------------------------------------------------------------------- - | 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' => [ - - /* - * Laravel Framework Service Providers... - */ - Illuminate\Auth\AuthServiceProvider::class, - Illuminate\Broadcasting\BroadcastServiceProvider::class, - Illuminate\Bus\BusServiceProvider::class, - Illuminate\Cache\CacheServiceProvider::class, - Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, - Illuminate\Cookie\CookieServiceProvider::class, - Illuminate\Database\DatabaseServiceProvider::class, - Illuminate\Encryption\EncryptionServiceProvider::class, - Illuminate\Filesystem\FilesystemServiceProvider::class, - Illuminate\Foundation\Providers\FoundationServiceProvider::class, - Illuminate\Hashing\HashServiceProvider::class, - Illuminate\Mail\MailServiceProvider::class, - Illuminate\Notifications\NotificationServiceProvider::class, - Illuminate\Pagination\PaginationServiceProvider::class, - Illuminate\Pipeline\PipelineServiceProvider::class, - Illuminate\Queue\QueueServiceProvider::class, - Illuminate\Redis\RedisServiceProvider::class, - Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, - Illuminate\Session\SessionServiceProvider::class, - Illuminate\Translation\TranslationServiceProvider::class, - Illuminate\Validation\ValidationServiceProvider::class, - Illuminate\View\ViewServiceProvider::class, - - /* - * 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, - - ], - - /* - |-------------------------------------------------------------------------- - | 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([ - // ... - ])->toArray(), - -]; diff --git a/Chapter23/onlineStore/config/auth.php b/Chapter23/onlineStore/config/auth.php deleted file mode 100644 index d8c6cee..0000000 --- a/Chapter23/onlineStore/config/auth.php +++ /dev/null @@ -1,111 +0,0 @@ - [ - '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 expire 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. - | - */ - - 'passwords' => [ - 'users' => [ - 'provider' => 'users', - 'table' => 'password_resets', - '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/Chapter23/onlineStore/config/broadcasting.php b/Chapter23/onlineStore/config/broadcasting.php deleted file mode 100644 index 67fcbbd..0000000 --- a/Chapter23/onlineStore/config/broadcasting.php +++ /dev/null @@ -1,67 +0,0 @@ - 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'), - 'useTLS' => true, - ], - '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/Chapter23/onlineStore/config/cache.php b/Chapter23/onlineStore/config/cache.php deleted file mode 100644 index 8736c7a..0000000 --- a/Chapter23/onlineStore/config/cache.php +++ /dev/null @@ -1,110 +0,0 @@ - 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'), - ], - - '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 a RAM based store such as APC or Memcached, there might - | be other applications utilizing the same cache. So, we'll specify a - | value to get prefixed to all our keys so we can avoid collisions. - | - */ - - 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'), - -]; diff --git a/Chapter23/onlineStore/config/cors.php b/Chapter23/onlineStore/config/cors.php deleted file mode 100644 index 8a39e6d..0000000 --- a/Chapter23/onlineStore/config/cors.php +++ /dev/null @@ -1,34 +0,0 @@ - ['api/*', 'sanctum/csrf-cookie'], - - 'allowed_methods' => ['*'], - - 'allowed_origins' => ['*'], - - 'allowed_origins_patterns' => [], - - 'allowed_headers' => ['*'], - - 'exposed_headers' => [], - - 'max_age' => 0, - - 'supports_credentials' => false, - -]; diff --git a/Chapter23/onlineStore/config/database.php b/Chapter23/onlineStore/config/database.php deleted file mode 100644 index 0faebae..0000000 --- a/Chapter23/onlineStore/config/database.php +++ /dev/null @@ -1,147 +0,0 @@ - env('DB_CONNECTION', 'mysql'), - - /* - |-------------------------------------------------------------------------- - | Database Connections - |-------------------------------------------------------------------------- - | - | Here are each of the database connections setup for your application. - | Of course, examples of configuring each database platform that is - | supported by Laravel is shown below to make development simple. - | - | - | All database work in Laravel is done through the PHP PDO facilities - | so make sure you have the driver for your particular database of - | choice installed on your machine before you begin development. - | - */ - - 'connections' => [ - - 'sqlite' => [ - 'driver' => 'sqlite', - 'url' => env('DATABASE_URL'), - 'database' => env('DB_DATABASE', database_path('database.sqlite')), - 'prefix' => '', - 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), - ], - - 'mysql' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '3306'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'unix_socket' => env('DB_SOCKET', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - 'pgsql' => [ - 'driver' => 'pgsql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '5432'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - 'search_path' => 'public', - 'sslmode' => 'prefer', - ], - - 'sqlsrv' => [ - 'driver' => 'sqlsrv', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', 'localhost'), - 'port' => env('DB_PORT', '1433'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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'), - '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'), - 'password' => env('REDIS_PASSWORD'), - 'port' => env('REDIS_PORT', '6379'), - 'database' => env('REDIS_CACHE_DB', '1'), - ], - - ], - -]; diff --git a/Chapter23/onlineStore/config/filesystems.php b/Chapter23/onlineStore/config/filesystems.php deleted file mode 100644 index cf5abce..0000000 --- a/Chapter23/onlineStore/config/filesystems.php +++ /dev/null @@ -1,73 +0,0 @@ - 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 setup for each driver as an example of the required options. - | - | Supported Drivers: "local", "ftp", "sftp", "s3" - | - */ - - 'disks' => [ - - 'local' => [ - 'driver' => 'local', - 'root' => storage_path('app'), - ], - - 'public' => [ - 'driver' => 'local', - 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', - 'visibility' => 'public', - ], - - '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), - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter23/onlineStore/config/hashing.php b/Chapter23/onlineStore/config/hashing.php deleted file mode 100644 index bcd3be4..0000000 --- a/Chapter23/onlineStore/config/hashing.php +++ /dev/null @@ -1,52 +0,0 @@ - '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/Chapter23/onlineStore/config/logging.php b/Chapter23/onlineStore/config/logging.php deleted file mode 100644 index fefe088..0000000 --- a/Chapter23/onlineStore/config/logging.php +++ /dev/null @@ -1,119 +0,0 @@ - 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' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), - - /* - |-------------------------------------------------------------------------- - | 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'), - ], - - 'daily' => [ - 'driver' => 'daily', - 'path' => storage_path('logs/laravel.log'), - 'level' => env('LOG_LEVEL', 'debug'), - 'days' => 14, - ], - - 'slack' => [ - 'driver' => 'slack', - 'url' => env('LOG_SLACK_WEBHOOK_URL'), - 'username' => 'Laravel Log', - 'emoji' => ':boom:', - 'level' => env('LOG_LEVEL', 'critical'), - ], - - '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'), - ], - ], - - 'stderr' => [ - 'driver' => 'monolog', - 'level' => env('LOG_LEVEL', 'debug'), - 'handler' => StreamHandler::class, - 'formatter' => env('LOG_STDERR_FORMATTER'), - 'with' => [ - 'stream' => 'php://stderr', - ], - ], - - 'syslog' => [ - 'driver' => 'syslog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'errorlog' => [ - 'driver' => 'errorlog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'null' => [ - 'driver' => 'monolog', - 'handler' => NullHandler::class, - ], - - 'emergency' => [ - 'path' => storage_path('logs/laravel.log'), - ], - ], - -]; diff --git a/Chapter23/onlineStore/config/mail.php b/Chapter23/onlineStore/config/mail.php deleted file mode 100644 index 87b6fe3..0000000 --- a/Chapter23/onlineStore/config/mail.php +++ /dev/null @@ -1,117 +0,0 @@ - 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", - | "postmark", "log", "array", "failover" - | - */ - - 'mailers' => [ - 'smtp' => [ - 'transport' => 'smtp', - '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, - ], - - 'ses' => [ - 'transport' => 'ses', - ], - - 'mailgun' => [ - 'transport' => 'mailgun', - ], - - 'postmark' => [ - 'transport' => 'postmark', - ], - - 'sendmail' => [ - 'transport' => 'sendmail', - 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -t -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/Chapter23/onlineStore/config/queue.php b/Chapter23/onlineStore/config/queue.php deleted file mode 100644 index 25ea5a8..0000000 --- a/Chapter23/onlineStore/config/queue.php +++ /dev/null @@ -1,93 +0,0 @@ - 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, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter23/onlineStore/config/sanctum.php b/Chapter23/onlineStore/config/sanctum.php deleted file mode 100644 index 9281c92..0000000 --- a/Chapter23/onlineStore/config/sanctum.php +++ /dev/null @@ -1,65 +0,0 @@ - explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( - '%s%s', - 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', - env('APP_URL') ? ','.parse_url(env('APP_URL'), PHP_URL_HOST) : '' - ))), - - /* - |-------------------------------------------------------------------------- - | 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/Chapter23/onlineStore/config/services.php b/Chapter23/onlineStore/config/services.php deleted file mode 100644 index 2a1d616..0000000 --- a/Chapter23/onlineStore/config/services.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - 'domain' => env('MAILGUN_DOMAIN'), - 'secret' => env('MAILGUN_SECRET'), - 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), - ], - - '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/Chapter23/onlineStore/config/session.php b/Chapter23/onlineStore/config/session.php deleted file mode 100644 index 8fed97c..0000000 --- a/Chapter23/onlineStore/config/session.php +++ /dev/null @@ -1,201 +0,0 @@ - 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/Chapter23/onlineStore/config/view.php b/Chapter23/onlineStore/config/view.php deleted file mode 100644 index 22b8a18..0000000 --- a/Chapter23/onlineStore/config/view.php +++ /dev/null @@ -1,36 +0,0 @@ - [ - 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/Chapter23/onlineStore/database/.gitignore b/Chapter23/onlineStore/database/.gitignore deleted file mode 100644 index 9b19b93..0000000 --- a/Chapter23/onlineStore/database/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.sqlite* diff --git a/Chapter23/onlineStore/database/factories/UserFactory.php b/Chapter23/onlineStore/database/factories/UserFactory.php deleted file mode 100644 index d6ca926..0000000 --- a/Chapter23/onlineStore/database/factories/UserFactory.php +++ /dev/null @@ -1,42 +0,0 @@ - - */ -class UserFactory extends Factory -{ - /** - * Define the model's default state. - * - * @return array - */ - public function definition() - { - return [ - 'name' => $this->faker->name(), - 'email' => $this->faker->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. - * - * @return \Illuminate\Database\Eloquent\Factories\Factory - */ - public function unverified() - { - return $this->state(function (array $attributes) { - return [ - 'email_verified_at' => null, - ]; - }); - } -} diff --git a/Chapter23/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php b/Chapter23/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php deleted file mode 100644 index cf6b776..0000000 --- a/Chapter23/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->string('name'); - $table->string('email')->unique(); - $table->timestamp('email_verified_at')->nullable(); - $table->string('password'); - $table->rememberToken(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('users'); - } -}; diff --git a/Chapter23/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php b/Chapter23/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php deleted file mode 100644 index 0ee0a36..0000000 --- a/Chapter23/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php +++ /dev/null @@ -1,32 +0,0 @@ -string('email')->index(); - $table->string('token'); - $table->timestamp('created_at')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('password_resets'); - } -} diff --git a/Chapter23/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/Chapter23/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php deleted file mode 100644 index 1719198..0000000 --- a/Chapter23/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php +++ /dev/null @@ -1,36 +0,0 @@ -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. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('failed_jobs'); - } -}; diff --git a/Chapter23/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/Chapter23/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php deleted file mode 100644 index fd235f8..0000000 --- a/Chapter23/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->morphs('tokenable'); - $table->string('name'); - $table->string('token', 64)->unique(); - $table->text('abilities')->nullable(); - $table->timestamp('last_used_at')->nullable(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('personal_access_tokens'); - } -}; diff --git a/Chapter23/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php b/Chapter23/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php deleted file mode 100644 index 2eecdc2..0000000 --- a/Chapter23/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php +++ /dev/null @@ -1,35 +0,0 @@ -id(); - $table->string('name'); - $table->text('description'); - $table->string('image'); - $table->integer('price'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('products'); - } -}; diff --git a/Chapter23/onlineStore/database/migrations/2022_02_12_140820_alter_users_table.php b/Chapter23/onlineStore/database/migrations/2022_02_12_140820_alter_users_table.php deleted file mode 100644 index 5bfcf7e..0000000 --- a/Chapter23/onlineStore/database/migrations/2022_02_12_140820_alter_users_table.php +++ /dev/null @@ -1,34 +0,0 @@ -string('role')->default('client'); - $table->integer('balance'); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::table('users', function (Blueprint $table) { - $table->dropColumn(['role']); - $table->dropColumn(['balance']); - }); - } -}; diff --git a/Chapter23/onlineStore/database/seeders/DatabaseSeeder.php b/Chapter23/onlineStore/database/seeders/DatabaseSeeder.php deleted file mode 100644 index 71f673f..0000000 --- a/Chapter23/onlineStore/database/seeders/DatabaseSeeder.php +++ /dev/null @@ -1,19 +0,0 @@ -create(); - } -} diff --git a/Chapter23/onlineStore/lang/en.json b/Chapter23/onlineStore/lang/en.json deleted file mode 100644 index 577680d..0000000 --- a/Chapter23/onlineStore/lang/en.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "The :attribute must contain at least one letter.": "The :attribute must contain at least one letter.", - "The :attribute must contain at least one number.": "The :attribute must contain at least one number.", - "The :attribute must contain at least one symbol.": "The :attribute must contain at least one symbol.", - "The :attribute must contain at least one uppercase and one lowercase letter.": "The :attribute must contain at least one uppercase and one lowercase letter.", - "The given :attribute has appeared in a data leak. Please choose a different :attribute.": "The given :attribute has appeared in a data leak. Please choose a different :attribute." -} diff --git a/Chapter23/onlineStore/lang/en/auth.php b/Chapter23/onlineStore/lang/en/auth.php deleted file mode 100644 index 6598e2c..0000000 --- a/Chapter23/onlineStore/lang/en/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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/Chapter23/onlineStore/lang/en/pagination.php b/Chapter23/onlineStore/lang/en/pagination.php deleted file mode 100644 index d481411..0000000 --- a/Chapter23/onlineStore/lang/en/pagination.php +++ /dev/null @@ -1,19 +0,0 @@ - '« Previous', - 'next' => 'Next »', - -]; diff --git a/Chapter23/onlineStore/lang/en/passwords.php b/Chapter23/onlineStore/lang/en/passwords.php deleted file mode 100644 index 2345a56..0000000 --- a/Chapter23/onlineStore/lang/en/passwords.php +++ /dev/null @@ -1,22 +0,0 @@ - '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/Chapter23/onlineStore/lang/en/validation.php b/Chapter23/onlineStore/lang/en/validation.php deleted file mode 100644 index 783003c..0000000 --- a/Chapter23/onlineStore/lang/en/validation.php +++ /dev/null @@ -1,163 +0,0 @@ - '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' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - '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' => [ - 'numeric' => 'The :attribute must be greater than :value.', - 'file' => 'The :attribute must be greater than :value kilobytes.', - 'string' => 'The :attribute must be greater than :value characters.', - 'array' => 'The :attribute must have more than :value items.', - ], - 'gte' => [ - 'numeric' => 'The :attribute must be greater than or equal to :value.', - 'file' => 'The :attribute must be greater than or equal to :value kilobytes.', - 'string' => 'The :attribute must be greater than or equal to :value characters.', - 'array' => 'The :attribute must have :value items or more.', - ], - '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' => [ - 'numeric' => 'The :attribute must be less than :value.', - 'file' => 'The :attribute must be less than :value kilobytes.', - 'string' => 'The :attribute must be less than :value characters.', - 'array' => 'The :attribute must have less than :value items.', - ], - 'lte' => [ - 'numeric' => 'The :attribute must be less than or equal to :value.', - 'file' => 'The :attribute must be less than or equal to :value kilobytes.', - 'string' => 'The :attribute must be less than or equal to :value characters.', - 'array' => 'The :attribute must not have more than :value items.', - ], - 'mac_address' => 'The :attribute must be a valid MAC address.', - 'max' => [ - 'numeric' => 'The :attribute must not be greater than :max.', - 'file' => 'The :attribute must not be greater than :max kilobytes.', - 'string' => 'The :attribute must not be greater than :max characters.', - 'array' => 'The :attribute must not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - '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.', - 'password' => 'The password is incorrect.', - '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' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - '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/Chapter23/onlineStore/package.json b/Chapter23/onlineStore/package.json deleted file mode 100644 index 7b71681..0000000 --- a/Chapter23/onlineStore/package.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "private": true, - "scripts": { - "dev": "npm run development", - "development": "mix", - "watch": "mix watch", - "watch-poll": "mix watch -- --watch-options-poll=1000", - "hot": "mix watch --hot", - "prod": "npm run production", - "production": "mix --production" - }, - "devDependencies": { - "@popperjs/core": "^2.10.2", - "axios": "^0.25", - "bootstrap": "^5.1.3", - "laravel-mix": "^6.0.6", - "lodash": "^4.17.19", - "postcss": "^8.1.14", - "sass": "^1.32.11", - "sass-loader": "^11.0.1" - } -} diff --git a/Chapter23/onlineStore/phpcs.xml b/Chapter23/onlineStore/phpcs.xml deleted file mode 100644 index a1cf2b6..0000000 --- a/Chapter23/onlineStore/phpcs.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - The coding standard for the Online Store project - - app/ - config/ - database/ - routes/ - */migrations/* - diff --git a/Chapter23/onlineStore/phpunit.xml b/Chapter23/onlineStore/phpunit.xml deleted file mode 100644 index 2ac86a1..0000000 --- a/Chapter23/onlineStore/phpunit.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - ./tests/Unit - - - ./tests/Feature - - - - - ./app - - - - - - - - - - - - - - diff --git a/Chapter23/onlineStore/public/.htaccess b/Chapter23/onlineStore/public/.htaccess deleted file mode 100644 index 3aec5e2..0000000 --- a/Chapter23/onlineStore/public/.htaccess +++ /dev/null @@ -1,21 +0,0 @@ - - - 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/Chapter23/onlineStore/public/css/admin.css b/Chapter23/onlineStore/public/css/admin.css deleted file mode 100644 index d9495a1..0000000 --- a/Chapter23/onlineStore/public/css/admin.css +++ /dev/null @@ -1,33 +0,0 @@ -.copyright { - background-color: #1a252f; -} - -.fixed { - -ms-flex: 0 0 250px; - flex: 0 0 250px; -} - -.content-grey { - background-color: #f8f9fc; -} - -hr { - margin-top: 0.8em; - margin-bottom: 0.8em; -} - -.img-profile { - height: 2rem; - width: 2rem; -} - -.profile-font { - color: #858796 !important; - font-size: 80%; - font-weight: 400; -} - -.card-header { - background-color: #f8f9fc; - border-bottom: 1px solid #e3e6f0; -} diff --git a/Chapter23/onlineStore/public/css/app.css b/Chapter23/onlineStore/public/css/app.css deleted file mode 100644 index cabac36..0000000 --- a/Chapter23/onlineStore/public/css/app.css +++ /dev/null @@ -1,20 +0,0 @@ -.bg-secondary { - background-color: #2c3e50 !important; -} - -.copyright { - background-color: #1a252f; -} - -.bg-primary { - background-color: #1abc9c !important; -} - -nav{ - font-weight: 700; -} - -.img-card{ - height: 18vw; - object-fit: cover; -} diff --git a/Chapter23/onlineStore/public/favicon.ico b/Chapter23/onlineStore/public/favicon.ico deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter23/onlineStore/public/img/game.png b/Chapter23/onlineStore/public/img/game.png deleted file mode 100644 index 85420e8bbc16098bf26b4ee63bde0e91a19d1f2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25896 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 cz>% diff --git a/Chapter23/onlineStore/public/img/safe.png b/Chapter23/onlineStore/public/img/safe.png deleted file mode 100644 index 445942c707af53210931f9f4f99f6d3cb69e5d89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19240 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
    w==XB0?3|p=#`o%NsudE(E-U#KS3Snw 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 o>ir+C;RN10sIS0&a;p - - - - - - - - - - - - - - - - - - diff --git a/Chapter23/onlineStore/public/index.php b/Chapter23/onlineStore/public/index.php deleted file mode 100644 index 1d69f3a..0000000 --- a/Chapter23/onlineStore/public/index.php +++ /dev/null @@ -1,55 +0,0 @@ -make(Kernel::class); - -$response = $kernel->handle( - $request = Request::capture() -)->send(); - -$kernel->terminate($request, $response); diff --git a/Chapter23/onlineStore/public/robots.txt b/Chapter23/onlineStore/public/robots.txt deleted file mode 100644 index eb05362..0000000 --- a/Chapter23/onlineStore/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: diff --git a/Chapter23/onlineStore/resources/css/app.css b/Chapter23/onlineStore/resources/css/app.css deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter23/onlineStore/resources/js/app.js b/Chapter23/onlineStore/resources/js/app.js deleted file mode 100644 index 40c55f6..0000000 --- a/Chapter23/onlineStore/resources/js/app.js +++ /dev/null @@ -1 +0,0 @@ -require('./bootstrap'); diff --git a/Chapter23/onlineStore/resources/js/bootstrap.js b/Chapter23/onlineStore/resources/js/bootstrap.js deleted file mode 100644 index dcdc4df..0000000 --- a/Chapter23/onlineStore/resources/js/bootstrap.js +++ /dev/null @@ -1,32 +0,0 @@ -window._ = require('lodash'); - -try { - require('bootstrap'); -} catch (e) {} - -/** - * 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 = require('axios'); - -window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; - -/** - * 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'; - -// window.Pusher = require('pusher-js'); - -// window.Echo = new Echo({ -// broadcaster: 'pusher', -// key: process.env.MIX_PUSHER_APP_KEY, -// cluster: process.env.MIX_PUSHER_APP_CLUSTER, -// forceTLS: true -// }); diff --git a/Chapter23/onlineStore/resources/sass/_variables.scss b/Chapter23/onlineStore/resources/sass/_variables.scss deleted file mode 100644 index 172daaa..0000000 --- a/Chapter23/onlineStore/resources/sass/_variables.scss +++ /dev/null @@ -1,7 +0,0 @@ -// Body -$body-bg: #f8fafc; - -// Typography -$font-family-sans-serif: 'Nunito', sans-serif; -$font-size-base: 0.9rem; -$line-height-base: 1.6; diff --git a/Chapter23/onlineStore/resources/sass/app.scss b/Chapter23/onlineStore/resources/sass/app.scss deleted file mode 100644 index 3193ffa..0000000 --- a/Chapter23/onlineStore/resources/sass/app.scss +++ /dev/null @@ -1,8 +0,0 @@ -// Fonts -@import url('https://fonts.googleapis.com/css?family=Nunito'); - -// Variables -@import 'variables'; - -// Bootstrap -@import '~bootstrap/scss/bootstrap'; diff --git a/Chapter23/onlineStore/resources/views/admin/home/index.blade.php b/Chapter23/onlineStore/resources/views/admin/home/index.blade.php deleted file mode 100644 index a2b4868..0000000 --- a/Chapter23/onlineStore/resources/views/admin/home/index.blade.php +++ /dev/null @@ -1,12 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
    -
    - Admin Panel - Home Page -
    -
    - Welcome to the Admin Panel, use the sidebar to navigate between the different options. -
    -
    -@endsection diff --git a/Chapter23/onlineStore/resources/views/admin/product/edit.blade.php b/Chapter23/onlineStore/resources/views/admin/product/edit.blade.php deleted file mode 100644 index b8e03d8..0000000 --- a/Chapter23/onlineStore/resources/views/admin/product/edit.blade.php +++ /dev/null @@ -1,61 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
    -
    - Edit Product -
    -
    - @if($errors->any()) -
      - @foreach($errors->all() as $error) -
    • - {{ $error }}
    • - @endforeach -
    - @endif - -
    - @csrf - @method('PUT') -
    -
    -
    - -
    - -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -   -
    -
    -
    - - -
    - -
    -
    -
    -@endsection diff --git a/Chapter23/onlineStore/resources/views/admin/product/index.blade.php b/Chapter23/onlineStore/resources/views/admin/product/index.blade.php deleted file mode 100644 index 19fbe4b..0000000 --- a/Chapter23/onlineStore/resources/views/admin/product/index.blade.php +++ /dev/null @@ -1,98 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
    -
    - Create Products -
    -
    - @if($errors->any()) -
      - @foreach($errors->all() as $error) -
    • - {{ $error }}
    • - @endforeach -
    - @endif - -
    - @csrf -
    -
    -
    - -
    - -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -   -
    -
    -
    - - -
    - -
    -
    -
    - -
    -
    - Manage Products -
    -
    - - - - - - - - - - - @foreach ($viewData["products"] as $product) - - - - - - - @endforeach - -
    IDNameEditDelete
    {{ $product->getId() }}{{ $product->getName() }} - - - - -
    - @csrf - @method('DELETE') - -
    -
    -
    -
    -@endsection diff --git a/Chapter23/onlineStore/resources/views/auth/login.blade.php b/Chapter23/onlineStore/resources/views/auth/login.blade.php deleted file mode 100644 index c7e5ea0..0000000 --- a/Chapter23/onlineStore/resources/views/auth/login.blade.php +++ /dev/null @@ -1,73 +0,0 @@ -@extends('layouts.app') - -@section('content') -
    -@endsection diff --git a/Chapter23/onlineStore/resources/views/auth/passwords/confirm.blade.php b/Chapter23/onlineStore/resources/views/auth/passwords/confirm.blade.php deleted file mode 100644 index f8c8e61..0000000 --- a/Chapter23/onlineStore/resources/views/auth/passwords/confirm.blade.php +++ /dev/null @@ -1,49 +0,0 @@ -@extends('layouts.app') - -@section('content') - -@endsection diff --git a/Chapter23/onlineStore/resources/views/auth/passwords/email.blade.php b/Chapter23/onlineStore/resources/views/auth/passwords/email.blade.php deleted file mode 100644 index d1ac783..0000000 --- a/Chapter23/onlineStore/resources/views/auth/passwords/email.blade.php +++ /dev/null @@ -1,47 +0,0 @@ -@extends('layouts.app') - -@section('content') -
    -
    -
    -
    -
    {{ __('Reset Password') }}
    - -
    - @if (session('status')) - - @endif - -
    - @csrf - -
    - - -
    - - - @error('email') - - {{ $message }} - - @enderror -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -@endsection diff --git a/Chapter23/onlineStore/resources/views/auth/passwords/reset.blade.php b/Chapter23/onlineStore/resources/views/auth/passwords/reset.blade.php deleted file mode 100644 index dccf6c6..0000000 --- a/Chapter23/onlineStore/resources/views/auth/passwords/reset.blade.php +++ /dev/null @@ -1,65 +0,0 @@ -@extends('layouts.app') - -@section('content') -
    -
    -
    -
    -
    {{ __('Reset Password') }}
    - -
    -
    - @csrf - - - -
    - - -
    - - - @error('email') - - {{ $message }} - - @enderror -
    -
    - -
    - - -
    - - - @error('password') - - {{ $message }} - - @enderror -
    -
    - -
    - - -
    - -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -@endsection diff --git a/Chapter23/onlineStore/resources/views/auth/register.blade.php b/Chapter23/onlineStore/resources/views/auth/register.blade.php deleted file mode 100644 index e001a0b..0000000 --- a/Chapter23/onlineStore/resources/views/auth/register.blade.php +++ /dev/null @@ -1,77 +0,0 @@ -@extends('layouts.app') - -@section('content') -
    -
    -
    -
    -
    {{ __('Register') }}
    - -
    -
    - @csrf - -
    - - -
    - - - @error('name') - - {{ $message }} - - @enderror -
    -
    - -
    - - -
    - - - @error('email') - - {{ $message }} - - @enderror -
    -
    - -
    - - -
    - - - @error('password') - - {{ $message }} - - @enderror -
    -
    - -
    - - -
    - -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -@endsection diff --git a/Chapter23/onlineStore/resources/views/auth/verify.blade.php b/Chapter23/onlineStore/resources/views/auth/verify.blade.php deleted file mode 100644 index 9f8c1bc..0000000 --- a/Chapter23/onlineStore/resources/views/auth/verify.blade.php +++ /dev/null @@ -1,28 +0,0 @@ -@extends('layouts.app') - -@section('content') -
    -
    -
    -
    -
    {{ __('Verify Your Email Address') }}
    - -
    - @if (session('resent')) - - @endif - - {{ __('Before proceeding, please check your email for a verification link.') }} - {{ __('If you did not receive the email') }}, -
    - @csrf - . -
    -
    -
    -
    -
    -
    -@endsection diff --git a/Chapter23/onlineStore/resources/views/home.blade.php b/Chapter23/onlineStore/resources/views/home.blade.php deleted file mode 100644 index 1f34466..0000000 --- a/Chapter23/onlineStore/resources/views/home.blade.php +++ /dev/null @@ -1,23 +0,0 @@ -@extends('layouts.app') - -@section('content') -
    -
    -
    -
    -
    {{ __('Dashboard') }}
    - -
    - @if (session('status')) - - @endif - - {{ __('You are logged in!') }} -
    -
    -
    -
    -
    -@endsection diff --git a/Chapter23/onlineStore/resources/views/home/about.blade.php b/Chapter23/onlineStore/resources/views/home/about.blade.php deleted file mode 100644 index f79abf3..0000000 --- a/Chapter23/onlineStore/resources/views/home/about.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    -
    -
    -

    {{ $viewData["description"] }}

    -
    -
    -

    {{ $viewData["author"] }}

    -
    -
    -
    -@endsection diff --git a/Chapter23/onlineStore/resources/views/home/index.blade.php b/Chapter23/onlineStore/resources/views/home/index.blade.php deleted file mode 100644 index 1affb20..0000000 --- a/Chapter23/onlineStore/resources/views/home/index.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('content') -
    -
    - -
    -
    - -
    -
    - -
    -
    -@endsection diff --git a/Chapter23/onlineStore/resources/views/layouts/admin.blade.php b/Chapter23/onlineStore/resources/views/layouts/admin.blade.php deleted file mode 100644 index 4aff3f8..0000000 --- a/Chapter23/onlineStore/resources/views/layouts/admin.blade.php +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - @yield('title', 'Admin - Online Store') - - - -
    - - - -
    - - -
    - @yield('content') -
    -
    -
    - - - - - - - - - diff --git a/Chapter23/onlineStore/resources/views/layouts/app.blade.php b/Chapter23/onlineStore/resources/views/layouts/app.blade.php deleted file mode 100644 index 81308e6..0000000 --- a/Chapter23/onlineStore/resources/views/layouts/app.blade.php +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - @yield('title', 'Online Store') - - - - - -
    -
    -

    @yield('subtitle', 'A Laravel Online Store')

    -
    -
    - - -
    - @yield('content') -
    - - - - - - - diff --git a/Chapter23/onlineStore/resources/views/product/index.blade.php b/Chapter23/onlineStore/resources/views/product/index.blade.php deleted file mode 100644 index 64c3e18..0000000 --- a/Chapter23/onlineStore/resources/views/product/index.blade.php +++ /dev/null @@ -1,18 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    - @foreach ($viewData["products"] as $product) - - @endforeach -
    -@endsection diff --git a/Chapter23/onlineStore/resources/views/product/show.blade.php b/Chapter23/onlineStore/resources/views/product/show.blade.php deleted file mode 100644 index be37a01..0000000 --- a/Chapter23/onlineStore/resources/views/product/show.blade.php +++ /dev/null @@ -1,21 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    -
    -
    - getImage()) }}" class="img-fluid rounded-start"> -
    -
    -
    -
    - {{ $viewData["product"]->getName() }} (${{ $viewData["product"]->getPrice() }}) -
    -

    {{ $viewData["product"]->getDescription() }}

    -

    Add to Cart

    -
    -
    -
    -
    -@endsection diff --git a/Chapter23/onlineStore/resources/views/welcome.blade.php b/Chapter23/onlineStore/resources/views/welcome.blade.php deleted file mode 100644 index c587c72..0000000 --- a/Chapter23/onlineStore/resources/views/welcome.blade.php +++ /dev/null @@ -1,7 +0,0 @@ -@extends('layouts.app') -@section('title', 'Home Page - Online Store') -@section('content') -
    - Welcome to the application -
    -@endsection \ No newline at end of file diff --git a/Chapter23/onlineStore/routes/api.php b/Chapter23/onlineStore/routes/api.php deleted file mode 100644 index eb6fa48..0000000 --- a/Chapter23/onlineStore/routes/api.php +++ /dev/null @@ -1,19 +0,0 @@ -get('/user', function (Request $request) { - return $request->user(); -}); diff --git a/Chapter23/onlineStore/routes/channels.php b/Chapter23/onlineStore/routes/channels.php deleted file mode 100644 index 5d451e1..0000000 --- a/Chapter23/onlineStore/routes/channels.php +++ /dev/null @@ -1,18 +0,0 @@ -id === (int) $id; -}); diff --git a/Chapter23/onlineStore/routes/console.php b/Chapter23/onlineStore/routes/console.php deleted file mode 100644 index e05f4c9..0000000 --- a/Chapter23/onlineStore/routes/console.php +++ /dev/null @@ -1,19 +0,0 @@ -comment(Inspiring::quote()); -})->purpose('Display an inspiring quote'); diff --git a/Chapter23/onlineStore/routes/web.php b/Chapter23/onlineStore/routes/web.php deleted file mode 100644 index 332d651..0000000 --- a/Chapter23/onlineStore/routes/web.php +++ /dev/null @@ -1,30 +0,0 @@ -name("home.index"); -Route::get('/about', 'App\Http\Controllers\HomeController@about')->name("home.about"); -Route::get('/products', 'App\Http\Controllers\ProductController@index')->name("product.index"); -Route::get('/products/{id}', 'App\Http\Controllers\ProductController@show')->name("product.show"); - -Route::middleware('admin')->group(function () { - Route::get('/admin', 'App\Http\Controllers\Admin\AdminHomeController@index')->name("admin.home.index"); - Route::get('/admin/products', 'App\Http\Controllers\Admin\AdminProductController@index')->name("admin.product.index"); - Route::post('/admin/products/store', 'App\Http\Controllers\Admin\AdminProductController@store')->name("admin.product.store"); - Route::delete('/admin/products/{id}/delete', 'App\Http\Controllers\Admin\AdminProductController@delete')->name("admin.product.delete"); - Route::get('/admin/products/{id}/edit', 'App\Http\Controllers\Admin\AdminProductController@edit')->name("admin.product.edit"); - Route::put('/admin/products/{id}/update', 'App\Http\Controllers\Admin\AdminProductController@update')->name("admin.product.update"); -}); - -Auth::routes(); diff --git a/Chapter23/onlineStore/storage/app/.gitignore b/Chapter23/onlineStore/storage/app/.gitignore deleted file mode 100644 index 8f4803c..0000000 --- a/Chapter23/onlineStore/storage/app/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!public/ -!.gitignore diff --git a/Chapter23/onlineStore/storage/app/public/.gitignore b/Chapter23/onlineStore/storage/app/public/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter23/onlineStore/storage/app/public/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter23/onlineStore/storage/framework/.gitignore b/Chapter23/onlineStore/storage/framework/.gitignore deleted file mode 100644 index 05c4471..0000000 --- a/Chapter23/onlineStore/storage/framework/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -compiled.php -config.php -down -events.scanned.php -maintenance.php -routes.php -routes.scanned.php -schedule-* -services.json diff --git a/Chapter23/onlineStore/storage/framework/cache/.gitignore b/Chapter23/onlineStore/storage/framework/cache/.gitignore deleted file mode 100644 index 01e4a6c..0000000 --- a/Chapter23/onlineStore/storage/framework/cache/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!data/ -!.gitignore diff --git a/Chapter23/onlineStore/storage/framework/cache/data/.gitignore b/Chapter23/onlineStore/storage/framework/cache/data/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter23/onlineStore/storage/framework/cache/data/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter23/onlineStore/storage/framework/sessions/.gitignore b/Chapter23/onlineStore/storage/framework/sessions/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter23/onlineStore/storage/framework/sessions/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter23/onlineStore/storage/framework/testing/.gitignore b/Chapter23/onlineStore/storage/framework/testing/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter23/onlineStore/storage/framework/testing/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter23/onlineStore/storage/framework/views/.gitignore b/Chapter23/onlineStore/storage/framework/views/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter23/onlineStore/storage/framework/views/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter23/onlineStore/storage/logs/.gitignore b/Chapter23/onlineStore/storage/logs/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter23/onlineStore/storage/logs/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter23/onlineStore/tests/CreatesApplication.php b/Chapter23/onlineStore/tests/CreatesApplication.php deleted file mode 100644 index 547152f..0000000 --- a/Chapter23/onlineStore/tests/CreatesApplication.php +++ /dev/null @@ -1,22 +0,0 @@ -make(Kernel::class)->bootstrap(); - - return $app; - } -} diff --git a/Chapter23/onlineStore/tests/Feature/ExampleTest.php b/Chapter23/onlineStore/tests/Feature/ExampleTest.php deleted file mode 100644 index 78ccc21..0000000 --- a/Chapter23/onlineStore/tests/Feature/ExampleTest.php +++ /dev/null @@ -1,21 +0,0 @@ -get('/'); - - $response->assertStatus(200); - } -} diff --git a/Chapter23/onlineStore/tests/TestCase.php b/Chapter23/onlineStore/tests/TestCase.php deleted file mode 100644 index 2932d4a..0000000 --- a/Chapter23/onlineStore/tests/TestCase.php +++ /dev/null @@ -1,10 +0,0 @@ -assertTrue(true); - } -} diff --git a/Chapter23/onlineStore/webpack.mix.js b/Chapter23/onlineStore/webpack.mix.js deleted file mode 100644 index 1a2a958..0000000 --- a/Chapter23/onlineStore/webpack.mix.js +++ /dev/null @@ -1,16 +0,0 @@ -const mix = require('laravel-mix'); - -/* - |-------------------------------------------------------------------------- - | Mix Asset Management - |-------------------------------------------------------------------------- - | - | Mix provides a clean, fluent API for defining some Webpack build steps - | for your Laravel application. By default, we are compiling the Sass - | file for the application as well as bundling up all the JS files. - | - */ - -mix.js('resources/js/app.js', 'public/js') - .sass('resources/sass/app.scss', 'public/css') - .sourceMaps(); diff --git a/Chapter25/onlineStore/.editorconfig b/Chapter25/onlineStore/.editorconfig deleted file mode 100644 index 1671c9b..0000000 --- a/Chapter25/onlineStore/.editorconfig +++ /dev/null @@ -1,18 +0,0 @@ -root = true - -[*] -charset = utf-8 -end_of_line = lf -insert_final_newline = true -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true - -[*.md] -trim_trailing_whitespace = false - -[*.{yml,yaml}] -indent_size = 2 - -[docker-compose.yml] -indent_size = 4 diff --git a/Chapter25/onlineStore/.env.example b/Chapter25/onlineStore/.env.example deleted file mode 100644 index 8510237..0000000 --- a/Chapter25/onlineStore/.env.example +++ /dev/null @@ -1,52 +0,0 @@ -APP_NAME=Laravel -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=laravel -DB_USERNAME=root -DB_PASSWORD= - -BROADCAST_DRIVER=log -CACHE_DRIVER=file -FILESYSTEM_DISK=local -QUEUE_CONNECTION=sync -SESSION_DRIVER=file -SESSION_LIFETIME=120 - -MEMCACHED_HOST=127.0.0.1 - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -MAIL_MAILER=smtp -MAIL_HOST=mailhog -MAIL_PORT=1025 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS=null -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_APP_CLUSTER=mt1 - -MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/Chapter25/onlineStore/.gitattributes b/Chapter25/onlineStore/.gitattributes deleted file mode 100644 index 510d996..0000000 --- a/Chapter25/onlineStore/.gitattributes +++ /dev/null @@ -1,10 +0,0 @@ -* text=auto - -*.blade.php diff=html -*.css diff=css -*.html diff=html -*.md diff=markdown -*.php diff=php - -/.github export-ignore -CHANGELOG.md export-ignore diff --git a/Chapter25/onlineStore/.gitignore b/Chapter25/onlineStore/.gitignore deleted file mode 100644 index eb003b0..0000000 --- a/Chapter25/onlineStore/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -/node_modules -/public/hot -/public/storage -/storage/*.key -/vendor -.env -.env.backup -.phpunit.result.cache -docker-compose.override.yml -Homestead.json -Homestead.yaml -npm-debug.log -yarn-error.log -/.idea -/.vscode diff --git a/Chapter25/onlineStore/.styleci.yml b/Chapter25/onlineStore/.styleci.yml deleted file mode 100644 index 679a631..0000000 --- a/Chapter25/onlineStore/.styleci.yml +++ /dev/null @@ -1,13 +0,0 @@ -php: - preset: laravel - version: 8 - disabled: - - no_unused_imports - finder: - not-name: - - index.php -js: - finder: - not-name: - - webpack.mix.js -css: true diff --git a/Chapter25/onlineStore/README.md b/Chapter25/onlineStore/README.md deleted file mode 100644 index f171eca..0000000 --- a/Chapter25/onlineStore/README.md +++ /dev/null @@ -1,64 +0,0 @@ -

    - -

    -Build Status -Total Downloads -Latest Stable Version -License -

    - -## About Laravel - -Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as: - -- [Simple, fast routing engine](https://laravel.com/docs/routing). -- [Powerful dependency injection container](https://laravel.com/docs/container). -- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage. -- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent). -- Database agnostic [schema migrations](https://laravel.com/docs/migrations). -- [Robust background job processing](https://laravel.com/docs/queues). -- [Real-time event broadcasting](https://laravel.com/docs/broadcasting). - -Laravel is accessible, powerful, and provides tools required for large, robust applications. - -## Learning Laravel - -Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework. - -If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 2000 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library. - -## Laravel Sponsors - -We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell). - -### Premium Partners - -- **[Vehikl](https://vehikl.com/)** -- **[Tighten Co.](https://tighten.co)** -- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** -- **[64 Robots](https://64robots.com)** -- **[Cubet Techno Labs](https://cubettech.com)** -- **[Cyber-Duck](https://cyber-duck.co.uk)** -- **[Many](https://www.many.co.uk)** -- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)** -- **[DevSquad](https://devsquad.com)** -- **[Curotec](https://www.curotec.com/services/technologies/laravel/)** -- **[OP.GG](https://op.gg)** -- **[WebReinvent](https://webreinvent.com/?utm_source=laravel&utm_medium=github&utm_campaign=patreon-sponsors)** -- **[Lendio](https://lendio.com)** - -## Contributing - -Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions). - -## Code of Conduct - -In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). - -## Security Vulnerabilities - -If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed. - -## License - -The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). diff --git a/Chapter25/onlineStore/app/Console/Kernel.php b/Chapter25/onlineStore/app/Console/Kernel.php deleted file mode 100644 index d8bc1d2..0000000 --- a/Chapter25/onlineStore/app/Console/Kernel.php +++ /dev/null @@ -1,32 +0,0 @@ -command('inspire')->hourly(); - } - - /** - * Register the commands for the application. - * - * @return void - */ - protected function commands() - { - $this->load(__DIR__.'/Commands'); - - require base_path('routes/console.php'); - } -} diff --git a/Chapter25/onlineStore/app/Exceptions/Handler.php b/Chapter25/onlineStore/app/Exceptions/Handler.php deleted file mode 100644 index 8e7fbd1..0000000 --- a/Chapter25/onlineStore/app/Exceptions/Handler.php +++ /dev/null @@ -1,41 +0,0 @@ -> - */ - protected $dontReport = [ - // - ]; - - /** - * A list of the inputs that are never flashed for validation exceptions. - * - * @var array - */ - protected $dontFlash = [ - 'current_password', - 'password', - 'password_confirmation', - ]; - - /** - * Register the exception handling callbacks for the application. - * - * @return void - */ - public function register() - { - $this->reportable(function (Throwable $e) { - // - }); - } -} diff --git a/Chapter25/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php b/Chapter25/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php deleted file mode 100644 index cd78cb3..0000000 --- a/Chapter25/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php +++ /dev/null @@ -1,16 +0,0 @@ -with("viewData", $viewData); - } -} diff --git a/Chapter25/onlineStore/app/Http/Controllers/Admin/AdminProductController.php b/Chapter25/onlineStore/app/Http/Controllers/Admin/AdminProductController.php deleted file mode 100644 index d1c6c52..0000000 --- a/Chapter25/onlineStore/app/Http/Controllers/Admin/AdminProductController.php +++ /dev/null @@ -1,79 +0,0 @@ -with("viewData", $viewData); - } - - public function store(Request $request) - { - Product::validate($request); - - $newProduct = new Product(); - $newProduct->setName($request->input('name')); - $newProduct->setDescription($request->input('description')); - $newProduct->setPrice($request->input('price')); - $newProduct->setImage("game.png"); - $newProduct->save(); - - if ($request->hasFile('image')) { - $imageName = $newProduct->getId().".".$request->file('image')->extension(); - Storage::disk('public')->put( - $imageName, - file_get_contents($request->file('image')->getRealPath()) - ); - $newProduct->setImage($imageName); - $newProduct->save(); - } - - return back(); - } - - public function delete($id) - { - Product::destroy($id); - return back(); - } - - public function edit($id) - { - $viewData = []; - $viewData["title"] = "Admin Page - Edit Product - Online Store"; - $viewData["product"] = Product::findOrFail($id); - return view('admin.product.edit')->with("viewData", $viewData); - } - - public function update(Request $request, $id) - { - Product::validate($request); - - $product = Product::findOrFail($id); - $product->setName($request->input('name')); - $product->setDescription($request->input('description')); - $product->setPrice($request->input('price')); - - if ($request->hasFile('image')) { - $imageName = $product->getId().".".$request->file('image')->extension(); - Storage::disk('public')->put( - $imageName, - file_get_contents($request->file('image')->getRealPath()) - ); - $product->setImage($imageName); - } - - $product->save(); - return redirect()->route('admin.product.index'); - } -} diff --git a/Chapter25/onlineStore/app/Http/Controllers/Auth/ConfirmPasswordController.php b/Chapter25/onlineStore/app/Http/Controllers/Auth/ConfirmPasswordController.php deleted file mode 100644 index 138c1f0..0000000 --- a/Chapter25/onlineStore/app/Http/Controllers/Auth/ConfirmPasswordController.php +++ /dev/null @@ -1,40 +0,0 @@ -middleware('auth'); - } -} diff --git a/Chapter25/onlineStore/app/Http/Controllers/Auth/ForgotPasswordController.php b/Chapter25/onlineStore/app/Http/Controllers/Auth/ForgotPasswordController.php deleted file mode 100644 index 465c39c..0000000 --- a/Chapter25/onlineStore/app/Http/Controllers/Auth/ForgotPasswordController.php +++ /dev/null @@ -1,22 +0,0 @@ -middleware('guest')->except('logout'); - } -} diff --git a/Chapter25/onlineStore/app/Http/Controllers/Auth/RegisterController.php b/Chapter25/onlineStore/app/Http/Controllers/Auth/RegisterController.php deleted file mode 100644 index 87e3a82..0000000 --- a/Chapter25/onlineStore/app/Http/Controllers/Auth/RegisterController.php +++ /dev/null @@ -1,74 +0,0 @@ -middleware('guest'); - } - - /** - * Get a validator for an incoming registration request. - * - * @param array $data - * @return \Illuminate\Contracts\Validation\Validator - */ - protected function validator(array $data) - { - return Validator::make($data, [ - 'name' => ['required', 'string', 'max:255'], - 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], - 'password' => ['required', 'string', 'min:8', 'confirmed'], - ]); - } - - /** - * Create a new user instance after a valid registration. - * - * @param array $data - * @return \App\Models\User - */ - protected function create(array $data) - { - return User::create([ - 'name' => $data['name'], - 'email' => $data['email'], - 'password' => Hash::make($data['password']), - 'balance' => 5000, - ]); - } -} diff --git a/Chapter25/onlineStore/app/Http/Controllers/Auth/ResetPasswordController.php b/Chapter25/onlineStore/app/Http/Controllers/Auth/ResetPasswordController.php deleted file mode 100644 index b1726a3..0000000 --- a/Chapter25/onlineStore/app/Http/Controllers/Auth/ResetPasswordController.php +++ /dev/null @@ -1,30 +0,0 @@ -middleware('auth'); - $this->middleware('signed')->only('verify'); - $this->middleware('throttle:6,1')->only('verify', 'resend'); - } -} diff --git a/Chapter25/onlineStore/app/Http/Controllers/CartController.php b/Chapter25/onlineStore/app/Http/Controllers/CartController.php deleted file mode 100644 index 87122bc..0000000 --- a/Chapter25/onlineStore/app/Http/Controllers/CartController.php +++ /dev/null @@ -1,43 +0,0 @@ -session()->get("products"); - if ($productsInSession) { - $productsInCart = Product::findMany(array_keys($productsInSession)); - $total = Product::sumPricesByQuantities($productsInCart, $productsInSession); - } - - $viewData = []; - $viewData["title"] = "Cart - Online Store"; - $viewData["subtitle"] = "Shopping Cart"; - $viewData["total"] = $total; - $viewData["products"] = $productsInCart; - return view('cart.index')->with("viewData", $viewData); - } - - public function add(Request $request, $id) - { - $products = $request->session()->get("products"); - $products[$id] = $request->input('quantity'); - $request->session()->put('products', $products); - - return redirect()->route('cart.index'); - } - - public function delete(Request $request) - { - $request->session()->forget('products'); - return back(); - } -} diff --git a/Chapter25/onlineStore/app/Http/Controllers/Controller.php b/Chapter25/onlineStore/app/Http/Controllers/Controller.php deleted file mode 100644 index a0a2a8a..0000000 --- a/Chapter25/onlineStore/app/Http/Controllers/Controller.php +++ /dev/null @@ -1,13 +0,0 @@ -with("viewData", $viewData); - } - - public function about() - { - $viewData = []; - $viewData["title"] = "About us - Online Store"; - $viewData["subtitle"] = "About us"; - $viewData["description"] = "This is an about page ..."; - $viewData["author"] = "Developed by: Your Name"; - return view('home.about')->with("viewData", $viewData); - } -} diff --git a/Chapter25/onlineStore/app/Http/Controllers/ProductController.php b/Chapter25/onlineStore/app/Http/Controllers/ProductController.php deleted file mode 100644 index d27a3a3..0000000 --- a/Chapter25/onlineStore/app/Http/Controllers/ProductController.php +++ /dev/null @@ -1,29 +0,0 @@ -with("viewData", $viewData); - } - - public function show($id) - { - $viewData = []; - $product = Product::findOrFail($id); - $viewData["title"] = $product->getName()." - Online Store"; - $viewData["subtitle"] = $product->getName()." - Product information"; - $viewData["product"] = $product; - return view('product.show')->with("viewData", $viewData); - } -} diff --git a/Chapter25/onlineStore/app/Http/Kernel.php b/Chapter25/onlineStore/app/Http/Kernel.php deleted file mode 100644 index c10d1c5..0000000 --- a/Chapter25/onlineStore/app/Http/Kernel.php +++ /dev/null @@ -1,68 +0,0 @@ - - */ - protected $middleware = [ - // \App\Http\Middleware\TrustHosts::class, - \App\Http\Middleware\TrustProxies::class, - \Fruitcake\Cors\HandleCors::class, - \App\Http\Middleware\PreventRequestsDuringMaintenance::class, - \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, - \App\Http\Middleware\TrimStrings::class, - \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, - ]; - - /** - * The application's route middleware groups. - * - * @var array> - */ - protected $middlewareGroups = [ - 'web' => [ - \App\Http\Middleware\EncryptCookies::class, - \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, - \Illuminate\Session\Middleware\StartSession::class, - // \Illuminate\Session\Middleware\AuthenticateSession::class, - \Illuminate\View\Middleware\ShareErrorsFromSession::class, - \App\Http\Middleware\VerifyCsrfToken::class, - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - - 'api' => [ - // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, - 'throttle:api', - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - ]; - - /** - * The application's route middleware. - * - * These middleware may be assigned to groups or used individually. - * - * @var array - */ - protected $routeMiddleware = [ - 'auth' => \App\Http\Middleware\Authenticate::class, - 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::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, - 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, - 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, - 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, - 'admin' => \App\Http\Middleware\AdminAuthMiddleware::class, - ]; -} diff --git a/Chapter25/onlineStore/app/Http/Middleware/AdminAuthMiddleware.php b/Chapter25/onlineStore/app/Http/Middleware/AdminAuthMiddleware.php deleted file mode 100644 index 6e5306b..0000000 --- a/Chapter25/onlineStore/app/Http/Middleware/AdminAuthMiddleware.php +++ /dev/null @@ -1,26 +0,0 @@ -getRole() == 'admin') { - return $next($request); - } else { - return redirect()->route('home.index'); - } - } -} diff --git a/Chapter25/onlineStore/app/Http/Middleware/Authenticate.php b/Chapter25/onlineStore/app/Http/Middleware/Authenticate.php deleted file mode 100644 index 704089a..0000000 --- a/Chapter25/onlineStore/app/Http/Middleware/Authenticate.php +++ /dev/null @@ -1,21 +0,0 @@ -expectsJson()) { - return route('login'); - } - } -} diff --git a/Chapter25/onlineStore/app/Http/Middleware/EncryptCookies.php b/Chapter25/onlineStore/app/Http/Middleware/EncryptCookies.php deleted file mode 100644 index 867695b..0000000 --- a/Chapter25/onlineStore/app/Http/Middleware/EncryptCookies.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter25/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/Chapter25/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php deleted file mode 100644 index 74cbd9a..0000000 --- a/Chapter25/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter25/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php b/Chapter25/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php deleted file mode 100644 index a2813a0..0000000 --- a/Chapter25/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php +++ /dev/null @@ -1,32 +0,0 @@ -check()) { - return redirect(RouteServiceProvider::HOME); - } - } - - return $next($request); - } -} diff --git a/Chapter25/onlineStore/app/Http/Middleware/TrimStrings.php b/Chapter25/onlineStore/app/Http/Middleware/TrimStrings.php deleted file mode 100644 index 88cadca..0000000 --- a/Chapter25/onlineStore/app/Http/Middleware/TrimStrings.php +++ /dev/null @@ -1,19 +0,0 @@ - - */ - protected $except = [ - 'current_password', - 'password', - 'password_confirmation', - ]; -} diff --git a/Chapter25/onlineStore/app/Http/Middleware/TrustHosts.php b/Chapter25/onlineStore/app/Http/Middleware/TrustHosts.php deleted file mode 100644 index 7186414..0000000 --- a/Chapter25/onlineStore/app/Http/Middleware/TrustHosts.php +++ /dev/null @@ -1,20 +0,0 @@ - - */ - public function hosts() - { - return [ - $this->allSubdomainsOfApplicationUrl(), - ]; - } -} diff --git a/Chapter25/onlineStore/app/Http/Middleware/TrustProxies.php b/Chapter25/onlineStore/app/Http/Middleware/TrustProxies.php deleted file mode 100644 index 3391630..0000000 --- a/Chapter25/onlineStore/app/Http/Middleware/TrustProxies.php +++ /dev/null @@ -1,28 +0,0 @@ -|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/Chapter25/onlineStore/app/Http/Middleware/VerifyCsrfToken.php b/Chapter25/onlineStore/app/Http/Middleware/VerifyCsrfToken.php deleted file mode 100644 index 9e86521..0000000 --- a/Chapter25/onlineStore/app/Http/Middleware/VerifyCsrfToken.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter25/onlineStore/app/Models/Product.php b/Chapter25/onlineStore/app/Models/Product.php deleted file mode 100644 index 0716c14..0000000 --- a/Chapter25/onlineStore/app/Models/Product.php +++ /dev/null @@ -1,109 +0,0 @@ -attributes['id'] - int - contains the product primary key (id) - * $this->attributes['name'] - string - contains the product name - * $this->attributes['description'] - string - contains the product description - * $this->attributes['image'] - string - contains the product image - * $this->attributes['price'] - int - contains the product price - * $this->attributes['created_at'] - timestamp - contains the product creation date - * $this->attributes['updated_at'] - timestamp - contains the product update date - */ - - public static function validate($request) - { - $request->validate([ - "name" => "required|max:255", - "description" => "required", - "price" => "required|numeric|gt:0", - 'image' => 'image', - ]); - } - - public static function sumPricesByQuantities($products, $productsInSession) - { - $total = 0; - foreach ($products as $product) { - $total = $total + ($product->getPrice()*$productsInSession[$product->getId()]); - } - - return $total; - } - - public function getId() - { - return $this->attributes['id']; - } - - public function setId($id) - { - $this->attributes['id'] = $id; - } - - public function getName() - { - return $this->attributes['name']; - } - - public function setName($name) - { - $this->attributes['name'] = $name; - } - - public function getDescription() - { - return $this->attributes['description']; - } - - public function setDescription($description) - { - $this->attributes['description'] = $description; - } - - public function getImage() - { - return $this->attributes['image']; - } - - public function setImage($image) - { - $this->attributes['image'] = $image; - } - - public function getPrice() - { - return $this->attributes['price']; - } - - public function setPrice($price) - { - $this->attributes['price'] = $price; - } - - public function getCreatedAt() - { - return $this->attributes['created_at']; - } - - public function setCreatedAt($createdAt) - { - $this->attributes['created_at'] = $createdAt; - } - - public function getUpdatedAt() - { - return $this->attributes['updated_at']; - } - - public function setUpdatedAt($updatedAt) - { - $this->attributes['updated_at'] = $updatedAt; - } -} diff --git a/Chapter25/onlineStore/app/Models/User.php b/Chapter25/onlineStore/app/Models/User.php deleted file mode 100644 index 0749c5a..0000000 --- a/Chapter25/onlineStore/app/Models/User.php +++ /dev/null @@ -1,139 +0,0 @@ -attributes['id'] - int - contains the user primary key (id) - * $this->attributes['name'] - string - contains the user name - * $this->attributes['email'] - string - contains the user email - * $this->attributes['email_verified_at'] - timestamp - contains the user email verification date - * $this->attributes['password'] - string - contains the user password - * $this->attributes['remember_token'] - string - contains the user password - * $this->attributes['role'] - string - contains the user role (client or admin) - * $this->attributes['balance'] - int - contains the user balance - * $this->attributes['created_at'] - timestamp - contains the user creation date - * $this->attributes['updated_at'] - timestamp - contains the user update date - */ - - /** - * The attributes that are mass assignable. - * - * @var array - */ - protected $fillable = [ - 'name', - 'email', - 'password', - 'balance', - ]; - - /** - * 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', - ]; - - public function getId() - { - return $this->attributes['id']; - } - - public function setId($id) - { - $this->attributes['id'] = $id; - } - - public function getName() - { - return $this->attributes['name']; - } - - public function setName($name) - { - $this->attributes['name'] = $name; - } - - public function getEmail() - { - return $this->attributes['email']; - } - - public function setEmail($email) - { - $this->attributes['email'] = $email; - } - - public function getPassword() - { - return $this->attributes['password']; - } - - public function setPassword($password) - { - $this->attributes['password'] = $password; - } - - public function getRole() - { - return $this->attributes['role']; - } - - public function setRole($role) - { - $this->attributes['role'] = $role; - } - - public function getBalance() - { - return $this->attributes['balance']; - } - - public function setBalance($balance) - { - $this->attributes['balance'] = $balance; - } - - public function getCreatedAt() - { - return $this->attributes['created_at']; - } - - public function setCreatedAt($createdAt) - { - $this->attributes['created_at'] = $createdAt; - } - - public function getUpdatedAt() - { - return $this->attributes['updated_at']; - } - - public function setUpdatedAt($updatedAt) - { - $this->attributes['updated_at'] = $updatedAt; - } -} diff --git a/Chapter25/onlineStore/app/Providers/AppServiceProvider.php b/Chapter25/onlineStore/app/Providers/AppServiceProvider.php deleted file mode 100644 index ee8ca5b..0000000 --- a/Chapter25/onlineStore/app/Providers/AppServiceProvider.php +++ /dev/null @@ -1,28 +0,0 @@ - - */ - protected $policies = [ - // 'App\Models\Model' => 'App\Policies\ModelPolicy', - ]; - - /** - * Register any authentication / authorization services. - * - * @return void - */ - public function boot() - { - $this->registerPolicies(); - - // - } -} diff --git a/Chapter25/onlineStore/app/Providers/BroadcastServiceProvider.php b/Chapter25/onlineStore/app/Providers/BroadcastServiceProvider.php deleted file mode 100644 index 395c518..0000000 --- a/Chapter25/onlineStore/app/Providers/BroadcastServiceProvider.php +++ /dev/null @@ -1,21 +0,0 @@ -> - */ - protected $listen = [ - Registered::class => [ - SendEmailVerificationNotification::class, - ], - ]; - - /** - * Register any events for your application. - * - * @return void - */ - public function boot() - { - // - } -} diff --git a/Chapter25/onlineStore/app/Providers/RouteServiceProvider.php b/Chapter25/onlineStore/app/Providers/RouteServiceProvider.php deleted file mode 100644 index fb766eb..0000000 --- a/Chapter25/onlineStore/app/Providers/RouteServiceProvider.php +++ /dev/null @@ -1,63 +0,0 @@ -configureRateLimiting(); - - $this->routes(function () { - Route::prefix('api') - ->middleware('api') - ->namespace($this->namespace) - ->group(base_path('routes/api.php')); - - Route::middleware('web') - ->namespace($this->namespace) - ->group(base_path('routes/web.php')); - }); - } - - /** - * Configure the rate limiters for the application. - * - * @return void - */ - protected function configureRateLimiting() - { - RateLimiter::for('api', function (Request $request) { - return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); - }); - } -} diff --git a/Chapter25/onlineStore/artisan b/Chapter25/onlineStore/artisan deleted file mode 100644 index 67a3329..0000000 --- a/Chapter25/onlineStore/artisan +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env php -make(Illuminate\Contracts\Console\Kernel::class); - -$status = $kernel->handle( - $input = new Symfony\Component\Console\Input\ArgvInput, - new Symfony\Component\Console\Output\ConsoleOutput -); - -/* -|-------------------------------------------------------------------------- -| Shutdown The Application -|-------------------------------------------------------------------------- -| -| Once Artisan has finished running, we will fire off the shutdown events -| so that any final work may be done by the application before we shut -| down the process. This is the last thing to happen to the request. -| -*/ - -$kernel->terminate($input, $status); - -exit($status); diff --git a/Chapter25/onlineStore/bootstrap/app.php b/Chapter25/onlineStore/bootstrap/app.php deleted file mode 100644 index 037e17d..0000000 --- a/Chapter25/onlineStore/bootstrap/app.php +++ /dev/null @@ -1,55 +0,0 @@ -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/Chapter25/onlineStore/bootstrap/cache/.gitignore b/Chapter25/onlineStore/bootstrap/cache/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter25/onlineStore/bootstrap/cache/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter25/onlineStore/composer.json b/Chapter25/onlineStore/composer.json deleted file mode 100644 index a9459b5..0000000 --- a/Chapter25/onlineStore/composer.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "name": "laravel/laravel", - "type": "project", - "description": "The Laravel Framework.", - "keywords": ["framework", "laravel"], - "license": "MIT", - "require": { - "php": "^8.0", - "fruitcake/laravel-cors": "^2.0.5", - "guzzlehttp/guzzle": "^7.2", - "laravel/framework": "^9.0", - "laravel/sanctum": "^2.14", - "laravel/tinker": "^2.7", - "laravel/ui": "^3.4" - }, - "require-dev": { - "fakerphp/faker": "^1.9.1", - "laravel/sail": "^1.0.1", - "mockery/mockery": "^1.4.4", - "nunomaduro/collision": "^6.1", - "phpunit/phpunit": "^9.5.10", - "spatie/laravel-ignition": "^1.0", - "squizlabs/php_codesniffer": "^3.6" - }, - "autoload": { - "psr-4": { - "App\\": "app/", - "Database\\Factories\\": "database/factories/", - "Database\\Seeders\\": "database/seeders/" - } - }, - "autoload-dev": { - "psr-4": { - "Tests\\": "tests/" - } - }, - "scripts": { - "post-autoload-dump": [ - "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", - "@php artisan package:discover --ansi" - ], - "post-update-cmd": [ - "@php artisan vendor:publish --tag=laravel-assets --ansi --force" - ], - "post-root-package-install": [ - "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" - ], - "post-create-project-cmd": [ - "@php artisan key:generate --ansi" - ] - }, - "extra": { - "laravel": { - "dont-discover": [] - } - }, - "config": { - "optimize-autoloader": true, - "preferred-install": "dist", - "sort-packages": true - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/Chapter25/onlineStore/composer.lock b/Chapter25/onlineStore/composer.lock deleted file mode 100644 index 78c86f1..0000000 --- a/Chapter25/onlineStore/composer.lock +++ /dev/null @@ -1,7921 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "d299b51f0f07ec600b4949240f4664af", - "packages": [ - { - "name": "asm89/stack-cors", - "version": "v2.1.1", - "source": { - "type": "git", - "url": "https://github.com/asm89/stack-cors.git", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4|^5|^6" - }, - "require-dev": { - "phpunit/phpunit": "^7|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "psr-4": { - "Asm89\\Stack\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alexander", - "email": "iam.asm89@gmail.com" - } - ], - "description": "Cross-origin resource sharing library and stack middleware", - "homepage": "https://github.com/asm89/stack-cors", - "keywords": [ - "cors", - "stack" - ], - "support": { - "issues": "https://github.com/asm89/stack-cors/issues", - "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" - }, - "time": "2022-01-18T09:12:03+00:00" - }, - { - "name": "brick/math", - "version": "0.9.3", - "source": { - "type": "git", - "url": "https://github.com/brick/math.git", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", - "vimeo/psalm": "4.9.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Brick\\Math\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Arbitrary-precision arithmetic library", - "keywords": [ - "Arbitrary-precision", - "BigInteger", - "BigRational", - "arithmetic", - "bigdecimal", - "bignum", - "brick", - "math" - ], - "support": { - "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.9.3" - }, - "funding": [ - { - "url": "https://github.com/BenMorel", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/brick/math", - "type": "tidelift" - } - ], - "time": "2021-08-15T20:50:18+00:00" - }, - { - "name": "dflydev/dot-access-data", - "version": "v3.0.1", - "source": { - "type": "git", - "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c", - "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": "^3.14" - }, - "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.1" - }, - "time": "2021-08-13T13:06:58+00:00" - }, - { - "name": "doctrine/inflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "vimeo/psalm": "^4.10" - }, - "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.4" - }, - "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": "2021-10-22T20:16:43+00:00" - }, - { - "name": "doctrine/lexer", - "version": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" - } - }, - "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/1.2.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%2Flexer", - "type": "tidelift" - } - ], - "time": "2022-01-12T08:27:12+00:00" - }, - { - "name": "dragonmantank/cron-expression", - "version": "v3.3.1", - "source": { - "type": "git", - "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "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.1" - }, - "funding": [ - { - "url": "https://github.com/dragonmantank", - "type": "github" - } - ], - "time": "2022-01-18T15:43:28+00:00" - }, - { - "name": "egulias/email-validator", - "version": "3.1.2", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ee0db30118f661fb166bcffbf5d82032df484697", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^1.2", - "php": ">=7.2", - "symfony/polyfill-intl-idn": "^1.15" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^8.5.8|^9.3.3", - "vimeo/psalm": "^4" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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/3.1.2" - }, - "funding": [ - { - "url": "https://github.com/egulias", - "type": "github" - } - ], - "time": "2021-10-11T09:18:27+00:00" - }, - { - "name": "fruitcake/laravel-cors", - "version": "v2.0.5", - "source": { - "type": "git", - "url": "https://github.com/fruitcake/laravel-cors.git", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "shasum": "" - }, - "require": { - "asm89/stack-cors": "^2.0.1", - "illuminate/contracts": "^6|^7|^8|^9", - "illuminate/support": "^6|^7|^8|^9", - "php": ">=7.2", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4.3.4|^5|^6" - }, - "require-dev": { - "laravel/framework": "^6|^7.24|^8", - "orchestra/testbench-dusk": "^4|^5|^6|^7", - "phpunit/phpunit": "^6|^7|^8|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - }, - "laravel": { - "providers": [ - "Fruitcake\\Cors\\CorsServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Fruitcake\\Cors\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fruitcake", - "homepage": "https://fruitcake.nl" - }, - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", - "keywords": [ - "api", - "cors", - "crossdomain", - "laravel" - ], - "support": { - "issues": "https://github.com/fruitcake/laravel-cors/issues", - "source": "https://github.com/fruitcake/laravel-cors/tree/v2.0.5" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "time": "2022-01-03T14:53:04+00:00" - }, - { - "name": "graham-campbell/result-type", - "version": "v1.0.4", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "0690bde05318336c7221785f2a932467f98b64ca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/0690bde05318336c7221785f2a932467f98b64ca", - "reference": "0690bde05318336c7221785f2a932467f98b64ca", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "phpoption/phpoption": "^1.8" - }, - "require-dev": { - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", - "type": "tidelift" - } - ], - "time": "2021-11-21T21:41:47+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "7.4.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.8.3 || ^2.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.4.1", - "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.5 || ^9.3.5", - "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": { - "branch-alias": { - "dev-master": "7.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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.4.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": "2021-12-06T18:43:05+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "1.5.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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/1.5.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "time": "2021-10-22T20:56:57+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.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.4.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.8 || ^9.3.10" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "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.1.0" - }, - "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": "2021-10-06T17:43:30+00:00" - }, - { - "name": "laravel/framework", - "version": "v9.0.1", - "source": { - "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "shasum": "" - }, - "require": { - "doctrine/inflector": "^2.0", - "dragonmantank/cron-expression": "^3.1", - "egulias/email-validator": "^3.1", - "ext-mbstring": "*", - "ext-openssl": "*", - "laravel/serializable-closure": "^1.0", - "league/commonmark": "^2.2", - "league/flysystem": "^3.0", - "monolog/monolog": "^2.0", - "nesbot/carbon": "^2.53.1", - "php": "^8.0.2", - "psr/container": "^1.1.1|^2.0.1", - "psr/log": "^1.0|^2.0|^3.0", - "psr/simple-cache": "^1.0|^2.0|^3.0", - "ramsey/uuid": "^4.2.2", - "symfony/console": "^6.0", - "symfony/error-handler": "^6.0", - "symfony/finder": "^6.0", - "symfony/http-foundation": "^6.0", - "symfony/http-kernel": "^6.0", - "symfony/mailer": "^6.0", - "symfony/mime": "^6.0", - "symfony/process": "^6.0", - "symfony/routing": "^6.0", - "symfony/var-dumper": "^6.0", - "tijsverkoyen/css-to-inline-styles": "^2.2.2", - "vlucas/phpdotenv": "^5.4.1", - "voku/portable-ascii": "^2.0" - }, - "conflict": { - "tightenco/collect": "<5.5.33" - }, - "provide": { - "psr/container-implementation": "1.1|2.0", - "psr/simple-cache-implementation": "1.0|2.0|3.0" - }, - "replace": { - "illuminate/auth": "self.version", - "illuminate/broadcasting": "self.version", - "illuminate/bus": "self.version", - "illuminate/cache": "self.version", - "illuminate/collections": "self.version", - "illuminate/conditionable": "self.version", - "illuminate/config": "self.version", - "illuminate/console": "self.version", - "illuminate/container": "self.version", - "illuminate/contracts": "self.version", - "illuminate/cookie": "self.version", - "illuminate/database": "self.version", - "illuminate/encryption": "self.version", - "illuminate/events": "self.version", - "illuminate/filesystem": "self.version", - "illuminate/hashing": "self.version", - "illuminate/http": "self.version", - "illuminate/log": "self.version", - "illuminate/macroable": "self.version", - "illuminate/mail": "self.version", - "illuminate/notifications": "self.version", - "illuminate/pagination": "self.version", - "illuminate/pipeline": "self.version", - "illuminate/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": { - "aws/aws-sdk-php": "^3.198.1", - "doctrine/dbal": "^2.13.3|^3.1.4", - "fakerphp/faker": "^1.9.2", - "guzzlehttp/guzzle": "^7.2", - "league/flysystem-aws-s3-v3": "^3.0", - "league/flysystem-ftp": "^3.0", - "league/flysystem-sftp-v3": "^3.0", - "mockery/mockery": "^1.4.4", - "orchestra/testbench-core": "^7.0", - "pda/pheanstalk": "^4.0", - "phpstan/phpstan": "^1.0", - "phpunit/phpunit": "^9.5.8", - "predis/predis": "^1.1.9", - "symfony/amazon-mailer": "^6.0", - "symfony/cache": "^6.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.198.1).", - "brianium/paratest": "Required to run tests in parallel (^6.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", - "ext-bcmath": "Required to use the multiple_of validation rule.", - "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.", - "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.2).", - "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-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", - "mockery/mockery": "Required to use mocking (^1.4.4).", - "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).", - "predis/predis": "Required to use the predis connector (^1.1.9).", - "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.0).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^6.0).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.0).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.0).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.0).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.x-dev" - } - }, - "autoload": { - "files": [ - "src/Illuminate/Collections/helpers.php", - "src/Illuminate/Events/functions.php", - "src/Illuminate/Foundation/helpers.php", - "src/Illuminate/Support/helpers.php" - ], - "psr-4": { - "Illuminate\\": "src/Illuminate/", - "Illuminate\\Support\\": [ - "src/Illuminate/Macroable/", - "src/Illuminate/Collections/", - "src/Illuminate/Conditionable/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Laravel Framework.", - "homepage": "https://laravel.com", - "keywords": [ - "framework", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2022-02-09T15:00:05+00:00" - }, - { - "name": "laravel/sanctum", - "version": "v2.14.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/sanctum.git", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/0647a87140c7522e75826cffcadb3ad6e01f71e9", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/contracts": "^6.9|^7.0|^8.0|^9.0", - "illuminate/database": "^6.9|^7.0|^8.0|^9.0", - "illuminate/support": "^6.9|^7.0|^8.0|^9.0", - "php": "^7.2|^8.0" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0", - "phpunit/phpunit": "^8.0|^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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": "2022-01-12T15:07:43+00:00" - }, - { - "name": "laravel/serializable-closure", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/serializable-closure.git", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/65c9faf50d567b65d81764a44526545689e3fe63", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "pestphp/pest": "^1.18", - "phpstan/phpstan": "^0.12.98", - "symfony/var-dumper": "^5.3" - }, - "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": "2022-02-01T16:29:39+00:00" - }, - { - "name": "laravel/tinker", - "version": "v2.7.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/tinker.git", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/5f2f9815b7631b9f586a3de7933c25f9327d4073", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073", - "shasum": "" - }, - "require": { - "illuminate/console": "^6.0|^7.0|^8.0|^9.0", - "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.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", - "phpunit/phpunit": "^8.5.8|^9.3.3" - }, - "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.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.7.0" - }, - "time": "2022-01-10T08:52:49+00:00" - }, - { - "name": "laravel/ui", - "version": "v3.4.3", - "source": { - "type": "git", - "url": "https://github.com/laravel/ui.git", - "reference": "64a0f43492c00780b2261c56cd7007a4f370d95b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/ui/zipball/64a0f43492c00780b2261c56cd7007a4f370d95b", - "reference": "64a0f43492c00780b2261c56cd7007a4f370d95b", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.42|^9.0", - "illuminate/filesystem": "^8.42|^9.0", - "illuminate/support": "^8.82|^9.0", - "illuminate/validation": "^8.42|^9.0", - "php": "^7.3|^8.0" - }, - "require-dev": { - "orchestra/testbench": "^6.23|^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - }, - "laravel": { - "providers": [ - "Laravel\\Ui\\UiServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Laravel\\Ui\\": "src/", - "Illuminate\\Foundation\\Auth\\": "auth-backend/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "Laravel UI utilities and presets.", - "keywords": [ - "laravel", - "ui" - ], - "support": { - "source": "https://github.com/laravel/ui/tree/v3.4.3" - }, - "time": "2022-02-08T14:19:32+00:00" - }, - { - "name": "league/commonmark", - "version": "2.2.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/commonmark.git", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "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.15" - }, - "require-dev": { - "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.0", - "commonmark/commonmark.js": "0.30.0", - "composer/package-versions-deprecated": "^1.8", - "erusev/parsedown": "^1.0", - "ext-json": "*", - "github/gfm": "0.29.0", - "michelf/php-markdown": "^1.4", - "phpstan/phpstan": "^0.12.88 || ^1.0.0", - "phpunit/phpunit": "^9.5.5", - "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", - "unleashedtech/php-coding-standard": "^3.1", - "vimeo/psalm": "^4.7.3" - }, - "suggest": { - "symfony/yaml": "v2.3+ required if using the Front Matter extension" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.3-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": "2022-01-25T14:37:33+00:00" - }, - { - "name": "league/config", - "version": "v1.1.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/config.git", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/config/zipball/a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^3.0.1", - "nette/schema": "^1.2", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.90", - "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": "2021-08-14T12:15:32+00:00" - }, - { - "name": "league/flysystem", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9f8b4260031bfef5497477da53dd57b2aaff0e06", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06", - "shasum": "" - }, - "require": { - "ext-json": "*", - "league/mime-type-detection": "^1.0.0", - "php": "^8.0.2" - }, - "conflict": { - "guzzlehttp/guzzle": "<7.0", - "guzzlehttp/ringphp": "<1.1.1", - "symfony/http-client": "<5.2" - }, - "require-dev": { - "async-aws/s3": "^1.5", - "async-aws/simple-s3": "^1.0", - "aws/aws-sdk-php": "^3.198.1", - "composer/semver": "^3.0", - "ext-fileinfo": "*", - "ext-ftp": "*", - "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.5", - "google/cloud-storage": "^1.23", - "phpseclib/phpseclib": "^2.0", - "phpstan/phpstan": "^0.12.26", - "phpunit/phpunit": "^9.5.11", - "sabre/dav": "^4.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.0.3" - }, - "funding": [ - { - "url": "https://offset.earth/frankdejonge", - "type": "custom" - }, - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2022-01-31T19:41:04+00:00" - }, - { - "name": "league/mime-type-detection", - "version": "1.9.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/aa70e813a6ad3d1558fc927863d47309b4c23e69", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.2", - "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" - }, - "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.9.0" - }, - "funding": [ - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2021-11-21T11:48:40+00:00" - }, - { - "name": "monolog/monolog", - "version": "2.3.5", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd4380d6fc37626e2f799f29d91195040137eba9", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "provide": { - "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7", - "graylog2/gelf-php": "^1.4.2", - "mongodb/mongodb": "^1.8", - "php-amqplib/php-amqplib": "~2.4 || ^3", - "php-console/php-console": "^3.1.3", - "phpspec/prophecy": "^1.6.1", - "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5", - "predis/predis": "^1.1", - "rollbar/rollbar": "^1.3", - "ruflin/elastica": ">=0.90@dev", - "swiftmailer/swiftmailer": "^5.3|^6.0" - }, - "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", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "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": "2.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/2.3.5" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" - } - ], - "time": "2021-10-01T21:08:31+00:00" - }, - { - "name": "nesbot/carbon", - "version": "2.56.0", - "source": { - "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1.8 || ^8.0", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "doctrine/dbal": "^2.0 || ^3.0", - "doctrine/orm": "^2.7", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "phpmd/phpmd": "^2.9", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.54 || ^1.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.14", - "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://opencollective.com/Carbon", - "type": "open_collective" - }, - { - "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", - "type": "tidelift" - } - ], - "time": "2022-01-21T17:08:38+00:00" - }, - { - "name": "nette/schema", - "version": "v1.2.2", - "source": { - "type": "git", - "url": "https://github.com/nette/schema.git", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/9a39cef03a5b34c7de64f551538cbba05c2be5df", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df", - "shasum": "" - }, - "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": ">=7.1 <8.2" - }, - "require-dev": { - "nette/tester": "^2.3 || ^2.4", - "phpstan/phpstan-nette": "^0.12", - "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.2" - }, - "time": "2021-10-15T11:40:02+00:00" - }, - { - "name": "nette/utils", - "version": "v3.2.7", - "source": { - "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/0af4e3de4df9f1543534beab255ccf459e7a2c99", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99", - "shasum": "" - }, - "require": { - "php": ">=7.2 <8.2" - }, - "conflict": { - "nette/di": "<3.0.6" - }, - "require-dev": { - "nette/tester": "~2.0", - "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.3" - }, - "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()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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 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/v3.2.7" - }, - "time": "2022-01-24T11:29:14+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.13.2", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", - "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.13.2" - }, - "time": "2021-11-30T19:35:32+00:00" - }, - { - "name": "phpoption/phpoption", - "version": "1.8.1", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-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.8.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", - "type": "tidelift" - } - ], - "time": "2021-12-04T23:24:31+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.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.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": "http://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/tree/master" - }, - "time": "2020-06-29T06:28:15+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.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": "http://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/master" - }, - "time": "2019-04-30T12:38:16+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.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": "http://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/master" - }, - "time": "2016-08-06T14:39: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.1", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "570292577277f06f590635381a7f761a6cf4f026" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/570292577277f06f590635381a7f761a6cf4f026", - "reference": "570292577277f06f590635381a7f761a6cf4f026", - "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" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "3.17.05.02" - }, - "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.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." - }, - "bin": [ - "bin/psysh" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "0.11.x-dev" - } - }, - "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.1" - }, - "time": "2022-01-03T13:58:38+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": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/ramsey/collection.git", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "shasum": "" - }, - "require": { - "php": "^7.3 || ^8", - "symfony/polyfill-php81": "^1.23" - }, - "require-dev": { - "captainhook/captainhook": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "ergebnis/composer-normalize": "^2.6", - "fakerphp/faker": "^1.5", - "hamcrest/hamcrest-php": "^2", - "jangregor/phpstan-prophecy": "^0.8", - "mockery/mockery": "^1.3", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1", - "phpstan/phpstan": "^0.12.32", - "phpstan/phpstan-mockery": "^0.12.5", - "phpstan/phpstan-phpunit": "^0.12.11", - "phpunit/phpunit": "^8.5 || ^9", - "psy/psysh": "^0.10.4", - "slevomat/coding-standard": "^6.3", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.4" - }, - "type": "library", - "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/1.2.2" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "time": "2021-10-10T03:01:02+00:00" - }, - { - "name": "ramsey/uuid", - "version": "4.2.3", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "shasum": "" - }, - "require": { - "brick/math": "^0.8 || ^0.9", - "ext-json": "*", - "php": "^7.2 || ^8.0", - "ramsey/collection": "^1.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php80": "^1.14" - }, - "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", - "moontoast/math": "^1.1", - "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.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-mockery": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^8.5 || ^9", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" - }, - "suggest": { - "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-ctype": "Enables faster processing of character classification using ctype functions.", - "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": { - "branch-alias": { - "dev-main": "4.x-dev" - }, - "captainhook": { - "force-install": true - } - }, - "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "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.2.3" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2021-09-25T23:10:38+00:00" - }, - { - "name": "symfony/console", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/22e8efd019c3270c4f79376234a3f8752cd25490", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.4|^6.0" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/css-selector", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/1955d595c12c111629cc814d3f2a2ff13580508a", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a", - "shasum": "" - }, - "require": { - "php": ">=8.0.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/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-11-01T23:48:49+00:00" - }, - { - "name": "symfony/error-handler", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/20343b3bad7ebafa38138ddcb97290a24722b57b", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" - }, - "bin": [ - "Resources/bin/patch-type-declarations" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to manage errors and ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6472ea2dd415e925b90ca82be64b8bc6157f3934", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/event-dispatcher-contracts": "^2|^3" - }, - "conflict": { - "symfony/dependency-injection": "<5.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^5.4|^6.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/aa5422287b75594b90ee9cd807caf8f0df491385", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/event-dispatcher": "^1" - }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-07-15T12:33:35+00:00" - }, - { - "name": "symfony/finder", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/8661b74dbabc23223f38c9b99d3f8ade71170430", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ad157299ced81a637fade1efcadd688d6deba5c1", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1" - }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/cache": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0" - }, - "suggest": { - "symfony/mime": "To use the file extension guesser" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v6.0.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/error-handler": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", - "symfony/twig-bridge": "<5.4", - "symfony/validator": "<5.4", - "twig/twig": "<2.13" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/process": "^5.4|^6.0", - "symfony/routing": "^5.4|^6.0", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-29T18:12:46+00:00" - }, - { - "name": "symfony/mailer", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mailer.git", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "shasum": "" - }, - "require": { - "egulias/email-validator": "^2.1.10|^3", - "php": ">=8.0.2", - "psr/event-dispatcher": "^1", - "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3" - }, - "conflict": { - "symfony/http-kernel": "<5.4" - }, - "require-dev": { - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/messenger": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/mime", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/2cd9601efd040e56f43360daa68f3c6b0534923a", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "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" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "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.24.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": "2021-10-20T20:35:02+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-11-23T21:10:46+00:00" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44", - "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.23-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.24.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": "2021-09-14T14:02:44+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.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": "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.24.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": "2021-11-30T18:21:41+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-05-27T09:17:38+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:33+00:00" - }, - { - "name": "symfony/polyfill-php81", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:11+00:00" - }, - { - "name": "symfony/process", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/298ed357274c1868c20a0061df256a1250a6c4af", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/routing", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/yaml": "<5.4" - }, - "require-dev": { - "doctrine/annotations": "^1.12", - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/36715ebf9fb9db73db0cb24263c79077c6fe8603", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/container": "^2.0" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "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.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": "2021-11-04T17:53:12+00:00" - }, - { - "name": "symfony/string", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/522144f0c4c004c80d56fa47e40e17028e2eefc2", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.0" - }, - "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/translation-contracts": "^2.0|^3.0", - "symfony/var-exporter": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "files": [ - "Resources/functions.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 an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/translation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/71bb15335798f8c4da110911bcf2d2fead7a430d", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.3|^3.0" - }, - "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" - }, - "provide": { - "symfony/translation-implementation": "2.3|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-07T00:29:03+00:00" - }, - { - "name": "symfony/translation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "suggest": { - "symfony/translation-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - } - }, - "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.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": "2021-09-07T12:43:40+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7b701676fc64f9ef11f9b4870f16b48f66be4834", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<5.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-17T16:30:44+00:00" - }, - { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.4", - "source": { - "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" - } - ], - "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", - "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "support": { - "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" - }, - "time": "2021-12-08T09:12:39+00:00" - }, - { - "name": "vlucas/phpdotenv", - "version": "v5.4.1", - "source": { - "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", - "shasum": "" - }, - "require": { - "ext-pcre": "*", - "graham-campbell/result-type": "^1.0.2", - "php": "^7.1.3 || ^8.0", - "phpoption/phpoption": "^1.8", - "symfony/polyfill-ctype": "^1.23", - "symfony/polyfill-mbstring": "^1.23.1", - "symfony/polyfill-php80": "^1.23.1" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" - }, - "suggest": { - "ext-filter": "Required to use the boolean validator." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.4-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.4.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", - "type": "tidelift" - } - ], - "time": "2021-12-12T23:22:04+00:00" - }, - { - "name": "voku/portable-ascii", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/voku/portable-ascii.git", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/9bd89e83cecdf8c37b64909454249eaed98b2c89", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89", - "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.0" - }, - "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-01-24T18:59:03+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "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.10.0" - }, - "time": "2021-03-09T10:59:23+00:00" - } - ], - "packages-dev": [ - { - "name": "doctrine/instantiator", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.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%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2020-11-10T18:47:58+00:00" - }, - { - "name": "facade/ignition-contracts", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/facade/ignition-contracts.git", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^v2.15.8", - "phpunit/phpunit": "^9.3.11", - "vimeo/psalm": "^3.17.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Facade\\IgnitionContracts\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://flareapp.io", - "role": "Developer" - } - ], - "description": "Solution contracts for Ignition", - "homepage": "https://github.com/facade/ignition-contracts", - "keywords": [ - "contracts", - "flare", - "ignition" - ], - "support": { - "issues": "https://github.com/facade/ignition-contracts/issues", - "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" - }, - "time": "2020-10-16T08:27:54+00:00" - }, - { - "name": "fakerphp/faker", - "version": "v1.19.0", - "source": { - "type": "git", - "url": "https://github.com/FakerPHP/Faker.git", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^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": "*", - "symfony/phpunit-bridge": "^4.4 || ^5.2" - }, - "suggest": { - "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", - "ext-curl": "Required by Faker\\Provider\\Image to download images.", - "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", - "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.19-dev" - } - }, - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "François Zaninotto" - } - ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], - "support": { - "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0" - }, - "time": "2022-02-02T17:38:57+00:00" - }, - { - "name": "filp/whoops", - "version": "2.14.5", - "source": { - "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "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.14.5" - }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "time": "2022-01-07T12:00:00+00:00" - }, - { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "shasum": "" - }, - "require": { - "php": "^5.3|^7.0|^8.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" - }, - "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "classmap": [ - "hamcrest" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "This is the PHP port of Hamcrest Matchers", - "keywords": [ - "test" - ], - "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" - }, - "time": "2020-07-09T08:09:16+00:00" - }, - { - "name": "laravel/sail", - "version": "v1.13.2", - "source": { - "type": "git", - "url": "https://github.com/laravel/sail.git", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.0|^9.0", - "illuminate/contracts": "^8.0|^9.0", - "illuminate/support": "^8.0|^9.0", - "php": "^7.3|^8.0" - }, - "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": "2022-02-08T14:14:12+00:00" - }, - { - "name": "mockery/mockery", - "version": "1.5.0", - "source": { - "type": "git", - "url": "https://github.com/mockery/mockery.git", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "shasum": "" - }, - "require": { - "hamcrest/hamcrest-php": "^2.0.1", - "lib-pcre": ">=7.0", - "php": "^7.3 || ^8.0" - }, - "conflict": { - "phpunit/phpunit": "<8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-0": { - "Mockery": "library/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" - } - ], - "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": { - "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.5.0" - }, - "time": "2022-01-20T13:18:17+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.10.2", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "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.10.2" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2020-11-13T09:40:50+00:00" - }, - { - "name": "nunomaduro/collision", - "version": "v6.1.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/collision.git", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "shasum": "" - }, - "require": { - "facade/ignition-contracts": "^1.0.2", - "filp/whoops": "^2.14.5", - "php": "^8.0.0", - "symfony/console": "^6.0.2" - }, - "require-dev": { - "brianium/paratest": "^6.4.1", - "laravel/framework": "^9.0", - "nunomaduro/larastan": "^1.0.2", - "nunomaduro/mock-final-classes": "^1.1.0", - "orchestra/testbench": "^7.0.0", - "phpunit/phpunit": "^9.5.11" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "6.x-dev" - }, - "laravel": { - "providers": [ - "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" - ] - } - }, - "autoload": { - "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": "2022-01-18T17:49:08+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.1.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/15a90844ad40f127afd244c0cad228de2a80052a", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a", - "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.1.1" - }, - "time": "2022-02-07T21:56:48+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.6.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "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.6.0" - }, - "time": "2022-01-04T19:58:01+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" - }, - "time": "2021-12-08T12:19:24+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "9.2.10", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d5850aaf931743067f4bfc1ae4cbd06468400687", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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 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", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.10" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-05T09:12:13+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "3.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-02T12:48:52+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "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/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:58:55+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T05:33:50+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.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/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:16:10+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "9.5.13", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/597cb647654ede35e43b137926dfdfef0fb11743", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.3.1", - "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": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.7", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", - "sebastian/version": "^3.0.2" - }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.13" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-01-24T07:33:35+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:08:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "1.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:08:54+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:30:19+00:00" - }, - { - "name": "sebastian/comparator", - "version": "4.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:49:45+00:00" - }, - { - "name": "sebastian/complexity", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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 calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:52:27+00:00" - }, - { - "name": "sebastian/diff", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:10:38+00:00" - }, - { - "name": "sebastian/environment", - "version": "5.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-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": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:52:38+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "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", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-11-11T14:18:36+00:00" - }, - { - "name": "sebastian/global-state", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-11T13:31:12+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-28T06:42:11+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "http://www.github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:17:30+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:45:17+00:00" - }, - { - "name": "sebastian/type", - "version": "2.3.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-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/2.3.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-15T12:49:02+00:00" - }, - { - "name": "sebastian/version", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:39:44+00:00" - }, - { - "name": "spatie/backtrace", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/backtrace.git", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "ext-json": "*", - "phpunit/phpunit": "^9.3", - "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": { - "issues": "https://github.com/spatie/backtrace/issues", - "source": "https://github.com/spatie/backtrace/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/sponsors/spatie", - "type": "github" - }, - { - "url": "https://spatie.be/open-source/support-us", - "type": "other" - } - ], - "time": "2021-11-09T10:57:15+00:00" - }, - { - "name": "spatie/flare-client-php", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/flare-client-php.git", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "shasum": "" - }, - "require": { - "illuminate/pipeline": "^8.0|^9.0", - "php": "^8.0", - "spatie/backtrace": "^1.2", - "symfony/http-foundation": "^5.0|^6.0", - "symfony/mime": "^5.2|^6.0", - "symfony/process": "^5.2|^6.0", - "symfony/var-dumper": "^5.2|^6.0" - }, - "require-dev": { - "dms/phpunit-arraysubset-asserts": "^0.3.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/phpunit-snapshot-assertions": "^4.0" - }, - "type": "library", - "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.0.1" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2022-02-04T15:21:00+00:00" - }, - { - "name": "spatie/ignition", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/spatie/ignition.git", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/d2d5ba823af3004268556e87dfc94449e4159f5a", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "monolog/monolog": "^2.0", - "php": "^8.0", - "spatie/flare-client-php": "^1.0", - "symfony/console": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "mockery/mockery": "^1.4", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/ray": "^1.32", - "symfony/process": "^5.4|^6.0" - }, - "type": "library", - "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": "2022-01-19T12:57:41+00:00" - }, - { - "name": "spatie/laravel-ignition", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/68250225a9f83b086462c2af1b1139dfde48fbd2", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*", - "illuminate/support": "^8.77|^9.0", - "monolog/monolog": "^2.3", - "php": "^8.0", - "spatie/flare-client-php": "^1.0.1", - "spatie/ignition": "^1.0", - "symfony/console": "^5.0|^6.0", - "symfony/var-dumper": "^5.0|^6.0" - }, - "require-dev": { - "filp/whoops": "^2.14", - "livewire/livewire": "^2.8|dev-develop", - "mockery/mockery": "^1.4", - "nunomaduro/larastan": "^1.0", - "orchestra/testbench": "^6.23|^7.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/laravel-ray": "^1.27" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Spatie\\LaravelIgnition\\IgnitionServiceProvider" - ], - "aliases": { - "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" - } - } - }, - "autoload": { - "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": "2022-02-04T15:25:56+00:00" - }, - { - "name": "squizlabs/php_codesniffer", - "version": "3.6.2", - "source": { - "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", - "shasum": "" - }, - "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.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": "lead" - } - ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", - "keywords": [ - "phpcs", - "standards" - ], - "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" - }, - "time": "2021-12-12T21:44:58+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2021-07-28T10:34:58+00:00" - } - ], - "aliases": [], - "minimum-stability": "dev", - "stability-flags": [], - "prefer-stable": true, - "prefer-lowest": false, - "platform": { - "php": "^8.0" - }, - "platform-dev": [], - "plugin-api-version": "2.1.0" -} diff --git a/Chapter25/onlineStore/config/app.php b/Chapter25/onlineStore/config/app.php deleted file mode 100644 index 1941d7c..0000000 --- a/Chapter25/onlineStore/config/app.php +++ /dev/null @@ -1,197 +0,0 @@ - env('APP_NAME', 'Laravel'), - - /* - |-------------------------------------------------------------------------- - | Application Environment - |-------------------------------------------------------------------------- - | - | This value determines the "environment" your application is currently - | running in. This may determine how you prefer to configure various - | services the application utilizes. Set this in your ".env" file. - | - */ - - 'env' => env('APP_ENV', 'production'), - - /* - |-------------------------------------------------------------------------- - | Application Debug Mode - |-------------------------------------------------------------------------- - | - | When your application is in debug mode, detailed error messages with - | stack traces will be shown on every error that occurs within your - | application. If disabled, a simple generic error page is shown. - | - */ - - 'debug' => (bool) env('APP_DEBUG', false), - - /* - |-------------------------------------------------------------------------- - | Application URL - |-------------------------------------------------------------------------- - | - | This URL is used by the console to properly generate URLs when using - | the Artisan command line tool. You should set this to the root of - | your application so that it is used when running Artisan tasks. - | - */ - - 'url' => env('APP_URL', 'http://localhost'), - - 'asset_url' => env('ASSET_URL', null), - - /* - |-------------------------------------------------------------------------- - | 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', - - /* - |-------------------------------------------------------------------------- - | 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' => [ - - /* - * Laravel Framework Service Providers... - */ - Illuminate\Auth\AuthServiceProvider::class, - Illuminate\Broadcasting\BroadcastServiceProvider::class, - Illuminate\Bus\BusServiceProvider::class, - Illuminate\Cache\CacheServiceProvider::class, - Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, - Illuminate\Cookie\CookieServiceProvider::class, - Illuminate\Database\DatabaseServiceProvider::class, - Illuminate\Encryption\EncryptionServiceProvider::class, - Illuminate\Filesystem\FilesystemServiceProvider::class, - Illuminate\Foundation\Providers\FoundationServiceProvider::class, - Illuminate\Hashing\HashServiceProvider::class, - Illuminate\Mail\MailServiceProvider::class, - Illuminate\Notifications\NotificationServiceProvider::class, - Illuminate\Pagination\PaginationServiceProvider::class, - Illuminate\Pipeline\PipelineServiceProvider::class, - Illuminate\Queue\QueueServiceProvider::class, - Illuminate\Redis\RedisServiceProvider::class, - Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, - Illuminate\Session\SessionServiceProvider::class, - Illuminate\Translation\TranslationServiceProvider::class, - Illuminate\Validation\ValidationServiceProvider::class, - Illuminate\View\ViewServiceProvider::class, - - /* - * 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, - - ], - - /* - |-------------------------------------------------------------------------- - | 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([ - // ... - ])->toArray(), - -]; diff --git a/Chapter25/onlineStore/config/auth.php b/Chapter25/onlineStore/config/auth.php deleted file mode 100644 index d8c6cee..0000000 --- a/Chapter25/onlineStore/config/auth.php +++ /dev/null @@ -1,111 +0,0 @@ - [ - '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 expire 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. - | - */ - - 'passwords' => [ - 'users' => [ - 'provider' => 'users', - 'table' => 'password_resets', - '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/Chapter25/onlineStore/config/broadcasting.php b/Chapter25/onlineStore/config/broadcasting.php deleted file mode 100644 index 67fcbbd..0000000 --- a/Chapter25/onlineStore/config/broadcasting.php +++ /dev/null @@ -1,67 +0,0 @@ - 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'), - 'useTLS' => true, - ], - '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/Chapter25/onlineStore/config/cache.php b/Chapter25/onlineStore/config/cache.php deleted file mode 100644 index 8736c7a..0000000 --- a/Chapter25/onlineStore/config/cache.php +++ /dev/null @@ -1,110 +0,0 @@ - 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'), - ], - - '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 a RAM based store such as APC or Memcached, there might - | be other applications utilizing the same cache. So, we'll specify a - | value to get prefixed to all our keys so we can avoid collisions. - | - */ - - 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'), - -]; diff --git a/Chapter25/onlineStore/config/cors.php b/Chapter25/onlineStore/config/cors.php deleted file mode 100644 index 8a39e6d..0000000 --- a/Chapter25/onlineStore/config/cors.php +++ /dev/null @@ -1,34 +0,0 @@ - ['api/*', 'sanctum/csrf-cookie'], - - 'allowed_methods' => ['*'], - - 'allowed_origins' => ['*'], - - 'allowed_origins_patterns' => [], - - 'allowed_headers' => ['*'], - - 'exposed_headers' => [], - - 'max_age' => 0, - - 'supports_credentials' => false, - -]; diff --git a/Chapter25/onlineStore/config/database.php b/Chapter25/onlineStore/config/database.php deleted file mode 100644 index 0faebae..0000000 --- a/Chapter25/onlineStore/config/database.php +++ /dev/null @@ -1,147 +0,0 @@ - env('DB_CONNECTION', 'mysql'), - - /* - |-------------------------------------------------------------------------- - | Database Connections - |-------------------------------------------------------------------------- - | - | Here are each of the database connections setup for your application. - | Of course, examples of configuring each database platform that is - | supported by Laravel is shown below to make development simple. - | - | - | All database work in Laravel is done through the PHP PDO facilities - | so make sure you have the driver for your particular database of - | choice installed on your machine before you begin development. - | - */ - - 'connections' => [ - - 'sqlite' => [ - 'driver' => 'sqlite', - 'url' => env('DATABASE_URL'), - 'database' => env('DB_DATABASE', database_path('database.sqlite')), - 'prefix' => '', - 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), - ], - - 'mysql' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '3306'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'unix_socket' => env('DB_SOCKET', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - 'pgsql' => [ - 'driver' => 'pgsql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '5432'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - 'search_path' => 'public', - 'sslmode' => 'prefer', - ], - - 'sqlsrv' => [ - 'driver' => 'sqlsrv', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', 'localhost'), - 'port' => env('DB_PORT', '1433'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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'), - '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'), - 'password' => env('REDIS_PASSWORD'), - 'port' => env('REDIS_PORT', '6379'), - 'database' => env('REDIS_CACHE_DB', '1'), - ], - - ], - -]; diff --git a/Chapter25/onlineStore/config/filesystems.php b/Chapter25/onlineStore/config/filesystems.php deleted file mode 100644 index cf5abce..0000000 --- a/Chapter25/onlineStore/config/filesystems.php +++ /dev/null @@ -1,73 +0,0 @@ - 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 setup for each driver as an example of the required options. - | - | Supported Drivers: "local", "ftp", "sftp", "s3" - | - */ - - 'disks' => [ - - 'local' => [ - 'driver' => 'local', - 'root' => storage_path('app'), - ], - - 'public' => [ - 'driver' => 'local', - 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', - 'visibility' => 'public', - ], - - '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), - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter25/onlineStore/config/hashing.php b/Chapter25/onlineStore/config/hashing.php deleted file mode 100644 index bcd3be4..0000000 --- a/Chapter25/onlineStore/config/hashing.php +++ /dev/null @@ -1,52 +0,0 @@ - '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/Chapter25/onlineStore/config/logging.php b/Chapter25/onlineStore/config/logging.php deleted file mode 100644 index fefe088..0000000 --- a/Chapter25/onlineStore/config/logging.php +++ /dev/null @@ -1,119 +0,0 @@ - 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' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), - - /* - |-------------------------------------------------------------------------- - | 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'), - ], - - 'daily' => [ - 'driver' => 'daily', - 'path' => storage_path('logs/laravel.log'), - 'level' => env('LOG_LEVEL', 'debug'), - 'days' => 14, - ], - - 'slack' => [ - 'driver' => 'slack', - 'url' => env('LOG_SLACK_WEBHOOK_URL'), - 'username' => 'Laravel Log', - 'emoji' => ':boom:', - 'level' => env('LOG_LEVEL', 'critical'), - ], - - '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'), - ], - ], - - 'stderr' => [ - 'driver' => 'monolog', - 'level' => env('LOG_LEVEL', 'debug'), - 'handler' => StreamHandler::class, - 'formatter' => env('LOG_STDERR_FORMATTER'), - 'with' => [ - 'stream' => 'php://stderr', - ], - ], - - 'syslog' => [ - 'driver' => 'syslog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'errorlog' => [ - 'driver' => 'errorlog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'null' => [ - 'driver' => 'monolog', - 'handler' => NullHandler::class, - ], - - 'emergency' => [ - 'path' => storage_path('logs/laravel.log'), - ], - ], - -]; diff --git a/Chapter25/onlineStore/config/mail.php b/Chapter25/onlineStore/config/mail.php deleted file mode 100644 index 87b6fe3..0000000 --- a/Chapter25/onlineStore/config/mail.php +++ /dev/null @@ -1,117 +0,0 @@ - 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", - | "postmark", "log", "array", "failover" - | - */ - - 'mailers' => [ - 'smtp' => [ - 'transport' => 'smtp', - '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, - ], - - 'ses' => [ - 'transport' => 'ses', - ], - - 'mailgun' => [ - 'transport' => 'mailgun', - ], - - 'postmark' => [ - 'transport' => 'postmark', - ], - - 'sendmail' => [ - 'transport' => 'sendmail', - 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -t -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/Chapter25/onlineStore/config/queue.php b/Chapter25/onlineStore/config/queue.php deleted file mode 100644 index 25ea5a8..0000000 --- a/Chapter25/onlineStore/config/queue.php +++ /dev/null @@ -1,93 +0,0 @@ - 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, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter25/onlineStore/config/sanctum.php b/Chapter25/onlineStore/config/sanctum.php deleted file mode 100644 index 9281c92..0000000 --- a/Chapter25/onlineStore/config/sanctum.php +++ /dev/null @@ -1,65 +0,0 @@ - explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( - '%s%s', - 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', - env('APP_URL') ? ','.parse_url(env('APP_URL'), PHP_URL_HOST) : '' - ))), - - /* - |-------------------------------------------------------------------------- - | 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/Chapter25/onlineStore/config/services.php b/Chapter25/onlineStore/config/services.php deleted file mode 100644 index 2a1d616..0000000 --- a/Chapter25/onlineStore/config/services.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - 'domain' => env('MAILGUN_DOMAIN'), - 'secret' => env('MAILGUN_SECRET'), - 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), - ], - - '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/Chapter25/onlineStore/config/session.php b/Chapter25/onlineStore/config/session.php deleted file mode 100644 index 8fed97c..0000000 --- a/Chapter25/onlineStore/config/session.php +++ /dev/null @@ -1,201 +0,0 @@ - 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/Chapter25/onlineStore/config/view.php b/Chapter25/onlineStore/config/view.php deleted file mode 100644 index 22b8a18..0000000 --- a/Chapter25/onlineStore/config/view.php +++ /dev/null @@ -1,36 +0,0 @@ - [ - 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/Chapter25/onlineStore/database/.gitignore b/Chapter25/onlineStore/database/.gitignore deleted file mode 100644 index 9b19b93..0000000 --- a/Chapter25/onlineStore/database/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.sqlite* diff --git a/Chapter25/onlineStore/database/factories/UserFactory.php b/Chapter25/onlineStore/database/factories/UserFactory.php deleted file mode 100644 index d6ca926..0000000 --- a/Chapter25/onlineStore/database/factories/UserFactory.php +++ /dev/null @@ -1,42 +0,0 @@ - - */ -class UserFactory extends Factory -{ - /** - * Define the model's default state. - * - * @return array - */ - public function definition() - { - return [ - 'name' => $this->faker->name(), - 'email' => $this->faker->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. - * - * @return \Illuminate\Database\Eloquent\Factories\Factory - */ - public function unverified() - { - return $this->state(function (array $attributes) { - return [ - 'email_verified_at' => null, - ]; - }); - } -} diff --git a/Chapter25/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php b/Chapter25/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php deleted file mode 100644 index cf6b776..0000000 --- a/Chapter25/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->string('name'); - $table->string('email')->unique(); - $table->timestamp('email_verified_at')->nullable(); - $table->string('password'); - $table->rememberToken(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('users'); - } -}; diff --git a/Chapter25/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php b/Chapter25/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php deleted file mode 100644 index 0ee0a36..0000000 --- a/Chapter25/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php +++ /dev/null @@ -1,32 +0,0 @@ -string('email')->index(); - $table->string('token'); - $table->timestamp('created_at')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('password_resets'); - } -} diff --git a/Chapter25/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/Chapter25/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php deleted file mode 100644 index 1719198..0000000 --- a/Chapter25/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php +++ /dev/null @@ -1,36 +0,0 @@ -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. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('failed_jobs'); - } -}; diff --git a/Chapter25/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/Chapter25/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php deleted file mode 100644 index fd235f8..0000000 --- a/Chapter25/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->morphs('tokenable'); - $table->string('name'); - $table->string('token', 64)->unique(); - $table->text('abilities')->nullable(); - $table->timestamp('last_used_at')->nullable(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('personal_access_tokens'); - } -}; diff --git a/Chapter25/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php b/Chapter25/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php deleted file mode 100644 index 2eecdc2..0000000 --- a/Chapter25/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php +++ /dev/null @@ -1,35 +0,0 @@ -id(); - $table->string('name'); - $table->text('description'); - $table->string('image'); - $table->integer('price'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('products'); - } -}; diff --git a/Chapter25/onlineStore/database/migrations/2022_02_12_140820_alter_users_table.php b/Chapter25/onlineStore/database/migrations/2022_02_12_140820_alter_users_table.php deleted file mode 100644 index 5bfcf7e..0000000 --- a/Chapter25/onlineStore/database/migrations/2022_02_12_140820_alter_users_table.php +++ /dev/null @@ -1,34 +0,0 @@ -string('role')->default('client'); - $table->integer('balance'); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::table('users', function (Blueprint $table) { - $table->dropColumn(['role']); - $table->dropColumn(['balance']); - }); - } -}; diff --git a/Chapter25/onlineStore/database/seeders/DatabaseSeeder.php b/Chapter25/onlineStore/database/seeders/DatabaseSeeder.php deleted file mode 100644 index 71f673f..0000000 --- a/Chapter25/onlineStore/database/seeders/DatabaseSeeder.php +++ /dev/null @@ -1,19 +0,0 @@ -create(); - } -} diff --git a/Chapter25/onlineStore/lang/en.json b/Chapter25/onlineStore/lang/en.json deleted file mode 100644 index 577680d..0000000 --- a/Chapter25/onlineStore/lang/en.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "The :attribute must contain at least one letter.": "The :attribute must contain at least one letter.", - "The :attribute must contain at least one number.": "The :attribute must contain at least one number.", - "The :attribute must contain at least one symbol.": "The :attribute must contain at least one symbol.", - "The :attribute must contain at least one uppercase and one lowercase letter.": "The :attribute must contain at least one uppercase and one lowercase letter.", - "The given :attribute has appeared in a data leak. Please choose a different :attribute.": "The given :attribute has appeared in a data leak. Please choose a different :attribute." -} diff --git a/Chapter25/onlineStore/lang/en/auth.php b/Chapter25/onlineStore/lang/en/auth.php deleted file mode 100644 index 6598e2c..0000000 --- a/Chapter25/onlineStore/lang/en/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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/Chapter25/onlineStore/lang/en/pagination.php b/Chapter25/onlineStore/lang/en/pagination.php deleted file mode 100644 index d481411..0000000 --- a/Chapter25/onlineStore/lang/en/pagination.php +++ /dev/null @@ -1,19 +0,0 @@ - '« Previous', - 'next' => 'Next »', - -]; diff --git a/Chapter25/onlineStore/lang/en/passwords.php b/Chapter25/onlineStore/lang/en/passwords.php deleted file mode 100644 index 2345a56..0000000 --- a/Chapter25/onlineStore/lang/en/passwords.php +++ /dev/null @@ -1,22 +0,0 @@ - '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/Chapter25/onlineStore/lang/en/validation.php b/Chapter25/onlineStore/lang/en/validation.php deleted file mode 100644 index 783003c..0000000 --- a/Chapter25/onlineStore/lang/en/validation.php +++ /dev/null @@ -1,163 +0,0 @@ - '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' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - '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' => [ - 'numeric' => 'The :attribute must be greater than :value.', - 'file' => 'The :attribute must be greater than :value kilobytes.', - 'string' => 'The :attribute must be greater than :value characters.', - 'array' => 'The :attribute must have more than :value items.', - ], - 'gte' => [ - 'numeric' => 'The :attribute must be greater than or equal to :value.', - 'file' => 'The :attribute must be greater than or equal to :value kilobytes.', - 'string' => 'The :attribute must be greater than or equal to :value characters.', - 'array' => 'The :attribute must have :value items or more.', - ], - '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' => [ - 'numeric' => 'The :attribute must be less than :value.', - 'file' => 'The :attribute must be less than :value kilobytes.', - 'string' => 'The :attribute must be less than :value characters.', - 'array' => 'The :attribute must have less than :value items.', - ], - 'lte' => [ - 'numeric' => 'The :attribute must be less than or equal to :value.', - 'file' => 'The :attribute must be less than or equal to :value kilobytes.', - 'string' => 'The :attribute must be less than or equal to :value characters.', - 'array' => 'The :attribute must not have more than :value items.', - ], - 'mac_address' => 'The :attribute must be a valid MAC address.', - 'max' => [ - 'numeric' => 'The :attribute must not be greater than :max.', - 'file' => 'The :attribute must not be greater than :max kilobytes.', - 'string' => 'The :attribute must not be greater than :max characters.', - 'array' => 'The :attribute must not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - '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.', - 'password' => 'The password is incorrect.', - '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' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - '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/Chapter25/onlineStore/package.json b/Chapter25/onlineStore/package.json deleted file mode 100644 index 7b71681..0000000 --- a/Chapter25/onlineStore/package.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "private": true, - "scripts": { - "dev": "npm run development", - "development": "mix", - "watch": "mix watch", - "watch-poll": "mix watch -- --watch-options-poll=1000", - "hot": "mix watch --hot", - "prod": "npm run production", - "production": "mix --production" - }, - "devDependencies": { - "@popperjs/core": "^2.10.2", - "axios": "^0.25", - "bootstrap": "^5.1.3", - "laravel-mix": "^6.0.6", - "lodash": "^4.17.19", - "postcss": "^8.1.14", - "sass": "^1.32.11", - "sass-loader": "^11.0.1" - } -} diff --git a/Chapter25/onlineStore/phpcs.xml b/Chapter25/onlineStore/phpcs.xml deleted file mode 100644 index a1cf2b6..0000000 --- a/Chapter25/onlineStore/phpcs.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - The coding standard for the Online Store project - - app/ - config/ - database/ - routes/ - */migrations/* - diff --git a/Chapter25/onlineStore/phpunit.xml b/Chapter25/onlineStore/phpunit.xml deleted file mode 100644 index 2ac86a1..0000000 --- a/Chapter25/onlineStore/phpunit.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - ./tests/Unit - - - ./tests/Feature - - - - - ./app - - - - - - - - - - - - - - diff --git a/Chapter25/onlineStore/public/.htaccess b/Chapter25/onlineStore/public/.htaccess deleted file mode 100644 index 3aec5e2..0000000 --- a/Chapter25/onlineStore/public/.htaccess +++ /dev/null @@ -1,21 +0,0 @@ - - - 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/Chapter25/onlineStore/public/css/admin.css b/Chapter25/onlineStore/public/css/admin.css deleted file mode 100644 index d9495a1..0000000 --- a/Chapter25/onlineStore/public/css/admin.css +++ /dev/null @@ -1,33 +0,0 @@ -.copyright { - background-color: #1a252f; -} - -.fixed { - -ms-flex: 0 0 250px; - flex: 0 0 250px; -} - -.content-grey { - background-color: #f8f9fc; -} - -hr { - margin-top: 0.8em; - margin-bottom: 0.8em; -} - -.img-profile { - height: 2rem; - width: 2rem; -} - -.profile-font { - color: #858796 !important; - font-size: 80%; - font-weight: 400; -} - -.card-header { - background-color: #f8f9fc; - border-bottom: 1px solid #e3e6f0; -} diff --git a/Chapter25/onlineStore/public/css/app.css b/Chapter25/onlineStore/public/css/app.css deleted file mode 100644 index cabac36..0000000 --- a/Chapter25/onlineStore/public/css/app.css +++ /dev/null @@ -1,20 +0,0 @@ -.bg-secondary { - background-color: #2c3e50 !important; -} - -.copyright { - background-color: #1a252f; -} - -.bg-primary { - background-color: #1abc9c !important; -} - -nav{ - font-weight: 700; -} - -.img-card{ - height: 18vw; - object-fit: cover; -} diff --git a/Chapter25/onlineStore/public/favicon.ico b/Chapter25/onlineStore/public/favicon.ico deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter25/onlineStore/public/img/game.png b/Chapter25/onlineStore/public/img/game.png deleted file mode 100644 index 85420e8bbc16098bf26b4ee63bde0e91a19d1f2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25896 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 cz>% diff --git a/Chapter25/onlineStore/public/img/safe.png b/Chapter25/onlineStore/public/img/safe.png deleted file mode 100644 index 445942c707af53210931f9f4f99f6d3cb69e5d89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19240 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
    w==XB0?3|p=#`o%NsudE(E-U#KS3Snw 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 o>ir+C;RN10sIS0&a;p - - - - - - - - - - - - - - - - - - diff --git a/Chapter25/onlineStore/public/index.php b/Chapter25/onlineStore/public/index.php deleted file mode 100644 index 1d69f3a..0000000 --- a/Chapter25/onlineStore/public/index.php +++ /dev/null @@ -1,55 +0,0 @@ -make(Kernel::class); - -$response = $kernel->handle( - $request = Request::capture() -)->send(); - -$kernel->terminate($request, $response); diff --git a/Chapter25/onlineStore/public/robots.txt b/Chapter25/onlineStore/public/robots.txt deleted file mode 100644 index eb05362..0000000 --- a/Chapter25/onlineStore/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: diff --git a/Chapter25/onlineStore/resources/css/app.css b/Chapter25/onlineStore/resources/css/app.css deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter25/onlineStore/resources/js/app.js b/Chapter25/onlineStore/resources/js/app.js deleted file mode 100644 index 40c55f6..0000000 --- a/Chapter25/onlineStore/resources/js/app.js +++ /dev/null @@ -1 +0,0 @@ -require('./bootstrap'); diff --git a/Chapter25/onlineStore/resources/js/bootstrap.js b/Chapter25/onlineStore/resources/js/bootstrap.js deleted file mode 100644 index dcdc4df..0000000 --- a/Chapter25/onlineStore/resources/js/bootstrap.js +++ /dev/null @@ -1,32 +0,0 @@ -window._ = require('lodash'); - -try { - require('bootstrap'); -} catch (e) {} - -/** - * 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 = require('axios'); - -window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; - -/** - * 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'; - -// window.Pusher = require('pusher-js'); - -// window.Echo = new Echo({ -// broadcaster: 'pusher', -// key: process.env.MIX_PUSHER_APP_KEY, -// cluster: process.env.MIX_PUSHER_APP_CLUSTER, -// forceTLS: true -// }); diff --git a/Chapter25/onlineStore/resources/sass/_variables.scss b/Chapter25/onlineStore/resources/sass/_variables.scss deleted file mode 100644 index 172daaa..0000000 --- a/Chapter25/onlineStore/resources/sass/_variables.scss +++ /dev/null @@ -1,7 +0,0 @@ -// Body -$body-bg: #f8fafc; - -// Typography -$font-family-sans-serif: 'Nunito', sans-serif; -$font-size-base: 0.9rem; -$line-height-base: 1.6; diff --git a/Chapter25/onlineStore/resources/sass/app.scss b/Chapter25/onlineStore/resources/sass/app.scss deleted file mode 100644 index 3193ffa..0000000 --- a/Chapter25/onlineStore/resources/sass/app.scss +++ /dev/null @@ -1,8 +0,0 @@ -// Fonts -@import url('https://fonts.googleapis.com/css?family=Nunito'); - -// Variables -@import 'variables'; - -// Bootstrap -@import '~bootstrap/scss/bootstrap'; diff --git a/Chapter25/onlineStore/resources/views/admin/home/index.blade.php b/Chapter25/onlineStore/resources/views/admin/home/index.blade.php deleted file mode 100644 index a2b4868..0000000 --- a/Chapter25/onlineStore/resources/views/admin/home/index.blade.php +++ /dev/null @@ -1,12 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
    -
    - Admin Panel - Home Page -
    -
    - Welcome to the Admin Panel, use the sidebar to navigate between the different options. -
    -
    -@endsection diff --git a/Chapter25/onlineStore/resources/views/admin/product/edit.blade.php b/Chapter25/onlineStore/resources/views/admin/product/edit.blade.php deleted file mode 100644 index b8e03d8..0000000 --- a/Chapter25/onlineStore/resources/views/admin/product/edit.blade.php +++ /dev/null @@ -1,61 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
    -
    - Edit Product -
    -
    - @if($errors->any()) -
      - @foreach($errors->all() as $error) -
    • - {{ $error }}
    • - @endforeach -
    - @endif - -
    - @csrf - @method('PUT') -
    -
    -
    - -
    - -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -   -
    -
    -
    - - -
    - -
    -
    -
    -@endsection diff --git a/Chapter25/onlineStore/resources/views/admin/product/index.blade.php b/Chapter25/onlineStore/resources/views/admin/product/index.blade.php deleted file mode 100644 index 19fbe4b..0000000 --- a/Chapter25/onlineStore/resources/views/admin/product/index.blade.php +++ /dev/null @@ -1,98 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
    -
    - Create Products -
    -
    - @if($errors->any()) -
      - @foreach($errors->all() as $error) -
    • - {{ $error }}
    • - @endforeach -
    - @endif - -
    - @csrf -
    -
    -
    - -
    - -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -   -
    -
    -
    - - -
    - -
    -
    -
    - -
    -
    - Manage Products -
    -
    - - - - - - - - - - - @foreach ($viewData["products"] as $product) - - - - - - - @endforeach - -
    IDNameEditDelete
    {{ $product->getId() }}{{ $product->getName() }} - - - - -
    - @csrf - @method('DELETE') - -
    -
    -
    -
    -@endsection diff --git a/Chapter25/onlineStore/resources/views/auth/login.blade.php b/Chapter25/onlineStore/resources/views/auth/login.blade.php deleted file mode 100644 index c7e5ea0..0000000 --- a/Chapter25/onlineStore/resources/views/auth/login.blade.php +++ /dev/null @@ -1,73 +0,0 @@ -@extends('layouts.app') - -@section('content') -
    -@endsection diff --git a/Chapter25/onlineStore/resources/views/auth/passwords/confirm.blade.php b/Chapter25/onlineStore/resources/views/auth/passwords/confirm.blade.php deleted file mode 100644 index f8c8e61..0000000 --- a/Chapter25/onlineStore/resources/views/auth/passwords/confirm.blade.php +++ /dev/null @@ -1,49 +0,0 @@ -@extends('layouts.app') - -@section('content') - -@endsection diff --git a/Chapter25/onlineStore/resources/views/auth/passwords/email.blade.php b/Chapter25/onlineStore/resources/views/auth/passwords/email.blade.php deleted file mode 100644 index d1ac783..0000000 --- a/Chapter25/onlineStore/resources/views/auth/passwords/email.blade.php +++ /dev/null @@ -1,47 +0,0 @@ -@extends('layouts.app') - -@section('content') -
    -
    -
    -
    -
    {{ __('Reset Password') }}
    - -
    - @if (session('status')) - - @endif - -
    - @csrf - -
    - - -
    - - - @error('email') - - {{ $message }} - - @enderror -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -@endsection diff --git a/Chapter25/onlineStore/resources/views/auth/passwords/reset.blade.php b/Chapter25/onlineStore/resources/views/auth/passwords/reset.blade.php deleted file mode 100644 index dccf6c6..0000000 --- a/Chapter25/onlineStore/resources/views/auth/passwords/reset.blade.php +++ /dev/null @@ -1,65 +0,0 @@ -@extends('layouts.app') - -@section('content') -
    -
    -
    -
    -
    {{ __('Reset Password') }}
    - -
    -
    - @csrf - - - -
    - - -
    - - - @error('email') - - {{ $message }} - - @enderror -
    -
    - -
    - - -
    - - - @error('password') - - {{ $message }} - - @enderror -
    -
    - -
    - - -
    - -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -@endsection diff --git a/Chapter25/onlineStore/resources/views/auth/register.blade.php b/Chapter25/onlineStore/resources/views/auth/register.blade.php deleted file mode 100644 index e001a0b..0000000 --- a/Chapter25/onlineStore/resources/views/auth/register.blade.php +++ /dev/null @@ -1,77 +0,0 @@ -@extends('layouts.app') - -@section('content') -
    -
    -
    -
    -
    {{ __('Register') }}
    - -
    -
    - @csrf - -
    - - -
    - - - @error('name') - - {{ $message }} - - @enderror -
    -
    - -
    - - -
    - - - @error('email') - - {{ $message }} - - @enderror -
    -
    - -
    - - -
    - - - @error('password') - - {{ $message }} - - @enderror -
    -
    - -
    - - -
    - -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -@endsection diff --git a/Chapter25/onlineStore/resources/views/auth/verify.blade.php b/Chapter25/onlineStore/resources/views/auth/verify.blade.php deleted file mode 100644 index 9f8c1bc..0000000 --- a/Chapter25/onlineStore/resources/views/auth/verify.blade.php +++ /dev/null @@ -1,28 +0,0 @@ -@extends('layouts.app') - -@section('content') -
    -
    -
    -
    -
    {{ __('Verify Your Email Address') }}
    - -
    - @if (session('resent')) - - @endif - - {{ __('Before proceeding, please check your email for a verification link.') }} - {{ __('If you did not receive the email') }}, -
    - @csrf - . -
    -
    -
    -
    -
    -
    -@endsection diff --git a/Chapter25/onlineStore/resources/views/cart/index.blade.php b/Chapter25/onlineStore/resources/views/cart/index.blade.php deleted file mode 100644 index b45015b..0000000 --- a/Chapter25/onlineStore/resources/views/cart/index.blade.php +++ /dev/null @@ -1,43 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    -@endsection diff --git a/Chapter25/onlineStore/resources/views/home.blade.php b/Chapter25/onlineStore/resources/views/home.blade.php deleted file mode 100644 index 1f34466..0000000 --- a/Chapter25/onlineStore/resources/views/home.blade.php +++ /dev/null @@ -1,23 +0,0 @@ -@extends('layouts.app') - -@section('content') -
    -
    -
    -
    -
    {{ __('Dashboard') }}
    - -
    - @if (session('status')) - - @endif - - {{ __('You are logged in!') }} -
    -
    -
    -
    -
    -@endsection diff --git a/Chapter25/onlineStore/resources/views/home/about.blade.php b/Chapter25/onlineStore/resources/views/home/about.blade.php deleted file mode 100644 index f79abf3..0000000 --- a/Chapter25/onlineStore/resources/views/home/about.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    -
    -
    -

    {{ $viewData["description"] }}

    -
    -
    -

    {{ $viewData["author"] }}

    -
    -
    -
    -@endsection diff --git a/Chapter25/onlineStore/resources/views/home/index.blade.php b/Chapter25/onlineStore/resources/views/home/index.blade.php deleted file mode 100644 index 1affb20..0000000 --- a/Chapter25/onlineStore/resources/views/home/index.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('content') -
    -
    - -
    -
    - -
    -
    - -
    -
    -@endsection diff --git a/Chapter25/onlineStore/resources/views/layouts/admin.blade.php b/Chapter25/onlineStore/resources/views/layouts/admin.blade.php deleted file mode 100644 index 4aff3f8..0000000 --- a/Chapter25/onlineStore/resources/views/layouts/admin.blade.php +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - @yield('title', 'Admin - Online Store') - - - -
    - - - -
    - - -
    - @yield('content') -
    -
    -
    - - - - - - - - - diff --git a/Chapter25/onlineStore/resources/views/layouts/app.blade.php b/Chapter25/onlineStore/resources/views/layouts/app.blade.php deleted file mode 100644 index 7b86f0e..0000000 --- a/Chapter25/onlineStore/resources/views/layouts/app.blade.php +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - @yield('title', 'Online Store') - - - - - -
    -
    -

    @yield('subtitle', 'A Laravel Online Store')

    -
    -
    - - -
    - @yield('content') -
    - - - - - - - diff --git a/Chapter25/onlineStore/resources/views/product/index.blade.php b/Chapter25/onlineStore/resources/views/product/index.blade.php deleted file mode 100644 index 64c3e18..0000000 --- a/Chapter25/onlineStore/resources/views/product/index.blade.php +++ /dev/null @@ -1,18 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    - @foreach ($viewData["products"] as $product) - - @endforeach -
    -@endsection diff --git a/Chapter25/onlineStore/resources/views/product/show.blade.php b/Chapter25/onlineStore/resources/views/product/show.blade.php deleted file mode 100644 index 801ea09..0000000 --- a/Chapter25/onlineStore/resources/views/product/show.blade.php +++ /dev/null @@ -1,36 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    -
    -
    - getImage()) }}" class="img-fluid rounded-start"> -
    -
    -
    -
    - {{ $viewData["product"]->getName() }} (${{ $viewData["product"]->getPrice() }}) -
    -

    {{ $viewData["product"]->getDescription() }}

    -

    -

    -
    - @csrf -
    -
    -
    Quantity
    - -
    -
    -
    - -
    -
    -
    -

    -
    -
    -
    -
    -@endsection diff --git a/Chapter25/onlineStore/resources/views/welcome.blade.php b/Chapter25/onlineStore/resources/views/welcome.blade.php deleted file mode 100644 index c587c72..0000000 --- a/Chapter25/onlineStore/resources/views/welcome.blade.php +++ /dev/null @@ -1,7 +0,0 @@ -@extends('layouts.app') -@section('title', 'Home Page - Online Store') -@section('content') -
    - Welcome to the application -
    -@endsection \ No newline at end of file diff --git a/Chapter25/onlineStore/routes/api.php b/Chapter25/onlineStore/routes/api.php deleted file mode 100644 index eb6fa48..0000000 --- a/Chapter25/onlineStore/routes/api.php +++ /dev/null @@ -1,19 +0,0 @@ -get('/user', function (Request $request) { - return $request->user(); -}); diff --git a/Chapter25/onlineStore/routes/channels.php b/Chapter25/onlineStore/routes/channels.php deleted file mode 100644 index 5d451e1..0000000 --- a/Chapter25/onlineStore/routes/channels.php +++ /dev/null @@ -1,18 +0,0 @@ -id === (int) $id; -}); diff --git a/Chapter25/onlineStore/routes/console.php b/Chapter25/onlineStore/routes/console.php deleted file mode 100644 index e05f4c9..0000000 --- a/Chapter25/onlineStore/routes/console.php +++ /dev/null @@ -1,19 +0,0 @@ -comment(Inspiring::quote()); -})->purpose('Display an inspiring quote'); diff --git a/Chapter25/onlineStore/routes/web.php b/Chapter25/onlineStore/routes/web.php deleted file mode 100644 index 9ed67aa..0000000 --- a/Chapter25/onlineStore/routes/web.php +++ /dev/null @@ -1,34 +0,0 @@ -name("home.index"); -Route::get('/about', 'App\Http\Controllers\HomeController@about')->name("home.about"); -Route::get('/products', 'App\Http\Controllers\ProductController@index')->name("product.index"); -Route::get('/products/{id}', 'App\Http\Controllers\ProductController@show')->name("product.show"); - -Route::get('/cart', 'App\Http\Controllers\CartController@index')->name("cart.index"); -Route::get('/cart/delete', 'App\Http\Controllers\CartController@delete')->name("cart.delete"); -Route::post('/cart/add/{id}', 'App\Http\Controllers\CartController@add')->name("cart.add"); - -Route::middleware('admin')->group(function () { - Route::get('/admin', 'App\Http\Controllers\Admin\AdminHomeController@index')->name("admin.home.index"); - Route::get('/admin/products', 'App\Http\Controllers\Admin\AdminProductController@index')->name("admin.product.index"); - Route::post('/admin/products/store', 'App\Http\Controllers\Admin\AdminProductController@store')->name("admin.product.store"); - Route::delete('/admin/products/{id}/delete', 'App\Http\Controllers\Admin\AdminProductController@delete')->name("admin.product.delete"); - Route::get('/admin/products/{id}/edit', 'App\Http\Controllers\Admin\AdminProductController@edit')->name("admin.product.edit"); - Route::put('/admin/products/{id}/update', 'App\Http\Controllers\Admin\AdminProductController@update')->name("admin.product.update"); -}); - -Auth::routes(); diff --git a/Chapter25/onlineStore/storage/app/.gitignore b/Chapter25/onlineStore/storage/app/.gitignore deleted file mode 100644 index 8f4803c..0000000 --- a/Chapter25/onlineStore/storage/app/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!public/ -!.gitignore diff --git a/Chapter25/onlineStore/storage/app/public/.gitignore b/Chapter25/onlineStore/storage/app/public/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter25/onlineStore/storage/app/public/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter25/onlineStore/storage/framework/.gitignore b/Chapter25/onlineStore/storage/framework/.gitignore deleted file mode 100644 index 05c4471..0000000 --- a/Chapter25/onlineStore/storage/framework/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -compiled.php -config.php -down -events.scanned.php -maintenance.php -routes.php -routes.scanned.php -schedule-* -services.json diff --git a/Chapter25/onlineStore/storage/framework/cache/.gitignore b/Chapter25/onlineStore/storage/framework/cache/.gitignore deleted file mode 100644 index 01e4a6c..0000000 --- a/Chapter25/onlineStore/storage/framework/cache/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!data/ -!.gitignore diff --git a/Chapter25/onlineStore/storage/framework/cache/data/.gitignore b/Chapter25/onlineStore/storage/framework/cache/data/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter25/onlineStore/storage/framework/cache/data/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter25/onlineStore/storage/framework/sessions/.gitignore b/Chapter25/onlineStore/storage/framework/sessions/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter25/onlineStore/storage/framework/sessions/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter25/onlineStore/storage/framework/testing/.gitignore b/Chapter25/onlineStore/storage/framework/testing/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter25/onlineStore/storage/framework/testing/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter25/onlineStore/storage/framework/views/.gitignore b/Chapter25/onlineStore/storage/framework/views/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter25/onlineStore/storage/framework/views/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter25/onlineStore/storage/logs/.gitignore b/Chapter25/onlineStore/storage/logs/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter25/onlineStore/storage/logs/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter25/onlineStore/tests/CreatesApplication.php b/Chapter25/onlineStore/tests/CreatesApplication.php deleted file mode 100644 index 547152f..0000000 --- a/Chapter25/onlineStore/tests/CreatesApplication.php +++ /dev/null @@ -1,22 +0,0 @@ -make(Kernel::class)->bootstrap(); - - return $app; - } -} diff --git a/Chapter25/onlineStore/tests/Feature/ExampleTest.php b/Chapter25/onlineStore/tests/Feature/ExampleTest.php deleted file mode 100644 index 78ccc21..0000000 --- a/Chapter25/onlineStore/tests/Feature/ExampleTest.php +++ /dev/null @@ -1,21 +0,0 @@ -get('/'); - - $response->assertStatus(200); - } -} diff --git a/Chapter25/onlineStore/tests/TestCase.php b/Chapter25/onlineStore/tests/TestCase.php deleted file mode 100644 index 2932d4a..0000000 --- a/Chapter25/onlineStore/tests/TestCase.php +++ /dev/null @@ -1,10 +0,0 @@ -assertTrue(true); - } -} diff --git a/Chapter25/onlineStore/webpack.mix.js b/Chapter25/onlineStore/webpack.mix.js deleted file mode 100644 index 1a2a958..0000000 --- a/Chapter25/onlineStore/webpack.mix.js +++ /dev/null @@ -1,16 +0,0 @@ -const mix = require('laravel-mix'); - -/* - |-------------------------------------------------------------------------- - | Mix Asset Management - |-------------------------------------------------------------------------- - | - | Mix provides a clean, fluent API for defining some Webpack build steps - | for your Laravel application. By default, we are compiling the Sass - | file for the application as well as bundling up all the JS files. - | - */ - -mix.js('resources/js/app.js', 'public/js') - .sass('resources/sass/app.scss', 'public/css') - .sourceMaps(); diff --git a/Chapter26/onlineStore/.editorconfig b/Chapter26/onlineStore/.editorconfig deleted file mode 100644 index 1671c9b..0000000 --- a/Chapter26/onlineStore/.editorconfig +++ /dev/null @@ -1,18 +0,0 @@ -root = true - -[*] -charset = utf-8 -end_of_line = lf -insert_final_newline = true -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true - -[*.md] -trim_trailing_whitespace = false - -[*.{yml,yaml}] -indent_size = 2 - -[docker-compose.yml] -indent_size = 4 diff --git a/Chapter26/onlineStore/.env.example b/Chapter26/onlineStore/.env.example deleted file mode 100644 index 8510237..0000000 --- a/Chapter26/onlineStore/.env.example +++ /dev/null @@ -1,52 +0,0 @@ -APP_NAME=Laravel -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=laravel -DB_USERNAME=root -DB_PASSWORD= - -BROADCAST_DRIVER=log -CACHE_DRIVER=file -FILESYSTEM_DISK=local -QUEUE_CONNECTION=sync -SESSION_DRIVER=file -SESSION_LIFETIME=120 - -MEMCACHED_HOST=127.0.0.1 - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -MAIL_MAILER=smtp -MAIL_HOST=mailhog -MAIL_PORT=1025 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS=null -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_APP_CLUSTER=mt1 - -MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/Chapter26/onlineStore/.gitattributes b/Chapter26/onlineStore/.gitattributes deleted file mode 100644 index 510d996..0000000 --- a/Chapter26/onlineStore/.gitattributes +++ /dev/null @@ -1,10 +0,0 @@ -* text=auto - -*.blade.php diff=html -*.css diff=css -*.html diff=html -*.md diff=markdown -*.php diff=php - -/.github export-ignore -CHANGELOG.md export-ignore diff --git a/Chapter26/onlineStore/.gitignore b/Chapter26/onlineStore/.gitignore deleted file mode 100644 index eb003b0..0000000 --- a/Chapter26/onlineStore/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -/node_modules -/public/hot -/public/storage -/storage/*.key -/vendor -.env -.env.backup -.phpunit.result.cache -docker-compose.override.yml -Homestead.json -Homestead.yaml -npm-debug.log -yarn-error.log -/.idea -/.vscode diff --git a/Chapter26/onlineStore/.styleci.yml b/Chapter26/onlineStore/.styleci.yml deleted file mode 100644 index 679a631..0000000 --- a/Chapter26/onlineStore/.styleci.yml +++ /dev/null @@ -1,13 +0,0 @@ -php: - preset: laravel - version: 8 - disabled: - - no_unused_imports - finder: - not-name: - - index.php -js: - finder: - not-name: - - webpack.mix.js -css: true diff --git a/Chapter26/onlineStore/README.md b/Chapter26/onlineStore/README.md deleted file mode 100644 index f171eca..0000000 --- a/Chapter26/onlineStore/README.md +++ /dev/null @@ -1,64 +0,0 @@ -

    - -

    -Build Status -Total Downloads -Latest Stable Version -License -

    - -## About Laravel - -Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as: - -- [Simple, fast routing engine](https://laravel.com/docs/routing). -- [Powerful dependency injection container](https://laravel.com/docs/container). -- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage. -- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent). -- Database agnostic [schema migrations](https://laravel.com/docs/migrations). -- [Robust background job processing](https://laravel.com/docs/queues). -- [Real-time event broadcasting](https://laravel.com/docs/broadcasting). - -Laravel is accessible, powerful, and provides tools required for large, robust applications. - -## Learning Laravel - -Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework. - -If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 2000 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library. - -## Laravel Sponsors - -We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell). - -### Premium Partners - -- **[Vehikl](https://vehikl.com/)** -- **[Tighten Co.](https://tighten.co)** -- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** -- **[64 Robots](https://64robots.com)** -- **[Cubet Techno Labs](https://cubettech.com)** -- **[Cyber-Duck](https://cyber-duck.co.uk)** -- **[Many](https://www.many.co.uk)** -- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)** -- **[DevSquad](https://devsquad.com)** -- **[Curotec](https://www.curotec.com/services/technologies/laravel/)** -- **[OP.GG](https://op.gg)** -- **[WebReinvent](https://webreinvent.com/?utm_source=laravel&utm_medium=github&utm_campaign=patreon-sponsors)** -- **[Lendio](https://lendio.com)** - -## Contributing - -Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions). - -## Code of Conduct - -In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). - -## Security Vulnerabilities - -If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed. - -## License - -The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). diff --git a/Chapter26/onlineStore/app/Console/Kernel.php b/Chapter26/onlineStore/app/Console/Kernel.php deleted file mode 100644 index d8bc1d2..0000000 --- a/Chapter26/onlineStore/app/Console/Kernel.php +++ /dev/null @@ -1,32 +0,0 @@ -command('inspire')->hourly(); - } - - /** - * Register the commands for the application. - * - * @return void - */ - protected function commands() - { - $this->load(__DIR__.'/Commands'); - - require base_path('routes/console.php'); - } -} diff --git a/Chapter26/onlineStore/app/Exceptions/Handler.php b/Chapter26/onlineStore/app/Exceptions/Handler.php deleted file mode 100644 index 8e7fbd1..0000000 --- a/Chapter26/onlineStore/app/Exceptions/Handler.php +++ /dev/null @@ -1,41 +0,0 @@ -> - */ - protected $dontReport = [ - // - ]; - - /** - * A list of the inputs that are never flashed for validation exceptions. - * - * @var array - */ - protected $dontFlash = [ - 'current_password', - 'password', - 'password_confirmation', - ]; - - /** - * Register the exception handling callbacks for the application. - * - * @return void - */ - public function register() - { - $this->reportable(function (Throwable $e) { - // - }); - } -} diff --git a/Chapter26/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php b/Chapter26/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php deleted file mode 100644 index cd78cb3..0000000 --- a/Chapter26/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php +++ /dev/null @@ -1,16 +0,0 @@ -with("viewData", $viewData); - } -} diff --git a/Chapter26/onlineStore/app/Http/Controllers/Admin/AdminProductController.php b/Chapter26/onlineStore/app/Http/Controllers/Admin/AdminProductController.php deleted file mode 100644 index d1c6c52..0000000 --- a/Chapter26/onlineStore/app/Http/Controllers/Admin/AdminProductController.php +++ /dev/null @@ -1,79 +0,0 @@ -with("viewData", $viewData); - } - - public function store(Request $request) - { - Product::validate($request); - - $newProduct = new Product(); - $newProduct->setName($request->input('name')); - $newProduct->setDescription($request->input('description')); - $newProduct->setPrice($request->input('price')); - $newProduct->setImage("game.png"); - $newProduct->save(); - - if ($request->hasFile('image')) { - $imageName = $newProduct->getId().".".$request->file('image')->extension(); - Storage::disk('public')->put( - $imageName, - file_get_contents($request->file('image')->getRealPath()) - ); - $newProduct->setImage($imageName); - $newProduct->save(); - } - - return back(); - } - - public function delete($id) - { - Product::destroy($id); - return back(); - } - - public function edit($id) - { - $viewData = []; - $viewData["title"] = "Admin Page - Edit Product - Online Store"; - $viewData["product"] = Product::findOrFail($id); - return view('admin.product.edit')->with("viewData", $viewData); - } - - public function update(Request $request, $id) - { - Product::validate($request); - - $product = Product::findOrFail($id); - $product->setName($request->input('name')); - $product->setDescription($request->input('description')); - $product->setPrice($request->input('price')); - - if ($request->hasFile('image')) { - $imageName = $product->getId().".".$request->file('image')->extension(); - Storage::disk('public')->put( - $imageName, - file_get_contents($request->file('image')->getRealPath()) - ); - $product->setImage($imageName); - } - - $product->save(); - return redirect()->route('admin.product.index'); - } -} diff --git a/Chapter26/onlineStore/app/Http/Controllers/Auth/ConfirmPasswordController.php b/Chapter26/onlineStore/app/Http/Controllers/Auth/ConfirmPasswordController.php deleted file mode 100644 index 138c1f0..0000000 --- a/Chapter26/onlineStore/app/Http/Controllers/Auth/ConfirmPasswordController.php +++ /dev/null @@ -1,40 +0,0 @@ -middleware('auth'); - } -} diff --git a/Chapter26/onlineStore/app/Http/Controllers/Auth/ForgotPasswordController.php b/Chapter26/onlineStore/app/Http/Controllers/Auth/ForgotPasswordController.php deleted file mode 100644 index 465c39c..0000000 --- a/Chapter26/onlineStore/app/Http/Controllers/Auth/ForgotPasswordController.php +++ /dev/null @@ -1,22 +0,0 @@ -middleware('guest')->except('logout'); - } -} diff --git a/Chapter26/onlineStore/app/Http/Controllers/Auth/RegisterController.php b/Chapter26/onlineStore/app/Http/Controllers/Auth/RegisterController.php deleted file mode 100644 index 87e3a82..0000000 --- a/Chapter26/onlineStore/app/Http/Controllers/Auth/RegisterController.php +++ /dev/null @@ -1,74 +0,0 @@ -middleware('guest'); - } - - /** - * Get a validator for an incoming registration request. - * - * @param array $data - * @return \Illuminate\Contracts\Validation\Validator - */ - protected function validator(array $data) - { - return Validator::make($data, [ - 'name' => ['required', 'string', 'max:255'], - 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], - 'password' => ['required', 'string', 'min:8', 'confirmed'], - ]); - } - - /** - * Create a new user instance after a valid registration. - * - * @param array $data - * @return \App\Models\User - */ - protected function create(array $data) - { - return User::create([ - 'name' => $data['name'], - 'email' => $data['email'], - 'password' => Hash::make($data['password']), - 'balance' => 5000, - ]); - } -} diff --git a/Chapter26/onlineStore/app/Http/Controllers/Auth/ResetPasswordController.php b/Chapter26/onlineStore/app/Http/Controllers/Auth/ResetPasswordController.php deleted file mode 100644 index b1726a3..0000000 --- a/Chapter26/onlineStore/app/Http/Controllers/Auth/ResetPasswordController.php +++ /dev/null @@ -1,30 +0,0 @@ -middleware('auth'); - $this->middleware('signed')->only('verify'); - $this->middleware('throttle:6,1')->only('verify', 'resend'); - } -} diff --git a/Chapter26/onlineStore/app/Http/Controllers/CartController.php b/Chapter26/onlineStore/app/Http/Controllers/CartController.php deleted file mode 100644 index 87122bc..0000000 --- a/Chapter26/onlineStore/app/Http/Controllers/CartController.php +++ /dev/null @@ -1,43 +0,0 @@ -session()->get("products"); - if ($productsInSession) { - $productsInCart = Product::findMany(array_keys($productsInSession)); - $total = Product::sumPricesByQuantities($productsInCart, $productsInSession); - } - - $viewData = []; - $viewData["title"] = "Cart - Online Store"; - $viewData["subtitle"] = "Shopping Cart"; - $viewData["total"] = $total; - $viewData["products"] = $productsInCart; - return view('cart.index')->with("viewData", $viewData); - } - - public function add(Request $request, $id) - { - $products = $request->session()->get("products"); - $products[$id] = $request->input('quantity'); - $request->session()->put('products', $products); - - return redirect()->route('cart.index'); - } - - public function delete(Request $request) - { - $request->session()->forget('products'); - return back(); - } -} diff --git a/Chapter26/onlineStore/app/Http/Controllers/Controller.php b/Chapter26/onlineStore/app/Http/Controllers/Controller.php deleted file mode 100644 index a0a2a8a..0000000 --- a/Chapter26/onlineStore/app/Http/Controllers/Controller.php +++ /dev/null @@ -1,13 +0,0 @@ -with("viewData", $viewData); - } - - public function about() - { - $viewData = []; - $viewData["title"] = "About us - Online Store"; - $viewData["subtitle"] = "About us"; - $viewData["description"] = "This is an about page ..."; - $viewData["author"] = "Developed by: Your Name"; - return view('home.about')->with("viewData", $viewData); - } -} diff --git a/Chapter26/onlineStore/app/Http/Controllers/ProductController.php b/Chapter26/onlineStore/app/Http/Controllers/ProductController.php deleted file mode 100644 index d27a3a3..0000000 --- a/Chapter26/onlineStore/app/Http/Controllers/ProductController.php +++ /dev/null @@ -1,29 +0,0 @@ -with("viewData", $viewData); - } - - public function show($id) - { - $viewData = []; - $product = Product::findOrFail($id); - $viewData["title"] = $product->getName()." - Online Store"; - $viewData["subtitle"] = $product->getName()." - Product information"; - $viewData["product"] = $product; - return view('product.show')->with("viewData", $viewData); - } -} diff --git a/Chapter26/onlineStore/app/Http/Kernel.php b/Chapter26/onlineStore/app/Http/Kernel.php deleted file mode 100644 index c10d1c5..0000000 --- a/Chapter26/onlineStore/app/Http/Kernel.php +++ /dev/null @@ -1,68 +0,0 @@ - - */ - protected $middleware = [ - // \App\Http\Middleware\TrustHosts::class, - \App\Http\Middleware\TrustProxies::class, - \Fruitcake\Cors\HandleCors::class, - \App\Http\Middleware\PreventRequestsDuringMaintenance::class, - \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, - \App\Http\Middleware\TrimStrings::class, - \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, - ]; - - /** - * The application's route middleware groups. - * - * @var array> - */ - protected $middlewareGroups = [ - 'web' => [ - \App\Http\Middleware\EncryptCookies::class, - \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, - \Illuminate\Session\Middleware\StartSession::class, - // \Illuminate\Session\Middleware\AuthenticateSession::class, - \Illuminate\View\Middleware\ShareErrorsFromSession::class, - \App\Http\Middleware\VerifyCsrfToken::class, - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - - 'api' => [ - // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, - 'throttle:api', - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - ]; - - /** - * The application's route middleware. - * - * These middleware may be assigned to groups or used individually. - * - * @var array - */ - protected $routeMiddleware = [ - 'auth' => \App\Http\Middleware\Authenticate::class, - 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::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, - 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, - 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, - 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, - 'admin' => \App\Http\Middleware\AdminAuthMiddleware::class, - ]; -} diff --git a/Chapter26/onlineStore/app/Http/Middleware/AdminAuthMiddleware.php b/Chapter26/onlineStore/app/Http/Middleware/AdminAuthMiddleware.php deleted file mode 100644 index 6e5306b..0000000 --- a/Chapter26/onlineStore/app/Http/Middleware/AdminAuthMiddleware.php +++ /dev/null @@ -1,26 +0,0 @@ -getRole() == 'admin') { - return $next($request); - } else { - return redirect()->route('home.index'); - } - } -} diff --git a/Chapter26/onlineStore/app/Http/Middleware/Authenticate.php b/Chapter26/onlineStore/app/Http/Middleware/Authenticate.php deleted file mode 100644 index 704089a..0000000 --- a/Chapter26/onlineStore/app/Http/Middleware/Authenticate.php +++ /dev/null @@ -1,21 +0,0 @@ -expectsJson()) { - return route('login'); - } - } -} diff --git a/Chapter26/onlineStore/app/Http/Middleware/EncryptCookies.php b/Chapter26/onlineStore/app/Http/Middleware/EncryptCookies.php deleted file mode 100644 index 867695b..0000000 --- a/Chapter26/onlineStore/app/Http/Middleware/EncryptCookies.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter26/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/Chapter26/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php deleted file mode 100644 index 74cbd9a..0000000 --- a/Chapter26/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter26/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php b/Chapter26/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php deleted file mode 100644 index a2813a0..0000000 --- a/Chapter26/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php +++ /dev/null @@ -1,32 +0,0 @@ -check()) { - return redirect(RouteServiceProvider::HOME); - } - } - - return $next($request); - } -} diff --git a/Chapter26/onlineStore/app/Http/Middleware/TrimStrings.php b/Chapter26/onlineStore/app/Http/Middleware/TrimStrings.php deleted file mode 100644 index 88cadca..0000000 --- a/Chapter26/onlineStore/app/Http/Middleware/TrimStrings.php +++ /dev/null @@ -1,19 +0,0 @@ - - */ - protected $except = [ - 'current_password', - 'password', - 'password_confirmation', - ]; -} diff --git a/Chapter26/onlineStore/app/Http/Middleware/TrustHosts.php b/Chapter26/onlineStore/app/Http/Middleware/TrustHosts.php deleted file mode 100644 index 7186414..0000000 --- a/Chapter26/onlineStore/app/Http/Middleware/TrustHosts.php +++ /dev/null @@ -1,20 +0,0 @@ - - */ - public function hosts() - { - return [ - $this->allSubdomainsOfApplicationUrl(), - ]; - } -} diff --git a/Chapter26/onlineStore/app/Http/Middleware/TrustProxies.php b/Chapter26/onlineStore/app/Http/Middleware/TrustProxies.php deleted file mode 100644 index 3391630..0000000 --- a/Chapter26/onlineStore/app/Http/Middleware/TrustProxies.php +++ /dev/null @@ -1,28 +0,0 @@ -|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/Chapter26/onlineStore/app/Http/Middleware/VerifyCsrfToken.php b/Chapter26/onlineStore/app/Http/Middleware/VerifyCsrfToken.php deleted file mode 100644 index 9e86521..0000000 --- a/Chapter26/onlineStore/app/Http/Middleware/VerifyCsrfToken.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter26/onlineStore/app/Models/Item.php b/Chapter26/onlineStore/app/Models/Item.php deleted file mode 100644 index 8d19619..0000000 --- a/Chapter26/onlineStore/app/Models/Item.php +++ /dev/null @@ -1,133 +0,0 @@ -attributes['id'] - int - contains the item primary key (id) - * $this->attributes['quantity'] - int - contains the item quantity - * $this->attributes['price'] - int - contains the item price - * $this->attributes['order_id'] - int - contains the referenced order id - * $this->attributes['product_id'] - int - contains the referenced product id - * $this->attributes['created_at'] - timestamp - contains the item creation date - * $this->attributes['updated_at'] - timestamp - contains the item update date - * $this->order - Order - contains the associated Order - * $this->product - Product - contains the associated Product - */ - - public static function validate($request) - { - $request->validate([ - "price" => "required|numeric|gt:0", - "quantity" => "required|numeric|gt:0", - "product_id" => "required|exists:products,id", - "order_id" => "required|exists:orders,id", - ]); - } - - public function getId() - { - return $this->attributes['id']; - } - - public function setId($id) - { - $this->attributes['id'] = $id; - } - - public function getQuantity() - { - return $this->attributes['quantity']; - } - - public function setQuantity($quantity) - { - $this->attributes['quantity'] = $quantity; - } - - public function getPrice() - { - return $this->attributes['price']; - } - - public function setPrice($price) - { - $this->attributes['price'] = $price; - } - - public function getOrderId() - { - return $this->attributes['order_id']; - } - - public function setOrderId($orderId) - { - $this->attributes['order_id'] = $orderId; - } - - public function getProductId() - { - return $this->attributes['product_id']; - } - - public function setProductId($productId) - { - $this->attributes['product_id'] = $productId; - } - - public function getCreatedAt() - { - return $this->attributes['created_at']; - } - - public function setCreatedAt($createdAt) - { - $this->attributes['created_at'] = $createdAt; - } - - public function getUpdatedAt() - { - return $this->attributes['updated_at']; - } - - public function setUpdatedAt($updatedAt) - { - $this->attributes['updated_at'] = $updatedAt; - } - - public function order() - { - return $this->belongsTo(Order::class); - } - - public function getOrder() - { - return $this->order; - } - - public function setOrder($order) - { - $this->order = $order; - } - - public function product() - { - return $this->belongsTo(Product::class); - } - - public function getProduct() - { - return $this->product; - } - - public function setProduct($product) - { - $this->product = $product; - } -} diff --git a/Chapter26/onlineStore/app/Models/Order.php b/Chapter26/onlineStore/app/Models/Order.php deleted file mode 100644 index 28ce6ad..0000000 --- a/Chapter26/onlineStore/app/Models/Order.php +++ /dev/null @@ -1,109 +0,0 @@ -attributes['id'] - int - contains the order primary key (id) - * $this->attributes['total'] - string - contains the order name - * $this->attributes['user_id'] - int - contains the referenced user id - * $this->attributes['created_at'] - timestamp - contains the order creation date - * $this->attributes['updated_at'] - timestamp - contains the order update date - * $this->user - User - contains the associated User - * $this->items - Item[] - contains the associated items - */ - - public static function validate($request) - { - $request->validate([ - "total" => "required|numeric", - "user_id" => "required|exists:users,id", - ]); - } - - public function getId() - { - return $this->attributes['id']; - } - - public function setId($id) - { - $this->attributes['id'] = $id; - } - - public function getTotal() - { - return $this->attributes['total']; - } - - public function setTotal($total) - { - $this->attributes['total'] = $total; - } - - public function getUserId() - { - return $this->attributes['user_id']; - } - - public function setUserId($userId) - { - $this->attributes['user_id'] = $userId; - } - - public function getCreatedAt() - { - return $this->attributes['created_at']; - } - - public function setCreatedAt($createdAt) - { - $this->attributes['created_at'] = $createdAt; - } - - public function getUpdatedAt() - { - return $this->attributes['updated_at']; - } - - public function setUpdatedAt($updatedAt) - { - $this->attributes['updated_at'] = $updatedAt; - } - - public function user() - { - return $this->belongsTo(User::class); - } - - public function getUser() - { - return $this->user; - } - - public function setUser($user) - { - $this->user = $user; - } - - public function items() - { - return $this->hasMany(Item::class); - } - - public function getItems() - { - return $this->items; - } - - public function setItems($items) - { - $this->items = $items; - } -} diff --git a/Chapter26/onlineStore/app/Models/Product.php b/Chapter26/onlineStore/app/Models/Product.php deleted file mode 100644 index fb8585a..0000000 --- a/Chapter26/onlineStore/app/Models/Product.php +++ /dev/null @@ -1,126 +0,0 @@ -attributes['id'] - int - contains the product primary key (id) - * $this->attributes['name'] - string - contains the product name - * $this->attributes['description'] - string - contains the product description - * $this->attributes['image'] - string - contains the product image - * $this->attributes['price'] - int - contains the product price - * $this->attributes['created_at'] - timestamp - contains the product creation date - * $this->attributes['updated_at'] - timestamp - contains the product update date - * $this->items - Item[] - contains the associated items - */ - - public static function validate($request) - { - $request->validate([ - "name" => "required|max:255", - "description" => "required", - "price" => "required|numeric|gt:0", - 'image' => 'image', - ]); - } - - public static function sumPricesByQuantities($products, $productsInSession) - { - $total = 0; - foreach ($products as $product) { - $total = $total + ($product->getPrice()*$productsInSession[$product->getId()]); - } - - return $total; - } - - public function getId() - { - return $this->attributes['id']; - } - - public function setId($id) - { - $this->attributes['id'] = $id; - } - - public function getName() - { - return $this->attributes['name']; - } - - public function setName($name) - { - $this->attributes['name'] = $name; - } - - public function getDescription() - { - return $this->attributes['description']; - } - - public function setDescription($description) - { - $this->attributes['description'] = $description; - } - - public function getImage() - { - return $this->attributes['image']; - } - - public function setImage($image) - { - $this->attributes['image'] = $image; - } - - public function getPrice() - { - return $this->attributes['price']; - } - - public function setPrice($price) - { - $this->attributes['price'] = $price; - } - - public function getCreatedAt() - { - return $this->attributes['created_at']; - } - - public function setCreatedAt($createdAt) - { - $this->attributes['created_at'] = $createdAt; - } - - public function getUpdatedAt() - { - return $this->attributes['updated_at']; - } - - public function setUpdatedAt($updatedAt) - { - $this->attributes['updated_at'] = $updatedAt; - } - - public function items() - { - return $this->hasMany(Item::class); - } - - public function getItems() - { - return $this->items; - } - - public function setItems($items) - { - $this->items = $items; - } -} diff --git a/Chapter26/onlineStore/app/Models/User.php b/Chapter26/onlineStore/app/Models/User.php deleted file mode 100644 index 89aa45f..0000000 --- a/Chapter26/onlineStore/app/Models/User.php +++ /dev/null @@ -1,156 +0,0 @@ -attributes['id'] - int - contains the user primary key (id) - * $this->attributes['name'] - string - contains the user name - * $this->attributes['email'] - string - contains the user email - * $this->attributes['email_verified_at'] - timestamp - contains the user email verification date - * $this->attributes['password'] - string - contains the user password - * $this->attributes['remember_token'] - string - contains the user password - * $this->attributes['role'] - string - contains the user role (client or admin) - * $this->attributes['balance'] - int - contains the user balance - * $this->attributes['created_at'] - timestamp - contains the user creation date - * $this->attributes['updated_at'] - timestamp - contains the user update date - * $this->orders - Order[] - contains the associated orders - */ - - /** - * The attributes that are mass assignable. - * - * @var array - */ - protected $fillable = [ - 'name', - 'email', - 'password', - 'balance', - ]; - - /** - * 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', - ]; - - public function getId() - { - return $this->attributes['id']; - } - - public function setId($id) - { - $this->attributes['id'] = $id; - } - - public function getName() - { - return $this->attributes['name']; - } - - public function setName($name) - { - $this->attributes['name'] = $name; - } - - public function getEmail() - { - return $this->attributes['email']; - } - - public function setEmail($email) - { - $this->attributes['email'] = $email; - } - - public function getPassword() - { - return $this->attributes['password']; - } - - public function setPassword($password) - { - $this->attributes['password'] = $password; - } - - public function getRole() - { - return $this->attributes['role']; - } - - public function setRole($role) - { - $this->attributes['role'] = $role; - } - - public function getBalance() - { - return $this->attributes['balance']; - } - - public function setBalance($balance) - { - $this->attributes['balance'] = $balance; - } - - public function getCreatedAt() - { - return $this->attributes['created_at']; - } - - public function setCreatedAt($createdAt) - { - $this->attributes['created_at'] = $createdAt; - } - - public function getUpdatedAt() - { - return $this->attributes['updated_at']; - } - - public function setUpdatedAt($updatedAt) - { - $this->attributes['updated_at'] = $updatedAt; - } - - public function orders() - { - return $this->hasMany(Order::class); - } - - public function getOrders() - { - return $this->orders; - } - - public function setOrders($orders) - { - $this->orders = $orders; - } -} diff --git a/Chapter26/onlineStore/app/Providers/AppServiceProvider.php b/Chapter26/onlineStore/app/Providers/AppServiceProvider.php deleted file mode 100644 index ee8ca5b..0000000 --- a/Chapter26/onlineStore/app/Providers/AppServiceProvider.php +++ /dev/null @@ -1,28 +0,0 @@ - - */ - protected $policies = [ - // 'App\Models\Model' => 'App\Policies\ModelPolicy', - ]; - - /** - * Register any authentication / authorization services. - * - * @return void - */ - public function boot() - { - $this->registerPolicies(); - - // - } -} diff --git a/Chapter26/onlineStore/app/Providers/BroadcastServiceProvider.php b/Chapter26/onlineStore/app/Providers/BroadcastServiceProvider.php deleted file mode 100644 index 395c518..0000000 --- a/Chapter26/onlineStore/app/Providers/BroadcastServiceProvider.php +++ /dev/null @@ -1,21 +0,0 @@ -> - */ - protected $listen = [ - Registered::class => [ - SendEmailVerificationNotification::class, - ], - ]; - - /** - * Register any events for your application. - * - * @return void - */ - public function boot() - { - // - } -} diff --git a/Chapter26/onlineStore/app/Providers/RouteServiceProvider.php b/Chapter26/onlineStore/app/Providers/RouteServiceProvider.php deleted file mode 100644 index fb766eb..0000000 --- a/Chapter26/onlineStore/app/Providers/RouteServiceProvider.php +++ /dev/null @@ -1,63 +0,0 @@ -configureRateLimiting(); - - $this->routes(function () { - Route::prefix('api') - ->middleware('api') - ->namespace($this->namespace) - ->group(base_path('routes/api.php')); - - Route::middleware('web') - ->namespace($this->namespace) - ->group(base_path('routes/web.php')); - }); - } - - /** - * Configure the rate limiters for the application. - * - * @return void - */ - protected function configureRateLimiting() - { - RateLimiter::for('api', function (Request $request) { - return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); - }); - } -} diff --git a/Chapter26/onlineStore/artisan b/Chapter26/onlineStore/artisan deleted file mode 100644 index 67a3329..0000000 --- a/Chapter26/onlineStore/artisan +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env php -make(Illuminate\Contracts\Console\Kernel::class); - -$status = $kernel->handle( - $input = new Symfony\Component\Console\Input\ArgvInput, - new Symfony\Component\Console\Output\ConsoleOutput -); - -/* -|-------------------------------------------------------------------------- -| Shutdown The Application -|-------------------------------------------------------------------------- -| -| Once Artisan has finished running, we will fire off the shutdown events -| so that any final work may be done by the application before we shut -| down the process. This is the last thing to happen to the request. -| -*/ - -$kernel->terminate($input, $status); - -exit($status); diff --git a/Chapter26/onlineStore/bootstrap/app.php b/Chapter26/onlineStore/bootstrap/app.php deleted file mode 100644 index 037e17d..0000000 --- a/Chapter26/onlineStore/bootstrap/app.php +++ /dev/null @@ -1,55 +0,0 @@ -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/Chapter26/onlineStore/bootstrap/cache/.gitignore b/Chapter26/onlineStore/bootstrap/cache/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter26/onlineStore/bootstrap/cache/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter26/onlineStore/composer.json b/Chapter26/onlineStore/composer.json deleted file mode 100644 index a9459b5..0000000 --- a/Chapter26/onlineStore/composer.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "name": "laravel/laravel", - "type": "project", - "description": "The Laravel Framework.", - "keywords": ["framework", "laravel"], - "license": "MIT", - "require": { - "php": "^8.0", - "fruitcake/laravel-cors": "^2.0.5", - "guzzlehttp/guzzle": "^7.2", - "laravel/framework": "^9.0", - "laravel/sanctum": "^2.14", - "laravel/tinker": "^2.7", - "laravel/ui": "^3.4" - }, - "require-dev": { - "fakerphp/faker": "^1.9.1", - "laravel/sail": "^1.0.1", - "mockery/mockery": "^1.4.4", - "nunomaduro/collision": "^6.1", - "phpunit/phpunit": "^9.5.10", - "spatie/laravel-ignition": "^1.0", - "squizlabs/php_codesniffer": "^3.6" - }, - "autoload": { - "psr-4": { - "App\\": "app/", - "Database\\Factories\\": "database/factories/", - "Database\\Seeders\\": "database/seeders/" - } - }, - "autoload-dev": { - "psr-4": { - "Tests\\": "tests/" - } - }, - "scripts": { - "post-autoload-dump": [ - "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", - "@php artisan package:discover --ansi" - ], - "post-update-cmd": [ - "@php artisan vendor:publish --tag=laravel-assets --ansi --force" - ], - "post-root-package-install": [ - "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" - ], - "post-create-project-cmd": [ - "@php artisan key:generate --ansi" - ] - }, - "extra": { - "laravel": { - "dont-discover": [] - } - }, - "config": { - "optimize-autoloader": true, - "preferred-install": "dist", - "sort-packages": true - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/Chapter26/onlineStore/composer.lock b/Chapter26/onlineStore/composer.lock deleted file mode 100644 index 78c86f1..0000000 --- a/Chapter26/onlineStore/composer.lock +++ /dev/null @@ -1,7921 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "d299b51f0f07ec600b4949240f4664af", - "packages": [ - { - "name": "asm89/stack-cors", - "version": "v2.1.1", - "source": { - "type": "git", - "url": "https://github.com/asm89/stack-cors.git", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4|^5|^6" - }, - "require-dev": { - "phpunit/phpunit": "^7|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "psr-4": { - "Asm89\\Stack\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alexander", - "email": "iam.asm89@gmail.com" - } - ], - "description": "Cross-origin resource sharing library and stack middleware", - "homepage": "https://github.com/asm89/stack-cors", - "keywords": [ - "cors", - "stack" - ], - "support": { - "issues": "https://github.com/asm89/stack-cors/issues", - "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" - }, - "time": "2022-01-18T09:12:03+00:00" - }, - { - "name": "brick/math", - "version": "0.9.3", - "source": { - "type": "git", - "url": "https://github.com/brick/math.git", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", - "vimeo/psalm": "4.9.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Brick\\Math\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Arbitrary-precision arithmetic library", - "keywords": [ - "Arbitrary-precision", - "BigInteger", - "BigRational", - "arithmetic", - "bigdecimal", - "bignum", - "brick", - "math" - ], - "support": { - "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.9.3" - }, - "funding": [ - { - "url": "https://github.com/BenMorel", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/brick/math", - "type": "tidelift" - } - ], - "time": "2021-08-15T20:50:18+00:00" - }, - { - "name": "dflydev/dot-access-data", - "version": "v3.0.1", - "source": { - "type": "git", - "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c", - "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": "^3.14" - }, - "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.1" - }, - "time": "2021-08-13T13:06:58+00:00" - }, - { - "name": "doctrine/inflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "vimeo/psalm": "^4.10" - }, - "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.4" - }, - "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": "2021-10-22T20:16:43+00:00" - }, - { - "name": "doctrine/lexer", - "version": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" - } - }, - "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/1.2.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%2Flexer", - "type": "tidelift" - } - ], - "time": "2022-01-12T08:27:12+00:00" - }, - { - "name": "dragonmantank/cron-expression", - "version": "v3.3.1", - "source": { - "type": "git", - "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "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.1" - }, - "funding": [ - { - "url": "https://github.com/dragonmantank", - "type": "github" - } - ], - "time": "2022-01-18T15:43:28+00:00" - }, - { - "name": "egulias/email-validator", - "version": "3.1.2", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ee0db30118f661fb166bcffbf5d82032df484697", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^1.2", - "php": ">=7.2", - "symfony/polyfill-intl-idn": "^1.15" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^8.5.8|^9.3.3", - "vimeo/psalm": "^4" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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/3.1.2" - }, - "funding": [ - { - "url": "https://github.com/egulias", - "type": "github" - } - ], - "time": "2021-10-11T09:18:27+00:00" - }, - { - "name": "fruitcake/laravel-cors", - "version": "v2.0.5", - "source": { - "type": "git", - "url": "https://github.com/fruitcake/laravel-cors.git", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "shasum": "" - }, - "require": { - "asm89/stack-cors": "^2.0.1", - "illuminate/contracts": "^6|^7|^8|^9", - "illuminate/support": "^6|^7|^8|^9", - "php": ">=7.2", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4.3.4|^5|^6" - }, - "require-dev": { - "laravel/framework": "^6|^7.24|^8", - "orchestra/testbench-dusk": "^4|^5|^6|^7", - "phpunit/phpunit": "^6|^7|^8|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - }, - "laravel": { - "providers": [ - "Fruitcake\\Cors\\CorsServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Fruitcake\\Cors\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fruitcake", - "homepage": "https://fruitcake.nl" - }, - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", - "keywords": [ - "api", - "cors", - "crossdomain", - "laravel" - ], - "support": { - "issues": "https://github.com/fruitcake/laravel-cors/issues", - "source": "https://github.com/fruitcake/laravel-cors/tree/v2.0.5" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "time": "2022-01-03T14:53:04+00:00" - }, - { - "name": "graham-campbell/result-type", - "version": "v1.0.4", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "0690bde05318336c7221785f2a932467f98b64ca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/0690bde05318336c7221785f2a932467f98b64ca", - "reference": "0690bde05318336c7221785f2a932467f98b64ca", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "phpoption/phpoption": "^1.8" - }, - "require-dev": { - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", - "type": "tidelift" - } - ], - "time": "2021-11-21T21:41:47+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "7.4.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.8.3 || ^2.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.4.1", - "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.5 || ^9.3.5", - "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": { - "branch-alias": { - "dev-master": "7.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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.4.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": "2021-12-06T18:43:05+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "1.5.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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/1.5.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "time": "2021-10-22T20:56:57+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.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.4.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.8 || ^9.3.10" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "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.1.0" - }, - "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": "2021-10-06T17:43:30+00:00" - }, - { - "name": "laravel/framework", - "version": "v9.0.1", - "source": { - "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "shasum": "" - }, - "require": { - "doctrine/inflector": "^2.0", - "dragonmantank/cron-expression": "^3.1", - "egulias/email-validator": "^3.1", - "ext-mbstring": "*", - "ext-openssl": "*", - "laravel/serializable-closure": "^1.0", - "league/commonmark": "^2.2", - "league/flysystem": "^3.0", - "monolog/monolog": "^2.0", - "nesbot/carbon": "^2.53.1", - "php": "^8.0.2", - "psr/container": "^1.1.1|^2.0.1", - "psr/log": "^1.0|^2.0|^3.0", - "psr/simple-cache": "^1.0|^2.0|^3.0", - "ramsey/uuid": "^4.2.2", - "symfony/console": "^6.0", - "symfony/error-handler": "^6.0", - "symfony/finder": "^6.0", - "symfony/http-foundation": "^6.0", - "symfony/http-kernel": "^6.0", - "symfony/mailer": "^6.0", - "symfony/mime": "^6.0", - "symfony/process": "^6.0", - "symfony/routing": "^6.0", - "symfony/var-dumper": "^6.0", - "tijsverkoyen/css-to-inline-styles": "^2.2.2", - "vlucas/phpdotenv": "^5.4.1", - "voku/portable-ascii": "^2.0" - }, - "conflict": { - "tightenco/collect": "<5.5.33" - }, - "provide": { - "psr/container-implementation": "1.1|2.0", - "psr/simple-cache-implementation": "1.0|2.0|3.0" - }, - "replace": { - "illuminate/auth": "self.version", - "illuminate/broadcasting": "self.version", - "illuminate/bus": "self.version", - "illuminate/cache": "self.version", - "illuminate/collections": "self.version", - "illuminate/conditionable": "self.version", - "illuminate/config": "self.version", - "illuminate/console": "self.version", - "illuminate/container": "self.version", - "illuminate/contracts": "self.version", - "illuminate/cookie": "self.version", - "illuminate/database": "self.version", - "illuminate/encryption": "self.version", - "illuminate/events": "self.version", - "illuminate/filesystem": "self.version", - "illuminate/hashing": "self.version", - "illuminate/http": "self.version", - "illuminate/log": "self.version", - "illuminate/macroable": "self.version", - "illuminate/mail": "self.version", - "illuminate/notifications": "self.version", - "illuminate/pagination": "self.version", - "illuminate/pipeline": "self.version", - "illuminate/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": { - "aws/aws-sdk-php": "^3.198.1", - "doctrine/dbal": "^2.13.3|^3.1.4", - "fakerphp/faker": "^1.9.2", - "guzzlehttp/guzzle": "^7.2", - "league/flysystem-aws-s3-v3": "^3.0", - "league/flysystem-ftp": "^3.0", - "league/flysystem-sftp-v3": "^3.0", - "mockery/mockery": "^1.4.4", - "orchestra/testbench-core": "^7.0", - "pda/pheanstalk": "^4.0", - "phpstan/phpstan": "^1.0", - "phpunit/phpunit": "^9.5.8", - "predis/predis": "^1.1.9", - "symfony/amazon-mailer": "^6.0", - "symfony/cache": "^6.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.198.1).", - "brianium/paratest": "Required to run tests in parallel (^6.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", - "ext-bcmath": "Required to use the multiple_of validation rule.", - "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.", - "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.2).", - "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-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", - "mockery/mockery": "Required to use mocking (^1.4.4).", - "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).", - "predis/predis": "Required to use the predis connector (^1.1.9).", - "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.0).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^6.0).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.0).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.0).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.0).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.x-dev" - } - }, - "autoload": { - "files": [ - "src/Illuminate/Collections/helpers.php", - "src/Illuminate/Events/functions.php", - "src/Illuminate/Foundation/helpers.php", - "src/Illuminate/Support/helpers.php" - ], - "psr-4": { - "Illuminate\\": "src/Illuminate/", - "Illuminate\\Support\\": [ - "src/Illuminate/Macroable/", - "src/Illuminate/Collections/", - "src/Illuminate/Conditionable/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Laravel Framework.", - "homepage": "https://laravel.com", - "keywords": [ - "framework", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2022-02-09T15:00:05+00:00" - }, - { - "name": "laravel/sanctum", - "version": "v2.14.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/sanctum.git", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/0647a87140c7522e75826cffcadb3ad6e01f71e9", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/contracts": "^6.9|^7.0|^8.0|^9.0", - "illuminate/database": "^6.9|^7.0|^8.0|^9.0", - "illuminate/support": "^6.9|^7.0|^8.0|^9.0", - "php": "^7.2|^8.0" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0", - "phpunit/phpunit": "^8.0|^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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": "2022-01-12T15:07:43+00:00" - }, - { - "name": "laravel/serializable-closure", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/serializable-closure.git", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/65c9faf50d567b65d81764a44526545689e3fe63", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "pestphp/pest": "^1.18", - "phpstan/phpstan": "^0.12.98", - "symfony/var-dumper": "^5.3" - }, - "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": "2022-02-01T16:29:39+00:00" - }, - { - "name": "laravel/tinker", - "version": "v2.7.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/tinker.git", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/5f2f9815b7631b9f586a3de7933c25f9327d4073", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073", - "shasum": "" - }, - "require": { - "illuminate/console": "^6.0|^7.0|^8.0|^9.0", - "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.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", - "phpunit/phpunit": "^8.5.8|^9.3.3" - }, - "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.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.7.0" - }, - "time": "2022-01-10T08:52:49+00:00" - }, - { - "name": "laravel/ui", - "version": "v3.4.3", - "source": { - "type": "git", - "url": "https://github.com/laravel/ui.git", - "reference": "64a0f43492c00780b2261c56cd7007a4f370d95b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/ui/zipball/64a0f43492c00780b2261c56cd7007a4f370d95b", - "reference": "64a0f43492c00780b2261c56cd7007a4f370d95b", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.42|^9.0", - "illuminate/filesystem": "^8.42|^9.0", - "illuminate/support": "^8.82|^9.0", - "illuminate/validation": "^8.42|^9.0", - "php": "^7.3|^8.0" - }, - "require-dev": { - "orchestra/testbench": "^6.23|^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - }, - "laravel": { - "providers": [ - "Laravel\\Ui\\UiServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Laravel\\Ui\\": "src/", - "Illuminate\\Foundation\\Auth\\": "auth-backend/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "Laravel UI utilities and presets.", - "keywords": [ - "laravel", - "ui" - ], - "support": { - "source": "https://github.com/laravel/ui/tree/v3.4.3" - }, - "time": "2022-02-08T14:19:32+00:00" - }, - { - "name": "league/commonmark", - "version": "2.2.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/commonmark.git", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "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.15" - }, - "require-dev": { - "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.0", - "commonmark/commonmark.js": "0.30.0", - "composer/package-versions-deprecated": "^1.8", - "erusev/parsedown": "^1.0", - "ext-json": "*", - "github/gfm": "0.29.0", - "michelf/php-markdown": "^1.4", - "phpstan/phpstan": "^0.12.88 || ^1.0.0", - "phpunit/phpunit": "^9.5.5", - "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", - "unleashedtech/php-coding-standard": "^3.1", - "vimeo/psalm": "^4.7.3" - }, - "suggest": { - "symfony/yaml": "v2.3+ required if using the Front Matter extension" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.3-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": "2022-01-25T14:37:33+00:00" - }, - { - "name": "league/config", - "version": "v1.1.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/config.git", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/config/zipball/a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^3.0.1", - "nette/schema": "^1.2", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.90", - "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": "2021-08-14T12:15:32+00:00" - }, - { - "name": "league/flysystem", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9f8b4260031bfef5497477da53dd57b2aaff0e06", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06", - "shasum": "" - }, - "require": { - "ext-json": "*", - "league/mime-type-detection": "^1.0.0", - "php": "^8.0.2" - }, - "conflict": { - "guzzlehttp/guzzle": "<7.0", - "guzzlehttp/ringphp": "<1.1.1", - "symfony/http-client": "<5.2" - }, - "require-dev": { - "async-aws/s3": "^1.5", - "async-aws/simple-s3": "^1.0", - "aws/aws-sdk-php": "^3.198.1", - "composer/semver": "^3.0", - "ext-fileinfo": "*", - "ext-ftp": "*", - "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.5", - "google/cloud-storage": "^1.23", - "phpseclib/phpseclib": "^2.0", - "phpstan/phpstan": "^0.12.26", - "phpunit/phpunit": "^9.5.11", - "sabre/dav": "^4.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.0.3" - }, - "funding": [ - { - "url": "https://offset.earth/frankdejonge", - "type": "custom" - }, - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2022-01-31T19:41:04+00:00" - }, - { - "name": "league/mime-type-detection", - "version": "1.9.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/aa70e813a6ad3d1558fc927863d47309b4c23e69", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.2", - "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" - }, - "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.9.0" - }, - "funding": [ - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2021-11-21T11:48:40+00:00" - }, - { - "name": "monolog/monolog", - "version": "2.3.5", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd4380d6fc37626e2f799f29d91195040137eba9", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "provide": { - "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7", - "graylog2/gelf-php": "^1.4.2", - "mongodb/mongodb": "^1.8", - "php-amqplib/php-amqplib": "~2.4 || ^3", - "php-console/php-console": "^3.1.3", - "phpspec/prophecy": "^1.6.1", - "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5", - "predis/predis": "^1.1", - "rollbar/rollbar": "^1.3", - "ruflin/elastica": ">=0.90@dev", - "swiftmailer/swiftmailer": "^5.3|^6.0" - }, - "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", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "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": "2.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/2.3.5" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" - } - ], - "time": "2021-10-01T21:08:31+00:00" - }, - { - "name": "nesbot/carbon", - "version": "2.56.0", - "source": { - "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1.8 || ^8.0", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "doctrine/dbal": "^2.0 || ^3.0", - "doctrine/orm": "^2.7", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "phpmd/phpmd": "^2.9", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.54 || ^1.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.14", - "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://opencollective.com/Carbon", - "type": "open_collective" - }, - { - "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", - "type": "tidelift" - } - ], - "time": "2022-01-21T17:08:38+00:00" - }, - { - "name": "nette/schema", - "version": "v1.2.2", - "source": { - "type": "git", - "url": "https://github.com/nette/schema.git", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/9a39cef03a5b34c7de64f551538cbba05c2be5df", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df", - "shasum": "" - }, - "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": ">=7.1 <8.2" - }, - "require-dev": { - "nette/tester": "^2.3 || ^2.4", - "phpstan/phpstan-nette": "^0.12", - "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.2" - }, - "time": "2021-10-15T11:40:02+00:00" - }, - { - "name": "nette/utils", - "version": "v3.2.7", - "source": { - "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/0af4e3de4df9f1543534beab255ccf459e7a2c99", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99", - "shasum": "" - }, - "require": { - "php": ">=7.2 <8.2" - }, - "conflict": { - "nette/di": "<3.0.6" - }, - "require-dev": { - "nette/tester": "~2.0", - "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.3" - }, - "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()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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 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/v3.2.7" - }, - "time": "2022-01-24T11:29:14+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.13.2", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", - "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.13.2" - }, - "time": "2021-11-30T19:35:32+00:00" - }, - { - "name": "phpoption/phpoption", - "version": "1.8.1", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-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.8.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", - "type": "tidelift" - } - ], - "time": "2021-12-04T23:24:31+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.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.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": "http://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/tree/master" - }, - "time": "2020-06-29T06:28:15+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.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": "http://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/master" - }, - "time": "2019-04-30T12:38:16+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.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": "http://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/master" - }, - "time": "2016-08-06T14:39: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.1", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "570292577277f06f590635381a7f761a6cf4f026" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/570292577277f06f590635381a7f761a6cf4f026", - "reference": "570292577277f06f590635381a7f761a6cf4f026", - "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" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "3.17.05.02" - }, - "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.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." - }, - "bin": [ - "bin/psysh" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "0.11.x-dev" - } - }, - "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.1" - }, - "time": "2022-01-03T13:58:38+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": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/ramsey/collection.git", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "shasum": "" - }, - "require": { - "php": "^7.3 || ^8", - "symfony/polyfill-php81": "^1.23" - }, - "require-dev": { - "captainhook/captainhook": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "ergebnis/composer-normalize": "^2.6", - "fakerphp/faker": "^1.5", - "hamcrest/hamcrest-php": "^2", - "jangregor/phpstan-prophecy": "^0.8", - "mockery/mockery": "^1.3", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1", - "phpstan/phpstan": "^0.12.32", - "phpstan/phpstan-mockery": "^0.12.5", - "phpstan/phpstan-phpunit": "^0.12.11", - "phpunit/phpunit": "^8.5 || ^9", - "psy/psysh": "^0.10.4", - "slevomat/coding-standard": "^6.3", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.4" - }, - "type": "library", - "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/1.2.2" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "time": "2021-10-10T03:01:02+00:00" - }, - { - "name": "ramsey/uuid", - "version": "4.2.3", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "shasum": "" - }, - "require": { - "brick/math": "^0.8 || ^0.9", - "ext-json": "*", - "php": "^7.2 || ^8.0", - "ramsey/collection": "^1.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php80": "^1.14" - }, - "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", - "moontoast/math": "^1.1", - "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.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-mockery": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^8.5 || ^9", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" - }, - "suggest": { - "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-ctype": "Enables faster processing of character classification using ctype functions.", - "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": { - "branch-alias": { - "dev-main": "4.x-dev" - }, - "captainhook": { - "force-install": true - } - }, - "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "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.2.3" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2021-09-25T23:10:38+00:00" - }, - { - "name": "symfony/console", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/22e8efd019c3270c4f79376234a3f8752cd25490", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.4|^6.0" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/css-selector", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/1955d595c12c111629cc814d3f2a2ff13580508a", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a", - "shasum": "" - }, - "require": { - "php": ">=8.0.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/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-11-01T23:48:49+00:00" - }, - { - "name": "symfony/error-handler", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/20343b3bad7ebafa38138ddcb97290a24722b57b", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" - }, - "bin": [ - "Resources/bin/patch-type-declarations" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to manage errors and ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6472ea2dd415e925b90ca82be64b8bc6157f3934", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/event-dispatcher-contracts": "^2|^3" - }, - "conflict": { - "symfony/dependency-injection": "<5.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^5.4|^6.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/aa5422287b75594b90ee9cd807caf8f0df491385", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/event-dispatcher": "^1" - }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-07-15T12:33:35+00:00" - }, - { - "name": "symfony/finder", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/8661b74dbabc23223f38c9b99d3f8ade71170430", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ad157299ced81a637fade1efcadd688d6deba5c1", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1" - }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/cache": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0" - }, - "suggest": { - "symfony/mime": "To use the file extension guesser" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v6.0.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/error-handler": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", - "symfony/twig-bridge": "<5.4", - "symfony/validator": "<5.4", - "twig/twig": "<2.13" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/process": "^5.4|^6.0", - "symfony/routing": "^5.4|^6.0", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-29T18:12:46+00:00" - }, - { - "name": "symfony/mailer", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mailer.git", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "shasum": "" - }, - "require": { - "egulias/email-validator": "^2.1.10|^3", - "php": ">=8.0.2", - "psr/event-dispatcher": "^1", - "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3" - }, - "conflict": { - "symfony/http-kernel": "<5.4" - }, - "require-dev": { - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/messenger": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/mime", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/2cd9601efd040e56f43360daa68f3c6b0534923a", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "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" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "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.24.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": "2021-10-20T20:35:02+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-11-23T21:10:46+00:00" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44", - "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.23-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.24.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": "2021-09-14T14:02:44+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.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": "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.24.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": "2021-11-30T18:21:41+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-05-27T09:17:38+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:33+00:00" - }, - { - "name": "symfony/polyfill-php81", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:11+00:00" - }, - { - "name": "symfony/process", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/298ed357274c1868c20a0061df256a1250a6c4af", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/routing", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/yaml": "<5.4" - }, - "require-dev": { - "doctrine/annotations": "^1.12", - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/36715ebf9fb9db73db0cb24263c79077c6fe8603", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/container": "^2.0" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "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.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": "2021-11-04T17:53:12+00:00" - }, - { - "name": "symfony/string", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/522144f0c4c004c80d56fa47e40e17028e2eefc2", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.0" - }, - "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/translation-contracts": "^2.0|^3.0", - "symfony/var-exporter": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "files": [ - "Resources/functions.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 an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/translation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/71bb15335798f8c4da110911bcf2d2fead7a430d", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.3|^3.0" - }, - "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" - }, - "provide": { - "symfony/translation-implementation": "2.3|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-07T00:29:03+00:00" - }, - { - "name": "symfony/translation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "suggest": { - "symfony/translation-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - } - }, - "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.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": "2021-09-07T12:43:40+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7b701676fc64f9ef11f9b4870f16b48f66be4834", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<5.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-17T16:30:44+00:00" - }, - { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.4", - "source": { - "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" - } - ], - "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", - "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "support": { - "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" - }, - "time": "2021-12-08T09:12:39+00:00" - }, - { - "name": "vlucas/phpdotenv", - "version": "v5.4.1", - "source": { - "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", - "shasum": "" - }, - "require": { - "ext-pcre": "*", - "graham-campbell/result-type": "^1.0.2", - "php": "^7.1.3 || ^8.0", - "phpoption/phpoption": "^1.8", - "symfony/polyfill-ctype": "^1.23", - "symfony/polyfill-mbstring": "^1.23.1", - "symfony/polyfill-php80": "^1.23.1" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" - }, - "suggest": { - "ext-filter": "Required to use the boolean validator." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.4-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.4.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", - "type": "tidelift" - } - ], - "time": "2021-12-12T23:22:04+00:00" - }, - { - "name": "voku/portable-ascii", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/voku/portable-ascii.git", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/9bd89e83cecdf8c37b64909454249eaed98b2c89", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89", - "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.0" - }, - "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-01-24T18:59:03+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "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.10.0" - }, - "time": "2021-03-09T10:59:23+00:00" - } - ], - "packages-dev": [ - { - "name": "doctrine/instantiator", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.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%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2020-11-10T18:47:58+00:00" - }, - { - "name": "facade/ignition-contracts", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/facade/ignition-contracts.git", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^v2.15.8", - "phpunit/phpunit": "^9.3.11", - "vimeo/psalm": "^3.17.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Facade\\IgnitionContracts\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://flareapp.io", - "role": "Developer" - } - ], - "description": "Solution contracts for Ignition", - "homepage": "https://github.com/facade/ignition-contracts", - "keywords": [ - "contracts", - "flare", - "ignition" - ], - "support": { - "issues": "https://github.com/facade/ignition-contracts/issues", - "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" - }, - "time": "2020-10-16T08:27:54+00:00" - }, - { - "name": "fakerphp/faker", - "version": "v1.19.0", - "source": { - "type": "git", - "url": "https://github.com/FakerPHP/Faker.git", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^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": "*", - "symfony/phpunit-bridge": "^4.4 || ^5.2" - }, - "suggest": { - "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", - "ext-curl": "Required by Faker\\Provider\\Image to download images.", - "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", - "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.19-dev" - } - }, - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "François Zaninotto" - } - ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], - "support": { - "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0" - }, - "time": "2022-02-02T17:38:57+00:00" - }, - { - "name": "filp/whoops", - "version": "2.14.5", - "source": { - "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "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.14.5" - }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "time": "2022-01-07T12:00:00+00:00" - }, - { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "shasum": "" - }, - "require": { - "php": "^5.3|^7.0|^8.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" - }, - "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "classmap": [ - "hamcrest" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "This is the PHP port of Hamcrest Matchers", - "keywords": [ - "test" - ], - "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" - }, - "time": "2020-07-09T08:09:16+00:00" - }, - { - "name": "laravel/sail", - "version": "v1.13.2", - "source": { - "type": "git", - "url": "https://github.com/laravel/sail.git", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.0|^9.0", - "illuminate/contracts": "^8.0|^9.0", - "illuminate/support": "^8.0|^9.0", - "php": "^7.3|^8.0" - }, - "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": "2022-02-08T14:14:12+00:00" - }, - { - "name": "mockery/mockery", - "version": "1.5.0", - "source": { - "type": "git", - "url": "https://github.com/mockery/mockery.git", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "shasum": "" - }, - "require": { - "hamcrest/hamcrest-php": "^2.0.1", - "lib-pcre": ">=7.0", - "php": "^7.3 || ^8.0" - }, - "conflict": { - "phpunit/phpunit": "<8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-0": { - "Mockery": "library/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" - } - ], - "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": { - "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.5.0" - }, - "time": "2022-01-20T13:18:17+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.10.2", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "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.10.2" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2020-11-13T09:40:50+00:00" - }, - { - "name": "nunomaduro/collision", - "version": "v6.1.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/collision.git", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "shasum": "" - }, - "require": { - "facade/ignition-contracts": "^1.0.2", - "filp/whoops": "^2.14.5", - "php": "^8.0.0", - "symfony/console": "^6.0.2" - }, - "require-dev": { - "brianium/paratest": "^6.4.1", - "laravel/framework": "^9.0", - "nunomaduro/larastan": "^1.0.2", - "nunomaduro/mock-final-classes": "^1.1.0", - "orchestra/testbench": "^7.0.0", - "phpunit/phpunit": "^9.5.11" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "6.x-dev" - }, - "laravel": { - "providers": [ - "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" - ] - } - }, - "autoload": { - "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": "2022-01-18T17:49:08+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.1.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/15a90844ad40f127afd244c0cad228de2a80052a", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a", - "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.1.1" - }, - "time": "2022-02-07T21:56:48+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.6.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "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.6.0" - }, - "time": "2022-01-04T19:58:01+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" - }, - "time": "2021-12-08T12:19:24+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "9.2.10", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d5850aaf931743067f4bfc1ae4cbd06468400687", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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 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", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.10" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-05T09:12:13+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "3.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-02T12:48:52+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "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/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:58:55+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T05:33:50+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.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/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:16:10+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "9.5.13", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/597cb647654ede35e43b137926dfdfef0fb11743", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.3.1", - "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": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.7", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", - "sebastian/version": "^3.0.2" - }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.13" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-01-24T07:33:35+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:08:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "1.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:08:54+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:30:19+00:00" - }, - { - "name": "sebastian/comparator", - "version": "4.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:49:45+00:00" - }, - { - "name": "sebastian/complexity", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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 calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:52:27+00:00" - }, - { - "name": "sebastian/diff", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:10:38+00:00" - }, - { - "name": "sebastian/environment", - "version": "5.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-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": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:52:38+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "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", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-11-11T14:18:36+00:00" - }, - { - "name": "sebastian/global-state", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-11T13:31:12+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-28T06:42:11+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "http://www.github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:17:30+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:45:17+00:00" - }, - { - "name": "sebastian/type", - "version": "2.3.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-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/2.3.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-15T12:49:02+00:00" - }, - { - "name": "sebastian/version", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:39:44+00:00" - }, - { - "name": "spatie/backtrace", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/backtrace.git", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "ext-json": "*", - "phpunit/phpunit": "^9.3", - "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": { - "issues": "https://github.com/spatie/backtrace/issues", - "source": "https://github.com/spatie/backtrace/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/sponsors/spatie", - "type": "github" - }, - { - "url": "https://spatie.be/open-source/support-us", - "type": "other" - } - ], - "time": "2021-11-09T10:57:15+00:00" - }, - { - "name": "spatie/flare-client-php", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/flare-client-php.git", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "shasum": "" - }, - "require": { - "illuminate/pipeline": "^8.0|^9.0", - "php": "^8.0", - "spatie/backtrace": "^1.2", - "symfony/http-foundation": "^5.0|^6.0", - "symfony/mime": "^5.2|^6.0", - "symfony/process": "^5.2|^6.0", - "symfony/var-dumper": "^5.2|^6.0" - }, - "require-dev": { - "dms/phpunit-arraysubset-asserts": "^0.3.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/phpunit-snapshot-assertions": "^4.0" - }, - "type": "library", - "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.0.1" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2022-02-04T15:21:00+00:00" - }, - { - "name": "spatie/ignition", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/spatie/ignition.git", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/d2d5ba823af3004268556e87dfc94449e4159f5a", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "monolog/monolog": "^2.0", - "php": "^8.0", - "spatie/flare-client-php": "^1.0", - "symfony/console": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "mockery/mockery": "^1.4", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/ray": "^1.32", - "symfony/process": "^5.4|^6.0" - }, - "type": "library", - "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": "2022-01-19T12:57:41+00:00" - }, - { - "name": "spatie/laravel-ignition", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/68250225a9f83b086462c2af1b1139dfde48fbd2", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*", - "illuminate/support": "^8.77|^9.0", - "monolog/monolog": "^2.3", - "php": "^8.0", - "spatie/flare-client-php": "^1.0.1", - "spatie/ignition": "^1.0", - "symfony/console": "^5.0|^6.0", - "symfony/var-dumper": "^5.0|^6.0" - }, - "require-dev": { - "filp/whoops": "^2.14", - "livewire/livewire": "^2.8|dev-develop", - "mockery/mockery": "^1.4", - "nunomaduro/larastan": "^1.0", - "orchestra/testbench": "^6.23|^7.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/laravel-ray": "^1.27" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Spatie\\LaravelIgnition\\IgnitionServiceProvider" - ], - "aliases": { - "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" - } - } - }, - "autoload": { - "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": "2022-02-04T15:25:56+00:00" - }, - { - "name": "squizlabs/php_codesniffer", - "version": "3.6.2", - "source": { - "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", - "shasum": "" - }, - "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.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": "lead" - } - ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", - "keywords": [ - "phpcs", - "standards" - ], - "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" - }, - "time": "2021-12-12T21:44:58+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2021-07-28T10:34:58+00:00" - } - ], - "aliases": [], - "minimum-stability": "dev", - "stability-flags": [], - "prefer-stable": true, - "prefer-lowest": false, - "platform": { - "php": "^8.0" - }, - "platform-dev": [], - "plugin-api-version": "2.1.0" -} diff --git a/Chapter26/onlineStore/config/app.php b/Chapter26/onlineStore/config/app.php deleted file mode 100644 index 1941d7c..0000000 --- a/Chapter26/onlineStore/config/app.php +++ /dev/null @@ -1,197 +0,0 @@ - env('APP_NAME', 'Laravel'), - - /* - |-------------------------------------------------------------------------- - | Application Environment - |-------------------------------------------------------------------------- - | - | This value determines the "environment" your application is currently - | running in. This may determine how you prefer to configure various - | services the application utilizes. Set this in your ".env" file. - | - */ - - 'env' => env('APP_ENV', 'production'), - - /* - |-------------------------------------------------------------------------- - | Application Debug Mode - |-------------------------------------------------------------------------- - | - | When your application is in debug mode, detailed error messages with - | stack traces will be shown on every error that occurs within your - | application. If disabled, a simple generic error page is shown. - | - */ - - 'debug' => (bool) env('APP_DEBUG', false), - - /* - |-------------------------------------------------------------------------- - | Application URL - |-------------------------------------------------------------------------- - | - | This URL is used by the console to properly generate URLs when using - | the Artisan command line tool. You should set this to the root of - | your application so that it is used when running Artisan tasks. - | - */ - - 'url' => env('APP_URL', 'http://localhost'), - - 'asset_url' => env('ASSET_URL', null), - - /* - |-------------------------------------------------------------------------- - | 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', - - /* - |-------------------------------------------------------------------------- - | 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' => [ - - /* - * Laravel Framework Service Providers... - */ - Illuminate\Auth\AuthServiceProvider::class, - Illuminate\Broadcasting\BroadcastServiceProvider::class, - Illuminate\Bus\BusServiceProvider::class, - Illuminate\Cache\CacheServiceProvider::class, - Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, - Illuminate\Cookie\CookieServiceProvider::class, - Illuminate\Database\DatabaseServiceProvider::class, - Illuminate\Encryption\EncryptionServiceProvider::class, - Illuminate\Filesystem\FilesystemServiceProvider::class, - Illuminate\Foundation\Providers\FoundationServiceProvider::class, - Illuminate\Hashing\HashServiceProvider::class, - Illuminate\Mail\MailServiceProvider::class, - Illuminate\Notifications\NotificationServiceProvider::class, - Illuminate\Pagination\PaginationServiceProvider::class, - Illuminate\Pipeline\PipelineServiceProvider::class, - Illuminate\Queue\QueueServiceProvider::class, - Illuminate\Redis\RedisServiceProvider::class, - Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, - Illuminate\Session\SessionServiceProvider::class, - Illuminate\Translation\TranslationServiceProvider::class, - Illuminate\Validation\ValidationServiceProvider::class, - Illuminate\View\ViewServiceProvider::class, - - /* - * 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, - - ], - - /* - |-------------------------------------------------------------------------- - | 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([ - // ... - ])->toArray(), - -]; diff --git a/Chapter26/onlineStore/config/auth.php b/Chapter26/onlineStore/config/auth.php deleted file mode 100644 index d8c6cee..0000000 --- a/Chapter26/onlineStore/config/auth.php +++ /dev/null @@ -1,111 +0,0 @@ - [ - '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 expire 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. - | - */ - - 'passwords' => [ - 'users' => [ - 'provider' => 'users', - 'table' => 'password_resets', - '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/Chapter26/onlineStore/config/broadcasting.php b/Chapter26/onlineStore/config/broadcasting.php deleted file mode 100644 index 67fcbbd..0000000 --- a/Chapter26/onlineStore/config/broadcasting.php +++ /dev/null @@ -1,67 +0,0 @@ - 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'), - 'useTLS' => true, - ], - '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/Chapter26/onlineStore/config/cache.php b/Chapter26/onlineStore/config/cache.php deleted file mode 100644 index 8736c7a..0000000 --- a/Chapter26/onlineStore/config/cache.php +++ /dev/null @@ -1,110 +0,0 @@ - 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'), - ], - - '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 a RAM based store such as APC or Memcached, there might - | be other applications utilizing the same cache. So, we'll specify a - | value to get prefixed to all our keys so we can avoid collisions. - | - */ - - 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'), - -]; diff --git a/Chapter26/onlineStore/config/cors.php b/Chapter26/onlineStore/config/cors.php deleted file mode 100644 index 8a39e6d..0000000 --- a/Chapter26/onlineStore/config/cors.php +++ /dev/null @@ -1,34 +0,0 @@ - ['api/*', 'sanctum/csrf-cookie'], - - 'allowed_methods' => ['*'], - - 'allowed_origins' => ['*'], - - 'allowed_origins_patterns' => [], - - 'allowed_headers' => ['*'], - - 'exposed_headers' => [], - - 'max_age' => 0, - - 'supports_credentials' => false, - -]; diff --git a/Chapter26/onlineStore/config/database.php b/Chapter26/onlineStore/config/database.php deleted file mode 100644 index 0faebae..0000000 --- a/Chapter26/onlineStore/config/database.php +++ /dev/null @@ -1,147 +0,0 @@ - env('DB_CONNECTION', 'mysql'), - - /* - |-------------------------------------------------------------------------- - | Database Connections - |-------------------------------------------------------------------------- - | - | Here are each of the database connections setup for your application. - | Of course, examples of configuring each database platform that is - | supported by Laravel is shown below to make development simple. - | - | - | All database work in Laravel is done through the PHP PDO facilities - | so make sure you have the driver for your particular database of - | choice installed on your machine before you begin development. - | - */ - - 'connections' => [ - - 'sqlite' => [ - 'driver' => 'sqlite', - 'url' => env('DATABASE_URL'), - 'database' => env('DB_DATABASE', database_path('database.sqlite')), - 'prefix' => '', - 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), - ], - - 'mysql' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '3306'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'unix_socket' => env('DB_SOCKET', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - 'pgsql' => [ - 'driver' => 'pgsql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '5432'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - 'search_path' => 'public', - 'sslmode' => 'prefer', - ], - - 'sqlsrv' => [ - 'driver' => 'sqlsrv', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', 'localhost'), - 'port' => env('DB_PORT', '1433'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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'), - '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'), - 'password' => env('REDIS_PASSWORD'), - 'port' => env('REDIS_PORT', '6379'), - 'database' => env('REDIS_CACHE_DB', '1'), - ], - - ], - -]; diff --git a/Chapter26/onlineStore/config/filesystems.php b/Chapter26/onlineStore/config/filesystems.php deleted file mode 100644 index cf5abce..0000000 --- a/Chapter26/onlineStore/config/filesystems.php +++ /dev/null @@ -1,73 +0,0 @@ - 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 setup for each driver as an example of the required options. - | - | Supported Drivers: "local", "ftp", "sftp", "s3" - | - */ - - 'disks' => [ - - 'local' => [ - 'driver' => 'local', - 'root' => storage_path('app'), - ], - - 'public' => [ - 'driver' => 'local', - 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', - 'visibility' => 'public', - ], - - '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), - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter26/onlineStore/config/hashing.php b/Chapter26/onlineStore/config/hashing.php deleted file mode 100644 index bcd3be4..0000000 --- a/Chapter26/onlineStore/config/hashing.php +++ /dev/null @@ -1,52 +0,0 @@ - '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/Chapter26/onlineStore/config/logging.php b/Chapter26/onlineStore/config/logging.php deleted file mode 100644 index fefe088..0000000 --- a/Chapter26/onlineStore/config/logging.php +++ /dev/null @@ -1,119 +0,0 @@ - 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' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), - - /* - |-------------------------------------------------------------------------- - | 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'), - ], - - 'daily' => [ - 'driver' => 'daily', - 'path' => storage_path('logs/laravel.log'), - 'level' => env('LOG_LEVEL', 'debug'), - 'days' => 14, - ], - - 'slack' => [ - 'driver' => 'slack', - 'url' => env('LOG_SLACK_WEBHOOK_URL'), - 'username' => 'Laravel Log', - 'emoji' => ':boom:', - 'level' => env('LOG_LEVEL', 'critical'), - ], - - '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'), - ], - ], - - 'stderr' => [ - 'driver' => 'monolog', - 'level' => env('LOG_LEVEL', 'debug'), - 'handler' => StreamHandler::class, - 'formatter' => env('LOG_STDERR_FORMATTER'), - 'with' => [ - 'stream' => 'php://stderr', - ], - ], - - 'syslog' => [ - 'driver' => 'syslog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'errorlog' => [ - 'driver' => 'errorlog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'null' => [ - 'driver' => 'monolog', - 'handler' => NullHandler::class, - ], - - 'emergency' => [ - 'path' => storage_path('logs/laravel.log'), - ], - ], - -]; diff --git a/Chapter26/onlineStore/config/mail.php b/Chapter26/onlineStore/config/mail.php deleted file mode 100644 index 87b6fe3..0000000 --- a/Chapter26/onlineStore/config/mail.php +++ /dev/null @@ -1,117 +0,0 @@ - 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", - | "postmark", "log", "array", "failover" - | - */ - - 'mailers' => [ - 'smtp' => [ - 'transport' => 'smtp', - '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, - ], - - 'ses' => [ - 'transport' => 'ses', - ], - - 'mailgun' => [ - 'transport' => 'mailgun', - ], - - 'postmark' => [ - 'transport' => 'postmark', - ], - - 'sendmail' => [ - 'transport' => 'sendmail', - 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -t -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/Chapter26/onlineStore/config/queue.php b/Chapter26/onlineStore/config/queue.php deleted file mode 100644 index 25ea5a8..0000000 --- a/Chapter26/onlineStore/config/queue.php +++ /dev/null @@ -1,93 +0,0 @@ - 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, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter26/onlineStore/config/sanctum.php b/Chapter26/onlineStore/config/sanctum.php deleted file mode 100644 index 9281c92..0000000 --- a/Chapter26/onlineStore/config/sanctum.php +++ /dev/null @@ -1,65 +0,0 @@ - explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( - '%s%s', - 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', - env('APP_URL') ? ','.parse_url(env('APP_URL'), PHP_URL_HOST) : '' - ))), - - /* - |-------------------------------------------------------------------------- - | 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/Chapter26/onlineStore/config/services.php b/Chapter26/onlineStore/config/services.php deleted file mode 100644 index 2a1d616..0000000 --- a/Chapter26/onlineStore/config/services.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - 'domain' => env('MAILGUN_DOMAIN'), - 'secret' => env('MAILGUN_SECRET'), - 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), - ], - - '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/Chapter26/onlineStore/config/session.php b/Chapter26/onlineStore/config/session.php deleted file mode 100644 index 8fed97c..0000000 --- a/Chapter26/onlineStore/config/session.php +++ /dev/null @@ -1,201 +0,0 @@ - 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/Chapter26/onlineStore/config/view.php b/Chapter26/onlineStore/config/view.php deleted file mode 100644 index 22b8a18..0000000 --- a/Chapter26/onlineStore/config/view.php +++ /dev/null @@ -1,36 +0,0 @@ - [ - 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/Chapter26/onlineStore/database/.gitignore b/Chapter26/onlineStore/database/.gitignore deleted file mode 100644 index 9b19b93..0000000 --- a/Chapter26/onlineStore/database/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.sqlite* diff --git a/Chapter26/onlineStore/database/factories/UserFactory.php b/Chapter26/onlineStore/database/factories/UserFactory.php deleted file mode 100644 index d6ca926..0000000 --- a/Chapter26/onlineStore/database/factories/UserFactory.php +++ /dev/null @@ -1,42 +0,0 @@ - - */ -class UserFactory extends Factory -{ - /** - * Define the model's default state. - * - * @return array - */ - public function definition() - { - return [ - 'name' => $this->faker->name(), - 'email' => $this->faker->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. - * - * @return \Illuminate\Database\Eloquent\Factories\Factory - */ - public function unverified() - { - return $this->state(function (array $attributes) { - return [ - 'email_verified_at' => null, - ]; - }); - } -} diff --git a/Chapter26/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php b/Chapter26/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php deleted file mode 100644 index cf6b776..0000000 --- a/Chapter26/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->string('name'); - $table->string('email')->unique(); - $table->timestamp('email_verified_at')->nullable(); - $table->string('password'); - $table->rememberToken(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('users'); - } -}; diff --git a/Chapter26/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php b/Chapter26/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php deleted file mode 100644 index 0ee0a36..0000000 --- a/Chapter26/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php +++ /dev/null @@ -1,32 +0,0 @@ -string('email')->index(); - $table->string('token'); - $table->timestamp('created_at')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('password_resets'); - } -} diff --git a/Chapter26/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/Chapter26/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php deleted file mode 100644 index 1719198..0000000 --- a/Chapter26/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php +++ /dev/null @@ -1,36 +0,0 @@ -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. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('failed_jobs'); - } -}; diff --git a/Chapter26/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/Chapter26/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php deleted file mode 100644 index fd235f8..0000000 --- a/Chapter26/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->morphs('tokenable'); - $table->string('name'); - $table->string('token', 64)->unique(); - $table->text('abilities')->nullable(); - $table->timestamp('last_used_at')->nullable(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('personal_access_tokens'); - } -}; diff --git a/Chapter26/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php b/Chapter26/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php deleted file mode 100644 index 2eecdc2..0000000 --- a/Chapter26/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php +++ /dev/null @@ -1,35 +0,0 @@ -id(); - $table->string('name'); - $table->text('description'); - $table->string('image'); - $table->integer('price'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('products'); - } -}; diff --git a/Chapter26/onlineStore/database/migrations/2022_02_12_140820_alter_users_table.php b/Chapter26/onlineStore/database/migrations/2022_02_12_140820_alter_users_table.php deleted file mode 100644 index 5bfcf7e..0000000 --- a/Chapter26/onlineStore/database/migrations/2022_02_12_140820_alter_users_table.php +++ /dev/null @@ -1,34 +0,0 @@ -string('role')->default('client'); - $table->integer('balance'); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::table('users', function (Blueprint $table) { - $table->dropColumn(['role']); - $table->dropColumn(['balance']); - }); - } -}; diff --git a/Chapter26/onlineStore/database/migrations/2022_02_12_152713_create_orders_table.php b/Chapter26/onlineStore/database/migrations/2022_02_12_152713_create_orders_table.php deleted file mode 100644 index fc05fda..0000000 --- a/Chapter26/onlineStore/database/migrations/2022_02_12_152713_create_orders_table.php +++ /dev/null @@ -1,34 +0,0 @@ -id(); - $table->integer('total'); - $table->unsignedBigInteger('user_id'); - $table->foreign('user_id')->references('id')->on('users'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('orders'); - } -}; diff --git a/Chapter26/onlineStore/database/migrations/2022_02_12_152850_create_items_table.php b/Chapter26/onlineStore/database/migrations/2022_02_12_152850_create_items_table.php deleted file mode 100644 index d7dfac5..0000000 --- a/Chapter26/onlineStore/database/migrations/2022_02_12_152850_create_items_table.php +++ /dev/null @@ -1,37 +0,0 @@ -id(); - $table->integer('quantity'); - $table->integer('price'); - $table->unsignedBigInteger('order_id'); - $table->foreign('order_id')->references('id')->on('orders'); - $table->unsignedBigInteger('product_id'); - $table->foreign('product_id')->references('id')->on('products'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('items'); - } -}; diff --git a/Chapter26/onlineStore/database/seeders/DatabaseSeeder.php b/Chapter26/onlineStore/database/seeders/DatabaseSeeder.php deleted file mode 100644 index 71f673f..0000000 --- a/Chapter26/onlineStore/database/seeders/DatabaseSeeder.php +++ /dev/null @@ -1,19 +0,0 @@ -create(); - } -} diff --git a/Chapter26/onlineStore/lang/en.json b/Chapter26/onlineStore/lang/en.json deleted file mode 100644 index 577680d..0000000 --- a/Chapter26/onlineStore/lang/en.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "The :attribute must contain at least one letter.": "The :attribute must contain at least one letter.", - "The :attribute must contain at least one number.": "The :attribute must contain at least one number.", - "The :attribute must contain at least one symbol.": "The :attribute must contain at least one symbol.", - "The :attribute must contain at least one uppercase and one lowercase letter.": "The :attribute must contain at least one uppercase and one lowercase letter.", - "The given :attribute has appeared in a data leak. Please choose a different :attribute.": "The given :attribute has appeared in a data leak. Please choose a different :attribute." -} diff --git a/Chapter26/onlineStore/lang/en/auth.php b/Chapter26/onlineStore/lang/en/auth.php deleted file mode 100644 index 6598e2c..0000000 --- a/Chapter26/onlineStore/lang/en/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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/Chapter26/onlineStore/lang/en/pagination.php b/Chapter26/onlineStore/lang/en/pagination.php deleted file mode 100644 index d481411..0000000 --- a/Chapter26/onlineStore/lang/en/pagination.php +++ /dev/null @@ -1,19 +0,0 @@ - '« Previous', - 'next' => 'Next »', - -]; diff --git a/Chapter26/onlineStore/lang/en/passwords.php b/Chapter26/onlineStore/lang/en/passwords.php deleted file mode 100644 index 2345a56..0000000 --- a/Chapter26/onlineStore/lang/en/passwords.php +++ /dev/null @@ -1,22 +0,0 @@ - '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/Chapter26/onlineStore/lang/en/validation.php b/Chapter26/onlineStore/lang/en/validation.php deleted file mode 100644 index 783003c..0000000 --- a/Chapter26/onlineStore/lang/en/validation.php +++ /dev/null @@ -1,163 +0,0 @@ - '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' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - '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' => [ - 'numeric' => 'The :attribute must be greater than :value.', - 'file' => 'The :attribute must be greater than :value kilobytes.', - 'string' => 'The :attribute must be greater than :value characters.', - 'array' => 'The :attribute must have more than :value items.', - ], - 'gte' => [ - 'numeric' => 'The :attribute must be greater than or equal to :value.', - 'file' => 'The :attribute must be greater than or equal to :value kilobytes.', - 'string' => 'The :attribute must be greater than or equal to :value characters.', - 'array' => 'The :attribute must have :value items or more.', - ], - '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' => [ - 'numeric' => 'The :attribute must be less than :value.', - 'file' => 'The :attribute must be less than :value kilobytes.', - 'string' => 'The :attribute must be less than :value characters.', - 'array' => 'The :attribute must have less than :value items.', - ], - 'lte' => [ - 'numeric' => 'The :attribute must be less than or equal to :value.', - 'file' => 'The :attribute must be less than or equal to :value kilobytes.', - 'string' => 'The :attribute must be less than or equal to :value characters.', - 'array' => 'The :attribute must not have more than :value items.', - ], - 'mac_address' => 'The :attribute must be a valid MAC address.', - 'max' => [ - 'numeric' => 'The :attribute must not be greater than :max.', - 'file' => 'The :attribute must not be greater than :max kilobytes.', - 'string' => 'The :attribute must not be greater than :max characters.', - 'array' => 'The :attribute must not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - '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.', - 'password' => 'The password is incorrect.', - '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' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - '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/Chapter26/onlineStore/package.json b/Chapter26/onlineStore/package.json deleted file mode 100644 index 7b71681..0000000 --- a/Chapter26/onlineStore/package.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "private": true, - "scripts": { - "dev": "npm run development", - "development": "mix", - "watch": "mix watch", - "watch-poll": "mix watch -- --watch-options-poll=1000", - "hot": "mix watch --hot", - "prod": "npm run production", - "production": "mix --production" - }, - "devDependencies": { - "@popperjs/core": "^2.10.2", - "axios": "^0.25", - "bootstrap": "^5.1.3", - "laravel-mix": "^6.0.6", - "lodash": "^4.17.19", - "postcss": "^8.1.14", - "sass": "^1.32.11", - "sass-loader": "^11.0.1" - } -} diff --git a/Chapter26/onlineStore/phpcs.xml b/Chapter26/onlineStore/phpcs.xml deleted file mode 100644 index a1cf2b6..0000000 --- a/Chapter26/onlineStore/phpcs.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - The coding standard for the Online Store project - - app/ - config/ - database/ - routes/ - */migrations/* - diff --git a/Chapter26/onlineStore/phpunit.xml b/Chapter26/onlineStore/phpunit.xml deleted file mode 100644 index 2ac86a1..0000000 --- a/Chapter26/onlineStore/phpunit.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - ./tests/Unit - - - ./tests/Feature - - - - - ./app - - - - - - - - - - - - - - diff --git a/Chapter26/onlineStore/public/.htaccess b/Chapter26/onlineStore/public/.htaccess deleted file mode 100644 index 3aec5e2..0000000 --- a/Chapter26/onlineStore/public/.htaccess +++ /dev/null @@ -1,21 +0,0 @@ - - - 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/Chapter26/onlineStore/public/css/admin.css b/Chapter26/onlineStore/public/css/admin.css deleted file mode 100644 index d9495a1..0000000 --- a/Chapter26/onlineStore/public/css/admin.css +++ /dev/null @@ -1,33 +0,0 @@ -.copyright { - background-color: #1a252f; -} - -.fixed { - -ms-flex: 0 0 250px; - flex: 0 0 250px; -} - -.content-grey { - background-color: #f8f9fc; -} - -hr { - margin-top: 0.8em; - margin-bottom: 0.8em; -} - -.img-profile { - height: 2rem; - width: 2rem; -} - -.profile-font { - color: #858796 !important; - font-size: 80%; - font-weight: 400; -} - -.card-header { - background-color: #f8f9fc; - border-bottom: 1px solid #e3e6f0; -} diff --git a/Chapter26/onlineStore/public/css/app.css b/Chapter26/onlineStore/public/css/app.css deleted file mode 100644 index cabac36..0000000 --- a/Chapter26/onlineStore/public/css/app.css +++ /dev/null @@ -1,20 +0,0 @@ -.bg-secondary { - background-color: #2c3e50 !important; -} - -.copyright { - background-color: #1a252f; -} - -.bg-primary { - background-color: #1abc9c !important; -} - -nav{ - font-weight: 700; -} - -.img-card{ - height: 18vw; - object-fit: cover; -} diff --git a/Chapter26/onlineStore/public/favicon.ico b/Chapter26/onlineStore/public/favicon.ico deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter26/onlineStore/public/img/game.png b/Chapter26/onlineStore/public/img/game.png deleted file mode 100644 index 85420e8bbc16098bf26b4ee63bde0e91a19d1f2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25896 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 cz>% diff --git a/Chapter26/onlineStore/public/img/safe.png b/Chapter26/onlineStore/public/img/safe.png deleted file mode 100644 index 445942c707af53210931f9f4f99f6d3cb69e5d89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19240 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
    w==XB0?3|p=#`o%NsudE(E-U#KS3Snw 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 o>ir+C;RN10sIS0&a;p - - - - - - - - - - - - - - - - - - diff --git a/Chapter26/onlineStore/public/index.php b/Chapter26/onlineStore/public/index.php deleted file mode 100644 index 1d69f3a..0000000 --- a/Chapter26/onlineStore/public/index.php +++ /dev/null @@ -1,55 +0,0 @@ -make(Kernel::class); - -$response = $kernel->handle( - $request = Request::capture() -)->send(); - -$kernel->terminate($request, $response); diff --git a/Chapter26/onlineStore/public/robots.txt b/Chapter26/onlineStore/public/robots.txt deleted file mode 100644 index eb05362..0000000 --- a/Chapter26/onlineStore/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: diff --git a/Chapter26/onlineStore/resources/css/app.css b/Chapter26/onlineStore/resources/css/app.css deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter26/onlineStore/resources/js/app.js b/Chapter26/onlineStore/resources/js/app.js deleted file mode 100644 index 40c55f6..0000000 --- a/Chapter26/onlineStore/resources/js/app.js +++ /dev/null @@ -1 +0,0 @@ -require('./bootstrap'); diff --git a/Chapter26/onlineStore/resources/js/bootstrap.js b/Chapter26/onlineStore/resources/js/bootstrap.js deleted file mode 100644 index dcdc4df..0000000 --- a/Chapter26/onlineStore/resources/js/bootstrap.js +++ /dev/null @@ -1,32 +0,0 @@ -window._ = require('lodash'); - -try { - require('bootstrap'); -} catch (e) {} - -/** - * 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 = require('axios'); - -window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; - -/** - * 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'; - -// window.Pusher = require('pusher-js'); - -// window.Echo = new Echo({ -// broadcaster: 'pusher', -// key: process.env.MIX_PUSHER_APP_KEY, -// cluster: process.env.MIX_PUSHER_APP_CLUSTER, -// forceTLS: true -// }); diff --git a/Chapter26/onlineStore/resources/sass/_variables.scss b/Chapter26/onlineStore/resources/sass/_variables.scss deleted file mode 100644 index 172daaa..0000000 --- a/Chapter26/onlineStore/resources/sass/_variables.scss +++ /dev/null @@ -1,7 +0,0 @@ -// Body -$body-bg: #f8fafc; - -// Typography -$font-family-sans-serif: 'Nunito', sans-serif; -$font-size-base: 0.9rem; -$line-height-base: 1.6; diff --git a/Chapter26/onlineStore/resources/sass/app.scss b/Chapter26/onlineStore/resources/sass/app.scss deleted file mode 100644 index 3193ffa..0000000 --- a/Chapter26/onlineStore/resources/sass/app.scss +++ /dev/null @@ -1,8 +0,0 @@ -// Fonts -@import url('https://fonts.googleapis.com/css?family=Nunito'); - -// Variables -@import 'variables'; - -// Bootstrap -@import '~bootstrap/scss/bootstrap'; diff --git a/Chapter26/onlineStore/resources/views/admin/home/index.blade.php b/Chapter26/onlineStore/resources/views/admin/home/index.blade.php deleted file mode 100644 index a2b4868..0000000 --- a/Chapter26/onlineStore/resources/views/admin/home/index.blade.php +++ /dev/null @@ -1,12 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
    -
    - Admin Panel - Home Page -
    -
    - Welcome to the Admin Panel, use the sidebar to navigate between the different options. -
    -
    -@endsection diff --git a/Chapter26/onlineStore/resources/views/admin/product/edit.blade.php b/Chapter26/onlineStore/resources/views/admin/product/edit.blade.php deleted file mode 100644 index b8e03d8..0000000 --- a/Chapter26/onlineStore/resources/views/admin/product/edit.blade.php +++ /dev/null @@ -1,61 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
    -
    - Edit Product -
    -
    - @if($errors->any()) -
      - @foreach($errors->all() as $error) -
    • - {{ $error }}
    • - @endforeach -
    - @endif - -
    - @csrf - @method('PUT') -
    -
    -
    - -
    - -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -   -
    -
    -
    - - -
    - -
    -
    -
    -@endsection diff --git a/Chapter26/onlineStore/resources/views/admin/product/index.blade.php b/Chapter26/onlineStore/resources/views/admin/product/index.blade.php deleted file mode 100644 index 19fbe4b..0000000 --- a/Chapter26/onlineStore/resources/views/admin/product/index.blade.php +++ /dev/null @@ -1,98 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
    -
    - Create Products -
    -
    - @if($errors->any()) -
      - @foreach($errors->all() as $error) -
    • - {{ $error }}
    • - @endforeach -
    - @endif - -
    - @csrf -
    -
    -
    - -
    - -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -   -
    -
    -
    - - -
    - -
    -
    -
    - -
    -
    - Manage Products -
    -
    - - - - - - - - - - - @foreach ($viewData["products"] as $product) - - - - - - - @endforeach - -
    IDNameEditDelete
    {{ $product->getId() }}{{ $product->getName() }} - - - - -
    - @csrf - @method('DELETE') - -
    -
    -
    -
    -@endsection diff --git a/Chapter26/onlineStore/resources/views/auth/login.blade.php b/Chapter26/onlineStore/resources/views/auth/login.blade.php deleted file mode 100644 index c7e5ea0..0000000 --- a/Chapter26/onlineStore/resources/views/auth/login.blade.php +++ /dev/null @@ -1,73 +0,0 @@ -@extends('layouts.app') - -@section('content') -
    -@endsection diff --git a/Chapter26/onlineStore/resources/views/auth/passwords/confirm.blade.php b/Chapter26/onlineStore/resources/views/auth/passwords/confirm.blade.php deleted file mode 100644 index f8c8e61..0000000 --- a/Chapter26/onlineStore/resources/views/auth/passwords/confirm.blade.php +++ /dev/null @@ -1,49 +0,0 @@ -@extends('layouts.app') - -@section('content') - -@endsection diff --git a/Chapter26/onlineStore/resources/views/auth/passwords/email.blade.php b/Chapter26/onlineStore/resources/views/auth/passwords/email.blade.php deleted file mode 100644 index d1ac783..0000000 --- a/Chapter26/onlineStore/resources/views/auth/passwords/email.blade.php +++ /dev/null @@ -1,47 +0,0 @@ -@extends('layouts.app') - -@section('content') -
    -
    -
    -
    -
    {{ __('Reset Password') }}
    - -
    - @if (session('status')) - - @endif - -
    - @csrf - -
    - - -
    - - - @error('email') - - {{ $message }} - - @enderror -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -@endsection diff --git a/Chapter26/onlineStore/resources/views/auth/passwords/reset.blade.php b/Chapter26/onlineStore/resources/views/auth/passwords/reset.blade.php deleted file mode 100644 index dccf6c6..0000000 --- a/Chapter26/onlineStore/resources/views/auth/passwords/reset.blade.php +++ /dev/null @@ -1,65 +0,0 @@ -@extends('layouts.app') - -@section('content') -
    -
    -
    -
    -
    {{ __('Reset Password') }}
    - -
    -
    - @csrf - - - -
    - - -
    - - - @error('email') - - {{ $message }} - - @enderror -
    -
    - -
    - - -
    - - - @error('password') - - {{ $message }} - - @enderror -
    -
    - -
    - - -
    - -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -@endsection diff --git a/Chapter26/onlineStore/resources/views/auth/register.blade.php b/Chapter26/onlineStore/resources/views/auth/register.blade.php deleted file mode 100644 index e001a0b..0000000 --- a/Chapter26/onlineStore/resources/views/auth/register.blade.php +++ /dev/null @@ -1,77 +0,0 @@ -@extends('layouts.app') - -@section('content') -
    -
    -
    -
    -
    {{ __('Register') }}
    - -
    -
    - @csrf - -
    - - -
    - - - @error('name') - - {{ $message }} - - @enderror -
    -
    - -
    - - -
    - - - @error('email') - - {{ $message }} - - @enderror -
    -
    - -
    - - -
    - - - @error('password') - - {{ $message }} - - @enderror -
    -
    - -
    - - -
    - -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -@endsection diff --git a/Chapter26/onlineStore/resources/views/auth/verify.blade.php b/Chapter26/onlineStore/resources/views/auth/verify.blade.php deleted file mode 100644 index 9f8c1bc..0000000 --- a/Chapter26/onlineStore/resources/views/auth/verify.blade.php +++ /dev/null @@ -1,28 +0,0 @@ -@extends('layouts.app') - -@section('content') -
    -
    -
    -
    -
    {{ __('Verify Your Email Address') }}
    - -
    - @if (session('resent')) - - @endif - - {{ __('Before proceeding, please check your email for a verification link.') }} - {{ __('If you did not receive the email') }}, -
    - @csrf - . -
    -
    -
    -
    -
    -
    -@endsection diff --git a/Chapter26/onlineStore/resources/views/cart/index.blade.php b/Chapter26/onlineStore/resources/views/cart/index.blade.php deleted file mode 100644 index b45015b..0000000 --- a/Chapter26/onlineStore/resources/views/cart/index.blade.php +++ /dev/null @@ -1,43 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    -@endsection diff --git a/Chapter26/onlineStore/resources/views/home.blade.php b/Chapter26/onlineStore/resources/views/home.blade.php deleted file mode 100644 index 1f34466..0000000 --- a/Chapter26/onlineStore/resources/views/home.blade.php +++ /dev/null @@ -1,23 +0,0 @@ -@extends('layouts.app') - -@section('content') -
    -
    -
    -
    -
    {{ __('Dashboard') }}
    - -
    - @if (session('status')) - - @endif - - {{ __('You are logged in!') }} -
    -
    -
    -
    -
    -@endsection diff --git a/Chapter26/onlineStore/resources/views/home/about.blade.php b/Chapter26/onlineStore/resources/views/home/about.blade.php deleted file mode 100644 index f79abf3..0000000 --- a/Chapter26/onlineStore/resources/views/home/about.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    -
    -
    -

    {{ $viewData["description"] }}

    -
    -
    -

    {{ $viewData["author"] }}

    -
    -
    -
    -@endsection diff --git a/Chapter26/onlineStore/resources/views/home/index.blade.php b/Chapter26/onlineStore/resources/views/home/index.blade.php deleted file mode 100644 index 1affb20..0000000 --- a/Chapter26/onlineStore/resources/views/home/index.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('content') -
    -
    - -
    -
    - -
    -
    - -
    -
    -@endsection diff --git a/Chapter26/onlineStore/resources/views/layouts/admin.blade.php b/Chapter26/onlineStore/resources/views/layouts/admin.blade.php deleted file mode 100644 index 4aff3f8..0000000 --- a/Chapter26/onlineStore/resources/views/layouts/admin.blade.php +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - @yield('title', 'Admin - Online Store') - - - -
    - - - -
    - - -
    - @yield('content') -
    -
    -
    - - - - - - - - - diff --git a/Chapter26/onlineStore/resources/views/layouts/app.blade.php b/Chapter26/onlineStore/resources/views/layouts/app.blade.php deleted file mode 100644 index 7b86f0e..0000000 --- a/Chapter26/onlineStore/resources/views/layouts/app.blade.php +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - @yield('title', 'Online Store') - - - - - -
    -
    -

    @yield('subtitle', 'A Laravel Online Store')

    -
    -
    - - -
    - @yield('content') -
    - - - - - - - diff --git a/Chapter26/onlineStore/resources/views/product/index.blade.php b/Chapter26/onlineStore/resources/views/product/index.blade.php deleted file mode 100644 index 64c3e18..0000000 --- a/Chapter26/onlineStore/resources/views/product/index.blade.php +++ /dev/null @@ -1,18 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    - @foreach ($viewData["products"] as $product) - - @endforeach -
    -@endsection diff --git a/Chapter26/onlineStore/resources/views/product/show.blade.php b/Chapter26/onlineStore/resources/views/product/show.blade.php deleted file mode 100644 index 801ea09..0000000 --- a/Chapter26/onlineStore/resources/views/product/show.blade.php +++ /dev/null @@ -1,36 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    -
    -
    - getImage()) }}" class="img-fluid rounded-start"> -
    -
    -
    -
    - {{ $viewData["product"]->getName() }} (${{ $viewData["product"]->getPrice() }}) -
    -

    {{ $viewData["product"]->getDescription() }}

    -

    -

    -
    - @csrf -
    -
    -
    Quantity
    - -
    -
    -
    - -
    -
    -
    -

    -
    -
    -
    -
    -@endsection diff --git a/Chapter26/onlineStore/resources/views/welcome.blade.php b/Chapter26/onlineStore/resources/views/welcome.blade.php deleted file mode 100644 index c587c72..0000000 --- a/Chapter26/onlineStore/resources/views/welcome.blade.php +++ /dev/null @@ -1,7 +0,0 @@ -@extends('layouts.app') -@section('title', 'Home Page - Online Store') -@section('content') -
    - Welcome to the application -
    -@endsection \ No newline at end of file diff --git a/Chapter26/onlineStore/routes/api.php b/Chapter26/onlineStore/routes/api.php deleted file mode 100644 index eb6fa48..0000000 --- a/Chapter26/onlineStore/routes/api.php +++ /dev/null @@ -1,19 +0,0 @@ -get('/user', function (Request $request) { - return $request->user(); -}); diff --git a/Chapter26/onlineStore/routes/channels.php b/Chapter26/onlineStore/routes/channels.php deleted file mode 100644 index 5d451e1..0000000 --- a/Chapter26/onlineStore/routes/channels.php +++ /dev/null @@ -1,18 +0,0 @@ -id === (int) $id; -}); diff --git a/Chapter26/onlineStore/routes/console.php b/Chapter26/onlineStore/routes/console.php deleted file mode 100644 index e05f4c9..0000000 --- a/Chapter26/onlineStore/routes/console.php +++ /dev/null @@ -1,19 +0,0 @@ -comment(Inspiring::quote()); -})->purpose('Display an inspiring quote'); diff --git a/Chapter26/onlineStore/routes/web.php b/Chapter26/onlineStore/routes/web.php deleted file mode 100644 index 9ed67aa..0000000 --- a/Chapter26/onlineStore/routes/web.php +++ /dev/null @@ -1,34 +0,0 @@ -name("home.index"); -Route::get('/about', 'App\Http\Controllers\HomeController@about')->name("home.about"); -Route::get('/products', 'App\Http\Controllers\ProductController@index')->name("product.index"); -Route::get('/products/{id}', 'App\Http\Controllers\ProductController@show')->name("product.show"); - -Route::get('/cart', 'App\Http\Controllers\CartController@index')->name("cart.index"); -Route::get('/cart/delete', 'App\Http\Controllers\CartController@delete')->name("cart.delete"); -Route::post('/cart/add/{id}', 'App\Http\Controllers\CartController@add')->name("cart.add"); - -Route::middleware('admin')->group(function () { - Route::get('/admin', 'App\Http\Controllers\Admin\AdminHomeController@index')->name("admin.home.index"); - Route::get('/admin/products', 'App\Http\Controllers\Admin\AdminProductController@index')->name("admin.product.index"); - Route::post('/admin/products/store', 'App\Http\Controllers\Admin\AdminProductController@store')->name("admin.product.store"); - Route::delete('/admin/products/{id}/delete', 'App\Http\Controllers\Admin\AdminProductController@delete')->name("admin.product.delete"); - Route::get('/admin/products/{id}/edit', 'App\Http\Controllers\Admin\AdminProductController@edit')->name("admin.product.edit"); - Route::put('/admin/products/{id}/update', 'App\Http\Controllers\Admin\AdminProductController@update')->name("admin.product.update"); -}); - -Auth::routes(); diff --git a/Chapter26/onlineStore/storage/app/.gitignore b/Chapter26/onlineStore/storage/app/.gitignore deleted file mode 100644 index 8f4803c..0000000 --- a/Chapter26/onlineStore/storage/app/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!public/ -!.gitignore diff --git a/Chapter26/onlineStore/storage/app/public/.gitignore b/Chapter26/onlineStore/storage/app/public/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter26/onlineStore/storage/app/public/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter26/onlineStore/storage/framework/.gitignore b/Chapter26/onlineStore/storage/framework/.gitignore deleted file mode 100644 index 05c4471..0000000 --- a/Chapter26/onlineStore/storage/framework/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -compiled.php -config.php -down -events.scanned.php -maintenance.php -routes.php -routes.scanned.php -schedule-* -services.json diff --git a/Chapter26/onlineStore/storage/framework/cache/.gitignore b/Chapter26/onlineStore/storage/framework/cache/.gitignore deleted file mode 100644 index 01e4a6c..0000000 --- a/Chapter26/onlineStore/storage/framework/cache/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!data/ -!.gitignore diff --git a/Chapter26/onlineStore/storage/framework/cache/data/.gitignore b/Chapter26/onlineStore/storage/framework/cache/data/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter26/onlineStore/storage/framework/cache/data/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter26/onlineStore/storage/framework/sessions/.gitignore b/Chapter26/onlineStore/storage/framework/sessions/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter26/onlineStore/storage/framework/sessions/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter26/onlineStore/storage/framework/testing/.gitignore b/Chapter26/onlineStore/storage/framework/testing/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter26/onlineStore/storage/framework/testing/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter26/onlineStore/storage/framework/views/.gitignore b/Chapter26/onlineStore/storage/framework/views/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter26/onlineStore/storage/framework/views/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter26/onlineStore/storage/logs/.gitignore b/Chapter26/onlineStore/storage/logs/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter26/onlineStore/storage/logs/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter26/onlineStore/tests/CreatesApplication.php b/Chapter26/onlineStore/tests/CreatesApplication.php deleted file mode 100644 index 547152f..0000000 --- a/Chapter26/onlineStore/tests/CreatesApplication.php +++ /dev/null @@ -1,22 +0,0 @@ -make(Kernel::class)->bootstrap(); - - return $app; - } -} diff --git a/Chapter26/onlineStore/tests/Feature/ExampleTest.php b/Chapter26/onlineStore/tests/Feature/ExampleTest.php deleted file mode 100644 index 78ccc21..0000000 --- a/Chapter26/onlineStore/tests/Feature/ExampleTest.php +++ /dev/null @@ -1,21 +0,0 @@ -get('/'); - - $response->assertStatus(200); - } -} diff --git a/Chapter26/onlineStore/tests/TestCase.php b/Chapter26/onlineStore/tests/TestCase.php deleted file mode 100644 index 2932d4a..0000000 --- a/Chapter26/onlineStore/tests/TestCase.php +++ /dev/null @@ -1,10 +0,0 @@ -assertTrue(true); - } -} diff --git a/Chapter26/onlineStore/webpack.mix.js b/Chapter26/onlineStore/webpack.mix.js deleted file mode 100644 index 1a2a958..0000000 --- a/Chapter26/onlineStore/webpack.mix.js +++ /dev/null @@ -1,16 +0,0 @@ -const mix = require('laravel-mix'); - -/* - |-------------------------------------------------------------------------- - | Mix Asset Management - |-------------------------------------------------------------------------- - | - | Mix provides a clean, fluent API for defining some Webpack build steps - | for your Laravel application. By default, we are compiling the Sass - | file for the application as well as bundling up all the JS files. - | - */ - -mix.js('resources/js/app.js', 'public/js') - .sass('resources/sass/app.scss', 'public/css') - .sourceMaps(); diff --git a/Chapter27/onlineStore/.editorconfig b/Chapter27/onlineStore/.editorconfig deleted file mode 100644 index 1671c9b..0000000 --- a/Chapter27/onlineStore/.editorconfig +++ /dev/null @@ -1,18 +0,0 @@ -root = true - -[*] -charset = utf-8 -end_of_line = lf -insert_final_newline = true -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true - -[*.md] -trim_trailing_whitespace = false - -[*.{yml,yaml}] -indent_size = 2 - -[docker-compose.yml] -indent_size = 4 diff --git a/Chapter27/onlineStore/.env.example b/Chapter27/onlineStore/.env.example deleted file mode 100644 index 8510237..0000000 --- a/Chapter27/onlineStore/.env.example +++ /dev/null @@ -1,52 +0,0 @@ -APP_NAME=Laravel -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=laravel -DB_USERNAME=root -DB_PASSWORD= - -BROADCAST_DRIVER=log -CACHE_DRIVER=file -FILESYSTEM_DISK=local -QUEUE_CONNECTION=sync -SESSION_DRIVER=file -SESSION_LIFETIME=120 - -MEMCACHED_HOST=127.0.0.1 - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -MAIL_MAILER=smtp -MAIL_HOST=mailhog -MAIL_PORT=1025 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS=null -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_APP_CLUSTER=mt1 - -MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/Chapter27/onlineStore/.gitattributes b/Chapter27/onlineStore/.gitattributes deleted file mode 100644 index 510d996..0000000 --- a/Chapter27/onlineStore/.gitattributes +++ /dev/null @@ -1,10 +0,0 @@ -* text=auto - -*.blade.php diff=html -*.css diff=css -*.html diff=html -*.md diff=markdown -*.php diff=php - -/.github export-ignore -CHANGELOG.md export-ignore diff --git a/Chapter27/onlineStore/.gitignore b/Chapter27/onlineStore/.gitignore deleted file mode 100644 index eb003b0..0000000 --- a/Chapter27/onlineStore/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -/node_modules -/public/hot -/public/storage -/storage/*.key -/vendor -.env -.env.backup -.phpunit.result.cache -docker-compose.override.yml -Homestead.json -Homestead.yaml -npm-debug.log -yarn-error.log -/.idea -/.vscode diff --git a/Chapter27/onlineStore/.styleci.yml b/Chapter27/onlineStore/.styleci.yml deleted file mode 100644 index 679a631..0000000 --- a/Chapter27/onlineStore/.styleci.yml +++ /dev/null @@ -1,13 +0,0 @@ -php: - preset: laravel - version: 8 - disabled: - - no_unused_imports - finder: - not-name: - - index.php -js: - finder: - not-name: - - webpack.mix.js -css: true diff --git a/Chapter27/onlineStore/README.md b/Chapter27/onlineStore/README.md deleted file mode 100644 index f171eca..0000000 --- a/Chapter27/onlineStore/README.md +++ /dev/null @@ -1,64 +0,0 @@ -

    - -

    -Build Status -Total Downloads -Latest Stable Version -License -

    - -## About Laravel - -Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as: - -- [Simple, fast routing engine](https://laravel.com/docs/routing). -- [Powerful dependency injection container](https://laravel.com/docs/container). -- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage. -- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent). -- Database agnostic [schema migrations](https://laravel.com/docs/migrations). -- [Robust background job processing](https://laravel.com/docs/queues). -- [Real-time event broadcasting](https://laravel.com/docs/broadcasting). - -Laravel is accessible, powerful, and provides tools required for large, robust applications. - -## Learning Laravel - -Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework. - -If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 2000 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library. - -## Laravel Sponsors - -We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell). - -### Premium Partners - -- **[Vehikl](https://vehikl.com/)** -- **[Tighten Co.](https://tighten.co)** -- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** -- **[64 Robots](https://64robots.com)** -- **[Cubet Techno Labs](https://cubettech.com)** -- **[Cyber-Duck](https://cyber-duck.co.uk)** -- **[Many](https://www.many.co.uk)** -- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)** -- **[DevSquad](https://devsquad.com)** -- **[Curotec](https://www.curotec.com/services/technologies/laravel/)** -- **[OP.GG](https://op.gg)** -- **[WebReinvent](https://webreinvent.com/?utm_source=laravel&utm_medium=github&utm_campaign=patreon-sponsors)** -- **[Lendio](https://lendio.com)** - -## Contributing - -Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions). - -## Code of Conduct - -In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). - -## Security Vulnerabilities - -If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed. - -## License - -The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). diff --git a/Chapter27/onlineStore/app/Console/Kernel.php b/Chapter27/onlineStore/app/Console/Kernel.php deleted file mode 100644 index d8bc1d2..0000000 --- a/Chapter27/onlineStore/app/Console/Kernel.php +++ /dev/null @@ -1,32 +0,0 @@ -command('inspire')->hourly(); - } - - /** - * Register the commands for the application. - * - * @return void - */ - protected function commands() - { - $this->load(__DIR__.'/Commands'); - - require base_path('routes/console.php'); - } -} diff --git a/Chapter27/onlineStore/app/Exceptions/Handler.php b/Chapter27/onlineStore/app/Exceptions/Handler.php deleted file mode 100644 index 8e7fbd1..0000000 --- a/Chapter27/onlineStore/app/Exceptions/Handler.php +++ /dev/null @@ -1,41 +0,0 @@ -> - */ - protected $dontReport = [ - // - ]; - - /** - * A list of the inputs that are never flashed for validation exceptions. - * - * @var array - */ - protected $dontFlash = [ - 'current_password', - 'password', - 'password_confirmation', - ]; - - /** - * Register the exception handling callbacks for the application. - * - * @return void - */ - public function register() - { - $this->reportable(function (Throwable $e) { - // - }); - } -} diff --git a/Chapter27/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php b/Chapter27/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php deleted file mode 100644 index cd78cb3..0000000 --- a/Chapter27/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php +++ /dev/null @@ -1,16 +0,0 @@ -with("viewData", $viewData); - } -} diff --git a/Chapter27/onlineStore/app/Http/Controllers/Admin/AdminProductController.php b/Chapter27/onlineStore/app/Http/Controllers/Admin/AdminProductController.php deleted file mode 100644 index d1c6c52..0000000 --- a/Chapter27/onlineStore/app/Http/Controllers/Admin/AdminProductController.php +++ /dev/null @@ -1,79 +0,0 @@ -with("viewData", $viewData); - } - - public function store(Request $request) - { - Product::validate($request); - - $newProduct = new Product(); - $newProduct->setName($request->input('name')); - $newProduct->setDescription($request->input('description')); - $newProduct->setPrice($request->input('price')); - $newProduct->setImage("game.png"); - $newProduct->save(); - - if ($request->hasFile('image')) { - $imageName = $newProduct->getId().".".$request->file('image')->extension(); - Storage::disk('public')->put( - $imageName, - file_get_contents($request->file('image')->getRealPath()) - ); - $newProduct->setImage($imageName); - $newProduct->save(); - } - - return back(); - } - - public function delete($id) - { - Product::destroy($id); - return back(); - } - - public function edit($id) - { - $viewData = []; - $viewData["title"] = "Admin Page - Edit Product - Online Store"; - $viewData["product"] = Product::findOrFail($id); - return view('admin.product.edit')->with("viewData", $viewData); - } - - public function update(Request $request, $id) - { - Product::validate($request); - - $product = Product::findOrFail($id); - $product->setName($request->input('name')); - $product->setDescription($request->input('description')); - $product->setPrice($request->input('price')); - - if ($request->hasFile('image')) { - $imageName = $product->getId().".".$request->file('image')->extension(); - Storage::disk('public')->put( - $imageName, - file_get_contents($request->file('image')->getRealPath()) - ); - $product->setImage($imageName); - } - - $product->save(); - return redirect()->route('admin.product.index'); - } -} diff --git a/Chapter27/onlineStore/app/Http/Controllers/Auth/ConfirmPasswordController.php b/Chapter27/onlineStore/app/Http/Controllers/Auth/ConfirmPasswordController.php deleted file mode 100644 index 138c1f0..0000000 --- a/Chapter27/onlineStore/app/Http/Controllers/Auth/ConfirmPasswordController.php +++ /dev/null @@ -1,40 +0,0 @@ -middleware('auth'); - } -} diff --git a/Chapter27/onlineStore/app/Http/Controllers/Auth/ForgotPasswordController.php b/Chapter27/onlineStore/app/Http/Controllers/Auth/ForgotPasswordController.php deleted file mode 100644 index 465c39c..0000000 --- a/Chapter27/onlineStore/app/Http/Controllers/Auth/ForgotPasswordController.php +++ /dev/null @@ -1,22 +0,0 @@ -middleware('guest')->except('logout'); - } -} diff --git a/Chapter27/onlineStore/app/Http/Controllers/Auth/RegisterController.php b/Chapter27/onlineStore/app/Http/Controllers/Auth/RegisterController.php deleted file mode 100644 index 87e3a82..0000000 --- a/Chapter27/onlineStore/app/Http/Controllers/Auth/RegisterController.php +++ /dev/null @@ -1,74 +0,0 @@ -middleware('guest'); - } - - /** - * Get a validator for an incoming registration request. - * - * @param array $data - * @return \Illuminate\Contracts\Validation\Validator - */ - protected function validator(array $data) - { - return Validator::make($data, [ - 'name' => ['required', 'string', 'max:255'], - 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], - 'password' => ['required', 'string', 'min:8', 'confirmed'], - ]); - } - - /** - * Create a new user instance after a valid registration. - * - * @param array $data - * @return \App\Models\User - */ - protected function create(array $data) - { - return User::create([ - 'name' => $data['name'], - 'email' => $data['email'], - 'password' => Hash::make($data['password']), - 'balance' => 5000, - ]); - } -} diff --git a/Chapter27/onlineStore/app/Http/Controllers/Auth/ResetPasswordController.php b/Chapter27/onlineStore/app/Http/Controllers/Auth/ResetPasswordController.php deleted file mode 100644 index b1726a3..0000000 --- a/Chapter27/onlineStore/app/Http/Controllers/Auth/ResetPasswordController.php +++ /dev/null @@ -1,30 +0,0 @@ -middleware('auth'); - $this->middleware('signed')->only('verify'); - $this->middleware('throttle:6,1')->only('verify', 'resend'); - } -} diff --git a/Chapter27/onlineStore/app/Http/Controllers/CartController.php b/Chapter27/onlineStore/app/Http/Controllers/CartController.php deleted file mode 100644 index 9dcfaba..0000000 --- a/Chapter27/onlineStore/app/Http/Controllers/CartController.php +++ /dev/null @@ -1,87 +0,0 @@ -session()->get("products"); - if ($productsInSession) { - $productsInCart = Product::findMany(array_keys($productsInSession)); - $total = Product::sumPricesByQuantities($productsInCart, $productsInSession); - } - - $viewData = []; - $viewData["title"] = "Cart - Online Store"; - $viewData["subtitle"] = "Shopping Cart"; - $viewData["total"] = $total; - $viewData["products"] = $productsInCart; - return view('cart.index')->with("viewData", $viewData); - } - - public function add(Request $request, $id) - { - $products = $request->session()->get("products"); - $products[$id] = $request->input('quantity'); - $request->session()->put('products', $products); - - return redirect()->route('cart.index'); - } - - public function delete(Request $request) - { - $request->session()->forget('products'); - return back(); - } - - public function purchase(Request $request) - { - $productsInSession = $request->session()->get("products"); - if ($productsInSession) { - $userId = Auth::user()->getId(); - $order = new Order(); - $order->setUserId($userId); - $order->setTotal(0); - $order->save(); - - $total = 0; - $productsInCart = Product::findMany(array_keys($productsInSession)); - foreach ($productsInCart as $product) { - $quantity = $productsInSession[$product->getId()]; - $item = new Item(); - $item->setQuantity($quantity); - $item->setPrice($product->getPrice()); - $item->setProductId($product->getId()); - $item->setOrderId($order->getId()); - $item->save(); - $total = $total + ($product->getPrice()*$quantity); - } - $order->setTotal($total); - $order->save(); - - $newBalance = Auth::user()->getBalance() - $total; - Auth::user()->setBalance($newBalance); - Auth::user()->save(); - - $request->session()->forget('products'); - - $viewData = []; - $viewData["title"] = "Purchase - Online Store"; - $viewData["subtitle"] = "Purchase Status"; - $viewData["order"] = $order; - return view('cart.purchase')->with("viewData", $viewData); - } else { - return redirect()->route('cart.index'); - } - } -} diff --git a/Chapter27/onlineStore/app/Http/Controllers/Controller.php b/Chapter27/onlineStore/app/Http/Controllers/Controller.php deleted file mode 100644 index a0a2a8a..0000000 --- a/Chapter27/onlineStore/app/Http/Controllers/Controller.php +++ /dev/null @@ -1,13 +0,0 @@ -with("viewData", $viewData); - } - - public function about() - { - $viewData = []; - $viewData["title"] = "About us - Online Store"; - $viewData["subtitle"] = "About us"; - $viewData["description"] = "This is an about page ..."; - $viewData["author"] = "Developed by: Your Name"; - return view('home.about')->with("viewData", $viewData); - } -} diff --git a/Chapter27/onlineStore/app/Http/Controllers/ProductController.php b/Chapter27/onlineStore/app/Http/Controllers/ProductController.php deleted file mode 100644 index d27a3a3..0000000 --- a/Chapter27/onlineStore/app/Http/Controllers/ProductController.php +++ /dev/null @@ -1,29 +0,0 @@ -with("viewData", $viewData); - } - - public function show($id) - { - $viewData = []; - $product = Product::findOrFail($id); - $viewData["title"] = $product->getName()." - Online Store"; - $viewData["subtitle"] = $product->getName()." - Product information"; - $viewData["product"] = $product; - return view('product.show')->with("viewData", $viewData); - } -} diff --git a/Chapter27/onlineStore/app/Http/Kernel.php b/Chapter27/onlineStore/app/Http/Kernel.php deleted file mode 100644 index c10d1c5..0000000 --- a/Chapter27/onlineStore/app/Http/Kernel.php +++ /dev/null @@ -1,68 +0,0 @@ - - */ - protected $middleware = [ - // \App\Http\Middleware\TrustHosts::class, - \App\Http\Middleware\TrustProxies::class, - \Fruitcake\Cors\HandleCors::class, - \App\Http\Middleware\PreventRequestsDuringMaintenance::class, - \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, - \App\Http\Middleware\TrimStrings::class, - \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, - ]; - - /** - * The application's route middleware groups. - * - * @var array> - */ - protected $middlewareGroups = [ - 'web' => [ - \App\Http\Middleware\EncryptCookies::class, - \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, - \Illuminate\Session\Middleware\StartSession::class, - // \Illuminate\Session\Middleware\AuthenticateSession::class, - \Illuminate\View\Middleware\ShareErrorsFromSession::class, - \App\Http\Middleware\VerifyCsrfToken::class, - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - - 'api' => [ - // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, - 'throttle:api', - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - ]; - - /** - * The application's route middleware. - * - * These middleware may be assigned to groups or used individually. - * - * @var array - */ - protected $routeMiddleware = [ - 'auth' => \App\Http\Middleware\Authenticate::class, - 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::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, - 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, - 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, - 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, - 'admin' => \App\Http\Middleware\AdminAuthMiddleware::class, - ]; -} diff --git a/Chapter27/onlineStore/app/Http/Middleware/AdminAuthMiddleware.php b/Chapter27/onlineStore/app/Http/Middleware/AdminAuthMiddleware.php deleted file mode 100644 index 6e5306b..0000000 --- a/Chapter27/onlineStore/app/Http/Middleware/AdminAuthMiddleware.php +++ /dev/null @@ -1,26 +0,0 @@ -getRole() == 'admin') { - return $next($request); - } else { - return redirect()->route('home.index'); - } - } -} diff --git a/Chapter27/onlineStore/app/Http/Middleware/Authenticate.php b/Chapter27/onlineStore/app/Http/Middleware/Authenticate.php deleted file mode 100644 index 704089a..0000000 --- a/Chapter27/onlineStore/app/Http/Middleware/Authenticate.php +++ /dev/null @@ -1,21 +0,0 @@ -expectsJson()) { - return route('login'); - } - } -} diff --git a/Chapter27/onlineStore/app/Http/Middleware/EncryptCookies.php b/Chapter27/onlineStore/app/Http/Middleware/EncryptCookies.php deleted file mode 100644 index 867695b..0000000 --- a/Chapter27/onlineStore/app/Http/Middleware/EncryptCookies.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter27/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/Chapter27/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php deleted file mode 100644 index 74cbd9a..0000000 --- a/Chapter27/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter27/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php b/Chapter27/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php deleted file mode 100644 index a2813a0..0000000 --- a/Chapter27/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php +++ /dev/null @@ -1,32 +0,0 @@ -check()) { - return redirect(RouteServiceProvider::HOME); - } - } - - return $next($request); - } -} diff --git a/Chapter27/onlineStore/app/Http/Middleware/TrimStrings.php b/Chapter27/onlineStore/app/Http/Middleware/TrimStrings.php deleted file mode 100644 index 88cadca..0000000 --- a/Chapter27/onlineStore/app/Http/Middleware/TrimStrings.php +++ /dev/null @@ -1,19 +0,0 @@ - - */ - protected $except = [ - 'current_password', - 'password', - 'password_confirmation', - ]; -} diff --git a/Chapter27/onlineStore/app/Http/Middleware/TrustHosts.php b/Chapter27/onlineStore/app/Http/Middleware/TrustHosts.php deleted file mode 100644 index 7186414..0000000 --- a/Chapter27/onlineStore/app/Http/Middleware/TrustHosts.php +++ /dev/null @@ -1,20 +0,0 @@ - - */ - public function hosts() - { - return [ - $this->allSubdomainsOfApplicationUrl(), - ]; - } -} diff --git a/Chapter27/onlineStore/app/Http/Middleware/TrustProxies.php b/Chapter27/onlineStore/app/Http/Middleware/TrustProxies.php deleted file mode 100644 index 3391630..0000000 --- a/Chapter27/onlineStore/app/Http/Middleware/TrustProxies.php +++ /dev/null @@ -1,28 +0,0 @@ -|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/Chapter27/onlineStore/app/Http/Middleware/VerifyCsrfToken.php b/Chapter27/onlineStore/app/Http/Middleware/VerifyCsrfToken.php deleted file mode 100644 index 9e86521..0000000 --- a/Chapter27/onlineStore/app/Http/Middleware/VerifyCsrfToken.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter27/onlineStore/app/Models/Item.php b/Chapter27/onlineStore/app/Models/Item.php deleted file mode 100644 index 8d19619..0000000 --- a/Chapter27/onlineStore/app/Models/Item.php +++ /dev/null @@ -1,133 +0,0 @@ -attributes['id'] - int - contains the item primary key (id) - * $this->attributes['quantity'] - int - contains the item quantity - * $this->attributes['price'] - int - contains the item price - * $this->attributes['order_id'] - int - contains the referenced order id - * $this->attributes['product_id'] - int - contains the referenced product id - * $this->attributes['created_at'] - timestamp - contains the item creation date - * $this->attributes['updated_at'] - timestamp - contains the item update date - * $this->order - Order - contains the associated Order - * $this->product - Product - contains the associated Product - */ - - public static function validate($request) - { - $request->validate([ - "price" => "required|numeric|gt:0", - "quantity" => "required|numeric|gt:0", - "product_id" => "required|exists:products,id", - "order_id" => "required|exists:orders,id", - ]); - } - - public function getId() - { - return $this->attributes['id']; - } - - public function setId($id) - { - $this->attributes['id'] = $id; - } - - public function getQuantity() - { - return $this->attributes['quantity']; - } - - public function setQuantity($quantity) - { - $this->attributes['quantity'] = $quantity; - } - - public function getPrice() - { - return $this->attributes['price']; - } - - public function setPrice($price) - { - $this->attributes['price'] = $price; - } - - public function getOrderId() - { - return $this->attributes['order_id']; - } - - public function setOrderId($orderId) - { - $this->attributes['order_id'] = $orderId; - } - - public function getProductId() - { - return $this->attributes['product_id']; - } - - public function setProductId($productId) - { - $this->attributes['product_id'] = $productId; - } - - public function getCreatedAt() - { - return $this->attributes['created_at']; - } - - public function setCreatedAt($createdAt) - { - $this->attributes['created_at'] = $createdAt; - } - - public function getUpdatedAt() - { - return $this->attributes['updated_at']; - } - - public function setUpdatedAt($updatedAt) - { - $this->attributes['updated_at'] = $updatedAt; - } - - public function order() - { - return $this->belongsTo(Order::class); - } - - public function getOrder() - { - return $this->order; - } - - public function setOrder($order) - { - $this->order = $order; - } - - public function product() - { - return $this->belongsTo(Product::class); - } - - public function getProduct() - { - return $this->product; - } - - public function setProduct($product) - { - $this->product = $product; - } -} diff --git a/Chapter27/onlineStore/app/Models/Order.php b/Chapter27/onlineStore/app/Models/Order.php deleted file mode 100644 index 28ce6ad..0000000 --- a/Chapter27/onlineStore/app/Models/Order.php +++ /dev/null @@ -1,109 +0,0 @@ -attributes['id'] - int - contains the order primary key (id) - * $this->attributes['total'] - string - contains the order name - * $this->attributes['user_id'] - int - contains the referenced user id - * $this->attributes['created_at'] - timestamp - contains the order creation date - * $this->attributes['updated_at'] - timestamp - contains the order update date - * $this->user - User - contains the associated User - * $this->items - Item[] - contains the associated items - */ - - public static function validate($request) - { - $request->validate([ - "total" => "required|numeric", - "user_id" => "required|exists:users,id", - ]); - } - - public function getId() - { - return $this->attributes['id']; - } - - public function setId($id) - { - $this->attributes['id'] = $id; - } - - public function getTotal() - { - return $this->attributes['total']; - } - - public function setTotal($total) - { - $this->attributes['total'] = $total; - } - - public function getUserId() - { - return $this->attributes['user_id']; - } - - public function setUserId($userId) - { - $this->attributes['user_id'] = $userId; - } - - public function getCreatedAt() - { - return $this->attributes['created_at']; - } - - public function setCreatedAt($createdAt) - { - $this->attributes['created_at'] = $createdAt; - } - - public function getUpdatedAt() - { - return $this->attributes['updated_at']; - } - - public function setUpdatedAt($updatedAt) - { - $this->attributes['updated_at'] = $updatedAt; - } - - public function user() - { - return $this->belongsTo(User::class); - } - - public function getUser() - { - return $this->user; - } - - public function setUser($user) - { - $this->user = $user; - } - - public function items() - { - return $this->hasMany(Item::class); - } - - public function getItems() - { - return $this->items; - } - - public function setItems($items) - { - $this->items = $items; - } -} diff --git a/Chapter27/onlineStore/app/Models/Product.php b/Chapter27/onlineStore/app/Models/Product.php deleted file mode 100644 index fb8585a..0000000 --- a/Chapter27/onlineStore/app/Models/Product.php +++ /dev/null @@ -1,126 +0,0 @@ -attributes['id'] - int - contains the product primary key (id) - * $this->attributes['name'] - string - contains the product name - * $this->attributes['description'] - string - contains the product description - * $this->attributes['image'] - string - contains the product image - * $this->attributes['price'] - int - contains the product price - * $this->attributes['created_at'] - timestamp - contains the product creation date - * $this->attributes['updated_at'] - timestamp - contains the product update date - * $this->items - Item[] - contains the associated items - */ - - public static function validate($request) - { - $request->validate([ - "name" => "required|max:255", - "description" => "required", - "price" => "required|numeric|gt:0", - 'image' => 'image', - ]); - } - - public static function sumPricesByQuantities($products, $productsInSession) - { - $total = 0; - foreach ($products as $product) { - $total = $total + ($product->getPrice()*$productsInSession[$product->getId()]); - } - - return $total; - } - - public function getId() - { - return $this->attributes['id']; - } - - public function setId($id) - { - $this->attributes['id'] = $id; - } - - public function getName() - { - return $this->attributes['name']; - } - - public function setName($name) - { - $this->attributes['name'] = $name; - } - - public function getDescription() - { - return $this->attributes['description']; - } - - public function setDescription($description) - { - $this->attributes['description'] = $description; - } - - public function getImage() - { - return $this->attributes['image']; - } - - public function setImage($image) - { - $this->attributes['image'] = $image; - } - - public function getPrice() - { - return $this->attributes['price']; - } - - public function setPrice($price) - { - $this->attributes['price'] = $price; - } - - public function getCreatedAt() - { - return $this->attributes['created_at']; - } - - public function setCreatedAt($createdAt) - { - $this->attributes['created_at'] = $createdAt; - } - - public function getUpdatedAt() - { - return $this->attributes['updated_at']; - } - - public function setUpdatedAt($updatedAt) - { - $this->attributes['updated_at'] = $updatedAt; - } - - public function items() - { - return $this->hasMany(Item::class); - } - - public function getItems() - { - return $this->items; - } - - public function setItems($items) - { - $this->items = $items; - } -} diff --git a/Chapter27/onlineStore/app/Models/User.php b/Chapter27/onlineStore/app/Models/User.php deleted file mode 100644 index 89aa45f..0000000 --- a/Chapter27/onlineStore/app/Models/User.php +++ /dev/null @@ -1,156 +0,0 @@ -attributes['id'] - int - contains the user primary key (id) - * $this->attributes['name'] - string - contains the user name - * $this->attributes['email'] - string - contains the user email - * $this->attributes['email_verified_at'] - timestamp - contains the user email verification date - * $this->attributes['password'] - string - contains the user password - * $this->attributes['remember_token'] - string - contains the user password - * $this->attributes['role'] - string - contains the user role (client or admin) - * $this->attributes['balance'] - int - contains the user balance - * $this->attributes['created_at'] - timestamp - contains the user creation date - * $this->attributes['updated_at'] - timestamp - contains the user update date - * $this->orders - Order[] - contains the associated orders - */ - - /** - * The attributes that are mass assignable. - * - * @var array - */ - protected $fillable = [ - 'name', - 'email', - 'password', - 'balance', - ]; - - /** - * 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', - ]; - - public function getId() - { - return $this->attributes['id']; - } - - public function setId($id) - { - $this->attributes['id'] = $id; - } - - public function getName() - { - return $this->attributes['name']; - } - - public function setName($name) - { - $this->attributes['name'] = $name; - } - - public function getEmail() - { - return $this->attributes['email']; - } - - public function setEmail($email) - { - $this->attributes['email'] = $email; - } - - public function getPassword() - { - return $this->attributes['password']; - } - - public function setPassword($password) - { - $this->attributes['password'] = $password; - } - - public function getRole() - { - return $this->attributes['role']; - } - - public function setRole($role) - { - $this->attributes['role'] = $role; - } - - public function getBalance() - { - return $this->attributes['balance']; - } - - public function setBalance($balance) - { - $this->attributes['balance'] = $balance; - } - - public function getCreatedAt() - { - return $this->attributes['created_at']; - } - - public function setCreatedAt($createdAt) - { - $this->attributes['created_at'] = $createdAt; - } - - public function getUpdatedAt() - { - return $this->attributes['updated_at']; - } - - public function setUpdatedAt($updatedAt) - { - $this->attributes['updated_at'] = $updatedAt; - } - - public function orders() - { - return $this->hasMany(Order::class); - } - - public function getOrders() - { - return $this->orders; - } - - public function setOrders($orders) - { - $this->orders = $orders; - } -} diff --git a/Chapter27/onlineStore/app/Providers/AppServiceProvider.php b/Chapter27/onlineStore/app/Providers/AppServiceProvider.php deleted file mode 100644 index ee8ca5b..0000000 --- a/Chapter27/onlineStore/app/Providers/AppServiceProvider.php +++ /dev/null @@ -1,28 +0,0 @@ - - */ - protected $policies = [ - // 'App\Models\Model' => 'App\Policies\ModelPolicy', - ]; - - /** - * Register any authentication / authorization services. - * - * @return void - */ - public function boot() - { - $this->registerPolicies(); - - // - } -} diff --git a/Chapter27/onlineStore/app/Providers/BroadcastServiceProvider.php b/Chapter27/onlineStore/app/Providers/BroadcastServiceProvider.php deleted file mode 100644 index 395c518..0000000 --- a/Chapter27/onlineStore/app/Providers/BroadcastServiceProvider.php +++ /dev/null @@ -1,21 +0,0 @@ -> - */ - protected $listen = [ - Registered::class => [ - SendEmailVerificationNotification::class, - ], - ]; - - /** - * Register any events for your application. - * - * @return void - */ - public function boot() - { - // - } -} diff --git a/Chapter27/onlineStore/app/Providers/RouteServiceProvider.php b/Chapter27/onlineStore/app/Providers/RouteServiceProvider.php deleted file mode 100644 index fb766eb..0000000 --- a/Chapter27/onlineStore/app/Providers/RouteServiceProvider.php +++ /dev/null @@ -1,63 +0,0 @@ -configureRateLimiting(); - - $this->routes(function () { - Route::prefix('api') - ->middleware('api') - ->namespace($this->namespace) - ->group(base_path('routes/api.php')); - - Route::middleware('web') - ->namespace($this->namespace) - ->group(base_path('routes/web.php')); - }); - } - - /** - * Configure the rate limiters for the application. - * - * @return void - */ - protected function configureRateLimiting() - { - RateLimiter::for('api', function (Request $request) { - return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); - }); - } -} diff --git a/Chapter27/onlineStore/artisan b/Chapter27/onlineStore/artisan deleted file mode 100644 index 67a3329..0000000 --- a/Chapter27/onlineStore/artisan +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env php -make(Illuminate\Contracts\Console\Kernel::class); - -$status = $kernel->handle( - $input = new Symfony\Component\Console\Input\ArgvInput, - new Symfony\Component\Console\Output\ConsoleOutput -); - -/* -|-------------------------------------------------------------------------- -| Shutdown The Application -|-------------------------------------------------------------------------- -| -| Once Artisan has finished running, we will fire off the shutdown events -| so that any final work may be done by the application before we shut -| down the process. This is the last thing to happen to the request. -| -*/ - -$kernel->terminate($input, $status); - -exit($status); diff --git a/Chapter27/onlineStore/bootstrap/app.php b/Chapter27/onlineStore/bootstrap/app.php deleted file mode 100644 index 037e17d..0000000 --- a/Chapter27/onlineStore/bootstrap/app.php +++ /dev/null @@ -1,55 +0,0 @@ -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/Chapter27/onlineStore/bootstrap/cache/.gitignore b/Chapter27/onlineStore/bootstrap/cache/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter27/onlineStore/bootstrap/cache/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter27/onlineStore/composer.json b/Chapter27/onlineStore/composer.json deleted file mode 100644 index a9459b5..0000000 --- a/Chapter27/onlineStore/composer.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "name": "laravel/laravel", - "type": "project", - "description": "The Laravel Framework.", - "keywords": ["framework", "laravel"], - "license": "MIT", - "require": { - "php": "^8.0", - "fruitcake/laravel-cors": "^2.0.5", - "guzzlehttp/guzzle": "^7.2", - "laravel/framework": "^9.0", - "laravel/sanctum": "^2.14", - "laravel/tinker": "^2.7", - "laravel/ui": "^3.4" - }, - "require-dev": { - "fakerphp/faker": "^1.9.1", - "laravel/sail": "^1.0.1", - "mockery/mockery": "^1.4.4", - "nunomaduro/collision": "^6.1", - "phpunit/phpunit": "^9.5.10", - "spatie/laravel-ignition": "^1.0", - "squizlabs/php_codesniffer": "^3.6" - }, - "autoload": { - "psr-4": { - "App\\": "app/", - "Database\\Factories\\": "database/factories/", - "Database\\Seeders\\": "database/seeders/" - } - }, - "autoload-dev": { - "psr-4": { - "Tests\\": "tests/" - } - }, - "scripts": { - "post-autoload-dump": [ - "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", - "@php artisan package:discover --ansi" - ], - "post-update-cmd": [ - "@php artisan vendor:publish --tag=laravel-assets --ansi --force" - ], - "post-root-package-install": [ - "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" - ], - "post-create-project-cmd": [ - "@php artisan key:generate --ansi" - ] - }, - "extra": { - "laravel": { - "dont-discover": [] - } - }, - "config": { - "optimize-autoloader": true, - "preferred-install": "dist", - "sort-packages": true - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/Chapter27/onlineStore/composer.lock b/Chapter27/onlineStore/composer.lock deleted file mode 100644 index 78c86f1..0000000 --- a/Chapter27/onlineStore/composer.lock +++ /dev/null @@ -1,7921 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "d299b51f0f07ec600b4949240f4664af", - "packages": [ - { - "name": "asm89/stack-cors", - "version": "v2.1.1", - "source": { - "type": "git", - "url": "https://github.com/asm89/stack-cors.git", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4|^5|^6" - }, - "require-dev": { - "phpunit/phpunit": "^7|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "psr-4": { - "Asm89\\Stack\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alexander", - "email": "iam.asm89@gmail.com" - } - ], - "description": "Cross-origin resource sharing library and stack middleware", - "homepage": "https://github.com/asm89/stack-cors", - "keywords": [ - "cors", - "stack" - ], - "support": { - "issues": "https://github.com/asm89/stack-cors/issues", - "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" - }, - "time": "2022-01-18T09:12:03+00:00" - }, - { - "name": "brick/math", - "version": "0.9.3", - "source": { - "type": "git", - "url": "https://github.com/brick/math.git", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", - "vimeo/psalm": "4.9.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Brick\\Math\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Arbitrary-precision arithmetic library", - "keywords": [ - "Arbitrary-precision", - "BigInteger", - "BigRational", - "arithmetic", - "bigdecimal", - "bignum", - "brick", - "math" - ], - "support": { - "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.9.3" - }, - "funding": [ - { - "url": "https://github.com/BenMorel", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/brick/math", - "type": "tidelift" - } - ], - "time": "2021-08-15T20:50:18+00:00" - }, - { - "name": "dflydev/dot-access-data", - "version": "v3.0.1", - "source": { - "type": "git", - "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c", - "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": "^3.14" - }, - "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.1" - }, - "time": "2021-08-13T13:06:58+00:00" - }, - { - "name": "doctrine/inflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "vimeo/psalm": "^4.10" - }, - "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.4" - }, - "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": "2021-10-22T20:16:43+00:00" - }, - { - "name": "doctrine/lexer", - "version": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" - } - }, - "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/1.2.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%2Flexer", - "type": "tidelift" - } - ], - "time": "2022-01-12T08:27:12+00:00" - }, - { - "name": "dragonmantank/cron-expression", - "version": "v3.3.1", - "source": { - "type": "git", - "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "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.1" - }, - "funding": [ - { - "url": "https://github.com/dragonmantank", - "type": "github" - } - ], - "time": "2022-01-18T15:43:28+00:00" - }, - { - "name": "egulias/email-validator", - "version": "3.1.2", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ee0db30118f661fb166bcffbf5d82032df484697", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^1.2", - "php": ">=7.2", - "symfony/polyfill-intl-idn": "^1.15" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^8.5.8|^9.3.3", - "vimeo/psalm": "^4" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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/3.1.2" - }, - "funding": [ - { - "url": "https://github.com/egulias", - "type": "github" - } - ], - "time": "2021-10-11T09:18:27+00:00" - }, - { - "name": "fruitcake/laravel-cors", - "version": "v2.0.5", - "source": { - "type": "git", - "url": "https://github.com/fruitcake/laravel-cors.git", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "shasum": "" - }, - "require": { - "asm89/stack-cors": "^2.0.1", - "illuminate/contracts": "^6|^7|^8|^9", - "illuminate/support": "^6|^7|^8|^9", - "php": ">=7.2", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4.3.4|^5|^6" - }, - "require-dev": { - "laravel/framework": "^6|^7.24|^8", - "orchestra/testbench-dusk": "^4|^5|^6|^7", - "phpunit/phpunit": "^6|^7|^8|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - }, - "laravel": { - "providers": [ - "Fruitcake\\Cors\\CorsServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Fruitcake\\Cors\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fruitcake", - "homepage": "https://fruitcake.nl" - }, - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", - "keywords": [ - "api", - "cors", - "crossdomain", - "laravel" - ], - "support": { - "issues": "https://github.com/fruitcake/laravel-cors/issues", - "source": "https://github.com/fruitcake/laravel-cors/tree/v2.0.5" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "time": "2022-01-03T14:53:04+00:00" - }, - { - "name": "graham-campbell/result-type", - "version": "v1.0.4", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "0690bde05318336c7221785f2a932467f98b64ca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/0690bde05318336c7221785f2a932467f98b64ca", - "reference": "0690bde05318336c7221785f2a932467f98b64ca", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "phpoption/phpoption": "^1.8" - }, - "require-dev": { - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", - "type": "tidelift" - } - ], - "time": "2021-11-21T21:41:47+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "7.4.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.8.3 || ^2.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.4.1", - "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.5 || ^9.3.5", - "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": { - "branch-alias": { - "dev-master": "7.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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.4.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": "2021-12-06T18:43:05+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "1.5.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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/1.5.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "time": "2021-10-22T20:56:57+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.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.4.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.8 || ^9.3.10" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "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.1.0" - }, - "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": "2021-10-06T17:43:30+00:00" - }, - { - "name": "laravel/framework", - "version": "v9.0.1", - "source": { - "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "shasum": "" - }, - "require": { - "doctrine/inflector": "^2.0", - "dragonmantank/cron-expression": "^3.1", - "egulias/email-validator": "^3.1", - "ext-mbstring": "*", - "ext-openssl": "*", - "laravel/serializable-closure": "^1.0", - "league/commonmark": "^2.2", - "league/flysystem": "^3.0", - "monolog/monolog": "^2.0", - "nesbot/carbon": "^2.53.1", - "php": "^8.0.2", - "psr/container": "^1.1.1|^2.0.1", - "psr/log": "^1.0|^2.0|^3.0", - "psr/simple-cache": "^1.0|^2.0|^3.0", - "ramsey/uuid": "^4.2.2", - "symfony/console": "^6.0", - "symfony/error-handler": "^6.0", - "symfony/finder": "^6.0", - "symfony/http-foundation": "^6.0", - "symfony/http-kernel": "^6.0", - "symfony/mailer": "^6.0", - "symfony/mime": "^6.0", - "symfony/process": "^6.0", - "symfony/routing": "^6.0", - "symfony/var-dumper": "^6.0", - "tijsverkoyen/css-to-inline-styles": "^2.2.2", - "vlucas/phpdotenv": "^5.4.1", - "voku/portable-ascii": "^2.0" - }, - "conflict": { - "tightenco/collect": "<5.5.33" - }, - "provide": { - "psr/container-implementation": "1.1|2.0", - "psr/simple-cache-implementation": "1.0|2.0|3.0" - }, - "replace": { - "illuminate/auth": "self.version", - "illuminate/broadcasting": "self.version", - "illuminate/bus": "self.version", - "illuminate/cache": "self.version", - "illuminate/collections": "self.version", - "illuminate/conditionable": "self.version", - "illuminate/config": "self.version", - "illuminate/console": "self.version", - "illuminate/container": "self.version", - "illuminate/contracts": "self.version", - "illuminate/cookie": "self.version", - "illuminate/database": "self.version", - "illuminate/encryption": "self.version", - "illuminate/events": "self.version", - "illuminate/filesystem": "self.version", - "illuminate/hashing": "self.version", - "illuminate/http": "self.version", - "illuminate/log": "self.version", - "illuminate/macroable": "self.version", - "illuminate/mail": "self.version", - "illuminate/notifications": "self.version", - "illuminate/pagination": "self.version", - "illuminate/pipeline": "self.version", - "illuminate/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": { - "aws/aws-sdk-php": "^3.198.1", - "doctrine/dbal": "^2.13.3|^3.1.4", - "fakerphp/faker": "^1.9.2", - "guzzlehttp/guzzle": "^7.2", - "league/flysystem-aws-s3-v3": "^3.0", - "league/flysystem-ftp": "^3.0", - "league/flysystem-sftp-v3": "^3.0", - "mockery/mockery": "^1.4.4", - "orchestra/testbench-core": "^7.0", - "pda/pheanstalk": "^4.0", - "phpstan/phpstan": "^1.0", - "phpunit/phpunit": "^9.5.8", - "predis/predis": "^1.1.9", - "symfony/amazon-mailer": "^6.0", - "symfony/cache": "^6.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.198.1).", - "brianium/paratest": "Required to run tests in parallel (^6.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", - "ext-bcmath": "Required to use the multiple_of validation rule.", - "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.", - "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.2).", - "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-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", - "mockery/mockery": "Required to use mocking (^1.4.4).", - "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).", - "predis/predis": "Required to use the predis connector (^1.1.9).", - "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.0).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^6.0).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.0).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.0).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.0).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.x-dev" - } - }, - "autoload": { - "files": [ - "src/Illuminate/Collections/helpers.php", - "src/Illuminate/Events/functions.php", - "src/Illuminate/Foundation/helpers.php", - "src/Illuminate/Support/helpers.php" - ], - "psr-4": { - "Illuminate\\": "src/Illuminate/", - "Illuminate\\Support\\": [ - "src/Illuminate/Macroable/", - "src/Illuminate/Collections/", - "src/Illuminate/Conditionable/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Laravel Framework.", - "homepage": "https://laravel.com", - "keywords": [ - "framework", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2022-02-09T15:00:05+00:00" - }, - { - "name": "laravel/sanctum", - "version": "v2.14.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/sanctum.git", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/0647a87140c7522e75826cffcadb3ad6e01f71e9", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/contracts": "^6.9|^7.0|^8.0|^9.0", - "illuminate/database": "^6.9|^7.0|^8.0|^9.0", - "illuminate/support": "^6.9|^7.0|^8.0|^9.0", - "php": "^7.2|^8.0" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0", - "phpunit/phpunit": "^8.0|^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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": "2022-01-12T15:07:43+00:00" - }, - { - "name": "laravel/serializable-closure", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/serializable-closure.git", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/65c9faf50d567b65d81764a44526545689e3fe63", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "pestphp/pest": "^1.18", - "phpstan/phpstan": "^0.12.98", - "symfony/var-dumper": "^5.3" - }, - "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": "2022-02-01T16:29:39+00:00" - }, - { - "name": "laravel/tinker", - "version": "v2.7.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/tinker.git", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/5f2f9815b7631b9f586a3de7933c25f9327d4073", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073", - "shasum": "" - }, - "require": { - "illuminate/console": "^6.0|^7.0|^8.0|^9.0", - "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.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", - "phpunit/phpunit": "^8.5.8|^9.3.3" - }, - "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.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.7.0" - }, - "time": "2022-01-10T08:52:49+00:00" - }, - { - "name": "laravel/ui", - "version": "v3.4.3", - "source": { - "type": "git", - "url": "https://github.com/laravel/ui.git", - "reference": "64a0f43492c00780b2261c56cd7007a4f370d95b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/ui/zipball/64a0f43492c00780b2261c56cd7007a4f370d95b", - "reference": "64a0f43492c00780b2261c56cd7007a4f370d95b", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.42|^9.0", - "illuminate/filesystem": "^8.42|^9.0", - "illuminate/support": "^8.82|^9.0", - "illuminate/validation": "^8.42|^9.0", - "php": "^7.3|^8.0" - }, - "require-dev": { - "orchestra/testbench": "^6.23|^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - }, - "laravel": { - "providers": [ - "Laravel\\Ui\\UiServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Laravel\\Ui\\": "src/", - "Illuminate\\Foundation\\Auth\\": "auth-backend/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "Laravel UI utilities and presets.", - "keywords": [ - "laravel", - "ui" - ], - "support": { - "source": "https://github.com/laravel/ui/tree/v3.4.3" - }, - "time": "2022-02-08T14:19:32+00:00" - }, - { - "name": "league/commonmark", - "version": "2.2.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/commonmark.git", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "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.15" - }, - "require-dev": { - "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.0", - "commonmark/commonmark.js": "0.30.0", - "composer/package-versions-deprecated": "^1.8", - "erusev/parsedown": "^1.0", - "ext-json": "*", - "github/gfm": "0.29.0", - "michelf/php-markdown": "^1.4", - "phpstan/phpstan": "^0.12.88 || ^1.0.0", - "phpunit/phpunit": "^9.5.5", - "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", - "unleashedtech/php-coding-standard": "^3.1", - "vimeo/psalm": "^4.7.3" - }, - "suggest": { - "symfony/yaml": "v2.3+ required if using the Front Matter extension" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.3-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": "2022-01-25T14:37:33+00:00" - }, - { - "name": "league/config", - "version": "v1.1.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/config.git", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/config/zipball/a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^3.0.1", - "nette/schema": "^1.2", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.90", - "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": "2021-08-14T12:15:32+00:00" - }, - { - "name": "league/flysystem", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9f8b4260031bfef5497477da53dd57b2aaff0e06", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06", - "shasum": "" - }, - "require": { - "ext-json": "*", - "league/mime-type-detection": "^1.0.0", - "php": "^8.0.2" - }, - "conflict": { - "guzzlehttp/guzzle": "<7.0", - "guzzlehttp/ringphp": "<1.1.1", - "symfony/http-client": "<5.2" - }, - "require-dev": { - "async-aws/s3": "^1.5", - "async-aws/simple-s3": "^1.0", - "aws/aws-sdk-php": "^3.198.1", - "composer/semver": "^3.0", - "ext-fileinfo": "*", - "ext-ftp": "*", - "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.5", - "google/cloud-storage": "^1.23", - "phpseclib/phpseclib": "^2.0", - "phpstan/phpstan": "^0.12.26", - "phpunit/phpunit": "^9.5.11", - "sabre/dav": "^4.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.0.3" - }, - "funding": [ - { - "url": "https://offset.earth/frankdejonge", - "type": "custom" - }, - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2022-01-31T19:41:04+00:00" - }, - { - "name": "league/mime-type-detection", - "version": "1.9.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/aa70e813a6ad3d1558fc927863d47309b4c23e69", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.2", - "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" - }, - "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.9.0" - }, - "funding": [ - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2021-11-21T11:48:40+00:00" - }, - { - "name": "monolog/monolog", - "version": "2.3.5", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd4380d6fc37626e2f799f29d91195040137eba9", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "provide": { - "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7", - "graylog2/gelf-php": "^1.4.2", - "mongodb/mongodb": "^1.8", - "php-amqplib/php-amqplib": "~2.4 || ^3", - "php-console/php-console": "^3.1.3", - "phpspec/prophecy": "^1.6.1", - "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5", - "predis/predis": "^1.1", - "rollbar/rollbar": "^1.3", - "ruflin/elastica": ">=0.90@dev", - "swiftmailer/swiftmailer": "^5.3|^6.0" - }, - "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", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "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": "2.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/2.3.5" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" - } - ], - "time": "2021-10-01T21:08:31+00:00" - }, - { - "name": "nesbot/carbon", - "version": "2.56.0", - "source": { - "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1.8 || ^8.0", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "doctrine/dbal": "^2.0 || ^3.0", - "doctrine/orm": "^2.7", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "phpmd/phpmd": "^2.9", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.54 || ^1.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.14", - "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://opencollective.com/Carbon", - "type": "open_collective" - }, - { - "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", - "type": "tidelift" - } - ], - "time": "2022-01-21T17:08:38+00:00" - }, - { - "name": "nette/schema", - "version": "v1.2.2", - "source": { - "type": "git", - "url": "https://github.com/nette/schema.git", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/9a39cef03a5b34c7de64f551538cbba05c2be5df", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df", - "shasum": "" - }, - "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": ">=7.1 <8.2" - }, - "require-dev": { - "nette/tester": "^2.3 || ^2.4", - "phpstan/phpstan-nette": "^0.12", - "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.2" - }, - "time": "2021-10-15T11:40:02+00:00" - }, - { - "name": "nette/utils", - "version": "v3.2.7", - "source": { - "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/0af4e3de4df9f1543534beab255ccf459e7a2c99", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99", - "shasum": "" - }, - "require": { - "php": ">=7.2 <8.2" - }, - "conflict": { - "nette/di": "<3.0.6" - }, - "require-dev": { - "nette/tester": "~2.0", - "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.3" - }, - "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()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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 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/v3.2.7" - }, - "time": "2022-01-24T11:29:14+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.13.2", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", - "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.13.2" - }, - "time": "2021-11-30T19:35:32+00:00" - }, - { - "name": "phpoption/phpoption", - "version": "1.8.1", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-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.8.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", - "type": "tidelift" - } - ], - "time": "2021-12-04T23:24:31+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.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.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": "http://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/tree/master" - }, - "time": "2020-06-29T06:28:15+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.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": "http://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/master" - }, - "time": "2019-04-30T12:38:16+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.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": "http://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/master" - }, - "time": "2016-08-06T14:39: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.1", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "570292577277f06f590635381a7f761a6cf4f026" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/570292577277f06f590635381a7f761a6cf4f026", - "reference": "570292577277f06f590635381a7f761a6cf4f026", - "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" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "3.17.05.02" - }, - "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.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." - }, - "bin": [ - "bin/psysh" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "0.11.x-dev" - } - }, - "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.1" - }, - "time": "2022-01-03T13:58:38+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": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/ramsey/collection.git", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "shasum": "" - }, - "require": { - "php": "^7.3 || ^8", - "symfony/polyfill-php81": "^1.23" - }, - "require-dev": { - "captainhook/captainhook": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "ergebnis/composer-normalize": "^2.6", - "fakerphp/faker": "^1.5", - "hamcrest/hamcrest-php": "^2", - "jangregor/phpstan-prophecy": "^0.8", - "mockery/mockery": "^1.3", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1", - "phpstan/phpstan": "^0.12.32", - "phpstan/phpstan-mockery": "^0.12.5", - "phpstan/phpstan-phpunit": "^0.12.11", - "phpunit/phpunit": "^8.5 || ^9", - "psy/psysh": "^0.10.4", - "slevomat/coding-standard": "^6.3", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.4" - }, - "type": "library", - "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/1.2.2" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "time": "2021-10-10T03:01:02+00:00" - }, - { - "name": "ramsey/uuid", - "version": "4.2.3", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "shasum": "" - }, - "require": { - "brick/math": "^0.8 || ^0.9", - "ext-json": "*", - "php": "^7.2 || ^8.0", - "ramsey/collection": "^1.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php80": "^1.14" - }, - "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", - "moontoast/math": "^1.1", - "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.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-mockery": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^8.5 || ^9", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" - }, - "suggest": { - "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-ctype": "Enables faster processing of character classification using ctype functions.", - "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": { - "branch-alias": { - "dev-main": "4.x-dev" - }, - "captainhook": { - "force-install": true - } - }, - "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "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.2.3" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2021-09-25T23:10:38+00:00" - }, - { - "name": "symfony/console", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/22e8efd019c3270c4f79376234a3f8752cd25490", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.4|^6.0" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/css-selector", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/1955d595c12c111629cc814d3f2a2ff13580508a", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a", - "shasum": "" - }, - "require": { - "php": ">=8.0.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/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-11-01T23:48:49+00:00" - }, - { - "name": "symfony/error-handler", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/20343b3bad7ebafa38138ddcb97290a24722b57b", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" - }, - "bin": [ - "Resources/bin/patch-type-declarations" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to manage errors and ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6472ea2dd415e925b90ca82be64b8bc6157f3934", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/event-dispatcher-contracts": "^2|^3" - }, - "conflict": { - "symfony/dependency-injection": "<5.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^5.4|^6.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/aa5422287b75594b90ee9cd807caf8f0df491385", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/event-dispatcher": "^1" - }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-07-15T12:33:35+00:00" - }, - { - "name": "symfony/finder", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/8661b74dbabc23223f38c9b99d3f8ade71170430", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ad157299ced81a637fade1efcadd688d6deba5c1", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1" - }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/cache": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0" - }, - "suggest": { - "symfony/mime": "To use the file extension guesser" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v6.0.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/error-handler": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", - "symfony/twig-bridge": "<5.4", - "symfony/validator": "<5.4", - "twig/twig": "<2.13" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/process": "^5.4|^6.0", - "symfony/routing": "^5.4|^6.0", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-29T18:12:46+00:00" - }, - { - "name": "symfony/mailer", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mailer.git", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "shasum": "" - }, - "require": { - "egulias/email-validator": "^2.1.10|^3", - "php": ">=8.0.2", - "psr/event-dispatcher": "^1", - "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3" - }, - "conflict": { - "symfony/http-kernel": "<5.4" - }, - "require-dev": { - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/messenger": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/mime", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/2cd9601efd040e56f43360daa68f3c6b0534923a", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "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" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "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.24.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": "2021-10-20T20:35:02+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-11-23T21:10:46+00:00" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44", - "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.23-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.24.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": "2021-09-14T14:02:44+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.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": "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.24.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": "2021-11-30T18:21:41+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-05-27T09:17:38+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:33+00:00" - }, - { - "name": "symfony/polyfill-php81", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:11+00:00" - }, - { - "name": "symfony/process", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/298ed357274c1868c20a0061df256a1250a6c4af", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/routing", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/yaml": "<5.4" - }, - "require-dev": { - "doctrine/annotations": "^1.12", - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/36715ebf9fb9db73db0cb24263c79077c6fe8603", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/container": "^2.0" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "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.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": "2021-11-04T17:53:12+00:00" - }, - { - "name": "symfony/string", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/522144f0c4c004c80d56fa47e40e17028e2eefc2", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.0" - }, - "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/translation-contracts": "^2.0|^3.0", - "symfony/var-exporter": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "files": [ - "Resources/functions.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 an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/translation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/71bb15335798f8c4da110911bcf2d2fead7a430d", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.3|^3.0" - }, - "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" - }, - "provide": { - "symfony/translation-implementation": "2.3|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-07T00:29:03+00:00" - }, - { - "name": "symfony/translation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "suggest": { - "symfony/translation-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - } - }, - "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.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": "2021-09-07T12:43:40+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7b701676fc64f9ef11f9b4870f16b48f66be4834", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<5.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-17T16:30:44+00:00" - }, - { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.4", - "source": { - "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" - } - ], - "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", - "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "support": { - "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" - }, - "time": "2021-12-08T09:12:39+00:00" - }, - { - "name": "vlucas/phpdotenv", - "version": "v5.4.1", - "source": { - "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", - "shasum": "" - }, - "require": { - "ext-pcre": "*", - "graham-campbell/result-type": "^1.0.2", - "php": "^7.1.3 || ^8.0", - "phpoption/phpoption": "^1.8", - "symfony/polyfill-ctype": "^1.23", - "symfony/polyfill-mbstring": "^1.23.1", - "symfony/polyfill-php80": "^1.23.1" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" - }, - "suggest": { - "ext-filter": "Required to use the boolean validator." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.4-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.4.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", - "type": "tidelift" - } - ], - "time": "2021-12-12T23:22:04+00:00" - }, - { - "name": "voku/portable-ascii", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/voku/portable-ascii.git", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/9bd89e83cecdf8c37b64909454249eaed98b2c89", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89", - "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.0" - }, - "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-01-24T18:59:03+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "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.10.0" - }, - "time": "2021-03-09T10:59:23+00:00" - } - ], - "packages-dev": [ - { - "name": "doctrine/instantiator", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.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%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2020-11-10T18:47:58+00:00" - }, - { - "name": "facade/ignition-contracts", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/facade/ignition-contracts.git", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^v2.15.8", - "phpunit/phpunit": "^9.3.11", - "vimeo/psalm": "^3.17.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Facade\\IgnitionContracts\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://flareapp.io", - "role": "Developer" - } - ], - "description": "Solution contracts for Ignition", - "homepage": "https://github.com/facade/ignition-contracts", - "keywords": [ - "contracts", - "flare", - "ignition" - ], - "support": { - "issues": "https://github.com/facade/ignition-contracts/issues", - "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" - }, - "time": "2020-10-16T08:27:54+00:00" - }, - { - "name": "fakerphp/faker", - "version": "v1.19.0", - "source": { - "type": "git", - "url": "https://github.com/FakerPHP/Faker.git", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^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": "*", - "symfony/phpunit-bridge": "^4.4 || ^5.2" - }, - "suggest": { - "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", - "ext-curl": "Required by Faker\\Provider\\Image to download images.", - "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", - "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.19-dev" - } - }, - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "François Zaninotto" - } - ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], - "support": { - "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0" - }, - "time": "2022-02-02T17:38:57+00:00" - }, - { - "name": "filp/whoops", - "version": "2.14.5", - "source": { - "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "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.14.5" - }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "time": "2022-01-07T12:00:00+00:00" - }, - { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "shasum": "" - }, - "require": { - "php": "^5.3|^7.0|^8.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" - }, - "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "classmap": [ - "hamcrest" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "This is the PHP port of Hamcrest Matchers", - "keywords": [ - "test" - ], - "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" - }, - "time": "2020-07-09T08:09:16+00:00" - }, - { - "name": "laravel/sail", - "version": "v1.13.2", - "source": { - "type": "git", - "url": "https://github.com/laravel/sail.git", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.0|^9.0", - "illuminate/contracts": "^8.0|^9.0", - "illuminate/support": "^8.0|^9.0", - "php": "^7.3|^8.0" - }, - "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": "2022-02-08T14:14:12+00:00" - }, - { - "name": "mockery/mockery", - "version": "1.5.0", - "source": { - "type": "git", - "url": "https://github.com/mockery/mockery.git", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "shasum": "" - }, - "require": { - "hamcrest/hamcrest-php": "^2.0.1", - "lib-pcre": ">=7.0", - "php": "^7.3 || ^8.0" - }, - "conflict": { - "phpunit/phpunit": "<8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-0": { - "Mockery": "library/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" - } - ], - "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": { - "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.5.0" - }, - "time": "2022-01-20T13:18:17+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.10.2", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "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.10.2" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2020-11-13T09:40:50+00:00" - }, - { - "name": "nunomaduro/collision", - "version": "v6.1.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/collision.git", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "shasum": "" - }, - "require": { - "facade/ignition-contracts": "^1.0.2", - "filp/whoops": "^2.14.5", - "php": "^8.0.0", - "symfony/console": "^6.0.2" - }, - "require-dev": { - "brianium/paratest": "^6.4.1", - "laravel/framework": "^9.0", - "nunomaduro/larastan": "^1.0.2", - "nunomaduro/mock-final-classes": "^1.1.0", - "orchestra/testbench": "^7.0.0", - "phpunit/phpunit": "^9.5.11" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "6.x-dev" - }, - "laravel": { - "providers": [ - "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" - ] - } - }, - "autoload": { - "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": "2022-01-18T17:49:08+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.1.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/15a90844ad40f127afd244c0cad228de2a80052a", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a", - "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.1.1" - }, - "time": "2022-02-07T21:56:48+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.6.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "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.6.0" - }, - "time": "2022-01-04T19:58:01+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" - }, - "time": "2021-12-08T12:19:24+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "9.2.10", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d5850aaf931743067f4bfc1ae4cbd06468400687", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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 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", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.10" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-05T09:12:13+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "3.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-02T12:48:52+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "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/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:58:55+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T05:33:50+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.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/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:16:10+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "9.5.13", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/597cb647654ede35e43b137926dfdfef0fb11743", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.3.1", - "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": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.7", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", - "sebastian/version": "^3.0.2" - }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.13" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-01-24T07:33:35+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:08:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "1.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:08:54+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:30:19+00:00" - }, - { - "name": "sebastian/comparator", - "version": "4.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:49:45+00:00" - }, - { - "name": "sebastian/complexity", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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 calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:52:27+00:00" - }, - { - "name": "sebastian/diff", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:10:38+00:00" - }, - { - "name": "sebastian/environment", - "version": "5.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-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": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:52:38+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "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", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-11-11T14:18:36+00:00" - }, - { - "name": "sebastian/global-state", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-11T13:31:12+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-28T06:42:11+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "http://www.github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:17:30+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:45:17+00:00" - }, - { - "name": "sebastian/type", - "version": "2.3.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-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/2.3.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-15T12:49:02+00:00" - }, - { - "name": "sebastian/version", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:39:44+00:00" - }, - { - "name": "spatie/backtrace", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/backtrace.git", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "ext-json": "*", - "phpunit/phpunit": "^9.3", - "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": { - "issues": "https://github.com/spatie/backtrace/issues", - "source": "https://github.com/spatie/backtrace/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/sponsors/spatie", - "type": "github" - }, - { - "url": "https://spatie.be/open-source/support-us", - "type": "other" - } - ], - "time": "2021-11-09T10:57:15+00:00" - }, - { - "name": "spatie/flare-client-php", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/flare-client-php.git", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "shasum": "" - }, - "require": { - "illuminate/pipeline": "^8.0|^9.0", - "php": "^8.0", - "spatie/backtrace": "^1.2", - "symfony/http-foundation": "^5.0|^6.0", - "symfony/mime": "^5.2|^6.0", - "symfony/process": "^5.2|^6.0", - "symfony/var-dumper": "^5.2|^6.0" - }, - "require-dev": { - "dms/phpunit-arraysubset-asserts": "^0.3.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/phpunit-snapshot-assertions": "^4.0" - }, - "type": "library", - "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.0.1" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2022-02-04T15:21:00+00:00" - }, - { - "name": "spatie/ignition", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/spatie/ignition.git", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/d2d5ba823af3004268556e87dfc94449e4159f5a", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "monolog/monolog": "^2.0", - "php": "^8.0", - "spatie/flare-client-php": "^1.0", - "symfony/console": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "mockery/mockery": "^1.4", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/ray": "^1.32", - "symfony/process": "^5.4|^6.0" - }, - "type": "library", - "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": "2022-01-19T12:57:41+00:00" - }, - { - "name": "spatie/laravel-ignition", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/68250225a9f83b086462c2af1b1139dfde48fbd2", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*", - "illuminate/support": "^8.77|^9.0", - "monolog/monolog": "^2.3", - "php": "^8.0", - "spatie/flare-client-php": "^1.0.1", - "spatie/ignition": "^1.0", - "symfony/console": "^5.0|^6.0", - "symfony/var-dumper": "^5.0|^6.0" - }, - "require-dev": { - "filp/whoops": "^2.14", - "livewire/livewire": "^2.8|dev-develop", - "mockery/mockery": "^1.4", - "nunomaduro/larastan": "^1.0", - "orchestra/testbench": "^6.23|^7.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/laravel-ray": "^1.27" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Spatie\\LaravelIgnition\\IgnitionServiceProvider" - ], - "aliases": { - "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" - } - } - }, - "autoload": { - "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": "2022-02-04T15:25:56+00:00" - }, - { - "name": "squizlabs/php_codesniffer", - "version": "3.6.2", - "source": { - "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", - "shasum": "" - }, - "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.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": "lead" - } - ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", - "keywords": [ - "phpcs", - "standards" - ], - "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" - }, - "time": "2021-12-12T21:44:58+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2021-07-28T10:34:58+00:00" - } - ], - "aliases": [], - "minimum-stability": "dev", - "stability-flags": [], - "prefer-stable": true, - "prefer-lowest": false, - "platform": { - "php": "^8.0" - }, - "platform-dev": [], - "plugin-api-version": "2.1.0" -} diff --git a/Chapter27/onlineStore/config/app.php b/Chapter27/onlineStore/config/app.php deleted file mode 100644 index 1941d7c..0000000 --- a/Chapter27/onlineStore/config/app.php +++ /dev/null @@ -1,197 +0,0 @@ - env('APP_NAME', 'Laravel'), - - /* - |-------------------------------------------------------------------------- - | Application Environment - |-------------------------------------------------------------------------- - | - | This value determines the "environment" your application is currently - | running in. This may determine how you prefer to configure various - | services the application utilizes. Set this in your ".env" file. - | - */ - - 'env' => env('APP_ENV', 'production'), - - /* - |-------------------------------------------------------------------------- - | Application Debug Mode - |-------------------------------------------------------------------------- - | - | When your application is in debug mode, detailed error messages with - | stack traces will be shown on every error that occurs within your - | application. If disabled, a simple generic error page is shown. - | - */ - - 'debug' => (bool) env('APP_DEBUG', false), - - /* - |-------------------------------------------------------------------------- - | Application URL - |-------------------------------------------------------------------------- - | - | This URL is used by the console to properly generate URLs when using - | the Artisan command line tool. You should set this to the root of - | your application so that it is used when running Artisan tasks. - | - */ - - 'url' => env('APP_URL', 'http://localhost'), - - 'asset_url' => env('ASSET_URL', null), - - /* - |-------------------------------------------------------------------------- - | 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', - - /* - |-------------------------------------------------------------------------- - | 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' => [ - - /* - * Laravel Framework Service Providers... - */ - Illuminate\Auth\AuthServiceProvider::class, - Illuminate\Broadcasting\BroadcastServiceProvider::class, - Illuminate\Bus\BusServiceProvider::class, - Illuminate\Cache\CacheServiceProvider::class, - Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, - Illuminate\Cookie\CookieServiceProvider::class, - Illuminate\Database\DatabaseServiceProvider::class, - Illuminate\Encryption\EncryptionServiceProvider::class, - Illuminate\Filesystem\FilesystemServiceProvider::class, - Illuminate\Foundation\Providers\FoundationServiceProvider::class, - Illuminate\Hashing\HashServiceProvider::class, - Illuminate\Mail\MailServiceProvider::class, - Illuminate\Notifications\NotificationServiceProvider::class, - Illuminate\Pagination\PaginationServiceProvider::class, - Illuminate\Pipeline\PipelineServiceProvider::class, - Illuminate\Queue\QueueServiceProvider::class, - Illuminate\Redis\RedisServiceProvider::class, - Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, - Illuminate\Session\SessionServiceProvider::class, - Illuminate\Translation\TranslationServiceProvider::class, - Illuminate\Validation\ValidationServiceProvider::class, - Illuminate\View\ViewServiceProvider::class, - - /* - * 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, - - ], - - /* - |-------------------------------------------------------------------------- - | 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([ - // ... - ])->toArray(), - -]; diff --git a/Chapter27/onlineStore/config/auth.php b/Chapter27/onlineStore/config/auth.php deleted file mode 100644 index d8c6cee..0000000 --- a/Chapter27/onlineStore/config/auth.php +++ /dev/null @@ -1,111 +0,0 @@ - [ - '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 expire 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. - | - */ - - 'passwords' => [ - 'users' => [ - 'provider' => 'users', - 'table' => 'password_resets', - '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/Chapter27/onlineStore/config/broadcasting.php b/Chapter27/onlineStore/config/broadcasting.php deleted file mode 100644 index 67fcbbd..0000000 --- a/Chapter27/onlineStore/config/broadcasting.php +++ /dev/null @@ -1,67 +0,0 @@ - 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'), - 'useTLS' => true, - ], - '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/Chapter27/onlineStore/config/cache.php b/Chapter27/onlineStore/config/cache.php deleted file mode 100644 index 8736c7a..0000000 --- a/Chapter27/onlineStore/config/cache.php +++ /dev/null @@ -1,110 +0,0 @@ - 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'), - ], - - '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 a RAM based store such as APC or Memcached, there might - | be other applications utilizing the same cache. So, we'll specify a - | value to get prefixed to all our keys so we can avoid collisions. - | - */ - - 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'), - -]; diff --git a/Chapter27/onlineStore/config/cors.php b/Chapter27/onlineStore/config/cors.php deleted file mode 100644 index 8a39e6d..0000000 --- a/Chapter27/onlineStore/config/cors.php +++ /dev/null @@ -1,34 +0,0 @@ - ['api/*', 'sanctum/csrf-cookie'], - - 'allowed_methods' => ['*'], - - 'allowed_origins' => ['*'], - - 'allowed_origins_patterns' => [], - - 'allowed_headers' => ['*'], - - 'exposed_headers' => [], - - 'max_age' => 0, - - 'supports_credentials' => false, - -]; diff --git a/Chapter27/onlineStore/config/database.php b/Chapter27/onlineStore/config/database.php deleted file mode 100644 index 0faebae..0000000 --- a/Chapter27/onlineStore/config/database.php +++ /dev/null @@ -1,147 +0,0 @@ - env('DB_CONNECTION', 'mysql'), - - /* - |-------------------------------------------------------------------------- - | Database Connections - |-------------------------------------------------------------------------- - | - | Here are each of the database connections setup for your application. - | Of course, examples of configuring each database platform that is - | supported by Laravel is shown below to make development simple. - | - | - | All database work in Laravel is done through the PHP PDO facilities - | so make sure you have the driver for your particular database of - | choice installed on your machine before you begin development. - | - */ - - 'connections' => [ - - 'sqlite' => [ - 'driver' => 'sqlite', - 'url' => env('DATABASE_URL'), - 'database' => env('DB_DATABASE', database_path('database.sqlite')), - 'prefix' => '', - 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), - ], - - 'mysql' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '3306'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'unix_socket' => env('DB_SOCKET', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - 'pgsql' => [ - 'driver' => 'pgsql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '5432'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - 'search_path' => 'public', - 'sslmode' => 'prefer', - ], - - 'sqlsrv' => [ - 'driver' => 'sqlsrv', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', 'localhost'), - 'port' => env('DB_PORT', '1433'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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'), - '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'), - 'password' => env('REDIS_PASSWORD'), - 'port' => env('REDIS_PORT', '6379'), - 'database' => env('REDIS_CACHE_DB', '1'), - ], - - ], - -]; diff --git a/Chapter27/onlineStore/config/filesystems.php b/Chapter27/onlineStore/config/filesystems.php deleted file mode 100644 index cf5abce..0000000 --- a/Chapter27/onlineStore/config/filesystems.php +++ /dev/null @@ -1,73 +0,0 @@ - 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 setup for each driver as an example of the required options. - | - | Supported Drivers: "local", "ftp", "sftp", "s3" - | - */ - - 'disks' => [ - - 'local' => [ - 'driver' => 'local', - 'root' => storage_path('app'), - ], - - 'public' => [ - 'driver' => 'local', - 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', - 'visibility' => 'public', - ], - - '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), - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter27/onlineStore/config/hashing.php b/Chapter27/onlineStore/config/hashing.php deleted file mode 100644 index bcd3be4..0000000 --- a/Chapter27/onlineStore/config/hashing.php +++ /dev/null @@ -1,52 +0,0 @@ - '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/Chapter27/onlineStore/config/logging.php b/Chapter27/onlineStore/config/logging.php deleted file mode 100644 index fefe088..0000000 --- a/Chapter27/onlineStore/config/logging.php +++ /dev/null @@ -1,119 +0,0 @@ - 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' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), - - /* - |-------------------------------------------------------------------------- - | 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'), - ], - - 'daily' => [ - 'driver' => 'daily', - 'path' => storage_path('logs/laravel.log'), - 'level' => env('LOG_LEVEL', 'debug'), - 'days' => 14, - ], - - 'slack' => [ - 'driver' => 'slack', - 'url' => env('LOG_SLACK_WEBHOOK_URL'), - 'username' => 'Laravel Log', - 'emoji' => ':boom:', - 'level' => env('LOG_LEVEL', 'critical'), - ], - - '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'), - ], - ], - - 'stderr' => [ - 'driver' => 'monolog', - 'level' => env('LOG_LEVEL', 'debug'), - 'handler' => StreamHandler::class, - 'formatter' => env('LOG_STDERR_FORMATTER'), - 'with' => [ - 'stream' => 'php://stderr', - ], - ], - - 'syslog' => [ - 'driver' => 'syslog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'errorlog' => [ - 'driver' => 'errorlog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'null' => [ - 'driver' => 'monolog', - 'handler' => NullHandler::class, - ], - - 'emergency' => [ - 'path' => storage_path('logs/laravel.log'), - ], - ], - -]; diff --git a/Chapter27/onlineStore/config/mail.php b/Chapter27/onlineStore/config/mail.php deleted file mode 100644 index 87b6fe3..0000000 --- a/Chapter27/onlineStore/config/mail.php +++ /dev/null @@ -1,117 +0,0 @@ - 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", - | "postmark", "log", "array", "failover" - | - */ - - 'mailers' => [ - 'smtp' => [ - 'transport' => 'smtp', - '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, - ], - - 'ses' => [ - 'transport' => 'ses', - ], - - 'mailgun' => [ - 'transport' => 'mailgun', - ], - - 'postmark' => [ - 'transport' => 'postmark', - ], - - 'sendmail' => [ - 'transport' => 'sendmail', - 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -t -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/Chapter27/onlineStore/config/queue.php b/Chapter27/onlineStore/config/queue.php deleted file mode 100644 index 25ea5a8..0000000 --- a/Chapter27/onlineStore/config/queue.php +++ /dev/null @@ -1,93 +0,0 @@ - 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, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter27/onlineStore/config/sanctum.php b/Chapter27/onlineStore/config/sanctum.php deleted file mode 100644 index 9281c92..0000000 --- a/Chapter27/onlineStore/config/sanctum.php +++ /dev/null @@ -1,65 +0,0 @@ - explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( - '%s%s', - 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', - env('APP_URL') ? ','.parse_url(env('APP_URL'), PHP_URL_HOST) : '' - ))), - - /* - |-------------------------------------------------------------------------- - | 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/Chapter27/onlineStore/config/services.php b/Chapter27/onlineStore/config/services.php deleted file mode 100644 index 2a1d616..0000000 --- a/Chapter27/onlineStore/config/services.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - 'domain' => env('MAILGUN_DOMAIN'), - 'secret' => env('MAILGUN_SECRET'), - 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), - ], - - '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/Chapter27/onlineStore/config/session.php b/Chapter27/onlineStore/config/session.php deleted file mode 100644 index 8fed97c..0000000 --- a/Chapter27/onlineStore/config/session.php +++ /dev/null @@ -1,201 +0,0 @@ - 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/Chapter27/onlineStore/config/view.php b/Chapter27/onlineStore/config/view.php deleted file mode 100644 index 22b8a18..0000000 --- a/Chapter27/onlineStore/config/view.php +++ /dev/null @@ -1,36 +0,0 @@ - [ - 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/Chapter27/onlineStore/database/.gitignore b/Chapter27/onlineStore/database/.gitignore deleted file mode 100644 index 9b19b93..0000000 --- a/Chapter27/onlineStore/database/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.sqlite* diff --git a/Chapter27/onlineStore/database/factories/UserFactory.php b/Chapter27/onlineStore/database/factories/UserFactory.php deleted file mode 100644 index d6ca926..0000000 --- a/Chapter27/onlineStore/database/factories/UserFactory.php +++ /dev/null @@ -1,42 +0,0 @@ - - */ -class UserFactory extends Factory -{ - /** - * Define the model's default state. - * - * @return array - */ - public function definition() - { - return [ - 'name' => $this->faker->name(), - 'email' => $this->faker->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. - * - * @return \Illuminate\Database\Eloquent\Factories\Factory - */ - public function unverified() - { - return $this->state(function (array $attributes) { - return [ - 'email_verified_at' => null, - ]; - }); - } -} diff --git a/Chapter27/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php b/Chapter27/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php deleted file mode 100644 index cf6b776..0000000 --- a/Chapter27/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->string('name'); - $table->string('email')->unique(); - $table->timestamp('email_verified_at')->nullable(); - $table->string('password'); - $table->rememberToken(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('users'); - } -}; diff --git a/Chapter27/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php b/Chapter27/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php deleted file mode 100644 index 0ee0a36..0000000 --- a/Chapter27/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php +++ /dev/null @@ -1,32 +0,0 @@ -string('email')->index(); - $table->string('token'); - $table->timestamp('created_at')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('password_resets'); - } -} diff --git a/Chapter27/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/Chapter27/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php deleted file mode 100644 index 1719198..0000000 --- a/Chapter27/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php +++ /dev/null @@ -1,36 +0,0 @@ -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. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('failed_jobs'); - } -}; diff --git a/Chapter27/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/Chapter27/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php deleted file mode 100644 index fd235f8..0000000 --- a/Chapter27/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->morphs('tokenable'); - $table->string('name'); - $table->string('token', 64)->unique(); - $table->text('abilities')->nullable(); - $table->timestamp('last_used_at')->nullable(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('personal_access_tokens'); - } -}; diff --git a/Chapter27/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php b/Chapter27/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php deleted file mode 100644 index 2eecdc2..0000000 --- a/Chapter27/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php +++ /dev/null @@ -1,35 +0,0 @@ -id(); - $table->string('name'); - $table->text('description'); - $table->string('image'); - $table->integer('price'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('products'); - } -}; diff --git a/Chapter27/onlineStore/database/migrations/2022_02_12_140820_alter_users_table.php b/Chapter27/onlineStore/database/migrations/2022_02_12_140820_alter_users_table.php deleted file mode 100644 index 5bfcf7e..0000000 --- a/Chapter27/onlineStore/database/migrations/2022_02_12_140820_alter_users_table.php +++ /dev/null @@ -1,34 +0,0 @@ -string('role')->default('client'); - $table->integer('balance'); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::table('users', function (Blueprint $table) { - $table->dropColumn(['role']); - $table->dropColumn(['balance']); - }); - } -}; diff --git a/Chapter27/onlineStore/database/migrations/2022_02_12_152713_create_orders_table.php b/Chapter27/onlineStore/database/migrations/2022_02_12_152713_create_orders_table.php deleted file mode 100644 index fc05fda..0000000 --- a/Chapter27/onlineStore/database/migrations/2022_02_12_152713_create_orders_table.php +++ /dev/null @@ -1,34 +0,0 @@ -id(); - $table->integer('total'); - $table->unsignedBigInteger('user_id'); - $table->foreign('user_id')->references('id')->on('users'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('orders'); - } -}; diff --git a/Chapter27/onlineStore/database/migrations/2022_02_12_152850_create_items_table.php b/Chapter27/onlineStore/database/migrations/2022_02_12_152850_create_items_table.php deleted file mode 100644 index d7dfac5..0000000 --- a/Chapter27/onlineStore/database/migrations/2022_02_12_152850_create_items_table.php +++ /dev/null @@ -1,37 +0,0 @@ -id(); - $table->integer('quantity'); - $table->integer('price'); - $table->unsignedBigInteger('order_id'); - $table->foreign('order_id')->references('id')->on('orders'); - $table->unsignedBigInteger('product_id'); - $table->foreign('product_id')->references('id')->on('products'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('items'); - } -}; diff --git a/Chapter27/onlineStore/database/seeders/DatabaseSeeder.php b/Chapter27/onlineStore/database/seeders/DatabaseSeeder.php deleted file mode 100644 index 71f673f..0000000 --- a/Chapter27/onlineStore/database/seeders/DatabaseSeeder.php +++ /dev/null @@ -1,19 +0,0 @@ -create(); - } -} diff --git a/Chapter27/onlineStore/lang/en.json b/Chapter27/onlineStore/lang/en.json deleted file mode 100644 index 577680d..0000000 --- a/Chapter27/onlineStore/lang/en.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "The :attribute must contain at least one letter.": "The :attribute must contain at least one letter.", - "The :attribute must contain at least one number.": "The :attribute must contain at least one number.", - "The :attribute must contain at least one symbol.": "The :attribute must contain at least one symbol.", - "The :attribute must contain at least one uppercase and one lowercase letter.": "The :attribute must contain at least one uppercase and one lowercase letter.", - "The given :attribute has appeared in a data leak. Please choose a different :attribute.": "The given :attribute has appeared in a data leak. Please choose a different :attribute." -} diff --git a/Chapter27/onlineStore/lang/en/auth.php b/Chapter27/onlineStore/lang/en/auth.php deleted file mode 100644 index 6598e2c..0000000 --- a/Chapter27/onlineStore/lang/en/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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/Chapter27/onlineStore/lang/en/pagination.php b/Chapter27/onlineStore/lang/en/pagination.php deleted file mode 100644 index d481411..0000000 --- a/Chapter27/onlineStore/lang/en/pagination.php +++ /dev/null @@ -1,19 +0,0 @@ - '« Previous', - 'next' => 'Next »', - -]; diff --git a/Chapter27/onlineStore/lang/en/passwords.php b/Chapter27/onlineStore/lang/en/passwords.php deleted file mode 100644 index 2345a56..0000000 --- a/Chapter27/onlineStore/lang/en/passwords.php +++ /dev/null @@ -1,22 +0,0 @@ - '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/Chapter27/onlineStore/lang/en/validation.php b/Chapter27/onlineStore/lang/en/validation.php deleted file mode 100644 index 783003c..0000000 --- a/Chapter27/onlineStore/lang/en/validation.php +++ /dev/null @@ -1,163 +0,0 @@ - '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' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - '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' => [ - 'numeric' => 'The :attribute must be greater than :value.', - 'file' => 'The :attribute must be greater than :value kilobytes.', - 'string' => 'The :attribute must be greater than :value characters.', - 'array' => 'The :attribute must have more than :value items.', - ], - 'gte' => [ - 'numeric' => 'The :attribute must be greater than or equal to :value.', - 'file' => 'The :attribute must be greater than or equal to :value kilobytes.', - 'string' => 'The :attribute must be greater than or equal to :value characters.', - 'array' => 'The :attribute must have :value items or more.', - ], - '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' => [ - 'numeric' => 'The :attribute must be less than :value.', - 'file' => 'The :attribute must be less than :value kilobytes.', - 'string' => 'The :attribute must be less than :value characters.', - 'array' => 'The :attribute must have less than :value items.', - ], - 'lte' => [ - 'numeric' => 'The :attribute must be less than or equal to :value.', - 'file' => 'The :attribute must be less than or equal to :value kilobytes.', - 'string' => 'The :attribute must be less than or equal to :value characters.', - 'array' => 'The :attribute must not have more than :value items.', - ], - 'mac_address' => 'The :attribute must be a valid MAC address.', - 'max' => [ - 'numeric' => 'The :attribute must not be greater than :max.', - 'file' => 'The :attribute must not be greater than :max kilobytes.', - 'string' => 'The :attribute must not be greater than :max characters.', - 'array' => 'The :attribute must not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - '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.', - 'password' => 'The password is incorrect.', - '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' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - '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/Chapter27/onlineStore/package.json b/Chapter27/onlineStore/package.json deleted file mode 100644 index 7b71681..0000000 --- a/Chapter27/onlineStore/package.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "private": true, - "scripts": { - "dev": "npm run development", - "development": "mix", - "watch": "mix watch", - "watch-poll": "mix watch -- --watch-options-poll=1000", - "hot": "mix watch --hot", - "prod": "npm run production", - "production": "mix --production" - }, - "devDependencies": { - "@popperjs/core": "^2.10.2", - "axios": "^0.25", - "bootstrap": "^5.1.3", - "laravel-mix": "^6.0.6", - "lodash": "^4.17.19", - "postcss": "^8.1.14", - "sass": "^1.32.11", - "sass-loader": "^11.0.1" - } -} diff --git a/Chapter27/onlineStore/phpcs.xml b/Chapter27/onlineStore/phpcs.xml deleted file mode 100644 index a1cf2b6..0000000 --- a/Chapter27/onlineStore/phpcs.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - The coding standard for the Online Store project - - app/ - config/ - database/ - routes/ - */migrations/* - diff --git a/Chapter27/onlineStore/phpunit.xml b/Chapter27/onlineStore/phpunit.xml deleted file mode 100644 index 2ac86a1..0000000 --- a/Chapter27/onlineStore/phpunit.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - ./tests/Unit - - - ./tests/Feature - - - - - ./app - - - - - - - - - - - - - - diff --git a/Chapter27/onlineStore/public/.htaccess b/Chapter27/onlineStore/public/.htaccess deleted file mode 100644 index 3aec5e2..0000000 --- a/Chapter27/onlineStore/public/.htaccess +++ /dev/null @@ -1,21 +0,0 @@ - - - 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/Chapter27/onlineStore/public/css/admin.css b/Chapter27/onlineStore/public/css/admin.css deleted file mode 100644 index d9495a1..0000000 --- a/Chapter27/onlineStore/public/css/admin.css +++ /dev/null @@ -1,33 +0,0 @@ -.copyright { - background-color: #1a252f; -} - -.fixed { - -ms-flex: 0 0 250px; - flex: 0 0 250px; -} - -.content-grey { - background-color: #f8f9fc; -} - -hr { - margin-top: 0.8em; - margin-bottom: 0.8em; -} - -.img-profile { - height: 2rem; - width: 2rem; -} - -.profile-font { - color: #858796 !important; - font-size: 80%; - font-weight: 400; -} - -.card-header { - background-color: #f8f9fc; - border-bottom: 1px solid #e3e6f0; -} diff --git a/Chapter27/onlineStore/public/css/app.css b/Chapter27/onlineStore/public/css/app.css deleted file mode 100644 index cabac36..0000000 --- a/Chapter27/onlineStore/public/css/app.css +++ /dev/null @@ -1,20 +0,0 @@ -.bg-secondary { - background-color: #2c3e50 !important; -} - -.copyright { - background-color: #1a252f; -} - -.bg-primary { - background-color: #1abc9c !important; -} - -nav{ - font-weight: 700; -} - -.img-card{ - height: 18vw; - object-fit: cover; -} diff --git a/Chapter27/onlineStore/public/favicon.ico b/Chapter27/onlineStore/public/favicon.ico deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter27/onlineStore/public/img/game.png b/Chapter27/onlineStore/public/img/game.png deleted file mode 100644 index 85420e8bbc16098bf26b4ee63bde0e91a19d1f2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25896 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 cz>% diff --git a/Chapter27/onlineStore/public/img/safe.png b/Chapter27/onlineStore/public/img/safe.png deleted file mode 100644 index 445942c707af53210931f9f4f99f6d3cb69e5d89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19240 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
    w==XB0?3|p=#`o%NsudE(E-U#KS3Snw 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 o>ir+C;RN10sIS0&a;p - - - - - - - - - - - - - - - - - - diff --git a/Chapter27/onlineStore/public/index.php b/Chapter27/onlineStore/public/index.php deleted file mode 100644 index 1d69f3a..0000000 --- a/Chapter27/onlineStore/public/index.php +++ /dev/null @@ -1,55 +0,0 @@ -make(Kernel::class); - -$response = $kernel->handle( - $request = Request::capture() -)->send(); - -$kernel->terminate($request, $response); diff --git a/Chapter27/onlineStore/public/robots.txt b/Chapter27/onlineStore/public/robots.txt deleted file mode 100644 index eb05362..0000000 --- a/Chapter27/onlineStore/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: diff --git a/Chapter27/onlineStore/resources/css/app.css b/Chapter27/onlineStore/resources/css/app.css deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter27/onlineStore/resources/js/app.js b/Chapter27/onlineStore/resources/js/app.js deleted file mode 100644 index 40c55f6..0000000 --- a/Chapter27/onlineStore/resources/js/app.js +++ /dev/null @@ -1 +0,0 @@ -require('./bootstrap'); diff --git a/Chapter27/onlineStore/resources/js/bootstrap.js b/Chapter27/onlineStore/resources/js/bootstrap.js deleted file mode 100644 index dcdc4df..0000000 --- a/Chapter27/onlineStore/resources/js/bootstrap.js +++ /dev/null @@ -1,32 +0,0 @@ -window._ = require('lodash'); - -try { - require('bootstrap'); -} catch (e) {} - -/** - * 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 = require('axios'); - -window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; - -/** - * 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'; - -// window.Pusher = require('pusher-js'); - -// window.Echo = new Echo({ -// broadcaster: 'pusher', -// key: process.env.MIX_PUSHER_APP_KEY, -// cluster: process.env.MIX_PUSHER_APP_CLUSTER, -// forceTLS: true -// }); diff --git a/Chapter27/onlineStore/resources/sass/_variables.scss b/Chapter27/onlineStore/resources/sass/_variables.scss deleted file mode 100644 index 172daaa..0000000 --- a/Chapter27/onlineStore/resources/sass/_variables.scss +++ /dev/null @@ -1,7 +0,0 @@ -// Body -$body-bg: #f8fafc; - -// Typography -$font-family-sans-serif: 'Nunito', sans-serif; -$font-size-base: 0.9rem; -$line-height-base: 1.6; diff --git a/Chapter27/onlineStore/resources/sass/app.scss b/Chapter27/onlineStore/resources/sass/app.scss deleted file mode 100644 index 3193ffa..0000000 --- a/Chapter27/onlineStore/resources/sass/app.scss +++ /dev/null @@ -1,8 +0,0 @@ -// Fonts -@import url('https://fonts.googleapis.com/css?family=Nunito'); - -// Variables -@import 'variables'; - -// Bootstrap -@import '~bootstrap/scss/bootstrap'; diff --git a/Chapter27/onlineStore/resources/views/admin/home/index.blade.php b/Chapter27/onlineStore/resources/views/admin/home/index.blade.php deleted file mode 100644 index a2b4868..0000000 --- a/Chapter27/onlineStore/resources/views/admin/home/index.blade.php +++ /dev/null @@ -1,12 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
    -
    - Admin Panel - Home Page -
    -
    - Welcome to the Admin Panel, use the sidebar to navigate between the different options. -
    -
    -@endsection diff --git a/Chapter27/onlineStore/resources/views/admin/product/edit.blade.php b/Chapter27/onlineStore/resources/views/admin/product/edit.blade.php deleted file mode 100644 index b8e03d8..0000000 --- a/Chapter27/onlineStore/resources/views/admin/product/edit.blade.php +++ /dev/null @@ -1,61 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
    -
    - Edit Product -
    -
    - @if($errors->any()) -
      - @foreach($errors->all() as $error) -
    • - {{ $error }}
    • - @endforeach -
    - @endif - -
    - @csrf - @method('PUT') -
    -
    -
    - -
    - -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -   -
    -
    -
    - - -
    - -
    -
    -
    -@endsection diff --git a/Chapter27/onlineStore/resources/views/admin/product/index.blade.php b/Chapter27/onlineStore/resources/views/admin/product/index.blade.php deleted file mode 100644 index 19fbe4b..0000000 --- a/Chapter27/onlineStore/resources/views/admin/product/index.blade.php +++ /dev/null @@ -1,98 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
    -
    - Create Products -
    -
    - @if($errors->any()) -
      - @foreach($errors->all() as $error) -
    • - {{ $error }}
    • - @endforeach -
    - @endif - -
    - @csrf -
    -
    -
    - -
    - -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -   -
    -
    -
    - - -
    - -
    -
    -
    - -
    -
    - Manage Products -
    -
    - - - - - - - - - - - @foreach ($viewData["products"] as $product) - - - - - - - @endforeach - -
    IDNameEditDelete
    {{ $product->getId() }}{{ $product->getName() }} - - - - -
    - @csrf - @method('DELETE') - -
    -
    -
    -
    -@endsection diff --git a/Chapter27/onlineStore/resources/views/auth/login.blade.php b/Chapter27/onlineStore/resources/views/auth/login.blade.php deleted file mode 100644 index c7e5ea0..0000000 --- a/Chapter27/onlineStore/resources/views/auth/login.blade.php +++ /dev/null @@ -1,73 +0,0 @@ -@extends('layouts.app') - -@section('content') -
    -@endsection diff --git a/Chapter27/onlineStore/resources/views/auth/passwords/confirm.blade.php b/Chapter27/onlineStore/resources/views/auth/passwords/confirm.blade.php deleted file mode 100644 index f8c8e61..0000000 --- a/Chapter27/onlineStore/resources/views/auth/passwords/confirm.blade.php +++ /dev/null @@ -1,49 +0,0 @@ -@extends('layouts.app') - -@section('content') - -@endsection diff --git a/Chapter27/onlineStore/resources/views/auth/passwords/email.blade.php b/Chapter27/onlineStore/resources/views/auth/passwords/email.blade.php deleted file mode 100644 index d1ac783..0000000 --- a/Chapter27/onlineStore/resources/views/auth/passwords/email.blade.php +++ /dev/null @@ -1,47 +0,0 @@ -@extends('layouts.app') - -@section('content') -
    -
    -
    -
    -
    {{ __('Reset Password') }}
    - -
    - @if (session('status')) - - @endif - -
    - @csrf - -
    - - -
    - - - @error('email') - - {{ $message }} - - @enderror -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -@endsection diff --git a/Chapter27/onlineStore/resources/views/auth/passwords/reset.blade.php b/Chapter27/onlineStore/resources/views/auth/passwords/reset.blade.php deleted file mode 100644 index dccf6c6..0000000 --- a/Chapter27/onlineStore/resources/views/auth/passwords/reset.blade.php +++ /dev/null @@ -1,65 +0,0 @@ -@extends('layouts.app') - -@section('content') -
    -
    -
    -
    -
    {{ __('Reset Password') }}
    - -
    -
    - @csrf - - - -
    - - -
    - - - @error('email') - - {{ $message }} - - @enderror -
    -
    - -
    - - -
    - - - @error('password') - - {{ $message }} - - @enderror -
    -
    - -
    - - -
    - -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -@endsection diff --git a/Chapter27/onlineStore/resources/views/auth/register.blade.php b/Chapter27/onlineStore/resources/views/auth/register.blade.php deleted file mode 100644 index e001a0b..0000000 --- a/Chapter27/onlineStore/resources/views/auth/register.blade.php +++ /dev/null @@ -1,77 +0,0 @@ -@extends('layouts.app') - -@section('content') -
    -
    -
    -
    -
    {{ __('Register') }}
    - -
    -
    - @csrf - -
    - - -
    - - - @error('name') - - {{ $message }} - - @enderror -
    -
    - -
    - - -
    - - - @error('email') - - {{ $message }} - - @enderror -
    -
    - -
    - - -
    - - - @error('password') - - {{ $message }} - - @enderror -
    -
    - -
    - - -
    - -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -@endsection diff --git a/Chapter27/onlineStore/resources/views/auth/verify.blade.php b/Chapter27/onlineStore/resources/views/auth/verify.blade.php deleted file mode 100644 index 9f8c1bc..0000000 --- a/Chapter27/onlineStore/resources/views/auth/verify.blade.php +++ /dev/null @@ -1,28 +0,0 @@ -@extends('layouts.app') - -@section('content') -
    -
    -
    -
    -
    {{ __('Verify Your Email Address') }}
    - -
    - @if (session('resent')) - - @endif - - {{ __('Before proceeding, please check your email for a verification link.') }} - {{ __('If you did not receive the email') }}, -
    - @csrf - . -
    -
    -
    -
    -
    -
    -@endsection diff --git a/Chapter27/onlineStore/resources/views/cart/index.blade.php b/Chapter27/onlineStore/resources/views/cart/index.blade.php deleted file mode 100644 index d9e2cd5..0000000 --- a/Chapter27/onlineStore/resources/views/cart/index.blade.php +++ /dev/null @@ -1,45 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    -@endsection diff --git a/Chapter27/onlineStore/resources/views/cart/purchase.blade.php b/Chapter27/onlineStore/resources/views/cart/purchase.blade.php deleted file mode 100644 index 83b04d3..0000000 --- a/Chapter27/onlineStore/resources/views/cart/purchase.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    -
    - Purchase Completed -
    -
    - -
    -
    -@endsection diff --git a/Chapter27/onlineStore/resources/views/home.blade.php b/Chapter27/onlineStore/resources/views/home.blade.php deleted file mode 100644 index 1f34466..0000000 --- a/Chapter27/onlineStore/resources/views/home.blade.php +++ /dev/null @@ -1,23 +0,0 @@ -@extends('layouts.app') - -@section('content') -
    -
    -
    -
    -
    {{ __('Dashboard') }}
    - -
    - @if (session('status')) - - @endif - - {{ __('You are logged in!') }} -
    -
    -
    -
    -
    -@endsection diff --git a/Chapter27/onlineStore/resources/views/home/about.blade.php b/Chapter27/onlineStore/resources/views/home/about.blade.php deleted file mode 100644 index f79abf3..0000000 --- a/Chapter27/onlineStore/resources/views/home/about.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    -
    -
    -

    {{ $viewData["description"] }}

    -
    -
    -

    {{ $viewData["author"] }}

    -
    -
    -
    -@endsection diff --git a/Chapter27/onlineStore/resources/views/home/index.blade.php b/Chapter27/onlineStore/resources/views/home/index.blade.php deleted file mode 100644 index 1affb20..0000000 --- a/Chapter27/onlineStore/resources/views/home/index.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('content') -
    -
    - -
    -
    - -
    -
    - -
    -
    -@endsection diff --git a/Chapter27/onlineStore/resources/views/layouts/admin.blade.php b/Chapter27/onlineStore/resources/views/layouts/admin.blade.php deleted file mode 100644 index 4aff3f8..0000000 --- a/Chapter27/onlineStore/resources/views/layouts/admin.blade.php +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - @yield('title', 'Admin - Online Store') - - - -
    - - - -
    - - -
    - @yield('content') -
    -
    -
    - - - - - - - - - diff --git a/Chapter27/onlineStore/resources/views/layouts/app.blade.php b/Chapter27/onlineStore/resources/views/layouts/app.blade.php deleted file mode 100644 index 7b86f0e..0000000 --- a/Chapter27/onlineStore/resources/views/layouts/app.blade.php +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - @yield('title', 'Online Store') - - - - - -
    -
    -

    @yield('subtitle', 'A Laravel Online Store')

    -
    -
    - - -
    - @yield('content') -
    - - - - - - - diff --git a/Chapter27/onlineStore/resources/views/product/index.blade.php b/Chapter27/onlineStore/resources/views/product/index.blade.php deleted file mode 100644 index 64c3e18..0000000 --- a/Chapter27/onlineStore/resources/views/product/index.blade.php +++ /dev/null @@ -1,18 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    - @foreach ($viewData["products"] as $product) - - @endforeach -
    -@endsection diff --git a/Chapter27/onlineStore/resources/views/product/show.blade.php b/Chapter27/onlineStore/resources/views/product/show.blade.php deleted file mode 100644 index 801ea09..0000000 --- a/Chapter27/onlineStore/resources/views/product/show.blade.php +++ /dev/null @@ -1,36 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    -
    -
    - getImage()) }}" class="img-fluid rounded-start"> -
    -
    -
    -
    - {{ $viewData["product"]->getName() }} (${{ $viewData["product"]->getPrice() }}) -
    -

    {{ $viewData["product"]->getDescription() }}

    -

    -

    -
    - @csrf -
    -
    -
    Quantity
    - -
    -
    -
    - -
    -
    -
    -

    -
    -
    -
    -
    -@endsection diff --git a/Chapter27/onlineStore/resources/views/welcome.blade.php b/Chapter27/onlineStore/resources/views/welcome.blade.php deleted file mode 100644 index c587c72..0000000 --- a/Chapter27/onlineStore/resources/views/welcome.blade.php +++ /dev/null @@ -1,7 +0,0 @@ -@extends('layouts.app') -@section('title', 'Home Page - Online Store') -@section('content') -
    - Welcome to the application -
    -@endsection \ No newline at end of file diff --git a/Chapter27/onlineStore/routes/api.php b/Chapter27/onlineStore/routes/api.php deleted file mode 100644 index eb6fa48..0000000 --- a/Chapter27/onlineStore/routes/api.php +++ /dev/null @@ -1,19 +0,0 @@ -get('/user', function (Request $request) { - return $request->user(); -}); diff --git a/Chapter27/onlineStore/routes/channels.php b/Chapter27/onlineStore/routes/channels.php deleted file mode 100644 index 5d451e1..0000000 --- a/Chapter27/onlineStore/routes/channels.php +++ /dev/null @@ -1,18 +0,0 @@ -id === (int) $id; -}); diff --git a/Chapter27/onlineStore/routes/console.php b/Chapter27/onlineStore/routes/console.php deleted file mode 100644 index e05f4c9..0000000 --- a/Chapter27/onlineStore/routes/console.php +++ /dev/null @@ -1,19 +0,0 @@ -comment(Inspiring::quote()); -})->purpose('Display an inspiring quote'); diff --git a/Chapter27/onlineStore/routes/web.php b/Chapter27/onlineStore/routes/web.php deleted file mode 100644 index 879fdb9..0000000 --- a/Chapter27/onlineStore/routes/web.php +++ /dev/null @@ -1,38 +0,0 @@ -name("home.index"); -Route::get('/about', 'App\Http\Controllers\HomeController@about')->name("home.about"); -Route::get('/products', 'App\Http\Controllers\ProductController@index')->name("product.index"); -Route::get('/products/{id}', 'App\Http\Controllers\ProductController@show')->name("product.show"); - -Route::get('/cart', 'App\Http\Controllers\CartController@index')->name("cart.index"); -Route::get('/cart/delete', 'App\Http\Controllers\CartController@delete')->name("cart.delete"); -Route::post('/cart/add/{id}', 'App\Http\Controllers\CartController@add')->name("cart.add"); - -Route::middleware('auth')->group(function () { - Route::get('/cart/purchase', 'App\Http\Controllers\CartController@purchase')->name("cart.purchase"); -}); - -Route::middleware('admin')->group(function () { - Route::get('/admin', 'App\Http\Controllers\Admin\AdminHomeController@index')->name("admin.home.index"); - Route::get('/admin/products', 'App\Http\Controllers\Admin\AdminProductController@index')->name("admin.product.index"); - Route::post('/admin/products/store', 'App\Http\Controllers\Admin\AdminProductController@store')->name("admin.product.store"); - Route::delete('/admin/products/{id}/delete', 'App\Http\Controllers\Admin\AdminProductController@delete')->name("admin.product.delete"); - Route::get('/admin/products/{id}/edit', 'App\Http\Controllers\Admin\AdminProductController@edit')->name("admin.product.edit"); - Route::put('/admin/products/{id}/update', 'App\Http\Controllers\Admin\AdminProductController@update')->name("admin.product.update"); -}); - -Auth::routes(); diff --git a/Chapter27/onlineStore/storage/app/.gitignore b/Chapter27/onlineStore/storage/app/.gitignore deleted file mode 100644 index 8f4803c..0000000 --- a/Chapter27/onlineStore/storage/app/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!public/ -!.gitignore diff --git a/Chapter27/onlineStore/storage/app/public/.gitignore b/Chapter27/onlineStore/storage/app/public/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter27/onlineStore/storage/app/public/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter27/onlineStore/storage/framework/.gitignore b/Chapter27/onlineStore/storage/framework/.gitignore deleted file mode 100644 index 05c4471..0000000 --- a/Chapter27/onlineStore/storage/framework/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -compiled.php -config.php -down -events.scanned.php -maintenance.php -routes.php -routes.scanned.php -schedule-* -services.json diff --git a/Chapter27/onlineStore/storage/framework/cache/.gitignore b/Chapter27/onlineStore/storage/framework/cache/.gitignore deleted file mode 100644 index 01e4a6c..0000000 --- a/Chapter27/onlineStore/storage/framework/cache/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!data/ -!.gitignore diff --git a/Chapter27/onlineStore/storage/framework/cache/data/.gitignore b/Chapter27/onlineStore/storage/framework/cache/data/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter27/onlineStore/storage/framework/cache/data/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter27/onlineStore/storage/framework/sessions/.gitignore b/Chapter27/onlineStore/storage/framework/sessions/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter27/onlineStore/storage/framework/sessions/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter27/onlineStore/storage/framework/testing/.gitignore b/Chapter27/onlineStore/storage/framework/testing/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter27/onlineStore/storage/framework/testing/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter27/onlineStore/storage/framework/views/.gitignore b/Chapter27/onlineStore/storage/framework/views/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter27/onlineStore/storage/framework/views/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter27/onlineStore/storage/logs/.gitignore b/Chapter27/onlineStore/storage/logs/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter27/onlineStore/storage/logs/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter27/onlineStore/tests/CreatesApplication.php b/Chapter27/onlineStore/tests/CreatesApplication.php deleted file mode 100644 index 547152f..0000000 --- a/Chapter27/onlineStore/tests/CreatesApplication.php +++ /dev/null @@ -1,22 +0,0 @@ -make(Kernel::class)->bootstrap(); - - return $app; - } -} diff --git a/Chapter27/onlineStore/tests/Feature/ExampleTest.php b/Chapter27/onlineStore/tests/Feature/ExampleTest.php deleted file mode 100644 index 78ccc21..0000000 --- a/Chapter27/onlineStore/tests/Feature/ExampleTest.php +++ /dev/null @@ -1,21 +0,0 @@ -get('/'); - - $response->assertStatus(200); - } -} diff --git a/Chapter27/onlineStore/tests/TestCase.php b/Chapter27/onlineStore/tests/TestCase.php deleted file mode 100644 index 2932d4a..0000000 --- a/Chapter27/onlineStore/tests/TestCase.php +++ /dev/null @@ -1,10 +0,0 @@ -assertTrue(true); - } -} diff --git a/Chapter27/onlineStore/webpack.mix.js b/Chapter27/onlineStore/webpack.mix.js deleted file mode 100644 index 1a2a958..0000000 --- a/Chapter27/onlineStore/webpack.mix.js +++ /dev/null @@ -1,16 +0,0 @@ -const mix = require('laravel-mix'); - -/* - |-------------------------------------------------------------------------- - | Mix Asset Management - |-------------------------------------------------------------------------- - | - | Mix provides a clean, fluent API for defining some Webpack build steps - | for your Laravel application. By default, we are compiling the Sass - | file for the application as well as bundling up all the JS files. - | - */ - -mix.js('resources/js/app.js', 'public/js') - .sass('resources/sass/app.scss', 'public/css') - .sourceMaps(); diff --git a/Chapter28/onlineStore/.editorconfig b/Chapter28/onlineStore/.editorconfig deleted file mode 100644 index 1671c9b..0000000 --- a/Chapter28/onlineStore/.editorconfig +++ /dev/null @@ -1,18 +0,0 @@ -root = true - -[*] -charset = utf-8 -end_of_line = lf -insert_final_newline = true -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true - -[*.md] -trim_trailing_whitespace = false - -[*.{yml,yaml}] -indent_size = 2 - -[docker-compose.yml] -indent_size = 4 diff --git a/Chapter28/onlineStore/.env.example b/Chapter28/onlineStore/.env.example deleted file mode 100644 index 8510237..0000000 --- a/Chapter28/onlineStore/.env.example +++ /dev/null @@ -1,52 +0,0 @@ -APP_NAME=Laravel -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=laravel -DB_USERNAME=root -DB_PASSWORD= - -BROADCAST_DRIVER=log -CACHE_DRIVER=file -FILESYSTEM_DISK=local -QUEUE_CONNECTION=sync -SESSION_DRIVER=file -SESSION_LIFETIME=120 - -MEMCACHED_HOST=127.0.0.1 - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -MAIL_MAILER=smtp -MAIL_HOST=mailhog -MAIL_PORT=1025 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS=null -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_APP_CLUSTER=mt1 - -MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/Chapter28/onlineStore/.gitattributes b/Chapter28/onlineStore/.gitattributes deleted file mode 100644 index 510d996..0000000 --- a/Chapter28/onlineStore/.gitattributes +++ /dev/null @@ -1,10 +0,0 @@ -* text=auto - -*.blade.php diff=html -*.css diff=css -*.html diff=html -*.md diff=markdown -*.php diff=php - -/.github export-ignore -CHANGELOG.md export-ignore diff --git a/Chapter28/onlineStore/.gitignore b/Chapter28/onlineStore/.gitignore deleted file mode 100644 index eb003b0..0000000 --- a/Chapter28/onlineStore/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -/node_modules -/public/hot -/public/storage -/storage/*.key -/vendor -.env -.env.backup -.phpunit.result.cache -docker-compose.override.yml -Homestead.json -Homestead.yaml -npm-debug.log -yarn-error.log -/.idea -/.vscode diff --git a/Chapter28/onlineStore/.styleci.yml b/Chapter28/onlineStore/.styleci.yml deleted file mode 100644 index 679a631..0000000 --- a/Chapter28/onlineStore/.styleci.yml +++ /dev/null @@ -1,13 +0,0 @@ -php: - preset: laravel - version: 8 - disabled: - - no_unused_imports - finder: - not-name: - - index.php -js: - finder: - not-name: - - webpack.mix.js -css: true diff --git a/Chapter28/onlineStore/README.md b/Chapter28/onlineStore/README.md deleted file mode 100644 index f171eca..0000000 --- a/Chapter28/onlineStore/README.md +++ /dev/null @@ -1,64 +0,0 @@ -

    - -

    -Build Status -Total Downloads -Latest Stable Version -License -

    - -## About Laravel - -Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as: - -- [Simple, fast routing engine](https://laravel.com/docs/routing). -- [Powerful dependency injection container](https://laravel.com/docs/container). -- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage. -- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent). -- Database agnostic [schema migrations](https://laravel.com/docs/migrations). -- [Robust background job processing](https://laravel.com/docs/queues). -- [Real-time event broadcasting](https://laravel.com/docs/broadcasting). - -Laravel is accessible, powerful, and provides tools required for large, robust applications. - -## Learning Laravel - -Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework. - -If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 2000 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library. - -## Laravel Sponsors - -We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell). - -### Premium Partners - -- **[Vehikl](https://vehikl.com/)** -- **[Tighten Co.](https://tighten.co)** -- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** -- **[64 Robots](https://64robots.com)** -- **[Cubet Techno Labs](https://cubettech.com)** -- **[Cyber-Duck](https://cyber-duck.co.uk)** -- **[Many](https://www.many.co.uk)** -- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)** -- **[DevSquad](https://devsquad.com)** -- **[Curotec](https://www.curotec.com/services/technologies/laravel/)** -- **[OP.GG](https://op.gg)** -- **[WebReinvent](https://webreinvent.com/?utm_source=laravel&utm_medium=github&utm_campaign=patreon-sponsors)** -- **[Lendio](https://lendio.com)** - -## Contributing - -Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions). - -## Code of Conduct - -In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). - -## Security Vulnerabilities - -If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed. - -## License - -The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). diff --git a/Chapter28/onlineStore/app/Console/Kernel.php b/Chapter28/onlineStore/app/Console/Kernel.php deleted file mode 100644 index d8bc1d2..0000000 --- a/Chapter28/onlineStore/app/Console/Kernel.php +++ /dev/null @@ -1,32 +0,0 @@ -command('inspire')->hourly(); - } - - /** - * Register the commands for the application. - * - * @return void - */ - protected function commands() - { - $this->load(__DIR__.'/Commands'); - - require base_path('routes/console.php'); - } -} diff --git a/Chapter28/onlineStore/app/Exceptions/Handler.php b/Chapter28/onlineStore/app/Exceptions/Handler.php deleted file mode 100644 index 8e7fbd1..0000000 --- a/Chapter28/onlineStore/app/Exceptions/Handler.php +++ /dev/null @@ -1,41 +0,0 @@ -> - */ - protected $dontReport = [ - // - ]; - - /** - * A list of the inputs that are never flashed for validation exceptions. - * - * @var array - */ - protected $dontFlash = [ - 'current_password', - 'password', - 'password_confirmation', - ]; - - /** - * Register the exception handling callbacks for the application. - * - * @return void - */ - public function register() - { - $this->reportable(function (Throwable $e) { - // - }); - } -} diff --git a/Chapter28/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php b/Chapter28/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php deleted file mode 100644 index cd78cb3..0000000 --- a/Chapter28/onlineStore/app/Http/Controllers/Admin/AdminHomeController.php +++ /dev/null @@ -1,16 +0,0 @@ -with("viewData", $viewData); - } -} diff --git a/Chapter28/onlineStore/app/Http/Controllers/Admin/AdminProductController.php b/Chapter28/onlineStore/app/Http/Controllers/Admin/AdminProductController.php deleted file mode 100644 index d1c6c52..0000000 --- a/Chapter28/onlineStore/app/Http/Controllers/Admin/AdminProductController.php +++ /dev/null @@ -1,79 +0,0 @@ -with("viewData", $viewData); - } - - public function store(Request $request) - { - Product::validate($request); - - $newProduct = new Product(); - $newProduct->setName($request->input('name')); - $newProduct->setDescription($request->input('description')); - $newProduct->setPrice($request->input('price')); - $newProduct->setImage("game.png"); - $newProduct->save(); - - if ($request->hasFile('image')) { - $imageName = $newProduct->getId().".".$request->file('image')->extension(); - Storage::disk('public')->put( - $imageName, - file_get_contents($request->file('image')->getRealPath()) - ); - $newProduct->setImage($imageName); - $newProduct->save(); - } - - return back(); - } - - public function delete($id) - { - Product::destroy($id); - return back(); - } - - public function edit($id) - { - $viewData = []; - $viewData["title"] = "Admin Page - Edit Product - Online Store"; - $viewData["product"] = Product::findOrFail($id); - return view('admin.product.edit')->with("viewData", $viewData); - } - - public function update(Request $request, $id) - { - Product::validate($request); - - $product = Product::findOrFail($id); - $product->setName($request->input('name')); - $product->setDescription($request->input('description')); - $product->setPrice($request->input('price')); - - if ($request->hasFile('image')) { - $imageName = $product->getId().".".$request->file('image')->extension(); - Storage::disk('public')->put( - $imageName, - file_get_contents($request->file('image')->getRealPath()) - ); - $product->setImage($imageName); - } - - $product->save(); - return redirect()->route('admin.product.index'); - } -} diff --git a/Chapter28/onlineStore/app/Http/Controllers/Auth/ConfirmPasswordController.php b/Chapter28/onlineStore/app/Http/Controllers/Auth/ConfirmPasswordController.php deleted file mode 100644 index 138c1f0..0000000 --- a/Chapter28/onlineStore/app/Http/Controllers/Auth/ConfirmPasswordController.php +++ /dev/null @@ -1,40 +0,0 @@ -middleware('auth'); - } -} diff --git a/Chapter28/onlineStore/app/Http/Controllers/Auth/ForgotPasswordController.php b/Chapter28/onlineStore/app/Http/Controllers/Auth/ForgotPasswordController.php deleted file mode 100644 index 465c39c..0000000 --- a/Chapter28/onlineStore/app/Http/Controllers/Auth/ForgotPasswordController.php +++ /dev/null @@ -1,22 +0,0 @@ -middleware('guest')->except('logout'); - } -} diff --git a/Chapter28/onlineStore/app/Http/Controllers/Auth/RegisterController.php b/Chapter28/onlineStore/app/Http/Controllers/Auth/RegisterController.php deleted file mode 100644 index 87e3a82..0000000 --- a/Chapter28/onlineStore/app/Http/Controllers/Auth/RegisterController.php +++ /dev/null @@ -1,74 +0,0 @@ -middleware('guest'); - } - - /** - * Get a validator for an incoming registration request. - * - * @param array $data - * @return \Illuminate\Contracts\Validation\Validator - */ - protected function validator(array $data) - { - return Validator::make($data, [ - 'name' => ['required', 'string', 'max:255'], - 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], - 'password' => ['required', 'string', 'min:8', 'confirmed'], - ]); - } - - /** - * Create a new user instance after a valid registration. - * - * @param array $data - * @return \App\Models\User - */ - protected function create(array $data) - { - return User::create([ - 'name' => $data['name'], - 'email' => $data['email'], - 'password' => Hash::make($data['password']), - 'balance' => 5000, - ]); - } -} diff --git a/Chapter28/onlineStore/app/Http/Controllers/Auth/ResetPasswordController.php b/Chapter28/onlineStore/app/Http/Controllers/Auth/ResetPasswordController.php deleted file mode 100644 index b1726a3..0000000 --- a/Chapter28/onlineStore/app/Http/Controllers/Auth/ResetPasswordController.php +++ /dev/null @@ -1,30 +0,0 @@ -middleware('auth'); - $this->middleware('signed')->only('verify'); - $this->middleware('throttle:6,1')->only('verify', 'resend'); - } -} diff --git a/Chapter28/onlineStore/app/Http/Controllers/CartController.php b/Chapter28/onlineStore/app/Http/Controllers/CartController.php deleted file mode 100644 index 9dcfaba..0000000 --- a/Chapter28/onlineStore/app/Http/Controllers/CartController.php +++ /dev/null @@ -1,87 +0,0 @@ -session()->get("products"); - if ($productsInSession) { - $productsInCart = Product::findMany(array_keys($productsInSession)); - $total = Product::sumPricesByQuantities($productsInCart, $productsInSession); - } - - $viewData = []; - $viewData["title"] = "Cart - Online Store"; - $viewData["subtitle"] = "Shopping Cart"; - $viewData["total"] = $total; - $viewData["products"] = $productsInCart; - return view('cart.index')->with("viewData", $viewData); - } - - public function add(Request $request, $id) - { - $products = $request->session()->get("products"); - $products[$id] = $request->input('quantity'); - $request->session()->put('products', $products); - - return redirect()->route('cart.index'); - } - - public function delete(Request $request) - { - $request->session()->forget('products'); - return back(); - } - - public function purchase(Request $request) - { - $productsInSession = $request->session()->get("products"); - if ($productsInSession) { - $userId = Auth::user()->getId(); - $order = new Order(); - $order->setUserId($userId); - $order->setTotal(0); - $order->save(); - - $total = 0; - $productsInCart = Product::findMany(array_keys($productsInSession)); - foreach ($productsInCart as $product) { - $quantity = $productsInSession[$product->getId()]; - $item = new Item(); - $item->setQuantity($quantity); - $item->setPrice($product->getPrice()); - $item->setProductId($product->getId()); - $item->setOrderId($order->getId()); - $item->save(); - $total = $total + ($product->getPrice()*$quantity); - } - $order->setTotal($total); - $order->save(); - - $newBalance = Auth::user()->getBalance() - $total; - Auth::user()->setBalance($newBalance); - Auth::user()->save(); - - $request->session()->forget('products'); - - $viewData = []; - $viewData["title"] = "Purchase - Online Store"; - $viewData["subtitle"] = "Purchase Status"; - $viewData["order"] = $order; - return view('cart.purchase')->with("viewData", $viewData); - } else { - return redirect()->route('cart.index'); - } - } -} diff --git a/Chapter28/onlineStore/app/Http/Controllers/Controller.php b/Chapter28/onlineStore/app/Http/Controllers/Controller.php deleted file mode 100644 index a0a2a8a..0000000 --- a/Chapter28/onlineStore/app/Http/Controllers/Controller.php +++ /dev/null @@ -1,13 +0,0 @@ -with("viewData", $viewData); - } - - public function about() - { - $viewData = []; - $viewData["title"] = "About us - Online Store"; - $viewData["subtitle"] = "About us"; - $viewData["description"] = "This is an about page ..."; - $viewData["author"] = "Developed by: Your Name"; - return view('home.about')->with("viewData", $viewData); - } -} diff --git a/Chapter28/onlineStore/app/Http/Controllers/MyAccountController.php b/Chapter28/onlineStore/app/Http/Controllers/MyAccountController.php deleted file mode 100644 index 11e9e50..0000000 --- a/Chapter28/onlineStore/app/Http/Controllers/MyAccountController.php +++ /dev/null @@ -1,19 +0,0 @@ -where('user_id', Auth::user()->getId())->get(); - return view('myaccount.orders')->with("viewData", $viewData); - } -} diff --git a/Chapter28/onlineStore/app/Http/Controllers/ProductController.php b/Chapter28/onlineStore/app/Http/Controllers/ProductController.php deleted file mode 100644 index d27a3a3..0000000 --- a/Chapter28/onlineStore/app/Http/Controllers/ProductController.php +++ /dev/null @@ -1,29 +0,0 @@ -with("viewData", $viewData); - } - - public function show($id) - { - $viewData = []; - $product = Product::findOrFail($id); - $viewData["title"] = $product->getName()." - Online Store"; - $viewData["subtitle"] = $product->getName()." - Product information"; - $viewData["product"] = $product; - return view('product.show')->with("viewData", $viewData); - } -} diff --git a/Chapter28/onlineStore/app/Http/Kernel.php b/Chapter28/onlineStore/app/Http/Kernel.php deleted file mode 100644 index c10d1c5..0000000 --- a/Chapter28/onlineStore/app/Http/Kernel.php +++ /dev/null @@ -1,68 +0,0 @@ - - */ - protected $middleware = [ - // \App\Http\Middleware\TrustHosts::class, - \App\Http\Middleware\TrustProxies::class, - \Fruitcake\Cors\HandleCors::class, - \App\Http\Middleware\PreventRequestsDuringMaintenance::class, - \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, - \App\Http\Middleware\TrimStrings::class, - \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, - ]; - - /** - * The application's route middleware groups. - * - * @var array> - */ - protected $middlewareGroups = [ - 'web' => [ - \App\Http\Middleware\EncryptCookies::class, - \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, - \Illuminate\Session\Middleware\StartSession::class, - // \Illuminate\Session\Middleware\AuthenticateSession::class, - \Illuminate\View\Middleware\ShareErrorsFromSession::class, - \App\Http\Middleware\VerifyCsrfToken::class, - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - - 'api' => [ - // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, - 'throttle:api', - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - ]; - - /** - * The application's route middleware. - * - * These middleware may be assigned to groups or used individually. - * - * @var array - */ - protected $routeMiddleware = [ - 'auth' => \App\Http\Middleware\Authenticate::class, - 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::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, - 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, - 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, - 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, - 'admin' => \App\Http\Middleware\AdminAuthMiddleware::class, - ]; -} diff --git a/Chapter28/onlineStore/app/Http/Middleware/AdminAuthMiddleware.php b/Chapter28/onlineStore/app/Http/Middleware/AdminAuthMiddleware.php deleted file mode 100644 index 6e5306b..0000000 --- a/Chapter28/onlineStore/app/Http/Middleware/AdminAuthMiddleware.php +++ /dev/null @@ -1,26 +0,0 @@ -getRole() == 'admin') { - return $next($request); - } else { - return redirect()->route('home.index'); - } - } -} diff --git a/Chapter28/onlineStore/app/Http/Middleware/Authenticate.php b/Chapter28/onlineStore/app/Http/Middleware/Authenticate.php deleted file mode 100644 index 704089a..0000000 --- a/Chapter28/onlineStore/app/Http/Middleware/Authenticate.php +++ /dev/null @@ -1,21 +0,0 @@ -expectsJson()) { - return route('login'); - } - } -} diff --git a/Chapter28/onlineStore/app/Http/Middleware/EncryptCookies.php b/Chapter28/onlineStore/app/Http/Middleware/EncryptCookies.php deleted file mode 100644 index 867695b..0000000 --- a/Chapter28/onlineStore/app/Http/Middleware/EncryptCookies.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter28/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/Chapter28/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php deleted file mode 100644 index 74cbd9a..0000000 --- a/Chapter28/onlineStore/app/Http/Middleware/PreventRequestsDuringMaintenance.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter28/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php b/Chapter28/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php deleted file mode 100644 index a2813a0..0000000 --- a/Chapter28/onlineStore/app/Http/Middleware/RedirectIfAuthenticated.php +++ /dev/null @@ -1,32 +0,0 @@ -check()) { - return redirect(RouteServiceProvider::HOME); - } - } - - return $next($request); - } -} diff --git a/Chapter28/onlineStore/app/Http/Middleware/TrimStrings.php b/Chapter28/onlineStore/app/Http/Middleware/TrimStrings.php deleted file mode 100644 index 88cadca..0000000 --- a/Chapter28/onlineStore/app/Http/Middleware/TrimStrings.php +++ /dev/null @@ -1,19 +0,0 @@ - - */ - protected $except = [ - 'current_password', - 'password', - 'password_confirmation', - ]; -} diff --git a/Chapter28/onlineStore/app/Http/Middleware/TrustHosts.php b/Chapter28/onlineStore/app/Http/Middleware/TrustHosts.php deleted file mode 100644 index 7186414..0000000 --- a/Chapter28/onlineStore/app/Http/Middleware/TrustHosts.php +++ /dev/null @@ -1,20 +0,0 @@ - - */ - public function hosts() - { - return [ - $this->allSubdomainsOfApplicationUrl(), - ]; - } -} diff --git a/Chapter28/onlineStore/app/Http/Middleware/TrustProxies.php b/Chapter28/onlineStore/app/Http/Middleware/TrustProxies.php deleted file mode 100644 index 3391630..0000000 --- a/Chapter28/onlineStore/app/Http/Middleware/TrustProxies.php +++ /dev/null @@ -1,28 +0,0 @@ -|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/Chapter28/onlineStore/app/Http/Middleware/VerifyCsrfToken.php b/Chapter28/onlineStore/app/Http/Middleware/VerifyCsrfToken.php deleted file mode 100644 index 9e86521..0000000 --- a/Chapter28/onlineStore/app/Http/Middleware/VerifyCsrfToken.php +++ /dev/null @@ -1,17 +0,0 @@ - - */ - protected $except = [ - // - ]; -} diff --git a/Chapter28/onlineStore/app/Models/Item.php b/Chapter28/onlineStore/app/Models/Item.php deleted file mode 100644 index 8d19619..0000000 --- a/Chapter28/onlineStore/app/Models/Item.php +++ /dev/null @@ -1,133 +0,0 @@ -attributes['id'] - int - contains the item primary key (id) - * $this->attributes['quantity'] - int - contains the item quantity - * $this->attributes['price'] - int - contains the item price - * $this->attributes['order_id'] - int - contains the referenced order id - * $this->attributes['product_id'] - int - contains the referenced product id - * $this->attributes['created_at'] - timestamp - contains the item creation date - * $this->attributes['updated_at'] - timestamp - contains the item update date - * $this->order - Order - contains the associated Order - * $this->product - Product - contains the associated Product - */ - - public static function validate($request) - { - $request->validate([ - "price" => "required|numeric|gt:0", - "quantity" => "required|numeric|gt:0", - "product_id" => "required|exists:products,id", - "order_id" => "required|exists:orders,id", - ]); - } - - public function getId() - { - return $this->attributes['id']; - } - - public function setId($id) - { - $this->attributes['id'] = $id; - } - - public function getQuantity() - { - return $this->attributes['quantity']; - } - - public function setQuantity($quantity) - { - $this->attributes['quantity'] = $quantity; - } - - public function getPrice() - { - return $this->attributes['price']; - } - - public function setPrice($price) - { - $this->attributes['price'] = $price; - } - - public function getOrderId() - { - return $this->attributes['order_id']; - } - - public function setOrderId($orderId) - { - $this->attributes['order_id'] = $orderId; - } - - public function getProductId() - { - return $this->attributes['product_id']; - } - - public function setProductId($productId) - { - $this->attributes['product_id'] = $productId; - } - - public function getCreatedAt() - { - return $this->attributes['created_at']; - } - - public function setCreatedAt($createdAt) - { - $this->attributes['created_at'] = $createdAt; - } - - public function getUpdatedAt() - { - return $this->attributes['updated_at']; - } - - public function setUpdatedAt($updatedAt) - { - $this->attributes['updated_at'] = $updatedAt; - } - - public function order() - { - return $this->belongsTo(Order::class); - } - - public function getOrder() - { - return $this->order; - } - - public function setOrder($order) - { - $this->order = $order; - } - - public function product() - { - return $this->belongsTo(Product::class); - } - - public function getProduct() - { - return $this->product; - } - - public function setProduct($product) - { - $this->product = $product; - } -} diff --git a/Chapter28/onlineStore/app/Models/Order.php b/Chapter28/onlineStore/app/Models/Order.php deleted file mode 100644 index 28ce6ad..0000000 --- a/Chapter28/onlineStore/app/Models/Order.php +++ /dev/null @@ -1,109 +0,0 @@ -attributes['id'] - int - contains the order primary key (id) - * $this->attributes['total'] - string - contains the order name - * $this->attributes['user_id'] - int - contains the referenced user id - * $this->attributes['created_at'] - timestamp - contains the order creation date - * $this->attributes['updated_at'] - timestamp - contains the order update date - * $this->user - User - contains the associated User - * $this->items - Item[] - contains the associated items - */ - - public static function validate($request) - { - $request->validate([ - "total" => "required|numeric", - "user_id" => "required|exists:users,id", - ]); - } - - public function getId() - { - return $this->attributes['id']; - } - - public function setId($id) - { - $this->attributes['id'] = $id; - } - - public function getTotal() - { - return $this->attributes['total']; - } - - public function setTotal($total) - { - $this->attributes['total'] = $total; - } - - public function getUserId() - { - return $this->attributes['user_id']; - } - - public function setUserId($userId) - { - $this->attributes['user_id'] = $userId; - } - - public function getCreatedAt() - { - return $this->attributes['created_at']; - } - - public function setCreatedAt($createdAt) - { - $this->attributes['created_at'] = $createdAt; - } - - public function getUpdatedAt() - { - return $this->attributes['updated_at']; - } - - public function setUpdatedAt($updatedAt) - { - $this->attributes['updated_at'] = $updatedAt; - } - - public function user() - { - return $this->belongsTo(User::class); - } - - public function getUser() - { - return $this->user; - } - - public function setUser($user) - { - $this->user = $user; - } - - public function items() - { - return $this->hasMany(Item::class); - } - - public function getItems() - { - return $this->items; - } - - public function setItems($items) - { - $this->items = $items; - } -} diff --git a/Chapter28/onlineStore/app/Models/Product.php b/Chapter28/onlineStore/app/Models/Product.php deleted file mode 100644 index fb8585a..0000000 --- a/Chapter28/onlineStore/app/Models/Product.php +++ /dev/null @@ -1,126 +0,0 @@ -attributes['id'] - int - contains the product primary key (id) - * $this->attributes['name'] - string - contains the product name - * $this->attributes['description'] - string - contains the product description - * $this->attributes['image'] - string - contains the product image - * $this->attributes['price'] - int - contains the product price - * $this->attributes['created_at'] - timestamp - contains the product creation date - * $this->attributes['updated_at'] - timestamp - contains the product update date - * $this->items - Item[] - contains the associated items - */ - - public static function validate($request) - { - $request->validate([ - "name" => "required|max:255", - "description" => "required", - "price" => "required|numeric|gt:0", - 'image' => 'image', - ]); - } - - public static function sumPricesByQuantities($products, $productsInSession) - { - $total = 0; - foreach ($products as $product) { - $total = $total + ($product->getPrice()*$productsInSession[$product->getId()]); - } - - return $total; - } - - public function getId() - { - return $this->attributes['id']; - } - - public function setId($id) - { - $this->attributes['id'] = $id; - } - - public function getName() - { - return $this->attributes['name']; - } - - public function setName($name) - { - $this->attributes['name'] = $name; - } - - public function getDescription() - { - return $this->attributes['description']; - } - - public function setDescription($description) - { - $this->attributes['description'] = $description; - } - - public function getImage() - { - return $this->attributes['image']; - } - - public function setImage($image) - { - $this->attributes['image'] = $image; - } - - public function getPrice() - { - return $this->attributes['price']; - } - - public function setPrice($price) - { - $this->attributes['price'] = $price; - } - - public function getCreatedAt() - { - return $this->attributes['created_at']; - } - - public function setCreatedAt($createdAt) - { - $this->attributes['created_at'] = $createdAt; - } - - public function getUpdatedAt() - { - return $this->attributes['updated_at']; - } - - public function setUpdatedAt($updatedAt) - { - $this->attributes['updated_at'] = $updatedAt; - } - - public function items() - { - return $this->hasMany(Item::class); - } - - public function getItems() - { - return $this->items; - } - - public function setItems($items) - { - $this->items = $items; - } -} diff --git a/Chapter28/onlineStore/app/Models/User.php b/Chapter28/onlineStore/app/Models/User.php deleted file mode 100644 index 89aa45f..0000000 --- a/Chapter28/onlineStore/app/Models/User.php +++ /dev/null @@ -1,156 +0,0 @@ -attributes['id'] - int - contains the user primary key (id) - * $this->attributes['name'] - string - contains the user name - * $this->attributes['email'] - string - contains the user email - * $this->attributes['email_verified_at'] - timestamp - contains the user email verification date - * $this->attributes['password'] - string - contains the user password - * $this->attributes['remember_token'] - string - contains the user password - * $this->attributes['role'] - string - contains the user role (client or admin) - * $this->attributes['balance'] - int - contains the user balance - * $this->attributes['created_at'] - timestamp - contains the user creation date - * $this->attributes['updated_at'] - timestamp - contains the user update date - * $this->orders - Order[] - contains the associated orders - */ - - /** - * The attributes that are mass assignable. - * - * @var array - */ - protected $fillable = [ - 'name', - 'email', - 'password', - 'balance', - ]; - - /** - * 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', - ]; - - public function getId() - { - return $this->attributes['id']; - } - - public function setId($id) - { - $this->attributes['id'] = $id; - } - - public function getName() - { - return $this->attributes['name']; - } - - public function setName($name) - { - $this->attributes['name'] = $name; - } - - public function getEmail() - { - return $this->attributes['email']; - } - - public function setEmail($email) - { - $this->attributes['email'] = $email; - } - - public function getPassword() - { - return $this->attributes['password']; - } - - public function setPassword($password) - { - $this->attributes['password'] = $password; - } - - public function getRole() - { - return $this->attributes['role']; - } - - public function setRole($role) - { - $this->attributes['role'] = $role; - } - - public function getBalance() - { - return $this->attributes['balance']; - } - - public function setBalance($balance) - { - $this->attributes['balance'] = $balance; - } - - public function getCreatedAt() - { - return $this->attributes['created_at']; - } - - public function setCreatedAt($createdAt) - { - $this->attributes['created_at'] = $createdAt; - } - - public function getUpdatedAt() - { - return $this->attributes['updated_at']; - } - - public function setUpdatedAt($updatedAt) - { - $this->attributes['updated_at'] = $updatedAt; - } - - public function orders() - { - return $this->hasMany(Order::class); - } - - public function getOrders() - { - return $this->orders; - } - - public function setOrders($orders) - { - $this->orders = $orders; - } -} diff --git a/Chapter28/onlineStore/app/Providers/AppServiceProvider.php b/Chapter28/onlineStore/app/Providers/AppServiceProvider.php deleted file mode 100644 index ee8ca5b..0000000 --- a/Chapter28/onlineStore/app/Providers/AppServiceProvider.php +++ /dev/null @@ -1,28 +0,0 @@ - - */ - protected $policies = [ - // 'App\Models\Model' => 'App\Policies\ModelPolicy', - ]; - - /** - * Register any authentication / authorization services. - * - * @return void - */ - public function boot() - { - $this->registerPolicies(); - - // - } -} diff --git a/Chapter28/onlineStore/app/Providers/BroadcastServiceProvider.php b/Chapter28/onlineStore/app/Providers/BroadcastServiceProvider.php deleted file mode 100644 index 395c518..0000000 --- a/Chapter28/onlineStore/app/Providers/BroadcastServiceProvider.php +++ /dev/null @@ -1,21 +0,0 @@ -> - */ - protected $listen = [ - Registered::class => [ - SendEmailVerificationNotification::class, - ], - ]; - - /** - * Register any events for your application. - * - * @return void - */ - public function boot() - { - // - } -} diff --git a/Chapter28/onlineStore/app/Providers/RouteServiceProvider.php b/Chapter28/onlineStore/app/Providers/RouteServiceProvider.php deleted file mode 100644 index fb766eb..0000000 --- a/Chapter28/onlineStore/app/Providers/RouteServiceProvider.php +++ /dev/null @@ -1,63 +0,0 @@ -configureRateLimiting(); - - $this->routes(function () { - Route::prefix('api') - ->middleware('api') - ->namespace($this->namespace) - ->group(base_path('routes/api.php')); - - Route::middleware('web') - ->namespace($this->namespace) - ->group(base_path('routes/web.php')); - }); - } - - /** - * Configure the rate limiters for the application. - * - * @return void - */ - protected function configureRateLimiting() - { - RateLimiter::for('api', function (Request $request) { - return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); - }); - } -} diff --git a/Chapter28/onlineStore/artisan b/Chapter28/onlineStore/artisan deleted file mode 100644 index 67a3329..0000000 --- a/Chapter28/onlineStore/artisan +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env php -make(Illuminate\Contracts\Console\Kernel::class); - -$status = $kernel->handle( - $input = new Symfony\Component\Console\Input\ArgvInput, - new Symfony\Component\Console\Output\ConsoleOutput -); - -/* -|-------------------------------------------------------------------------- -| Shutdown The Application -|-------------------------------------------------------------------------- -| -| Once Artisan has finished running, we will fire off the shutdown events -| so that any final work may be done by the application before we shut -| down the process. This is the last thing to happen to the request. -| -*/ - -$kernel->terminate($input, $status); - -exit($status); diff --git a/Chapter28/onlineStore/bootstrap/app.php b/Chapter28/onlineStore/bootstrap/app.php deleted file mode 100644 index 037e17d..0000000 --- a/Chapter28/onlineStore/bootstrap/app.php +++ /dev/null @@ -1,55 +0,0 @@ -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/Chapter28/onlineStore/bootstrap/cache/.gitignore b/Chapter28/onlineStore/bootstrap/cache/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter28/onlineStore/bootstrap/cache/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter28/onlineStore/composer.json b/Chapter28/onlineStore/composer.json deleted file mode 100644 index a9459b5..0000000 --- a/Chapter28/onlineStore/composer.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "name": "laravel/laravel", - "type": "project", - "description": "The Laravel Framework.", - "keywords": ["framework", "laravel"], - "license": "MIT", - "require": { - "php": "^8.0", - "fruitcake/laravel-cors": "^2.0.5", - "guzzlehttp/guzzle": "^7.2", - "laravel/framework": "^9.0", - "laravel/sanctum": "^2.14", - "laravel/tinker": "^2.7", - "laravel/ui": "^3.4" - }, - "require-dev": { - "fakerphp/faker": "^1.9.1", - "laravel/sail": "^1.0.1", - "mockery/mockery": "^1.4.4", - "nunomaduro/collision": "^6.1", - "phpunit/phpunit": "^9.5.10", - "spatie/laravel-ignition": "^1.0", - "squizlabs/php_codesniffer": "^3.6" - }, - "autoload": { - "psr-4": { - "App\\": "app/", - "Database\\Factories\\": "database/factories/", - "Database\\Seeders\\": "database/seeders/" - } - }, - "autoload-dev": { - "psr-4": { - "Tests\\": "tests/" - } - }, - "scripts": { - "post-autoload-dump": [ - "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", - "@php artisan package:discover --ansi" - ], - "post-update-cmd": [ - "@php artisan vendor:publish --tag=laravel-assets --ansi --force" - ], - "post-root-package-install": [ - "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" - ], - "post-create-project-cmd": [ - "@php artisan key:generate --ansi" - ] - }, - "extra": { - "laravel": { - "dont-discover": [] - } - }, - "config": { - "optimize-autoloader": true, - "preferred-install": "dist", - "sort-packages": true - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/Chapter28/onlineStore/composer.lock b/Chapter28/onlineStore/composer.lock deleted file mode 100644 index 78c86f1..0000000 --- a/Chapter28/onlineStore/composer.lock +++ /dev/null @@ -1,7921 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "d299b51f0f07ec600b4949240f4664af", - "packages": [ - { - "name": "asm89/stack-cors", - "version": "v2.1.1", - "source": { - "type": "git", - "url": "https://github.com/asm89/stack-cors.git", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4|^5|^6" - }, - "require-dev": { - "phpunit/phpunit": "^7|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "psr-4": { - "Asm89\\Stack\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alexander", - "email": "iam.asm89@gmail.com" - } - ], - "description": "Cross-origin resource sharing library and stack middleware", - "homepage": "https://github.com/asm89/stack-cors", - "keywords": [ - "cors", - "stack" - ], - "support": { - "issues": "https://github.com/asm89/stack-cors/issues", - "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" - }, - "time": "2022-01-18T09:12:03+00:00" - }, - { - "name": "brick/math", - "version": "0.9.3", - "source": { - "type": "git", - "url": "https://github.com/brick/math.git", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", - "vimeo/psalm": "4.9.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Brick\\Math\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Arbitrary-precision arithmetic library", - "keywords": [ - "Arbitrary-precision", - "BigInteger", - "BigRational", - "arithmetic", - "bigdecimal", - "bignum", - "brick", - "math" - ], - "support": { - "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.9.3" - }, - "funding": [ - { - "url": "https://github.com/BenMorel", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/brick/math", - "type": "tidelift" - } - ], - "time": "2021-08-15T20:50:18+00:00" - }, - { - "name": "dflydev/dot-access-data", - "version": "v3.0.1", - "source": { - "type": "git", - "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c", - "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": "^3.14" - }, - "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.1" - }, - "time": "2021-08-13T13:06:58+00:00" - }, - { - "name": "doctrine/inflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "vimeo/psalm": "^4.10" - }, - "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.4" - }, - "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": "2021-10-22T20:16:43+00:00" - }, - { - "name": "doctrine/lexer", - "version": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" - } - }, - "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/1.2.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%2Flexer", - "type": "tidelift" - } - ], - "time": "2022-01-12T08:27:12+00:00" - }, - { - "name": "dragonmantank/cron-expression", - "version": "v3.3.1", - "source": { - "type": "git", - "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "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.1" - }, - "funding": [ - { - "url": "https://github.com/dragonmantank", - "type": "github" - } - ], - "time": "2022-01-18T15:43:28+00:00" - }, - { - "name": "egulias/email-validator", - "version": "3.1.2", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ee0db30118f661fb166bcffbf5d82032df484697", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^1.2", - "php": ">=7.2", - "symfony/polyfill-intl-idn": "^1.15" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^8.5.8|^9.3.3", - "vimeo/psalm": "^4" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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/3.1.2" - }, - "funding": [ - { - "url": "https://github.com/egulias", - "type": "github" - } - ], - "time": "2021-10-11T09:18:27+00:00" - }, - { - "name": "fruitcake/laravel-cors", - "version": "v2.0.5", - "source": { - "type": "git", - "url": "https://github.com/fruitcake/laravel-cors.git", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "reference": "3a066e5cac32e2d1cdaacd6b961692778f37b5fc", - "shasum": "" - }, - "require": { - "asm89/stack-cors": "^2.0.1", - "illuminate/contracts": "^6|^7|^8|^9", - "illuminate/support": "^6|^7|^8|^9", - "php": ">=7.2", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4.3.4|^5|^6" - }, - "require-dev": { - "laravel/framework": "^6|^7.24|^8", - "orchestra/testbench-dusk": "^4|^5|^6|^7", - "phpunit/phpunit": "^6|^7|^8|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - }, - "laravel": { - "providers": [ - "Fruitcake\\Cors\\CorsServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Fruitcake\\Cors\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fruitcake", - "homepage": "https://fruitcake.nl" - }, - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", - "keywords": [ - "api", - "cors", - "crossdomain", - "laravel" - ], - "support": { - "issues": "https://github.com/fruitcake/laravel-cors/issues", - "source": "https://github.com/fruitcake/laravel-cors/tree/v2.0.5" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "time": "2022-01-03T14:53:04+00:00" - }, - { - "name": "graham-campbell/result-type", - "version": "v1.0.4", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "0690bde05318336c7221785f2a932467f98b64ca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/0690bde05318336c7221785f2a932467f98b64ca", - "reference": "0690bde05318336c7221785f2a932467f98b64ca", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "phpoption/phpoption": "^1.8" - }, - "require-dev": { - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", - "type": "tidelift" - } - ], - "time": "2021-11-21T21:41:47+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "7.4.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.8.3 || ^2.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.4.1", - "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.5 || ^9.3.5", - "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": { - "branch-alias": { - "dev-master": "7.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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.4.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": "2021-12-06T18:43:05+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "1.5.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "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/1.5.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "time": "2021-10-22T20:56:57+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.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.4.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.8 || ^9.3.10" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "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.1.0" - }, - "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": "2021-10-06T17:43:30+00:00" - }, - { - "name": "laravel/framework", - "version": "v9.0.1", - "source": { - "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "reference": "afeb58d019b203ecb1a1c4063a66a029ea6bea63", - "shasum": "" - }, - "require": { - "doctrine/inflector": "^2.0", - "dragonmantank/cron-expression": "^3.1", - "egulias/email-validator": "^3.1", - "ext-mbstring": "*", - "ext-openssl": "*", - "laravel/serializable-closure": "^1.0", - "league/commonmark": "^2.2", - "league/flysystem": "^3.0", - "monolog/monolog": "^2.0", - "nesbot/carbon": "^2.53.1", - "php": "^8.0.2", - "psr/container": "^1.1.1|^2.0.1", - "psr/log": "^1.0|^2.0|^3.0", - "psr/simple-cache": "^1.0|^2.0|^3.0", - "ramsey/uuid": "^4.2.2", - "symfony/console": "^6.0", - "symfony/error-handler": "^6.0", - "symfony/finder": "^6.0", - "symfony/http-foundation": "^6.0", - "symfony/http-kernel": "^6.0", - "symfony/mailer": "^6.0", - "symfony/mime": "^6.0", - "symfony/process": "^6.0", - "symfony/routing": "^6.0", - "symfony/var-dumper": "^6.0", - "tijsverkoyen/css-to-inline-styles": "^2.2.2", - "vlucas/phpdotenv": "^5.4.1", - "voku/portable-ascii": "^2.0" - }, - "conflict": { - "tightenco/collect": "<5.5.33" - }, - "provide": { - "psr/container-implementation": "1.1|2.0", - "psr/simple-cache-implementation": "1.0|2.0|3.0" - }, - "replace": { - "illuminate/auth": "self.version", - "illuminate/broadcasting": "self.version", - "illuminate/bus": "self.version", - "illuminate/cache": "self.version", - "illuminate/collections": "self.version", - "illuminate/conditionable": "self.version", - "illuminate/config": "self.version", - "illuminate/console": "self.version", - "illuminate/container": "self.version", - "illuminate/contracts": "self.version", - "illuminate/cookie": "self.version", - "illuminate/database": "self.version", - "illuminate/encryption": "self.version", - "illuminate/events": "self.version", - "illuminate/filesystem": "self.version", - "illuminate/hashing": "self.version", - "illuminate/http": "self.version", - "illuminate/log": "self.version", - "illuminate/macroable": "self.version", - "illuminate/mail": "self.version", - "illuminate/notifications": "self.version", - "illuminate/pagination": "self.version", - "illuminate/pipeline": "self.version", - "illuminate/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": { - "aws/aws-sdk-php": "^3.198.1", - "doctrine/dbal": "^2.13.3|^3.1.4", - "fakerphp/faker": "^1.9.2", - "guzzlehttp/guzzle": "^7.2", - "league/flysystem-aws-s3-v3": "^3.0", - "league/flysystem-ftp": "^3.0", - "league/flysystem-sftp-v3": "^3.0", - "mockery/mockery": "^1.4.4", - "orchestra/testbench-core": "^7.0", - "pda/pheanstalk": "^4.0", - "phpstan/phpstan": "^1.0", - "phpunit/phpunit": "^9.5.8", - "predis/predis": "^1.1.9", - "symfony/amazon-mailer": "^6.0", - "symfony/cache": "^6.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.198.1).", - "brianium/paratest": "Required to run tests in parallel (^6.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", - "ext-bcmath": "Required to use the multiple_of validation rule.", - "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.", - "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.2).", - "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-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", - "mockery/mockery": "Required to use mocking (^1.4.4).", - "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).", - "predis/predis": "Required to use the predis connector (^1.1.9).", - "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.0).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^6.0).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.0).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.0).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.0).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.x-dev" - } - }, - "autoload": { - "files": [ - "src/Illuminate/Collections/helpers.php", - "src/Illuminate/Events/functions.php", - "src/Illuminate/Foundation/helpers.php", - "src/Illuminate/Support/helpers.php" - ], - "psr-4": { - "Illuminate\\": "src/Illuminate/", - "Illuminate\\Support\\": [ - "src/Illuminate/Macroable/", - "src/Illuminate/Collections/", - "src/Illuminate/Conditionable/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Laravel Framework.", - "homepage": "https://laravel.com", - "keywords": [ - "framework", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2022-02-09T15:00:05+00:00" - }, - { - "name": "laravel/sanctum", - "version": "v2.14.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/sanctum.git", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/0647a87140c7522e75826cffcadb3ad6e01f71e9", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/contracts": "^6.9|^7.0|^8.0|^9.0", - "illuminate/database": "^6.9|^7.0|^8.0|^9.0", - "illuminate/support": "^6.9|^7.0|^8.0|^9.0", - "php": "^7.2|^8.0" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0", - "phpunit/phpunit": "^8.0|^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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": "2022-01-12T15:07:43+00:00" - }, - { - "name": "laravel/serializable-closure", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/serializable-closure.git", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/65c9faf50d567b65d81764a44526545689e3fe63", - "reference": "65c9faf50d567b65d81764a44526545689e3fe63", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "pestphp/pest": "^1.18", - "phpstan/phpstan": "^0.12.98", - "symfony/var-dumper": "^5.3" - }, - "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": "2022-02-01T16:29:39+00:00" - }, - { - "name": "laravel/tinker", - "version": "v2.7.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/tinker.git", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/5f2f9815b7631b9f586a3de7933c25f9327d4073", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073", - "shasum": "" - }, - "require": { - "illuminate/console": "^6.0|^7.0|^8.0|^9.0", - "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.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", - "phpunit/phpunit": "^8.5.8|^9.3.3" - }, - "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.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.7.0" - }, - "time": "2022-01-10T08:52:49+00:00" - }, - { - "name": "laravel/ui", - "version": "v3.4.3", - "source": { - "type": "git", - "url": "https://github.com/laravel/ui.git", - "reference": "64a0f43492c00780b2261c56cd7007a4f370d95b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/ui/zipball/64a0f43492c00780b2261c56cd7007a4f370d95b", - "reference": "64a0f43492c00780b2261c56cd7007a4f370d95b", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.42|^9.0", - "illuminate/filesystem": "^8.42|^9.0", - "illuminate/support": "^8.82|^9.0", - "illuminate/validation": "^8.42|^9.0", - "php": "^7.3|^8.0" - }, - "require-dev": { - "orchestra/testbench": "^6.23|^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - }, - "laravel": { - "providers": [ - "Laravel\\Ui\\UiServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Laravel\\Ui\\": "src/", - "Illuminate\\Foundation\\Auth\\": "auth-backend/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "Laravel UI utilities and presets.", - "keywords": [ - "laravel", - "ui" - ], - "support": { - "source": "https://github.com/laravel/ui/tree/v3.4.3" - }, - "time": "2022-02-08T14:19:32+00:00" - }, - { - "name": "league/commonmark", - "version": "2.2.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/commonmark.git", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "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.15" - }, - "require-dev": { - "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.0", - "commonmark/commonmark.js": "0.30.0", - "composer/package-versions-deprecated": "^1.8", - "erusev/parsedown": "^1.0", - "ext-json": "*", - "github/gfm": "0.29.0", - "michelf/php-markdown": "^1.4", - "phpstan/phpstan": "^0.12.88 || ^1.0.0", - "phpunit/phpunit": "^9.5.5", - "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", - "unleashedtech/php-coding-standard": "^3.1", - "vimeo/psalm": "^4.7.3" - }, - "suggest": { - "symfony/yaml": "v2.3+ required if using the Front Matter extension" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.3-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": "2022-01-25T14:37:33+00:00" - }, - { - "name": "league/config", - "version": "v1.1.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/config.git", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/config/zipball/a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^3.0.1", - "nette/schema": "^1.2", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.90", - "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": "2021-08-14T12:15:32+00:00" - }, - { - "name": "league/flysystem", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9f8b4260031bfef5497477da53dd57b2aaff0e06", - "reference": "9f8b4260031bfef5497477da53dd57b2aaff0e06", - "shasum": "" - }, - "require": { - "ext-json": "*", - "league/mime-type-detection": "^1.0.0", - "php": "^8.0.2" - }, - "conflict": { - "guzzlehttp/guzzle": "<7.0", - "guzzlehttp/ringphp": "<1.1.1", - "symfony/http-client": "<5.2" - }, - "require-dev": { - "async-aws/s3": "^1.5", - "async-aws/simple-s3": "^1.0", - "aws/aws-sdk-php": "^3.198.1", - "composer/semver": "^3.0", - "ext-fileinfo": "*", - "ext-ftp": "*", - "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.5", - "google/cloud-storage": "^1.23", - "phpseclib/phpseclib": "^2.0", - "phpstan/phpstan": "^0.12.26", - "phpunit/phpunit": "^9.5.11", - "sabre/dav": "^4.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.0.3" - }, - "funding": [ - { - "url": "https://offset.earth/frankdejonge", - "type": "custom" - }, - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2022-01-31T19:41:04+00:00" - }, - { - "name": "league/mime-type-detection", - "version": "1.9.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/aa70e813a6ad3d1558fc927863d47309b4c23e69", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.2", - "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" - }, - "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.9.0" - }, - "funding": [ - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2021-11-21T11:48:40+00:00" - }, - { - "name": "monolog/monolog", - "version": "2.3.5", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd4380d6fc37626e2f799f29d91195040137eba9", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "provide": { - "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7", - "graylog2/gelf-php": "^1.4.2", - "mongodb/mongodb": "^1.8", - "php-amqplib/php-amqplib": "~2.4 || ^3", - "php-console/php-console": "^3.1.3", - "phpspec/prophecy": "^1.6.1", - "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5", - "predis/predis": "^1.1", - "rollbar/rollbar": "^1.3", - "ruflin/elastica": ">=0.90@dev", - "swiftmailer/swiftmailer": "^5.3|^6.0" - }, - "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", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "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": "2.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/2.3.5" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" - } - ], - "time": "2021-10-01T21:08:31+00:00" - }, - { - "name": "nesbot/carbon", - "version": "2.56.0", - "source": { - "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1.8 || ^8.0", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "doctrine/dbal": "^2.0 || ^3.0", - "doctrine/orm": "^2.7", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "phpmd/phpmd": "^2.9", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.54 || ^1.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.14", - "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://opencollective.com/Carbon", - "type": "open_collective" - }, - { - "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", - "type": "tidelift" - } - ], - "time": "2022-01-21T17:08:38+00:00" - }, - { - "name": "nette/schema", - "version": "v1.2.2", - "source": { - "type": "git", - "url": "https://github.com/nette/schema.git", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/9a39cef03a5b34c7de64f551538cbba05c2be5df", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df", - "shasum": "" - }, - "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": ">=7.1 <8.2" - }, - "require-dev": { - "nette/tester": "^2.3 || ^2.4", - "phpstan/phpstan-nette": "^0.12", - "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.2" - }, - "time": "2021-10-15T11:40:02+00:00" - }, - { - "name": "nette/utils", - "version": "v3.2.7", - "source": { - "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/0af4e3de4df9f1543534beab255ccf459e7a2c99", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99", - "shasum": "" - }, - "require": { - "php": ">=7.2 <8.2" - }, - "conflict": { - "nette/di": "<3.0.6" - }, - "require-dev": { - "nette/tester": "~2.0", - "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.3" - }, - "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()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.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 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/v3.2.7" - }, - "time": "2022-01-24T11:29:14+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.13.2", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", - "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.13.2" - }, - "time": "2021-11-30T19:35:32+00:00" - }, - { - "name": "phpoption/phpoption", - "version": "1.8.1", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-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.8.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", - "type": "tidelift" - } - ], - "time": "2021-12-04T23:24:31+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.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.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": "http://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/tree/master" - }, - "time": "2020-06-29T06:28:15+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.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": "http://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/master" - }, - "time": "2019-04-30T12:38:16+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.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": "http://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/master" - }, - "time": "2016-08-06T14:39: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.1", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "570292577277f06f590635381a7f761a6cf4f026" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/570292577277f06f590635381a7f761a6cf4f026", - "reference": "570292577277f06f590635381a7f761a6cf4f026", - "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" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "3.17.05.02" - }, - "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.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." - }, - "bin": [ - "bin/psysh" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "0.11.x-dev" - } - }, - "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.1" - }, - "time": "2022-01-03T13:58:38+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": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/ramsey/collection.git", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "shasum": "" - }, - "require": { - "php": "^7.3 || ^8", - "symfony/polyfill-php81": "^1.23" - }, - "require-dev": { - "captainhook/captainhook": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "ergebnis/composer-normalize": "^2.6", - "fakerphp/faker": "^1.5", - "hamcrest/hamcrest-php": "^2", - "jangregor/phpstan-prophecy": "^0.8", - "mockery/mockery": "^1.3", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1", - "phpstan/phpstan": "^0.12.32", - "phpstan/phpstan-mockery": "^0.12.5", - "phpstan/phpstan-phpunit": "^0.12.11", - "phpunit/phpunit": "^8.5 || ^9", - "psy/psysh": "^0.10.4", - "slevomat/coding-standard": "^6.3", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.4" - }, - "type": "library", - "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/1.2.2" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "time": "2021-10-10T03:01:02+00:00" - }, - { - "name": "ramsey/uuid", - "version": "4.2.3", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "shasum": "" - }, - "require": { - "brick/math": "^0.8 || ^0.9", - "ext-json": "*", - "php": "^7.2 || ^8.0", - "ramsey/collection": "^1.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php80": "^1.14" - }, - "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", - "moontoast/math": "^1.1", - "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.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-mockery": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^8.5 || ^9", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" - }, - "suggest": { - "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-ctype": "Enables faster processing of character classification using ctype functions.", - "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": { - "branch-alias": { - "dev-main": "4.x-dev" - }, - "captainhook": { - "force-install": true - } - }, - "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "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.2.3" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2021-09-25T23:10:38+00:00" - }, - { - "name": "symfony/console", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/22e8efd019c3270c4f79376234a3f8752cd25490", - "reference": "22e8efd019c3270c4f79376234a3f8752cd25490", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.4|^6.0" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/css-selector", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/1955d595c12c111629cc814d3f2a2ff13580508a", - "reference": "1955d595c12c111629cc814d3f2a2ff13580508a", - "shasum": "" - }, - "require": { - "php": ">=8.0.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/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-11-01T23:48:49+00:00" - }, - { - "name": "symfony/error-handler", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/20343b3bad7ebafa38138ddcb97290a24722b57b", - "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" - }, - "bin": [ - "Resources/bin/patch-type-declarations" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to manage errors and ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6472ea2dd415e925b90ca82be64b8bc6157f3934", - "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/event-dispatcher-contracts": "^2|^3" - }, - "conflict": { - "symfony/dependency-injection": "<5.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^5.4|^6.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/aa5422287b75594b90ee9cd807caf8f0df491385", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/event-dispatcher": "^1" - }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-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.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": "2021-07-15T12:33:35+00:00" - }, - { - "name": "symfony/finder", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/8661b74dbabc23223f38c9b99d3f8ade71170430", - "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ad157299ced81a637fade1efcadd688d6deba5c1", - "reference": "ad157299ced81a637fade1efcadd688d6deba5c1", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1" - }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/cache": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0" - }, - "suggest": { - "symfony/mime": "To use the file extension guesser" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v6.0.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/error-handler": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", - "symfony/twig-bridge": "<5.4", - "symfony/validator": "<5.4", - "twig/twig": "<2.13" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/process": "^5.4|^6.0", - "symfony/routing": "^5.4|^6.0", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, - "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.0.4" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-29T18:12:46+00:00" - }, - { - "name": "symfony/mailer", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mailer.git", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "reference": "d958befe7dbee9d2b2157ef6dfa9b103efa94f82", - "shasum": "" - }, - "require": { - "egulias/email-validator": "^2.1.10|^3", - "php": ">=8.0.2", - "psr/event-dispatcher": "^1", - "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3" - }, - "conflict": { - "symfony/http-kernel": "<5.4" - }, - "require-dev": { - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/messenger": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/mime", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/2cd9601efd040e56f43360daa68f3c6b0534923a", - "reference": "2cd9601efd040e56f43360daa68f3c6b0534923a", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "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" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "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.24.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": "2021-10-20T20:35:02+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-11-23T21:10:46+00:00" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44", - "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.23-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.24.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": "2021-09-14T14:02:44+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.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": "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.24.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": "2021-11-30T18:21:41+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-05-27T09:17:38+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:33+00:00" - }, - { - "name": "symfony/polyfill-php81", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-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.24.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": "2021-09-13T13:58:11+00:00" - }, - { - "name": "symfony/process", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/298ed357274c1868c20a0061df256a1250a6c4af", - "reference": "298ed357274c1868c20a0061df256a1250a6c4af", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, - { - "name": "symfony/routing", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/yaml": "<5.4" - }, - "require-dev": { - "doctrine/annotations": "^1.12", - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/36715ebf9fb9db73db0cb24263c79077c6fe8603", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/container": "^2.0" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "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.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": "2021-11-04T17:53:12+00:00" - }, - { - "name": "symfony/string", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/522144f0c4c004c80d56fa47e40e17028e2eefc2", - "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.0" - }, - "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/translation-contracts": "^2.0|^3.0", - "symfony/var-exporter": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "files": [ - "Resources/functions.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 an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/translation", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/71bb15335798f8c4da110911bcf2d2fead7a430d", - "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.3|^3.0" - }, - "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" - }, - "provide": { - "symfony/translation-implementation": "2.3|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-07T00:29:03+00:00" - }, - { - "name": "symfony/translation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "suggest": { - "symfony/translation-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - } - }, - "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.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": "2021-09-07T12:43:40+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7b701676fc64f9ef11f9b4870f16b48f66be4834", - "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<5.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, - "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.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-17T16:30:44+00:00" - }, - { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.4", - "source": { - "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" - } - ], - "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", - "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "support": { - "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" - }, - "time": "2021-12-08T09:12:39+00:00" - }, - { - "name": "vlucas/phpdotenv", - "version": "v5.4.1", - "source": { - "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", - "shasum": "" - }, - "require": { - "ext-pcre": "*", - "graham-campbell/result-type": "^1.0.2", - "php": "^7.1.3 || ^8.0", - "phpoption/phpoption": "^1.8", - "symfony/polyfill-ctype": "^1.23", - "symfony/polyfill-mbstring": "^1.23.1", - "symfony/polyfill-php80": "^1.23.1" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" - }, - "suggest": { - "ext-filter": "Required to use the boolean validator." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.4-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.4.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", - "type": "tidelift" - } - ], - "time": "2021-12-12T23:22:04+00:00" - }, - { - "name": "voku/portable-ascii", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/voku/portable-ascii.git", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/9bd89e83cecdf8c37b64909454249eaed98b2c89", - "reference": "9bd89e83cecdf8c37b64909454249eaed98b2c89", - "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.0" - }, - "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-01-24T18:59:03+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "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.10.0" - }, - "time": "2021-03-09T10:59:23+00:00" - } - ], - "packages-dev": [ - { - "name": "doctrine/instantiator", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.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%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2020-11-10T18:47:58+00:00" - }, - { - "name": "facade/ignition-contracts", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/facade/ignition-contracts.git", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^v2.15.8", - "phpunit/phpunit": "^9.3.11", - "vimeo/psalm": "^3.17.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Facade\\IgnitionContracts\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://flareapp.io", - "role": "Developer" - } - ], - "description": "Solution contracts for Ignition", - "homepage": "https://github.com/facade/ignition-contracts", - "keywords": [ - "contracts", - "flare", - "ignition" - ], - "support": { - "issues": "https://github.com/facade/ignition-contracts/issues", - "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" - }, - "time": "2020-10-16T08:27:54+00:00" - }, - { - "name": "fakerphp/faker", - "version": "v1.19.0", - "source": { - "type": "git", - "url": "https://github.com/FakerPHP/Faker.git", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^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": "*", - "symfony/phpunit-bridge": "^4.4 || ^5.2" - }, - "suggest": { - "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", - "ext-curl": "Required by Faker\\Provider\\Image to download images.", - "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", - "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.19-dev" - } - }, - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "François Zaninotto" - } - ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], - "support": { - "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0" - }, - "time": "2022-02-02T17:38:57+00:00" - }, - { - "name": "filp/whoops", - "version": "2.14.5", - "source": { - "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "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.14.5" - }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "time": "2022-01-07T12:00:00+00:00" - }, - { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "shasum": "" - }, - "require": { - "php": "^5.3|^7.0|^8.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" - }, - "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "classmap": [ - "hamcrest" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "This is the PHP port of Hamcrest Matchers", - "keywords": [ - "test" - ], - "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" - }, - "time": "2020-07-09T08:09:16+00:00" - }, - { - "name": "laravel/sail", - "version": "v1.13.2", - "source": { - "type": "git", - "url": "https://github.com/laravel/sail.git", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "reference": "ede5e861549be2c3a8b789cdb34203a5aef5b92a", - "shasum": "" - }, - "require": { - "illuminate/console": "^8.0|^9.0", - "illuminate/contracts": "^8.0|^9.0", - "illuminate/support": "^8.0|^9.0", - "php": "^7.3|^8.0" - }, - "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": "2022-02-08T14:14:12+00:00" - }, - { - "name": "mockery/mockery", - "version": "1.5.0", - "source": { - "type": "git", - "url": "https://github.com/mockery/mockery.git", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "shasum": "" - }, - "require": { - "hamcrest/hamcrest-php": "^2.0.1", - "lib-pcre": ">=7.0", - "php": "^7.3 || ^8.0" - }, - "conflict": { - "phpunit/phpunit": "<8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-0": { - "Mockery": "library/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" - } - ], - "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": { - "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.5.0" - }, - "time": "2022-01-20T13:18:17+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.10.2", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "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.10.2" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2020-11-13T09:40:50+00:00" - }, - { - "name": "nunomaduro/collision", - "version": "v6.1.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/collision.git", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "reference": "df09e21a5e5d5a7d51a8b9ecd44d3dd150d97fec", - "shasum": "" - }, - "require": { - "facade/ignition-contracts": "^1.0.2", - "filp/whoops": "^2.14.5", - "php": "^8.0.0", - "symfony/console": "^6.0.2" - }, - "require-dev": { - "brianium/paratest": "^6.4.1", - "laravel/framework": "^9.0", - "nunomaduro/larastan": "^1.0.2", - "nunomaduro/mock-final-classes": "^1.1.0", - "orchestra/testbench": "^7.0.0", - "phpunit/phpunit": "^9.5.11" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "6.x-dev" - }, - "laravel": { - "providers": [ - "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" - ] - } - }, - "autoload": { - "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": "2022-01-18T17:49:08+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.1.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/15a90844ad40f127afd244c0cad228de2a80052a", - "reference": "15a90844ad40f127afd244c0cad228de2a80052a", - "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.1.1" - }, - "time": "2022-02-07T21:56:48+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.6.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "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.6.0" - }, - "time": "2022-01-04T19:58:01+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" - }, - "time": "2021-12-08T12:19:24+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "9.2.10", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d5850aaf931743067f4bfc1ae4cbd06468400687", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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 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", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.10" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-05T09:12:13+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "3.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-02T12:48:52+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "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/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:58:55+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T05:33:50+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.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/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:16:10+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "9.5.13", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/597cb647654ede35e43b137926dfdfef0fb11743", - "reference": "597cb647654ede35e43b137926dfdfef0fb11743", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.3.1", - "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": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.7", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", - "sebastian/version": "^3.0.2" - }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.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", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.13" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-01-24T07:33:35+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:08:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "1.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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/1.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:08:54+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:30:19+00:00" - }, - { - "name": "sebastian/comparator", - "version": "4.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:49:45+00:00" - }, - { - "name": "sebastian/complexity", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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 calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:52:27+00:00" - }, - { - "name": "sebastian/diff", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:10:38+00:00" - }, - { - "name": "sebastian/environment", - "version": "5.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-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": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:52:38+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "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", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-11-11T14:18:36+00:00" - }, - { - "name": "sebastian/global-state", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-11T13:31:12+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-28T06:42:11+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "http://www.github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:17:30+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:45:17+00:00" - }, - { - "name": "sebastian/type", - "version": "2.3.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-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/2.3.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-15T12:49:02+00:00" - }, - { - "name": "sebastian/version", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "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": "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/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:39:44+00:00" - }, - { - "name": "spatie/backtrace", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/backtrace.git", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "ext-json": "*", - "phpunit/phpunit": "^9.3", - "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": { - "issues": "https://github.com/spatie/backtrace/issues", - "source": "https://github.com/spatie/backtrace/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/sponsors/spatie", - "type": "github" - }, - { - "url": "https://spatie.be/open-source/support-us", - "type": "other" - } - ], - "time": "2021-11-09T10:57:15+00:00" - }, - { - "name": "spatie/flare-client-php", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/flare-client-php.git", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "reference": "c8d9d1c639e217cb9ada5db8fea869a7f1b0c85a", - "shasum": "" - }, - "require": { - "illuminate/pipeline": "^8.0|^9.0", - "php": "^8.0", - "spatie/backtrace": "^1.2", - "symfony/http-foundation": "^5.0|^6.0", - "symfony/mime": "^5.2|^6.0", - "symfony/process": "^5.2|^6.0", - "symfony/var-dumper": "^5.2|^6.0" - }, - "require-dev": { - "dms/phpunit-arraysubset-asserts": "^0.3.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/phpunit-snapshot-assertions": "^4.0" - }, - "type": "library", - "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.0.1" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2022-02-04T15:21:00+00:00" - }, - { - "name": "spatie/ignition", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/spatie/ignition.git", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/d2d5ba823af3004268556e87dfc94449e4159f5a", - "reference": "d2d5ba823af3004268556e87dfc94449e4159f5a", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "monolog/monolog": "^2.0", - "php": "^8.0", - "spatie/flare-client-php": "^1.0", - "symfony/console": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "mockery/mockery": "^1.4", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/ray": "^1.32", - "symfony/process": "^5.4|^6.0" - }, - "type": "library", - "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": "2022-01-19T12:57:41+00:00" - }, - { - "name": "spatie/laravel-ignition", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/68250225a9f83b086462c2af1b1139dfde48fbd2", - "reference": "68250225a9f83b086462c2af1b1139dfde48fbd2", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*", - "illuminate/support": "^8.77|^9.0", - "monolog/monolog": "^2.3", - "php": "^8.0", - "spatie/flare-client-php": "^1.0.1", - "spatie/ignition": "^1.0", - "symfony/console": "^5.0|^6.0", - "symfony/var-dumper": "^5.0|^6.0" - }, - "require-dev": { - "filp/whoops": "^2.14", - "livewire/livewire": "^2.8|dev-develop", - "mockery/mockery": "^1.4", - "nunomaduro/larastan": "^1.0", - "orchestra/testbench": "^6.23|^7.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/laravel-ray": "^1.27" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Spatie\\LaravelIgnition\\IgnitionServiceProvider" - ], - "aliases": { - "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" - } - } - }, - "autoload": { - "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": "2022-02-04T15:25:56+00:00" - }, - { - "name": "squizlabs/php_codesniffer", - "version": "3.6.2", - "source": { - "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", - "shasum": "" - }, - "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.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": "lead" - } - ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", - "keywords": [ - "phpcs", - "standards" - ], - "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" - }, - "time": "2021-12-12T21:44:58+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2021-07-28T10:34:58+00:00" - } - ], - "aliases": [], - "minimum-stability": "dev", - "stability-flags": [], - "prefer-stable": true, - "prefer-lowest": false, - "platform": { - "php": "^8.0" - }, - "platform-dev": [], - "plugin-api-version": "2.1.0" -} diff --git a/Chapter28/onlineStore/config/app.php b/Chapter28/onlineStore/config/app.php deleted file mode 100644 index 1941d7c..0000000 --- a/Chapter28/onlineStore/config/app.php +++ /dev/null @@ -1,197 +0,0 @@ - env('APP_NAME', 'Laravel'), - - /* - |-------------------------------------------------------------------------- - | Application Environment - |-------------------------------------------------------------------------- - | - | This value determines the "environment" your application is currently - | running in. This may determine how you prefer to configure various - | services the application utilizes. Set this in your ".env" file. - | - */ - - 'env' => env('APP_ENV', 'production'), - - /* - |-------------------------------------------------------------------------- - | Application Debug Mode - |-------------------------------------------------------------------------- - | - | When your application is in debug mode, detailed error messages with - | stack traces will be shown on every error that occurs within your - | application. If disabled, a simple generic error page is shown. - | - */ - - 'debug' => (bool) env('APP_DEBUG', false), - - /* - |-------------------------------------------------------------------------- - | Application URL - |-------------------------------------------------------------------------- - | - | This URL is used by the console to properly generate URLs when using - | the Artisan command line tool. You should set this to the root of - | your application so that it is used when running Artisan tasks. - | - */ - - 'url' => env('APP_URL', 'http://localhost'), - - 'asset_url' => env('ASSET_URL', null), - - /* - |-------------------------------------------------------------------------- - | 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', - - /* - |-------------------------------------------------------------------------- - | 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' => [ - - /* - * Laravel Framework Service Providers... - */ - Illuminate\Auth\AuthServiceProvider::class, - Illuminate\Broadcasting\BroadcastServiceProvider::class, - Illuminate\Bus\BusServiceProvider::class, - Illuminate\Cache\CacheServiceProvider::class, - Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, - Illuminate\Cookie\CookieServiceProvider::class, - Illuminate\Database\DatabaseServiceProvider::class, - Illuminate\Encryption\EncryptionServiceProvider::class, - Illuminate\Filesystem\FilesystemServiceProvider::class, - Illuminate\Foundation\Providers\FoundationServiceProvider::class, - Illuminate\Hashing\HashServiceProvider::class, - Illuminate\Mail\MailServiceProvider::class, - Illuminate\Notifications\NotificationServiceProvider::class, - Illuminate\Pagination\PaginationServiceProvider::class, - Illuminate\Pipeline\PipelineServiceProvider::class, - Illuminate\Queue\QueueServiceProvider::class, - Illuminate\Redis\RedisServiceProvider::class, - Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, - Illuminate\Session\SessionServiceProvider::class, - Illuminate\Translation\TranslationServiceProvider::class, - Illuminate\Validation\ValidationServiceProvider::class, - Illuminate\View\ViewServiceProvider::class, - - /* - * 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, - - ], - - /* - |-------------------------------------------------------------------------- - | 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([ - // ... - ])->toArray(), - -]; diff --git a/Chapter28/onlineStore/config/auth.php b/Chapter28/onlineStore/config/auth.php deleted file mode 100644 index d8c6cee..0000000 --- a/Chapter28/onlineStore/config/auth.php +++ /dev/null @@ -1,111 +0,0 @@ - [ - '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 expire 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. - | - */ - - 'passwords' => [ - 'users' => [ - 'provider' => 'users', - 'table' => 'password_resets', - '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/Chapter28/onlineStore/config/broadcasting.php b/Chapter28/onlineStore/config/broadcasting.php deleted file mode 100644 index 67fcbbd..0000000 --- a/Chapter28/onlineStore/config/broadcasting.php +++ /dev/null @@ -1,67 +0,0 @@ - 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'), - 'useTLS' => true, - ], - '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/Chapter28/onlineStore/config/cache.php b/Chapter28/onlineStore/config/cache.php deleted file mode 100644 index 8736c7a..0000000 --- a/Chapter28/onlineStore/config/cache.php +++ /dev/null @@ -1,110 +0,0 @@ - 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'), - ], - - '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 a RAM based store such as APC or Memcached, there might - | be other applications utilizing the same cache. So, we'll specify a - | value to get prefixed to all our keys so we can avoid collisions. - | - */ - - 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'), - -]; diff --git a/Chapter28/onlineStore/config/cors.php b/Chapter28/onlineStore/config/cors.php deleted file mode 100644 index 8a39e6d..0000000 --- a/Chapter28/onlineStore/config/cors.php +++ /dev/null @@ -1,34 +0,0 @@ - ['api/*', 'sanctum/csrf-cookie'], - - 'allowed_methods' => ['*'], - - 'allowed_origins' => ['*'], - - 'allowed_origins_patterns' => [], - - 'allowed_headers' => ['*'], - - 'exposed_headers' => [], - - 'max_age' => 0, - - 'supports_credentials' => false, - -]; diff --git a/Chapter28/onlineStore/config/database.php b/Chapter28/onlineStore/config/database.php deleted file mode 100644 index 0faebae..0000000 --- a/Chapter28/onlineStore/config/database.php +++ /dev/null @@ -1,147 +0,0 @@ - env('DB_CONNECTION', 'mysql'), - - /* - |-------------------------------------------------------------------------- - | Database Connections - |-------------------------------------------------------------------------- - | - | Here are each of the database connections setup for your application. - | Of course, examples of configuring each database platform that is - | supported by Laravel is shown below to make development simple. - | - | - | All database work in Laravel is done through the PHP PDO facilities - | so make sure you have the driver for your particular database of - | choice installed on your machine before you begin development. - | - */ - - 'connections' => [ - - 'sqlite' => [ - 'driver' => 'sqlite', - 'url' => env('DATABASE_URL'), - 'database' => env('DB_DATABASE', database_path('database.sqlite')), - 'prefix' => '', - 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), - ], - - 'mysql' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '3306'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'unix_socket' => env('DB_SOCKET', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - 'pgsql' => [ - 'driver' => 'pgsql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '5432'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - 'search_path' => 'public', - 'sslmode' => 'prefer', - ], - - 'sqlsrv' => [ - 'driver' => 'sqlsrv', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', 'localhost'), - 'port' => env('DB_PORT', '1433'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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'), - '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'), - 'password' => env('REDIS_PASSWORD'), - 'port' => env('REDIS_PORT', '6379'), - 'database' => env('REDIS_CACHE_DB', '1'), - ], - - ], - -]; diff --git a/Chapter28/onlineStore/config/filesystems.php b/Chapter28/onlineStore/config/filesystems.php deleted file mode 100644 index cf5abce..0000000 --- a/Chapter28/onlineStore/config/filesystems.php +++ /dev/null @@ -1,73 +0,0 @@ - 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 setup for each driver as an example of the required options. - | - | Supported Drivers: "local", "ftp", "sftp", "s3" - | - */ - - 'disks' => [ - - 'local' => [ - 'driver' => 'local', - 'root' => storage_path('app'), - ], - - 'public' => [ - 'driver' => 'local', - 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', - 'visibility' => 'public', - ], - - '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), - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter28/onlineStore/config/hashing.php b/Chapter28/onlineStore/config/hashing.php deleted file mode 100644 index bcd3be4..0000000 --- a/Chapter28/onlineStore/config/hashing.php +++ /dev/null @@ -1,52 +0,0 @@ - '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/Chapter28/onlineStore/config/logging.php b/Chapter28/onlineStore/config/logging.php deleted file mode 100644 index fefe088..0000000 --- a/Chapter28/onlineStore/config/logging.php +++ /dev/null @@ -1,119 +0,0 @@ - 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' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), - - /* - |-------------------------------------------------------------------------- - | 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'), - ], - - 'daily' => [ - 'driver' => 'daily', - 'path' => storage_path('logs/laravel.log'), - 'level' => env('LOG_LEVEL', 'debug'), - 'days' => 14, - ], - - 'slack' => [ - 'driver' => 'slack', - 'url' => env('LOG_SLACK_WEBHOOK_URL'), - 'username' => 'Laravel Log', - 'emoji' => ':boom:', - 'level' => env('LOG_LEVEL', 'critical'), - ], - - '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'), - ], - ], - - 'stderr' => [ - 'driver' => 'monolog', - 'level' => env('LOG_LEVEL', 'debug'), - 'handler' => StreamHandler::class, - 'formatter' => env('LOG_STDERR_FORMATTER'), - 'with' => [ - 'stream' => 'php://stderr', - ], - ], - - 'syslog' => [ - 'driver' => 'syslog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'errorlog' => [ - 'driver' => 'errorlog', - 'level' => env('LOG_LEVEL', 'debug'), - ], - - 'null' => [ - 'driver' => 'monolog', - 'handler' => NullHandler::class, - ], - - 'emergency' => [ - 'path' => storage_path('logs/laravel.log'), - ], - ], - -]; diff --git a/Chapter28/onlineStore/config/mail.php b/Chapter28/onlineStore/config/mail.php deleted file mode 100644 index 87b6fe3..0000000 --- a/Chapter28/onlineStore/config/mail.php +++ /dev/null @@ -1,117 +0,0 @@ - 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", - | "postmark", "log", "array", "failover" - | - */ - - 'mailers' => [ - 'smtp' => [ - 'transport' => 'smtp', - '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, - ], - - 'ses' => [ - 'transport' => 'ses', - ], - - 'mailgun' => [ - 'transport' => 'mailgun', - ], - - 'postmark' => [ - 'transport' => 'postmark', - ], - - 'sendmail' => [ - 'transport' => 'sendmail', - 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -t -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/Chapter28/onlineStore/config/queue.php b/Chapter28/onlineStore/config/queue.php deleted file mode 100644 index 25ea5a8..0000000 --- a/Chapter28/onlineStore/config/queue.php +++ /dev/null @@ -1,93 +0,0 @@ - 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, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | 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/Chapter28/onlineStore/config/sanctum.php b/Chapter28/onlineStore/config/sanctum.php deleted file mode 100644 index 9281c92..0000000 --- a/Chapter28/onlineStore/config/sanctum.php +++ /dev/null @@ -1,65 +0,0 @@ - explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( - '%s%s', - 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', - env('APP_URL') ? ','.parse_url(env('APP_URL'), PHP_URL_HOST) : '' - ))), - - /* - |-------------------------------------------------------------------------- - | 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/Chapter28/onlineStore/config/services.php b/Chapter28/onlineStore/config/services.php deleted file mode 100644 index 2a1d616..0000000 --- a/Chapter28/onlineStore/config/services.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - 'domain' => env('MAILGUN_DOMAIN'), - 'secret' => env('MAILGUN_SECRET'), - 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), - ], - - '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/Chapter28/onlineStore/config/session.php b/Chapter28/onlineStore/config/session.php deleted file mode 100644 index 8fed97c..0000000 --- a/Chapter28/onlineStore/config/session.php +++ /dev/null @@ -1,201 +0,0 @@ - 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/Chapter28/onlineStore/config/view.php b/Chapter28/onlineStore/config/view.php deleted file mode 100644 index 22b8a18..0000000 --- a/Chapter28/onlineStore/config/view.php +++ /dev/null @@ -1,36 +0,0 @@ - [ - 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/Chapter28/onlineStore/database/.gitignore b/Chapter28/onlineStore/database/.gitignore deleted file mode 100644 index 9b19b93..0000000 --- a/Chapter28/onlineStore/database/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.sqlite* diff --git a/Chapter28/onlineStore/database/factories/UserFactory.php b/Chapter28/onlineStore/database/factories/UserFactory.php deleted file mode 100644 index d6ca926..0000000 --- a/Chapter28/onlineStore/database/factories/UserFactory.php +++ /dev/null @@ -1,42 +0,0 @@ - - */ -class UserFactory extends Factory -{ - /** - * Define the model's default state. - * - * @return array - */ - public function definition() - { - return [ - 'name' => $this->faker->name(), - 'email' => $this->faker->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. - * - * @return \Illuminate\Database\Eloquent\Factories\Factory - */ - public function unverified() - { - return $this->state(function (array $attributes) { - return [ - 'email_verified_at' => null, - ]; - }); - } -} diff --git a/Chapter28/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php b/Chapter28/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php deleted file mode 100644 index cf6b776..0000000 --- a/Chapter28/onlineStore/database/migrations/2014_10_12_000000_create_users_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->string('name'); - $table->string('email')->unique(); - $table->timestamp('email_verified_at')->nullable(); - $table->string('password'); - $table->rememberToken(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('users'); - } -}; diff --git a/Chapter28/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php b/Chapter28/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php deleted file mode 100644 index 0ee0a36..0000000 --- a/Chapter28/onlineStore/database/migrations/2014_10_12_100000_create_password_resets_table.php +++ /dev/null @@ -1,32 +0,0 @@ -string('email')->index(); - $table->string('token'); - $table->timestamp('created_at')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('password_resets'); - } -} diff --git a/Chapter28/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/Chapter28/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php deleted file mode 100644 index 1719198..0000000 --- a/Chapter28/onlineStore/database/migrations/2019_08_19_000000_create_failed_jobs_table.php +++ /dev/null @@ -1,36 +0,0 @@ -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. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('failed_jobs'); - } -}; diff --git a/Chapter28/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/Chapter28/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php deleted file mode 100644 index fd235f8..0000000 --- a/Chapter28/onlineStore/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->morphs('tokenable'); - $table->string('name'); - $table->string('token', 64)->unique(); - $table->text('abilities')->nullable(); - $table->timestamp('last_used_at')->nullable(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('personal_access_tokens'); - } -}; diff --git a/Chapter28/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php b/Chapter28/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php deleted file mode 100644 index 2eecdc2..0000000 --- a/Chapter28/onlineStore/database/migrations/2022_02_11_153916_create_products_table.php +++ /dev/null @@ -1,35 +0,0 @@ -id(); - $table->string('name'); - $table->text('description'); - $table->string('image'); - $table->integer('price'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('products'); - } -}; diff --git a/Chapter28/onlineStore/database/migrations/2022_02_12_140820_alter_users_table.php b/Chapter28/onlineStore/database/migrations/2022_02_12_140820_alter_users_table.php deleted file mode 100644 index 5bfcf7e..0000000 --- a/Chapter28/onlineStore/database/migrations/2022_02_12_140820_alter_users_table.php +++ /dev/null @@ -1,34 +0,0 @@ -string('role')->default('client'); - $table->integer('balance'); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::table('users', function (Blueprint $table) { - $table->dropColumn(['role']); - $table->dropColumn(['balance']); - }); - } -}; diff --git a/Chapter28/onlineStore/database/migrations/2022_02_12_152713_create_orders_table.php b/Chapter28/onlineStore/database/migrations/2022_02_12_152713_create_orders_table.php deleted file mode 100644 index fc05fda..0000000 --- a/Chapter28/onlineStore/database/migrations/2022_02_12_152713_create_orders_table.php +++ /dev/null @@ -1,34 +0,0 @@ -id(); - $table->integer('total'); - $table->unsignedBigInteger('user_id'); - $table->foreign('user_id')->references('id')->on('users'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('orders'); - } -}; diff --git a/Chapter28/onlineStore/database/migrations/2022_02_12_152850_create_items_table.php b/Chapter28/onlineStore/database/migrations/2022_02_12_152850_create_items_table.php deleted file mode 100644 index d7dfac5..0000000 --- a/Chapter28/onlineStore/database/migrations/2022_02_12_152850_create_items_table.php +++ /dev/null @@ -1,37 +0,0 @@ -id(); - $table->integer('quantity'); - $table->integer('price'); - $table->unsignedBigInteger('order_id'); - $table->foreign('order_id')->references('id')->on('orders'); - $table->unsignedBigInteger('product_id'); - $table->foreign('product_id')->references('id')->on('products'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('items'); - } -}; diff --git a/Chapter28/onlineStore/database/seeders/DatabaseSeeder.php b/Chapter28/onlineStore/database/seeders/DatabaseSeeder.php deleted file mode 100644 index 71f673f..0000000 --- a/Chapter28/onlineStore/database/seeders/DatabaseSeeder.php +++ /dev/null @@ -1,19 +0,0 @@ -create(); - } -} diff --git a/Chapter28/onlineStore/lang/en.json b/Chapter28/onlineStore/lang/en.json deleted file mode 100644 index 577680d..0000000 --- a/Chapter28/onlineStore/lang/en.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "The :attribute must contain at least one letter.": "The :attribute must contain at least one letter.", - "The :attribute must contain at least one number.": "The :attribute must contain at least one number.", - "The :attribute must contain at least one symbol.": "The :attribute must contain at least one symbol.", - "The :attribute must contain at least one uppercase and one lowercase letter.": "The :attribute must contain at least one uppercase and one lowercase letter.", - "The given :attribute has appeared in a data leak. Please choose a different :attribute.": "The given :attribute has appeared in a data leak. Please choose a different :attribute." -} diff --git a/Chapter28/onlineStore/lang/en/auth.php b/Chapter28/onlineStore/lang/en/auth.php deleted file mode 100644 index 6598e2c..0000000 --- a/Chapter28/onlineStore/lang/en/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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/Chapter28/onlineStore/lang/en/pagination.php b/Chapter28/onlineStore/lang/en/pagination.php deleted file mode 100644 index d481411..0000000 --- a/Chapter28/onlineStore/lang/en/pagination.php +++ /dev/null @@ -1,19 +0,0 @@ - '« Previous', - 'next' => 'Next »', - -]; diff --git a/Chapter28/onlineStore/lang/en/passwords.php b/Chapter28/onlineStore/lang/en/passwords.php deleted file mode 100644 index 2345a56..0000000 --- a/Chapter28/onlineStore/lang/en/passwords.php +++ /dev/null @@ -1,22 +0,0 @@ - '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/Chapter28/onlineStore/lang/en/validation.php b/Chapter28/onlineStore/lang/en/validation.php deleted file mode 100644 index 783003c..0000000 --- a/Chapter28/onlineStore/lang/en/validation.php +++ /dev/null @@ -1,163 +0,0 @@ - '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' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - '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' => [ - 'numeric' => 'The :attribute must be greater than :value.', - 'file' => 'The :attribute must be greater than :value kilobytes.', - 'string' => 'The :attribute must be greater than :value characters.', - 'array' => 'The :attribute must have more than :value items.', - ], - 'gte' => [ - 'numeric' => 'The :attribute must be greater than or equal to :value.', - 'file' => 'The :attribute must be greater than or equal to :value kilobytes.', - 'string' => 'The :attribute must be greater than or equal to :value characters.', - 'array' => 'The :attribute must have :value items or more.', - ], - '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' => [ - 'numeric' => 'The :attribute must be less than :value.', - 'file' => 'The :attribute must be less than :value kilobytes.', - 'string' => 'The :attribute must be less than :value characters.', - 'array' => 'The :attribute must have less than :value items.', - ], - 'lte' => [ - 'numeric' => 'The :attribute must be less than or equal to :value.', - 'file' => 'The :attribute must be less than or equal to :value kilobytes.', - 'string' => 'The :attribute must be less than or equal to :value characters.', - 'array' => 'The :attribute must not have more than :value items.', - ], - 'mac_address' => 'The :attribute must be a valid MAC address.', - 'max' => [ - 'numeric' => 'The :attribute must not be greater than :max.', - 'file' => 'The :attribute must not be greater than :max kilobytes.', - 'string' => 'The :attribute must not be greater than :max characters.', - 'array' => 'The :attribute must not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - '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.', - 'password' => 'The password is incorrect.', - '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' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - '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/Chapter28/onlineStore/package.json b/Chapter28/onlineStore/package.json deleted file mode 100644 index 7b71681..0000000 --- a/Chapter28/onlineStore/package.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "private": true, - "scripts": { - "dev": "npm run development", - "development": "mix", - "watch": "mix watch", - "watch-poll": "mix watch -- --watch-options-poll=1000", - "hot": "mix watch --hot", - "prod": "npm run production", - "production": "mix --production" - }, - "devDependencies": { - "@popperjs/core": "^2.10.2", - "axios": "^0.25", - "bootstrap": "^5.1.3", - "laravel-mix": "^6.0.6", - "lodash": "^4.17.19", - "postcss": "^8.1.14", - "sass": "^1.32.11", - "sass-loader": "^11.0.1" - } -} diff --git a/Chapter28/onlineStore/phpcs.xml b/Chapter28/onlineStore/phpcs.xml deleted file mode 100644 index a1cf2b6..0000000 --- a/Chapter28/onlineStore/phpcs.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - The coding standard for the Online Store project - - app/ - config/ - database/ - routes/ - */migrations/* - diff --git a/Chapter28/onlineStore/phpunit.xml b/Chapter28/onlineStore/phpunit.xml deleted file mode 100644 index 2ac86a1..0000000 --- a/Chapter28/onlineStore/phpunit.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - ./tests/Unit - - - ./tests/Feature - - - - - ./app - - - - - - - - - - - - - - diff --git a/Chapter28/onlineStore/public/.htaccess b/Chapter28/onlineStore/public/.htaccess deleted file mode 100644 index 3aec5e2..0000000 --- a/Chapter28/onlineStore/public/.htaccess +++ /dev/null @@ -1,21 +0,0 @@ - - - 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/Chapter28/onlineStore/public/css/admin.css b/Chapter28/onlineStore/public/css/admin.css deleted file mode 100644 index d9495a1..0000000 --- a/Chapter28/onlineStore/public/css/admin.css +++ /dev/null @@ -1,33 +0,0 @@ -.copyright { - background-color: #1a252f; -} - -.fixed { - -ms-flex: 0 0 250px; - flex: 0 0 250px; -} - -.content-grey { - background-color: #f8f9fc; -} - -hr { - margin-top: 0.8em; - margin-bottom: 0.8em; -} - -.img-profile { - height: 2rem; - width: 2rem; -} - -.profile-font { - color: #858796 !important; - font-size: 80%; - font-weight: 400; -} - -.card-header { - background-color: #f8f9fc; - border-bottom: 1px solid #e3e6f0; -} diff --git a/Chapter28/onlineStore/public/css/app.css b/Chapter28/onlineStore/public/css/app.css deleted file mode 100644 index cabac36..0000000 --- a/Chapter28/onlineStore/public/css/app.css +++ /dev/null @@ -1,20 +0,0 @@ -.bg-secondary { - background-color: #2c3e50 !important; -} - -.copyright { - background-color: #1a252f; -} - -.bg-primary { - background-color: #1abc9c !important; -} - -nav{ - font-weight: 700; -} - -.img-card{ - height: 18vw; - object-fit: cover; -} diff --git a/Chapter28/onlineStore/public/favicon.ico b/Chapter28/onlineStore/public/favicon.ico deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter28/onlineStore/public/img/game.png b/Chapter28/onlineStore/public/img/game.png deleted file mode 100644 index 85420e8bbc16098bf26b4ee63bde0e91a19d1f2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25896 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 cz>% diff --git a/Chapter28/onlineStore/public/img/safe.png b/Chapter28/onlineStore/public/img/safe.png deleted file mode 100644 index 445942c707af53210931f9f4f99f6d3cb69e5d89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19240 zcmcG$WmHse)Hkf6f+(ScNTUb?(jg6!BS;M;DbfQ72qGOSC5?2~(A^yh(m8Y^-90n| z&o%%1em}nJeZIV|HH&f1Ialnxubsbr{FN1z0)gS96-$ zp4IuJyY`*Y>6dib+W_gw3gbzJCF`EUiWfmv_IvF^+r}S_8XhlF-;K4W;EsJ=!u{Zm z@g?0-gVTvg+3)A&>{~Go1SQjd?#mLCY;30|$$pb<*D@0+;Wn@M=oNr_lz9BT`8@!sYom=skJ z#xB_%G{rBu9%KkN>}Lzepv#ci$)zjzUEWl{_J)14mKoqCkXM@fkXVPPnOsO_USm`I z5Z|XT-)+{5k*KHh_qjaqq{ZMyA+H`N0tpjLU`?g-$4%8E$O7xL z-~_|bE=a6DLLM0rG(I)VVLO|%H@9{-ygu!pf4Z34rf}PU`0bA{p#jmWU6=d3512G0 zsPS@9nbnH1=XY@sZ>|#KdvA6TPbD6W;*dMi1^K?c2p*>y@h1S+iiIu*>$8B#EW*+%h0ur^{wIN^#llD<^0+d#yrFEH@c5SGSj6ESg?OOepi6%}m+-z&s0^ z2J`*rD!mUGc}va^EsgV@ zEcAF53tX^v%Q)QVn8(b!@hdw5H*@>FzWdp$V&NxEFmkXca~@up+v-xW*w>36>8XLg z010(c2w7wGK4f|7G&zZnV4wD1~(7h2hntA?n#=b;2h;L-LdZaDuN9-O_ z^!E&i2_?np!A?@OfRwK#duTm+Ira-RSuA3}f_eJNFo#Kw-giR*%vs7Qs&d}K=t=7v z-ud>T&BkM-E(84BNFm9puT-YROan%NPWDEiO41HKeDbBxx0xLJdWvWvKm8kZwh6Jz)Y;pW zQ?Zj)%=1(f`YPllo(nIIP-0gJO-;vY+FH+)X$Q+If+Y61U=Q&7|1zxGYRjZO4GvYi z?qlpn7vEfs9{kE1`sU>xpQn`6MA&qFJP=~}+=n^?j2&_x2FF&&7)$`q6Ci1Ecdp#b zp9A7g%;t7o#fTm)PWsKO5)Xzyg$c|+!7@4w279ssP_{s&fU{eb4T($$!Bc|7J4=lcgP0a}3H5&^dtz8#;EJqFoDDI0Y#BE3TL`%l%FuNsUpB^w-7Hhot)^l75Ufu6%{}A`m>2St zFb5oyCGu!>M}L`j*>2r?g}ZK&opoqND@l22)h4iIRlGozz}>^%=LIUv^f(( z8v=GO435IiVupGOSpM0A=GN=8)0+tKbV5ro>w@Yh9Hxp;PQ+lc{znR<{zp&l(U^U- z0h~Kd7Ia?-z3I3y4ujCkobijH32sa;+H2I`ij(<#IQ3Dw{^xn|H{})f+hjmaK2a6) zwT~;wJsiYfVETrfk|)ZB_#XYJ&GiMZYJ6(tg|!fxD)SbrY`Xrb+i@TQtsKiA8Abi;J};US60QaTqo7e)A!OGSS+FKMbRW!13Y`Rq;R8 z(oLpnaB^OUiuHWxCy35-Pb%`gxMXBtxPL$B_q)LDf13v{G9w)O=3P5llAv;>qA?Oo zm*7aEe8#C!RX;dzXJyj|&~rVdqCR}r*2|Y`1p3K49)y%)cE-lWf2E^d(*<2uGZx*T z3HsVDSd!5ZjLR^1{3L2HLrLslqY zR;Z>`@aTGZ^A`=;ZLt%698y|y!jb5{-e@Rr`ChEChXN=e`_3=Tr-yqtr(!`He`4~` zH{(6kji?x-g@j~54riW9=AO8R!_@=5p@}u+{9#&wOH9Hi3#Zu(7#V7*e*gw}?l1cF zLPDP4`f&T-&B2a;N*@aTF9JIJ$=cwo*wcY$8QI$U%2xPVRn^&<*c%omW%Enw=JbXK z`2u}-2$?P%yYO^7cfeetEtRb}idb2JEyDl51Ts7l|a zA3|W%=>6rsg+HUQt4MAF-RrsY%TLd6FAb2c6Yrm(0oT5+F59~)E!=n10-8yFeaswOQ~c&p3k0S7B=}hLmCe;`r%;UFqSNvrJial7<`Ox; zxafL?ocnYL)MVHRJ$VBl%YlfKGf&_3w#`zbUA8cw-`n)9zVt6`@&!ub)Cz^?nQ5AQ zA>9btpqB4$8{F*eBL4U1#XR|M@A(MFYugeaVAOa~{?$*sVeno+ce?^J7U{WKu91hA z{ngB&Y-}twT*IsAtBKyLw=)CJ)fm#`4y=Kc;L#(`iWs%`f}5#ihc3%XN(i6lZgE>( zFU}f0;15*J>;w}^)P=9>avrtM2h(rQGDXQ9!l$m**NCE4-q`YE0 zVz(wm)(H$vOfswL;;E<|YO^}tnC{FWWXUoNJQ*ewdmvZc*)*QqoU#>aJ4%`~XzYH) zOL#Z^NAlq;@-*9PXP(a3?a2OiB8p;>Y!0$+?PT-JVh z7v$_u_|2y@abBOGV0$c-LtMBCvOESxwbxsrGDJ5;<}?aX^t>U|a$`Sf31t>i6%|&S z_q%B5H^)zu{Fa&q8-=?`yEK<_Kjb((DGBEUNBReSd;=QRl=8zA=FH<0UfMpKWxRcG zzXd{xiunWda|%(k6#D>v(-&um`W`|!{)xZV64RtQA$at6@%LiST^(ROy_3dI2ST&< zXCtAii*98yA@|d8%bZ18AQ>ZHlx|{{zlOcEOLKLORPc-|NWOS`=vxRZVKr&qHP9~! z4M!J&6%1hZm#Z?iBCR{+8T}^>u{6&yN zi}aU!;VusB=#|)NO=<-%vCHZDa2E^zM0IfJt|ZFd!<^T;mE}n5VxZ?;qc0xlEHS+t zCB{Ky=#`xcoqO^Ib|Z2hhr{zPD{2E8fONN=ulK z+Nuq^(NMgF=!3hb%6Dp8UlA%0Eg12GurqV{jod+C@nFg4XB6h}w}UKG z6{Dl0wY37yJhz`Tx2w{t!Mi@B;2RJ>S=pA{^SC(RBl3*@($*X55r6E!XH}>X0ga%; z3r2|Nj7hAl?#KZ1!Us$iFmB<#+?7BY<>(JAg{^R-5~84wWztSxZK(wnFsokz^=n{L z4X(ZnMj-#eZ1{jmDH;$vcaeKN=(=PBl^Ye^s}Yu4z8YZspJmuq6++2;sH5_3U*8-< z9rVJX=TTu&!yLg(;o%SBaS(*uxton;81Z-TpAXJWj!Gt!5myzDY0Yuer8Wr!IwoZx z%S0mu^Ltu#qJTh>Z)M{17&GkoTH$4d80h3K`l`8)e@xu)LusD2kMpRxq;Bkok&(M%%ov0c<~s? z-G)wS%c$zSd>$mh=MFffI`QZ;5=b26Qdz6Nw>R6`=%@0_%>qD1eAzV%hD?haAP{>^ z!rdOd#6vajw5G;tC4mV)Z`r$|^-+cH)X|5Qc`{MHc7Ypx|D`PAatavO2*OBF5UVf= zA2=4_Ai&sB{n1ETwa{p)mky|l$K1J88Dfovp`tN83X~$`P55|Sxf#gKO^ZwwEp6RL z`qjS3^Is#R?{esGkT-{7HNrn1vm*X>VNO})i}cO<4ar+**X9EXf~$6$8QTu3a7b=c zm$3{K8cHohdi@9=zZ>yOS=KjiXyrQxu2rsq*zttUhVW@mdGm#|>#4}8H<@5`Pc1!d zc%SK>u!ozQTf;T`+PjTLrHAU7ap1rWx@;s?6Hjg>!TbAKWFTsRRA_eZ9kPFT zM*fUylmWLol7c3*J(N_=oJO(GHnN5zA(_l+6LoKz&2wFnX6ib|-QB(Q#fydaHfQZ$ zCGrXi3t8FOW8P)%_eFaO+D%&l*I0Fq3lLf)tK#Wg6Go0-pknK`y)t3&I7Y?DkSos*m z>KWH(8YNG!mPU>_v(EZw%LHnOKPOQ;)$9j&xs~XplEyvJzG_t3b9H<`(x6=bMWB}; zepG%<=A=H2V)$sZ#~-vr&RaYOAh@Qn)x-i^+UhvpHi-?01?9>ip9w3q73e+<@dp4a z?Yg@WLvrVv9EkyO-M`*0bBf8^Iq$)=LdnjDcs{pMEu_irRqx%hcuy!}yNCY`m(+lG zrUom=NSy3tspxS{pV)1+@{G=J&r==c6^I8!QAKv^-=dvC_L_+Z6*RNk~4d||NHS)tDdQaI}J~PRT8`toY z{OksE)wM^zqf%yyc^c3b6-6Q~Ui=`&q=vusWgbNEw=WQ=e~OI{<=(wBY2MhdT6lu@ zG|x_X1suR^;L7)lUM1VXQ{-xO3pJv!8rgMorl3N!YPD&L7_#kS0y>3J!^?uAA`7CI zGA%0>S8(k3TM}*gl)$h*6+Mp4l$kouZ&Xvkse!`|h7wpZ#ZN^*Ol*og(V8qN-uxHy zY8!Q0uaK!{Q8~5RZCKr4U3fa8k+z68y7#bHBnPt2)@-*fy0kuR;Y=eb%^lafP+Gcg zhLN7k#^$dVm#rqGdNvC!LjN)YH=hD=*aYN%6;v_Gnjr1x=htB;prCB8S+m^Y^OUVQ zi(L<&O|97hTbk_U&L{bCYuDmWVqAjpvm$tJ>V10Hb-fjI>vFsS<9PX2PHwi-7Zw)M z(&$#+IQj&Bu0BClR`RY4TO)T6%Zaj4!FG(wJ0kX1;XcKDxiK@ohXq z_MM(VFk{`j9*EvieQ4d&y?Aj+=>(NR4V$@!+KP$_6VKHB<^}dvvB@u^Cb<I-UN zlHWR-lUhjty`-r*VI-$;mc9RNpTlIOEQl(9n=U9^u)W9eJi^B0^1gchXj@wwT9`{% z{xYXWrScKp%unV!buCWLhQ?M_R^0xkTyZZbHpidmMD`p}r0-tt|NHYtduo|WC^n`@y^n)xzjjkEdvn1z%UEPS+G zc!b@H59#Le7*eTWvNue37fEDV$6r80Nz2^=Z z@85r^otZtIDNn)n^Yg*BiL)js{m94Q4I6?@im>=UVYIZgjFVs8t>2rw3H8RFR>D!| z!9k!P`IC=@pdpkSHuSnDHu82V);a0oWSMIqW928-{he%MYs>Pv7A_(uQ=F_#gs-AK zy7tKG;;}LeSi|XO!BX3rY{VqII0*W`AmDY5za_$^HsZ4RSVoq?weK-hqe<#3UJK-b z?TJAT6IMxC4W={|0>0l`g0g<5QizP4_GMn2WM^y8L5-xz#s zLi`t$^8ECB5Az&V-u6JOYQ83yU15tbFE@i(fp*Iub=l0xqqw-dEN^WEAvCacb1Z6m zKqxb~8Ch?{+1m##O!VH9i=Q${Ee{Q;)E2WR^x>P7KWEBw9D2hiQrKiu#mv?CRPxn| zU8yo8rl&DcYKx$z!S;7lEF}lCGoWjxiyR}qVb0qCIqDMyJ`vWF1=kT(lsA~)E_X!L zNHQTLW7OiSlkwk-OBwZO?n&`W{G8>-GPc8yl1PFZu%fKRaE(ruuALkw-X1r*?QUAxV}Q(+U@-8zkxJ>3P^@C{(wa z5aK>+!8O{H)pxD-jPeSMtm|IjHWR|^}=*kO_{04_~Cez&z+p6 zkga~Kq0LFrFm({>nDcz~BhO=%5UvyD{xUx6m>}DjsVVV93uwXq1QtdRdjcU z!)PU`MLsg)L7QqyIJgAKlRI91&jSavqFhzC{%E~aXfG1_f==9*aLoQkP?gu7@%`BY zvS>c3Tzfb?r}ln-4g^0mxC@c9>Hng66h7Nnb{=I#s?rlI(E1NQUaEB6}pEmu%y!Ov*#xhLp35T)_ndi@RdU^|R%BT|K zdAxImZ?8;^<}=BrUP0ZF*c*6(uFg5PIj}D7nnCfzRMp91DM%SI>BV?H=(+B7N?l zIK?Z$3U!R9*4t-ve`fd#SE8$TFkYuzW+X}uiuW6-cv`I%vLJUS=LA^o107?_{;xuz z48=Br@f8&*P>t89se@|Q!OiP|y0lt-%)IyFyF|u|J_H|=%LsWF+MP!`vl$lA<%NsC9AsZ%g8Nm?vA~> z{ARHSd~tM|^JSCln}ya^SjJBMQFwHsRT;dtUnS47ii_DJx*mPPnXfKMm3R;o6ts;_ zOyj`5kKOw2G9z^=dmR4EXZdaK^2KqabN)$ZG$Zo(Aa~_(anbOM{KUEWGToJ0u?c1TQ*!-(NUYy`_wL<;PQ<93$zJ5-6n$Mo1LYki?ZjEOtEf&OuJCS(JfD&fvEd4YJUNVM6M>g*;z2V_-6+Ht1Yn#>|d8}z5NIe zZ--1Lp%dXsW93x)CoRqR(efL>Gh9^Bq?^abj~|_!_(QNgd+;yhGVS(7cXL!dTptB< z!P#OS-c&BzOLPmD8K6beYOLQe&jw{IpmB>mehZW1GA8ux>NWToxgzd>%t<*Y(2z(J z`!jIk;o-Gyl_0t#T^W&B4pw`wZ;NHLBRWD>+S@M(qH#_+s(#s8=I7IetrqJSi}}Kt zF4svHX@?Wi*JfUX%DnuBXQ#lxK)O(BdKO>CpsbxeSSJ=a6x5F3)nT8C^cts7 zVI4)3`_z5uFdF+|r6waUxS!EFsgTSN+**Ub$re6t-f+dAjG*WX zbx31)_hIKiH$WU9yCz^+J`#^KK2Fwa*;fnfU6$6>)xDg+BOoYVYeqn)`GhM<1Nb8z zU=!izdh}}%rzRxlRXR!@vUaTg=%xYdk88QQ66JH=OW#cH%H2pyhY=aMQ!M=b`?q-B zQNQXmnjFWE7@vi5Zgt+fb#5+oy3Ea{52R>ca@w`3`wT9vuC7j1e0O~}Vo^DZ&rZHI zY5$~9zll?oQ@87@1)4A!qQORj$N@M?W+nv^wpV5RvSx4*CNynpkrmSzs?g>IN;y_{5 zBlLQ4RdBtU5$U?uSPfle=2aFl<60=u35Pm9OafkIqp%YesBzuJJt!I{b=97HNx;kJ z<(#qdZbfW4K1x#H3ABF3>~eK>P&ANa<8qWit6XtX`f7Xfwo#jKV5-M6<(A z^V}T$am))RyGp>xK2+ea{y|5HQJf_urlM&{N=jN61$Ct4n3DRPck_#I9G~BuNq7M$ zzcgj|Xm2vS8#W^6GRS=C1rthiLOgTqh|ngH0q1T#ov@*9j}rj%VEmM6d;t2}va(#rl++oxfh3rU*~Ylw-vBY%(`Dw{P1CjxewTWceno z=Na$1tzVh2<3pL8rjDg^8|+3FSd|@PYOAh)Z5LShe@Zth6D5dWkp>>mu0unq>Tj+u zCAWqCT__vX&NMckSS~2Je=+^pfNk!E=SQsQ&>;b@ThArMNQv7R47BP=3SLdSkQ%iwhet~B=?i){gpu2vt1V<}SXN$$SyG%_ z=a%a3USICb>n3l|I`iCJDJ?DSyRot_8pW3`OrQqG;)60pSe#78Nd#x7=$v4YV zS5ZOyvK%lTD65^)H|E4|V%}@y(Onc46nH3~C9J1toFsaY?CjJ!SI~vN7U4<1j-
    w==XB0?3|p=#`o%NsudE(E-U#KS3Snw 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 o>ir+C;RN10sIS0&a;p - - - - - - - - - - - - - - - - - - diff --git a/Chapter28/onlineStore/public/index.php b/Chapter28/onlineStore/public/index.php deleted file mode 100644 index 1d69f3a..0000000 --- a/Chapter28/onlineStore/public/index.php +++ /dev/null @@ -1,55 +0,0 @@ -make(Kernel::class); - -$response = $kernel->handle( - $request = Request::capture() -)->send(); - -$kernel->terminate($request, $response); diff --git a/Chapter28/onlineStore/public/robots.txt b/Chapter28/onlineStore/public/robots.txt deleted file mode 100644 index eb05362..0000000 --- a/Chapter28/onlineStore/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: diff --git a/Chapter28/onlineStore/resources/css/app.css b/Chapter28/onlineStore/resources/css/app.css deleted file mode 100644 index e69de29..0000000 diff --git a/Chapter28/onlineStore/resources/js/app.js b/Chapter28/onlineStore/resources/js/app.js deleted file mode 100644 index 40c55f6..0000000 --- a/Chapter28/onlineStore/resources/js/app.js +++ /dev/null @@ -1 +0,0 @@ -require('./bootstrap'); diff --git a/Chapter28/onlineStore/resources/js/bootstrap.js b/Chapter28/onlineStore/resources/js/bootstrap.js deleted file mode 100644 index dcdc4df..0000000 --- a/Chapter28/onlineStore/resources/js/bootstrap.js +++ /dev/null @@ -1,32 +0,0 @@ -window._ = require('lodash'); - -try { - require('bootstrap'); -} catch (e) {} - -/** - * 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 = require('axios'); - -window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; - -/** - * 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'; - -// window.Pusher = require('pusher-js'); - -// window.Echo = new Echo({ -// broadcaster: 'pusher', -// key: process.env.MIX_PUSHER_APP_KEY, -// cluster: process.env.MIX_PUSHER_APP_CLUSTER, -// forceTLS: true -// }); diff --git a/Chapter28/onlineStore/resources/sass/_variables.scss b/Chapter28/onlineStore/resources/sass/_variables.scss deleted file mode 100644 index 172daaa..0000000 --- a/Chapter28/onlineStore/resources/sass/_variables.scss +++ /dev/null @@ -1,7 +0,0 @@ -// Body -$body-bg: #f8fafc; - -// Typography -$font-family-sans-serif: 'Nunito', sans-serif; -$font-size-base: 0.9rem; -$line-height-base: 1.6; diff --git a/Chapter28/onlineStore/resources/sass/app.scss b/Chapter28/onlineStore/resources/sass/app.scss deleted file mode 100644 index 3193ffa..0000000 --- a/Chapter28/onlineStore/resources/sass/app.scss +++ /dev/null @@ -1,8 +0,0 @@ -// Fonts -@import url('https://fonts.googleapis.com/css?family=Nunito'); - -// Variables -@import 'variables'; - -// Bootstrap -@import '~bootstrap/scss/bootstrap'; diff --git a/Chapter28/onlineStore/resources/views/admin/home/index.blade.php b/Chapter28/onlineStore/resources/views/admin/home/index.blade.php deleted file mode 100644 index a2b4868..0000000 --- a/Chapter28/onlineStore/resources/views/admin/home/index.blade.php +++ /dev/null @@ -1,12 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
    -
    - Admin Panel - Home Page -
    -
    - Welcome to the Admin Panel, use the sidebar to navigate between the different options. -
    -
    -@endsection diff --git a/Chapter28/onlineStore/resources/views/admin/product/edit.blade.php b/Chapter28/onlineStore/resources/views/admin/product/edit.blade.php deleted file mode 100644 index b8e03d8..0000000 --- a/Chapter28/onlineStore/resources/views/admin/product/edit.blade.php +++ /dev/null @@ -1,61 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
    -
    - Edit Product -
    -
    - @if($errors->any()) -
      - @foreach($errors->all() as $error) -
    • - {{ $error }}
    • - @endforeach -
    - @endif - -
    - @csrf - @method('PUT') -
    -
    -
    - -
    - -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -   -
    -
    -
    - - -
    - -
    -
    -
    -@endsection diff --git a/Chapter28/onlineStore/resources/views/admin/product/index.blade.php b/Chapter28/onlineStore/resources/views/admin/product/index.blade.php deleted file mode 100644 index 19fbe4b..0000000 --- a/Chapter28/onlineStore/resources/views/admin/product/index.blade.php +++ /dev/null @@ -1,98 +0,0 @@ -@extends('layouts.admin') -@section('title', $viewData["title"]) -@section('content') -
    -
    - Create Products -
    -
    - @if($errors->any()) -
      - @foreach($errors->all() as $error) -
    • - {{ $error }}
    • - @endforeach -
    - @endif - -
    - @csrf -
    -
    -
    - -
    - -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -   -
    -
    -
    - - -
    - -
    -
    -
    - -
    -
    - Manage Products -
    -
    - - - - - - - - - - - @foreach ($viewData["products"] as $product) - - - - - - - @endforeach - -
    IDNameEditDelete
    {{ $product->getId() }}{{ $product->getName() }} - - - - -
    - @csrf - @method('DELETE') - -
    -
    -
    -
    -@endsection diff --git a/Chapter28/onlineStore/resources/views/auth/login.blade.php b/Chapter28/onlineStore/resources/views/auth/login.blade.php deleted file mode 100644 index c7e5ea0..0000000 --- a/Chapter28/onlineStore/resources/views/auth/login.blade.php +++ /dev/null @@ -1,73 +0,0 @@ -@extends('layouts.app') - -@section('content') -
    -@endsection diff --git a/Chapter28/onlineStore/resources/views/auth/passwords/confirm.blade.php b/Chapter28/onlineStore/resources/views/auth/passwords/confirm.blade.php deleted file mode 100644 index f8c8e61..0000000 --- a/Chapter28/onlineStore/resources/views/auth/passwords/confirm.blade.php +++ /dev/null @@ -1,49 +0,0 @@ -@extends('layouts.app') - -@section('content') - -@endsection diff --git a/Chapter28/onlineStore/resources/views/auth/passwords/email.blade.php b/Chapter28/onlineStore/resources/views/auth/passwords/email.blade.php deleted file mode 100644 index d1ac783..0000000 --- a/Chapter28/onlineStore/resources/views/auth/passwords/email.blade.php +++ /dev/null @@ -1,47 +0,0 @@ -@extends('layouts.app') - -@section('content') -
    -
    -
    -
    -
    {{ __('Reset Password') }}
    - -
    - @if (session('status')) - - @endif - -
    - @csrf - -
    - - -
    - - - @error('email') - - {{ $message }} - - @enderror -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -@endsection diff --git a/Chapter28/onlineStore/resources/views/auth/passwords/reset.blade.php b/Chapter28/onlineStore/resources/views/auth/passwords/reset.blade.php deleted file mode 100644 index dccf6c6..0000000 --- a/Chapter28/onlineStore/resources/views/auth/passwords/reset.blade.php +++ /dev/null @@ -1,65 +0,0 @@ -@extends('layouts.app') - -@section('content') -
    -
    -
    -
    -
    {{ __('Reset Password') }}
    - -
    -
    - @csrf - - - -
    - - -
    - - - @error('email') - - {{ $message }} - - @enderror -
    -
    - -
    - - -
    - - - @error('password') - - {{ $message }} - - @enderror -
    -
    - -
    - - -
    - -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -@endsection diff --git a/Chapter28/onlineStore/resources/views/auth/register.blade.php b/Chapter28/onlineStore/resources/views/auth/register.blade.php deleted file mode 100644 index e001a0b..0000000 --- a/Chapter28/onlineStore/resources/views/auth/register.blade.php +++ /dev/null @@ -1,77 +0,0 @@ -@extends('layouts.app') - -@section('content') -
    -
    -
    -
    -
    {{ __('Register') }}
    - -
    -
    - @csrf - -
    - - -
    - - - @error('name') - - {{ $message }} - - @enderror -
    -
    - -
    - - -
    - - - @error('email') - - {{ $message }} - - @enderror -
    -
    - -
    - - -
    - - - @error('password') - - {{ $message }} - - @enderror -
    -
    - -
    - - -
    - -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -@endsection diff --git a/Chapter28/onlineStore/resources/views/auth/verify.blade.php b/Chapter28/onlineStore/resources/views/auth/verify.blade.php deleted file mode 100644 index 9f8c1bc..0000000 --- a/Chapter28/onlineStore/resources/views/auth/verify.blade.php +++ /dev/null @@ -1,28 +0,0 @@ -@extends('layouts.app') - -@section('content') -
    -
    -
    -
    -
    {{ __('Verify Your Email Address') }}
    - -
    - @if (session('resent')) - - @endif - - {{ __('Before proceeding, please check your email for a verification link.') }} - {{ __('If you did not receive the email') }}, -
    - @csrf - . -
    -
    -
    -
    -
    -
    -@endsection diff --git a/Chapter28/onlineStore/resources/views/cart/index.blade.php b/Chapter28/onlineStore/resources/views/cart/index.blade.php deleted file mode 100644 index d9e2cd5..0000000 --- a/Chapter28/onlineStore/resources/views/cart/index.blade.php +++ /dev/null @@ -1,45 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    -@endsection diff --git a/Chapter28/onlineStore/resources/views/cart/purchase.blade.php b/Chapter28/onlineStore/resources/views/cart/purchase.blade.php deleted file mode 100644 index 83b04d3..0000000 --- a/Chapter28/onlineStore/resources/views/cart/purchase.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    -
    - Purchase Completed -
    -
    - -
    -
    -@endsection diff --git a/Chapter28/onlineStore/resources/views/home.blade.php b/Chapter28/onlineStore/resources/views/home.blade.php deleted file mode 100644 index 1f34466..0000000 --- a/Chapter28/onlineStore/resources/views/home.blade.php +++ /dev/null @@ -1,23 +0,0 @@ -@extends('layouts.app') - -@section('content') -
    -
    -
    -
    -
    {{ __('Dashboard') }}
    - -
    - @if (session('status')) - - @endif - - {{ __('You are logged in!') }} -
    -
    -
    -
    -
    -@endsection diff --git a/Chapter28/onlineStore/resources/views/home/about.blade.php b/Chapter28/onlineStore/resources/views/home/about.blade.php deleted file mode 100644 index f79abf3..0000000 --- a/Chapter28/onlineStore/resources/views/home/about.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    -
    -
    -

    {{ $viewData["description"] }}

    -
    -
    -

    {{ $viewData["author"] }}

    -
    -
    -
    -@endsection diff --git a/Chapter28/onlineStore/resources/views/home/index.blade.php b/Chapter28/onlineStore/resources/views/home/index.blade.php deleted file mode 100644 index 1affb20..0000000 --- a/Chapter28/onlineStore/resources/views/home/index.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('content') -
    -
    - -
    -
    - -
    -
    - -
    -
    -@endsection diff --git a/Chapter28/onlineStore/resources/views/layouts/admin.blade.php b/Chapter28/onlineStore/resources/views/layouts/admin.blade.php deleted file mode 100644 index 4aff3f8..0000000 --- a/Chapter28/onlineStore/resources/views/layouts/admin.blade.php +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - @yield('title', 'Admin - Online Store') - - - -
    - - - -
    - - -
    - @yield('content') -
    -
    -
    - - - - - - - - - diff --git a/Chapter28/onlineStore/resources/views/layouts/app.blade.php b/Chapter28/onlineStore/resources/views/layouts/app.blade.php deleted file mode 100644 index f4e1381..0000000 --- a/Chapter28/onlineStore/resources/views/layouts/app.blade.php +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - - - @yield('title', 'Online Store') - - - - - -
    -
    -

    @yield('subtitle', 'A Laravel Online Store')

    -
    -
    - - -
    - @yield('content') -
    - - - - - - - diff --git a/Chapter28/onlineStore/resources/views/myaccount/orders.blade.php b/Chapter28/onlineStore/resources/views/myaccount/orders.blade.php deleted file mode 100644 index b94b4c2..0000000 --- a/Chapter28/onlineStore/resources/views/myaccount/orders.blade.php +++ /dev/null @@ -1,44 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -@forelse ($viewData["orders"] as $order) -
    -
    - Order #{{ $order->getId() }} -
    -
    - Date: {{ $order->getCreatedAt() }}
    - Total: ${{ $order->getTotal() }}
    - - - - - - - - - - - @foreach ($order->getItems() as $item) - - - - - - - @endforeach - -
    Item IDProduct NamePriceQuantity
    {{ $item->getId() }} - - {{ $item->getProduct()->getName() }} - - ${{ $item->getPrice() }}{{ $item->getQuantity() }}
    -
    -
    -@empty - -@endforelse -@endsection diff --git a/Chapter28/onlineStore/resources/views/product/index.blade.php b/Chapter28/onlineStore/resources/views/product/index.blade.php deleted file mode 100644 index 64c3e18..0000000 --- a/Chapter28/onlineStore/resources/views/product/index.blade.php +++ /dev/null @@ -1,18 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    - @foreach ($viewData["products"] as $product) - - @endforeach -
    -@endsection diff --git a/Chapter28/onlineStore/resources/views/product/show.blade.php b/Chapter28/onlineStore/resources/views/product/show.blade.php deleted file mode 100644 index 801ea09..0000000 --- a/Chapter28/onlineStore/resources/views/product/show.blade.php +++ /dev/null @@ -1,36 +0,0 @@ -@extends('layouts.app') -@section('title', $viewData["title"]) -@section('subtitle', $viewData["subtitle"]) -@section('content') -
    -
    -
    - getImage()) }}" class="img-fluid rounded-start"> -
    -
    -
    -
    - {{ $viewData["product"]->getName() }} (${{ $viewData["product"]->getPrice() }}) -
    -

    {{ $viewData["product"]->getDescription() }}

    -

    -

    -
    - @csrf -
    -
    -
    Quantity
    - -
    -
    -
    - -
    -
    -
    -

    -
    -
    -
    -
    -@endsection diff --git a/Chapter28/onlineStore/resources/views/welcome.blade.php b/Chapter28/onlineStore/resources/views/welcome.blade.php deleted file mode 100644 index c587c72..0000000 --- a/Chapter28/onlineStore/resources/views/welcome.blade.php +++ /dev/null @@ -1,7 +0,0 @@ -@extends('layouts.app') -@section('title', 'Home Page - Online Store') -@section('content') -
    - Welcome to the application -
    -@endsection \ No newline at end of file diff --git a/Chapter28/onlineStore/routes/api.php b/Chapter28/onlineStore/routes/api.php deleted file mode 100644 index eb6fa48..0000000 --- a/Chapter28/onlineStore/routes/api.php +++ /dev/null @@ -1,19 +0,0 @@ -get('/user', function (Request $request) { - return $request->user(); -}); diff --git a/Chapter28/onlineStore/routes/channels.php b/Chapter28/onlineStore/routes/channels.php deleted file mode 100644 index 5d451e1..0000000 --- a/Chapter28/onlineStore/routes/channels.php +++ /dev/null @@ -1,18 +0,0 @@ -id === (int) $id; -}); diff --git a/Chapter28/onlineStore/routes/console.php b/Chapter28/onlineStore/routes/console.php deleted file mode 100644 index e05f4c9..0000000 --- a/Chapter28/onlineStore/routes/console.php +++ /dev/null @@ -1,19 +0,0 @@ -comment(Inspiring::quote()); -})->purpose('Display an inspiring quote'); diff --git a/Chapter28/onlineStore/routes/web.php b/Chapter28/onlineStore/routes/web.php deleted file mode 100644 index 5252f46..0000000 --- a/Chapter28/onlineStore/routes/web.php +++ /dev/null @@ -1,39 +0,0 @@ -name("home.index"); -Route::get('/about', 'App\Http\Controllers\HomeController@about')->name("home.about"); -Route::get('/products', 'App\Http\Controllers\ProductController@index')->name("product.index"); -Route::get('/products/{id}', 'App\Http\Controllers\ProductController@show')->name("product.show"); - -Route::get('/cart', 'App\Http\Controllers\CartController@index')->name("cart.index"); -Route::get('/cart/delete', 'App\Http\Controllers\CartController@delete')->name("cart.delete"); -Route::post('/cart/add/{id}', 'App\Http\Controllers\CartController@add')->name("cart.add"); - -Route::middleware('auth')->group(function () { - Route::get('/cart/purchase', 'App\Http\Controllers\CartController@purchase')->name("cart.purchase"); - Route::get('/my-account/orders', 'App\Http\Controllers\MyAccountController@orders')->name("myaccount.orders"); -}); - -Route::middleware('admin')->group(function () { - Route::get('/admin', 'App\Http\Controllers\Admin\AdminHomeController@index')->name("admin.home.index"); - Route::get('/admin/products', 'App\Http\Controllers\Admin\AdminProductController@index')->name("admin.product.index"); - Route::post('/admin/products/store', 'App\Http\Controllers\Admin\AdminProductController@store')->name("admin.product.store"); - Route::delete('/admin/products/{id}/delete', 'App\Http\Controllers\Admin\AdminProductController@delete')->name("admin.product.delete"); - Route::get('/admin/products/{id}/edit', 'App\Http\Controllers\Admin\AdminProductController@edit')->name("admin.product.edit"); - Route::put('/admin/products/{id}/update', 'App\Http\Controllers\Admin\AdminProductController@update')->name("admin.product.update"); -}); - -Auth::routes(); diff --git a/Chapter28/onlineStore/storage/app/.gitignore b/Chapter28/onlineStore/storage/app/.gitignore deleted file mode 100644 index 8f4803c..0000000 --- a/Chapter28/onlineStore/storage/app/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!public/ -!.gitignore diff --git a/Chapter28/onlineStore/storage/app/public/.gitignore b/Chapter28/onlineStore/storage/app/public/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter28/onlineStore/storage/app/public/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter28/onlineStore/storage/framework/.gitignore b/Chapter28/onlineStore/storage/framework/.gitignore deleted file mode 100644 index 05c4471..0000000 --- a/Chapter28/onlineStore/storage/framework/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -compiled.php -config.php -down -events.scanned.php -maintenance.php -routes.php -routes.scanned.php -schedule-* -services.json diff --git a/Chapter28/onlineStore/storage/framework/cache/.gitignore b/Chapter28/onlineStore/storage/framework/cache/.gitignore deleted file mode 100644 index 01e4a6c..0000000 --- a/Chapter28/onlineStore/storage/framework/cache/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!data/ -!.gitignore diff --git a/Chapter28/onlineStore/storage/framework/cache/data/.gitignore b/Chapter28/onlineStore/storage/framework/cache/data/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter28/onlineStore/storage/framework/cache/data/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter28/onlineStore/storage/framework/sessions/.gitignore b/Chapter28/onlineStore/storage/framework/sessions/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter28/onlineStore/storage/framework/sessions/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter28/onlineStore/storage/framework/testing/.gitignore b/Chapter28/onlineStore/storage/framework/testing/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter28/onlineStore/storage/framework/testing/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter28/onlineStore/storage/framework/views/.gitignore b/Chapter28/onlineStore/storage/framework/views/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter28/onlineStore/storage/framework/views/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter28/onlineStore/storage/logs/.gitignore b/Chapter28/onlineStore/storage/logs/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/Chapter28/onlineStore/storage/logs/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/Chapter28/onlineStore/tests/CreatesApplication.php b/Chapter28/onlineStore/tests/CreatesApplication.php deleted file mode 100644 index 547152f..0000000 --- a/Chapter28/onlineStore/tests/CreatesApplication.php +++ /dev/null @@ -1,22 +0,0 @@ -make(Kernel::class)->bootstrap(); - - return $app; - } -} diff --git a/Chapter28/onlineStore/tests/Feature/ExampleTest.php b/Chapter28/onlineStore/tests/Feature/ExampleTest.php deleted file mode 100644 index 78ccc21..0000000 --- a/Chapter28/onlineStore/tests/Feature/ExampleTest.php +++ /dev/null @@ -1,21 +0,0 @@ -get('/'); - - $response->assertStatus(200); - } -} diff --git a/Chapter28/onlineStore/tests/TestCase.php b/Chapter28/onlineStore/tests/TestCase.php deleted file mode 100644 index 2932d4a..0000000 --- a/Chapter28/onlineStore/tests/TestCase.php +++ /dev/null @@ -1,10 +0,0 @@ -assertTrue(true); - } -} diff --git a/Chapter28/onlineStore/webpack.mix.js b/Chapter28/onlineStore/webpack.mix.js deleted file mode 100644 index 1a2a958..0000000 --- a/Chapter28/onlineStore/webpack.mix.js +++ /dev/null @@ -1,16 +0,0 @@ -const mix = require('laravel-mix'); - -/* - |-------------------------------------------------------------------------- - | Mix Asset Management - |-------------------------------------------------------------------------- - | - | Mix provides a clean, fluent API for defining some Webpack build steps - | for your Laravel application. By default, we are compiling the Sass - | file for the application as well as bundling up all the JS files. - | - */ - -mix.js('resources/js/app.js', 'public/js') - .sass('resources/sass/app.scss', 'public/css') - .sourceMaps(); From 66c4a207ff29e6bf863fd56e28908289c3a5ce61 Mon Sep 17 00:00:00 2001 From: Imane Date: Thu, 20 Mar 2025 14:58:26 +0000 Subject: [PATCH 16/41] Update quantity in stock after validation of an achat --- app/Http/Controllers/CartController.php | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/CartController.php b/app/Http/Controllers/CartController.php index 9909dad..fa9e7c3 100644 --- a/app/Http/Controllers/CartController.php +++ b/app/Http/Controllers/CartController.php @@ -5,6 +5,7 @@ use App\Models\Product; use App\Models\Order; use App\Models\Item; + use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; @@ -37,7 +38,7 @@ public function add(Request $request, $id) } // récuperer quantity requested $quantityRequested =$request->input('quantity'); - //verify if quantity requested exists in stock + //verify if quantity requested exists in stock if ($quantityRequested > $product->getQuantityStore()) { return redirect()->route('product.show',['id'=>$id])->with('error','Quantity requested is superior than the quantity in stock'); } @@ -58,8 +59,11 @@ public function delete(Request $request) public function purchase(Request $request) { $productsInSession = $request->session()->get("products"); + // verify if cart is not empty if ($productsInSession) { - $userId = Auth::user()->getId(); + $userId = Auth::user()->getAuthIdentifier(); + + //create new order $order = new Order(); $order->setUserId($userId); $order->setTotal(0); @@ -69,6 +73,21 @@ public function purchase(Request $request) $productsInCart = Product::findMany(array_keys($productsInSession)); foreach ($productsInCart as $product) { $quantity = $productsInSession[$product->getId()]; + + + ////UPDATE QUANTITY IN STOCK AFTER VALIDATION ACHAT + //verify if quantity in stock est suffisante + if ($product->getQuantityStore() < $quantity) { + $order->delete(); + return redirect()->route("cart.index") + ->with("error", "Quantity requested for product".$product->getName()."not available in stock "); + + } + //update quantity in stock for product + $product->setQuantityStore($product->getQuantityStore() - $quantity); + $product->save(); + + //// $item = new Item(); $item->setQuantity($quantity); $item->setPrice($product->getPrice()); @@ -77,6 +96,7 @@ public function purchase(Request $request) $item->save(); $total = $total + ($product->getPrice()*$quantity); } + //mise à jour le total de la commande $order->setTotal($total); $order->save(); From 366df94c8070b24554de461b5b96df404f75567c Mon Sep 17 00:00:00 2001 From: boulganafatimaezzahra Date: Thu, 20 Mar 2025 15:04:07 +0000 Subject: [PATCH 17/41] mettre a jour view product admin and home admin --- .../Controllers/Admin/AdminHomeController.php | 4 + .../Admin/AdminProductController.php | 88 +++++++++--- app/Http/Controllers/Auth/LoginController.php | 14 ++ .../Controllers/Auth/RegisterController.php | 10 ++ app/Http/Middleware/AdminAuthMiddleware.php | 2 +- app/Models/Product.php | 8 +- resources/views/admin/home/index.blade.php | 33 ++++- resources/views/admin/product/edit.blade.php | 49 ++++++- resources/views/admin/product/index.blade.php | 127 ++++++++---------- 9 files changed, 232 insertions(+), 103 deletions(-) diff --git a/app/Http/Controllers/Admin/AdminHomeController.php b/app/Http/Controllers/Admin/AdminHomeController.php index cd78cb3..cf22a43 100644 --- a/app/Http/Controllers/Admin/AdminHomeController.php +++ b/app/Http/Controllers/Admin/AdminHomeController.php @@ -3,6 +3,8 @@ namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; +use App\Models\Categorie; +use App\Models\Product; use Illuminate\Http\Request; class AdminHomeController extends Controller @@ -11,6 +13,8 @@ public function index() { $viewData = []; $viewData["title"] = "Admin Page - Admin - Online Store"; + $viewData["products"] = Product::all(); + $viewData["categories"] = Categorie::all(); return view('admin.home.index')->with("viewData", $viewData); } } diff --git a/app/Http/Controllers/Admin/AdminProductController.php b/app/Http/Controllers/Admin/AdminProductController.php index 2e127f3..3d17142 100644 --- a/app/Http/Controllers/Admin/AdminProductController.php +++ b/app/Http/Controllers/Admin/AdminProductController.php @@ -4,44 +4,70 @@ use App\Models\Product; use App\Http\Controllers\Controller; +use App\Models\Categorie; use App\Models\Fournisseur; use Illuminate\Http\Request; use Illuminate\Support\Facades\Storage; class AdminProductController extends Controller { - public function index() + public function index(Request $request) { $viewData = []; - $viewData["title"] = "Admin Page - Products - Online Store"; - $viewData["products"] = Product::all(); + $viewData["categories"] = Categorie::all(); + $viewData["title"] = "Page Admin - Produits - Boutique en ligne"; + + $fournisseurId = $request->input('fournisseur_id'); + + if ($fournisseurId) { + $viewData["products"] = Product::where('fournisseur_id', $fournisseurId)->get(); + } else { + $viewData["products"] = Product::all(); + } + + $viewData["fournisseurs"] = Fournisseur::all(); return view('admin.product.index')->with("viewData", $viewData); } + + public function store(Request $request) { - Product::validate($request); - + $request->validate([ + 'name' => 'required|string|max:255', + 'price' => 'required|numeric', + 'quantity_store' => 'required|integer|min:1', + 'image' => 'nullable|image|max:2048', + 'description' => 'nullable|string|max:1000', + 'fournisseur_id' => 'nullable|exists:fournisseurs,id', + 'categorie_id' => 'nullable|exists:categories,id|min:1', + ]); + $categorieId = $request->input('categorie_id', 1); $newProduct = new Product(); - $newProduct->setName($request->input('name')); - $newProduct->setDescription($request->input('description')); - $newProduct->setPrice($request->input('price')); - $newProduct->setImage("game.png"); + $newProduct->name = $request->input('name'); + $newProduct->description = $request->input('description'); + $newProduct->price = $request->input('price'); + $newProduct->quantity_store = $request->input('quantity_store'); + $newProduct->categorie_id = $categorieId; + $newProduct->fournisseur_id = $request->input('fournisseur_id'); + $newProduct->image = "game.png"; $newProduct->save(); if ($request->hasFile('image')) { - $imageName = $newProduct->getId().".".$request->file('image')->extension(); + $imageName = $newProduct->id . "." . $request->file('image')->extension(); Storage::disk('public')->put( $imageName, file_get_contents($request->file('image')->getRealPath()) ); - $newProduct->setImage($imageName); + $newProduct->image = $imageName; $newProduct->save(); } - return back(); + return back()->with('success', 'Produit créé avec succès!'); } + + public function delete($id) { $product=Product::findOrFail($id); @@ -57,29 +83,47 @@ public function edit($id) $viewData = []; $viewData["title"] = "Admin Page - Edit Product - Online Store"; $viewData["fournisseurs"]=Fournisseur::all(); + $viewData["categories"] = Categorie::all(); $viewData["product"] = Product::findOrFail($id); return view('admin.product.edit')->with("viewData", $viewData); } public function update(Request $request, $id) { - Product::validate($request); - + $request->validate([ + 'name' => 'required|string|max:255', + 'price' => 'required|numeric', + 'quantity_store' => 'required|integer|min:1', + 'image' => 'nullable|image|max:2048', + 'description' => 'nullable|string|max:1000', + 'fournisseur_id' => 'nullable|exists:fournisseurs,id', + 'categorie_id' => 'nullable|exists:categories,id|min:1', + ]); + $categorieId = $request->input('categorie_id', 1); $product = Product::findOrFail($id); - $product->setName($request->input('name')); - $product->setDescription($request->input('description')); - $product->setPrice($request->input('price')); - $product->fournisseur_id = $request->input('fournisseur_id'); + $product->name = $request->input('name'); + $product->description = $request->input('description'); + $product->price = $request->input('price'); + $product->quantity_store = $request->input('quantity_store'); + $product->categorie_id = $categorieId; + $product->fournisseur_id = $request->input('fournisseur_id'); + if ($request->hasFile('image')) { - $imageName = $product->getId().".".$request->file('image')->extension(); + if ($product->image && Storage::disk('public')->exists($product->image)) { + Storage::disk('public')->delete($product->image); + } + + $imageName = $product->id . "." . $request->file('image')->extension(); Storage::disk('public')->put( $imageName, file_get_contents($request->file('image')->getRealPath()) ); - $product->setImage($imageName); + $product->image = $imageName; } - $product->save(); - return redirect()->route('admin.product.index')->with('success', 'Product updated successfully!'); + + return redirect()->route('admin.home.index')->with('success', 'Produit mis à jour avec succès!'); } + + } diff --git a/app/Http/Controllers/Auth/LoginController.php b/app/Http/Controllers/Auth/LoginController.php index 18a0d08..e63f065 100644 --- a/app/Http/Controllers/Auth/LoginController.php +++ b/app/Http/Controllers/Auth/LoginController.php @@ -5,6 +5,7 @@ use App\Http\Controllers\Controller; use App\Providers\RouteServiceProvider; use Illuminate\Foundation\Auth\AuthenticatesUsers; +use Illuminate\Support\Facades\Auth; class LoginController extends Controller { @@ -37,4 +38,17 @@ public function __construct() { $this->middleware('guest')->except('logout'); } + /** + * Redirige l'utilisateur après la connexion en fonction de son rôle. + * + * @return string + */ + protected function redirectTo() + { + if (Auth::user()->role == 'admin') { + return route('admin.home.index'); // Redirection vers la page Admin + } + + return route('home.index'); // Redirection vers la page client + } } diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php index 87e3a82..590810f 100644 --- a/app/Http/Controllers/Auth/RegisterController.php +++ b/app/Http/Controllers/Auth/RegisterController.php @@ -69,6 +69,16 @@ protected function create(array $data) 'email' => $data['email'], 'password' => Hash::make($data['password']), 'balance' => 5000, + 'role' => 'admin', ]); } + /** + * Rediriger l'utilisateur après son inscription. + * + * @return \Illuminate\Http\RedirectResponse + */ + protected function redirectTo() + { + return route('admin.home.index'); // Rediriger vers la page Admin après l'inscription + } } diff --git a/app/Http/Middleware/AdminAuthMiddleware.php b/app/Http/Middleware/AdminAuthMiddleware.php index 6e5306b..4322f84 100644 --- a/app/Http/Middleware/AdminAuthMiddleware.php +++ b/app/Http/Middleware/AdminAuthMiddleware.php @@ -17,7 +17,7 @@ class AdminAuthMiddleware */ public function handle(Request $request, Closure $next) { - if (Auth::user() && Auth::user()->getRole() == 'admin') { + if (Auth::user() && Auth::user()->role == 'admin') { return $next($request); } else { return redirect()->route('home.index'); diff --git a/app/Models/Product.php b/app/Models/Product.php index 3795efb..23b2cac 100644 --- a/app/Models/Product.php +++ b/app/Models/Product.php @@ -28,10 +28,10 @@ public static function validate($request) "name" => "required|max:255", "description" => "required", "price" => "required|numeric|gt:0", - 'image' => 'image', - "quantity_store"=>"required|numeric|gt:0", - "categorie_id"=>"reduired|exists:categories,id", - "fournisseur_id"=>"required|exists:fournisseurs,id" + 'image' => 'nullable|image', + "quantity_store" => "required|numeric|gt:1", + "categorie_id" => "required|exists:categories,id", + "fournisseur_id" => "required|exists:fournisseurs,id" ]); } diff --git a/resources/views/admin/home/index.blade.php b/resources/views/admin/home/index.blade.php index a2b4868..1160b15 100644 --- a/resources/views/admin/home/index.blade.php +++ b/resources/views/admin/home/index.blade.php @@ -6,7 +6,38 @@ Admin Panel - Home Page
    - Welcome to the Admin Panel, use the sidebar to navigate between the different options. +

    Welcome to the Admin Panel, use the sidebar to navigate between the different options.

    + +
    Products List
    + + + + + + + + + + + + + + + @foreach ($viewData['products'] as $product) + + + + + + + + + + @endforeach + +
    #NamePriceCategoryQuantityFournisseurAction
    {{ $product->id }}{{ $product->name }}{{ $product->price }} ${{ optional($product->categorie)->name ?: 'No category' }}{{ $product->quantity_store }}{{ optional($product->fournisseur)->raison ?: 'No fournisseur' }} + Modifier +
    @endsection diff --git a/resources/views/admin/product/edit.blade.php b/resources/views/admin/product/edit.blade.php index b8e03d8..6f1ae8e 100644 --- a/resources/views/admin/product/edit.blade.php +++ b/resources/views/admin/product/edit.blade.php @@ -14,8 +14,7 @@ @endif -
    + @csrf @method('PUT')
    @@ -23,7 +22,7 @@
    - +
    @@ -31,7 +30,7 @@
    - +
    @@ -51,9 +50,47 @@
    - +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    +
    + + + +
    + +
    + +
    +
    +
    diff --git a/resources/views/admin/product/index.blade.php b/resources/views/admin/product/index.blade.php index 19fbe4b..b22e84e 100644 --- a/resources/views/admin/product/index.blade.php +++ b/resources/views/admin/product/index.blade.php @@ -3,96 +3,85 @@ @section('content')
    - Create Products + Create Product
    @if($errors->any()) -
      - @foreach($errors->all() as $error) -
    • - {{ $error }}
    • - @endforeach -
    +
    +
      + @foreach($errors->all() as $error) +
    • - {{ $error }}
    • + @endforeach +
    +
    @endif
    @csrf
    -
    -
    - -
    - -
    +
    +
    + +
    -
    -
    - -
    - -
    +
    +
    + +
    +
    -
    -
    - -
    - -
    +
    +
    + +
    -
    -   -
    +
    +
    + +
    + +
    +
    - - + +
    + +
    +
    +
    + + +
    +
    + +
    +
    + + +
    +
    +
    +
    - -
    -
    - Manage Products -
    -
    - - - - - - - - - - - @foreach ($viewData["products"] as $product) - - - - - - - @endforeach - -
    IDNameEditDelete
    {{ $product->getId() }}{{ $product->getName() }} - - - - -
    - @csrf - @method('DELETE') - -
    -
    -
    -
    @endsection From c32ec625e07928ec45956edd36ce9fe60537da71 Mon Sep 17 00:00:00 2001 From: boulganafatimaezzahra Date: Thu, 20 Mar 2025 12:09:14 +0000 Subject: [PATCH 18/41] ajout de fournisseur controlleur --- .../Controllers/Admin/AdminProductController.php | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/app/Http/Controllers/Admin/AdminProductController.php b/app/Http/Controllers/Admin/AdminProductController.php index 3d17142..cd68d6f 100644 --- a/app/Http/Controllers/Admin/AdminProductController.php +++ b/app/Http/Controllers/Admin/AdminProductController.php @@ -82,8 +82,6 @@ public function edit($id) { $viewData = []; $viewData["title"] = "Admin Page - Edit Product - Online Store"; - $viewData["fournisseurs"]=Fournisseur::all(); - $viewData["categories"] = Categorie::all(); $viewData["product"] = Product::findOrFail($id); return view('admin.product.edit')->with("viewData", $viewData); } @@ -101,12 +99,9 @@ public function update(Request $request, $id) ]); $categorieId = $request->input('categorie_id', 1); $product = Product::findOrFail($id); - $product->name = $request->input('name'); - $product->description = $request->input('description'); - $product->price = $request->input('price'); - $product->quantity_store = $request->input('quantity_store'); - $product->categorie_id = $categorieId; - $product->fournisseur_id = $request->input('fournisseur_id'); + $product->setName($request->input('name')); + $product->setDescription($request->input('description')); + $product->setPrice($request->input('price')); if ($request->hasFile('image')) { if ($product->image && Storage::disk('public')->exists($product->image)) { @@ -121,8 +116,7 @@ public function update(Request $request, $id) $product->image = $imageName; } $product->save(); - - return redirect()->route('admin.home.index')->with('success', 'Produit mis à jour avec succès!'); + return redirect()->route('admin.product.index'); } From 29586ea167a51e7710a6f5ce728cabeece93a1fc Mon Sep 17 00:00:00 2001 From: zena Date: Thu, 20 Mar 2025 15:29:05 +0000 Subject: [PATCH 19/41] Saved local changes before pulling latest code --- .../Controllers/Admin/AdminController.php | 0 app/Http/Kernel.php | 5 +- composer.json | 16 +- composer.lock | 1689 +++++++---------- config/database.php | 4 +- routes/web.php | 4 + 6 files changed, 739 insertions(+), 979 deletions(-) create mode 100644 app/Http/Controllers/Admin/AdminController.php diff --git a/app/Http/Controllers/Admin/AdminController.php b/app/Http/Controllers/Admin/AdminController.php new file mode 100644 index 0000000..e69de29 diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index c10d1c5..0e498e3 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -16,7 +16,7 @@ class Kernel extends HttpKernel protected $middleware = [ // \App\Http\Middleware\TrustHosts::class, \App\Http\Middleware\TrustProxies::class, - \Fruitcake\Cors\HandleCors::class, + \Illuminate\Http\Middleware\HandleCors::class, \App\Http\Middleware\PreventRequestsDuringMaintenance::class, \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, \App\Http\Middleware\TrimStrings::class, @@ -54,6 +54,7 @@ class Kernel extends HttpKernel * @var array */ protected $routeMiddleware = [ + 'auth' => \App\Http\Middleware\Authenticate::class, 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class, @@ -65,4 +66,4 @@ class Kernel extends HttpKernel 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, 'admin' => \App\Http\Middleware\AdminAuthMiddleware::class, ]; -} +} \ No newline at end of file diff --git a/composer.json b/composer.json index 3e79d31..a9459b5 100644 --- a/composer.json +++ b/composer.json @@ -5,21 +5,21 @@ "keywords": ["framework", "laravel"], "license": "MIT", "require": { - "php": "^8.2", + "php": "^8.0", + "fruitcake/laravel-cors": "^2.0.5", "guzzlehttp/guzzle": "^7.2", - "laravel-zero/foundation": "^11.5", - "laravel/framework": "^11.31", - "laravel/sanctum": "^4.0", + "laravel/framework": "^9.0", + "laravel/sanctum": "^2.14", "laravel/tinker": "^2.7", - "laravel/ui": "^4.0", - "spatie/laravel-permission": "^6.16" + "laravel/ui": "^3.4" }, "require-dev": { "fakerphp/faker": "^1.9.1", "laravel/sail": "^1.0.1", "mockery/mockery": "^1.4.4", + "nunomaduro/collision": "^6.1", "phpunit/phpunit": "^9.5.10", - "spatie/laravel-ignition": "^2.0", + "spatie/laravel-ignition": "^1.0", "squizlabs/php_codesniffer": "^3.6" }, "autoload": { @@ -61,4 +61,4 @@ }, "minimum-stability": "dev", "prefer-stable": true -} \ No newline at end of file +} diff --git a/composer.lock b/composer.lock index c9dd133..d0e9137 100644 --- a/composer.lock +++ b/composer.lock @@ -4,29 +4,85 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "70a914a6b0ca677e112de8abf4335fbb", + "content-hash": "d299b51f0f07ec600b4949240f4664af", "packages": [ + { + "name": "asm89/stack-cors", + "version": "v2.2.0", + "source": { + "type": "git", + "url": "https://github.com/asm89/stack-cors.git", + "reference": "50f57105bad3d97a43ec4a485eb57daf347eafea" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/asm89/stack-cors/zipball/50f57105bad3d97a43ec4a485eb57daf347eafea", + "reference": "50f57105bad3d97a43ec4a485eb57daf347eafea", + "shasum": "" + }, + "require": { + "php": "^7.3|^8.0", + "symfony/http-foundation": "^5.3|^6|^7", + "symfony/http-kernel": "^5.3|^6|^7" + }, + "require-dev": { + "phpunit/phpunit": "^9", + "squizlabs/php_codesniffer": "^3.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2-dev" + } + }, + "autoload": { + "psr-4": { + "Asm89\\Stack\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Alexander", + "email": "iam.asm89@gmail.com" + } + ], + "description": "Cross-origin resource sharing library and stack middleware", + "homepage": "https://github.com/asm89/stack-cors", + "keywords": [ + "cors", + "stack" + ], + "support": { + "issues": "https://github.com/asm89/stack-cors/issues", + "source": "https://github.com/asm89/stack-cors/tree/v2.2.0" + }, + "time": "2023-11-14T13:51:46+00:00" + }, { "name": "brick/math", - "version": "0.12.3", + "version": "0.11.0", "source": { "type": "git", "url": "https://github.com/brick/math.git", - "reference": "866551da34e9a618e64a819ee1e01c20d8a588ba" + "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/866551da34e9a618e64a819ee1e01c20d8a588ba", - "reference": "866551da34e9a618e64a819ee1e01c20d8a588ba", + "url": "https://api.github.com/repos/brick/math/zipball/0ad82ce168c82ba30d1c01ec86116ab52f589478", + "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478", "shasum": "" }, "require": { - "php": "^8.1" + "php": "^8.0" }, "require-dev": { "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^10.1", - "vimeo/psalm": "6.8.8" + "phpunit/phpunit": "^9.0", + "vimeo/psalm": "5.0.0" }, "type": "library", "autoload": { @@ -46,17 +102,12 @@ "arithmetic", "bigdecimal", "bignum", - "bignumber", "brick", - "decimal", - "integer", - "math", - "mathematics", - "rational" + "math" ], "support": { "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.12.3" + "source": "https://github.com/brick/math/tree/0.11.0" }, "funding": [ { @@ -64,7 +115,7 @@ "type": "github" } ], - "time": "2025-02-28T13:11:00+00:00" + "time": "2023-01-15T23:15:59+00:00" }, { "name": "carbonphp/carbon-doctrine-types", @@ -510,6 +561,86 @@ ], "time": "2024-12-27T00:36:43+00:00" }, + { + "name": "fruitcake/laravel-cors", + "version": "v2.2.0", + "source": { + "type": "git", + "url": "https://github.com/fruitcake/laravel-cors.git", + "reference": "783a74f5e3431d7b9805be8afb60fd0a8f743534" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/783a74f5e3431d7b9805be8afb60fd0a8f743534", + "reference": "783a74f5e3431d7b9805be8afb60fd0a8f743534", + "shasum": "" + }, + "require": { + "asm89/stack-cors": "^2.0.1", + "illuminate/contracts": "^6|^7|^8|^9", + "illuminate/support": "^6|^7|^8|^9", + "php": ">=7.2" + }, + "require-dev": { + "laravel/framework": "^6|^7.24|^8", + "orchestra/testbench-dusk": "^4|^5|^6|^7", + "phpunit/phpunit": "^6|^7|^8|^9", + "squizlabs/php_codesniffer": "^3.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" + }, + "laravel": { + "providers": [ + "Fruitcake\\Cors\\CorsServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Fruitcake\\Cors\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fruitcake", + "homepage": "https://fruitcake.nl" + }, + { + "name": "Barry vd. Heuvel", + "email": "barryvdh@gmail.com" + } + ], + "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", + "keywords": [ + "api", + "cors", + "crossdomain", + "laravel" + ], + "support": { + "issues": "https://github.com/fruitcake/laravel-cors/issues", + "source": "https://github.com/fruitcake/laravel-cors/tree/v2.2.0" + }, + "funding": [ + { + "url": "https://fruitcake.nl", + "type": "custom" + }, + { + "url": "https://github.com/barryvdh", + "type": "github" + } + ], + "abandoned": true, + "time": "2022-02-23T14:25:13+00:00" + }, { "name": "fruitcake/php-cors", "version": "v1.3.0", @@ -1054,80 +1185,24 @@ ], "time": "2025-02-03T10:55:03+00:00" }, - { - "name": "laravel-zero/foundation", - "version": "v11.5.0", - "source": { - "type": "git", - "url": "https://github.com/laravel-zero/foundation.git", - "reference": "9d566a50d1399656e837a3b9354745149265e32e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel-zero/foundation/zipball/9d566a50d1399656e837a3b9354745149265e32e", - "reference": "9d566a50d1399656e837a3b9354745149265e32e", - "shasum": "" - }, - "require": { - "php": "^8.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "11.x-dev" - } - }, - "autoload": { - "files": [ - "src/Illuminate/Foundation/helpers.php" - ], - "psr-4": { - "Illuminate\\": "src/Illuminate/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "This is a mirror from illuminate/foundation.", - "keywords": [ - "framework", - "laravel" - ], - "support": { - "source": "https://github.com/laravel-zero/foundation/tree/v11.5.0" - }, - "funding": [ - { - "url": "https://www.paypal.com/paypalme/enunomaduro", - "type": "custom" - }, - { - "url": "https://github.com/nunomaduro", - "type": "github" - } - ], - "time": "2024-04-24T16:56:18+00:00" - }, { "name": "laravel/framework", - "version": "v11.44.2", + "version": "v9.52.20", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "f85216c82cbd38b66d67ebd20ea762cb3751a4b4" + "reference": "2bb6835af73fcf0d1d0bfb84af71cef236cb8609" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/f85216c82cbd38b66d67ebd20ea762cb3751a4b4", - "reference": "f85216c82cbd38b66d67ebd20ea762cb3751a4b4", + "url": "https://api.github.com/repos/laravel/framework/zipball/2bb6835af73fcf0d1d0bfb84af71cef236cb8609", + "reference": "2bb6835af73fcf0d1d0bfb84af71cef236cb8609", "shasum": "" }, "require": { - "brick/math": "^0.9.3|^0.10.2|^0.11|^0.12", - "composer-runtime-api": "^2.2", + "brick/math": "^0.9.3|^0.10.2|^0.11", "doctrine/inflector": "^2.0.5", - "dragonmantank/cron-expression": "^3.4", + "dragonmantank/cron-expression": "^3.3.2", "egulias/email-validator": "^3.2.1|^4.0", "ext-ctype": "*", "ext-filter": "*", @@ -1136,45 +1211,39 @@ "ext-openssl": "*", "ext-session": "*", "ext-tokenizer": "*", - "fruitcake/php-cors": "^1.3", - "guzzlehttp/guzzle": "^7.8.2", + "fruitcake/php-cors": "^1.2", "guzzlehttp/uri-template": "^1.0", - "laravel/prompts": "^0.1.18|^0.2.0|^0.3.0", - "laravel/serializable-closure": "^1.3|^2.0", - "league/commonmark": "^2.6", - "league/flysystem": "^3.25.1", - "league/flysystem-local": "^3.25.1", - "league/uri": "^7.5.1", - "monolog/monolog": "^3.0", - "nesbot/carbon": "^2.72.6|^3.8.4", - "nunomaduro/termwind": "^2.0", - "php": "^8.2", + "laravel/serializable-closure": "^1.2.2", + "league/commonmark": "^2.2.1", + "league/flysystem": "^3.8.0", + "monolog/monolog": "^2.0", + "nesbot/carbon": "^2.62.1", + "nunomaduro/termwind": "^1.13", + "php": "^8.0.2", "psr/container": "^1.1.1|^2.0.1", "psr/log": "^1.0|^2.0|^3.0", "psr/simple-cache": "^1.0|^2.0|^3.0", "ramsey/uuid": "^4.7", - "symfony/console": "^7.0.3", - "symfony/error-handler": "^7.0.3", - "symfony/finder": "^7.0.3", - "symfony/http-foundation": "^7.2.0", - "symfony/http-kernel": "^7.0.3", - "symfony/mailer": "^7.0.3", - "symfony/mime": "^7.0.3", - "symfony/polyfill-php83": "^1.31", - "symfony/process": "^7.0.3", - "symfony/routing": "^7.0.3", - "symfony/uid": "^7.0.3", - "symfony/var-dumper": "^7.0.3", + "symfony/console": "^6.0.9", + "symfony/error-handler": "^6.0", + "symfony/finder": "^6.0", + "symfony/http-foundation": "^6.0", + "symfony/http-kernel": "^6.0", + "symfony/mailer": "^6.0", + "symfony/mime": "^6.0", + "symfony/process": "^6.0", + "symfony/routing": "^6.0", + "symfony/uid": "^6.0", + "symfony/var-dumper": "^6.0", "tijsverkoyen/css-to-inline-styles": "^2.2.5", - "vlucas/phpdotenv": "^5.6.1", - "voku/portable-ascii": "^2.0.2" + "vlucas/phpdotenv": "^5.4.1", + "voku/portable-ascii": "^2.0" }, "conflict": { "tightenco/collect": "<5.5.33" }, "provide": { "psr/container-implementation": "1.1|2.0", - "psr/log-implementation": "1.0|2.0|3.0", "psr/simple-cache-implementation": "1.0|2.0|3.0" }, "replace": { @@ -1183,7 +1252,6 @@ "illuminate/bus": "self.version", "illuminate/cache": "self.version", "illuminate/collections": "self.version", - "illuminate/concurrency": "self.version", "illuminate/conditionable": "self.version", "illuminate/config": "self.version", "illuminate/console": "self.version", @@ -1202,7 +1270,6 @@ "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", @@ -1211,39 +1278,35 @@ "illuminate/testing": "self.version", "illuminate/translation": "self.version", "illuminate/validation": "self.version", - "illuminate/view": "self.version", - "spatie/once": "*" + "illuminate/view": "self.version" }, "require-dev": { "ably/ably-php": "^1.0", - "aws/aws-sdk-php": "^3.322.9", + "aws/aws-sdk-php": "^3.235.5", + "doctrine/dbal": "^2.13.3|^3.1.4", "ext-gmp": "*", - "fakerphp/faker": "^1.24", - "guzzlehttp/promises": "^2.0.3", - "guzzlehttp/psr7": "^2.4", - "laravel/pint": "^1.18", - "league/flysystem-aws-s3-v3": "^3.25.1", - "league/flysystem-ftp": "^3.25.1", - "league/flysystem-path-prefixing": "^3.25.1", - "league/flysystem-read-only": "^3.25.1", - "league/flysystem-sftp-v3": "^3.25.1", - "mockery/mockery": "^1.6.10", - "orchestra/testbench-core": "^9.11.2", - "pda/pheanstalk": "^5.0.6", - "php-http/discovery": "^1.15", - "phpstan/phpstan": "^2.0", - "phpunit/phpunit": "^10.5.35|^11.3.6|^12.0.1", - "predis/predis": "^2.3", - "resend/resend-php": "^0.10.0", - "symfony/cache": "^7.0.3", - "symfony/http-client": "^7.0.3", - "symfony/psr-http-message-bridge": "^7.0.3", - "symfony/translation": "^7.0.3" + "fakerphp/faker": "^1.21", + "guzzlehttp/guzzle": "^7.5", + "league/flysystem-aws-s3-v3": "^3.0", + "league/flysystem-ftp": "^3.0", + "league/flysystem-path-prefixing": "^3.3", + "league/flysystem-read-only": "^3.3", + "league/flysystem-sftp-v3": "^3.0", + "mockery/mockery": "^1.5.1", + "orchestra/testbench-core": "^7.24", + "pda/pheanstalk": "^4.0", + "phpstan/phpdoc-parser": "^1.15", + "phpstan/phpstan": "^1.4.7", + "phpunit/phpunit": "^9.5.8", + "predis/predis": "^1.1.9|^2.0.2", + "symfony/cache": "^6.0", + "symfony/http-client": "^6.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.322.9).", - "brianium/paratest": "Required to run tests in parallel (^7.0|^8.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 (^2.13.3|^3.1.4).", "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.", @@ -1252,45 +1315,41 @@ "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|^6.0).", + "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.25.1).", - "league/flysystem-ftp": "Required to use the Flysystem FTP driver (^3.25.1).", - "league/flysystem-path-prefixing": "Required to use the scoped driver (^3.25.1).", - "league/flysystem-read-only": "Required to use read-only disks (^3.25.1)", - "league/flysystem-sftp-v3": "Required to use the Flysystem SFTP driver (^3.25.1).", - "mockery/mockery": "Required to use mocking (^1.6).", - "pda/pheanstalk": "Required to use the beanstalk queue driver (^5.0).", - "php-http/discovery": "Required to use PSR-7 bridging features (^1.15).", - "phpunit/phpunit": "Required to use assertions and run tests (^10.5.35|^11.3.6|^12.0.1).", - "predis/predis": "Required to use the predis connector (^2.3).", + "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).", + "predis/predis": "Required to use the predis connector (^1.1.9|^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).", - "resend/resend-php": "Required to enable support for the Resend mail transport (^0.10.0).", - "symfony/cache": "Required to PSR-6 cache bridge (^7.0).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^7.0).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^7.0).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^7.0).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^7.0).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^7.0)." + "symfony/cache": "Required to PSR-6 cache bridge (^6.0).", + "symfony/filesystem": "Required to enable support for relative symbolic links (^6.0).", + "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.0).", + "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.0).", + "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.0).", + "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." }, "type": "library", "extra": { "branch-alias": { - "dev-master": "11.x-dev" + "dev-master": "9.x-dev" } }, "autoload": { "files": [ - "src/Illuminate/Collections/functions.php", "src/Illuminate/Collections/helpers.php", "src/Illuminate/Events/functions.php", - "src/Illuminate/Filesystem/functions.php", "src/Illuminate/Foundation/helpers.php", - "src/Illuminate/Log/functions.php", - "src/Illuminate/Support/functions.php", "src/Illuminate/Support/helpers.php" ], "psr-4": { @@ -1322,95 +1381,34 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2025-03-12T14:34:30+00:00" - }, - { - "name": "laravel/prompts", - "version": "v0.3.5", - "source": { - "type": "git", - "url": "https://github.com/laravel/prompts.git", - "reference": "57b8f7efe40333cdb925700891c7d7465325d3b1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/prompts/zipball/57b8f7efe40333cdb925700891c7d7465325d3b1", - "reference": "57b8f7efe40333cdb925700891c7d7465325d3b1", - "shasum": "" - }, - "require": { - "composer-runtime-api": "^2.2", - "ext-mbstring": "*", - "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": { - "illuminate/collections": "^10.0|^11.0|^12.0", - "mockery/mockery": "^1.5", - "pestphp/pest": "^2.3|^3.4", - "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.3.x-dev" - } - }, - "autoload": { - "files": [ - "src/helpers.php" - ], - "psr-4": { - "Laravel\\Prompts\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Add beautiful and user-friendly forms to your command-line applications.", - "support": { - "issues": "https://github.com/laravel/prompts/issues", - "source": "https://github.com/laravel/prompts/tree/v0.3.5" - }, - "time": "2025-02-11T13:34:40+00:00" + "time": "2025-01-31T10:09:38+00:00" }, { "name": "laravel/sanctum", - "version": "v4.0.8", + "version": "v2.15.1", "source": { "type": "git", "url": "https://github.com/laravel/sanctum.git", - "reference": "ec1dd9ddb2ab370f79dfe724a101856e0963f43c" + "reference": "31fbe6f85aee080c4dc2f9b03dc6dd5d0ee72473" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/ec1dd9ddb2ab370f79dfe724a101856e0963f43c", - "reference": "ec1dd9ddb2ab370f79dfe724a101856e0963f43c", + "url": "https://api.github.com/repos/laravel/sanctum/zipball/31fbe6f85aee080c4dc2f9b03dc6dd5d0ee72473", + "reference": "31fbe6f85aee080c4dc2f9b03dc6dd5d0ee72473", "shasum": "" }, "require": { "ext-json": "*", - "illuminate/console": "^11.0|^12.0", - "illuminate/contracts": "^11.0|^12.0", - "illuminate/database": "^11.0|^12.0", - "illuminate/support": "^11.0|^12.0", - "php": "^8.2", - "symfony/console": "^7.0" + "illuminate/console": "^6.9|^7.0|^8.0|^9.0", + "illuminate/contracts": "^6.9|^7.0|^8.0|^9.0", + "illuminate/database": "^6.9|^7.0|^8.0|^9.0", + "illuminate/support": "^6.9|^7.0|^8.0|^9.0", + "php": "^7.2|^8.0" }, "require-dev": { - "mockery/mockery": "^1.6", - "orchestra/testbench": "^9.0|^10.0", - "phpstan/phpstan": "^1.10", - "phpunit/phpunit": "^11.3" + "mockery/mockery": "^1.0", + "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0", + "phpunit/phpunit": "^8.0|^9.3" }, "type": "library", "extra": { @@ -1418,6 +1416,9 @@ "providers": [ "Laravel\\Sanctum\\SanctumServiceProvider" ] + }, + "branch-alias": { + "dev-master": "2.x-dev" } }, "autoload": { @@ -1445,36 +1446,36 @@ "issues": "https://github.com/laravel/sanctum/issues", "source": "https://github.com/laravel/sanctum" }, - "time": "2025-01-26T19:34:36+00:00" + "time": "2022-04-08T13:39:49+00:00" }, { "name": "laravel/serializable-closure", - "version": "v2.0.3", + "version": "v1.3.7", "source": { "type": "git", "url": "https://github.com/laravel/serializable-closure.git", - "reference": "f379c13663245f7aa4512a7869f62eb14095f23f" + "reference": "4f48ade902b94323ca3be7646db16209ec76be3d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/f379c13663245f7aa4512a7869f62eb14095f23f", - "reference": "f379c13663245f7aa4512a7869f62eb14095f23f", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/4f48ade902b94323ca3be7646db16209ec76be3d", + "reference": "4f48ade902b94323ca3be7646db16209ec76be3d", "shasum": "" }, "require": { - "php": "^8.1" + "php": "^7.3|^8.0" }, "require-dev": { - "illuminate/support": "^10.0|^11.0|^12.0", - "nesbot/carbon": "^2.67|^3.0", - "pestphp/pest": "^2.36|^3.0", - "phpstan/phpstan": "^2.0", - "symfony/var-dumper": "^6.2.0|^7.0.0" + "illuminate/support": "^8.0|^9.0|^10.0|^11.0", + "nesbot/carbon": "^2.61|^3.0", + "pestphp/pest": "^1.21.3", + "phpstan/phpstan": "^1.8.2", + "symfony/var-dumper": "^5.4.11|^6.2.0|^7.0.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.x-dev" + "dev-master": "1.x-dev" } }, "autoload": { @@ -1506,7 +1507,7 @@ "issues": "https://github.com/laravel/serializable-closure/issues", "source": "https://github.com/laravel/serializable-closure" }, - "time": "2025-02-11T15:03:05+00:00" + "time": "2024-11-14T18:34:49+00:00" }, { "name": "laravel/tinker", @@ -1576,29 +1577,27 @@ }, { "name": "laravel/ui", - "version": "v4.6.1", + "version": "v3.4.6", "source": { "type": "git", "url": "https://github.com/laravel/ui.git", - "reference": "7d6ffa38d79f19c9b3e70a751a9af845e8f41d88" + "reference": "65ec5c03f7fee2c8ecae785795b829a15be48c2c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/ui/zipball/7d6ffa38d79f19c9b3e70a751a9af845e8f41d88", - "reference": "7d6ffa38d79f19c9b3e70a751a9af845e8f41d88", + "url": "https://api.github.com/repos/laravel/ui/zipball/65ec5c03f7fee2c8ecae785795b829a15be48c2c", + "reference": "65ec5c03f7fee2c8ecae785795b829a15be48c2c", "shasum": "" }, "require": { - "illuminate/console": "^9.21|^10.0|^11.0|^12.0", - "illuminate/filesystem": "^9.21|^10.0|^11.0|^12.0", - "illuminate/support": "^9.21|^10.0|^11.0|^12.0", - "illuminate/validation": "^9.21|^10.0|^11.0|^12.0", - "php": "^8.0", - "symfony/console": "^6.0|^7.0" + "illuminate/console": "^8.42|^9.0", + "illuminate/filesystem": "^8.42|^9.0", + "illuminate/support": "^8.82|^9.0", + "illuminate/validation": "^8.42|^9.0", + "php": "^7.3|^8.0" }, "require-dev": { - "orchestra/testbench": "^7.35|^8.15|^9.0|^10.0", - "phpunit/phpunit": "^9.3|^10.4|^11.5" + "orchestra/testbench": "^6.23|^7.0" }, "type": "library", "extra": { @@ -1608,7 +1607,7 @@ ] }, "branch-alias": { - "dev-master": "4.x-dev" + "dev-master": "3.x-dev" } }, "autoload": { @@ -1633,9 +1632,9 @@ "ui" ], "support": { - "source": "https://github.com/laravel/ui/tree/v4.6.1" + "source": "https://github.com/laravel/ui/tree/v3.4.6" }, - "time": "2025-01-28T15:15:29+00:00" + "time": "2022-05-20T13:38:08+00:00" }, { "name": "league/commonmark", @@ -2014,219 +2013,44 @@ ], "time": "2024-09-21T08:32:55+00:00" }, - { - "name": "league/uri", - "version": "7.5.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/uri.git", - "reference": "81fb5145d2644324614cc532b28efd0215bda430" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/uri/zipball/81fb5145d2644324614cc532b28efd0215bda430", - "reference": "81fb5145d2644324614cc532b28efd0215bda430", - "shasum": "" - }, - "require": { - "league/uri-interfaces": "^7.5", - "php": "^8.1" - }, - "conflict": { - "league/uri-schemes": "^1.0" - }, - "suggest": { - "ext-bcmath": "to improve IPV4 host parsing", - "ext-fileinfo": "to create Data URI from file contennts", - "ext-gmp": "to improve IPV4 host parsing", - "ext-intl": "to handle IDN host with the best performance", - "jeremykendall/php-domain-parser": "to resolve Public Suffix and Top Level Domain", - "league/uri-components": "Needed to easily manipulate URI objects components", - "php-64bit": "to improve IPV4 host parsing", - "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "7.x-dev" - } - }, - "autoload": { - "psr-4": { - "League\\Uri\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ignace Nyamagana Butera", - "email": "nyamsprod@gmail.com", - "homepage": "https://nyamsprod.com" - } - ], - "description": "URI manipulation library", - "homepage": "https://uri.thephpleague.com", - "keywords": [ - "data-uri", - "file-uri", - "ftp", - "hostname", - "http", - "https", - "middleware", - "parse_str", - "parse_url", - "psr-7", - "query-string", - "querystring", - "rfc3986", - "rfc3987", - "rfc6570", - "uri", - "uri-template", - "url", - "ws" - ], - "support": { - "docs": "https://uri.thephpleague.com", - "forum": "https://thephpleague.slack.com", - "issues": "https://github.com/thephpleague/uri-src/issues", - "source": "https://github.com/thephpleague/uri/tree/7.5.1" - }, - "funding": [ - { - "url": "https://github.com/sponsors/nyamsprod", - "type": "github" - } - ], - "time": "2024-12-08T08:40:02+00:00" - }, - { - "name": "league/uri-interfaces", - "version": "7.5.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/uri-interfaces.git", - "reference": "08cfc6c4f3d811584fb09c37e2849e6a7f9b0742" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/08cfc6c4f3d811584fb09c37e2849e6a7f9b0742", - "reference": "08cfc6c4f3d811584fb09c37e2849e6a7f9b0742", - "shasum": "" - }, - "require": { - "ext-filter": "*", - "php": "^8.1", - "psr/http-factory": "^1", - "psr/http-message": "^1.1 || ^2.0" - }, - "suggest": { - "ext-bcmath": "to improve IPV4 host parsing", - "ext-gmp": "to improve IPV4 host parsing", - "ext-intl": "to handle IDN host with the best performance", - "php-64bit": "to improve IPV4 host parsing", - "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "7.x-dev" - } - }, - "autoload": { - "psr-4": { - "League\\Uri\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ignace Nyamagana Butera", - "email": "nyamsprod@gmail.com", - "homepage": "https://nyamsprod.com" - } - ], - "description": "Common interfaces and classes for URI representation and interaction", - "homepage": "https://uri.thephpleague.com", - "keywords": [ - "data-uri", - "file-uri", - "ftp", - "hostname", - "http", - "https", - "parse_str", - "parse_url", - "psr-7", - "query-string", - "querystring", - "rfc3986", - "rfc3987", - "rfc6570", - "uri", - "url", - "ws" - ], - "support": { - "docs": "https://uri.thephpleague.com", - "forum": "https://thephpleague.slack.com", - "issues": "https://github.com/thephpleague/uri-src/issues", - "source": "https://github.com/thephpleague/uri-interfaces/tree/7.5.0" - }, - "funding": [ - { - "url": "https://github.com/sponsors/nyamsprod", - "type": "github" - } - ], - "time": "2024-12-08T08:18:47+00:00" - }, { "name": "monolog/monolog", - "version": "3.8.1", + "version": "2.10.0", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "aef6ee73a77a66e404dd6540934a9ef1b3c855b4" + "reference": "5cf826f2991858b54d5c3809bee745560a1042a7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/aef6ee73a77a66e404dd6540934a9ef1b3c855b4", - "reference": "aef6ee73a77a66e404dd6540934a9ef1b3c855b4", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/5cf826f2991858b54d5c3809bee745560a1042a7", + "reference": "5cf826f2991858b54d5c3809bee745560a1042a7", "shasum": "" }, "require": { - "php": ">=8.1", - "psr/log": "^2.0 || ^3.0" + "php": ">=7.2", + "psr/log": "^1.0.1 || ^2.0 || ^3.0" }, "provide": { - "psr/log-implementation": "3.0.0" + "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" }, "require-dev": { - "aws/aws-sdk-php": "^3.0", + "aws/aws-sdk-php": "^2.4.9 || ^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", + "graylog2/gelf-php": "^1.4.2 || ^2@dev", + "guzzlehttp/guzzle": "^7.4", "guzzlehttp/psr7": "^2.2", "mongodb/mongodb": "^1.8", "php-amqplib/php-amqplib": "~2.4 || ^3", - "php-console/php-console": "^3.1.8", - "phpstan/phpstan": "^2", - "phpstan/phpstan-deprecation-rules": "^2", - "phpstan/phpstan-strict-rules": "^2", - "phpunit/phpunit": "^10.5.17 || ^11.0.7", - "predis/predis": "^1.1 || ^2", - "rollbar/rollbar": "^4.0", - "ruflin/elastica": "^7 || ^8", + "phpspec/prophecy": "^1.15", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^8.5.38 || ^9.6.19", + "predis/predis": "^1.1 || ^2.0", + "rollbar/rollbar": "^1.3 || ^2 || ^3", + "ruflin/elastica": "^7", + "swiftmailer/swiftmailer": "^5.3|^6.0", "symfony/mailer": "^5.4 || ^6", "symfony/mime": "^5.4 || ^6" }, @@ -2249,7 +2073,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.x-dev" + "dev-main": "2.x-dev" } }, "autoload": { @@ -2277,7 +2101,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/3.8.1" + "source": "https://github.com/Seldaek/monolog/tree/2.10.0" }, "funding": [ { @@ -2289,45 +2113,46 @@ "type": "tidelift" } ], - "time": "2024-12-05T17:15:07+00:00" + "time": "2024-11-12T12:43:37+00:00" }, { "name": "nesbot/carbon", - "version": "3.8.6", + "version": "2.73.0", "source": { "type": "git", "url": "https://github.com/CarbonPHP/carbon.git", - "reference": "ff2f20cf83bd4d503720632ce8a426dc747bf7fd" + "reference": "9228ce90e1035ff2f0db84b40ec2e023ed802075" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/ff2f20cf83bd4d503720632ce8a426dc747bf7fd", - "reference": "ff2f20cf83bd4d503720632ce8a426dc747bf7fd", + "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/9228ce90e1035ff2f0db84b40ec2e023ed802075", + "reference": "9228ce90e1035ff2f0db84b40ec2e023ed802075", "shasum": "" }, "require": { - "carbonphp/carbon-doctrine-types": "<100.0", + "carbonphp/carbon-doctrine-types": "*", "ext-json": "*", - "php": "^8.1", + "php": "^7.1.8 || ^8.0", "psr/clock": "^1.0", - "symfony/clock": "^6.3 || ^7.0", "symfony/polyfill-mbstring": "^1.0", - "symfony/translation": "^4.4.18 || ^5.2.1|| ^6.0 || ^7.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": "^3.6.3 || ^4.0", - "doctrine/orm": "^2.15.2 || ^3.0", - "friendsofphp/php-cs-fixer": "^3.57.2", - "kylekatarnls/multi-tester": "^2.5.3", - "ondrejmirtes/better-reflection": "^6.25.0.4", - "phpmd/phpmd": "^2.15.0", - "phpstan/extension-installer": "^1.3.1", - "phpstan/phpstan": "^1.11.2", - "phpunit/phpunit": "^10.5.20", - "squizlabs/php_codesniffer": "^3.9.0" + "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": "<6", + "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" @@ -2378,8 +2203,8 @@ ], "support": { "docs": "https://carbon.nesbot.com/docs", - "issues": "https://github.com/CarbonPHP/carbon/issues", - "source": "https://github.com/CarbonPHP/carbon" + "issues": "https://github.com/briannesbitt/Carbon/issues", + "source": "https://github.com/briannesbitt/Carbon" }, "funding": [ { @@ -2395,7 +2220,7 @@ "type": "tidelift" } ], - "time": "2025-02-20T17:33:38+00:00" + "time": "2025-01-08T20:10:23+00:00" }, { "name": "nette/schema", @@ -2605,31 +2430,32 @@ }, { "name": "nunomaduro/termwind", - "version": "v2.3.0", + "version": "v1.17.0", "source": { "type": "git", "url": "https://github.com/nunomaduro/termwind.git", - "reference": "52915afe6a1044e8b9cee1bcff836fb63acf9cda" + "reference": "5369ef84d8142c1d87e4ec278711d4ece3cbf301" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/52915afe6a1044e8b9cee1bcff836fb63acf9cda", - "reference": "52915afe6a1044e8b9cee1bcff836fb63acf9cda", + "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/5369ef84d8142c1d87e4ec278711d4ece3cbf301", + "reference": "5369ef84d8142c1d87e4ec278711d4ece3cbf301", "shasum": "" }, "require": { "ext-mbstring": "*", - "php": "^8.2", - "symfony/console": "^7.1.8" + "php": "^8.1", + "symfony/console": "^6.4.15" }, "require-dev": { - "illuminate/console": "^11.33.2", + "illuminate/console": "^10.48.24", + "illuminate/support": "^10.48.24", "laravel/pint": "^1.18.2", - "mockery/mockery": "^1.6.12", "pestphp/pest": "^2.36.0", + "pestphp/pest-plugin-mock": "2.0.0", "phpstan/phpstan": "^1.12.11", "phpstan/phpstan-strict-rules": "^1.6.1", - "symfony/var-dumper": "^7.1.8", + "symfony/var-dumper": "^6.4.15", "thecodingmachine/phpstan-strict-rules": "^1.0.0" }, "type": "library", @@ -2638,9 +2464,6 @@ "providers": [ "Termwind\\Laravel\\TermwindServiceProvider" ] - }, - "branch-alias": { - "dev-2.x": "2.x-dev" } }, "autoload": { @@ -2672,7 +2495,7 @@ ], "support": { "issues": "https://github.com/nunomaduro/termwind/issues", - "source": "https://github.com/nunomaduro/termwind/tree/v2.3.0" + "source": "https://github.com/nunomaduro/termwind/tree/v1.17.0" }, "funding": [ { @@ -2688,7 +2511,7 @@ "type": "github" } ], - "time": "2024-11-21T10:39:51+00:00" + "time": "2024-11-21T10:36:35+00:00" }, { "name": "phpoption/phpoption", @@ -3179,16 +3002,16 @@ }, { "name": "psy/psysh", - "version": "v0.12.8", + "version": "v0.12.7", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "85057ceedee50c49d4f6ecaff73ee96adb3b3625" + "reference": "d73fa3c74918ef4522bb8a3bf9cab39161c4b57c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/85057ceedee50c49d4f6ecaff73ee96adb3b3625", - "reference": "85057ceedee50c49d4f6ecaff73ee96adb3b3625", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/d73fa3c74918ef4522bb8a3bf9cab39161c4b57c", + "reference": "d73fa3c74918ef4522bb8a3bf9cab39161c4b57c", "shasum": "" }, "require": { @@ -3252,9 +3075,9 @@ ], "support": { "issues": "https://github.com/bobthecow/psysh/issues", - "source": "https://github.com/bobthecow/psysh/tree/v0.12.8" + "source": "https://github.com/bobthecow/psysh/tree/v0.12.7" }, - "time": "2025-03-16T03:05:19+00:00" + "time": "2024-12-10T01:58:33+00:00" }, { "name": "ralouphie/getallheaders", @@ -3436,237 +3259,81 @@ }, "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.6" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2024-04-27T21:32:50+00:00" - }, - { - "name": "spatie/laravel-permission", - "version": "6.16.0", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-permission.git", - "reference": "4fa03c06509e037a4d42c131d0f181e3e4bbd483" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-permission/zipball/4fa03c06509e037a4d42c131d0f181e3e4bbd483", - "reference": "4fa03c06509e037a4d42c131d0f181e3e4bbd483", - "shasum": "" - }, - "require": { - "illuminate/auth": "^8.12|^9.0|^10.0|^11.0|^12.0", - "illuminate/container": "^8.12|^9.0|^10.0|^11.0|^12.0", - "illuminate/contracts": "^8.12|^9.0|^10.0|^11.0|^12.0", - "illuminate/database": "^8.12|^9.0|^10.0|^11.0|^12.0", - "php": "^8.0" - }, - "require-dev": { - "laravel/passport": "^11.0|^12.0", - "laravel/pint": "^1.0", - "orchestra/testbench": "^6.23|^7.0|^8.0|^9.0|^10.0", - "phpunit/phpunit": "^9.4|^10.1|^11.5" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Spatie\\Permission\\PermissionServiceProvider" - ] - }, - "branch-alias": { - "dev-main": "6.x-dev", - "dev-master": "6.x-dev" - } - }, - "autoload": { - "files": [ - "src/helpers.php" - ], - "psr-4": { - "Spatie\\Permission\\": "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": "Permission handling for Laravel 8.0 and up", - "homepage": "https://github.com/spatie/laravel-permission", - "keywords": [ - "acl", - "laravel", - "permission", - "permissions", - "rbac", - "roles", - "security", - "spatie" - ], - "support": { - "issues": "https://github.com/spatie/laravel-permission/issues", - "source": "https://github.com/spatie/laravel-permission/tree/6.16.0" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2025-02-28T20:29:57+00:00" - }, - { - "name": "symfony/clock", - "version": "v7.2.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/clock.git", - "reference": "b81435fbd6648ea425d1ee96a2d8e68f4ceacd24" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/clock/zipball/b81435fbd6648ea425d1ee96a2d8e68f4ceacd24", - "reference": "b81435fbd6648ea425d1ee96a2d8e68f4ceacd24", - "shasum": "" - }, - "require": { - "php": ">=8.2", - "psr/clock": "^1.0", - "symfony/polyfill-php83": "^1.28" - }, - "provide": { - "psr/clock-implementation": "1.0" - }, - "type": "library", - "autoload": { - "files": [ - "Resources/now.php" - ], - "psr-4": { - "Symfony\\Component\\Clock\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "src/functions.php" + ], + "psr-4": { + "Ramsey\\Uuid\\": "src/" } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" ], - "description": "Decouples applications from the system clock", - "homepage": "https://symfony.com", + "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", "keywords": [ - "clock", - "psr20", - "time" + "guid", + "identifier", + "uuid" ], "support": { - "source": "https://github.com/symfony/clock/tree/v7.2.0" + "issues": "https://github.com/ramsey/uuid/issues", + "source": "https://github.com/ramsey/uuid/tree/4.7.6" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/ramsey", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", "type": "tidelift" } ], - "time": "2024-09-25T14:21:43+00:00" + "time": "2024-04-27T21:32:50+00:00" }, { "name": "symfony/console", - "version": "v7.2.1", + "version": "v6.4.17", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "fefcc18c0f5d0efe3ab3152f15857298868dc2c3" + "reference": "799445db3f15768ecc382ac5699e6da0520a0a04" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/fefcc18c0f5d0efe3ab3152f15857298868dc2c3", - "reference": "fefcc18c0f5d0efe3ab3152f15857298868dc2c3", + "url": "https://api.github.com/repos/symfony/console/zipball/799445db3f15768ecc382ac5699e6da0520a0a04", + "reference": "799445db3f15768ecc382ac5699e6da0520a0a04", "shasum": "" }, "require": { - "php": ">=8.2", + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", "symfony/service-contracts": "^2.5|^3", - "symfony/string": "^6.4|^7.0" + "symfony/string": "^5.4|^6.0|^7.0" }, "conflict": { - "symfony/dependency-injection": "<6.4", - "symfony/dotenv": "<6.4", - "symfony/event-dispatcher": "<6.4", - "symfony/lock": "<6.4", - "symfony/process": "<6.4" + "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": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/event-dispatcher": "^6.4|^7.0", + "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": "^6.4|^7.0", - "symfony/messenger": "^6.4|^7.0", - "symfony/process": "^6.4|^7.0", - "symfony/stopwatch": "^6.4|^7.0", - "symfony/var-dumper": "^6.4|^7.0" + "symfony/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": { @@ -3700,7 +3367,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.2.1" + "source": "https://github.com/symfony/console/tree/v6.4.17" }, "funding": [ { @@ -3716,7 +3383,7 @@ "type": "tidelift" } ], - "time": "2024-12-11T03:49:26+00:00" + "time": "2024-12-07T12:07:30+00:00" }, { "name": "symfony/css-selector", @@ -3852,22 +3519,22 @@ }, { "name": "symfony/error-handler", - "version": "v7.2.4", + "version": "v6.4.19", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "aabf79938aa795350c07ce6464dd1985607d95d5" + "reference": "3d4e55cd2b8f1979a65eba9ab749d6466c316f71" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/aabf79938aa795350c07ce6464dd1985607d95d5", - "reference": "aabf79938aa795350c07ce6464dd1985607d95d5", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/3d4e55cd2b8f1979a65eba9ab749d6466c316f71", + "reference": "3d4e55cd2b8f1979a65eba9ab749d6466c316f71", "shasum": "" }, "require": { - "php": ">=8.2", + "php": ">=8.1", "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^6.4|^7.0" + "symfony/var-dumper": "^5.4|^6.0|^7.0" }, "conflict": { "symfony/deprecation-contracts": "<2.5", @@ -3876,7 +3543,7 @@ "require-dev": { "symfony/deprecation-contracts": "^2.5|^3", "symfony/http-kernel": "^6.4|^7.0", - "symfony/serializer": "^6.4|^7.0" + "symfony/serializer": "^5.4|^6.0|^7.0" }, "bin": [ "Resources/bin/patch-type-declarations" @@ -3907,7 +3574,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v7.2.4" + "source": "https://github.com/symfony/error-handler/tree/v6.4.19" }, "funding": [ { @@ -3923,7 +3590,7 @@ "type": "tidelift" } ], - "time": "2025-02-02T20:27:07+00:00" + "time": "2025-02-02T20:16:33+00:00" }, { "name": "symfony/event-dispatcher", @@ -4083,23 +3750,23 @@ }, { "name": "symfony/finder", - "version": "v7.2.2", + "version": "v6.4.17", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "87a71856f2f56e4100373e92529eed3171695cfb" + "reference": "1d0e8266248c5d9ab6a87e3789e6dc482af3c9c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/87a71856f2f56e4100373e92529eed3171695cfb", - "reference": "87a71856f2f56e4100373e92529eed3171695cfb", + "url": "https://api.github.com/repos/symfony/finder/zipball/1d0e8266248c5d9ab6a87e3789e6dc482af3c9c7", + "reference": "1d0e8266248c5d9ab6a87e3789e6dc482af3c9c7", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=8.1" }, "require-dev": { - "symfony/filesystem": "^6.4|^7.0" + "symfony/filesystem": "^6.0|^7.0" }, "type": "library", "autoload": { @@ -4127,7 +3794,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v7.2.2" + "source": "https://github.com/symfony/finder/tree/v6.4.17" }, "funding": [ { @@ -4143,41 +3810,40 @@ "type": "tidelift" } ], - "time": "2024-12-30T19:00:17+00:00" + "time": "2024-12-29T13:51:37+00:00" }, { "name": "symfony/http-foundation", - "version": "v7.2.3", + "version": "v6.4.18", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "ee1b504b8926198be89d05e5b6fc4c3810c090f0" + "reference": "d0492d6217e5ab48f51fca76f64cf8e78919d0db" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ee1b504b8926198be89d05e5b6fc4c3810c090f0", - "reference": "ee1b504b8926198be89d05e5b6fc4c3810c090f0", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/d0492d6217e5ab48f51fca76f64cf8e78919d0db", + "reference": "d0492d6217e5ab48f51fca76f64cf8e78919d0db", "shasum": "" }, "require": { - "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3.0", + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.1", "symfony/polyfill-php83": "^1.27" }, "conflict": { - "doctrine/dbal": "<3.6", "symfony/cache": "<6.4.12|>=7.0,<7.1.5" }, "require-dev": { - "doctrine/dbal": "^3.6|^4", + "doctrine/dbal": "^2.13.1|^3|^4", "predis/predis": "^1.1|^2.0", "symfony/cache": "^6.4.12|^7.1.5", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/mime": "^6.4|^7.0", - "symfony/rate-limiter": "^6.4|^7.0" + "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": { @@ -4205,7 +3871,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v7.2.3" + "source": "https://github.com/symfony/http-foundation/tree/v6.4.18" }, "funding": [ { @@ -4221,77 +3887,77 @@ "type": "tidelift" } ], - "time": "2025-01-17T10:56:55+00:00" + "time": "2025-01-09T15:48:56+00:00" }, { "name": "symfony/http-kernel", - "version": "v7.2.4", + "version": "v6.4.19", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "9f1103734c5789798fefb90e91de4586039003ed" + "reference": "88f2c9f7feff86bb7b9105c5151bc2c1404cd64c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9f1103734c5789798fefb90e91de4586039003ed", - "reference": "9f1103734c5789798fefb90e91de4586039003ed", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/88f2c9f7feff86bb7b9105c5151bc2c1404cd64c", + "reference": "88f2c9f7feff86bb7b9105c5151bc2c1404cd64c", "shasum": "" }, "require": { - "php": ">=8.2", + "php": ">=8.1", "psr/log": "^1|^2|^3", "symfony/deprecation-contracts": "^2.5|^3", "symfony/error-handler": "^6.4|^7.0", - "symfony/event-dispatcher": "^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": "<6.4", - "symfony/cache": "<6.4", - "symfony/config": "<6.4", - "symfony/console": "<6.4", + "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": "<6.4", - "symfony/form": "<6.4", - "symfony/http-client": "<6.4", + "symfony/doctrine-bridge": "<5.4", + "symfony/form": "<5.4", + "symfony/http-client": "<5.4", "symfony/http-client-contracts": "<2.5", - "symfony/mailer": "<6.4", - "symfony/messenger": "<6.4", - "symfony/translation": "<6.4", + "symfony/mailer": "<5.4", + "symfony/messenger": "<5.4", + "symfony/translation": "<5.4", "symfony/translation-contracts": "<2.5", - "symfony/twig-bridge": "<6.4", + "symfony/twig-bridge": "<5.4", "symfony/validator": "<6.4", - "symfony/var-dumper": "<6.4", - "twig/twig": "<3.12" + "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": "^6.4|^7.0", - "symfony/clock": "^6.4|^7.0", - "symfony/config": "^6.4|^7.0", - "symfony/console": "^6.4|^7.0", - "symfony/css-selector": "^6.4|^7.0", + "symfony/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": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/finder": "^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": "^6.4|^7.0", - "symfony/property-access": "^7.1", - "symfony/routing": "^6.4|^7.0", - "symfony/serializer": "^7.1", - "symfony/stopwatch": "^6.4|^7.0", - "symfony/translation": "^6.4|^7.0", + "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.4.4|^7.0.4", + "symfony/stopwatch": "^5.4|^6.0|^7.0", + "symfony/translation": "^5.4|^6.0|^7.0", "symfony/translation-contracts": "^2.5|^3", - "symfony/uid": "^6.4|^7.0", + "symfony/uid": "^5.4|^6.0|^7.0", "symfony/validator": "^6.4|^7.0", - "symfony/var-dumper": "^6.4|^7.0", - "symfony/var-exporter": "^6.4|^7.0", - "twig/twig": "^3.12" + "symfony/var-dumper": "^5.4|^6.4|^7.0", + "symfony/var-exporter": "^6.2|^7.0", + "twig/twig": "^2.13|^3.0.4" }, "type": "library", "autoload": { @@ -4319,7 +3985,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v7.2.4" + "source": "https://github.com/symfony/http-kernel/tree/v6.4.19" }, "funding": [ { @@ -4335,43 +4001,43 @@ "type": "tidelift" } ], - "time": "2025-02-26T11:01:22+00:00" + "time": "2025-02-26T10:51:37+00:00" }, { "name": "symfony/mailer", - "version": "v7.2.3", + "version": "v6.4.18", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "f3871b182c44997cf039f3b462af4a48fb85f9d3" + "reference": "e93a6ae2767d7f7578c2b7961d9d8e27580b2b11" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/f3871b182c44997cf039f3b462af4a48fb85f9d3", - "reference": "f3871b182c44997cf039f3b462af4a48fb85f9d3", + "url": "https://api.github.com/repos/symfony/mailer/zipball/e93a6ae2767d7f7578c2b7961d9d8e27580b2b11", + "reference": "e93a6ae2767d7f7578c2b7961d9d8e27580b2b11", "shasum": "" }, "require": { "egulias/email-validator": "^2.1.10|^3|^4", - "php": ">=8.2", + "php": ">=8.1", "psr/event-dispatcher": "^1", "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^6.4|^7.0", - "symfony/mime": "^7.2", + "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": "<6.4", - "symfony/messenger": "<6.4", - "symfony/mime": "<6.4", - "symfony/twig-bridge": "<6.4" + "symfony/http-kernel": "<5.4", + "symfony/messenger": "<6.2", + "symfony/mime": "<6.2", + "symfony/twig-bridge": "<6.2.1" }, "require-dev": { - "symfony/console": "^6.4|^7.0", - "symfony/http-client": "^6.4|^7.0", - "symfony/messenger": "^6.4|^7.0", - "symfony/twig-bridge": "^6.4|^7.0" + "symfony/console": "^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": { @@ -4399,7 +4065,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v7.2.3" + "source": "https://github.com/symfony/mailer/tree/v6.4.18" }, "funding": [ { @@ -4415,24 +4081,25 @@ "type": "tidelift" } ], - "time": "2025-01-27T11:08:17+00:00" + "time": "2025-01-24T15:27:15+00:00" }, { "name": "symfony/mime", - "version": "v7.2.4", + "version": "v6.4.19", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "87ca22046b78c3feaff04b337f33b38510fd686b" + "reference": "ac537b6c55ccc2c749f3c979edfa9ec14aaed4f3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/87ca22046b78c3feaff04b337f33b38510fd686b", - "reference": "87ca22046b78c3feaff04b337f33b38510fd686b", + "url": "https://api.github.com/repos/symfony/mime/zipball/ac537b6c55ccc2c749f3c979edfa9ec14aaed4f3", + "reference": "ac537b6c55ccc2c749f3c979edfa9ec14aaed4f3", "shasum": "" }, "require": { - "php": ">=8.2", + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-intl-idn": "^1.10", "symfony/polyfill-mbstring": "^1.0" }, @@ -4440,17 +4107,17 @@ "egulias/email-validator": "~3.0.0", "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", - "symfony/mailer": "<6.4", + "symfony/mailer": "<5.4", "symfony/serializer": "<6.4.3|>7.0,<7.0.3" }, "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": "^6.4|^7.0", - "symfony/process": "^6.4|^7.0", - "symfony/property-access": "^6.4|^7.0", - "symfony/property-info": "^6.4|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.4|^7.0", + "symfony/property-access": "^5.4|^6.0|^7.0", + "symfony/property-info": "^5.4|^6.0|^7.0", "symfony/serializer": "^6.4.3|^7.0.3" }, "type": "library", @@ -4483,7 +4150,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v7.2.4" + "source": "https://github.com/symfony/mime/tree/v6.4.19" }, "funding": [ { @@ -4499,7 +4166,7 @@ "type": "tidelift" } ], - "time": "2025-02-19T08:51:20+00:00" + "time": "2025-02-17T21:23:52+00:00" }, { "name": "symfony/polyfill-ctype", @@ -5139,20 +4806,20 @@ }, { "name": "symfony/process", - "version": "v7.2.4", + "version": "v6.4.19", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "d8f411ff3c7ddc4ae9166fb388d1190a2df5b5cf" + "reference": "7a1c12e87b08ec9c97abdd188c9b3f5a40e37fc3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/d8f411ff3c7ddc4ae9166fb388d1190a2df5b5cf", - "reference": "d8f411ff3c7ddc4ae9166fb388d1190a2df5b5cf", + "url": "https://api.github.com/repos/symfony/process/zipball/7a1c12e87b08ec9c97abdd188c9b3f5a40e37fc3", + "reference": "7a1c12e87b08ec9c97abdd188c9b3f5a40e37fc3", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=8.1" }, "type": "library", "autoload": { @@ -5180,7 +4847,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v7.2.4" + "source": "https://github.com/symfony/process/tree/v6.4.19" }, "funding": [ { @@ -5196,38 +4863,40 @@ "type": "tidelift" } ], - "time": "2025-02-05T08:33:46+00:00" + "time": "2025-02-04T13:35:48+00:00" }, { "name": "symfony/routing", - "version": "v7.2.3", + "version": "v6.4.18", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "ee9a67edc6baa33e5fae662f94f91fd262930996" + "reference": "e9bfc94953019089acdfb9be51c1b9142c4afa68" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/ee9a67edc6baa33e5fae662f94f91fd262930996", - "reference": "ee9a67edc6baa33e5fae662f94f91fd262930996", + "url": "https://api.github.com/repos/symfony/routing/zipball/e9bfc94953019089acdfb9be51c1b9142c4afa68", + "reference": "e9bfc94953019089acdfb9be51c1b9142c4afa68", "shasum": "" }, "require": { - "php": ">=8.2", + "php": ">=8.1", "symfony/deprecation-contracts": "^2.5|^3" }, "conflict": { - "symfony/config": "<6.4", - "symfony/dependency-injection": "<6.4", - "symfony/yaml": "<6.4" + "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.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/yaml": "^6.4|^7.0" + "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": { @@ -5261,7 +4930,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v7.2.3" + "source": "https://github.com/symfony/routing/tree/v6.4.18" }, "funding": [ { @@ -5277,7 +4946,7 @@ "type": "tidelift" } ], - "time": "2025-01-17T10:56:55+00:00" + "time": "2025-01-09T08:51:02+00:00" }, { "name": "symfony/service-contracts", @@ -5451,33 +5120,33 @@ }, { "name": "symfony/translation", - "version": "v7.2.4", + "version": "v6.4.19", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "283856e6981286cc0d800b53bd5703e8e363f05a" + "reference": "3b9bf9f33997c064885a7bfc126c14b9daa0e00e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/283856e6981286cc0d800b53bd5703e8e363f05a", - "reference": "283856e6981286cc0d800b53bd5703e8e363f05a", + "url": "https://api.github.com/repos/symfony/translation/zipball/3b9bf9f33997c064885a7bfc126c14b9daa0e00e", + "reference": "3b9bf9f33997c064885a7bfc126c14b9daa0e00e", "shasum": "" }, "require": { - "php": ">=8.2", + "php": ">=8.1", "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", "symfony/translation-contracts": "^2.5|^3.0" }, "conflict": { - "symfony/config": "<6.4", - "symfony/console": "<6.4", - "symfony/dependency-injection": "<6.4", + "symfony/config": "<5.4", + "symfony/console": "<5.4", + "symfony/dependency-injection": "<5.4", "symfony/http-client-contracts": "<2.5", - "symfony/http-kernel": "<6.4", + "symfony/http-kernel": "<5.4", "symfony/service-contracts": "<2.5", - "symfony/twig-bundle": "<6.4", - "symfony/yaml": "<6.4" + "symfony/twig-bundle": "<5.4", + "symfony/yaml": "<5.4" }, "provide": { "symfony/translation-implementation": "2.3|3.0" @@ -5485,17 +5154,17 @@ "require-dev": { "nikic/php-parser": "^4.18|^5.0", "psr/log": "^1|^2|^3", - "symfony/config": "^6.4|^7.0", - "symfony/console": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/finder": "^6.4|^7.0", + "symfony/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": "^6.4|^7.0", - "symfony/intl": "^6.4|^7.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": "^6.4|^7.0", + "symfony/routing": "^5.4|^6.0|^7.0", "symfony/service-contracts": "^2.5|^3", - "symfony/yaml": "^6.4|^7.0" + "symfony/yaml": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -5526,7 +5195,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v7.2.4" + "source": "https://github.com/symfony/translation/tree/v6.4.19" }, "funding": [ { @@ -5542,7 +5211,7 @@ "type": "tidelift" } ], - "time": "2025-02-13T10:27:23+00:00" + "time": "2025-02-13T10:18:43+00:00" }, { "name": "symfony/translation-contracts", @@ -5624,24 +5293,24 @@ }, { "name": "symfony/uid", - "version": "v7.2.0", + "version": "v6.4.13", "source": { "type": "git", "url": "https://github.com/symfony/uid.git", - "reference": "2d294d0c48df244c71c105a169d0190bfb080426" + "reference": "18eb207f0436a993fffbdd811b5b8fa35fa5e007" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/uid/zipball/2d294d0c48df244c71c105a169d0190bfb080426", - "reference": "2d294d0c48df244c71c105a169d0190bfb080426", + "url": "https://api.github.com/repos/symfony/uid/zipball/18eb207f0436a993fffbdd811b5b8fa35fa5e007", + "reference": "18eb207f0436a993fffbdd811b5b8fa35fa5e007", "shasum": "" }, "require": { - "php": ">=8.2", + "php": ">=8.1", "symfony/polyfill-uuid": "^1.15" }, "require-dev": { - "symfony/console": "^6.4|^7.0" + "symfony/console": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -5678,7 +5347,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/uid/tree/v7.2.0" + "source": "https://github.com/symfony/uid/tree/v6.4.13" }, "funding": [ { @@ -5694,36 +5363,38 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:21:43+00:00" + "time": "2024-09-25T14:18:03+00:00" }, { "name": "symfony/var-dumper", - "version": "v7.2.3", + "version": "v6.4.18", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "82b478c69745d8878eb60f9a049a4d584996f73a" + "reference": "4ad10cf8b020e77ba665305bb7804389884b4837" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/82b478c69745d8878eb60f9a049a4d584996f73a", - "reference": "82b478c69745d8878eb60f9a049a4d584996f73a", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/4ad10cf8b020e77ba665305bb7804389884b4837", + "reference": "4ad10cf8b020e77ba665305bb7804389884b4837", "shasum": "" }, "require": { - "php": ">=8.2", + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "symfony/console": "<6.4" + "symfony/console": "<5.4" }, "require-dev": { "ext-iconv": "*", - "symfony/console": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/process": "^6.4|^7.0", - "symfony/uid": "^6.4|^7.0", - "twig/twig": "^3.12" + "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" @@ -5761,7 +5432,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v7.2.3" + "source": "https://github.com/symfony/var-dumper/tree/v6.4.18" }, "funding": [ { @@ -5777,7 +5448,7 @@ "type": "tidelift" } ], - "time": "2025-01-17T11:39:41+00:00" + "time": "2025-01-17T11:26:11+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", @@ -6185,6 +5856,77 @@ }, "time": "2024-11-21T13:46:39+00:00" }, + { + "name": "filp/whoops", + "version": "2.17.0", + "source": { + "type": "git", + "url": "https://github.com/filp/whoops.git", + "reference": "075bc0c26631110584175de6523ab3f1652eb28e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/filp/whoops/zipball/075bc0c26631110584175de6523ab3f1652eb28e", + "reference": "075bc0c26631110584175de6523ab3f1652eb28e", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0", + "psr/log": "^1.0.1 || ^2.0 || ^3.0" + }, + "require-dev": { + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^7.5.20 || ^8.5.8 || ^9.3.3", + "symfony/var-dumper": "^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.17.0" + }, + "funding": [ + { + "url": "https://github.com/denis-sokolov", + "type": "github" + } + ], + "time": "2025-01-25T12:00:00+00:00" + }, { "name": "hamcrest/hamcrest-php", "version": "v2.0.1", @@ -6442,6 +6184,94 @@ ], "time": "2025-02-12T12:17:51+00:00" }, + { + "name": "nunomaduro/collision", + "version": "v6.4.0", + "source": { + "type": "git", + "url": "https://github.com/nunomaduro/collision.git", + "reference": "f05978827b9343cba381ca05b8c7deee346b6015" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/f05978827b9343cba381ca05b8c7deee346b6015", + "reference": "f05978827b9343cba381ca05b8c7deee346b6015", + "shasum": "" + }, + "require": { + "filp/whoops": "^2.14.5", + "php": "^8.0.0", + "symfony/console": "^6.0.2" + }, + "require-dev": { + "brianium/paratest": "^6.4.1", + "laravel/framework": "^9.26.1", + "laravel/pint": "^1.1.1", + "nunomaduro/larastan": "^1.0.3", + "nunomaduro/mock-final-classes": "^1.1.0", + "orchestra/testbench": "^7.7", + "phpunit/phpunit": "^9.5.23", + "spatie/ignition": "^1.4.1" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" + ] + }, + "branch-alias": { + "dev-develop": "6.x-dev" + } + }, + "autoload": { + "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-01-03T12:54:54+00:00" + }, { "name": "phar-io/manifest", "version": "2.0.4", @@ -8008,80 +7838,6 @@ ], "time": "2024-12-02T13:28:15+00:00" }, - { - "name": "spatie/error-solutions", - "version": "1.1.3", - "source": { - "type": "git", - "url": "https://github.com/spatie/error-solutions.git", - "reference": "e495d7178ca524f2dd0fe6a1d99a1e608e1c9936" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/error-solutions/zipball/e495d7178ca524f2dd0fe6a1d99a1e608e1c9936", - "reference": "e495d7178ca524f2dd0fe6a1d99a1e608e1c9936", - "shasum": "" - }, - "require": { - "php": "^8.0" - }, - "require-dev": { - "illuminate/broadcasting": "^10.0|^11.0|^12.0", - "illuminate/cache": "^10.0|^11.0|^12.0", - "illuminate/support": "^10.0|^11.0|^12.0", - "livewire/livewire": "^2.11|^3.5.20", - "openai-php/client": "^0.10.1", - "orchestra/testbench": "8.22.3|^9.0|^10.0", - "pestphp/pest": "^2.20|^3.0", - "phpstan/phpstan": "^2.1", - "psr/simple-cache": "^3.0", - "psr/simple-cache-implementation": "^3.0", - "spatie/ray": "^1.28", - "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", - "autoload": { - "psr-4": { - "Spatie\\Ignition\\": "legacy/ignition", - "Spatie\\ErrorSolutions\\": "src", - "Spatie\\LaravelIgnition\\": "legacy/laravel-ignition" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ruben Van Assche", - "email": "ruben@spatie.be", - "role": "Developer" - } - ], - "description": "This is my package error-solutions", - "homepage": "https://github.com/spatie/error-solutions", - "keywords": [ - "error-solutions", - "spatie" - ], - "support": { - "issues": "https://github.com/spatie/error-solutions/issues", - "source": "https://github.com/spatie/error-solutions/tree/1.1.3" - }, - "funding": [ - { - "url": "https://github.com/Spatie", - "type": "github" - } - ], - "time": "2025-02-14T12:29:50+00:00" - }, { "name": "spatie/flare-client-php", "version": "1.10.1", @@ -8153,29 +7909,29 @@ }, { "name": "spatie/ignition", - "version": "1.15.1", + "version": "1.14.2", "source": { "type": "git", "url": "https://github.com/spatie/ignition.git", - "reference": "31f314153020aee5af3537e507fef892ffbf8c85" + "reference": "5e11c11f675bb5251f061491a493e04a1a571532" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/31f314153020aee5af3537e507fef892ffbf8c85", - "reference": "31f314153020aee5af3537e507fef892ffbf8c85", + "url": "https://api.github.com/repos/spatie/ignition/zipball/5e11c11f675bb5251f061491a493e04a1a571532", + "reference": "5e11c11f675bb5251f061491a493e04a1a571532", "shasum": "" }, "require": { "ext-json": "*", "ext-mbstring": "*", "php": "^8.0", - "spatie/error-solutions": "^1.0", - "spatie/flare-client-php": "^1.7", + "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|^12.0", + "illuminate/cache": "^9.52|^10.0|^11.0", "mockery/mockery": "^1.4", "pestphp/pest": "^1.20|^2.0", "phpstan/extension-installer": "^1.1", @@ -8232,46 +7988,45 @@ "type": "github" } ], - "time": "2025-02-21T14:31:39+00:00" + "time": "2024-05-29T08:10:20+00:00" }, { "name": "spatie/laravel-ignition", - "version": "2.9.1", + "version": "1.7.0", "source": { "type": "git", "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "1baee07216d6748ebd3a65ba97381b051838707a" + "reference": "b6d5c33cf0b8260d6540572af2d9bcf9182fe5fb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/1baee07216d6748ebd3a65ba97381b051838707a", - "reference": "1baee07216d6748ebd3a65ba97381b051838707a", + "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/b6d5c33cf0b8260d6540572af2d9bcf9182fe5fb", + "reference": "b6d5c33cf0b8260d6540572af2d9bcf9182fe5fb", "shasum": "" }, "require": { "ext-curl": "*", "ext-json": "*", "ext-mbstring": "*", - "illuminate/support": "^10.0|^11.0|^12.0", - "php": "^8.1", - "spatie/ignition": "^1.15", - "symfony/console": "^6.2.3|^7.0", - "symfony/var-dumper": "^6.2.3|^7.0" + "illuminate/support": "^8.77|^9.27", + "monolog/monolog": "^2.3", + "php": "^8.0", + "spatie/flare-client-php": "^1.0.1", + "spatie/ignition": "<= 1.14.2", + "symfony/console": "^5.0|^6.0", + "symfony/var-dumper": "^5.0|^6.0" }, "require-dev": { - "livewire/livewire": "^2.11|^3.3.5", - "mockery/mockery": "^1.5.1", - "openai-php/client": "^0.8.1|^0.10", - "orchestra/testbench": "8.22.3|^9.0|^10.0", - "pestphp/pest": "^2.34|^3.7", - "phpstan/extension-installer": "^1.3.1", - "phpstan/phpstan-deprecation-rules": "^1.1.1|^2.0", - "phpstan/phpstan-phpunit": "^1.3.16|^2.0", - "vlucas/phpdotenv": "^5.5" - }, - "suggest": { - "openai-php/client": "Require get solutions from OpenAI", - "psr/simple-cache-implementation": "Needed to cache solutions from OpenAI" + "filp/whoops": "^2.14", + "livewire/livewire": "^2.8|dev-develop", + "mockery/mockery": "^1.4", + "nunomaduro/larastan": "^1.0", + "orchestra/testbench": "^6.23|^7.0", + "pestphp/pest": "^1.20", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.0", + "spatie/laravel-ray": "^1.27" }, "type": "library", "extra": { @@ -8323,20 +8078,20 @@ "type": "github" } ], - "time": "2025-02-20T13:13:55+00:00" + "time": "2024-06-13T07:21:06+00:00" }, { "name": "squizlabs/php_codesniffer", - "version": "3.12.0", + "version": "3.11.3", "source": { "type": "git", "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", - "reference": "2d1b63db139c3c6ea0c927698e5160f8b3b8d630" + "reference": "ba05f990e79cbe69b9f35c8c1ac8dca7eecc3a10" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/2d1b63db139c3c6ea0c927698e5160f8b3b8d630", - "reference": "2d1b63db139c3c6ea0c927698e5160f8b3b8d630", + "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/ba05f990e79cbe69b9f35c8c1ac8dca7eecc3a10", + "reference": "ba05f990e79cbe69b9f35c8c1ac8dca7eecc3a10", "shasum": "" }, "require": { @@ -8403,11 +8158,11 @@ "type": "open_collective" }, { - "url": "https://thanks.dev/u/gh/phpcsstandards", + "url": "https://thanks.dev/phpcsstandards", "type": "thanks_dev" } ], - "time": "2025-03-18T05:04:51+00:00" + "time": "2025-01-23T17:04:15+00:00" }, { "name": "symfony/yaml", @@ -8534,12 +8289,12 @@ ], "aliases": [], "minimum-stability": "dev", - "stability-flags": {}, + "stability-flags": [], "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": "^8.2" + "php": "^8.0" }, - "platform-dev": {}, + "platform-dev": [], "plugin-api-version": "2.6.0" } diff --git a/config/database.php b/config/database.php index 0faebae..4ef8338 100644 --- a/config/database.php +++ b/config/database.php @@ -48,8 +48,8 @@ 'url' => env('DATABASE_URL'), 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', '3306'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), + 'database' => env('DB_DATABASE', 'onlineStore'), + 'username' => env('DB_USERNAME', 'onlineStore'), 'password' => env('DB_PASSWORD', ''), 'unix_socket' => env('DB_SOCKET', ''), 'charset' => 'utf8mb4', diff --git a/routes/web.php b/routes/web.php index 5252f46..af1cb3d 100644 --- a/routes/web.php +++ b/routes/web.php @@ -1,6 +1,7 @@ Date: Thu, 20 Mar 2025 15:04:07 +0000 Subject: [PATCH 20/41] =?UTF-8?q?Mettre=20=C3=A0=20jour=20les=20vues=20de?= =?UTF-8?q?=20l'administration=20des=20produits=20et=20de=20l'accueil=20av?= =?UTF-8?q?ec=20l'int=C3=A9gration=20du=20fournisseur?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/Admin/AdminProductController.php | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/app/Http/Controllers/Admin/AdminProductController.php b/app/Http/Controllers/Admin/AdminProductController.php index cd68d6f..cbd8ce6 100644 --- a/app/Http/Controllers/Admin/AdminProductController.php +++ b/app/Http/Controllers/Admin/AdminProductController.php @@ -5,6 +5,7 @@ use App\Models\Product; use App\Http\Controllers\Controller; use App\Models\Categorie; + use App\Models\Fournisseur; use Illuminate\Http\Request; use Illuminate\Support\Facades\Storage; @@ -82,6 +83,8 @@ public function edit($id) { $viewData = []; $viewData["title"] = "Admin Page - Edit Product - Online Store"; + $viewData["fournisseurs"]=Fournisseur::all(); + $viewData["categories"] = Categorie::all(); $viewData["product"] = Product::findOrFail($id); return view('admin.product.edit')->with("viewData", $viewData); } @@ -99,9 +102,12 @@ public function update(Request $request, $id) ]); $categorieId = $request->input('categorie_id', 1); $product = Product::findOrFail($id); - $product->setName($request->input('name')); - $product->setDescription($request->input('description')); - $product->setPrice($request->input('price')); + $product->name = $request->input('name'); + $product->description = $request->input('description'); + $product->price = $request->input('price'); + $product->quantity_store = $request->input('quantity_store'); + $product->categorie_id = $categorieId; + $product->fournisseur_id = $request->input('fournisseur_id'); if ($request->hasFile('image')) { if ($product->image && Storage::disk('public')->exists($product->image)) { @@ -116,7 +122,8 @@ public function update(Request $request, $id) $product->image = $imageName; } $product->save(); - return redirect()->route('admin.product.index'); + + return redirect()->route('admin.home.index')->with('success', 'Produit mis à jour avec succès!'); } From 8235a65d374f61732636db7db44d491d85839802 Mon Sep 17 00:00:00 2001 From: boulganafatimaezzahra Date: Thu, 20 Mar 2025 11:54:55 +0000 Subject: [PATCH 21/41] ajout de controller fournissuer From 0c41a7d69580755c4cfa967bae8ccbc23ab0bee4 Mon Sep 17 00:00:00 2001 From: Imane Date: Thu, 20 Mar 2025 15:38:16 +0000 Subject: [PATCH 22/41] Add background to products depending on quatity_store in admin view --- .../Admin/AdminProductController.php | 1 + app/Http/Controllers/CartController.php | 7 +- resources/views/admin/home/index.blade.php | 1 + resources/views/admin/product/index.blade.php | 189 +++++++++--------- 4 files changed, 103 insertions(+), 95 deletions(-) diff --git a/app/Http/Controllers/Admin/AdminProductController.php b/app/Http/Controllers/Admin/AdminProductController.php index d1c6c52..6935acb 100644 --- a/app/Http/Controllers/Admin/AdminProductController.php +++ b/app/Http/Controllers/Admin/AdminProductController.php @@ -11,6 +11,7 @@ class AdminProductController extends Controller { public function index() { + $viewData = []; $viewData["title"] = "Admin Page - Products - Online Store"; $viewData["products"] = Product::all(); diff --git a/app/Http/Controllers/CartController.php b/app/Http/Controllers/CartController.php index fa9e7c3..4e8e218 100644 --- a/app/Http/Controllers/CartController.php +++ b/app/Http/Controllers/CartController.php @@ -75,19 +75,18 @@ public function purchase(Request $request) $quantity = $productsInSession[$product->getId()]; - ////UPDATE QUANTITY IN STOCK AFTER VALIDATION ACHAT + //UPDATE QUANTITY IN STOCK AFTER VALIDATION ACHAT //verify if quantity in stock est suffisante if ($product->getQuantityStore() < $quantity) { $order->delete(); - return redirect()->route("cart.index") - ->with("error", "Quantity requested for product".$product->getName()."not available in stock "); + return redirect()->route("cart.index")->with("error", "Quantity requested for product".$product->getName()."not available in stock "); } //update quantity in stock for product $product->setQuantityStore($product->getQuantityStore() - $quantity); $product->save(); - //// + //end $item = new Item(); $item->setQuantity($quantity); $item->setPrice($product->getPrice()); diff --git a/resources/views/admin/home/index.blade.php b/resources/views/admin/home/index.blade.php index a2b4868..063ee6a 100644 --- a/resources/views/admin/home/index.blade.php +++ b/resources/views/admin/home/index.blade.php @@ -8,5 +8,6 @@
    Welcome to the Admin Panel, use the sidebar to navigate between the different options.
    +
    @endsection diff --git a/resources/views/admin/product/index.blade.php b/resources/views/admin/product/index.blade.php index 19fbe4b..20fd13a 100644 --- a/resources/views/admin/product/index.blade.php +++ b/resources/views/admin/product/index.blade.php @@ -1,98 +1,105 @@ @extends('layouts.admin') -@section('title', $viewData["title"]) +@section('title', $viewData['title']) @section('content') -
    -
    - Create Products -
    -
    - @if($errors->any()) -
      - @foreach($errors->all() as $error) -
    • - {{ $error }}
    • - @endforeach -
    - @endif - -
    - @csrf -
    -
    -
    - -
    - -
    -
    -
    -
    -
    - -
    - -
    -
    +
    +
    + Create Products
    -
    -
    -
    -
    - -
    - -
    -
    +
    + @if ($errors->any()) +
      + @foreach ($errors->all() as $error) +
    • - {{ $error }}
    • + @endforeach +
    + @endif + + + @csrf +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +   +
    +
    +
    + + +
    + +
    -
    -   +
    + +
    +
    + Manage Products
    -
    -
    - - -
    - - -
    -
    +
    + + + + + + + + + + + @foreach ($viewData['products'] as $product) + @php + $quantity = $product->getQuantityStore(); + $bgColor = $quantity_store == 0 ? 'bg-danger ' : ($quantity_store < 10 ? 'bg-warning' ) : 'bg-succes' + @endphp -
    -
    - Manage Products -
    -
    -
    IDNameEditDelete
    - - - - - - - - - - @foreach ($viewData["products"] as $product) - - - - - - - @endforeach - -
    IDNameEditDelete
    {{ $product->getId() }}{{ $product->getName() }} - - - - -
    - @csrf - @method('DELETE') - -
    -
    -
    -
    + + + {{ $product->getId() }} + {{ $product->getName() }} + + + + + + +
    + @csrf + @method('DELETE') + +
    + + + @endforeach + + +
    +
    @endsection From 5a3734399851c31d0ac7ed7c5c5c5a917de557ee Mon Sep 17 00:00:00 2001 From: Imane Date: Thu, 20 Mar 2025 15:51:43 +0000 Subject: [PATCH 23/41] Add an out of stock label for products with quantity_store is 0 --- app/Http/Controllers/Admin/AdminProductController.php | 1 - resources/views/product/index.blade.php | 7 +++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/app/Http/Controllers/Admin/AdminProductController.php b/app/Http/Controllers/Admin/AdminProductController.php index 6935acb..d1c6c52 100644 --- a/app/Http/Controllers/Admin/AdminProductController.php +++ b/app/Http/Controllers/Admin/AdminProductController.php @@ -11,7 +11,6 @@ class AdminProductController extends Controller { public function index() { - $viewData = []; $viewData["title"] = "Admin Page - Products - Online Store"; $viewData["products"] = Product::all(); diff --git a/resources/views/product/index.blade.php b/resources/views/product/index.blade.php index 73e4057..3ff8572 100644 --- a/resources/views/product/index.blade.php +++ b/resources/views/product/index.blade.php @@ -9,12 +9,12 @@
    @@ -31,6 +31,9 @@

    Quantity in stock : {{ $product->getQuantityStore() }}

    + @if ($product -> getQuantityStore() == 0) +

    En repture de stock

    + @endif
    From 208be58439fc97807616a93b096948aa5643d253 Mon Sep 17 00:00:00 2001 From: zena Date: Thu, 20 Mar 2025 15:56:57 +0000 Subject: [PATCH 24/41] Creation de la table discounts pour gerer les soldes --- app/Models/Discount.php | 10 ++++++ ...25_03_20_154909_create_discounts_table.php | 32 +++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 app/Models/Discount.php create mode 100644 database/migrations/2025_03_20_154909_create_discounts_table.php diff --git a/app/Models/Discount.php b/app/Models/Discount.php new file mode 100644 index 0000000..6383b58 --- /dev/null +++ b/app/Models/Discount.php @@ -0,0 +1,10 @@ +id(); + $table->float('rate', 5, 2); + $table->date('start_date'); + $table->date('end_date'); + $table->foreignId('product_id')->nullable()->constrained()->OnDelete('cascade'); + $table->foreignId('categorie_id')->nullable()->constrained()->onDelete('cascade'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('discounts'); + } +}; From 51bee0980eb9146fa65944790d042f80951fc81d Mon Sep 17 00:00:00 2001 From: zena Date: Thu, 20 Mar 2025 16:11:24 +0000 Subject: [PATCH 25/41] Ajout du controlleur DiscountController et ses routes --- .../Controllers/Admin/DiscountController.php | 65 +++++++++++++++++++ routes/web.php | 3 +- 2 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 app/Http/Controllers/Admin/DiscountController.php diff --git a/app/Http/Controllers/Admin/DiscountController.php b/app/Http/Controllers/Admin/DiscountController.php new file mode 100644 index 0000000..a4640c5 --- /dev/null +++ b/app/Http/Controllers/Admin/DiscountController.php @@ -0,0 +1,65 @@ +name("admin.product.update"); }); -Auth::routes(); Route::resource('category', CategorieController::class); +Route::resource('discounts', App\Http\Controllers\Admin\DiscountController::class); + From 9fa1dd1ab5bfcf75074341c10874a9f8fa19ae8c Mon Sep 17 00:00:00 2001 From: zena Date: Thu, 20 Mar 2025 16:47:06 +0000 Subject: [PATCH 26/41] Ajout des vues pour le CRUD des soldes --- app/Models/Product.php | 10 ++ .../views/admin/discounts/create.blade.php | 95 +++++++++++++++++++ .../views/admin/discounts/edit.blade.php | 0 .../views/admin/discounts/index.blade.php | 76 +++++++++++++++ resources/views/admin/product/index.blade.php | 15 ++- routes/web.php | 1 + 6 files changed, 194 insertions(+), 3 deletions(-) create mode 100644 resources/views/admin/discounts/create.blade.php create mode 100644 resources/views/admin/discounts/edit.blade.php create mode 100644 resources/views/admin/discounts/index.blade.php diff --git a/app/Models/Product.php b/app/Models/Product.php index 4538986..fe1b6d4 100644 --- a/app/Models/Product.php +++ b/app/Models/Product.php @@ -138,4 +138,14 @@ public function categorie() { return $this->belongsTo(Categorie::class, 'categorie_id'); } + public function hasDiscount() + { + return $this->discount_price && $this->discount_price < $this->price; + } + + public function getDiscountedPrice() + { + return $this->discount_price ?? $this->price; + } + } diff --git a/resources/views/admin/discounts/create.blade.php b/resources/views/admin/discounts/create.blade.php new file mode 100644 index 0000000..afd956d --- /dev/null +++ b/resources/views/admin/discounts/create.blade.php @@ -0,0 +1,95 @@ +@extends('layouts.admin') + +@section('content') +
    +
    +
    +
    +
    +

    Ajouter une remise

    +
    +
    +
    + @csrf +
    + + +
    + +
    + + +
    + + + + + +
    + + +
    + +
    + + +
    + +
    + + +
    + + + Annuler +
    +
    +
    +
    +
    +
    + + +@endsection \ No newline at end of file diff --git a/resources/views/admin/discounts/edit.blade.php b/resources/views/admin/discounts/edit.blade.php new file mode 100644 index 0000000..e69de29 diff --git a/resources/views/admin/discounts/index.blade.php b/resources/views/admin/discounts/index.blade.php new file mode 100644 index 0000000..83b0bc1 --- /dev/null +++ b/resources/views/admin/discounts/index.blade.php @@ -0,0 +1,76 @@ +@extends('layouts.admin') + +@section('content') +
    +
    +
    +
    +
    +

    Gestion des remises

    + Ajouter une remise +
    +
    + + + + + + + + + + + + + + @foreach($discounts as $discount) + + + + + + + + + + @endforeach + +
    NomTypeTauxPériodeAppliqué àStatutActions
    {{ $discount->name }} + @if($discount->type == 'global') + Tous les produits + @elseif($discount->type == 'category') + Catégorie + @else + Produit + @endif + {{ $discount->rate }}% + Du {{ $discount->start_date->format('d/m/Y') }} + au {{ $discount->end_date->format('d/m/Y') }} + + @if($discount->type == 'global') + Tous les produits + @elseif($discount->type == 'category') + {{ $discount->category->name ?? 'N/A' }} + @else + {{ $discount->product->name ?? 'N/A' }} + @endif + + @if($discount->isActive()) + Actif + @else + Inactif + @endif + + Modifier +
    + @csrf + @method('DELETE') + +
    +
    +
    +
    +
    +
    +
    +@endsection \ No newline at end of file diff --git a/resources/views/admin/product/index.blade.php b/resources/views/admin/product/index.blade.php index 19fbe4b..dc8de7f 100644 --- a/resources/views/admin/product/index.blade.php +++ b/resources/views/admin/product/index.blade.php @@ -66,6 +66,7 @@ ID Name + Price Edit Delete @@ -76,12 +77,20 @@ {{ $product->getId() }} {{ $product->getName() }} - + @if($product->hasDiscount()) + {{ $product->price }} € + {{ number_format($product->getDiscountedPrice(), 2) }} € + @else + {{ $product->price }} € + @endif + + + -
    + @csrf @method('DELETE')
    -@endsection +@endsection \ No newline at end of file diff --git a/routes/web.php b/routes/web.php index 990a0e1..2641eb8 100644 --- a/routes/web.php +++ b/routes/web.php @@ -37,6 +37,7 @@ Route::put('/admin/products/{id}/update', 'App\Http\Controllers\Admin\AdminProductController@update')->name("admin.product.update"); }); +Auth::routes(); Route::resource('category', CategorieController::class); From 91668bf17172ebf05e78406dd7bd49040996f01d Mon Sep 17 00:00:00 2001 From: zena Date: Thu, 20 Mar 2025 18:49:08 +0000 Subject: [PATCH 27/41] =?UTF-8?q?Correction=20des=20probl=C3=A8mes=20dimpo?= =?UTF-8?q?rtation=20et=20de=20syntaxe=20des=20routes.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- routes/web.php | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/routes/web.php b/routes/web.php index 2641eb8..7b2e341 100644 --- a/routes/web.php +++ b/routes/web.php @@ -2,6 +2,14 @@ use Illuminate\Support\Facades\Route; use App\Http\Controllers\CategorieController; +use App\Http\Controllers\HomeController; +use App\Http\Controllers\ProductController; +use App\Http\Controllers\CartController; +use App\Http\Controllers\MyAccountController; +use App\Http\Controllers\Admin\AdminHomeController; +use App\Http\Controllers\Admin\AdminProductController; +use App\Http\Controllers\Admin\DiscountController; + /* |-------------------------------------------------------------------------- @@ -41,5 +49,12 @@ Route::resource('category', CategorieController::class); -Route::resource('discounts', App\Http\Controllers\Admin\DiscountController::class); +Route::get('/discounts/global', [AdminHomeController::class, 'manageGlobalDiscount'])->name('discounts.manageGlobal'); +Route::post('/discounts/global', [AdminHomeController::class, 'storeGlobalDiscount'])->name('discounts.storeGlobal'); + +Route::get('/products/{product}/discount', [AdminProductController::class, 'manageDiscount'])->name('products.manageDiscount'); +Route::post('/products/{product}/discount', [AdminProductController::class, 'storeDiscount'])->name('products.storeDiscount'); + +Route::get('/categories/{category}/discount', [AdminProductController::class, 'manageCategoryDiscount'])->name('categories.manageDiscount'); +Route::post('/categories/{category}/discount', [AdminProductController::class, 'storeCategoryDiscount'])->name('categories.storeDiscount'); From d0b8d566e9d62b71c4391673b2cd17011da854fe Mon Sep 17 00:00:00 2001 From: zena Date: Thu, 20 Mar 2025 18:49:58 +0000 Subject: [PATCH 28/41] Implementer discount managment feature --- app/Http/Controllers/CartController.php | 156 +++++++++++------- app/Http/Controllers/ProductController.php | 98 +++++++++-- .../views/admin/product/create.blade.php | 71 ++++++++ resources/views/admin/product/edit.blade.php | 15 +- resources/views/admin/product/index.blade.php | 65 ++++++-- 5 files changed, 322 insertions(+), 83 deletions(-) create mode 100644 resources/views/admin/product/create.blade.php diff --git a/app/Http/Controllers/CartController.php b/app/Http/Controllers/CartController.php index 9dcfaba..468f418 100644 --- a/app/Http/Controllers/CartController.php +++ b/app/Http/Controllers/CartController.php @@ -2,86 +2,128 @@ namespace App\Http\Controllers; +use Illuminate\Http\Request; +use Illuminate\Support\Facades\Auth; +use Illuminate\Support\Facades\DB; use App\Models\Product; use App\Models\Order; use App\Models\Item; -use Illuminate\Http\Request; -use Illuminate\Support\Facades\Auth; +use App\Models\User; + class CartController extends Controller { - public function index(Request $request) + public function index() { - $total = 0; - $productsInCart = []; + $productsInSession = session()->get("products", []); - $productsInSession = $request->session()->get("products"); - if ($productsInSession) { - $productsInCart = Product::findMany(array_keys($productsInSession)); - $total = Product::sumPricesByQuantities($productsInCart, $productsInSession); - } + $productsInCart = !empty($productsInSession) ? Product::findMany(array_keys($productsInSession)) : []; + $total = !empty($productsInCart) ? Product::sumPricesByQuantities($productsInCart, $productsInSession) : 0; + + $viewData = [ + "title" => "Cart - Online Store", + "subtitle" => "Shopping Cart", + "total" => $total, + "products" => $productsInCart + ]; - $viewData = []; - $viewData["title"] = "Cart - Online Store"; - $viewData["subtitle"] = "Shopping Cart"; - $viewData["total"] = $total; - $viewData["products"] = $productsInCart; return view('cart.index')->with("viewData", $viewData); } - public function add(Request $request, $id) + public function add(Product $product, Request $request) { - $products = $request->session()->get("products"); - $products[$id] = $request->input('quantity'); - $request->session()->put('products', $products); + $quantity = $request->input('quantity', 1); - return redirect()->route('cart.index'); + // Vérifier la disponibilité du stock + if ($product->quantity_store < $quantity) { + return back()->with('error', 'Quantité insuffisante en stock.'); + } + + // Obtenir le prix avec remise si applicable + $price = $product->hasDiscount() ? $product->getDiscountedPrice() : $product->price; + + // Ajouter au panier (session) + $cart = session()->get("products", []); + $cart[$product->id] = isset($cart[$product->id]) ? $cart[$product->id] + $quantity : $quantity; + session()->put("products", $cart); + + return back()->with('success', 'Produit ajouté au panier.'); } public function delete(Request $request) { $request->session()->forget('products'); - return back(); + return back()->with('success', 'Panier vidé avec succès.'); } public function purchase(Request $request) - { - $productsInSession = $request->session()->get("products"); - if ($productsInSession) { - $userId = Auth::user()->getId(); - $order = new Order(); - $order->setUserId($userId); - $order->setTotal(0); - $order->save(); - - $total = 0; - $productsInCart = Product::findMany(array_keys($productsInSession)); - foreach ($productsInCart as $product) { - $quantity = $productsInSession[$product->getId()]; - $item = new Item(); - $item->setQuantity($quantity); - $item->setPrice($product->getPrice()); - $item->setProductId($product->getId()); - $item->setOrderId($order->getId()); - $item->save(); - $total = $total + ($product->getPrice()*$quantity); +{ + $productsInSession = session()->get("products", []); + + if (!empty($productsInSession)) { + // Récupérer l'utilisateur authentifié + $user = Auth::user(); + + // Vérifier si l'utilisateur est bien une instance de User + if (!$user instanceof User) { + return back()->with('error', 'Utilisateur introuvable.'); + } + + $order = new Order(); + $order->user_id = $user->id; + $order->total = 0; + $order->save(); + + $total = 0; + $productsInCart = Product::findMany(array_keys($productsInSession)); + + foreach ($productsInCart as $product) { + $quantity = $productsInSession[$product->id]; + + // Vérifier le stock avant de valider l'achat + if ($product->quantity_store < $quantity) { + return back()->with('error', "Stock insuffisant pour {$product->name}."); } - $order->setTotal($total); - $order->save(); - - $newBalance = Auth::user()->getBalance() - $total; - Auth::user()->setBalance($newBalance); - Auth::user()->save(); - - $request->session()->forget('products'); - - $viewData = []; - $viewData["title"] = "Purchase - Online Store"; - $viewData["subtitle"] = "Purchase Status"; - $viewData["order"] = $order; - return view('cart.purchase')->with("viewData", $viewData); - } else { - return redirect()->route('cart.index'); + + // Déduire la quantité du stock + $product->quantity_store -= $quantity; + $product->save(); + + // Créer un élément de commande + $item = new Item(); + $item->quantity = $quantity; + $item->price = $product->hasDiscount() ? $product->getDiscountedPrice() : $product->price; + $item->product_id = $product->id; + $item->order_id = $order->id; + $item->save(); + + $total += $item->price * $quantity; } + + // Vérifier si l'utilisateur a assez d'argent + if ($user->balance < $total) { + return back()->with('error', 'Fonds insuffisants pour effectuer l\'achat.'); + } + + // Déduire le solde de l'utilisateur + $user->balance -= $total; + $user->save(); // L'erreur "Undefined method save()" venait peut-être d'un utilisateur non trouvé + + // Mettre à jour le total de la commande + $order->total = $total; + $order->save(); + + // Vider le panier + session()->forget('products'); + + return view('cart.purchase', [ + "title" => "Purchase - Online Store", + "subtitle" => "Purchase Status", + "order" => $order + ])->with('success', 'Achat effectué avec succès.'); } + + return redirect()->route('cart.index')->with('error', 'Votre panier est vide.'); } + + } \ No newline at end of file diff --git a/app/Http/Controllers/ProductController.php b/app/Http/Controllers/ProductController.php index 3fd214e..46b58c0 100644 --- a/app/Http/Controllers/ProductController.php +++ b/app/Http/Controllers/ProductController.php @@ -4,38 +4,55 @@ use App\Models\Categorie; use App\Models\Product; +use App\Models\Discount; use Illuminate\Http\Request; class ProductController extends Controller { - public function index(Request $request) { $viewData = []; $viewData["title"] = "Products - Online Store"; $viewData["subtitle"] = "List of products"; - // Initialisation de la requête pour récupérer les produits $query = Product::query(); - // Vérifier si un ID de catégorie est présent dans la requête + // Filtrage par catégorie if ($request->has('category_id') && $request->category_id != '') { - // Filtrer les produits par la catégorie sélectionnée - $query->where('categorie_id', $request->category_id); + $query->where('category_id', $request->category_id); } - // Exécuter la requête pour obtenir les produits filtrés - $viewData["products"] = $query->get(); + // Filtrage des produits soldes + if ($request->has('on_sale') && $request->on_sale) { + $now = now(); + $query->where(function ($q) use ($now) { + $q->whereHas('discounts', function ($q) use ($now) { + $q->where('start_date', '<=', $now) + ->where('end_date', '>=', $now); + })->orWhereHas('category.discounts', function ($q) use ($now) { + $q->where('type', 'category') + ->where('start_date', '<=', $now) + ->where('end_date', '>=', $now); + }); + + // Verifier s'il y a une remise globale active + $globalDiscounts = Discount::where('type', 'global') + ->where('start_date', '<=', $now) + ->where('end_date', '>=', $now) + ->exists(); + + if ($globalDiscounts) { + $q->orWhereNotNull('id'); // Inclure tous les produits si une remise globale existe + } + }); + } - // Récupérer toutes les catégories + $viewData["products"] = $query->paginate(12); $viewData["categories"] = Categorie::all(); - // Retourner la vue avec les produits filtrés et les catégories return view('product.index')->with("viewData", $viewData); } - - public function show($id) { $viewData = []; @@ -43,6 +60,63 @@ public function show($id) $viewData["title"] = $product->getName()." - Online Store"; $viewData["subtitle"] = $product->getName()." - Product information"; $viewData["product"] = $product; + return view('product.show')->with("viewData", $viewData); } -} + + public function store(Request $request) + { + // Validation + $request->validate([ + 'name' => 'required|string|max:255', + 'price' => 'required|numeric|min:0', + 'discount_price' => 'nullable|numeric|min:0|lt:price', + 'description' => 'nullable|string', + 'image' => 'nullable|image|mimes:jpeg,png,jpg,gif|max:2048', + ]); + + // Creation du produit + $product = new Product(); + $product->name = $request->input('name'); + $product->price = $request->input('price'); + $product->discount_price = $request->input('discount_price', null); + $product->description = $request->input('description'); + + if ($request->hasFile('image')) { + $imagePath = $request->file('image')->store('products', 'public'); + $product->image = $imagePath; + } + + $product->save(); + + return redirect()->route('admin.product.index')->with('success', 'Product created successfully!'); + } + + public function update(Request $request, $id) + { + // Validation + $request->validate([ + 'name' => 'required|string|max:255', + 'price' => 'required|numeric|min:0', + 'discount_price' => 'nullable|numeric|min:0|lt:price', + 'description' => 'nullable|string', + 'image' => 'nullable|image|mimes:jpeg,png,jpg,gif|max:2048', + ]); + + // Recuperation et mise a jour du produit + $product = Product::findOrFail($id); + $product->name = $request->input('name'); + $product->price = $request->input('price'); + $product->discount_price = $request->input('discount_price', null); + $product->description = $request->input('description'); + + if ($request->hasFile('image')) { + $imagePath = $request->file('image')->store('products', 'public'); + $product->image = $imagePath; + } + + $product->save(); + + return redirect()->route('admin.product.index')->with('success', 'Product updated successfully!'); + } +} \ No newline at end of file diff --git a/resources/views/admin/product/create.blade.php b/resources/views/admin/product/create.blade.php new file mode 100644 index 0000000..ea71d40 --- /dev/null +++ b/resources/views/admin/product/create.blade.php @@ -0,0 +1,71 @@ +@extends('layouts.admin') +@section('title', $viewData["title"]) +@section('content') +
    +
    + Create Product +
    +
    + @if($errors->any()) +
      + @foreach($errors->all() as $error) +
    • - {{ $error }}
    • + @endforeach +
    + @endif + + + @csrf +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    + +
    +
    +
    + +
    + +
    +
    +
    +
    + +
    +
    +
    + +
    + +
    +
    +
    +
    +   +
    +
    + +
    + + +
    + + +
    +
    +@endsection \ No newline at end of file diff --git a/resources/views/admin/product/edit.blade.php b/resources/views/admin/product/edit.blade.php index b8e03d8..a4eee08 100644 --- a/resources/views/admin/product/edit.blade.php +++ b/resources/views/admin/product/edit.blade.php @@ -36,6 +36,18 @@ + +
    +
    +
    + +
    + +
    +
    +
    +
    +
    @@ -49,6 +61,7 @@  
    +
    +
    + +
    +
    Filtres
    +
    +
    +
    + + +
    + +
    + + +
    + + +
    +
    +
    +
    Manage Products @@ -77,11 +115,11 @@ {{ $product->getId() }} {{ $product->getName() }} - @if($product->hasDiscount()) - {{ $product->price }} € - {{ number_format($product->getDiscountedPrice(), 2) }} € + @if($product->discount_price && $product->discount_price < $product->price) + {{ number_format($product->price, 2) }} € + {{ number_format($product->discount_price, 2) }} € @else - {{ $product->price }} € + {{ number_format($product->price, 2) }} € @endif @@ -104,4 +142,5 @@
    + @endsection \ No newline at end of file From 5c851f5e713c590c7305ac643bb09027d4dc2cc6 Mon Sep 17 00:00:00 2001 From: zena Date: Thu, 20 Mar 2025 19:56:38 +0000 Subject: [PATCH 29/41] Enregistrer les modifications avant de passer aux branches --- app/Http/Controllers/CartController.php | 102 +++++++++++++++--------- 1 file changed, 66 insertions(+), 36 deletions(-) diff --git a/app/Http/Controllers/CartController.php b/app/Http/Controllers/CartController.php index 9909dad..b0398d1 100644 --- a/app/Http/Controllers/CartController.php +++ b/app/Http/Controllers/CartController.php @@ -7,7 +7,7 @@ use App\Models\Item; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; - +use App\Models\User; class CartController extends Controller { public function index(Request $request) @@ -56,43 +56,73 @@ public function delete(Request $request) } public function purchase(Request $request) - { - $productsInSession = $request->session()->get("products"); - if ($productsInSession) { - $userId = Auth::user()->getId(); - $order = new Order(); - $order->setUserId($userId); - $order->setTotal(0); - $order->save(); +{ + $productsInSession = session()->get("products", []); - $total = 0; - $productsInCart = Product::findMany(array_keys($productsInSession)); - foreach ($productsInCart as $product) { - $quantity = $productsInSession[$product->getId()]; - $item = new Item(); - $item->setQuantity($quantity); - $item->setPrice($product->getPrice()); - $item->setProductId($product->getId()); - $item->setOrderId($order->getId()); - $item->save(); - $total = $total + ($product->getPrice()*$quantity); + if (!empty($productsInSession)) { + // Récupérer l'utilisateur authentifié + $user = Auth::user(); + + // Vérifier si l'utilisateur est bien une instance de User + if (!$user instanceof User) { + return back()->with('error', 'Utilisateur introuvable.'); + } + + $order = new Order(); + $order->user_id = $user->id; + $order->total = 0; + $order->save(); + + $total = 0; + $productsInCart = Product::findMany(array_keys($productsInSession)); + + foreach ($productsInCart as $product) { + $quantity = $productsInSession[$product->id]; + + // Vérifier le stock avant de valider l'achat + if ($product->quantity_store < $quantity) { + return back()->with('error', "Stock insuffisant pour {$product->name}."); } - $order->setTotal($total); - $order->save(); - - $newBalance = Auth::user()->getBalance() - $total; - Auth::user()->setBalance($newBalance); - Auth::user()->save(); - - $request->session()->forget('products'); - - $viewData = []; - $viewData["title"] = "Purchase - Online Store"; - $viewData["subtitle"] = "Purchase Status"; - $viewData["order"] = $order; - return view('cart.purchase')->with("viewData", $viewData); - } else { - return redirect()->route('cart.index'); + + // Déduire la quantité du stock + $product->quantity_store -= $quantity; + $product->save(); + + // Créer un élément de commande + $item = new Item(); + $item->quantity = $quantity; + $item->price = $product->hasDiscount() ? $product->getDiscountedPrice() : $product->price; + $item->product_id = $product->id; + $item->order_id = $order->id; + $item->save(); + + $total += $item->price * $quantity; } + + // Vérifier si l'utilisateur a assez d'argent + if ($user->balance < $total) { + return back()->with('error', 'Fonds insuffisants pour effectuer l\'achat.'); + } + + // Déduire le solde de l'utilisateur + $user->balance -= $total; + $user->save(); // L'erreur "Undefined method save()" venait peut-être d'un utilisateur non trouvé + + // Mettre à jour le total de la commande + $order->total = $total; + $order->save(); + + // Vider le panier + session()->forget('products'); + + return view('cart.purchase', [ + "title" => "Purchase - Online Store", + "subtitle" => "Purchase Status", + "order" => $order + ])->with('success', 'Achat effectué avec succès.'); } + + return redirect()->route('cart.index')->with('error', 'Votre panier est vide.'); +} + } From 7ef15ef9030e4e4dfdd505e12d833a606dfb89b5 Mon Sep 17 00:00:00 2001 From: zena Date: Thu, 20 Mar 2025 20:20:47 +0000 Subject: [PATCH 30/41] Enregistrement des modifications locales avant rebase --- config/database.php | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/config/database.php b/config/database.php index 86be526..b9e8892 100644 --- a/config/database.php +++ b/config/database.php @@ -47,15 +47,9 @@ 'driver' => 'mysql', 'url' => env('DATABASE_URL'), 'host' => env('DB_HOST', '127.0.0.1'), -<<<<<<< HEAD 'port' => env('DB_PORT', '3306'), 'database' => env('DB_DATABASE', 'onlineStore'), 'username' => env('DB_USERNAME', 'onlineStore'), -======= - 'port' => env('DB_PORT', '3307'), - 'database' => env('DB_DATABASE', 'onlineStore'), - 'username' => env('DB_USERNAME', 'root'), ->>>>>>> 96520d457d1a8efc4fcfe3d5295fb6ad85e654e5 'password' => env('DB_PASSWORD', ''), 'unix_socket' => env('DB_SOCKET', ''), 'charset' => 'utf8mb4', @@ -129,7 +123,7 @@ 'options' => [ 'cluster' => env('REDIS_CLUSTER', 'redis'), - 'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'), + 'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_') . '_database_'), ], 'default' => [ From 5ab9b9f9b61820b31c95e58e016d3605e257c433 Mon Sep 17 00:00:00 2001 From: zena Date: Thu, 20 Mar 2025 21:39:57 +0000 Subject: [PATCH 31/41] Complete feature_gestion_soldes with CRUD for discounts, updated ProductController, and Product model --- database/seeders/CategorieSeeder.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/database/seeders/CategorieSeeder.php b/database/seeders/CategorieSeeder.php index d742809..aa1501a 100644 --- a/database/seeders/CategorieSeeder.php +++ b/database/seeders/CategorieSeeder.php @@ -13,6 +13,6 @@ class CategorieSeeder extends Seeder */ public function run(): void { - Categorie::factory(10)->create(); + Categorie::factory(10)->create(); } } From 6fb063c3b19d07663b2f4438bccb851eb73a407a Mon Sep 17 00:00:00 2001 From: zena Date: Thu, 20 Mar 2025 22:54:08 +0000 Subject: [PATCH 32/41] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20la=20vue=20ed?= =?UTF-8?q?it=20pour=20inclure=20la=20s=C3=A9lection=20du=20fournisseur=20?= =?UTF-8?q?et=20de=20la=20cat=C3=A9gorie?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resources/views/admin/product/edit.blade.php | 30 +++++++++----------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/resources/views/admin/product/edit.blade.php b/resources/views/admin/product/edit.blade.php index 3b64b8a..44b351f 100644 --- a/resources/views/admin/product/edit.blade.php +++ b/resources/views/admin/product/edit.blade.php @@ -14,7 +14,7 @@ @endif -
    + @csrf @method('PUT')
    @@ -73,23 +73,21 @@
    -
    - -
    - +
    + +
    + +
    -
    - -
    From 9857bcd3d4c9c75696acc53d0e38945c56217a2d Mon Sep 17 00:00:00 2001 From: zena Date: Thu, 20 Mar 2025 22:54:48 +0000 Subject: [PATCH 33/41] Mise a jour des vues Admin pour inclure la selection du fournisseur --- resources/views/admin/product/create.blade.php | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/resources/views/admin/product/create.blade.php b/resources/views/admin/product/create.blade.php index ea71d40..14abce0 100644 --- a/resources/views/admin/product/create.blade.php +++ b/resources/views/admin/product/create.blade.php @@ -60,6 +60,22 @@
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    From 55bd223f69354cf4389e476f4d9f19436f8c2310 Mon Sep 17 00:00:00 2001 From: zena Date: Thu, 20 Mar 2025 23:02:31 +0000 Subject: [PATCH 34/41] Mise a jour de la vue product.index pour inclure le filtrage par fournisseur --- resources/views/product/index.blade.php | 45 ++++++++++++++++++------- 1 file changed, 32 insertions(+), 13 deletions(-) diff --git a/resources/views/product/index.blade.php b/resources/views/product/index.blade.php index 3ff8572..80d07c3 100644 --- a/resources/views/product/index.blade.php +++ b/resources/views/product/index.blade.php @@ -6,16 +6,35 @@ @section('content')
    - + + @foreach ($viewData['categories'] as $category) + + @endforeach + +
    - + +
    + + +
    +
    @@ -29,14 +48,14 @@ {{ $product->getName() }}

    - Quantity in stock : {{ $product->getQuantityStore() }} + Quantity in stock: {{ $product->getQuantityStore() }}

    - @if ($product -> getQuantityStore() == 0) -

    En repture de stock

    + @if ($product->getQuantityStore() == 0) +

    Out of stock

    @endif @endforeach -@endsection +@endsection \ No newline at end of file From 52895989fe0093fe4be5aab5fc0d058cadb95c5e Mon Sep 17 00:00:00 2001 From: zena Date: Fri, 21 Mar 2025 11:05:43 +0000 Subject: [PATCH 35/41] mise a jour Controlleur de Produit --- app/Http/Controllers/ProductController.php | 26 ++++++++-------------- 1 file changed, 9 insertions(+), 17 deletions(-) diff --git a/app/Http/Controllers/ProductController.php b/app/Http/Controllers/ProductController.php index 4013427..24053c8 100644 --- a/app/Http/Controllers/ProductController.php +++ b/app/Http/Controllers/ProductController.php @@ -5,6 +5,7 @@ use App\Models\Categorie; use App\Models\Product; use App\Models\Discount; +use App\Models\Fournisseur; use Illuminate\Http\Request; class ProductController extends Controller @@ -14,23 +15,18 @@ public function index(Request $request) $viewData = []; $viewData["title"] = "Products - Online Store"; $viewData["subtitle"] = "List of products"; -<<<<<<< HEAD + $query = Product::query(); + + //filtrage: if ($request->has('category_id') && $request->category_id != '') { $query->where('categorie_id', $request->category_id); } - $viewData["products"] = $query->get(); - $viewData["categories"] = Categorie::all(); -======= - $query = Product::query(); - - // Filtrage par catégorie - if ($request->has('category_id') && $request->category_id != '') { - $query->where('category_id', $request->category_id); + if ($request->has('fournisseur_id') && $request->fournisseur_id != '') { + $query->where('fournisseur_id', $request->fournisseur_id); } - // Filtrage des produits soldes if ($request->has('on_sale') && $request->on_sale) { $now = now(); $query->where(function ($q) use ($now) { @@ -43,7 +39,6 @@ public function index(Request $request) ->where('end_date', '>=', $now); }); - // Verifier s'il y a une remise globale active $globalDiscounts = Discount::where('type', 'global') ->where('start_date', '<=', $now) ->where('end_date', '>=', $now) @@ -57,8 +52,8 @@ public function index(Request $request) $viewData["products"] = $query->paginate(12); $viewData["categories"] = Categorie::all(); + $viewData["fournisseurs"] = Fournisseur::all(); ->>>>>>> feature_gestion_soldes return view('product.index')->with("viewData", $viewData); } @@ -66,8 +61,8 @@ public function show($id) { $viewData = []; $product = Product::findOrFail($id); - $viewData["title"] = $product->getName()." - Online Store"; - $viewData["subtitle"] = $product->getName()." - Product information"; + $viewData["title"] = $product->getName() . " - Online Store"; + $viewData["subtitle"] = $product->getName() . " - Product information"; $viewData["product"] = $product; return view('product.show')->with("viewData", $viewData); @@ -75,7 +70,6 @@ public function show($id) public function store(Request $request) { - // Validation $request->validate([ 'name' => 'required|string|max:255', 'price' => 'required|numeric|min:0', @@ -84,7 +78,6 @@ public function store(Request $request) 'image' => 'nullable|image|mimes:jpeg,png,jpg,gif|max:2048', ]); - // Creation du produit $product = new Product(); $product->name = $request->input('name'); $product->price = $request->input('price'); @@ -103,7 +96,6 @@ public function store(Request $request) public function update(Request $request, $id) { - // Validation $request->validate([ 'name' => 'required|string|max:255', 'price' => 'required|numeric|min:0', From 87d76afebfce07961df748636c9d1cf6bfcecf18 Mon Sep 17 00:00:00 2001 From: zena Date: Fri, 21 Mar 2025 11:32:49 +0000 Subject: [PATCH 36/41] Creation de Modele Discount --- app/Models/Discount.php | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/app/Models/Discount.php b/app/Models/Discount.php index 6383b58..6170626 100644 --- a/app/Models/Discount.php +++ b/app/Models/Discount.php @@ -3,8 +3,38 @@ namespace App\Models; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Factories\HasFactory; +use Illuminate\Database\Eloquent\Relations\BelongsTo; +use App\Models\Categorie; +use App\Models\Product; class Discount extends Model { - // + use HasFactory; + + protected $fillable = [ + 'name', 'type', 'rate', 'start_date', 'end_date', 'category_id', 'product_id' + ]; + + protected $casts = [ + 'start_date' => 'datetime', + 'end_date' => 'datetime', + 'rate' => 'float' + ]; + + public function category(): BelongsTo + { + return $this->belongsTo(Categorie::class); + } + + public function product(): BelongsTo + { + return $this->belongsTo(Product::class); + } + + public function isActive(): bool + { + $now = now(); + return $this->start_date <= $now && $this->end_date >= $now; + } } From a178b0e0cb0f9e0339a77a119600bbf992c7c37a Mon Sep 17 00:00:00 2001 From: zena Date: Fri, 21 Mar 2025 12:47:05 +0000 Subject: [PATCH 37/41] Gestion du panier avec les cookies --- app/Http/Controllers/CartController.php | 54 ++++++++++--------------- 1 file changed, 22 insertions(+), 32 deletions(-) diff --git a/app/Http/Controllers/CartController.php b/app/Http/Controllers/CartController.php index b1bb918..dc5e70d 100644 --- a/app/Http/Controllers/CartController.php +++ b/app/Http/Controllers/CartController.php @@ -11,12 +11,14 @@ class CartController extends Controller { - public function index() + public function index(Request $request) { - $productsInSession = session()->get("products", []); + // Get cart from cookie (default to empty array if not set) + $cart = json_decode($request->cookie('cart'), true) ?? []; - $productsInCart = !empty($productsInSession) ? Product::findMany(array_keys($productsInSession)) : []; - $total = !empty($productsInCart) ? Product::sumPricesByQuantities($productsInCart, $productsInSession) : 0; + // Fetch products from the cart by their IDs + $productsInCart = !empty($cart) ? Product::findMany(array_keys($cart)) : []; + $total = !empty($productsInCart) ? Product::sumPricesByQuantities($productsInCart, $cart) : 0; $viewData = [ "title" => "Cart - Online Store", @@ -30,32 +32,25 @@ public function index() public function add(Product $product, Request $request) { - $quantityRequested = $request->input('quantity'); + $cart = json_decode($request->cookie('cart'), true) ?? []; - // Verify if quantity requested exists in stock - if ($quantityRequested > $product->getQuantityStore()) { - return redirect()->route('product.show', ['id' => $product->id])->with('error', 'Quantity requested is superior than the quantity in stock'); - } - - // Add to cart (session) - $cart = session()->get("products", []); - $cart[$product->id] = isset($cart[$product->id]) ? $cart[$product->id] + $quantityRequested : $quantityRequested; - session()->put("products", $cart); - - return back()->with('success', 'Product added to cart.'); + $cart[$product->id] = $request->input('quantity'); + + return back()->withCookie(cookie('cart', json_encode($cart), 60 * 24 * 30)); } public function delete(Request $request) { - $request->session()->forget('products'); - return back()->with('success', 'Cart cleared successfully.'); + return back()->withCookie(cookie('cart', json_encode([]), 60 * 24 * 30)) + ->with('success', 'Cart cleared successfully.'); } public function purchase(Request $request) { - $productsInSession = session()->get("products", []); + // Obtenir le panier de cookie + $cart = json_decode($request->cookie('cart'), true) ?? []; - if (empty($productsInSession)) { + if (empty($cart)) { return redirect()->route('cart.index')->with('error', 'Your cart is empty.'); } @@ -71,12 +66,12 @@ public function purchase(Request $request) $order->save(); $total = 0; - $productsInCart = Product::findMany(array_keys($productsInSession)); + $productsInCart = Product::findMany(array_keys($cart)); foreach ($productsInCart as $product) { - $quantity = $productsInSession[$product->id]; + $quantity = $cart[$product->id]; - // Verify stock before purchase + // Verifier le stock avant l’achat if ($product->quantity_store < $quantity) { $order->delete(); return redirect()->route("cart.index")->with("error", "Quantity requested for product " . $product->name . " not available in stock."); @@ -111,13 +106,8 @@ public function purchase(Request $request) $order->total = $total; $order->save(); - // Clear cart - session()->forget('products'); - - return view('cart.purchase', [ - "title" => "Purchase - Online Store", - "subtitle" => "Purchase Status", - "order" => $order - ])->with('success', 'Purchase completed successfully.'); + // Clear cart by emptying the cookie + return redirect()->route('cart.index')->withCookie(cookie('cart', json_encode([]), 60 * 24 * 30)) + ->with('success', 'Purchase completed successfully.'); } -} \ No newline at end of file +} From 5eaec8c4a603b9e2d8aa319a062ce853976ef515 Mon Sep 17 00:00:00 2001 From: zena Date: Fri, 21 Mar 2025 12:51:34 +0000 Subject: [PATCH 38/41] mise a jour le Modele Produit --- app/Models/Product.php | 3 --- 1 file changed, 3 deletions(-) diff --git a/app/Models/Product.php b/app/Models/Product.php index 358c428..cfc2809 100644 --- a/app/Models/Product.php +++ b/app/Models/Product.php @@ -141,7 +141,6 @@ public function categorie() { return $this->belongsTo(Categorie::class, 'categorie_id'); } -<<<<<<< HEAD public function getQuantityStore() { @@ -157,7 +156,6 @@ public function fournisseur() { return $this->belongsTo(Fournisseur::class, 'fournisseur_id'); } -======= public function hasDiscount() { return $this->discount_price && $this->discount_price < $this->price; @@ -168,5 +166,4 @@ public function getDiscountedPrice() return $this->discount_price ?? $this->price; } ->>>>>>> feature_gestion_soldes } From 8ba6edee8b2782e1f8de8f30ea2054a2a0f2ac2d Mon Sep 17 00:00:00 2001 From: zena Date: Fri, 21 Mar 2025 12:53:14 +0000 Subject: [PATCH 39/41] resolve conflicts in Product Model --- app/Models/Product.php | 3 --- 1 file changed, 3 deletions(-) diff --git a/app/Models/Product.php b/app/Models/Product.php index 358c428..cfc2809 100644 --- a/app/Models/Product.php +++ b/app/Models/Product.php @@ -141,7 +141,6 @@ public function categorie() { return $this->belongsTo(Categorie::class, 'categorie_id'); } -<<<<<<< HEAD public function getQuantityStore() { @@ -157,7 +156,6 @@ public function fournisseur() { return $this->belongsTo(Fournisseur::class, 'fournisseur_id'); } -======= public function hasDiscount() { return $this->discount_price && $this->discount_price < $this->price; @@ -168,5 +166,4 @@ public function getDiscountedPrice() return $this->discount_price ?? $this->price; } ->>>>>>> feature_gestion_soldes } From 1f5527fd80d6f55770f33d1c2b905e5dc1a75ad6 Mon Sep 17 00:00:00 2001 From: boulganafatimaezzahra Date: Fri, 21 Mar 2025 15:00:31 +0000 Subject: [PATCH 40/41] ad pagination to product liste client --- .../Admin/AdminProductController.php | 6 +- app/Http/Controllers/ProductController.php | 3 +- resources/views/admin/product/edit.blade.php | 2 +- resources/views/admin/product/index.blade.php | 139 ++++++------------ resources/views/product/index.blade.php | 5 +- 5 files changed, 54 insertions(+), 101 deletions(-) diff --git a/app/Http/Controllers/Admin/AdminProductController.php b/app/Http/Controllers/Admin/AdminProductController.php index cbd8ce6..8099de6 100644 --- a/app/Http/Controllers/Admin/AdminProductController.php +++ b/app/Http/Controllers/Admin/AdminProductController.php @@ -38,10 +38,10 @@ public function store(Request $request) 'name' => 'required|string|max:255', 'price' => 'required|numeric', 'quantity_store' => 'required|integer|min:1', - 'image' => 'nullable|image|max:2048', + 'image' => 'required|image|max:2048', 'description' => 'nullable|string|max:1000', - 'fournisseur_id' => 'nullable|exists:fournisseurs,id', - 'categorie_id' => 'nullable|exists:categories,id|min:1', + 'fournisseur_id' => 'required|exists:fournisseurs,id', + 'categorie_id' => 'required|exists:categories,id|min:1', ]); $categorieId = $request->input('categorie_id', 1); $newProduct = new Product(); diff --git a/app/Http/Controllers/ProductController.php b/app/Http/Controllers/ProductController.php index 24053c8..cd618da 100644 --- a/app/Http/Controllers/ProductController.php +++ b/app/Http/Controllers/ProductController.php @@ -15,7 +15,6 @@ public function index(Request $request) $viewData = []; $viewData["title"] = "Products - Online Store"; $viewData["subtitle"] = "List of products"; - $query = Product::query(); //filtrage: @@ -50,7 +49,7 @@ public function index(Request $request) }); } - $viewData["products"] = $query->paginate(12); + $viewData["products"] = $query->paginate(8); $viewData["categories"] = Categorie::all(); $viewData["fournisseurs"] = Fournisseur::all(); diff --git a/resources/views/admin/product/edit.blade.php b/resources/views/admin/product/edit.blade.php index 44b351f..8ff0694 100644 --- a/resources/views/admin/product/edit.blade.php +++ b/resources/views/admin/product/edit.blade.php @@ -41,7 +41,7 @@
    - +
    diff --git a/resources/views/admin/product/index.blade.php b/resources/views/admin/product/index.blade.php index e3117af..0ca16cc 100644 --- a/resources/views/admin/product/index.blade.php +++ b/resources/views/admin/product/index.blade.php @@ -1,20 +1,4 @@ @extends('layouts.admin') -<<<<<<< HEAD -@section('title', $viewData['title']) -@section('content') -
    -
    - Create Products -
    -
    - @if ($errors->any()) -
      - @foreach ($errors->all() as $error) -
    • - {{ $error }}
    • - @endforeach -
    - @endif -======= @section('title', $viewData["title"]) @@ -32,7 +16,6 @@ @endforeach @endif ->>>>>>> feature_gestion_soldes
    @csrf @@ -74,90 +57,58 @@
    -
    - - +
    +
    +
    + +
    + +
    +
    +
    - - -
    - - - -
    -
    Filtres
    -
    -
    -
    - - +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    -
    - - +
    + +
    - +
    -
    -
    - Manage Products -
    -
    - - - - - - - - - - - - @foreach ($viewData["products"] as $product) - - - - - - - - @endforeach - -
    IDNamePriceEditDelete
    {{ $product->getId() }}{{ $product->getName() }} - @if($product->discount_price && $product->discount_price < $product->price) - {{ number_format($product->price, 2) }} € - {{ number_format($product->discount_price, 2) }} € - @else - {{ number_format($product->price, 2) }} € - @endif - - - - - -
    - @csrf - @method('DELETE') - -
    -
    -
    -
    - -@endsection \ No newline at end of file +@endsection diff --git a/resources/views/product/index.blade.php b/resources/views/product/index.blade.php index 80d07c3..78a165a 100644 --- a/resources/views/product/index.blade.php +++ b/resources/views/product/index.blade.php @@ -29,7 +29,7 @@ @foreach ($viewData['fournisseurs'] as $fournisseur) @endforeach @@ -58,4 +58,7 @@
    @endforeach
    +
    + {{ $viewData["products"]->links() }} +
    @endsection \ No newline at end of file From 63fc8bd44b6bda834d1e43424f39667bc9d3bf02 Mon Sep 17 00:00:00 2001 From: boulganafatimaezzahra Date: Thu, 20 Mar 2025 11:40:22 +0000 Subject: [PATCH 41/41] resolve conflits --- app/Models/Fournisseur.php | 1 + app/Models/Product.php | 9 +++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/app/Models/Fournisseur.php b/app/Models/Fournisseur.php index 174dd49..9276757 100644 --- a/app/Models/Fournisseur.php +++ b/app/Models/Fournisseur.php @@ -6,6 +6,7 @@ class Fournisseur extends Model { + protected $table = 'fournisseurs'; protected $fillable=["raison","social","adresse","tele","email","description"]; public function products(){ diff --git a/app/Models/Product.php b/app/Models/Product.php index cfc2809..40a0895 100644 --- a/app/Models/Product.php +++ b/app/Models/Product.php @@ -31,7 +31,8 @@ public static function validate($request) 'image' => 'nullable|image', "quantity_store" => "required|numeric|gt:1", "categorie_id" => "required|exists:categories,id", - "fournisseur_id" => "required|exists:fournisseurs,id" + "fournisseur_id" => "required|exists:fournisseurs,id", + "fournisseur_id"=>"required|exists:fournisseurs,id", ]); } @@ -151,7 +152,6 @@ public function setQuantityStore($quantity_store) { $this->attributes['quantity_store'] = $quantity_store; } - public function fournisseur() { return $this->belongsTo(Fournisseur::class, 'fournisseur_id'); @@ -166,4 +166,9 @@ public function getDiscountedPrice() return $this->discount_price ?? $this->price; } + public function fournisseurs() + { + return $this->belongsTo(Fournisseur::class, 'fournisseur_id'); + } + }

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